diff -Naur linux-2.4.23/.config linux-2.4.23_TS_2_5/.config
--- linux-2.4.23/.config	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/.config	Tue Aug 10 15:49:37 2004
@@ -0,0 +1,1047 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_X86=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# Processor type and features
+#
+# CONFIG_M386 is not set
+CONFIG_M486=y
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MELAN is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_X86_L1_CACHE_SHIFT=4
+CONFIG_X86_USE_STRING_486=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_X86_PPRO_FENCE=y
+# CONFIG_X86_F00F_WORKS_OK is not set
+CONFIG_X86_MCE=y
+TSYSTEMS=y
+CONFIG_TS_M486=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+# CONFIG_EDD is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_MATH_EMULATION=y
+# CONFIG_MTRR is not set
+# CONFIG_SMP is not set
+# CONFIG_X86_UP_APIC is not set
+# CONFIG_X86_TSC_DISABLE is not set
+
+#
+# General setup
+#
+CONFIG_NET=y
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+CONFIG_PCI_GODIRECT=y
+# CONFIG_PCI_GOANY is not set
+CONFIG_PCI_DIRECT=y
+CONFIG_ISA=y
+# CONFIG_PCI_NAMES is not set
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=m
+CONFIG_CARDBUS=y
+# CONFIG_TCIC is not set
+# CONFIG_I82092 is not set
+CONFIG_I82365=y
+
+#
+# PCI Hotplug Support
+#
+CONFIG_HOTPLUG_PCI=m
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_PM is not set
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+# CONFIG_APM_CPU_IDLE is not set
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_RTC_IS_GMT is not set
+# CONFIG_APM_ALLOW_INTS is not set
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# ACPI Support
+#
+# CONFIG_ACPI is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+# CONFIG_PARPORT_PC is not set
+# CONFIG_PARPORT_AMIGA is not set
+# CONFIG_PARPORT_MFC3 is not set
+# CONFIG_PARPORT_ATARI is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_SUNBPP is not set
+# CONFIG_PARPORT_OTHER is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_STATS is not set
+CONFIG_BLK_DEV_MSYS_DOC=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+#   IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_LIMIT is not set
+# CONFIG_IP_NF_MATCH_MAC is not set
+# CONFIG_IP_NF_MATCH_PKTTYPE is not set
+# CONFIG_IP_NF_MATCH_MARK is not set
+# CONFIG_IP_NF_MATCH_MULTIPORT is not set
+# CONFIG_IP_NF_MATCH_TOS is not set
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH_ESP is not set
+# CONFIG_IP_NF_MATCH_LENGTH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_MATCH_TCPMSS is not set
+# CONFIG_IP_NF_MATCH_HELPER is not set
+# CONFIG_IP_NF_MATCH_STATE is not set
+# CONFIG_IP_NF_MATCH_CONNTRACK is not set
+# CONFIG_IP_NF_MATCH_UNCLEAN is not set
+# CONFIG_IP_NF_MATCH_OWNER is not set
+# CONFIG_IP_NF_FILTER is not set
+# CONFIG_IP_NF_NAT is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_TARGET_LOG is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+# CONFIG_IP_NF_TARGET_TCPMSS is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
+
+#
+#   IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+#    SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+CONFIG_BLK_DEV_HD_IDE=y
+CONFIG_BLK_DEV_HD=y
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_IDEDISK_STROKE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=m
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_SD_EXTRA_DEVS=10
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_DEBUG_QUEUES is not set
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_MEGARAID is not set
+# CONFIG_SCSI_MEGARAID2 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_CPQFCTS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_SYM53C8XX=m
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_SCSI_PCMCIA is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_BOOT is not set
+# CONFIG_FUSION_ISENSE is not set
+# CONFIG_FUSION_CTL is not set
+# CONFIG_FUSION_LAN is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_EL1=m
+CONFIG_EL2=m
+CONFIG_ELPLUS=m
+CONFIG_EL16=m
+CONFIG_EL3=m
+CONFIG_3C515=m
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+CONFIG_CS89x0=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+CONFIG_DM9102=y
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+CONFIG_NATSEMI=m
+# CONFIG_NE2K_PCI is not set
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+CONFIG_EPIC100=m
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_STRIP=m
+CONFIG_WAVELAN=m
+CONFIG_ARLAN=m
+CONFIG_AIRONET4500=m
+CONFIG_AIRONET4500_NONCS=m
+CONFIG_AIRONET4500_PNP=y
+CONFIG_AIRONET4500_PCI=y
+# CONFIG_AIRONET4500_ISA is not set
+# CONFIG_AIRONET4500_I365 is not set
+CONFIG_AIRONET4500_PROC=m
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_PCI_HERMES=m
+
+#
+# Wireless Pcmcia cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_AIRO_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_XIRCOM=m
+# CONFIG_PCMCIA_XIRTULIP is not set
+CONFIG_NET_PCMCIA_RADIO=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_PCMCIA_NETWAVE=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_AIRONET4500_CS=m
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Input core support
+#
+CONFIG_INPUT=m
+CONFIG_INPUT_KEYBDEV=m
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+CONFIG_SERIAL_EXTENDED=y
+CONFIG_SERIAL_MANY_PORTS=y
+CONFIG_SERIAL_SHARE_IRQ=y
+# CONFIG_SERIAL_DETECT_IRQ is not set
+# CONFIG_SERIAL_MULTIPORT is not set
+# CONFIG_HUB6 is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_MK712_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_SERIO is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+# CONFIG_ALIM1535_WDT is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_SC520_WDT is not set
+CONFIG_TS486_WDT=y
+# CONFIG_PCWATCHDOG is not set
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_IB700_WDT is not set
+# CONFIG_WAFER_WDT is not set
+# CONFIG_I810_TCO is not set
+# CONFIG_MIXCOMWD is not set
+# CONFIG_60XX_WDT is not set
+# CONFIG_SC1200_WDT is not set
+# CONFIG_SCx200_WDT is not set
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_W83877F_WDT is not set
+# CONFIG_WDT is not set
+# CONFIG_WDTPCI is not set
+# CONFIG_MACHZ_WDT is not set
+# CONFIG_AMD7XX_TCO is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_RNG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+CONFIG_PCMCIA_SERIAL_CS=m
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_MWAVE is not set
+CONFIG_TSA2D=m
+CONFIG_TS9700=m
+CONFIG_TSKEYPAD=m
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+CONFIG_VIDEO_PROC_FS=y
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_STRADIS is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+CONFIG_EXT3_FS=y
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_UMSDOS_FS=m
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+CONFIG_ISO9660_FS=m
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVFS_FS=y
+CONFIG_DEVFS_MOUNT=y
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_ROOT_NFS=y
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_TCP is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_SMB_NLS=y
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VIDEO_SELECT is not set
+# CONFIG_MDA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+CONFIG_USB_OHCI=m
+# CONFIG_USB_SL811HS_ALT is not set
+# CONFIG_USB_SL811HS is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_BLUETOOTH=m
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+CONFIG_USB_STORAGE_SDDR09=y
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# USB Human Interface Devices (HID)
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT is not set
+# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_DC2XX=m
+# CONFIG_USB_MDC800 is not set
+CONFIG_USB_SCANNER=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_HPUSBSCSI=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_IBMCAM=m
+# CONFIG_USB_KONICAWC is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_PWC=m
+CONFIG_USB_SE401=m
+CONFIG_USB_STV680=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_DSBR=m
+CONFIG_USB_DABUSB=m
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_AX8817X is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_TIGL is not set
+# CONFIG_USB_BRLVGER is not set
+# CONFIG_USB_LCD is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=0
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+# CONFIG_ZLIB_INFLATE is not set
+# CONFIG_ZLIB_DEFLATE is not set
+# CONFIG_FW_LOADER is not set
diff -Naur linux-2.4.23/Documentation/Configure.help linux-2.4.23_TS_2_5/Documentation/Configure.help
--- linux-2.4.23/Documentation/Configure.help	Fri Nov 28 11:26:19 2003
+++ linux-2.4.23_TS_2_5/Documentation/Configure.help	Tue Dec  2 18:02:34 2003
@@ -1623,6 +1623,10 @@
   say M here and read <file:Documentation/modules.txt>.  The module
   will be called DAC960.o.
 
+M-Systems DiskOnChip 2000 Support
+CONFIG_BLK_DEV_MSYS_DOC
+  This driver adds support for the M-Systems DiskOnChip Flash devices.
+
 Parallel port IDE device support
 CONFIG_PARIDE
   There are many external CD-ROM and disk devices that connect through
@@ -3948,6 +3952,25 @@
   The module will be called mwave.o. If you want to compile it as
   a module, say M here and read Documentation/modules.txt.
 
+Analog to Digital driver for Technologic Systems SBC
+CONFIG_TSA2D
+  Most SBCs from Technologic Systems have the option to support 
+  an Analog to Digital Converter. This adds the generic driver
+  support for the AtoD option. 
+
+Technologic Systems TS-9700 driver support (DAC/AtoD)
+CONFIG_TS9700
+  This adds driver support for the TS-9700 from Technologic 
+  Systems. The TS-9700 is a PC/104 daughter board that 
+  features both a Digital to Analog Converter and an
+  Analog to Digital Converter. 
+
+Technologic Systems support for Matrix Keypad
+CONFIG_TSKEYPAD
+  Technologic Systems offers a simple Matrix Keypad that 
+  can be wired to their Single Board Computers. This adds
+  driver support and exports a /dev/SBC/keypad device 
+
 /dev/agpgart (AGP Support)
 CONFIG_AGP
   AGP (Accelerated Graphics Port) is a bus system mainly used to
@@ -20159,7 +20182,16 @@
   If you want to compile it as a module, say M here and read
   <file:Documentation/modules.txt>. The module will be called
   wafer5823wdt.o
-	      
+  
+Technologic Systems SBC support
+TSYSTEMS
+  This tailors the kernel to support the Technologic Systems Single
+  Board Computers. If your SBC is a 3x00 series board, then choose a 
+  processor type of i386. 
+  If your board is a 5x00 series board, then choose the processor 
+  type of i486.
+
+
 Machine Check Exception
 CONFIG_X86_MCE
   Machine Check Exception support allows the processor to notify the
@@ -20171,6 +20203,16 @@
   For pentium machines the mce support defaults to off as the mainboard
   support is not always present. You must activate it as a boot option.
 
+Technologic Systems SBC support
+CONFIG_TSYSTEMS
+   This tailors the kernel to support the Technologic Systems Single Board
+   Computers. If your SBC is a 3x00 series board, then choose a processor
+   type of i386.
+   If your board is a 5x00 series board, then choose the processor type
+   of i486
+
+   More information can be found at www.embeddedx86.com
+
 Toshiba Laptop support
 CONFIG_TOSHIBA
   This adds a driver to safely access the System Management Mode of
@@ -20312,6 +20354,11 @@
 
  You can compile this driver directly into the kernel, or use
  it as a module.  The module will be called sc520_wdt.o.
+
+Technologic Systems 5x00 SBC Watchdog Timer
+CONFIG_TS486_WDT
+  Technologic Systems AMD Elan SC520 SBCs only. The SC520 Elan
+  has a built in Watchdog Timer. This is the driver for that WDT
 
 Enhanced Real Time Clock Support
 CONFIG_RTC
diff -Naur linux-2.4.23/Makefile linux-2.4.23_TS_2_5/Makefile
--- linux-2.4.23/Makefile	Fri Nov 28 11:26:21 2003
+++ linux-2.4.23_TS_2_5/Makefile	Thu Jun 10 13:31:37 2004
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 23
-EXTRAVERSION =
+EXTRAVERSION = -2.5-ts
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
@@ -137,9 +137,9 @@
 
 DRIVERS-$(CONFIG_ACPI_BOOT) += drivers/acpi/acpi.o
 DRIVERS-$(CONFIG_PARPORT) += drivers/parport/driver.o
-DRIVERS-y += drivers/char/char.o \
+DRIVERS-y += drivers/misc/misc.o \
+	drivers/char/char.o \
 	drivers/block/block.o \
-	drivers/misc/misc.o \
 	drivers/net/net.o
 DRIVERS-$(CONFIG_AGP) += drivers/char/agp/agp.o
 DRIVERS-$(CONFIG_DRM_NEW) += drivers/char/drm/drm.o
diff -Naur linux-2.4.23/TS-README linux-2.4.23_TS_2_5/TS-README
--- linux-2.4.23/TS-README	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/TS-README	Wed Dec  3 13:45:31 2003
@@ -0,0 +1,20 @@
+Please visit www.embeddedx86.com for up-to-date patches,
+and the Changelogs associated with those patches. 
+
+codenames refer to a particular build. The patches (and their
+corresponding CVS tags) refer to released patches and released
+kernel builds against certain kernel trees in the 2.4.xx tree.
+
+Codenames:
+	parthenope	kernel is built for 3x00 SBCs
+	ligeia	 	kernel is built for 5x00 SBCs 
+	leucosia	kernel is built for 5x00 SBCs with PCMCIA
+
+TAGS:
+	TS-2.4		first patch against kernel 2.4.23
+
+	TS-2.3 		first patch against kernel 2.4.22
+	
+	TS-2.2		These patches are against 2.4.18 kernels
+	TS-2.1
+	TS-2.0	
diff -Naur linux-2.4.23/TSConfigFile linux-2.4.23_TS_2_5/TSConfigFile
--- linux-2.4.23/TSConfigFile	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/TSConfigFile	Wed Dec  3 13:41:09 2003
@@ -0,0 +1,767 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_X86=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# Processor type and features
+#
+CONFIG_M386=y
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MELAN is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_X86_CMPXCHG is not set
+# CONFIG_X86_XADD is not set
+CONFIG_X86_L1_CACHE_SHIFT=4
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+CONFIG_X86_PPRO_FENCE=y
+# CONFIG_X86_F00F_WORKS_OK is not set
+CONFIG_X86_MCE=y
+TSYSTEMS=y
+CONFIG_TS_M386=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+# CONFIG_EDD is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_MATH_EMULATION=y
+# CONFIG_MTRR is not set
+# CONFIG_SMP is not set
+# CONFIG_X86_UP_APIC is not set
+# CONFIG_X86_UP_IOAPIC is not set
+# CONFIG_X86_TSC_DISABLE is not set
+
+#
+# General setup
+#
+CONFIG_NET=y
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+CONFIG_PCI_GODIRECT=y
+# CONFIG_PCI_GOANY is not set
+CONFIG_PCI_DIRECT=y
+CONFIG_ISA=y
+# CONFIG_PCI_NAMES is not set
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+# CONFIG_HOTPLUG_PCI is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+
+#
+# ACPI Support
+#
+# CONFIG_ACPI is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+# CONFIG_PARPORT_PC is not set
+# CONFIG_PARPORT_AMIGA is not set
+# CONFIG_PARPORT_MFC3 is not set
+# CONFIG_PARPORT_ATARI is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_SUNBPP is not set
+# CONFIG_PARPORT_OTHER is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_STATS is not set
+CONFIG_BLK_DEV_MSYS_DOC=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+#   IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_LIMIT is not set
+# CONFIG_IP_NF_MATCH_MAC is not set
+# CONFIG_IP_NF_MATCH_PKTTYPE is not set
+# CONFIG_IP_NF_MATCH_MARK is not set
+# CONFIG_IP_NF_MATCH_MULTIPORT is not set
+# CONFIG_IP_NF_MATCH_TOS is not set
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH_ESP is not set
+# CONFIG_IP_NF_MATCH_LENGTH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_MATCH_TCPMSS is not set
+# CONFIG_IP_NF_MATCH_HELPER is not set
+# CONFIG_IP_NF_MATCH_STATE is not set
+# CONFIG_IP_NF_MATCH_CONNTRACK is not set
+# CONFIG_IP_NF_MATCH_UNCLEAN is not set
+# CONFIG_IP_NF_MATCH_OWNER is not set
+# CONFIG_IP_NF_FILTER is not set
+# CONFIG_IP_NF_NAT is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_TARGET_LOG is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+# CONFIG_IP_NF_TARGET_TCPMSS is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
+
+#
+#   IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+#    SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+# CONFIG_PHONE_IXJ is not set
+# CONFIG_PHONE_IXJ_PCMCIA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+CONFIG_BLK_DEV_HD_IDE=y
+CONFIG_BLK_DEV_HD=y
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_IDEDISK_STROKE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_IDE_CHIPSETS is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_DMA_NONPCI is not set
+CONFIG_BLK_DEV_PDC202XX=y
+CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+# CONFIG_BLK_DEV_ATARAID_SII is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_BOOT is not set
+# CONFIG_FUSION_ISENSE is not set
+# CONFIG_FUSION_CTL is not set
+# CONFIG_FUSION_LAN is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_ISA=y
+# CONFIG_E2100 is not set
+# CONFIG_EWRK3 is not set
+# CONFIG_EEXPRESS is not set
+# CONFIG_EEXPRESS_PRO is not set
+# CONFIG_HPLAN_PLUS is not set
+# CONFIG_HPLAN is not set
+# CONFIG_LP486E is not set
+# CONFIG_ETH16I is not set
+# CONFIG_NE2000 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+CONFIG_CS89x0=y
+# CONFIG_TULIP is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+CONFIG_DM9102=y
+# CONFIG_EEPRO100 is not set
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+CONFIG_SERIAL_EXTENDED=y
+CONFIG_SERIAL_MANY_PORTS=y
+CONFIG_SERIAL_SHARE_IRQ=y
+# CONFIG_SERIAL_DETECT_IRQ is not set
+# CONFIG_SERIAL_MULTIPORT is not set
+# CONFIG_HUB6 is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_MK712_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+# CONFIG_ALIM1535_WDT is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_SC520_WDT is not set
+# CONFIG_PCWATCHDOG is not set
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_IB700_WDT is not set
+# CONFIG_WAFER_WDT is not set
+# CONFIG_I810_TCO is not set
+# CONFIG_MIXCOMWD is not set
+# CONFIG_60XX_WDT is not set
+# CONFIG_SC1200_WDT is not set
+# CONFIG_SCx200_WDT is not set
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_W83877F_WDT is not set
+# CONFIG_WDT is not set
+# CONFIG_WDTPCI is not set
+# CONFIG_MACHZ_WDT is not set
+# CONFIG_AMD7XX_TCO is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_RNG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+# CONFIG_MWAVE is not set
+CONFIG_TSA2D=m
+CONFIG_TS9700=m
+CONFIG_TSKEYPAD=m
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 is not set
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+CONFIG_EXT3_FS=y
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_UMSDOS_FS=m
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVFS_FS=y
+CONFIG_DEVFS_MOUNT=y
+# CONFIG_DEVFS_DEBUG is not set
+# CONFIG_DEVPTS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_ROOT_NFS=y
+CONFIG_NFSD=y
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_SMB_NLS=y
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VIDEO_SELECT is not set
+# CONFIG_MDA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=0
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+# CONFIG_ZLIB_INFLATE is not set
+# CONFIG_ZLIB_DEFLATE is not set
diff -Naur linux-2.4.23/TSConfigFile.5500 linux-2.4.23_TS_2_5/TSConfigFile.5500
--- linux-2.4.23/TSConfigFile.5500	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/TSConfigFile.5500	Wed Dec  3 13:41:09 2003
@@ -0,0 +1,1019 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_X86=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# Processor type and features
+#
+# CONFIG_M386 is not set
+CONFIG_M486=y
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MELAN is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_X86_L1_CACHE_SHIFT=4
+CONFIG_X86_USE_STRING_486=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_X86_PPRO_FENCE=y
+# CONFIG_X86_F00F_WORKS_OK is not set
+CONFIG_X86_MCE=y
+TSYSTEMS=y
+CONFIG_TS_M486=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+# CONFIG_EDD is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_MATH_EMULATION=y
+# CONFIG_MTRR is not set
+# CONFIG_SMP is not set
+# CONFIG_X86_UP_APIC is not set
+# CONFIG_X86_UP_IOAPIC is not set
+# CONFIG_X86_TSC_DISABLE is not set
+
+#
+# General setup
+#
+CONFIG_NET=y
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+CONFIG_PCI_GODIRECT=y
+# CONFIG_PCI_GOANY is not set
+CONFIG_PCI_DIRECT=y
+CONFIG_ISA=y
+# CONFIG_PCI_NAMES is not set
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+# CONFIG_PCMCIA is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+
+#
+# ACPI Support
+#
+# CONFIG_ACPI is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+# CONFIG_PARPORT_PC is not set
+# CONFIG_PARPORT_AMIGA is not set
+# CONFIG_PARPORT_MFC3 is not set
+# CONFIG_PARPORT_ATARI is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_SUNBPP is not set
+# CONFIG_PARPORT_OTHER is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_STATS is not set
+# CONFIG_BLK_DEV_MSYS_DOC is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+#   IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_LIMIT is not set
+# CONFIG_IP_NF_MATCH_MAC is not set
+# CONFIG_IP_NF_MATCH_PKTTYPE is not set
+# CONFIG_IP_NF_MATCH_MARK is not set
+# CONFIG_IP_NF_MATCH_MULTIPORT is not set
+# CONFIG_IP_NF_MATCH_TOS is not set
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH_ESP is not set
+# CONFIG_IP_NF_MATCH_LENGTH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_MATCH_TCPMSS is not set
+# CONFIG_IP_NF_MATCH_HELPER is not set
+# CONFIG_IP_NF_MATCH_STATE is not set
+# CONFIG_IP_NF_MATCH_CONNTRACK is not set
+# CONFIG_IP_NF_MATCH_UNCLEAN is not set
+# CONFIG_IP_NF_MATCH_OWNER is not set
+# CONFIG_IP_NF_FILTER is not set
+# CONFIG_IP_NF_NAT is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_TARGET_LOG is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+# CONFIG_IP_NF_TARGET_TCPMSS is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
+
+#
+#   IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+#    SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+# CONFIG_PHONE_IXJ is not set
+# CONFIG_PHONE_IXJ_PCMCIA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+CONFIG_BLK_DEV_HD_IDE=y
+CONFIG_BLK_DEV_HD=y
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_IDEDISK_STROKE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_IDE_CHIPSETS is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_DMA_NONPCI is not set
+CONFIG_BLK_DEV_PDC202XX=y
+CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+# CONFIG_BLK_DEV_ATARAID_SII is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=m
+CONFIG_BLK_DEV_SD=m
+CONFIG_SD_EXTRA_DEVS=10
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_SCSI_DEBUG_QUEUES is not set
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_MEGARAID is not set
+# CONFIG_SCSI_MEGARAID2 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_CPQFCTS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_SYM53C8XX=m
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_BOOT is not set
+# CONFIG_FUSION_ISENSE is not set
+# CONFIG_FUSION_CTL is not set
+# CONFIG_FUSION_LAN is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_TULIP is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+CONFIG_DM9102=y
+# CONFIG_EEPRO100 is not set
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_STRIP=m
+# CONFIG_WAVELAN is not set
+# CONFIG_ARLAN is not set
+# CONFIG_AIRONET4500 is not set
+# CONFIG_AIRONET4500_NONCS is not set
+# CONFIG_AIRONET4500_PROC is not set
+# CONFIG_AIRO is not set
+# CONFIG_HERMES is not set
+# CONFIG_PLX_HERMES is not set
+# CONFIG_TMD_HERMES is not set
+# CONFIG_PCI_HERMES is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Input core support
+#
+CONFIG_INPUT=m
+CONFIG_INPUT_KEYBDEV=m
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+CONFIG_SERIAL_EXTENDED=y
+CONFIG_SERIAL_MANY_PORTS=y
+CONFIG_SERIAL_SHARE_IRQ=y
+# CONFIG_SERIAL_DETECT_IRQ is not set
+# CONFIG_SERIAL_MULTIPORT is not set
+# CONFIG_HUB6 is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_MK712_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+# CONFIG_ALIM1535_WDT is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_SC520_WDT is not set
+CONFIG_TS486_WDT=y
+# CONFIG_PCWATCHDOG is not set
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_IB700_WDT is not set
+# CONFIG_WAFER_WDT is not set
+# CONFIG_I810_TCO is not set
+# CONFIG_MIXCOMWD is not set
+# CONFIG_60XX_WDT is not set
+# CONFIG_SC1200_WDT is not set
+# CONFIG_SCx200_WDT is not set
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_W83877F_WDT is not set
+# CONFIG_WDT is not set
+# CONFIG_WDTPCI is not set
+# CONFIG_MACHZ_WDT is not set
+# CONFIG_AMD7XX_TCO is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_RNG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+# CONFIG_MWAVE is not set
+CONFIG_TSA2D=m
+CONFIG_TS9700=m
+CONFIG_TSKEYPAD=m
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+CONFIG_VIDEO_PROC_FS=y
+# CONFIG_I2C_PARPORT is not set
+# CONFIG_VIDEO_BT848 is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_STRADIS is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_ZORAN_BUZ is not set
+# CONFIG_VIDEO_ZORAN_DC10 is not set
+# CONFIG_VIDEO_ZORAN_LML33 is not set
+# CONFIG_VIDEO_ZR36120 is not set
+# CONFIG_VIDEO_MEYE is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_MIROPCM20 is not set
+# CONFIG_RADIO_MIROPCM20_RDS is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 is not set
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+CONFIG_EXT3_FS=y
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_UMSDOS_FS=m
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+CONFIG_ISO9660_FS=m
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVFS_FS=y
+CONFIG_DEVFS_MOUNT=y
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_ROOT_NFS=y
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_TCP is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_SMB_NLS=y
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VIDEO_SELECT is not set
+# CONFIG_MDA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+CONFIG_USB_OHCI=m
+# CONFIG_USB_SL811HS_ALT is not set
+# CONFIG_USB_SL811HS is not set
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_BLUETOOTH=m
+# CONFIG_USB_MIDI is not set
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+CONFIG_USB_STORAGE_SDDR09=y
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT is not set
+# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+CONFIG_USB_DC2XX=m
+# CONFIG_USB_MDC800 is not set
+CONFIG_USB_SCANNER=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_HPUSBSCSI=m
+CONFIG_USB_IBMCAM=m
+# CONFIG_USB_KONICAWC is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_PWC=m
+CONFIG_USB_SE401=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_W9968CF is not set
+CONFIG_USB_VICAM=m
+CONFIG_USB_DSBR=m
+CONFIG_USB_DABUSB=m
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_AX8817X is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_TIGL is not set
+# CONFIG_USB_BRLVGER is not set
+# CONFIG_USB_LCD is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=0
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+# CONFIG_ZLIB_INFLATE is not set
+# CONFIG_ZLIB_DEFLATE is not set
+# CONFIG_FW_LOADER is not set
diff -Naur linux-2.4.23/arch/i386/config.in linux-2.4.23_TS_2_5/arch/i386/config.in
--- linux-2.4.23/arch/i386/config.in	Fri Nov 28 11:26:19 2003
+++ linux-2.4.23_TS_2_5/arch/i386/config.in	Tue Dec  2 18:04:16 2003
@@ -47,7 +47,6 @@
 #
 # Define implied options from the CPU selection here
 #
-
 if [ "$CONFIG_M386" = "y" ]; then
    define_bool CONFIG_X86_CMPXCHG n
    define_bool CONFIG_X86_XADD n
@@ -193,6 +192,22 @@
 fi
 
 bool 'Machine Check Exception' CONFIG_X86_MCE
+
+bool 'Technologic Systems SBC support' TSYSTEMS
+
+if [ "$CONFIG_M386" = "y" ]; then
+  if [ "$TSYSTEMS" = "y" ]; then
+	define_bool CONFIG_TS_M386 y
+  fi
+fi
+
+if [ "$CONFIG_M486" = "y" ]; then
+  if [ "$TSYSTEMS" = "y" ]; then 
+	define_bool CONFIG_TS_M486 y
+  fi
+fi
+	
+
 
 tristate 'Toshiba Laptop support' CONFIG_TOSHIBA
 tristate 'Dell laptop support' CONFIG_I8K
diff -Naur linux-2.4.23/arch/i386/defconfig linux-2.4.23_TS_2_5/arch/i386/defconfig
--- linux-2.4.23/arch/i386/defconfig	Fri Nov 28 11:26:19 2003
+++ linux-2.4.23_TS_2_5/arch/i386/defconfig	Wed Dec  3 11:34:35 2003
@@ -51,6 +51,7 @@
 CONFIG_X86_PGE=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
 CONFIG_X86_MCE=y
+# TSYSTEMS is not set
 # CONFIG_TOSHIBA is not set
 # CONFIG_I8K is not set
 # CONFIG_MICROCODE is not set
@@ -555,6 +556,9 @@
 # CONFIG_SERIAL_NONSTANDARD is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_TSA2D is not set
+# CONFIG_TS9700 is not set
+# CONFIG_TSKEYPAD is not set
 
 #
 # I2C support
diff -Naur linux-2.4.23/arch/i386/kernel/process.c linux-2.4.23_TS_2_5/arch/i386/kernel/process.c
--- linux-2.4.23/arch/i386/kernel/process.c	Fri Nov 28 11:26:19 2003
+++ linux-2.4.23_TS_2_5/arch/i386/kernel/process.c	Tue Dec  2 18:04:20 2003
@@ -282,6 +282,16 @@
 {
 	unsigned long flags;
 
+#ifdef CONFIG_TS_M386
+//	20010219 mtj this enables the watchdog on the intel 386EX, the watchdog
+//	output is tied to the PLD and causes the system reset line to assert.
+	outw( 0x0000, 0xF4C0 );
+	outw( 0x0020, 0xF4C2 );
+	outw( 0xF01E, 0xF4C8 );
+	outw( 0x0FE1, 0xF4C8 );
+#endif
+
+
 	cli();
 
 	/* Write zero to CMOS register number 0x0f, which the BIOS POST
diff -Naur linux-2.4.23/drivers/Makefile linux-2.4.23_TS_2_5/drivers/Makefile
--- linux-2.4.23/drivers/Makefile	Fri Nov 28 11:26:19 2003
+++ linux-2.4.23_TS_2_5/drivers/Makefile	Tue Dec  2 18:04:22 2003
@@ -10,7 +10,7 @@
 		message/i2o message/fusion scsi md ieee1394 pnp isdn atm \
 		fc4 net/hamradio i2c acpi bluetooth usb/gadget
 
-subdir-y :=	parport char block net sound misc media cdrom hotplug
+subdir-y :=	parport misc block net sound char media cdrom hotplug
 subdir-m :=	$(subdir-y)
 
 
diff -Naur linux-2.4.23/drivers/block/Config.in linux-2.4.23_TS_2_5/drivers/block/Config.in
--- linux-2.4.23/drivers/block/Config.in	Fri Nov 28 11:26:19 2003
+++ linux-2.4.23_TS_2_5/drivers/block/Config.in	Tue Dec  2 18:04:23 2003
@@ -51,4 +51,6 @@
 
 bool 'Per partition statistics in /proc/partitions' CONFIG_BLK_STATS
 
+dep_tristate 'M-Systems DOC device support' CONFIG_BLK_DEV_MSYS_DOC m
+
 endmenu
diff -Naur linux-2.4.23/drivers/block/Makefile linux-2.4.23_TS_2_5/drivers/block/Makefile
--- linux-2.4.23/drivers/block/Makefile	Fri Jun 13 07:51:32 2003
+++ linux-2.4.23_TS_2_5/drivers/block/Makefile	Tue Dec  2 18:04:23 2003
@@ -34,4 +34,7 @@
 
 subdir-$(CONFIG_PARIDE) += paride
 
+obj-$(CONFIG_BLK_DEV_MSYS_DOC) += doc/doc.o
+subdir-$(CONFIG_BLK_DEV_MSYS_DOC) += doc
+
 include $(TOPDIR)/Rules.make
diff -Naur linux-2.4.23/drivers/block/doc/Makefile linux-2.4.23_TS_2_5/drivers/block/doc/Makefile
--- linux-2.4.23/drivers/block/doc/Makefile	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/block/doc/Makefile	Tue Dec  2 18:04:25 2003
@@ -0,0 +1,19 @@
+# Makefile for a block device driver
+# for the DiskOnChip flash module from M-Systems
+
+ifndef TOPDIR
+TOPDIR = ../../../
+endif
+
+O_TARGET := doc.o
+list-multi      := doc.o
+obj-$(CONFIG_BLK_DEV_MSYS_DOC) += doc.o
+doc-objs   := fldrvlnx.o libosak
+
+include $(TOPDIR)/Rules.make
+
+doc.o: $(doc-objs)
+	   $(LD) -r -o $@ $(doc-objs)
+	
+fldrvlnx.c: fldrvlnx.h
+
diff -Naur linux-2.4.23/drivers/block/doc/fldrvlnx.c linux-2.4.23_TS_2_5/drivers/block/doc/fldrvlnx.c
--- linux-2.4.23/drivers/block/doc/fldrvlnx.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/block/doc/fldrvlnx.c	Tue Aug 10 15:17:44 2004
@@ -0,0 +1,1947 @@
+/*
+ * $Log: fldrvlnx.c,v $
+ * Revision 1.2  2004/08/10 22:17:44  eddie
+ * This library is required to compile the disk on chip module.
+ *
+ * 
+ */
+
+/***********************************************************************************/
+/*                        M-Systems Confidential                                   */
+/*           Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2002            */
+/*                         All Rights Reserved                                     */
+/***********************************************************************************/
+/*                            NOTICE OF M-SYSTEMS OEM                              */
+/*                           SOFTWARE LICENSE AGREEMENT                            */
+/*                                                                                 */
+/*      THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE                 */
+/*      AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT           */
+/*      FOR THE SPECIFIC TERMS AND CONDITIONS OF USE,                              */
+/*      OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE:                               */
+/*      E-MAIL = info@m-sys.com                                                    */
+/***********************************************************************************/
+
+/* get the kernel version */
+#include <linux/version.h>
+/* older kernels didn't define this */
+#ifndef KERNEL_VERSION
+	#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+#endif
+
+/* not supported kernels */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#	error "Linux Kernel Version 2.5.0 and later not supported"
+#else
+#	if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+#	else
+#		if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
+#			error "Linux Kernel Version 2.3.0 not supported"
+#		else
+#			if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
+#			else
+#				if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+#					error "Linux Kernel Version 2.1.0 not supported"
+#				else
+#					if LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)
+#					else
+#						error "Linux Kernel Version less that 2.0.0 not supported"
+#					endif
+#				endif
+#			endif
+#		endif
+#	endif
+#endif
+
+#ifndef MODVERSIONS
+#	define MODVERSIONS
+#	include <linux/modversions.h>
+#endif
+#include <linux/module.h>			/* must be included after <linux/modversions.h> */
+
+short GetFlDebugParam(void);
+#define DebugPrintk(fmt,args...)		if(GetFlDebugParam()){printk(KERN_DEBUG"fl: "fmt,## args);}
+
+#include "fldrvlnx.h"
+
+#include <asm/io.h>				/* isa_write...() */
+#include <linux/ioport.h>			/* request_mem_reqion() */
+#include <linux/delay.h>			/* udelay() */
+
+#ifdef DEEPDEBUG
+	#define LOG_DELAY	 flsleep(1)
+#else
+	#define LOG_DELAY
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+
+#include <linux/init.h>				/* __initdata */
+#include <linux/sched.h>
+#include <linux/kernel.h>			/* printk() */
+#include <linux/slab.h>				/* kmalloc() */
+#include <linux/vmalloc.h>
+#include <linux/fs.h>				/* everything... */
+#include <linux/errno.h>			/* error codes */
+#include <linux/timer.h>
+#include <linux/fcntl.h>			/* O_ACCMODE */
+#include <linux/hdreg.h>			/* HDIO_GETGEO */
+#include <linux/devfs_fs_kernel.h>	/* devfs_handle_t */
+#include <linux/smp_lock.h>			/* lock_kernel() */
+#include <linux/proc_fs.h>			/* create_proc_read_entry() */
+#include <asm/system.h>				/* cli(), *_flags */
+#include <asm/uaccess.h>			/* verify_area() */
+
+#define grab_io_request_lock(flags) spin_lock_irqsave(&io_request_lock,flags)
+#define rlse_io_request_lock(flags) spin_unlock_irqrestore(&io_request_lock,flags)
+static devfs_handle_t devfs_handle = NULL;
+
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
+
+#include <linux/init.h>
+#include <linux/sched.h>
+#include <linux/kernel.h>
+#include <linux/malloc.h>
+#include <linux/vmalloc.h>
+#include <linux/fs.h>
+#include <linux/errno.h>
+#include <linux/timer.h>
+#include <linux/types.h>
+#include <linux/fcntl.h>
+#include <linux/hdreg.h>
+#include <linux/proc_fs.h>
+#include <linux/string.h>
+#include <linux/ioctl.h>
+#include <linux/genhd.h>
+#include <linux/hdreg.h>
+#include <linux/sockios.h>
+#include <linux/smp_lock.h>
+
+#include <asm/io.h>
+#include <asm/system.h>
+#include <asm/segment.h>
+#include <asm/uaccess.h>
+
+extern spinlock_t io_request_lock;
+#define grab_io_request_lock(flags) spin_lock_irqsave(&io_request_lock,flags)
+#define rlse_io_request_lock(flags) spin_unlock_irqrestore(&io_request_lock,flags)
+
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)
+
+#include <linux/kernel.h>
+#include <linux/string.h>
+#include <linux/ioctl.h>
+#include <linux/genhd.h>
+#include <linux/malloc.h>			/* kmalloc() */
+#include <linux/hdreg.h>			/* struct hd_geometry */
+#include <linux/proc_fs.h>
+#include <asm/system.h>
+#include <asm/segment.h>
+//extern unsigned long loops_per_sec; /* needed by macro udelay() */
+
+//#include <asm/delay.h>				/* macro udelay() */
+#include <asm/io.h>					/* memcpy_*io() */
+#ifndef __KERNEL_SYSCALLS__
+/* need this to get declaration of kernel_thread() */
+#define __KERNEL_SYSCALLS__
+#endif
+#include <linux/unistd.h>			/* kernel_thread() */
+#include <linux/sched.h>			/* jiffies */
+
+typedef struct spinlock
+{
+	int lock;
+}spinlock_t;
+
+#define test_and_set_bit(bnr,lp)			set_bit(bnr,lp)
+#define test_and_clear_bit(bnr,lp)			clear_bit(bnr,lp)
+#define set_current_state(state_value)		do {current->state = state_value; } while (0)
+#define grab_io_request_lock(flags) do { save_flags(flags); cli(); } while (0)
+	/* spin_lock_irqsave(&io_request_lock,*(flgptr)) */
+#define rlse_io_request_lock(flags) do { restore_flags(flags); } while (0)
+	/* spin_unlock_irqsave(&io_request_lock,*(flgptr)) */
+#define lock_kernel()	/* ToDo */
+#define unlock_kernel()	/* ToDo */
+#define sigmask(signum) (1UL << ((signum) - 1))
+
+/* Kernel threads. */
+#define exit_fs(foo)
+#define exit_files(foo)
+
+static void siginitsetinv(sigset_t *set, unsigned long mask);
+static void sigemptyset(sigset_t *set);
+static inline unsigned long copy_to_user(void *to,const void *from, unsigned long n);
+static void spin_lock_init(spinlock_t *splp);
+static void spin_lock(spinlock_t *splp);
+static void spin_unlock(spinlock_t *splp);
+static inline unsigned long copy_to_user(void *to,const void *from, unsigned long n);
+
+#endif
+
+/* definitions for blk.h */
+
+#include <linux/major.h>
+int flMajor;	/* our major device number */
+#define MAJOR_NR flMajor
+#define DEVICE_NAME "fl"
+#define DEVICE_OFF(d)
+#define DEVICE_REQUEST fl_request_fn1
+#define DEVICE_NR(device) (MINOR(device)>>FL_SHIFT)
+#define DEVICE_NO_RANDOM
+#include <linux/blk.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
+#include <linux/blkpg.h>
+#endif
+
+/* defines after blk.h - need struct request from blkdev.h */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
+static int end_that_request_first(struct request *req,int uptodate,char *devname);
+static void end_that_request_last(struct request *req);
+#endif
+
+/* end of blk.h definitions */
+
+/* private includes for M-Systems OSAK */
+#include "tffs2lnx.h"
+
+/* module parameters */
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+MODULE_AUTHOR("yurid@msys.com");
+
+MODULE_PARM(major, "i");		/* set to zero to get dynamic major */
+MODULE_PARM_DESC(major, "Major device number to use.");
+
+MODULE_PARM(rahead, "i");
+MODULE_PARM_DESC(rahead, "Set readahead flag for driver.");
+
+MODULE_PARM(hardsect, "1-4i");	/* NB this should be the same as MAX_DEVICES */
+MODULE_PARM_DESC(hardsect, "Set hardsect parameter for each DOC device.");
+
+MODULE_PARM(blksize, "1-4i");	/* NB this should be the same as MAX_DEVICES */
+MODULE_PARM_DESC(blksize, "Set blksize parameter for each DOC device.");
+
+MODULE_PARM(prio,"i");
+
+MODULE_PARM(fl_debug,"h");
+MODULE_PARM(fl_winl,"l");
+MODULE_PARM(fl_winh,"l");
+MODULE_PARM(fl_part_prot,"h");
+MODULE_PARM(fl_key_prot,"s");
+
+MODULE_PARM(fl_nftl_cache,"h");
+MODULE_PARM(fl_is_ram_check,"h");
+MODULE_PARM(fl_8bit_access,"h");
+MODULE_PARM(fl_mtd_bus_access_type,"l");
+MODULE_PARM(fl_verify_write_bdtl,"l");
+MODULE_PARM(fl_verify_write_binary,"l");
+MODULE_PARM(fl_verify_write_other,"l");
+MODULE_PARM(fl_sectors_verified_per_folding,"l");
+
+#else
+#warning No parameters yet.
+#endif
+
+/* these are used only during module initialization */
+#ifndef __initdata
+#	define __initdata
+#endif
+
+static int __initdata major = FLASH_MAJOR;
+static int __initdata rahead = 0;
+static int __initdata hardsect[MAX_DEVICES];
+static int __initdata blksize[MAX_DEVICES];
+#ifdef DEEPDEBUG
+static short __initdata			fl_debug=1;
+#else
+static short __initdata			fl_debug=0;
+#endif
+static unsigned long __initdata		fl_winl=FL_DOC_PHYS_ADDR_LOW;
+static unsigned long __initdata		fl_winh=FL_DOC_PHYS_ADDR_HIGH;
+static void * __initdata		fl_virl=NULL;
+static void * __initdata		fl_virh=NULL;
+static short __initdata			fl_part_prot=MAX_DEVICES;
+static char * __initdata		fl_key_prot=NULL;
+static short __initdata			fl_nftl_cache=1;
+static short __initdata			fl_is_ram_check=0;
+static short __initdata			fl_8bit_access=1;
+static unsigned long __initdata		fl_mtd_bus_access_type=7;	/* FL_BUS_HAS_8BIT_ACCESS|FL_BUS_HAS_16BIT_ACCESS|FL_BUS_HAS_32BIT_ACCESS|FL_NO_ADDR_SHIFT) */
+static unsigned long __initdata		fl_verify_write_bdtl=0;
+static unsigned long __initdata		fl_verify_write_binary=0;
+static unsigned long __initdata		fl_verify_write_other=0;
+static unsigned long __initdata		fl_sectors_verified_per_folding=64;
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+static int __initdata prio=-10;	/* max -20 */
+#else
+static int __initdata prio=30;		/* max 40 */
+#endif
+
+#define FL_SHIFT		6
+#define MINOR_NR(r)		(r<<FL_SHIFT)
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+static DECLARE_MUTEX_LOCKED(start_stop_sem);
+#else
+static struct semaphore start_stop_sem = MUTEX_LOCKED;
+#endif
+
+#define SHUTDOWN_SIGS   (sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGTERM)|sigmask(SIGQUIT))
+
+static void fl_setsid(void)
+{
+	/* Simple setsid, used at start of kernel thread,
+	   no error checks needed, or at least none made :). */
+	current->leader = 1;
+	current->session = current->pgrp = current->pid;
+	current->tty = NULL;
+	current->tty_old_pgrp = 0;
+}
+
+static spinlock_t o_c_lock;
+
+// private structure for driver
+typedef struct Fl_Dev
+{
+	int             volume;     // DOC volume number
+	int             size;       // DOC volume size in XXX kb
+	int             usage;
+	int             heads;
+	int             sectors;
+	int             cylinders;
+	int             read_only;
+	unsigned int    requests;
+	unsigned int    requests_Read;
+	unsigned int    requests_Write;
+
+	// Every once in a while the DOC wants to "think" for a while.  We
+	// can't sleep while this is happening if we are in the ordinary
+	// request fn context.  What we do instead is use the reqest fn to
+	// move the requests to a private, per device list, and schedule
+	// a kernel task (capable of sleeping when required) to complete
+	// the requests.
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	struct list_head queue_head;  // private list for I/O requests 
+#else
+	struct request *queue;  // Older kernels used singly linked list
+	struct request *revq;   // reversed list, used to simplify transfer
+#endif
+	struct semaphore *sem;
+	int terminating;
+}FL_DEV;
+
+// Start of structures dynamically allocated with kmalloc() during init and
+// (if a module) de-allocated with kfree() if unloaded.
+
+// per DEVICE structures
+static FL_DEV*Fl_devices;         // this is an array FL_Flash_Devices in length
+
+// per DEVICE*MINOR structures
+static int*Fl_blksize_size;    // used in global blksize_size array
+static int*Fl_hardsect_size;   // used in global hardsect_size array
+static int*Fl_blk_size;        // used in gendisk structure and global blk_size array
+
+static struct hd_struct *Fl_partitions;
+
+// End of dynamically allocated structures.
+
+// function declarations
+
+int             fl_open(struct inode *inode, struct file *filp);
+int             fl_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg);
+int             fl_check_change(kdev_t i_rdev);
+int             fl_revalidate(kdev_t i_rdev);
+int             fl_init(void);
+static void     fl_geninit(struct gendisk *);
+
+// copies flioctl_t data into kernel
+/* static char *	fl_usr2kern(unsigned long); */
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+int             fl_release(struct inode *inode, struct file *filp);
+#else // > 2.1.0
+void            fl_release(struct inode *inode, struct file *filp);
+#endif // > 2.1.0
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+void            fl_request_fn1(request_queue_t *q);
+#else
+void            fl_request_fn1(void);
+#endif // < 2.4.0
+
+// driver globals
+int             flMajor;           // our major device number
+int             Fl_read_ahead;      // used in global read_ahead array 
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+
+static struct block_device_operations fl_fops =
+{
+	open: fl_open,                   // open
+	release: fl_release,             // release 
+	ioctl: fl_ioctl,                 // ioctl 
+};
+
+static struct gendisk fl_gendisk =
+{
+	0,                         // major        Major number, assigned at runtime 
+	DEVICE_NAME,               // major_name   Major name 
+	FL_SHIFT,                  // minor_shift  Bits to shift to get real from partition 
+	MINOR_NR(1),               // max_p        Number of partitions per real 
+	NULL,                      // hd struct
+	NULL,                      // block sizes
+	0,                         // nr_real      maximum number of real, assigned at runtime 
+	NULL,                      // internal
+	NULL,                      // next         linked list (not used for modules) 
+	&fl_fops,
+	NULL,
+	NULL
+};
+
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+
+static struct file_operations fl_fops =
+{
+	NULL,                      // lseek - default
+	block_read,                // read - block dev read 
+	block_write,               // write - block dev write 
+	NULL,                      // readdir - not here! 
+	NULL,                      // select 
+	fl_ioctl,                  // ioctl 
+	NULL,                      // mmap 
+	fl_open,                   // open
+	NULL,                      // flush 
+	fl_release,                // release 
+	block_fsync,               // fsync 
+	NULL,                      // media change 
+	fl_revalidate,             // revalidate 
+	NULL
+};
+
+static struct gendisk fl_gendisk =
+{
+	0,                         // major        Major number, assigned at runtime 
+	DEVICE_NAME,               // major_name   Major name 
+	FL_SHIFT,                  // minor_shift  Bits to shift to get real from partition 
+	MINOR_NR(1),               // max_p        Number of partitions per real 
+	0,                         // max_nr       maximum number of real, assigned at runtime 
+	fl_geninit,                // init         init function 
+	NULL,                      // part         hd struct (partition table), assigned at runtime 
+	NULL,                      // sizes        block sizes, assigned at runtime 
+	0,                         // nr_real      number, assigned at runtime 
+	NULL,                      // real_devices internal use
+	NULL                       // next         linked list (not used for modules) 
+};
+
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)
+
+static struct file_operations fl_fops =
+{
+	NULL,                      // lseek - default
+	block_read,                // read - block dev read 
+	block_write,               // write - block dev write 
+	NULL,                      // readdir - not here! 
+	NULL,                      // select 
+	fl_ioctl,                  // ioctl 
+	NULL,                      // mmap 
+	fl_open,                   // open
+	fl_release,                // release 
+	block_fsync,               // fsync 
+	NULL,                      // media change 
+	fl_revalidate              // revalidate 
+};
+
+static struct gendisk fl_gendisk =
+{
+	0,                         // major        Major number, assigned at runtime 
+	DEVICE_NAME,               // major_name   Major name 
+	FL_SHIFT,                  // minor_shift  Bits to shift to get real from partition 
+	MINOR_NR(1),               // max_p        Number of partitions per real 
+	0,                         // max_nr       maximum number of real, assigned at runtime 
+	fl_geninit,                // init         init function 
+	NULL,                      // part         hd struct (partition table), assigned at runtime 
+	NULL,                      // sizes        block sizes, assigned at runtime 
+	0,                         // nr_real      number, assigned at runtime 
+	NULL,                      // real_devices internal use
+	NULL                       // next         linked list (not used for modules) 
+};
+
+#else
+#error "OS Not supported"
+#endif 
+
+/* __init ckmalloc()
+ *
+ * kmalloc and clear, only used during init
+ */
+#if defined(__init)
+void * __init ckmalloc(int size, int mode)
+#elif defined(__initfunc)
+__initfunc( void * ckmalloc(int size, int mode))
+#else
+void * ckmalloc(int size, int mode)
+#endif
+{
+	void *ptr;
+	if ((ptr = kmalloc(size, mode)))
+		memset(ptr, 0, size);
+	return(ptr);
+}
+
+/* IFF !NULL free and set to NULL */
+void lkfree(void **ptr)
+{
+	if(*ptr)
+	{
+		kfree(*ptr);
+		*ptr = NULL;
+	}
+}
+
+int fl_open(struct inode *inode, struct file *filp)
+{
+	FL_DEV*dev;	/* device information */
+	int dev_nr;
+
+	/* get the real device number */
+	/* (device&0xff)>>6) */
+	dev_nr = DEVICE_NR(inode->i_rdev);
+
+	if (dev_nr >= fl_gendisk.nr_real)
+	{
+		return -ENODEV;
+	}
+
+	if(FlGetProtection(dev_nr))
+	{
+		if (filp->f_mode & 0x02)
+		{
+			return -EROFS;
+		}
+	}
+
+	/* get pointer to device structure and increment use count */
+	dev = Fl_devices + dev_nr;
+
+	spin_lock(&o_c_lock);
+	dev->usage++;
+	MOD_INC_USE_COUNT;
+	spin_unlock(&o_c_lock);
+	return 0;					/* success */
+}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+int
+#else
+void
+#endif
+fl_release(struct inode *inode, struct file *filp)
+{
+	FL_DEV         *dev;        // device information 
+	int             dev_nr;
+
+	// get the real device number
+	dev_nr = DEVICE_NR(inode->i_rdev);
+
+	if (dev_nr >= fl_gendisk.nr_real)
+	{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+		return -ENODEV;
+#else
+		return;
+#endif
+	}
+
+	dev = Fl_devices + dev_nr;
+
+	// lock and dec usage count
+	spin_lock(&o_c_lock);
+	dev->usage--;
+	// if there are no more open we want to ensure that we flush all blocks.
+	// sync_dev can cause sleep, so this should be _before_ MOD_DEC_USE_COUNT.
+	if (!dev->usage)
+	{
+		// flush it right now
+		sync_dev(inode->i_rdev);
+		invalidate_buffers(inode->i_rdev);
+	}
+	MOD_DEC_USE_COUNT;
+	spin_unlock(&o_c_lock);
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+	return (0);
+#endif
+}
+
+/* Derived from OSAK dosformt.c getDriveGeometry() */
+static void get_drive_geo(long capacity, struct hd_geometry *geo)
+{
+    unsigned long temp;
+
+    geo->heads = 16;                              /* Max out number of heads             */
+    geo->cylinders=1024;
+    temp = geo->cylinders * geo->heads;            /* Compute divisor for heads           */
+    geo->sectors = capacity / temp;                /* Compute value for sectors per track */
+    while (geo->sectors > 0x3f ){                  /* While number of sectors too big     */
+      geo->heads *= 2;                             /* use one more head                   */
+      temp = geo->cylinders * geo->heads;          /* Recompute divisor for heads         */
+      geo->sectors = capacity / temp;              /* Recompute sectors per track         */
+    }
+    if (capacity % temp) {                     /* If no remainder, done!              */
+      geo->sectors++;                            /* Else, increment number of sectors   */
+      temp = geo->cylinders * geo->sectors;        /* Compute divisor for heads           */
+      geo->heads = capacity / temp;                /* Compute value for heads             */
+      if (capacity % temp) {                   /* If no remainder, done!              */
+	geo->heads++;                            /* Else, increment number of heads     */
+        temp = geo->heads * geo->sectors;          /* Compute divisor for cylinders       */
+        geo->cylinders = (unsigned long)(capacity / temp); /* Compute number of cylinders         */
+      }
+    }
+/*
+	geo->heads = 16;
+	geo->cylinders = 1024;
+	temp = geo->cylinders * geo->heads;
+	geo->sectors = capacity / temp;
+
+	if (capacity % temp)
+	{
+		geo->sectors++;
+		temp = geo->cylinders * geo->sectors;
+		geo->heads = capacity / temp;
+		if (capacity % temp)
+		{
+			geo->heads++;
+			temp = geo->heads * geo->sectors;
+			geo->cylinders = capacity / temp;
+		}
+	}
+*/
+}
+
+/* The ioctl() implementation */
+int fl_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
+{
+	int size;
+	unsigned int dev_nr;
+	FL_DEV*device;
+	int res;
+
+	dev_nr = DEVICE_NR(inode->i_rdev);
+	device = Fl_devices + dev_nr;
+
+	/* verify we have sysadmin capabilities for certain ioctl calls */
+	switch (cmd)
+	{
+	case FL_IOCTL_GET_INFO:
+	case FL_IOCTL_DEFRAGMENT:
+	case FL_IOCTL_WRITE_PROTECT:
+	case FL_IOCTL_MOUNT_VOLUME:
+	case FL_IOCTL_FORMAT_VOLUME:
+	case FL_IOCTL_BDK_OPERATION:
+	case FL_IOCTL_DELETE_SECTORS:
+	case FL_IOCTL_READ_SECTORS:
+	case FL_IOCTL_WRITE_SECTORS:
+	case FL_IOCTL_FORMAT_PHYSICAL_DRIVE:
+	case FL_IOCTL_FORMAT_LOGICAL_DRIVE:
+	case FL_IOCTL_BDTL_HW_PROTECTION:
+	case FL_IOCTL_BINARY_HW_PROTECTION:
+	case FL_IOCTL_OTP:
+	case FL_IOCTL_CUSTOMER_ID:
+	case FL_IOCTL_UNIQUE_ID:
+	case FL_IOCTL_NUMBER_OF_PARTITIONS:
+	case FL_IOCTL_INQUIRE_CAPABILITIES:
+	case FL_IOCTL_SET_ENVIRONMENT_VARIABLES:
+	case FL_IOCTL_PLACE_EXB_BY_BUFFER:
+	case FL_IOCTL_WRITE_IPL:
+	case FL_IOCTL_DEEP_POWER_DOWN_MODE:
+	case FL_IOCTL_EXTENDED_ENVIRONMENT_VARIABLES:
+	case FL_IOCTL_VERIFY_VOLUME:
+	case FL_IOCTL_SET_ACCESS_ROUTINE:
+	case FL_IOCTL_GET_ACCESS_ROUTINE:
+	case FL_IOCTL_EXTENDED_WRITE_IPL:
+	case FL_IOCTL_LNX:
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+		if (!capable(CAP_SYS_ADMIN))
+		{
+			return -EACCES;
+		}
+#endif
+	}
+	/* ioctl's that don't require libosak access */
+	switch(cmd)
+	{
+	case BLKGETSIZE:
+		// Return the device size, expressed in sectors 
+		if(!arg)
+		{
+			return -EINVAL;		/* NULL pointer: not valid  */
+		}
+		if((res=verify_area(VERIFY_WRITE, (long *) arg, sizeof(long))))
+		{
+			return res;
+		}
+		size = fl_gendisk.part[MINOR(inode->i_rdev)].nr_sects;
+		put_user(size, (long *) arg);
+		return 0;
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)
+	case BLKRAGET:             // return the readahead value 
+
+		if (!arg)
+			return -EINVAL;
+
+		if ((res = verify_area(VERIFY_WRITE, (long *) arg, sizeof(long))))
+		{
+			return res;
+		}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+	/* QQQ no need for verify area? ask SL */
+		put_user_ret(read_ahead[MAJOR(inode->i_rdev)], (long *) arg, -EFAULT);
+#else
+		put_user(read_ahead[MAJOR(inode->i_rdev)], (long *) arg);
+#endif
+		return 0;
+#endif /* < 2.4.0 */
+
+	case HDIO_GETGEO:
+		{
+			struct hd_geometry *geo = (struct hd_geometry *) arg;
+			struct hd_geometry geometry;
+
+			/* check arg */
+			if (geo == NULL)
+			{
+				return -EINVAL;
+			}
+			if ((res = verify_area(VERIFY_WRITE, geo, sizeof(*geo))))
+			{
+				return res;
+			}
+			size = device->size;
+
+			memset(&geometry,0,sizeof(geometry));
+			get_drive_geo(size, &geometry);
+			geometry.start = fl_gendisk.part[MINOR(inode->i_rdev)].start_sect;
+
+			copy_to_user(geo, &geometry, sizeof(geometry));
+			return 0;
+		}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	// This is a list of "standard" ioctls.
+	// The ones that modify things are protected by a semaphore below.
+	case BLKROSET:
+	case BLKROGET:
+	// case BLKRASET:
+	case BLKRAGET:
+	// case BLKPG:
+		res = blk_ioctl(inode->i_rdev, cmd, arg);
+		return(res);
+	case BLKPG:      // play with partitions
+	case BLKFLSBUF:  // flush
+		// This will call the low-level block I/O functions which lock
+		// libosak access themselves, so we'd better not do it here.
+		res = blk_ioctl(inode->i_rdev, cmd, arg);
+		return(res);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)
+
+	case BLKFLSBUF:            // flush 
+		fsync_dev(inode->i_rdev);
+		invalidate_buffers(inode->i_rdev);
+		break;
+
+		// The default RO operations
+		RO_IOCTLS(inode->i_rdev, arg);
+#endif // >= 2.4.0
+
+	case BLKRRPART:            // re-read partition table
+		// This will call the low-level block I/O functions which lock
+		// libosak access themselves, so we'd better not do it here.
+		res = fl_revalidate(inode->i_rdev);
+		return(res);
+	}
+
+	// ioctl's that require libosak access (we are modifying something)
+	res = 0;
+	switch(cmd)
+	{
+	/* private stuff */
+	case FL_IOCTL_GET_INFO:
+	case FL_IOCTL_DEFRAGMENT:
+	case FL_IOCTL_WRITE_PROTECT:
+	case FL_IOCTL_MOUNT_VOLUME:
+	case FL_IOCTL_FORMAT_VOLUME:
+	case FL_IOCTL_BDK_OPERATION:
+	case FL_IOCTL_DELETE_SECTORS:
+	case FL_IOCTL_READ_SECTORS:
+	case FL_IOCTL_WRITE_SECTORS:
+	case FL_IOCTL_FORMAT_PHYSICAL_DRIVE:
+	case FL_IOCTL_FORMAT_LOGICAL_DRIVE:
+	case FL_IOCTL_BDTL_HW_PROTECTION:
+	case FL_IOCTL_BINARY_HW_PROTECTION:
+	case FL_IOCTL_OTP:
+	case FL_IOCTL_CUSTOMER_ID:
+	case FL_IOCTL_UNIQUE_ID:
+	case FL_IOCTL_NUMBER_OF_PARTITIONS:
+	case FL_IOCTL_INQUIRE_CAPABILITIES:
+	case FL_IOCTL_SET_ENVIRONMENT_VARIABLES:
+	case FL_IOCTL_PLACE_EXB_BY_BUFFER:
+	case FL_IOCTL_WRITE_IPL:
+	case FL_IOCTL_DEEP_POWER_DOWN_MODE:
+	case FL_IOCTL_EXTENDED_ENVIRONMENT_VARIABLES:
+	case FL_IOCTL_VERIFY_VOLUME:
+	case FL_IOCTL_SET_ACCESS_ROUTINE:
+	case FL_IOCTL_GET_ACCESS_ROUTINE:
+	case FL_IOCTL_EXTENDED_WRITE_IPL:
+	case FL_IOCTL_LNX:
+		if(!FlIoctl(DEVICE_NR(inode->i_rdev), cmd, arg))
+		{
+			res=-EINVAL;
+		}
+		break;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+
+	case BLKRASET:             // set the readahead value 
+		res = blk_ioctl(inode->i_rdev, cmd, arg);
+	break;
+#else //>= 2.4.0
+
+	case BLKRASET:             // set the readahead value 
+		if (arg > 0xff)
+		{
+			res = -EINVAL;      // limit it 
+			break;
+		}
+		read_ahead[MAJOR(inode->i_rdev)] = arg;
+		break;
+#endif /* >= 2.4.0 */
+	default: // unknown command
+		res = -EINVAL; /* ? ENOSYS ? */
+	}
+	return res;
+}
+
+/* Support for removable devices */
+int fl_check_change(kdev_t i_rdev)
+{
+	// TODO
+	return 0;
+}
+
+int fl_revalidate(kdev_t i_rdev)
+{
+	// first partition, # of partitions 
+	int             part1 = MINOR_NR(DEVICE_NR(i_rdev)) + 1;
+	int             npart = MINOR_NR(1) - 1;
+	int             dev_nr;
+
+	// first clear old partition information 
+	memset(fl_gendisk.sizes + part1, 0, npart * sizeof(int));
+	memset(fl_gendisk.part + part1, 0, npart * sizeof(struct hd_struct));
+
+	// then fill new info 
+	dev_nr = DEVICE_NR(i_rdev);
+	// The partition code eventually wants to read
+	// a block and wait for it.  We'd better not lock out the
+	// low level routine fl_do1_request() or we're hosed.
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	grok_partitions(&fl_gendisk, dev_nr, fl_gendisk.max_p,Fl_devices[dev_nr].size);
+				   /* device->size); */
+#else
+	resetup_one_dev(&fl_gendisk, dev_nr);
+#endif
+	return 0;
+}
+
+/* Block-driver specific functions */
+static int fl_do1_request(FL_DEV *device, struct request *req)
+{
+	/* Do the I/O for _one_ request, but don't mess with the request queues. */
+	/* All validity checking done before calling this fn. */
+
+	unsigned int    blocks;
+	unsigned int    block;
+	void           *buffer;
+	int             minor;
+	int             dev_nr;
+	int fl_last_error=0;
+
+	// get device information
+	dev_nr = DEVICE_NR(req->rq_dev);
+	minor = MINOR(req->rq_dev);
+
+	// get io information
+	blocks = req->current_nr_sectors;
+	buffer = req->buffer;
+	block = req->sector;
+
+	// translate through partition table
+	block += Fl_partitions[minor].start_sect;
+
+	/* iterate doing io until we are done */
+	for (; blocks--; block++, buffer += 512)
+	{
+		// determine if we are READing or WRITEing, then select io type
+		switch (req->cmd)
+		{
+		case READ:
+			device->requests_Read++;
+			fl_last_error=FlRead(dev_nr, buffer, block, 1);
+			if(!fl_last_error)
+			{
+				return 0;
+			}
+			break;
+
+		case WRITE:
+			device->requests_Write++;
+			fl_last_error=FlWrite(dev_nr, buffer, block, 1);
+			if(!fl_last_error)
+			{
+				return 0;
+			}
+			break;
+		}
+	}
+	return 1;
+}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+void fl_request_fn1(request_queue_t *q)
+#else
+void fl_request_fn1(void)
+#endif	/* < 2.4.0 */
+{
+	// Move all the requests into the private device queue.
+	struct request *req;
+	FL_DEV         *device;
+	int             minor;
+	int             dev_nr;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	int             code;
+#endif
+
+	// Standard block device request loop
+	//
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	while (code = 0, !QUEUE_EMPTY)
+#else
+	while (1)
+#endif
+	{
+		// Standard block device boiler plate
+		INIT_REQUEST;
+		req = CURRENT;
+
+		// get device information
+		dev_nr = CURRENT_DEV;
+		minor = MINOR(req->rq_dev);
+
+		// Check if the minor number is in range 
+		if ((dev_nr > fl_gendisk.nr_real) || (minor > MINOR_NR(fl_gendisk.nr_real)))
+		{
+			static int      count = 0;
+			if (count++ < 5)    // print the message at most five times 
+				printk(KERN_WARNING DEVICE_NAME": _request_fn: request for non-existent device\n");
+			end_request(0);
+			continue;
+		}
+		// get device structure
+		device = Fl_devices + dev_nr;
+		device->requests++;
+		// check we are in range
+		if ((req->sector + req->current_nr_sectors) > fl_gendisk.part[minor].nr_sects)
+		{
+			printk(KERN_WARNING DEVICE_NAME": _request_fn: request past end of device: %4lx >= %4lx\n",req->sector + req->current_nr_sectors, fl_gendisk.part[minor].nr_sects);
+			if (req->sector != 0)
+			{
+				end_request(0);
+				continue;
+			}
+		}
+		// check we have a valid command
+		if (req->cmd != READ && req->cmd != WRITE)
+		{
+			end_request(0);
+			continue;
+		}
+
+		// Check that there is somebody to handle it :).
+		if (NULL == device->sem)
+		{
+			// Oops, there isn't.
+			end_request(0);
+			continue;
+		}
+
+		if(req->cmd==WRITE && FlGetProtection(DEVICE_NR(req->rq_dev))>=1)
+		{
+			end_request(0);
+			continue;
+		}
+		if(req->cmd==READ && FlGetProtection(DEVICE_NR(req->rq_dev))>=2)
+		{
+			end_request(0);
+			continue;
+		}
+
+		// Move to private list (io_request_lock aquired before calling this request fn).
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+		list_del(&req->queue);
+		INIT_LIST_HEAD(&req->queue);
+		list_add_tail(&req->queue,&device->queue_head);
+#else
+		// no easy way to add to tail for singly linked list,
+		// so build list in reverse order and flip it when processing starts
+		CURRENT = req->next;
+		req->next = device->revq;
+		device->revq = req;
+#endif
+		// Make sure the next stage is set up to run.  We can
+		// do this more than once because it's a semaphore,
+		// and we _must_ do it now because some kernel versions
+		// have a function exit inside the INIT_REQUEST macro
+		// used above.
+		up(device->sem);
+	}
+}
+
+static struct request*gimme_req(FL_DEV *device)
+{
+	struct request *req;
+	unsigned long flags;
+
+	// Use the same lock that's protecting fl_request_fn1()
+	grab_io_request_lock(flags);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	req = list_empty(&device->queue_head) ? NULL :list_entry(device->queue_head.next,struct request,queue);
+#else
+	if (NULL == (req = device->queue) && NULL != (req = device->revq))
+	{
+		// There are none on the private queue, but the reversed
+		// queue has at least one, flip the reversed queue into
+		// the private queue.
+		do{
+			device->revq = req->next;
+			req->next = device->queue;
+			device->queue = req;
+		}while (NULL != (req = device->revq));
+		// Pick up the first request
+		req = device->queue;
+	}
+#endif
+	/* A tiny bit of paranoia from INIT_REQ */
+	if (NULL != req && NULL != req->bh)
+	{
+		if (!buffer_locked(req->bh))
+			panic(DEVICE_NAME ": block not locked");
+	}
+	/* End paranoia */
+	rlse_io_request_lock(flags);
+	return(req);
+}
+
+static void request_completed(FL_DEV *device, struct request *req,int result)
+{
+	// Do the equivalent of end_request(1), but don't use "CURRENT"
+	unsigned long flags;
+	/* We really don't need to lock just yet, because the request is in
+	   our private queue and we won't be returning it to the public free
+	   list until _after_ end_that_request_first() returns 0. */
+	if (end_that_request_first(req,result,DEVICE_NAME))
+	{
+		// This request is multi-sector and is not finished yet,
+		// the various buffer pointers and counters have been adjusted,
+		// but we need another crack at the remaining sectors.
+		return;
+	}
+#if !defined(DEVICE_NO_RANDOM)
+	add_blkdev_randomness(MAJOR(req->rq_dev));
+#endif
+	grab_io_request_lock(flags);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	blkdev_dequeue_request(req);
+	INIT_LIST_HEAD(&req->queue);
+#else
+	device->queue = req->next;
+	req->next = NULL;
+#endif
+	end_that_request_last(req);
+	rlse_io_request_lock(flags);
+}
+
+/* Note: this runs as a kernel thread without aquired locks, so any list operations must aquire the appropriate lock. (See gimme_req() and request_completed(), above.) */
+/* struct task_struct current */
+int fl_request_fn2(void *data)
+{
+	FL_DEV         *device = (FL_DEV *) data;
+	struct request *req;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	DECLARE_MUTEX_LOCKED(reqs2do);
+#else
+	struct semaphore reqs2do = MUTEX_LOCKED;
+#endif
+	struct semaphore *initterm = device->sem;
+
+	/* Detach as best we can from the process that started us. */
+	lock_kernel();
+	exit_mm(current);
+	exit_files(current);
+	exit_fs(current);
+	fl_setsid();
+	current->exit_signal = SIGCHLD;
+	/* QQQ should terminate when we detect 'em.....if we detect 'em */
+	siginitsetinv(&current->blocked, SHUTDOWN_SIGS);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	spin_lock(&current->sigmask_lock);
+	flush_signals(current);
+	spin_unlock(&current->sigmask_lock);
+#else
+	sigemptyset(&current->signal);
+#endif
+	/* Name this thread */
+	sprintf(current->comm, "msys/fl%c", 'a'+(device-Fl_devices));
+	/* Run at a high priority, ahead of sync and friends */
+	/* QQQ priority > bdflush??? */
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	current->nice = prio;
+#else
+	current->priority = prio;
+#endif
+	current->policy = SCHED_OTHER;
+	/* Replace the initialization/termination semaphore with our "requests to do" semaphore. */
+	device->sem = &reqs2do;
+	unlock_kernel();
+
+	/* Let the process that started us know we are ready to roll. */
+	up(initterm);
+	// Process all requests for this device.
+	while (!device->terminating)
+	{
+		/* Wait for some requests. */
+		down(device->sem);
+		/* Do 'em. */
+		while (NULL != (req = gimme_req(device)))
+		{
+			request_completed(device,req,fl_do1_request(device,req));
+		}
+	}
+	// Let the process terminating us know we are done. */
+	up(initterm);
+	return(0);
+}
+
+static void kickoff_thread(FL_DEV *device, int (*th_fn)(void *data))
+{
+	device->terminating = 0;
+	device->sem = &start_stop_sem;
+	kernel_thread(th_fn,(void *)device,0);
+	/* Wait for the function to finish initialization. */
+	down(&start_stop_sem);
+}
+
+static void killoff_thread(FL_DEV *device)
+{
+	if (NULL == device->sem || device->terminating)
+	{
+		/* It's already dead or dying. */
+		return;
+	}
+	/* Tell the thread to quit. */
+	device->terminating = 1;
+	/* Wake up the function for the last time (if it isn't already awake). */
+	up(device->sem);
+	/* Wait for the function to finish termination. */
+	down(&start_stop_sem);
+	/* Make sure no one tries to wake up the function again. */
+	device->sem = NULL;
+}
+
+#define fl_init init_module
+
+static void fl_geninit(struct gendisk *gendisk)
+{
+	int mdev;
+	FL_DEV*device;
+	int	bDevice;
+
+	/* iterate across the per minor device arrays and prepare them */
+	for (mdev = 0; mdev < MINOR_NR(gendisk->nr_real); mdev++)
+	{
+		/* prepare the Fl_blksize_size array and zero it */
+		Fl_blksize_size[mdev] = blksize[mdev>>FL_SHIFT];
+		/* prepare the Fl_hardsect_size array and zero it */
+		Fl_hardsect_size[mdev] = hardsect[mdev>>FL_SHIFT];
+		Fl_blk_size[mdev] = 0;
+	}
+
+	/* iterate across the flash devices filling in the device information structure */
+	for(bDevice=0;bDevice<gendisk->nr_real;bDevice++)
+	{
+		// we still increment dev
+		// so that we can access the underlying device via ioctls for formatting etc
+		device = Fl_devices + bDevice;
+
+		/* We have a private queue per physical device, but only one "public" queue for the major number */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+		INIT_LIST_HEAD(&device->queue_head);
+#else
+		device->queue = device->revq = NULL;
+#endif
+		kickoff_thread(device,fl_request_fn2);
+
+		/* remove read protection */
+		if(bDevice==fl_part_prot)
+		{
+			if(!FlRemoveProtectionFromParm(fl_part_prot,fl_key_prot))
+			{
+				printk(KERN_ERR DEVICE_NAME": device %d: Error removing protection.\n",(int)bDevice);
+			}
+		}
+		/* does this DOC volume exist? */
+		if(FlMount(bDevice))
+		{
+			/* start to fill in the required info */
+			device->volume = bDevice;
+			device->size=FlGetNumberOfSectors(bDevice);
+
+			Fl_blk_size[MINOR_NR(bDevice)] = device->size;
+			Fl_blksize_size[MINOR_NR(bDevice)] = 1024;
+			Fl_partitions[MINOR_NR(bDevice)].start_sect = 0;
+			Fl_partitions[MINOR_NR(bDevice)].nr_sects = 0;
+		}
+		else
+		{
+			/* start to fill in the required info */
+			device->volume = -1;
+			device->size = 0;
+
+			Fl_blk_size[MINOR_NR(bDevice)] = 0;
+			Fl_blksize_size[MINOR_NR(bDevice)] = 0;
+			Fl_partitions[MINOR_NR(bDevice)].start_sect = 0;
+			Fl_partitions[MINOR_NR(bDevice)].nr_sects = 0;  
+		}
+	}
+
+	/* fill in partition info for whole disks so we can do resetup_one_dev() */
+	for (bDevice=0;bDevice<gendisk->nr_real;bDevice++)
+	{
+		device = Fl_devices+bDevice;
+		Fl_partitions[MINOR_NR(bDevice)].nr_sects = device->size; 
+	}
+
+	/* fill in the gendisk structure  */
+	gendisk->sizes = Fl_blk_size;
+
+	/* set global variables */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	blk_init_queue(BLK_DEFAULT_QUEUE(flMajor),fl_request_fn1);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)
+	blk_dev[flMajor].request_fn = fl_request_fn1;
+#endif	/* >= 2.4.0 */
+	read_ahead[flMajor] = Fl_read_ahead;
+	blk_size[flMajor] = Fl_blk_size;
+	blksize_size[flMajor] = Fl_blksize_size;
+	hardsect_size[flMajor] = Fl_hardsect_size;
+
+	// call resetup/register_disk for each physical device
+	for(bDevice=0;bDevice<gendisk->nr_real;bDevice++)
+	{
+		device = Fl_devices+bDevice;
+		if (device->size)
+		{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+			register_disk(gendisk,MKDEV(flMajor,(bDevice<<gendisk->minor_shift)),gendisk->max_p,gendisk->fops,device->size);
+#else
+			resetup_one_dev(gendisk,bDevice);
+#endif
+		}
+	}
+
+	// grab blk_size information and spit out some info
+	for (mdev = 0; mdev < MINOR_NR(gendisk->nr_real); mdev++)
+	{
+		Fl_blk_size[mdev] = Fl_partitions[mdev].nr_sects / 2;
+
+		if ((mdev%64 == 0) || (mdev%64 == 1)  || (mdev%64 == 2) || (mdev%64 == 3))
+		{
+			printk(KERN_INFO DEVICE_NAME": partition: %d: start_sect: %lx, nr_sects: %lx Fl_blk_size[]: %xkb\n",mdev, Fl_partitions[mdev].start_sect, Fl_partitions[mdev].nr_sects, Fl_blk_size[mdev]);
+		}
+	}
+
+	return;
+}
+
+/* DDD Here for debugging
+ * print out the size of the request queue when /proc/fla_queue is read. */
+static int fl_read_proc(char *buffer, char **start, off_t offset,int length, int *eof, void *data)
+{
+	int len;
+	off_t begin=0;
+
+	len = sprintf(buffer, "ReadQ WriteQ\n%5d %6d\n",Fl_devices->requests_Read,Fl_devices->requests_Write);
+
+	if (len<offset)
+	{
+		begin = len;
+		len=0;
+		*eof = 1;
+	}
+	*start = buffer+(offset-begin);
+	len-=(offset-begin);
+	if (len < 0)
+	{
+		len = 0;
+	}
+	if (len > length)
+	{
+		len = length;
+	}
+	return len;
+}
+
+#ifdef COTULLA
+#define MSC2_CNTR_REG_ADDR 0x48000000
+#define MSC2_OFFSET        0x10
+#define MCS5_INIT_VAL      0xFFF80000
+#endif
+
+/* Init DiskOnChip CS in H/W if needed */
+void fl_docCsInit( void )
+{
+#ifdef COTULLA
+  volatile void *myMSC2ptr;
+  unsigned long msc2Val;
+  
+  myMSC2ptr = (volatile void *)ioremap_nocache(MSC2_CNTR_REG_ADDR, 0x1000);
+  /* MSC2 Static Memory Control Register - 16-bit mode for CS5 */
+  msc2Val = readl( myMSC2ptr + MSC2_OFFSET );
+  writel( ((msc2Val & 0x0000FFFF) | MCS5_INIT_VAL), myMSC2ptr + MSC2_OFFSET );
+/*  *(myMCS5 + 4) = MCS5_INIT_VAL; */
+  iounmap( (void *)myMSC2ptr ); 
+#endif
+}
+
+/* Initialize the DiskOnChip Memory and Chip Select if needed */
+int fl_mapPhysMem( unsigned long winl, unsigned long winh )
+{
+  unsigned long docSize = FL_DOC_WIN_SIZE + (winh - winl);
+  unsigned long docAddr = winl;
+
+  /* Init DiskOnChip CS in H/W if needed */
+  fl_docCsInit(); 
+
+#if 0
+  if( !request_mem_region( docAddr, docSize, "fla") ) {
+    printk(KERN_ERR "fl_mapPhysMem: request region failure %lx\n",docAddr);
+    return 1;
+  }
+#endif
+  
+  /* Get Mapped address */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+  fl_virl = (void *)ioremap_nocache( docAddr, docSize );
+#else
+  fl_virl = docAddr;
+#endif  
+  fl_virh = fl_virl + (docSize - FL_DOC_WIN_SIZE);
+  return 0;
+}
+
+/* Release the DiskOnChip Memory */
+void fl_releasePhysMem( unsigned long winl, unsigned long winh )
+{
+#if 0
+  unsigned long docSize = FL_DOC_WIN_SIZE + (winh - winl);
+#endif  
+  if( fl_virl ) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+    iounmap( fl_virl );
+#endif    
+#if 0    
+    release_mem_region( winl, docSize );
+#endif    
+  } 
+}
+
+/* Initialize the driver, register major and link into gendisk_list. */
+#if defined(__init)
+int __init fl_init(void)
+#elif defined(__initfunc)
+__initfunc( int fl_init(void))
+#else
+int fl_init(void)
+#endif
+{
+	int result = 0;
+	int i;
+
+#ifdef DEEPDEBUG
+	printk(KERN_DEBUG"linuxdrv begin\n");
+#endif	/* DEEPDEBUG */
+
+	// Map Physical Memory of the DiskOnChip window
+	if( fl_mapPhysMem( fl_winl, fl_winh ) ) {
+		printk(KERN_ERR"Cannot Map M-Systems DiskOnChip Memory\n");
+		goto fl_init_error;
+	}
+	
+	// Copy the (static) cfg variables to public prefixed ones to allow snoozing with a debugger.
+	// major device number
+	flMajor = major;		/* 100 by default */
+	Fl_read_ahead = rahead;	/* 0 by default */
+
+	// set default blksize and hardsect if they where not passed as module parameters
+	for (i = 0; i < MAX_DEVICES; i++)
+	{
+		if (!blksize[i])
+			blksize[i] = 1024;
+		if (!hardsect[i])
+			hardsect[i] = 512;
+	}
+
+	spin_lock_init(&o_c_lock);
+
+	// can we initialize OSAK?
+	if(!FlInit())
+	{
+		printk(KERN_ERR DEVICE_NAME": Cannot initialize M-Systems DOC 2000 OSAK\n");
+		goto fl_init_error;
+	}
+
+	DebugPrintk("fl_init: FlInit OK\n");
+
+	/* find out how many devices we have */
+	if(!(fl_gendisk.nr_real=FlGetNumberOfDevices(MAX_DEVICES)))
+	{
+		printk(KERN_ERR DEVICE_NAME": Cannot find any M-Systems flash devices\n");
+		goto fl_init_error;		
+	}
+	DebugPrintk("fl_init: Found %d devices\n",fl_gendisk.nr_real);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)
+	fl_gendisk.max_nr = fl_gendisk.nr_real;  // for the sake of parnoia...
+#endif
+	// partition array must be allocated here, setup_dev() accesses it before calling fl_genit()
+	if (!(Fl_partitions = ckmalloc(MINOR_NR(fl_gendisk.nr_real) * sizeof(struct hd_struct), GFP_KERNEL)))
+		goto fl_init_error;
+
+	// allocate per device dynamic structures, these are done here so we can release ckmalloc()
+	if (!(Fl_devices = ckmalloc(fl_gendisk.nr_real * sizeof(FL_DEV), GFP_KERNEL)))
+		goto fail_malloc;
+
+	// allocate per device * minor blk dynamic arrays
+	if (!(Fl_blksize_size = ckmalloc(MINOR_NR(fl_gendisk.nr_real) * sizeof(unsigned int), GFP_KERNEL)))
+		goto fail_malloc;
+
+	if (!(Fl_hardsect_size = ckmalloc(MINOR_NR(fl_gendisk.nr_real) * sizeof(unsigned int), GFP_KERNEL)))
+		goto fail_malloc;
+
+	if (!(Fl_blk_size = ckmalloc(MINOR_NR(fl_gendisk.nr_real) * sizeof(unsigned int), GFP_KERNEL)))
+		goto fail_malloc;
+
+	// setup gendisk structure with partition information
+	fl_gendisk.part = Fl_partitions;
+
+	/* ok, we have at least one DOC, proceed */
+	printk(KERN_INFO DEVICE_NAME": Flash disk driver for DiskOnChip\n");
+	printk(KERN_INFO DEVICE_NAME": DOC device(s) found: %d\n", fl_gendisk.nr_real);
+
+	// Register your major, and/or accept a dynamic number
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	if ((result = devfs_register_blkdev(flMajor,DEVICE_NAME,&fl_fops)) < 0)
+#else
+	if ((result = register_blkdev(flMajor,DEVICE_NAME,&fl_fops)) < 0)
+#endif
+	{
+		printk(KERN_WARNING DEVICE_NAME": can't get major %d\n",flMajor);
+		goto fail_malloc;
+	}
+
+	/* save major if we are using a dynamic major */
+	if (flMajor == 0)
+	{
+		flMajor = result;			/* dynamic */
+	}
+
+	fl_gendisk.major = flMajor;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	devfs_handle = devfs_mk_dir(NULL, fl_gendisk.major_name, NULL);
+	/* DDD this is in here for debugging */
+	create_proc_read_entry("fl_queue", 0, 0, fl_read_proc, NULL);
+#endif // >= 2.4.0
+
+	printk(KERN_INFO DEVICE_NAME": _init: registered device at major: %d\n",flMajor);
+
+	/* link into global gendisk list */
+	fl_gendisk.next = gendisk_head;
+	gendisk_head = &fl_gendisk;
+
+	fl_geninit(&fl_gendisk);
+
+	return 0;
+
+fail_malloc:
+
+	// Reset global block array entries
+	// QQQ - the first part of this cleanup does not make real sense,
+	//       we have not done the setup until fl_geninit(), and we
+	//       will not be getting to here once we have called it.
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	blk_cleanup_queue(BLK_DEFAULT_QUEUE(flMajor));
+	devfs_unregister_blkdev(flMajor,DEVICE_NAME);
+#else
+	blk_dev[flMajor].request_fn = NULL;
+#endif // >= 2.4.0
+	read_ahead[flMajor] = 0;
+	blk_size[flMajor] = NULL;
+	blksize_size[flMajor] = NULL;
+	hardsect_size[flMajor] = NULL;
+
+	// Failed, free any memory that was allocated and set pointers to NULL
+	lkfree((void **)&Fl_devices);
+	lkfree((void **)&Fl_blksize_size);
+	lkfree((void **)&Fl_hardsect_size);
+	lkfree((void **)&Fl_blk_size);
+	lkfree((void **)&Fl_partitions);
+
+fl_init_error:
+    	fl_releasePhysMem( fl_winl, fl_winh );
+	return(1);
+}
+
+void cleanup_module(void)
+{
+	int             i;
+	struct gendisk**gd;
+	int	bDevice;
+
+	/* first of all, flush it all and reset all the data structures */
+	for (i = 0; i < MINOR_NR(fl_gendisk.nr_real); i++)
+	{
+		fsync_dev(MKDEV(flMajor, i));  /* flush the devices */
+	}
+
+	/* Terminate the request threads. */
+	for (i = 0; i < fl_gendisk.nr_real; i++)
+	{
+		 killoff_thread(Fl_devices+i);
+	}
+
+	for(bDevice=0;bDevice<fl_gendisk.nr_real;bDevice++)
+	{
+		FlDismount(bDevice);
+	}
+
+	/* remove our gendisk structure from the global linked list */
+	for (gd = &gendisk_head; *gd; gd = &((*gd)->next))
+	{
+		if (*gd == &fl_gendisk)
+		{
+			*gd = (*gd)->next;
+			break;
+		}
+	}
+
+	// complain if we didn't find ourselves in gendisk list
+	if (!*gd)
+	{
+		printk(KERN_ERR DEVICE_NAME": cleanup_module: entry in gendisk chain missing!\n" );
+	}
+
+	// reset global blk array entries
+	read_ahead[flMajor] = 0;
+	blk_size[flMajor] = NULL;
+	blksize_size[flMajor] = NULL;
+	hardsect_size[flMajor] = NULL;
+
+	// unregister our device
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	devfs_unregister_blkdev(flMajor, DEVICE_NAME);
+	blk_cleanup_queue(BLK_DEFAULT_QUEUE(flMajor));
+	devfs_unregister(devfs_handle);
+	devfs_handle = NULL;
+	// DDD again, this is for debugging
+	remove_proc_entry("fl_queue", 0);
+#else
+	blk_dev[flMajor].request_fn = NULL;
+	unregister_blkdev(flMajor, DEVICE_NAME);
+#endif	/* >= 2.4.0 */
+
+	/* free our data structures */
+	lkfree((void **)&Fl_blk_size);
+	lkfree((void **)&Fl_blksize_size);
+	lkfree((void **)&Fl_hardsect_size);
+	lkfree((void **)&Fl_devices);
+	lkfree((void **)&Fl_partitions);
+	printk(KERN_INFO DEVICE_NAME": Driver removed.\n");
+}
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
+
+static void spin_lock_init(spinlock_t *splp)
+{
+	splp->lock = 0;
+}
+
+static void spin_lock(spinlock_t *splp)
+{
+	/* spin on bit lock */
+	while (set_bit(0,&(splp->lock)) != 0)/* spin */;
+}
+
+static void spin_unlock(spinlock_t *splp)
+{
+	/* unlock simple bit lock */
+	if (clear_bit(0,&(splp->lock)) == 0)
+	{
+		printk(KERN_ERR DEVICE_NAME": spin_unlock() failed\n");
+	}
+}
+
+/* Signals */
+
+static void siginitsetinv(sigset_t *set, unsigned long mask)
+{
+	*set = ~mask;
+}
+
+static void sigemptyset(sigset_t *set)
+{
+	*set = 0;
+}
+
+/* copy user space to/from kernel space */
+
+static inline unsigned long copy_to_user(void *to,const void *from, unsigned long n)
+{
+	int i;
+	if ((i = verify_area(VERIFY_WRITE, to, n)) != 0)
+		return i;
+	memcpy_tofs(to, from, n);
+	return 0;
+}
+
+static inline unsigned long copy_from_user(void *to,const void *from, unsigned long n)
+{
+	int i;
+	if ((i = verify_area(VERIFY_READ, from, n)) != 0)
+	{
+		return i;
+	}
+	memcpy_fromfs(to, from, n);
+	return 0;
+}
+
+/* I/O requests and locking */
+
+static int end_that_request_first(struct request *req,int uptodate,char *devname)
+{
+	struct buffer_head * bh;
+	int nsect;
+
+	req->errors = 0;
+	if (!uptodate)
+	{
+		printk(KERN_ERR DEVICE_NAME": msys/fl/end_request_1st: I/O error, dev %s (%s), sector %lu\n",kdevname(req->rq_dev), devname, req->sector);
+		if (NULL != (bh = req->bh))
+		{
+			nsect = bh->b_size >> 9;
+			req->nr_sectors--;
+			req->nr_sectors &= ~(nsect - 1);
+			req->sector += nsect;
+			req->sector &= ~(nsect - 1);
+		}
+	}
+
+	if (NULL != (bh = req->bh))
+	{
+		req->bh = bh->b_reqnext;
+		bh->b_reqnext = NULL;
+
+		mark_buffer_uptodate(bh, uptodate);
+		unlock_buffer(bh);
+		if (NULL != (bh = req->bh))
+		{
+			req->current_nr_sectors = bh->b_size >> 9;
+			if (req->nr_sectors < req->current_nr_sectors)
+			{
+				req->nr_sectors = req->current_nr_sectors;
+				printk(KERN_ERR DEVICE_NAME": msys/fl/end_request_1st: buffer-list destroyed\n");
+			}
+			req->buffer = bh->b_data;
+			return 1;
+		}
+	}
+	return 0;
+}
+
+static void end_that_request_last(struct request *req)
+{
+	if (NULL != req->sem)
+	{
+		up(req->sem);
+	}
+	req->rq_status = RQ_INACTIVE;
+	wake_up(&wait_for_request);
+}
+
+#endif	/* LINUX_VERSION_CODE < 2.1.0 */
+
+/*****************	EXPORTED TO TRUEFFS	*****************/
+
+short GetFlDebugParam(void)
+{
+	return fl_debug;
+}
+
+void GetFlParams(unsigned long*p_fl_winl,unsigned long*p_fl_winh,
+	unsigned char*p_fl_is_ram_check,unsigned char*p_fl_nftl_cache,
+	unsigned char*p_fl_8bit_access,unsigned long*p_fl_mtd_bus_access_type,
+	unsigned long*p_fl_verify_write_bdtl,unsigned long*p_fl_verify_write_binary,
+	unsigned long*p_fl_verify_write_other,unsigned long*p_fl_sectors_verified_per_folding)
+{
+	*p_fl_winl=(unsigned long)fl_virl;
+	*p_fl_winh=(unsigned long)fl_virh;
+	*p_fl_is_ram_check=fl_is_ram_check;
+	*p_fl_nftl_cache=fl_nftl_cache;
+	*p_fl_8bit_access=fl_8bit_access;
+	*p_fl_mtd_bus_access_type=fl_mtd_bus_access_type;
+	*p_fl_verify_write_bdtl=fl_verify_write_bdtl;
+	*p_fl_verify_write_binary=fl_verify_write_binary;
+	*p_fl_verify_write_other=fl_verify_write_other;
+	*p_fl_sectors_verified_per_folding=fl_sectors_verified_per_folding;
+}
+
+/* The following are the Linux versions of various things required by the M-Systems OSAK that must be compiled here in the Linux kernel environment. */
+void flDelayMsecs(unsigned milliseconds)
+{
+	register int    i;
+	for (i = 0; i < milliseconds; i++)
+		udelay(1000L);
+}
+
+void flsleep(unsigned long milliseconds)
+{
+	unsigned long deltaj;
+	/* Timeout has to be expressed in jiffies, there are HZ jiffies/sec. 
+	We add one to it anyway, because the "first" jiffy is really some
+	random fraction of a jiffy. */
+	deltaj = 1 + ((HZ * milliseconds) / 1000);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+	/* QQQ: why TASK_UNINTERRUPTIBLE? */
+	current->state = TASK_UNINTERRUPTIBLE;
+	while ((deltaj = schedule_timeout(deltaj)) > 0) /* skip */ ;
+#else
+	current->timeout = jiffies + deltaj;
+	current->state = TASK_INTERRUPTIBLE; /* uninterruptible => no timeout ! */
+	schedule();
+	current->timeout = 0;
+#endif
+}
+
+void *flmemcpy(void *dest, const void *src, size_t length)
+{
+	return(memcpy(dest, src, length));
+}
+
+void *flmemset(void *dest, int value, unsigned int length)
+{
+	return(memset(dest, value, length));
+}
+
+int flmemcmp(const void * dest,const void  *src,size_t count)
+{
+	return(memcmp(dest, src, count));
+}
+
+/*
+ * Do not use isa_xxx() functions in order to access memory because
+ * they are x86 specific and doesn't get proper virtual address from MMU
+ * Instead use the pointer from ioremap_nocache(physAddr) with usual access
+ * functions.
+ */
+void flmemcpy_fromio(void *dest, const void * src, unsigned int length)
+{
+/*#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	isa_memcpy_fromio(dest, (unsigned long)src, length);
+#else
+	memcpy_fromio(dest, src, length);
+#endif
+*/
+	memcpy_fromio(dest, src, length);
+}
+
+void flmemcpy_toio(void *dest, const void * src, unsigned int length)
+{
+/*#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	isa_memcpy_toio((unsigned long)dest, src, length);
+#else
+	memcpy_toio(dest, src, length);
+#endif
+*/
+	memcpy_toio(dest, src, length);
+}
+
+void flmemset_io(void *dest, int value, unsigned int length)
+{
+/*#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+	isa_memset_io((unsigned long)dest, value, length);
+#else
+	memset_io(dest, value, length);
+#endif
+*/
+	memset_io(dest, value, length);
+}
+
+void *flmalloc(unsigned long size)
+{
+	return vmalloc(size);
+}
+
+void flfree(void*addr)
+{
+	vfree(addr);
+}
+
+void FlDebugPrint(char*str)
+{
+	if(GetFlDebugParam())
+	{
+		LOG_DELAY;
+		printk(KERN_DEBUG DEVICE_NAME": %s",str);
+	}
+}
+
+void FlErrorPrint(char*str,int stat)
+{
+	LOG_DELAY;
+	printk(KERN_DEBUG DEVICE_NAME": Error %s: %d\n",str,stat);
+}
+
+#ifdef DEEPDEBUG
+int FlPrintk(const char *fmt, ...)
+{
+	va_list args;
+	char buf[1024];     // hopefully enough, kernel/printk.c thinks so
+	int i;
+
+	va_start(args, fmt);
+	i = vsprintf(buf, fmt, args); 
+	va_end(args);
+	// make sure we have terminated the string
+	buf[i--] = '\0';
+
+	// libosak uses \n\r, this make kerneld unhappy
+	if (buf[i-1] == '\n' && buf[i] == '\r')
+		buf[i--] = '\0';
+	LOG_DELAY;
+	printk(KERN_DEBUG"fl :%s",buf);
+	return(i);
+}
+
+void FlLogData(unsigned short*wBuffPtr,unsigned short wLen,unsigned char fWrite)
+{
+	unsigned short w=0;
+
+	LOG_DELAY;
+	if(fWrite)
+	{
+		printk(KERN_DEBUG DEVICE_NAME": Write %u words\n",wLen);
+	}
+	else
+	{
+		printk(KERN_DEBUG DEVICE_NAME": Read %u words\n",wLen);
+	}
+
+	LOG_DELAY;
+	while(w<wLen)
+	{
+		unsigned short w1;
+
+		for(w1=0;w1<16&&w<wLen;w1++,w++)
+		{
+			printk("%4.4x ",wBuffPtr[w]);
+		}
+		printk("\n");
+	}
+}
+#endif	/* DEEPDEBUG */
+
+unsigned char flreadb(volatile void *addr)
+{
+	return(readb(addr));
+}
+
+unsigned short flreadw(volatile void *addr)
+{
+	return(readw(addr));
+}
+
+unsigned long flreadl(volatile void *addr)
+{
+	return(readl(addr));
+}
+
+void flwriteb(unsigned char value, volatile void *addr)
+{
+	writeb(value, addr);
+}
+
+void flwritew(unsigned short value, volatile void*addr)
+{
+	writew(value, addr);
+}
+
+void flwritel(unsigned long value, volatile void *addr)
+{
+	writel(value, addr);
+}
+
+unsigned int flRandByte(void)
+{
+	struct timeval time;
+	do_gettimeofday(&time);
+	return (time.tv_usec >> 1) & 0xff;
+}
+
+void *flAddLongToFarPointer(void*ptr, unsigned long offset)
+{
+	return (void*)(((unsigned long)(ptr)) + offset);
+}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
+static struct semaphore osak_sem;
+#else
+static struct semaphore osak_sem=MUTEX_LOCKED;
+#endif
+
+void flSysfunInit(void)
+{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
+	sema_init(&osak_sem,1);
+#endif
+}
+
+int flCreateMutex(int*mutex)
+{
+	up(&osak_sem);
+	return 0;
+}
+
+void flDeleteMutex(int*mutex)
+{
+	up(&osak_sem);
+}
+
+int flTakeMutex(int*mutex)
+{
+	down(&osak_sem);
+	return 1;
+}
+
+void flFreeMutex(int*mutex)
+{
+	up(&osak_sem);
+}
diff -Naur linux-2.4.23/drivers/block/doc/fldrvlnx.h linux-2.4.23_TS_2_5/drivers/block/doc/fldrvlnx.h
--- linux-2.4.23/drivers/block/doc/fldrvlnx.h	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/block/doc/fldrvlnx.h	Tue Aug 10 15:17:44 2004
@@ -0,0 +1,61 @@
+/*
+ * $Log: fldrvlnx.h,v $
+ * Revision 1.2  2004/08/10 22:17:44  eddie
+ * This library is required to compile the disk on chip module.
+ *
+ */
+
+/***********************************************************************************/
+/*                        M-Systems Confidential                                   */
+/*           Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2001            */
+/*                         All Rights Reserved                                     */
+/***********************************************************************************/
+/*                            NOTICE OF M-SYSTEMS OEM                              */
+/*                           SOFTWARE LICENSE AGREEMENT                            */
+/*                                                                                 */
+/*      THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE                 */
+/*      AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT           */
+/*      FOR THE SPECIFIC TERMS AND CONDITIONS OF USE,                              */
+/*      OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE:                               */
+/*      E-MAIL = info@m-sys.com                                                    */
+/***********************************************************************************/
+
+#ifndef __FLDRVLNX__H__
+#define __FLDRVLNX__H__
+
+#include <linux/sockios.h> /* for SIOCDEVPRIVATE */
+
+typedef enum{FL_IOCTL_GET_INFO = SIOCDEVPRIVATE,
+             FL_IOCTL_DEFRAGMENT,
+             FL_IOCTL_WRITE_PROTECT,
+             FL_IOCTL_MOUNT_VOLUME,
+             FL_IOCTL_FORMAT_VOLUME,
+             FL_IOCTL_BDK_OPERATION,
+             FL_IOCTL_DELETE_SECTORS,
+             FL_IOCTL_READ_SECTORS,
+             FL_IOCTL_WRITE_SECTORS,
+             FL_IOCTL_FORMAT_PHYSICAL_DRIVE,
+             FL_IOCTL_FORMAT_LOGICAL_DRIVE,
+             FL_IOCTL_BDTL_HW_PROTECTION,
+             FL_IOCTL_BINARY_HW_PROTECTION,
+             FL_IOCTL_OTP,
+             FL_IOCTL_CUSTOMER_ID,
+             FL_IOCTL_UNIQUE_ID,
+             FL_IOCTL_NUMBER_OF_PARTITIONS,
+             FL_IOCTL_INQUIRE_CAPABILITIES,
+             FL_IOCTL_SET_ENVIRONMENT_VARIABLES, /* No longer supported */
+             FL_IOCTL_PLACE_EXB_BY_BUFFER,
+             FL_IOCTL_WRITE_IPL,                 /* No longer supported */
+             FL_IOCTL_DEEP_POWER_DOWN_MODE,
+             FL_IOCTL_EXTENDED_ENVIRONMENT_VARIABLES, 
+             FL_IOCTL_VERIFY_VOLUME,
+             FL_IOCTL_SET_ACCESS_ROUTINE,
+             FL_IOCTL_GET_ACCESS_ROUTINE,
+             FL_IOCTL_EXTENDED_WRITE_IPL
+} flIOctlFunctionNo;
+
+#ifndef FLASH_MAJOR
+#define FLASH_MAJOR	100
+#endif
+
+#endif	/*#ifndef __FLDRVLNX__H__*/
diff -Naur linux-2.4.23/drivers/block/doc/libosak linux-2.4.23_TS_2_5/drivers/block/doc/libosak
--- linux-2.4.23/drivers/block/doc/libosak	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/block/doc/libosak	Tue Aug 10 15:17:44 2004
@@ -0,0 +1,569 @@
+!<arch>
+/               1037556717  0     0     0       3916      `
+¹��������������������������������^�^�c´c´c´c´c´u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�€¬€¬€¬€¬€¬€¬€¬�������˜Ä§T§T§TÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæàæàö,ö,ö,ö,? ? ? ? CØP|P|P|P|P|P|P|P|P|P|P|P|P|P|P|P|P|P|ƒÄƒÄƒÄ¸è¸è¸èDDDDDDDD—¸—¸—¸—¸—¸—¸—¸©h©h©h©h©h©h©h©h©h©h©h©h©h¿P¿P¿P¿P¿PinitDoneinitGlobalVarsDoneflMsecCounterflSectorsVerifiedPerFoldingflSetEnvVolumeflInitGlobalVarsflMaxUnitChainflMarkDeleteOnFlashflSuspendModeflExitflPolicyflVerifyWriteflBusConfigflSetEnvSocketflSetEnvAllflSetDocBusRoutineflGetDocBusRoutinevolshandleConversionTableflMutexdismountVolumesetBusyfindSectorabsMountVolumetffscpytffssetreplaceFATsectorflBuildGeometrybdCallflInittffscmpnoOfDrivesdocSocketInitdocMtdVarsgetExbInfoexbswaitForFullBufferfirstTimeInitplaceExbByBuffernoOfSocketsflSocketNoOfflSocketOfflBufferOfflReadBackBufferOfflWriteProtectedflGetMappingContextflMapflSetWindowBusWidthflSetWindowSpeedflSetWindowSizeflSocketSetBusyflIntervalRoutineflNeedVccflDontNeedVccflSetPowerOnCallbackupdateSocketParametersflExitSocketflInitSocketsnoOfMTDsflFlashOfflIntelIdentifyflIntelSizeflIdentifyFlashmtdTabledataErrorObjectmarkUnitBadflPreMountnoOfTLstlTableflMountflFormatnoFormatflIOctlffCheckBeforeWriteflffControlflffInfoflDocMemWinSizeNoShiftflDocMemWinSizeSingleShiftflDocMemWinSizeDoubleShiftflWrite16bitDummyflWrite16bitUsing16bitsNoShiftflWrite16bitUsing32bitsSingleShiftflRead16bitDummyflRead16bitUsing16bitsNoShiftflRead16bitUsing32bitsSingleShiftflWrite8bitUsing8bitsNoShiftflWrite8bitUsing16bitsNoShiftflWrite8bitUsing16bitsSingleShiftflWrite8bitUsing32bitsSingleShiftflWrite8bitUsing32bitsDoubleShiftflRead8bitUsing8bitsNoShiftflRead8bitUsing16bitsNoShiftflRead8bitUsing16bitsSingleShiftflRead8bitUsing32bitsSingleShiftflRead8bitUsing32bitsDoubleShiftfl8bitDocReadNoShiftfl8bitDocWriteNoShiftfl8bitDocSetNoShiftfl8bitDocReadSingleShiftfl8bitDocWriteSingleShiftfl8bitDocSetSingleShiftfl8bitDocReadDoubleShiftfl8bitDocWriteDoubleShiftfl8bitDocSetDoubleShiftfl16bitDocReadNoShiftfl16bitDocWriteNoShiftfl16bitDocSetNoShiftfl16bitDocReadNoShiftIgnoreHigher8bitsfl16bitDocWriteNoShiftIgnoreHigher8bitsfl16bitDocSetNoShiftIgnoreHigher8bitsfl16bitDocReadSingleShiftfl16bitDocWriteSingleShiftfl16bitDocSetSingleShiftfl16bitDocReadSingleShiftIgnoreHigher8bitsfl16bitDocWriteSingleShiftIgnoreHigher8bitsfl16bitDocSetSingleShiftIgnoreHigher8bitssetBusTypeOfFlashflDecodeEDCflCheckAndFixEDCswapUnitsgetAnandRecffflRegisterNFTLtoUNALfromUNALtoUNALLONGfromUNALLONGflDosFormatbdkVolbdkVolsbdkInitbdkRetrieveHeaderbdkGetBootPartitionInfobdkCopyBootAreaInitbdkCopyBootAreaBlockbdkUpdateBootAreaInitbdkUpdateBootAreaBlockbdkEraseBootAreabdkCreateBootAreabdkGetProtectionTypebdkInsertKeybdkRemoveKeybdkLockEnablebdkChangeKeybdkSetProtectionTypebdkCallcheckWinForDOCflRegisterDOCSOCflRegisterDOC2000retrieveHeaderinitCatchflRegisterINFTLsetIplSizePlusreleasePowerDownchkASICmodecheckWinForDOCPLUSchangeInterleavedocPlusIdentifyflRegisterDOCPLUSSOCflRegisterDOCPLUSsetStickyBitprotectionBoundriestryKeyprotectionKeyInsertprotectionKeyRemoveprotectionTypeprotectionSetFlInitFlMountFlGetProtectionFlIsExistFlIsReadProtFlIsWriteProtFlDismountFlGetNumberOfDevicesFlGetNumberOfSectorsFlReadFlWriteFlRemoveProtectionFromParmFlIoctlflSetEnvVarflUse8BitflUseNFTLCacheflUseisRAMflRegisterComponentsblockdev.o/     1037556705  0     0     100644  20164     `
+ELF˜04(UWVSƒì‹l$0ŠD$(…í‹\$ ‹t$,¶|$$ˆD$uƒìhéP�vƒû	tsƒû	wƒûtƒût0ëz‰öƒûf„ƒ�ûÊt3ëe��Fÿƒøvpƒìh@é�v÷ÆtXƒìh€éô�vƒþtC…öt?ƒþt:ƒìhÀéÖ�ƒþv'ƒþt"ƒìhÀé¾�ƒþvƒìh é«‰öƒûfwƒûesbƒû	‡©ƒû‚ ëv‰ö�ûË‡��ûÉ‚„€|$w�ûËu€|$u
+ƒìh`ëQ‰ú€úvyƒìhÀë@�v‰ù€ùv
ƒìhÀë,�v€|$ÿtQƒìh ë�v‰ø,ÿu€|$ÿt7ƒìh`èüÿÿÿƒÄ¸3éÕ�ƒìhÀèüÿÿÿƒÄ¸jéº‰öèüÿÿÿƒû„Bƒûw9ƒû„¬ƒûwƒûtrƒû„�élƒû„£ƒû„²éU��ûÉ„à�ûÉwƒû	„§ƒûe„é)��ûÊ„Ü�ûË„àé�v¶‰ò‰Eˆé�¶‰ñ‰Eˆ
éï�¶‰E‰ð¢éØ‰ö¶‰ò‰Eˆé¿�¶‰ñ‰Eˆ
é§�…öu€=tèüÿÿÿ¶‰E‰ð¢é~‰ù¶D$¶Ñ¶„�‰Eëg�¡‰E‰5ëV‰ù¶T$¶Á�Âë�‰ù¶T$¶Á�DÂë‰ù¶Á�Å¹¶‰U‰òˆë�‰ù¶ÁÁà¹‹‰U‰41ÀƒÄ[^_]ÃUWVSƒìŠD$$‹t$ ˆD$1Û1À�þÊ‹l$(‹|$,w-�þÉs1ƒþfw`ƒþer[ƒìWUhÿ¶D$#PVèüÿÿÿƒÄ ëx�þËtë6‰öƒìWUj¶D$#PVèüÿÿÿƒÄ €ûwQ…ÀuMƒìWU¶ÃP¶D$#PVCëÜ‰ö€|$ÿtƒìhàèüÿÿÿƒÄ¸3ë‰öƒìWUhÿhÿVèüÿÿÿƒÄ ƒÄ[^_]ÃUWVSƒì‹t$ ƒþe‹l$$‹|$(r4ƒþfv�þËw'�þÉr1Û�WU¶ÃPVCèüÿÿÿƒÄ€ûw…Àtçë�ƒìWUhÿhÿVèüÿÿÿƒÄ ƒÄ[^_]ÃVSQŠ\$€û‹t$vƒìh èüÿÿÿƒÄ¸jé�‰ö…öuƒìh€èüÿÿÿƒÄ¸3ës�èüÿÿÿƒì¶ÛSèüÿÿÿ‹V ‰�ˆ‹V‰�Œ‹V‰��‹V‰�”‹V‰�˜‹V‰� ‹V‰�œ‹V‰�¤‹V$‰�¨Ç�1ÀƒÄZ[^Ã‰öVSVŠ\$€û‹t$vƒìh èüÿÿÿƒÄ¸jéŽ‰ö…öuƒìh€èüÿÿÿƒÄ¸3ëq�èüÿÿÿƒì¶ÛSèüÿÿÿ‹�ˆ‰V ‹�Œ‰V‹��‰V‹�”‰V‹�˜‰V‹� ‰V‹�œ‰V‹�¤‹€¨‰F$‹�‰‰V1ÀƒÄ[[^ÃVSRƒ=„�Ç1öƒìVèüÿÿÿ‰Á1ÒƒÄ·ÂBf�ú«Ævñ�µÇ€1Ò‰Á»�v·ÂBÈfƒúÆvð1Ò�õ»‰ö·ÂBÈfƒúÆvðFƒþ~ŽÇ@ÆÆÆX[^Ã�vSƒì‹\$ÿs8ÿsxèüÿÿÿƒÄ…Àuƒì‹C8PÿPLƒÄ€1ÀƒÄ[Ã�v‹D$€ þÃWVSSŠ
ŠD$ŠT$€ùˆD$ˆT$w0¶Ñ�ÒÁà)Ðºö‚ t‰Ó�A€ùw¶Ñ�ÒÁà)Ðöƒ ué€ù ¸to¶t$¶D$�µˆŒ¶Á�ÀÁá)Á�öÁàÁá)ð�y0»�ÂÁà‰—‹Tp‹D0‰‰Tp¸ŠT$ˆTŠT$ˆTÆ 1ÀY[^_Ã�vUWVSƒì¶\$,�ÛÁà)Ø�…PèüÿÿÿƒÄ…Àu^¿�,�‰ú¶Â�tŠ†<ÿt6¶À�ÀÁâ)Â�•ƒì�ƒPèüÿÿÿƒÄ…ÀuÆ†ÿÆƒG‰ø<v°1ÀƒÄ[^_]Ã‰öSƒì‹\$ötƒìÿs<ÿS\ƒÄÆ 1ÀƒÄ[Ã�WVS1ÿƒ|$‹\$‹t$uTƒìÿs4èüÿÿÿƒÄ…Àu
+¸	ëu�v‹Cxƒì‰òˆPjÿsxèüÿÿÿYÿsxèüÿÿÿƒÄötJƒìjÿs<ÿSX‰Çë8�vötƒìjÿs<ÿSX‰ÇƒÄƒìÿsxèüÿÿÿXZjÿsxèüÿÿÿ^ÿs4èüÿÿÿƒÄ‰ø[^_Ã‰öƒì‹D$jÿt$ÿp<ÿPDƒÄÃ�WVS‹t$‰óƒì�ëiÛ‹¯øŠVèüÿÿÿÁûƒÄ…À…ðƒìÿv8j�F<P¶FAPSèüÿÿÿƒÄ …À…ÎƒìÇFjVèüÿÿÿ‰ÃƒÄ…Ût�ûtf�»þUªtÇ†€ÇF|ëz�ƒìÇ†€ÇF|�ƒ¦PèüÿÿÿƒÄ…ÀuRƒì�»ªWèüÿÿÿƒÄ…Àuƒì�ƒ®PèüÿÿÿƒÄ…Àt&ƒìWèüÿÿÿ‰F|�ƒ®‰$èüÿÿÿ‰†€€ƒÄÇFÇF€1À[^_ÃUWVSƒìH‹D$`ÇD$Çÿt$\èüÿÿÿƒÄ…À…|ÇD$ÇD$�vÇD$ƒìÿt$ÿt$\èüÿÿÿ‰ÃƒÄ…Û„c�û„sf�»þUª…Å‹l$…íÇD$…“�l$(‹t$Áæ�|$ �´3¾ü¹ó¥ŠD$$<t<þÈt
+ëD<t(<u<ÇD$ƒìUèüÿÿÿ‹T$`‹L$d‰BƒÄ‰ë�ÇD$ƒìUèüÿÿÿ‰D$$ƒÄÿD$ƒ|$w‹|$…ÿu‹t$…ö„qÿÿÿÿD$ƒ|$w‹\$…Ûuƒ|$„ûþÿÿƒì‹\$XÿsSèüÿÿÿ‰ÆƒÄ…ö¸„B�þ¸„1€>ét+‹%ÿÿ=ë�tƒìhÀèüÿÿÿƒÄ¸
+é�vƒì�FPèüÿÿÿƒÄf=tC¸éâ�ƒì‹D$\ÿp<ÿP\ƒÄ¸éÇ‰öƒì‹T$\ÿr<ÿR\ƒÄ¸é«‰ö¶F
‹L$P‰A¶F‰A‹\$P·V·NS�‰K ‰S‰C¶F¯ÁÂƒì‰S$�FPèüÿÿÿ·ÀÁàHÁè	@‰C(C$‰C,�F‰$èüÿÿÿ·ÀƒÄ…Àu‹F ‹T$PB+B,‰Ñ1Ò÷q@=ô‰Aw€	‹\$P‹CÁà	‰CÇC0€1ÀƒÄ<[^_]Ã�vƒì‹T$ƒÂ‹D$Rÿp<ÿP`ƒÄÃ�vUWVS�ì˜‹„$°‹hÇD$ŠÆD$"ÆD$!‹E‰D$ŠEˆD$ ŠEˆD$6ÆD$I‹E‰D$L‹E‰D$Tƒâ‹E f‰D$X¶Ú‹E$ÇD$$ÇD$(‰D$\ÆD$,ÇD$DÆD$5SèúÿÿƒÄ…À…7�ÛÁà)Ø‹”$¤�4…÷B	�¾tRÿ¶8�D$PSèüÿÿÿƒÄ…Àtzéô�ƒìÿ¶8j�G<PSSèüÿÿÿÇD$,ƒÄ ƒøtƒøu-‹”$¤öBt Pÿ¶8�D$PSèüÿÿÿÇD$ƒÄë�ÇGÇGÇG€…Àu‹\$…ÛuƒìWèüÿÿÿƒÄ…Àug‹Gd…Àtƒìÿw<ÿÐƒÄ…ÀuQ‹„$¤ö@uBQj�EP�D$u�\$lPÿ‹E‰„$€ŠEˆ„$„ÆD$xXZS�G<PèüÿÿÿƒÄ…Àu1À�ÄŒ[^_]Ã‰öUWVSƒìl‹„$„Šƒâ‹pˆT$ÇD$‹V…Òu¸3éÇ�‹Œ$„‹Aƒà	ƒø	u
+‹A‰D$ë	�ÇD$ÿÿÿÿŠˆD$ŠFˆD$ŠFˆD$‹F‰D$‹F‰D$‹F ‰D$@‹F$‰D$Hf‹F(f‰D$L‹F,‰D$PŠFˆD$<ŠFˆD$=‹”$„ŠBˆD$ ¶^Áã^P�kàj�E	P�D$7PÿŠCäˆD$:‹Cð‰D$@ŠCôˆD$DƒÄj�EP�D$-PÿŠCýˆD$9_¶\$Sè±÷ÿÿƒÄ…À…à�ÛÁà‹Œ$„)ØöA�<…u‹^…Ûu‹F…ÀuÇD$8ë/‰ö‹F…Àu"·FPÿvÿvWèüÿÿÿƒÄ…À…‡‹‡„‰D$8Qÿw8�D$P¶\$SèüÿÿÿƒÄ…À…^ÆD$1À:F‹nƒÛ‰ÚÁâ‰\$‰$�€|$tƒì¶D$Pÿt$èöÿÿƒÄ…À…¶D$‹$¶”�ÒÁà)Ð�…ƒì�»Wèüÿÿÿ‰D$ƒÄ…Àuq‹ƒd…Àtƒìÿ³<ÿÐ‰D$ƒÄ…ÀuQ÷EtƒìU�G<Pèüÿÿÿ‰D$ƒÄ‹T$…ÒuƒìWèüÿÿÿ‰D$ƒÄ‹D$…ÀuþD$ŠD$ƒÅ :F‚2ÿÿÿ‹\$…Ûuf‹N…Ét4¶T$�ÒÁà)Ðƒì�<…·FP·FPÿvÿvWèüÿÿÿƒÄ …Àu-ƒìWèÞôÿÿƒÄ…Àu‹G8‹�„…ÒtƒìPÿÒƒÄë�v1ÀƒÄl[^_]Ã‰öWVS‹\$‹D$ƒì‹xÿs8‰Øj-�s<ViÀ‹¯øŠ¶SAÁèR¶ÀPèüÿÿÿƒÄ …ÀuQÇCÇCÇC€öGt1ƒìSèüÿÿÿƒÄ…Àu#ƒìWVèüÿÿÿƒÄ…ÀuƒìSèüÿÿÿƒÄ…Àu1À[^_ÃVSƒì‹\$‹t$ ÿs<ÿSh‹SƒÄ9ÐwÇF¸ë�)Ð‰F1ÀY[^Ã�UWVSƒì‹|$ ‹l$$‹]‹WP_…Ò‹utEÿuÿuSÿw<ÿÒ‰ÆƒÄƒþuƒìÿw<ÿWh]ƒÄ9ØƒŠ‰ðé…�¸ë}�¸ëu�‹E9Â‰D$ÇEs`‰öƒìSWèüÿÿÿƒÄ…Àt=tÄRhPVÿëƒìÿw<ÿWhƒÄ9Øv¬PhjVÿƒÄ‹E@‰EC�Æ;D$r¢1ÀƒÄ[^_]ÃUWVSƒìÿt$,ÿt$,èüÿÿÿ‰ÁƒÄ…É„�ù„‹T$ 1Àö”ÀƒÀfƒøf‰D$
+u‹D$$+BÁà
+�Xº«ªªª‰Ø÷âÑêë�v‹T$$‹D$ +PÁâf‹|$
+‹D$ f¯ú�jþ¯h�çÿh,f�ÿý‡™‰ö‰ûfÑë·Ûƒì�Pèüÿÿÿ‰ÆX\$4SèüÿÿÿƒÄ÷ÇtfÁîfÁèë‰öfƒ|$
+u�æÿ%ÿf…ötf…ÀuQ‹T$$ÿrUÿr<ÿRTƒÄ…Àu.ƒìÿt$,ÿt$,èüÿÿÿƒÄ‰Áf|$
+‹D$ hf�ÿý†iÿÿÿ1ÀƒÄ[^_]Ã�vUWVSƒì‹D$$‹p‰t$‹l$ ‹E‰$‹T$$‹J‰Ã‹BË‰D$;]s]�‹U9ÐvS1ÿ;|$sBë�‹U�9Ór;]sQVSUèüÿÿÿƒÄGC�Æ;|$rÙ‹D$$‹@‰D$‹E‰$‹T$$‹J‹$‹t$Ë‹EL…Àt‹T$$ÿrÿrSÿu<ÿÐƒÄ…Àt>ë>‹T$$ÇB;D$s+�vRVSÿu<ÿUHƒÄ…Àu‹T$$‹B@‰BC�Æ;D$rØ1ÀƒÄ[^_]Ã‰öƒì‹L$‹T$‹ABÿqPÿr<ÿRTƒÄÃ�Sƒì�D$‹T$‹\$P‹CBPÿr<ÿRDƒÄ…Àt=u¸ë�‹D$‰C1Àë�¸ƒÄ[Ã‰öWVS‹T$‹D$ƒì‹XÿrRèüÿÿÿ‰ÆƒÄ…ö¸t�þ¸tü¹	‰ßó¥1À[^_Ã�vVS�ì$‹œ$0‰Ø-iÀ‹¯øŠÁø‰$‹C÷Ø‰D$�D$ ÇD$‰D$ƒì�t$VSèëûÿÿƒÄ…ÀuHƒìj�„$ÒPèüÿÿÿZYÿs|�„$ÖPèüÿÿÿYXÿ³€�„$ÚPèüÿÿÿ€#ïXZVSè¿ýÿÿƒÄ�Ä$[^Ã�vVSS‹T$‹B‹‹p‹B�ñCMœ&�öÙûØ
ƒø‹\$t5ƒør\ƒø…‡‹C|9Èu9³€t…Àul‹‹€…Éub€#ï1Àëh�v9K|uS9³€uKƒìÇƒ€ÇC|SèÙþÿÿƒÄë9‹S|…Òu%‹ƒ€…Àuƒì‰K|‰³€Sè±þÿÿƒÄ€ë�¸ë�¸[[^Ã�v‹D$‹@x‹@,Áà‹T$‰1ÀÃ‰öVSV‹t$‹V8‹\$‹Kf‹f‰‹B‰A·B$¯B‰A‹B‰A¿B,‰A¶Bƒøw6ÿ$…�vÆAë&‰öÆAë‰öÆAë‰öÆAë‰öÆAë‰öÆAƒì�CPVègÿÿÿƒÄ1À[^Ã�vUWVSƒì‹l$ ‹t$$‹]8‹N‹~·C$�¯C9Â~	¸3ëH‰ö‹C‰D$1Ò‰È÷t$)T$;|$¸3(ƒì·FP·FPÿvÿvÿu8ÿS@‰ÂƒÄ 1À…Ò”ÀH!ÐƒÄ[^_]Ã‰öUWVSƒì‹l$ ‹t$$‹]8‹N‹~·C$�¯C9Â~	¸3ëF‰ö‹C‰D$1Ò‰È÷t$)T$;|$¸3&ƒì·FPÿvÿvÿvÿu8ÿSD‰ÂƒÄ 1À…Ò”ÀH!ÐƒÄ[^_]ÃUWVSƒì‹|$ ‹_8·S$¯S‹t$$‰Ð1Ò÷s‹n‰Án9Í¸3 U·FP·FPÿw8ÿSH‰ÂƒÄ1À…Ò”ÀH!ÐƒÄ[^_]Ã‰öƒì‹D$©‹L$tƒìhèüÿÿÿƒÄ¸ë4�v‹QX…Òtƒì·ÀPÿt$QÿÒƒÄë‰öƒìh@èüÿÿÿƒÄ¸jƒÄÃ�vƒì‹L$¶Aƒøt,ƒø|'ƒø"‹QT…Òtƒìÿt$(j·D$,Pÿt$,QÿÒƒÄ ë¸jƒÄÃ�v‹T$‹ƒèƒø	‹L$ÇwLÿ$… �‹Id…Éë!�‹Ahë�vöA.ë‰ö‹Ip…Éë	�‹�€…ÀtÇÃ�vŠAƒè<wÇÃ�vWVS‹D$ ‹|$H‹\$‹t$ÇuHÇ>k>‹D$1Ò÷ñ…Ò‰„•@‰‹¯È1Ò‹D$÷ñ…Ò‰t@‰‹¯È1Ò‹D$÷ñ‰ëk�vÇ‹Áá‹D$1Òë�‹Ñà‰‹¯È1Ò‹D$÷ñƒø?‰wæ1Ò‹D$÷ñ…Òt.‹@‰‹¯È1Ò‹D$÷ñ…Ò‰t�P‰¯‹D$‰Ó1Ò÷ó‰Á‰[^_ÃUWVSƒì|‹„$”‹xÆD$‹‹¬$�‰D$P÷EuƒìUè—êÿÿƒÄ…À…ÆD$�D$0‰D$\ƒì�D$XPUèÝûÿÿƒÄ…À…ò‹D$0f‰G‹D$4f‰G‹D$8‰GŠD$2ˆGPj
+j�wVÿƒÄj
+j�_"SÿƒÄjhVÿƒÄjhSÿ[^�GPUèNûÿÿƒÄ…Àuƒì�D$(Pÿu<ÿUlƒÄ…Àuj‹D$ ‰‹D$$ƒì‰Gj�G4P�G0P�G,Pÿt$<èüÿÿÿ‹D$X™÷|$T‹L$H‹U8‰Ã¯Z‰È1Ò÷ó¹
+1Ò÷ñˆÐ@ˆGƒÄ €|$uƒìUè­éÿÿƒÄ1ÀƒÄ|[^_]ÃUWVSƒì,‹|$DŠƒàˆD$
‹%ð‰Æ‹1íÁî…Ò‹\$@u
èüÿÿÿ…À…w‰ð…íˆD$…‰ŠD$
:s€|$v
+¸éL¶D$¶T$
Š”��ƒoþÿÿ=ÆwŠT$
€D$ë1�v€úÿ¸„�ƒCýÿÿƒøbw€|$¸…÷ÆD$¶Ò�ÒÁà)Ð�,…P¶D$PjUèüÿÿÿŠUƒÄ÷Â‰ÆˆÑtO�ƒ6ýÿÿƒøv8�û+t0�ûÌt(�û/t �û0t�û1t�ûÅt�ûÆu¾éG‰ö�ƒoþÿÿ=ÆwC�ƒþÿÿƒøv
+Æ…ˆÿŠMƒáuƒìUèøçÿÿ‰ÆƒÄ…ö…Vÿu8WSèüÿÿÿéë�v�ƒCýÿÿƒø{wYÿ$…P‰öƒâ„·ƒìUèæçÿÿƒÄé¦‰öƒâuƒìUèšçÿÿ‰ÆƒÄë�v1ö…ö„‚ƒìUè±çÿÿƒÄé’�ˆÐƒà„Àt]ƒâub�û-tZ�û.tR�û/tJ�û2tB�û3t:�û0t2�û1t*�û,t"�ûÍt�û5t�û6t
+¾7é!�ƒCýÿÿƒø{‡
ÿ$…@‰öƒì�GPUèêÿÿéê‰öƒìUèüÿÿÿéÚ‰ö1öéÞ�ƒìÿwÿ7èüÿÿÿ‰$èüÿÿÿé¶‰ö‹Ut…Ò„a�GP�GPÿwÿu<ÿÒé”ƒìWUèÎìÿÿé…�ƒìWUèÚìÿÿéu�ƒìWUè¦îÿÿée�ƒìWUèšñÿÿéU�ƒì·GP·GPÿwÿwUèüÿÿÿ‰ÆƒÄ é>�ƒìWUèúñÿÿé!�ƒìUèüÿÿÿé‰öƒìWUèòÿÿé�ƒìWUè:õÿÿéñ�ƒìWUè
+õÿÿéá�ƒìWUèôÿÿéÑ�ƒìWUèVõÿÿéÁ�ƒìWUè2öÿÿé±�ƒìWUè÷ÿÿé¡�ƒìWUè~÷ÿÿé‘�ƒìWUèî÷ÿÿé��ƒìWUèZøÿÿéq�‹U8‹Zd…Û„f‹Gf‰D$�D$P�GP�GPÿu8ÿRd‰Æ·D$‰GƒÄéA‹E8‹P`…Ò„Þ·GPÿw·GPÿu8ÿÒé�v‹E8‹P\…Ò„¶Q·GPÿwÿu8ÿÒéë�v‹E8‹@h…À„’ƒìÿwÿu8ÿÐéÊ‰ö‹E8‹@h…Àtvƒì�\$Sÿu8ÿÐƒÄjSÿw‰ÆÿƒÄé¥ÿwÿwÿwÿu8è+øÿÿé‚‰öPÿwÿwÿu8è±÷ÿÿëo�v‹E8‹�€…Òtƒì·GPÿu8ÿÒ1öƒÄëX�v¾jëN�ƒì�GPÿu8èøÿÿƒÄë9ƒìWUèFùÿÿë ƒì¶D$PèåÿÿƒÄ…ÀuCVÿu8WSèüÿÿÿ‰ÆƒÄë�¾…öuQ¶D$PjUèüÿÿÿ‰ÆëR¶D$PjUèüÿÿÿƒÄ‰ðƒÄ,[^_]ÃUWVSƒì,‹=…ÿ…¼èüÿÿÿèüÿÿÿ€=u ÇÇÇëÇÇÇVh€jhÿ1Û¾ƒÄ�ƒûw;ƒìSèüÿÿÿ‰Fx‰$èüÿÿÿƒÄ‰F8jljÿvxÿ‹Fx‰ƒÄÆ†ˆÿë
+�vÇF8CÇF4�ÆŒƒûv¦èüÿÿÿ¾Ç»¹1Ò‰ö�RBÁàƒúÇ0ÇÇ~ßÇÇÇÆÇèüÿÿÿ…À…vèüÿÿÿèüÿÿÿ…Àtéc¸éY‰ö1Û€=t4¿ƒì�4�VèüÿÿÿƒÄ…ÀuÍ�ÛÁà)Ø‰t‡0C¶9ÃrÑSj hÿhÿ¶ÇD$ƒÄ…À¾£„ß‰öŠ$‹$ˆ•ˆFAÆF@Æ Qÿv8�D$Ph'èüÿÿÿƒÄ…À…Œ‹$»�…;\$‰F4st‹
ƒùwi½¿‰ö‹$Š�ƒˆ��ÉÁà)È‹VxÁà‰TpƒÀ0‹V8‰(Š$ˆT8ˆ\8‹V4‰�Æ ¡C@;\$£s‰Áƒùv£‹$B¶�ÆŒ9Â‰$‚#ÿÿÿ1ÀƒÄ,[^_]Ã�WV‹5S…ö»‰ß„¼1ö‰öö t9Q¶C@PjSèüÿÿÿƒÄ…Àu$ƒìSèüÿÿÿ‰$èÁàÿÿƒÄ¶C@PjSèüÿÿÿƒÄF�ÃŒƒþv¶1ö€=‰ûtM�R¶C@PjSèüÿÿÿƒÄ…Àuƒìÿs4èüÿÿÿXÿs4èüÿÿÿƒÄƒìÿsxFèüÿÿÿ¶ƒÄ�ÃŒ9Ær´ÇÇ[^_Ã@01.01ERROR - prevValue argument is NULL.
+Debug: Error - Chains length must between 0 and 32.
+Debug: Error - sector verification numbr must be even.
+Debug: Error - verify write of BDTL can not accept this value.
+Debug: Error - Value must be either FL_ON (1) or FL_OFF(0).
+Debug: Error - No such volume, therefore can not change environment variable.
+Debug: Error - No such socket, therefore can not change environment variable.
+Debug: Error - This global variable is common to all volumes.
+Debug: Error - This global variable is common to all sockets and volumes.
+Debug: Unknown variable type.
+Debug: Variable type is either unknown or not socket related.
+Error : change SOCKETS definition in flcustom.h to support that many sockets.
+ERROR - structPtr argument is NULL.
+Debug: did not recognize format.
+ERROR - Must read a multiplication of 512 bytes.
+ERROR - Read IPL routine is not registered.
+”œ¤´¬¼üü08888888888Ü8888lÜllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllÜÜÜÜÜÜÜ8llllllllllllÜ€!¼!ä!X"p"„"@!P!`!p!  "("l | œ < Ð"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"å"å"å"å"å"å"å"°"ôÐ Œ 0!  \ !!à ð  !À Ä"ø"å"5.1.4GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.rel.rodata.rodata.str1.1.comment4ä&	Œ>ø%'+('0('62@'€ JÀ+0F	„F@R2ð/aö/7-0jÈ2À
%	ˆ9ñÿà1):ÍIìŽ_€
+±k4
|P
Ú‹,¡0”¶Ä7ÆüàÎö×á4Jì€EóÈ¡lÅ4L‰*Ø~7X|EÔZS0a[”EdÜe	x`
+ƒŒŸ­ÉpØå,±öòÿ)òÿ=òÿK&ØR  òÿ[ @òÿi  òÿupÔ„Dl�°¾£­p¼ÀÐÜ €òÿá  òÿ÷  òÿÿ|# ¦"2<JVH	a`	 pxˆ•ž§òÿ¯»Æ×òÿßÜ=ðûDÐt¼0#Û!,CNZclòÿt}Š’šòÿ¥®ÃËÙçõblockdev.cgcc2_compiled.mountLowLeveldismountLowLevelfindFreeVolumedismountPhysicalDrivemountVolumedefragmentVolumebdFormatVolumebdFormatPhysicalDrivebdFormatLogicalDrivesectorsInVolumeabsReadabsWriteabsDeleteabsAddressgetBPBchangePasswordwriteProtectsocketInfogetPhysicalInfophysicalReadphysicalWritephysicalErasereadIPLwriteIPLinquireCapabilitiesvolumeInfoinitDoneinitGlobalVarsDoneflMsecCounterflSectorsVerifiedPerFoldingflSetEnvVolumeFlDebugPrintflInitGlobalVarsflUseisRAMflUseNFTLCacheflUse8BitflMaxUnitChainflMarkDeleteOnFlashflSuspendModeflExitflPolicyflVerifyWriteflBusConfigflSetEnvSocketflSetEnvAllflSetDocBusRoutineflFlashOfflGetDocBusRoutineflIdentifyFlashnoOfSocketsvolshandleConversionTableflMutexdismountVolumesetBusyflTakeMutexflSocketSetBusyflNeedVccflDontNeedVccflFreeMutexfindSectorabsMountVolumeflMountdataErrorObjectfromUNALLONGfromUNALflFormattffscpyflDosFormatgetExbInfoplaceExbByBuffertffssetreplaceFATsectortoUNALLONGflBuildGeometrybdCallflInitbdkCallflSocketOfupdateSocketParametersflPreMountflSetEnvVarflmemcpyflmemcmptffscmpflmemsetflSysfunInittlTablenoOfTLsnoOfDrivesnoOfMTDsflRegisterComponentsbdkInitflInitSocketsflCreateMutexflDeleteMutexflExitSocket(l„¢ºÍ*;Oc}‚*˜�*±+K,V,c-n-{.….“/ž/«0¶0Æ1Î2Õ1ß1ö3(
+(=4Y5»)ß)*5)}6¡)ÄÉ*äé*ù+9]5„‰*¤©*¹+Å951&>&M9p5}3ž4¼(Æ/Í0Ô1ï;"<G=‰>§=­?¶=Ê==	@+>J=P@]>d=»BáCêD$	E0	C9	Fn	=z	@Ÿ	I¼	GË	J
+K"
+K8
+KH
+KY
+Kž
+HÔ
+Gç
+JYK}KÑGéJ*0LÁLàL==M1=>Ig=rM­HíNOûN$N\=�P¹M>0=6HG=T=wO�@Ø=îQI=dI’H£O³@zG†J–N·RìGÿJˆL•LïGvSZJ–GªJÚ=&T8TMT�FK*|�*÷£R´R¾!ÅNÏ!ÖN%U“%¥WÅ<é>D=SAüXî
 @) Y1 Z± QÕ HL"Nì"[#A#A9#%F#+K#\Q#.Z#N^#]d#_h#^n#Rr#`z#N~#]„#Rˆ#`Ž#_’#^Ÿ#=¥#R¬#=¾#YÉ#9Ü#R$a$b$c#$b($bS$%]$cg$dq$<x$e�$fŽ$g“$h°$<¸$=Â$?È$iã$<ô$>ú$R%<%=%d-%>J%[d%?s%d}%=‚%=�%d–%>Å%=Í%dØ%dì%<&%&=7&AG&@_&Av&<Š&Aœ&F¥&j´&k»&<Î&%Ø&& $(,048<@DPTX\`dhlptx|€„ˆŒ�”˜œ ¤¨¬°´¸¼ÀÄÈÌÐÔØÜàäèìðôøü $(,048<@DHLPTX\`dhlptx|€„ˆŒ�”˜œ ¤¨¬°´¸¼ÀÄÈÌÐÔØÜàäèìðôøü $(,048<@DHLPTX\`dhlptx|€„ˆŒ�”˜œ ¤¨¬°´¸¼ÀÄÈÌÐÔØÜàäèìðôøü $(,048<@DHLPTX\`dhlptx|€„ˆŒ�”˜œ ¤¨¬°´¸¼ÀÄÈÌÐÔØÜàäèìðôøü $(,docsoc.o/       1037556705  0     0     100644  1256      `
+ELF44(
+¸Ã‰öÃ�vÃ�v1ÀÃ�Ã�vÃ�v1ÀÃ�1ÀÃ�Ã�v‹D$Ç@DÇ@HÇ@LÇ@PÇ@TÇ@XÇ@\Ç@` Ç@dÇ@h$Ã�01.01GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.comment4t	 H%¨+¨0¨6¼7ó?Ä0		ô¬ñÿ
+&,3>HZy ˆ$“(K¡ €òÿdocsoc.cgcc2_compiled.cardDetectedVccOnVccOffinitSocketsetWindowsetMappingContextgetAndClearCardChangeIndicatorwriteProtectedfreeSocketdocSocketInitdocMtdVars/6=DKRY`ndoc2exb.o/      1037556706  0     0     100644  4512      `
+ELF4(

+UWVSƒì‹\$0‹t$4jÿt$0èüÿÿÿ‹T$4‰Ç‹B�€�…ƒÄ9Ãs¸éÐ‰öQjhÿt$0ÿƒÄ…À…§�æ
‰òfÁê	„Ò…“Rjh‹\$0ƒÃSÿƒÄ…ÀtPjh
+SÿƒÄ…À…\‹\$ ‹C8¶@Hƒøwÿ$…°ë°ë°ë¸jé8‰ö‹\$$‹K1Ò…Ét'¶À9t ‰Î‰ÃB¶ÂƒÇ9ðs9uñë�v‹|$$J‹O¶Â9Èƒí�€ƒì�…Pÿt$0èüÿÿÿ‹T$0�êiÒ‹¯øŠÁê¶Ò�R�’‰ÇÁâ‹G�j0‰…‹G»‰D�J ‹w‰±‹G‰�‹|$4‹G‰‹�‰ð)ÈÁè	f‰DƒÄ‹T$ ‹B8¶@ƒøtEƒøHt!ëO�vƒøG‹…)ð‹\$ ‰ƒ„ë;�v‹…)ð@‹|$ ‰‡„ë�v‹…)È‹T$ ‰‚„ë¸3ë�1ÀƒÄ[^_]Ã‰öUWVSƒì‹T$ �êiÒ‹¯øŠ‰ÐÁèƒ|$0ºtº¶À�@�€·Ò�<…‰T$�o·…‹L$,)Â‹9Ð‰Á~‰Ñ‰ÎS·ÞS)D$0ÿt$0ÿt$0èüÿÿÿZYP·…‡8Pÿ‹T$<Ÿ$‹)Ø‰fµØƒÄ;D$}1Àë�fÇ…¸ƒÄ[^_]Ã‰öUWVSƒì‹\$0€»ˆÿ‹t$4‹|$D‹l$H…¤º)ò‰ÐÁàÐ‰ÂÁâÐ‰ÂÁâÐ÷ØƒìÁøPèüÿÿÿ‰F8·ÅPÿt$Pÿt$PSèüÿÿÿƒÄ …À…\öuƒìSèüÿÿÿƒÄ…À…C‰à‹T$@ƒì‰BPÿs<ÿSlƒÄ…À…%‹S8·B$‹R¯Ð‰è%
‹L$fÁè	Óêf…À‰Vu�RÁè	@f‰FÇF
+ë��„RfÇF‰FÇG‹D$@‰xQÿs8Ph÷èüÿÿÿ‰Â‹ƒ„ƒÄ9Gr…Òt¸4éŸ�‹S8¶JHÓè@‰GÇGÆGRÿs8ÿt$Hh”èüÿÿÿƒÄ…Àul÷ÅuE‹ƒ„ÆG‰G¡€Pÿs8ÿt$Hh‘èüÿÿÿƒÄ…Àu6Whhÿÿv8ÿƒÄÇF$fÇFfÇFf‰.Æƒˆ1ÀƒÄ[^_]Ã‰öUWVSƒì|‹„$œf‰D$&‹„$ f‰D$$‹„$˜‹¬$�‰D$(�D$.‰D$ ‰è-iÀ‹¯øŠÁø¶À�@�€�4…fÇD$.ÆD$.UÆD$/UPjh�\$<Sÿ‰\$lÆD$HÇD$`ƒÄ·D$(PS�D$\Pÿ´$¨ÿ´$¨�¾WUèüÿÿÿƒÄ …À…o‹†8‹–$‹\$(‰D$H‹Ž4�€L$D9ÈÇD$@‰D$s‰†$é0‹†09Â‰D$r‹D$;† ‰†$éã�9Ês‰È)Ð)Ã‰\$(‰Ž$‰Ê9T$†¨‹\$(…ÛŽœ�D$(‰D$€½ˆu3‹E8€xu*ƒìjÿt$,ÿ´$¬ÿ´$¬UèüÿÿÿƒÄ …Àu6é��ƒìjÿt$,ÿ´$¬ÿ´$¬UèüÿÿÿƒÄ …Àu‹G 9G$…lf‹Gf…À…¾€½ˆu"‹W,+W(Áê	‹O8f‰W‹E8ƒÁ€xu�ë	�‹O8f¶Af‰G€9Uu€yªt
¸é�v¶…ˆƒøtxƒø…ÀtéA‰öƒø„çé1‰ö€½ˆuf‹Gf‰G€?‹O8yŠAAAfÇAfƒ|$&„f‹D$&f‰A ŠQ(Âf‹D$&fÁè(ÂˆQéê�v‹w8èüÿÿÿ‰Ãƒì·ÃP�FPèüÿÿÿŠF	(ØfÁë(ØˆF	ZY·GP�FPèüÿÿÿŠV	*WˆV	‹GÁè(ÂˆV	ƒÄfƒ|$&„Œƒì·D$.P�F)Pèüÿÿÿf‹D$6ŠV	*T$6fÁè(ÂˆV	ƒÄë`�‹E8€xu‹‹B0B4-@‰B4ÇB0@‹W8ŠB*GˆB*GˆBƒì·GP�BPèüÿÿÿƒÄf�'ÿ‹W8ŠˆB
+ŠB*ˆBf‹GHf‰G€½ˆ…ç‹M8¶Aƒø‰ÊtƒøŒøƒø�ïëi�·G·WH9ÂuC÷D$$u9PQ�\$XSh’èüÿÿÿƒÄ…À…;Vÿu8Sh’èüÿÿÿƒÄ…À…!‹M8ƒìjjÿt$4hÿu8ÿQDëM‹ZT…Û„ñ÷D$$tRhhÿÿw8ÿƒÄ‹M8ŠG*GƒìHj¶ÀPhÿw8ÿu8ÿQTƒÄ …Àt0é­�v÷D$$uPÿu8�D$XPh’èüÿÿÿƒÄ…À…‚Vhhÿÿw8ÿƒÄfƒuþ…ˆ‹W0‹G$9Âv‹\$(…Û�nüÿÿë‹†$‹–09ÐrD$(‰G$;G r(Æ…ˆÿ‹E8‹�„…ÒtƒìPÿÒƒÄë�¸jë�1ÀƒÄ|[^_]Ã‰ö01.01OSAK51405120„¨¬ ÀÀÈÄÄGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.1.rel.rodata.comment4ô		x%(
++(
+0(
+62<
+IP
+ E	x(Qp
+7§
+Z
 
+	¬Éñÿ	%;CH àòÿMÊ_gäÒu€�—ž¦¸:·Âdoc2exb.cgcc2_compiled.getExbInfoflAddLongToFarPointertffscmpvolsexbswaitForFullBuffertffscpyfirstTimeInitflBufferOfabsMountVolumebdkCallbdkVoltffssetplaceExbByBufferflRandBytetoUNALDNuƒ’™¼*4
W_oxˆ¿Öò%
bŠ”š¡«¸Ï	.C
+\í7Xmˆô
&1el}ƒ‘¯ºÌÒì;e`r�Åï' º		Y	x	¦	¬	flsocket.o/     1037556706  0     0     100644  2784      `
+ELF¨4(‹D$‹Ã�‹D$�@�À�…Ã‰ö‹D$‹…`Ã‹D$‹…€Ãƒì‹D$PÿP`ƒÄÃ�‹D$‹@0ÃWVS‹t$‹V0�úÿ‹|$u
ƒìVÿVTƒÄ‹V0‹F8‰Ã÷Û!ûÁë9ÚtƒìSVÿVXƒÄ‰^0ÇF ‹F8H!Ç~4[‰ø^_Ã�‹T$‹D$‰B@ÇB0ÿÃ�‹T$‹D$‰B<ÇB0ÿÃ�‹T$‹D$Áâ‰P8‹P,Áâ‰P4Ç@0ÿÃ�ƒì‹D$…À‹L$u	ƒÄéüÿÿÿ�¶Q‹€¼Â”AÇA0ÿÇA ƒÄÃSƒì‹\$‹SÿC…ÒuƒìSÿSH‹C$ƒÄ…Àtƒìÿs(ÿÐƒÄÇCƒÄ[Ã‰ö‹T$‹B…À~H‰BÃ‹D$‹T$‹L$‰P$‰H(Ã�ƒì‹T$‹B…ÀuJ‹Bƒøu
+ÇBë�HuÇB‹J…Éu'‹BƒøuÇBë‰öHuƒìÇBRÿRLƒÄƒÄÃƒì‹T$‹Bd…Àt
ƒìÿt$RÿÐƒÄ1ÀƒÄÃ�vSƒì‹\$jSèüÿÿÿ‰$èüÿÿÿYXjSèüÿÿÿ‰$ÿShZ‹ÿ4…`èüÿÿÿ‹‹…€‰D$ ƒÄ[éüÿÿÿ�vWV1ÿ€=S¾„Â�ƒìhúVèüÿÿÿ[XjVèüÿÿÿZYjVèüÿÿÿÇ$ÇFèüÿÿÿ�½ƒÄ…À‰ƒ`uƒìhë#�ƒìhèüÿÿÿƒÄ…À‰ƒ€uƒìh@èüÿÿÿƒÄ¸?ë>�vƒìVÿVPƒÄ…Àu-ƒìVÿVLG¶ÇFÇFƒÄƒÆl9Ç‚?ÿÿÿ1À[^_Ã�01.01Debug: failed allocating sector buffer.
+Debug: failed allocating readBack buffer.
+GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.comment48	
+È	%l+€  0€62 € F 7WO`0
+	�ˆñÿ` ` +€ :FS^i(|4�D¡LW§¤»¸ÌÌÜì<ìˆ\þ(:d$t9ä!PM]dXßr{flsocket.cgcc2_compiled.volsvolBuffersreadBackBuffernoOfSocketsflSocketNoOfflSocketOfflBufferOfflReadBackBufferOfflWriteProtectedflGetMappingContextflMapflSetWindowBusWidthflSetWindowSpeedflSetWindowSizeflSocketSetBusyflIntervalRoutineflVerifyWriteflNeedVccflDontNeedVccflSetPowerOnCallbackupdateSocketParametersflExitSocketflfreeflInitSocketsflmallocFlDebugPrint#/
&6;D^ez„Ž¡!³½	Í!Øâ	ç"ÿQflflash.o/      1037556706  0     0     100644  3108      `
+ELFÈ4(‹T$�’�‚�B�…Ã�vƒì‹D$‹@4‰D$ƒÄéüÿÿÿ‰öSƒì·D$ ‹T$‹\$PƒìPÿt$,RÿR<ƒÄPSÿƒÄ1À[Ã¸Ã‰ö¸Ã‰öƒì‹D$jjÿp4èüÿÿÿƒÄÃ�UWVSƒìÿt$0‹D$,ÿp4èüÿÿÿÆD$ƒÄ‹T$$1í…Ò‰Ã¿ðu¿ÿ1ö�‰ú…öˆˆuŠˆD$‹D$$…ÀtSh�‹D$0ðPÿt$,ÿT$4ƒÄëÆ�…öu¶+ë3�vŠ‰ê8ÐuŠ8D$tŠ‰èf¶ÒÁà	Ð‹T$ f‰‰øˆë�v‰úˆFƒþ~��Fÿ…ðt‹D$ fÇë�v‹T$ f‰r,ƒÄ[^_]ÃUWVSƒì‹\$$…Û‹l$ ÆD$ðuÆD$ÿQjÿt$0UÿU<ƒÄ‹T$$…Ò‰ÆtVh�jUÿT$4ƒÄë�Æ�fÇE$�vPj·E$¯ED$0PUÿU<‹}$ƒÄf…ÿ‰Æ‰ût!Š¿M,‰ÂŠ1Áâf¶À	Âf;U„‡ë�¿M,1Àf…Û”À‰Ã9Ë}_‰ö‹|$$…ÿt Vh�·E$¯ED$0ØPUÿT$4ƒÄë�Æ3�Š3‰Â¿E,�Š0Áâf¶À	Âf;Uu&ŠD$ˆ3¿E,C9Ã|¦‹}$‰øE,f=Ïf‰E$†8ÿÿÿQjÿt$0UÿU<‰ÆŠD$ˆ1Àfƒ}$”ÀƒÄH[ƒàæ^ƒÀ_]ÃSƒì‹D$jÿp4èüÿÿÿ‰ÃŠˆD$ƒÄ„ÀÇD$•ÂJ‹D$ˆ‹D$Š¶È¾Â9Áu%‹D$ŠT$ˆƒìhèüÿÿÿƒÄ¸ë�v1ÀƒÄ[Ã�WVS‹t$‹\$€=¿‰s4uƒìSèkÿÿÿƒÄ…Àt¸éÐ‰öƒìfÇÆCfÇC"fÇC.ÇC<ÇC@0ÇCLpÇCHhÇCD`ÇCPÇCTÇCXÇCdÇC`ÇC\ÇChÇClÇCpÇCtÇCxÇC|Çƒ„Çƒ€VèüÿÿÿƒÄ�<…tZÇƒŒÇƒ�Çƒ”Çƒ˜ÇƒœÇƒ Çƒ¤ÇƒˆÇƒ¨ÆC ÆCÆC1ö;5ÇCÇCfÇC$fÇC,ÇCÇC(ÇC †ëƒìSÿµFƒÄ;5‰Ç}	…ÿtƒÿouÞƒÿouƒìh@èüÿÿÿƒÄ¸oë8‰ö…ÿtƒìh€èüÿÿÿƒÄ¸ë�‹CÑèÆCt
1Ò�vBÑèuûˆS1À[^_Ã‰ö01.01Debug: error, socket window looks like RAM.
+Debug: Flash media reported bad download error.
+Debug: did not identify flash media.
+GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.comment4(	l¸	%\+`` 0`62€À F@7wO€à
+	`
+ñÿ`(002`?hLpZ¬o`isy�–ˆÜ¦dH²¿
+ÏÚçóòÿüòÿflflash.cgcc2_compiled.volsflashMapflashReadflashNoWriteflashNoErasesetNoCallbackisRAMnoOfMTDsflFlashOfflMaptffscpyflSetPowerOnCallbackflIntelIdentifyflIntelSizeFlDebugPrintflIdentifyFlashflUseisRAMflSocketNoOfflBusConfigmtdTabledataErrorObjectU›ºþ)ov}„‹ùw³½×Üôù*fltl.o/         1037556706  0     0     100644  2940      `
+ELF”4(	WVS‹\$‹|$1öë�·C"Æ;ss"ƒìjjh¶K‰øÓàðPSÿSDƒÄ …ÀuÓ[1À^_Ã�UWVSƒì(‹T$@Šƒà¶À‹l$<‹|$DPèüÿÿÿƒÄ�ý'¾u…Àt‹X4…Ûu‹\$4ÇC1ÀéÆ‰öƒìWPèüÿÿÿ‰D$(ƒÄ…Àt	ƒø…¦1Û‹
ë'�[‹……Òt�D$PWÿt$<UÿÒ‰ÆƒÄ‹
C9Ë}…öuÑ…ö„a�ýÎt%�ý'¸j…L‹D$4Ç@1Àé:‰ö·G$‹o¯è¶O¶W Óí‰Ó‰è1Ò÷ó‰D$‹T$4‹B‹0‹RÓî…Òt‰ÐÓè9Åv‰ÕÓýŠGƒè<w(ƒìhèüÿÿÿÇ$@èüÿÿÿƒÄ¸jéÊ‰ö‹_(9ëfÇD$ƒžÇD$‰ö‹T$‹D$49Pv?9Þu;fÿD$ƒì·D$‰D$ÁàP‹D$@ÿpèüÿÿÿƒÄ¶O‹0j·ÃPWÓîÿWHZYë�Pj·ÃPWÿWH‰D$(ƒÄ…Àt
ƒìSWèüÿÿÿƒÄ�K1Ò‰È÷t$…Àu
+_(�Cë‰ö‰È‰Ã9ë‚lÿÿÿƒìhèüÿÿÿƒÄ1Àë‹D$ƒÄ[^_]ÃUWVSƒì‹T$0‹l$4ÇD$RèüÿÿÿZYÿt$8Pèüÿÿÿ‰ÆƒÄ…ö¿t	ƒþ…ß1Û‹9ÓÇE4ÇEÇEÇE8ÇE(ÇE$ëA‰ö�[�…‹�…Àt(�D$P1À…ö•ÀH#D$4PUÿt$,ÿ‘‰ÇƒÄ‹C9Ó}	…ÿtƒÿsu¶…ÿuW‹D$…Àt
+ƒìPÿPLƒÄ‹D$,…Àt=1Û‹ë	‰ö‹C9Ó}&�[Áà‹°…öuëjjUÿt$,ÿ�ƒÄ…ÀuÏ‰øƒÄ[^_]Ã�UWVSƒì‹|$0ÿt$,èüÿÿÿZYÿt$0Pèüÿÿÿ‰ÆƒÄ…ö½t	ƒþ…Ã‹D$(ö@.uW€w"‹G…Àtö@uŠW„Òt	‹Gö@u€úv/ƒìh€èüÿÿÿƒÄ¸jëzƒìhÀèüÿÿÿƒÄ¸3ëc�1Ò¶O9Ê‹G}�vƒxÿtÒBƒÀ9Ê|ò1Û‹
ë/�[‹……Òt 1À…ö•ÀUH#D$,PWÿt$,ÿÒ‰ÅƒÄ‹
C9Ë}ƒýtÈ‰èƒÄ[^_]Ã‰ö1ÀÃ�01.01DiskOnChip Millennium Plus has a H/W protected BBT.
+No need to erase the DiskOnChip. Simply reformat.
+Debug: feature not supported by the TL.
+Debug: can not use 'FFFF' signature for Binary partition
+
+Unformat Complete        
+GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.rodata.str1.1.comment4�	t
+
+%Ä+È0È62à F2àUý74^t`	Ô	Ÿñÿ C,D7BRòÿZòÿbo…`'�ˆ–Œfltl.cgcc2_compiled.zeroes.0markUnitBadflPreMountflSocketOfflIdentifyFlashnoOfTLstlTableFlDebugPrintflAddLongToFarPointerflMountflFormatnoFormat#a
š¶ÂÞlqx}ÚDIy
…¤äDN_r˜
¤õúBNrflioctl.o/      1037556707  0     0     100644  3668      `
+ELFd4(

+VSƒì$‹T$0‹B‹‹p‹‰$‹B-ð‰ƒø‡-ÿ$…‰ö‰t$ƒì�D$Ph6èüÿÿÿ‰F8ƒÄé�v‹‰D$ƒì�D$Ph/èüÿÿÿ‹T$ éÑ�v�C‰D$¶‰D$ƒì�D$Ph,é¯€;uƒì�D$Ph-ë
ƒì�D$Ph*èüÿÿÿ‰ƒÄ‹é�‰ö¶‰D$�C‰D$ƒì�D$PhÊé[‰\$ƒì�D$Ph+éE‰ö¶‰D$�C‰D$ƒì�D$PhËé#�C‰D$¶ƒø‡•ÿ$…p‰öƒì�D$Phõégÿÿÿ‰öƒì�D$PhöéSÿÿÿ‰öƒì�D$Ph÷é?ÿÿÿ‰öƒì�D$Ph‘é+ÿÿÿ‰öƒì�D$Ph’éÿÿÿ‰öƒì�D$Ph”éÿÿÿ‰öƒì�D$Ph“éïþÿÿ‰öÇ3éìþÿÿ�‰Ø¶P	ƒú‡mÿ$•�‰ö@‰D$ƒì�D$Phùé��ƒì�D$Phúë}�ƒì�D$Phøèüÿÿÿ‰FŠD$ˆƒÄé¬�ÇD$ƒì�D$Ph–ëA�ÇD$ƒì�D$Ph–ë)�@‰D$ƒì�D$Ph•ë¶‰D$ƒì�D$Ph—èüÿÿÿéø‰ö‰Ø¶P	ƒú‡¥ÿ$•°‰ö@‰D$ƒì�D$Ph#ë|ƒì�D$Ph"ëm�ƒì�D$Ph!é7ÿÿÿ‰öÇD$ƒì�D$Ph$ëA�ÇD$ƒì�D$Ph$ë)�@‰D$ƒì�D$Ph%ë¶‰D$ƒì�D$Ph&èüÿÿÿéD‰öÇF3é‡·CƒøtGƒø
+Hté‚‰öƒøt[ëy�ƒì�D$Ph½èüÿÿÿ‰ŠD$ˆC‹D$$‰‹D$ ‰Céýÿÿ�v‹C‰D$‹C‰D$‹‰D$ƒì�D$Ph¾éãüÿÿ‰ö‹C‰D$‹‰D$ƒì�D$Ph¿éÂüÿÿ�Ç3éÀüÿÿ�‰t$ƒì�D$PhÉèüÿÿÿéú�‰t$ƒì�D$PhÈèüÿÿÿ‰FƒÄé�vƒì�D$Ph'èüÿÿÿŠT$‰FˆƒÄéò�‹‰D$ƒì�D$Ph(èüÿÿÿ‹T$ é½�v‹‰D$‹C‰D$·C
+‰D$¶C‰D$ƒì�D$PhÌéŒ�¶‰D$ƒì�D$PhÂér�v‹‰D$‹C‰D$ƒì�D$Ph1éP�‹‰D$‹C‰D$‹C‰D$ƒì�D$Ph2ë"�‹‰D$‹C‰D$‹C‰D$ƒì�D$Ph0èüÿÿÿ‹T$$‰F‰ƒÄé�‹Cƒøt$ƒøwHtëj‰öƒøt3ëa�PVÿsÿ3èüÿÿÿë‰öVÿsŠD$ƒà¶ÀPÿ3èüÿÿÿ‰FƒÄëI‰öƒìVÿs‹D$%ðÁèPŠD$ƒà¶ÀPÿ3èüÿÿÿ‰FƒÄ ë‰öƒìhèüÿÿÿƒÄÇFj‹Fëmƒìÿ3ŠD$ƒà¶ÀPèüÿÿÿëI�ƒìÿ6ŠD$ƒà¶ÀPèüÿÿÿ‰FƒÄë8�v‹‰D$·C‰D$·C‰D$ƒì�D$PhÀèüÿÿÿ‰ƒÄë�¸3ƒÄ$[^Ã�01.01Debug: No such environment variable function flag
+0Tx˜Ì$Øøì Ø` DhTŒT¼TTì$@T|�¤¸hð<Tl€¸ÌÜð 4GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.rel.rodata.comment4`	À%”+”0”62À@ JÐF	Ô€RÐ7[l
+ 
+	Œ†ñÿ	_")5DS`sflioctl.cgcc2_compiled.flIOctlbdCallflSetEnvAllflSetEnvSocketflSetEnvVolumeFlDebugPrintflSetDocBusRoutineflGetDocBusRoutine*Bhº:ê&•²IŽ2R|>x’
ÂÔÙýH $(,048<@DHLPTX\`dhptx|€„ˆ�”˜œ ¤¨°´¸¼ÀÄÈfatfilt.o/      1037556707  0     0     100644  7288      `
+ELFà4(

+UWVSƒì‹l$ …ít31ö�}�µ‹;…ÀtƒìPèüÿÿÿƒÄFƒþÇ;~ÙÇEƒÄ[^1À_]ÃUWVSƒì‹l$ …í‹|$$tƒÿ‹E‰ÂÁúƒàƒâƒøƒú~¸ëv�ƒìj(èüÿÿÿ‰ÃƒÄ…Û¾?t[‹EÁç�u‰‹7…ÀÇCÿÿÿÿÇCÇCÇCÇCÿÿÿÿÇCÿÿÿÿÇC ÇC$tƒìPèüÿÿÿƒÄ‰71ö‰ðƒÄ[^_]Ã�vSƒì‹\$‹CƒøƒìPSè.ÿÿÿƒÄ…ÀuÿC1ÀƒÄ[Ã�Sƒì‹D$‰ÂƒâÁøƒàƒúƒø~¸ëV���…‹ƒ …Àt@ƒìPè�þÿÿ‹ƒ ‹@@ƒÄ…ÀtƒìPèüÿÿÿƒÄƒìÿ³ èüÿÿÿƒÄÇƒ 1ÀƒÄ[Ã�UWVSƒì‹l$ ‰ï‰îÁþƒçƒæƒÿƒþ~
+¸éŒƒìUèKÿÿÿƒÄ…Àu|ƒìjDèüÿÿÿ‰ÃƒÄ…Û¸?tdƒìhèüÿÿÿƒÄ…À‰C@uƒìSèüÿÿÿƒÄ¸?ë:‰ö‰+ÇCÇC1À�S�vÇ‚@ƒø~ó�¾‰… ÇC<1ÀƒÄ[^_]ÃVS‹\$…Û‹D$t'1Ò‹H9Ê}‹p‹[<�v�29Øu	¸ë	‰öB9Ê|ë1À[^Ã‰öƒì‹T$f�ºþUªt*¸ëC�vÁàƒì�DPèüÿÿÿ‹T$$‰ƒÄ1Àë#�v�Š¾1ÀŠ’Â‰ö€útË@ƒø~õ¸ƒÄÃWVS‹|$‹G…À‹t$u
+1Àé“�vƒì�FPèüÿÿÿƒÄf=uhƒì�FPèüÿÿÿ·ÀƒÄ…Àu‹F ;GuJ·NO;O¸uL·V�D
+ÿ;Gu,¶F¯Ðƒì�F�
+Pèüÿÿÿ·ÀÁàHÁè	�DƒÄ;G t¸ë¶V
1À9W$•À[^_ÃWVS1ÿ�v‰û1öƒã�‰ðƒàÁàƒì	ØPFèPýÿÿƒÄƒþ~ä‰øƒìƒàPèºýÿÿƒÄ…ÀuGƒÿ~ÁÇ1À[^_Ã�UWVSƒìL‹t$`‹\$`Áûƒæ¶ƒã9Æ}ƒû~¸é×‰ö�³‹<… …ÿuƒìÿt$lèNýÿÿƒÄ…À…°�³‹… ‰D$‹h@…í¸A„’‰l$ƒìÿt$èeûÿÿ‹D$p‰D$0ÇD$@ÇD$D‰l$<ZY�D$(Ph2èüÿÿÿƒÄ…À…Jf�½þUªt
+¸ié5�µ¾ÇD$ë+‹T$‹B‹\‚¾F‰Cƒì�FPèüÿÿÿ‰CƒÄÿD$ƒÆƒ|$ŠF„Àtë<tçƒìÿt$èÃûÿÿƒÄ…Àt°ÇD$‹L$`‰L$ ÇD$0ÇD$4‰l$,ƒì�D$(Ph2èüÿÿÿƒÄ…À…”f�½þUª…ƒ‹D$ÁàD$€¸Â�°¾…ìƒì�FPèüÿÿÿ‰Ç‰|$,ÇD$$ƒÄëo�vƒìÿt$è ûÿÿƒÄ…À…³‹T$‹B‹\‚¾…Âƒì‰C�FPèüÿÿÿø‹t$‰C�ÆÎƒÄ€½Òuwƒì�FPèüÿÿÿ‹|$,ƒÄÇÿD$ƒ|$W‹L$`‰L$ ‰|$0ÇD$4‰l$,ƒì�D$(Ph2èüÿÿÿƒÄ…À…�f�½þUªu‹t$�Æ¾€½Â…6ÿÿÿÿD$ƒ|$ŽŸþÿÿ‹D$‹P…Ò~MÇD$9T$}?‰ö‹D$ƒÀ‹L$‹ˆ‹Cƒøt
+ƒøtƒøuƒìSè3ƒÄ‹D$‹PÿD$9T$|Ã‹T$ÇB<ÇB1ÀƒÄL[^_]Ã�vUWVSƒìH‹|$\hèüÿÿÿƒÄ…ÿ¸„h‹‰Á‰ÂÁúƒá¶ƒâ9Á}?ƒú:�Š‹4… …ö¸„21í‹F9Å}9~t‰Á�V‰öE9Í}9<ªuö9Å|
+¸é‹F@…À‰D$u
¸Aéð�vÇGÿÿÿÿÇGÿÿÿÿÇGÇG$‹‰D$‹T$‹G‰D$ ÇD$$‰T$ƒì�D$Ph2èüÿÿÿƒÄ…À…—‹\$€;ét‹%ÿÿ=ë�…6ƒì�CPèüÿÿÿƒÄf=…›ƒì�CPèüÿÿÿ·ÐƒÄ…Òu‹L$‹Q �E;F}‹D®…Àt‹@+G9Â‡â‰W‹T$·Bƒøtƒø t;‹OÁ‰O‹D$·P…Òt'�D
+ÿ‰G¶C¯Ðƒì�CP�4
+èüÿÿÿ·ÀƒÄ…ÀuƒìhèüÿÿÿƒÄ¸é¾�Áà©àumHÁè	�D‰G ¶C
ƒø‰G$t1ƒøƒø|Lƒø~"ƒøë�vƒø tƒø ƒøë	�ƒø@tƒÀ€u%‹W$‰ÐÁà	=€w”‹G;Gr‹O 9Áv‹G9Ès	¸
+ë?‰ö+O)È‰Ñ1Ò÷ñ@=ôwƒìƒOh5ë�vƒìhNèüÿÿÿƒÄÇG1ÀƒÄ<[^_]Ã�vUWVSƒì\‹T$p…Ò‹|$ttq‹D$p‹(‰é‰êÁúƒá¶ƒâ9Á}SƒúN�Š‹… …Ò¸„¢1À‹J9È}*‹\$p9Zt!�r‰L$‰t$‰ö@;D$}
‹t$p‹\$94ƒuì9È|¸éa‰ö‹B@…Àu
¸AéN�v‰D$(‰D$<‰l$0‰|$@ÇD$Dƒì�D$8Ph2èüÿÿÿƒÄ…À…ÇD$$‹T$pöB”D$$ƒD$$‹\$$ƒû‰\$,u+zÁç
+¹«ªªª�W‰È÷âÑêë‰ö‰ú‹\$p+SÁâ‹|$,‹t$p¯ú�jþ¯n$�çÿn �ÿý�¢�‰ûÁëƒì�;‹D$4ÑûØPèüÿÿÿ‰ÆXœ$„SèüÿÿÿƒÄ÷ÇtfÁîfÁèë‰öƒ|$$u�æÿ%ÿf…öt3f…Àu.‹T$p‹‰D$0‹B$‰D$D‰l$@ƒì�D$8Ph1èüÿÿÿƒÄ…Àu|$,‹\$pk$�ÿýŽ_ÿÿÿ1ÀƒÄ\[^_]Ã�UWVSƒì,‹-…íuèî÷ÿÿ‹D$@‹‰Ö‰ÓÁûƒæ¶ƒã9Æ}ƒû~¸é	��³‹<… …ÿuƒìRè�õÿÿƒÄ…À…æ�³‹<… ‹w…ö…Áƒì‹T$Lÿ2èÓ÷ÿÿƒÄ…À„¨é³�v‹_<…ÛuN‹G…À~G1í9Å}A‹T$@‹‰$�G‹¨‹@‰D$ÇD$ÇD$ƒì�D$Ph0EèüÿÿÿƒÄ;o|¿ÇG‹T$@‹G<+BÁà	Bƒì�W<RPèßõÿÿƒÄƒøtƒø‡$…Àté�ÇGéƒìÿt$HWèoõÿÿƒÄH„Iÿÿÿƒ…í‹D$@‹p‹X�39Æ‰ñ�Ö‹W�1í9Õ�¼‰ö�G‹¨‹Cƒøtƒøt	ƒø…Žƒ{…„;su@‰ð)È‹T$@Áà	ƒìBPSè�õÿÿƒÄHuƒìÇChgèüÿÿÿƒÄë>‰ö‹T$@‹J;s|(;s#‰ð)È‹T$@Áà	BQPVSèøûÿÿƒÄ…Àt
ë3�v‹Wë
�v‹D$@‹W‹HE9ÕŒMÿÿÿ‹D$@‹XF�9ÆŒ.ÿÿÿ1ÀƒÄ,[^_]ÃUWVSƒì‹
…É‹l$ ‹|$$uè’õÿÿ‰î‰ëÁûƒæ¶ƒã9Æ}xƒûs�³‹… …ÒuƒìUèRóÿÿƒÄ…À…-�³‹… ‹Cƒøu
¸é�v…Àu$‹D$(…Àu1Àéû�ƒìUèoõÿÿƒÄ…À…æ;{}ƒÿ~
+¸éÒƒ|$(¾3tƒ|$(r%ƒ|$(tVé±�ƒìÇCUè õÿÿ‰Æé–�…ÿy 1É�C�v‹ˆ…ÒtÇBAƒù~ìëU‰ö�C‹¸…ÀtIÇ@ë@�ƒ{uZ…ÿxV�C‹¸…ÀtL‹@ƒøtƒø@t ë*‰öƒøtƒøu�C‹¸Ç@1öë�ƒìhë
+‰öƒìh@èüÿÿÿƒÄ‰ðƒÄ[^_]Ã‰öWV‹S…Ò‹|$uèôÿÿ‰þ‰ûÁûƒæ¶ƒã9Æ}Dƒû?�³‹… …ÀuƒìWèÆñÿÿƒÄ…Àu!�³‹… ‹s…öuƒìWè	ôÿÿƒÄ…Àt1Àë‰ö‰Ø[^_Ã‰ö01.01Debug: checking FAT type.
+Debug: FAT32 detected.
+Debug: FAT12 detected.
+Debug: FAT16 detected.
+Debug: BPB update detected.
+Debug: can't ctrl non-existent partition.
+Debug: can't ctrl non-FAT12/16 partition.
+GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.rodata.str1.1.rodata.str1.32.comment4 	h%`  +06  >2 …M2À€ ]@7wfè@	(@ñÿ$ €+2LCLµO+^0j°Àrp:ƒ¬`”°¡¼W§±(•¾À	÷	ÒÙâïø¸T+’7 ~fatfilt.cgcc2_compiled.resetDoneffDiskzeroesdiscardDiskPartsaddDiskPartaddNewDiskPartdiscardDisknewDiskisPartTableWriteisExtPartPresentisBPBchangedresetparseDiskpartEnableFFpartFreeDelClustersflfreeflmallocfromUNALLONGfromUNALnoOfSocketsbdCallFlDebugPrintffCheckBeforeWriteflffControlflffInfo'Šë`s†’— ò
 [Ô0E‹,NsÄz¾3q49 \rAZÏáæ “	 	¥	 æ	ü	Š
+!1‹Áá$Š��
•
 7Mo|ˆ� ¤ÃÙ÷docsys.o/       1037556707  0     0     100644  8860      `
+ELF(4(¸ Ã‰ö¸@Ã‰ö¸€Ã‰öƒìÇD$ƒÄéüÿÿÿ�ƒì‹D$fÑè·ÀÑàD$·T$‰D$‰T$ƒÄéüÿÿÿƒì‹D$fÑè·ÀÁàD$·T$‰D$‰T$ƒÄéüÿÿÿ�vƒìh`èüÿÿÿ1ÀƒÄÃ�ƒì‹D$ fÑè·ÀÑàD$Pèüÿÿÿ·ÀƒÄÃƒì‹D$ fÑè·ÀÁàD$Pèüÿÿÿ·ÀƒÄÃ�vƒì·T$ŠD$T$¶À‰T$‰D$ƒÄéüÿÿÿ�ƒì‹D$fÑè·ÀÑàD$ŠT$‰D$¶Â‰D$ƒÄéüÿÿÿ‰öƒì·T$ŠD$ÑâT$¶À‰T$‰D$ƒÄéüÿÿÿ�vƒì‹D$fÑè·ÀÁàD$ŠT$‰D$¶Â‰D$ƒÄéüÿÿÿ�ƒì·T$ŠD$ÁâT$¶À‰T$‰D$ƒÄéüÿÿÿ‰öƒì·D$ D$Pèüÿÿÿ¶ÀƒÄÃ�vƒì‹D$©‹T$tfÑè·Àƒì�BPèüÿÿÿƒÄ¶ÄëfÑè·Àƒì�BPèüÿÿÿƒÄ¶ÀƒÄÃƒì·D$ ÑàD$Pèüÿÿÿ¶ÀƒÄÃ�ƒì‹D$©‹T$tfÑè·Àƒì�‚PèüÿÿÿƒÄ¶ÄëfÑè·Àƒì�‚PèüÿÿÿƒÄ¶ÀƒÄÃƒì·D$ ÁàD$Pèüÿÿÿ¶ÀƒÄÃSƒì‹D$f…À‹\$‹T$‹L$t'·ÀÆÆDÿ‰D$·Á�‰D$‰T$ƒÄ[éüÿÿÿ�ƒÄ[Ã�vSƒì‹L$·T$‹\$·D$Ñ‰\$‰D$‰L$ƒÄ[éüÿÿÿ�vSƒì‹L$·T$Š\$·D$‰D$Ñ¶Ã‰D$‰L$ƒÄ[éüÿÿÿUWVSƒì·D$$‹T$,�<|$ f…Ò‹l$(t+·ò1Û9óÆEÆD.ÿ}‰öƒì�_Pèüÿÿÿˆ+CƒÄ9ó|éƒÄ[^_]Ã�UWVSƒì·D$$�<1Û·t$,|$ 9ó‹l$(}‰öƒì�_P¶+PCèüÿÿÿƒÄ9ó|çƒÄ[^_]Ã�vUWVSƒì·D$$�<1Û·t$(|$ 9óŠT$,}¶ê�vƒì�_PUCèüÿÿÿƒÄ9ó|ëƒÄ[^_]Ã�vUWVSƒì·D$$‹T$,�<…|$ f…Ò‹l$(t+·ò1Û9óÆEÆD.ÿ}‰öƒì�ŸPèüÿÿÿˆ+CƒÄ9ó|éƒÄ[^_]Ã�UWVSƒì·D$$�<…1Û·t$,|$ 9ó‹l$(}‰öƒì�ŸP¶+PCèüÿÿÿƒÄ9ó|çƒÄ[^_]Ã�vUWVSƒì·D$$�<…1Û·t$(|$ 9óŠT$,}¶ê�vƒì�ŸPUCèüÿÿÿƒÄ9ó|ëƒÄ[^_]Ã�vUWVSƒì‹T$,‹L$ ·D$$f…Ò‹|$(�,t}·ò÷ÇÆÆD>ÿt)1Û9ó}d�vƒìUèüÿÿÿˆ;CfÁèˆ;CƒÄ9ó|äëC‰ö€=uRV�PWèüÿÿÿƒÄë'‰öfÑê1Û·ò9ó}ƒì�D]Pèüÿÿÿf‰_CƒÄ9ó|çƒÄ[^_]Ã�vUWVSƒì‹|$(‹L$ ·T$$÷Ç‹D$,�,
+t51Û·ð9ó}vf¶D;f¶;ÁàƒìÂU·ÒRƒÃèüÿÿÿƒÄ9ó|ÙëM�v€=u·À‰D$(�
+‰|$$‰D$ ƒÄ[^_]éüÿÿÿ�fÑè1Û·ð9ó}ƒìU·_PCèüÿÿÿƒÄ9ó|êƒÄ[^_]Ã‰öUWVSƒì¶T$,·|$$‰ÐÁà|$ €=‹L$(�u·Á‰|$ ‰D$(‰T$$ƒÄ[^_]éüÿÿÿ�v1Û·ñ9ó}·èƒìWUƒÃèüÿÿÿƒÄ9ó|ìƒÄ[^_]ÃUWVSƒì‹D$,·|$$|$ f…À‹l$(t*·ð1Û9óÆEÆD.ÿ}�ƒì�_Pèüÿÿÿˆ+CƒÄ9ó|éƒÄ[^_]Ã�UWVSƒì·|$$1Û·t$,|$ 9ó‹l$(}�ƒìW¶+PCèüÿÿÿƒÄ9ó|êƒÄ[^_]Ã‰öUWVSƒì¶T$,·|$$‰Ð1Û·t$(Áà|$ 9ó�}·è�ƒìWUCèüÿÿÿƒÄ9ó|îƒÄ[^_]Ã‰öUWVSƒì‹D$$fÑè·À‹T$,�<…|$ f…Ò‹l$(t`·ò÷ÅÆEÆD.ÿt'1Û9ó}F�ƒìWèüÿÿÿˆ+CÁèˆ+CƒÄ9ó|åë(�vfÑê1Û·ò9ó}ƒì�ŸPèüÿÿÿf‰D]CƒÄ9ó|çƒÄ[^_]Ã�vUWVSƒì‹D$$fÑè·À‹l$(�<…|$ ÷Å‹T$,t01Û·ò9ó}J�v¶D+¶+ƒìÁàÂWRƒÃèüÿÿÿƒÄ9ó|Þë#fÑê1Û·ò9ó}ƒìW·D]PCèüÿÿÿƒÄ9ó|éƒÄ[^_]Ã�UWVSƒì‹D$$fÑè·À�<…¶D$,‰ÂÁâÂ‰Ð1Û·t$(Áà|$ 9ó�,}�ƒìWUƒÃèüÿÿÿƒÄ9ó|ìƒÄ[^_]ÃUWVSƒì‹D$$fÑè·À‹T$,�<…|$ f…Ò‹l$(t*·ò1Û9óÆEÆD.ÿ}�ƒì�ŸPèüÿÿÿˆ+CƒÄ9ó|éƒÄ[^_]Ã�UWVSƒì‹D$$fÑè·À�<…1Û·t$,|$ 9ó‹l$(}�ƒìW¶+PCèüÿÿÿƒÄ9ó|êƒÄ[^_]Ã‰öUWVSƒì‹D$$fÑè·À�<…¶D$,‰ÂÁâÂ‰Ð1Û·t$(Áà|$ 9ó�,}�ƒìWUCèüÿÿÿƒÄ9ó|îƒÄ[^_]Ã‰öƒì‹T$…Ò‹L$u
ƒìhÀét÷Á…{‰È%ðƒø„pƒøw…ÀtéB‰öƒø „§é2‰ö‰È%Ç‚ˆt=t~ƒìh é�÷ÁuƒìhèüÿÿÿÇ$`éï�vÇ‚œÇ‚˜Ç‚ Ç‚¤Ç‚ŒÇ‚�Ç‚”é±�÷Áuƒìh èüÿÿÿÇ$é�v‰È%=Ç‚œÇ‚˜Ç‚ Ç‚¤t=t3ƒìh@é2‰öÇ‚ŒÇ‚�Ç‚”é�Ç‚ŒÇ‚�Ç‚”éù�‰È%Ç‚ˆt=t~ƒìh éÁ�÷Áuƒìh èüÿÿÿÇ$éŸ�vÇ‚œÇ‚˜Ç‚ Ç‚¤Ç‚ŒÇ‚�Ç‚”éa�÷Áuƒìh`èüÿÿÿÇ$Àé/�v‰È%=Ç‚œÇ‚˜Ç‚ Ç‚¤t=t3ƒìh@éâ‰öÇ‚ŒÇ‚�Ç‚”éÍ�Ç‚ŒÇ‚�Ç‚”é©�÷ÁÇ‚ˆtƒìh€èüÿÿÿÇ$Àëp÷Áuƒìh`èüÿÿÿÇ$ ëR‰öÇ‚œÇ‚˜Ç‚ Ç‚¤Ç‚ŒÇ‚�Ç‚”ëƒìh èüÿÿÿƒÄ¸3ë�‰J1ÀƒÄÃ�v01.01Wrong customization - 16bit write was used with no implemented.
+Wrong customization - 16bit read was issued with no implementation.
+Flash record passed to setBusTypeOfFlash is NULL.
+ERROR: TrueFFS requires 8-bit access to DiskOnChip memory window
+       for 8-bit DiskOnChip connected with no address shift.
+ERROR: TrueFFS requires 16-bit access to DiskOnChip memory window
+       for 16-bit DiskOnChip connected with no address shift.
+TrueFFS does not support this flash access type (setBusTypeOfFlash).
+TrueFFS does not support this number of DiskOnChip data bits (setBusTypeOfFlash).
+       for 8-bit DiskOnChip connected with a single address shift.
+ERROR: TrueFFS requires 32-bit access to DiskOnChip memory window
+       for 16-bit DiskOnChip connected with a single address shift.
+       for 8-bit DiskOnChip connected with a double address shift.
+TrueFFS does not support this number of DiskOnChip data bits
+when connected with a double address shift (setBusTypeOfFlash).
+TrueFFS does not support this kind of address shifting (setBusTypeOfFlash).
+GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.comment4À
	ÜÀ	%ô
+ô
0ô
62 € F 7×OàÐ
+		°)ñÿ
+0Kfx…,(¤­T)ÐÙ€ê” ´!2:Ø#W`ü*~(% P+Â|&ä¤ÀH%F$HglˆˆE�­Ð-ÃÑ0åñ0S
+„E$ÌE<WUlIo¸I‡¥�§¬ª¾XpÓÈOú>"XFH ‘b4‡}¼X–	[Áp	Jí¼	V
+©docsys.cgcc2_compiled.flDocMemWinSizeNoShiftflDocMemWinSizeSingleShiftflDocMemWinSizeDoubleShiftflWrite16bitDummyFlDebugPrintflWrite16bitUsing16bitsNoShiftflwritewflWrite16bitUsing32bitsSingleShiftflwritelflRead16bitDummyflRead16bitUsing16bitsNoShiftflreadwflRead16bitUsing32bitsSingleShiftflreadlflWrite8bitUsing8bitsNoShiftflwritebflWrite8bitUsing16bitsNoShiftflWrite8bitUsing16bitsSingleShiftflWrite8bitUsing32bitsSingleShiftflWrite8bitUsing32bitsDoubleShiftflRead8bitUsing8bitsNoShiftflreadbflRead8bitUsing16bitsNoShiftflRead8bitUsing16bitsSingleShiftflRead8bitUsing32bitsSingleShiftflRead8bitUsing32bitsDoubleShiftfl8bitDocReadNoShiftflmemcpy_fromiofl8bitDocWriteNoShiftflmemcpy_toiofl8bitDocSetNoShiftflmemset_iofl8bitDocReadSingleShiftfl8bitDocWriteSingleShiftfl8bitDocSetSingleShiftfl8bitDocReadDoubleShiftfl8bitDocWriteDoubleShiftfl8bitDocSetDoubleShiftfl16bitDocReadNoShiftflUse8Bitfl16bitDocWriteNoShiftfl16bitDocSetNoShiftfl16bitDocReadNoShiftIgnoreHigher8bitsfl16bitDocWriteNoShiftIgnoreHigher8bitsfl16bitDocSetNoShiftIgnoreHigher8bitsfl16bitDocReadSingleShiftfl16bitDocWriteSingleShiftfl16bitDocSetSingleShiftfl16bitDocReadSingleShiftIgnoreHigher8bitsfl16bitDocWriteSingleShiftIgnoreHigher8bitsfl16bitDocSetSingleShiftIgnoreHigher8bitssetBusTypeOfFlash„‰
©Ê²àúD^}l¶þT¢îEb0q$‘ô0Ct0µC‹éƒ¨	X	§	ÿ	'
+y
+	Š
+ 
+¥
+
¬
+¾
+È
+Ò
+Ü
+æ
+#ð
+%ú
+'
:DNXiz3„4Ž5ž/¨1²2É
+Úðõ
ü ",6)@*J+`e
lŠ”!ž¨¹Ê9Ô:Þ;î6ø7
8
"
'

.
@
E

L
Z
d
"n
x
‚
,Œ
-–
. 
¥

'
Py÷"IwžÃ$ù&,('&™(reedsol.o/      1037556708  0     0     100644  3856      `
+ELF<4(
+S‹L$ŠQƒâf¶Áâ‹\$	Ðf‰ŠA¾Qƒà�âüf˜ÁúÁà	Ðf‰CŠA¾Qƒà?�âðf˜ÁúÁà	Ðf‰C¾Qf¶A�âÀÁúÁà	Ðf‰C[ÃVS‹t$¿ÆÑà1ÉD$f9ñ‹\$�Pþ}�v‰ØƒàAf‰fÑûƒêf9ñ|ì[^Ã�WVS‹T$‰Ñ¿ÁÑàD$1ÿIf…Ò�Xþ¾~‰öf‹ƒëf…Àt	÷‰ÈÑæIf…Àé[¿Ç^_Ã‰öƒì¿D$Pèªºÿf)Â¿Ò‰$è_˜ƒÄÃ‰öVSQ‹D$f…À‹t$tf…öu1Àë9�vƒì˜Pèj‰Ã¿Æ‰$è]�ƒÄf=ÿ~-ÿƒì˜Pè
+˜ƒÄZ[^Ã‰öSƒì¿D$ ¿\$PèlÿÿÿZY˜PSèŠÿÿÿ˜ƒÄ[ÃUWVSƒìfÇD$
+fÇD$þ�v‹D$ ƒìf‹8¿D$Pè¯‰Ãf‹D$ÀƒÄf=þ~-ÿÀf=þ~-ÿƒì˜Pè�f‰D$¾ƒÄ¿ë�ƒì¿ÛS‹T$,¿Æ¿BPèÿÿÿ1ÇXZSUFèôþÿÿƒÄfƒþ‰Ã~Ñƒì¿D$P¿ÇPè/ÿÿÿ¿T$‹L$4f‰QƒÄfÿD$
+fÿD$fƒ|$
+ŽEÿÿÿƒÄ[^_]Ã�‹L$1Òf9Ê¸}#Ñàf=ÿ~©t	-ë‰ö-÷Bf9Ê|Ý˜Ã�v‹L$1Àf…Éºu¸ÿÿÿÿÃ‰ö˜Ã‰öf9Êt÷Ñâf�úÿ~÷Ât
+�êë‰ö�ê÷@f=ÿ~Ó1ÀÃUWVSƒì‹D$(1íf9Åf‰D$
+fÇD$�ü‰ö¿D$‹T$$‹L$ f‹B¿A�€�Dú‰ÇfÁÿ�ýf)ÐGfƒøuE‹L$,¿Õ�Gf‰Q‰Øƒà‹L$0Áàf‰QE‹D$,¿ÕfÑûf‰<PE¶Ãf‰QfÁë¿Åf‰Aëo�vfÇD$f)D$¸
+f+D$‹L$,¿Õf‰<Q¿ð‰Øf#„6¹)ñ˜Óà‹L$0f‰QE¿Ó‰ñ�Gÿ‹\$,Óú¿Íf‰K¿|$¸f#x‹\$0f‰KEfÿD$f‹|$
+f9|$ŒÿÿÿfÇD$f9l$¾ÿÿÿÿ}_�v¿L$‹D$0f‹Hf…Ût>‹|$,¿Öf‹Wf9Ouf…öx‹D$0f	Pë‰ö‹\$,Ff‹K¿Æf‰C‹|$0f‹Of‰GfÿD$f9l$|¤ƒÄ[�F^˜_]Ãƒì¿D$Pè
+þÿÿƒÄ1É�1Ò©tºÑà%ÿA	Ðfƒù~âƒì˜Pè¤ýÿÿ˜ƒÄÃ�vUWVSƒì\‹l$p1Ò1Û�¿Ãfƒ|EtBCfƒû~íf…Òu1Àé�fƒúŽÎƒì¿EP¿EPèPüÿÿZY‰Æ¿EP¿EPè=üÿÿ_‰ÃX¿EP¿EPè*üÿÿƒÄf9Þ…Šf9Ã…�ƒì¿ÛSèAýÿÿƒÄf=žl‹T$tf‰ƒìSèpûÿÿ‰Â1ÛƒÄ�ƒì¿ÂPPCè‚ûÿÿƒÄfƒû‰Â~ç¿EƒìPƒì¿ÆP¿ÂPè_ûÿÿƒÄ˜PèUûÿÿ‹Œ$ˆf‰ƒÄ¸é7‰öƒì¿EP¿EPè*ûÿÿZY‰Ã¿EPP‰ÞèûÿÿƒÄf1Æ„’ƒì¿EP¿EPèûúÿÿ_‰ÃX¿EPPèìúÿÿ‰ÚƒÄf1Â„cƒì¿ö¿ÂVPè&ûÿÿY[‰Ç¿EP¿EPè»úÿÿ‰ÃXZ¿EP¿EPè¨úÿÿ‰ÚƒÄf1Â„ƒìV¿ÂPèåúÿÿ[^˜‰D$PPèúÿÿZY˜P¿ÇPèÊúÿÿƒÄ�T$Rj
+˜Pè½ùÿÿƒÄfƒ|$¸ÿÿÿÿ…F‹|$f‹T$"‰ø1Ðf‰D$<‹D$‰Áf3D$1ø‹\$‰Þ1Ã1Ñf‰T$8f‰D$2‰Úf‹D$3T$ 1È1Ðf3t$f‰D$>f3D$1ð1Øf‰T$@f‰t$:f‰L$6f‰\$0f‰D$4fÇD$Bƒìj
+�D$<Pè]ùÿÿY‰Æ_¿ÆP‰óÿt$è¶ùÿÿƒË‰ÆXZ¿ÃPÿt$è¢ùÿÿ_‰Ã¿Æ‰D$¿ûPèûÿÿf‰D$‰<$èûÿÿf‰D$ƒÄf�|$ž�òf=ž�èƒìÿt$èÏüÿÿZYÿt$1Þÿt$‰ÃèDùÿÿ‰ÂYX¿ÂP¿ÃPè‹ùÿÿY‰Ã¿öXV¿ÃPè"ùÿÿ‰ÃƒÄf…Û¸ÿÿÿÿ„ƒìW¿EPèùÿÿ‰ÂƒÄf3Ut{ƒì¿ÃP¿ÂPè>ùÿÿ‹”$ˆf‰‰<$èLüÿÿ‰ÃXZWWèÉøÿÿ‰ÂXY¿ÂP¿ÃPèùÿÿY_‰ÃV¿ÃPèªøÿÿ‰ÃƒÄf…Û¸ÿÿÿÿ„�ƒìÿt$¿EPè†øÿÿ‰ÂƒÄf3Uu¸ÿÿÿÿëmƒì¿ÃP¿ÂPè¼øÿÿ‹Œ$ˆf‰AƒÄ‹D$f9D$~+‹T$tf‰f‹L$f‰J‹D$xf‹‹L$xf‹@f‰f‰Që�vf‹T$‹D$tf‰‹L$f‰H¸ƒÄ\[^_]Ã�vUWVSƒì4�t$(‹\$HVSèÎöÿÿf¶[f‰\$[_�\$ SVèKøÿÿƒÄ�D$‰D$P�|$WSètûÿÿƒÄf…Àu1Àé��f…Ày¸ët1É¿Ø9Ù}‰þ½ž�	‰èAf+29Ùf‰2|îƒìÿt$Xÿt$XSÿt$ Wè@ùÿÿ‹T$dˆƒÄ ‹\$D1É¾1Ò9Á}‹\$Hf�<K‹\$Lf3KA9Á|ç1Àf;T$•À@ƒÄ,[^_]ÃUWVSƒì<�|$‹l$PW�t$$V�D$Pÿt$`èüÿÿÿƒÄƒøu;1Û¾L$9Ë}.ŠD$‰þˆD$�¿T 3T$X�úÿŠ00*¾L$C9Ë|Ü1ÀƒÄ<[^_]Ã‰ö?ÿ01.01GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.comment4h
+	ø%œ
++°
+0°
+6Ä
+7û
+?Ìp		<ºñÿt(t7/¬B4ð&8¨L=p5BVHp$N”Ûahôœ��AˆÔE�	Ü©ø	nreedsol.cgcc2_compiled.RTLeightToTenunpackpackgfiflogaloggfmulgfdivresidue_to_syndrommask.0convert_to_byte_patternsdeg512decoder_for_2_errorsflDecodeEDCflCheckAndFixEDCºì
+nftllite.o/     1037556709  0     0     100644  18744     `
+ELF`:4(

+ŠT$1À„Òt‰ö÷Ât@Ðêuó¶ÀÃ�v‹T$·D$‹J$ÓàÃ�UWVSƒì‹|$ ‹W8…Ò‹l$$tr·õf�<²­ÞuLf�|²­ÞuCƒì‹_hjj�D$PVWè°ÿÿÿZYƒÀPÿwhÿS@‹D$$D$ ‹W8f‰²f‹D$&fD$"f‰D²ƒÄ f‹²‹L$(f‰f‹D²‹T$,f‰ëJ‰öƒì‹_hjj�D$P·ÅPWèOÿÿÿZYƒÀPÿwhÿS@‹D$$D$ ‹L$Hf‰f‹D$&fD$"‹T$Lf‰ƒÄ ‹L$,f‹f;G r?f@t;‹G…Àf‰o|u'‹D$(·‹G4f‹Pfƒøÿt‹W0%ÿ€$€‹W0€j‹T$,fÇÿÿƒÄ[^_]ÃUWVSƒì‹D$<‹T$4‹|$8f9Ð‹l$0‰D$f‰|$
+f‰D$u
+¸é²‹L$�D$f‰L$f‰L$f‰|$f‰|$ƒì‹]hjjP·òVUègþÿÿZYƒÀPÿuhÿSDƒÄ …Àun‹Eh‹@4€xu‹E8…ÀtYf‰<°‹T$f‰T°ëJ‰ö‹E8…Àt
fÇ°­ÞfÇD°­Þ�D$P�D$PVUèþÿÿƒÄf‹L$
+f;L$u‹D$f;D$t	¸ë‰ö1ÀƒÄ[^_]Ã‰öVSV‹\$·T$‹C0€<‹t$x¸ÿÿëI�D$P�D$PRSè»ýÿÿ·D$·Ö%ÿÿÿƒÄ9Ât‹C4·P‹C0€$€‹C0€j¸ÿÿë�v·D$[[^Ã�v‹L$‰È‹T$Áè‹R<Áé¶ƒáÓøƒà¶€Ã�VS‹D$‹p<…ö‹\$ŠT$t}‰Ø¶ÒÁèƒúUŠ0°tƒúU1À…Òë
+‰ö�úÿ°t°‰ÚÁêƒâƒútƒúw…Òtë4ƒútƒút"ë(�áüë�áóÁàë��áÏÁàë�ƒá?Áà	ÁÁëˆ3[^Ã�vUWVSƒì‹l$ ÆD$	‹U<…Òt%ƒìÿt$,UèÿÿÿˆD$ƒÄ<t
¶D$	éÝ�vƒì‹Uhjj�\$S‹D$<ƒÀPÿuhÿR@ŠD$*ƒÄ :D$u<ÿt<Ut„Àu
+ˆD$	é…�‹Ehƒì‹P4ÇB jhÿulÿt$<ÿuhÿP@ƒÄ …ÀuR1ÿ¾UëG1ö‰ø<w:ƒì‰ð2D$¶ÀPèÁûÿÿˆÃX‰ð2D$¶ÀPè¯ûÿÿ¶À¶ÓÂƒÄƒúÃ‰ðˆD$	‰ø<v¸ëW¶\$
Sÿt$,UèWþÿÿƒÄ‰ØƒÄ[^_]Ã‰öWVSƒìP‹|$`·t$d‹G41Û€=f‹pt&�v‰àf‰XQV·ÂPWèzýÿÿ‰ÂC¶ƒÄ9Ã|Ý·D\þƒÄP[^_Ã�UWVSƒì<‹t$P‹^1Ò‹D$T÷ó‹l$XÁâ	1ÿ…í‰T$(ÇD$$ÿÿÿÿfÇD$ÿÿt‹T$X‹‹N$Óèf‰D$‹D$$‰‹D$T1Ò÷ó·è‹F4f‹hë%<t„ÀÇD$$ÿÿÿÿt‹D$,‰D$$QUSVèÛüÿÿGƒÄf;D$t=fƒÿ?w7ƒì·ØSVè™úÿÿD$8‰D$<YZPVèÜýÿÿƒÄ<ÿu©‹T$X…Òt
+‹D$,‹T$X‰fƒÿ?w	‹D$$ë@�v‹D$X…À�\$,t‹\$XƒìUVèºþÿÿ_]·ÀPVè:úÿÿD$8ƒÄ‰Sÿt$\VèîþÿÿƒÄƒÄ<[^_]Ã�vVSƒì‹\$‹shjj�D$P·D$,PSè÷ùÿÿZYPÿshÿV@f‹D$"D$ ƒÄ$·À[^Ã�vUWVSƒì‹\$,‹|$4‹l$8‹shjj�D$P·D$<PSè©ùÿÿZYPÿshÿV@f‹D$&D$$f‰‹D$ ‰EƒÄ,[^_]ÃWVSƒì‹T$(‹L$,‹\$ ·D$$�t$f‰T$f‰T$‰L$ƒì‹{hjjVPSèEùÿÿ^ZPÿshÿWDƒÄ0[^_ÃUWVSƒì‹l$$…í‹t$ »töE.uƒìhèüÿÿÿƒÄ¸éƒì‰nhÿu4èüÿÿÿˆ‹Fh‹@ƒÄ9ÃÇF0ÇF4ÇF8ÇF<ÇFs‰Â1ÀÑã@9Órù‰F‹Fh·P$‹^¯PˆÙÓê‰^$¸‰T$f‰V ·Ò�ÂÓà9Âv+¿CfÑl$·T$‰øˆÙ�ÂÓà9Âwå‹D$f‰F ‰^$f‹V f�úÿ/v‹F$ƒøw@fÑê‰F$f‰V ƒìÇFÇF@ÿÿÿÿfÇF.‹Fhÿp4èüÿÿÿ‰$èüÿÿÿ‰FlYÿu4èüÿÿÿ‰$èüÿÿÿ‰FpÇFLfÇF|ÿÿ1ÀƒÄƒÄ[^_]Ã�Sƒì‹\$·C Pèüÿÿÿ‰C0·CÑà‰$èüÿÿÿ‰C4‹[0ƒÄ…Ût…Àuƒìh@èüÿÿÿƒÄ¸?ë�1ÀƒÄ[Ã�VSƒì‹t$ ·\$$‹F0Æk�D$P�D$PSVè†ýÿÿÿt$ jSVèÍýÿÿƒÄ4[^Ã�vWVSƒì‹\$ ‹S0·t$$Š<ÿ‰Ñt<ïtƒà<@v
+¸éô€<ÿufÿK‹S0€$€‹C0€j�D$P�D$PVSèýÿÿ‹C8ƒÄ…Àt
fÇ°­ÞfÇD°­Þ‹{<…ÿt.ºõÿÿÿP‰ÑK$¸ÓàPhÿS$ˆÑ‰ðÓà�8PÿƒÄW‹K$+K¸Óà·À‹ShP‹K$+K‰ðÓà·ÀPÿshÿRH‰ÇƒÄ…ÿtƒìVSèãþÿÿƒÄ‰øë<ÿCx‹D$@…À‰D$uÇD$ÿt$hi<VSè´üÿÿƒÄ…Àu
‹C0ÆÿfÿC1ÀƒÄ[^_Ã�WVS‹\$‹Kh‹A4¶P¶¶„Â…À‹|$‰ÎtHtëJ�‹CP9CLwA‹F4ƒìÆ@‹ChjhÿspWÿshÿP@ƒÄ …À…Ÿ1À‹Sp‰öƒ<‚ÿu:@=€|ò‹Khƒì·D$(Phÿt$,WÿshÿQD‰ÆƒÄ ƒþu,ƒìWSè‚(ë*ƒìWSèv(Ç$€èüÿÿÿƒÄ¸ë8RjUWSèøÿÿƒÄƒì‹Chÿp4èüÿÿÿ‹Sh‹J4¶QƒÄ€¼ÂtÆA‰ð[^_ÃUWVSƒì‹|$$1ífƒÿÿ‹t$ ¸ÿÿtw�D$
+P�D$P·ÇPVèøôÿÿf‹\$ƒÄf;^ sRë8�D$P�D$PRVè×ôÿÿ‹D$
€ƒÄf9D$u,‰ßf‹\$Ef;^ sfƒý?w·Ó‹F0Š<ÿt»<ït·ƒà<@v°·ÇƒÄ[^_]Ã�UWVSƒì‹T$8f‰T$‹|$0‹G4·òf‹p‹l$4f‰D$f@‰ét�Ê€·É‰L$‹G0ÆfÿO·ÂhÿÿPQWè[õÿÿ‰ÃƒÄ…Ûtƒìÿt$Wè‘üÿÿéœfƒ|$ÿ„Ü·t$‹G0Š<ÿt<ïtƒà<@‡ÅƒìVWèÀþÿÿf‰D$"�D$*P�D$,P·l$*UWèÍóÿÿƒÄ fƒ|$ÿ»u‹G0€L€ÿt$·D$PUWèÈôÿÿ‰ÃƒÄ…Ût#ƒìÿt$Wè:üÿÿ‹G0€$€‹G0€jƒÄ‰ØëN�f‹D$f9G.v@f‹L$f9L$t4‹O0¶<Š\
ƒã‰øƒà¶ÓÐƒø@�;ˆë¸ë
+�‹G4f‰,p1ÀƒÄ[^_]Ã�vUWVSƒì‹l$$‹T$ ·õ‹B0€$€1ÿë�vGfƒÿ?w*ƒìVÿt$,èÄýÿÿ‰ÃYX·ÃPÿt$,è‡ûÿÿƒÄ…Àuf9ëuÏƒÄ[^1À_]Ã�WVSƒì‹\$ f‹Kvf‹{f9ùsR·Sv‹C4f‹P1öfƒúÿu9f9þs4ë�vf‹Kv�Af;Cf‰CvrfÇCv·Sv‹C4f‹PFfƒúÿuf;srÑfƒúÿu1Àé‚f‹sv�Ff;Cf‰CvrfÇCv·Ò‹C0Š„Àx<<ÿt<ïtƒà<@w-ƒì�D$PSè“ƒÄ…Àu:Q·ÆP·D$PSèoýÿÿƒÄë$‰öRj·öVSè«ƒÄƒøvu
ƒìVSè‘'ƒÄƒÄ[^_Ã�vWVSƒì‹\$ f‹s,‹|$$‰ð@f;C f‰C,rf‹C"f‰C,·S,‹C0€<ÿu@�D$P�D$PRSèŸ÷ÿÿƒÄf�|$
+i<tƒì·C,PSèúÿÿƒÄ…Àuf‹C,f‰1Àë�vf‹C,f9ðu—¸?ƒÄ[^_Ã�vUWVSƒì8·D$P‰D$$‹t$L‹T$$‹F4f‹Pf‰D$*‰T$ ‰Ñ¯N‰L$ ÇD$‹Fh‹@4ÿFdÇ@ Pèüÿÿÿ‹Vh‹R4¶RƒÄ€¼Âu!ƒìÿ5Vè$ƒÄ…À…º‹D$‰FP·T$‰T$‹V0‹L$Š<ÿth<ïtdƒà<@v]fƒ~t7ƒì�D$2PVèµþÿÿƒÄ…À…qSÿt$·D$2PVèÕûÿÿƒÄ…Àt"éT�‹L$H…ÉÇD$u¸vé9‰ö‹V0‹L$Š<ÿt<ïtƒà<@vƒ|$uQf‹D$1ÿf‰D$*ë‰öf‰D$*Gfƒÿ?wPÿt$·D$2PVèÿñÿÿƒÄfƒøÿuÚfƒÿ@uƒìÿt$ Vè3ôÿÿf‰D$:ƒÄÇD$$UUUUƒìÿt$VèŠõÿÿƒÄf=UUt*ƒì‹^hjj�D$8Pÿt$Vè€ïÿÿ_]PÿvhÿSDƒÄ ‹F0‹T$€$€‹F0ƒì€j·D$2PVèNïÿÿÇD$ ÇD$ƒÄ‹L$;N‰Åƒj�D$ ‰$�ÇD$ ÿÿÿÿ1ÿ‰öQÿt$ÿt$VèÑóÿÿ‰ÃƒÄ9ëuxƒì‹Fhÿp4èüÿÿÿ‹Nh‹Q4¶R¶„ÂƒÄ…Àt
ƒøuéë�v‹T$9VL‡ÛƒìjhÿvlSÿvhÿQ@ƒÄ …À„¼ƒ|$H„µ¸véš�vƒûÿ„ŸƒìUVèÉñÿÿƒÄ,ÿtƒ|$Htv¸vél�ƒì‹FhjhÿvlSÿvhÿP@ƒÄ …Àt‰\$ ë<jÿvlUVèøÿÿƒÄ…Àt
ƒøté*�vÿF`ë/�v‹T$H…Òu(¸vé
‰öGfƒÿ?†Ùþÿÿ¸éö�vÿD$ÿD$ÿD$ÿFP‹L$�Å;N‚žþÿÿ‹D$…Àtnhÿÿÿt$·D$2PVèÙîÿÿƒÄ…Àuƒ|$u·T$*‹F0€$€·T$*‹F0€jë�·T$*‹F0€$€·T$*‹F0ŠL$‹V4f‹D$*‹L$f‰JëN�vf‹D$f;D$*t2ÇD$$ƒì‹^hjj�D$8Pÿt$Vèíÿÿ_]PÿvhÿSDƒÄ ‹F4‹T$fÇPÿÿƒìÿt$VèäùÿÿƒÄƒÄ,[^_]Ã�UWVSƒì‹|$ ·\$$‹G4f‹,Xfƒýÿt[·Í‹W0Š<ÿt<ïtƒà<@wC€$€‹G1ö¯Ø9Æs3�vPjSWè^ñÿÿƒÄƒøÿt‹O$Óè·À‹W0€<y·ÅþFC;wrÐƒÄ[^_]ÃUWVSƒì‹|$0ÇD$�‹G@‰D$ÇD$fÇD$ÿÿfÇD$1Òf;Wƒ%‰ö·l$‹G4f‹h‰Âfƒúÿf‰D$„òf‹D$f9G.wƒìUWèÿÿÿf‹D$@f‰G.ƒÄf‹T$·Â‹O0Š<ÿt<ïtƒà<@w·ÂŠƒà¶ðë‰ö‹w…ö„Õ9t$‚Ž·Â€<‰�RUPWèµíÿÿ·T$*‰Á‹G0Š1ÛƒÄ<ÿt<ïtƒà<@w,fƒùÿt(ƒû?w#�PU·ÁPWè|íÿÿ‰ÁCƒÄfƒùÿt
+ƒû?vãë�1Û1Àƒû@”ÀH!Ã9t$u9\$sf‹T$‰\$‰t$f‰T$fÿD$f‹D$f;G‚Ýþÿÿ‹T$;Ww
+‹L$fƒùÿu*‹l$…í…�¸?éaf‹D$ÇD$f‰D$ëÃ·Á‹_4·C‹G0Š<ÿt<ïtƒà<@wS·Áf‹C‹T$4f‰f‹Gf‰D$Vj·D$ PWèWùÿÿƒÄ…Àtƒøvté÷‰öf‹T$f9WuÿD$ƒ|$†þÿÿ‹\$…Û„³‹D$4fÇÿÿf‹W
+Bf‰T$f‹W f9T$ƒ‘·L$‹G0Š<ÿtr<ïtnƒà<@vg�D$P�D$PQWè
êÿÿƒÄf‹Gf9D$sD·T$‹G4f‹Pf‰D$f@t/QjRWè¤øÿÿƒÄ…ÀuNƒì·D$ PWèÒüÿÿ‹T$Df‹D$*f‰ƒÄf‹W fÿD$f9T$‚oÿÿÿ‹D$4fƒ8ÿt
fƒt1Àë‰ö¸ƒÄ[^_]Ã�vVSV‹\$fƒ{‹t$wƒìVSèìüÿÿƒÄƒø?u‰t$‰\$[[^é„÷ÿÿY[^ÃUWVSƒì‹\$ ‹|$$;{@‹l$(u
‹Ch‹@4‹P …Òt{;{(r
+ÇCDëm�1öÇCHÿÿÿÿë(�‹Clƒì‰CD‹ChjhÿslÿsHÿshÿP@ƒÄ …Àt*Fƒþ?$‹CH‰D$P�D$PWSè€íÿÿ‰CHƒÄ@u·ÇCD‹Ch‹@4‰{@Ç@ …ít‹CH‰E‹CDƒÄ[^_]Ã�vUWVSƒì‹D$4‹l$0f‰D$·ð‰÷‹E|}0f‰D$�D$‹\$8P�D$PVUèWèÿÿS�D$*PVUèfîÿÿƒÄ fƒ|$ÿuÆÿé+�vf�|$i<tÆÿf‹T$f‰U|é‰öŠƒâˆ‹E f9D$s.�Ê€ˆ·\$‹M0Š€úÿt€úït
ˆÐƒà<@v„Òy€$ï‹D$f…ÀˆÀf;ErƒìVUèhðÿÿƒÄéªƒìVUè‚íÿÿ·\$(f‰D$‹E4‰\$‰D$ƒÄf�|$f‹Xtbfƒùÿt·Ñ‹E0Š<ÿtF<ïtBƒà<@v;‹D$‹T$‹\$f‰S€'ïf�|$UUu‹E0€$€‹E0€jfƒùÿt+ƒì·ÁPë‰öf�|$UUuƒìVUèùóÿÿƒÄë¸ë�1ÀƒÄ[^_]Ã‰öUWVSƒì‹\$01Ò‹D$4÷sf‰D$·ø‹C4f‹4xÁâ	1ífƒþÿ‰T$ÇD$ÇD$tN·Ö‹C0Š<ÿtA<ït=ƒà<@v6RjWSè`õÿÿƒÄ…Àtƒøv….ƒìWSè>ƒÄ…À…‹C4f‹4xf‰t$ë)�€út1À€úU”À‰D$PW·D$"PSè]èÿÿf‰D$*EƒÄf‹D$fƒøÿt)ƒý?w$ƒì·ÀPSèæÿÿZYD$PSèZéÿÿˆÂƒÄ€úÿu¤ƒý@u‹S0fÇD$ÿÿ·Æ€$€‹S0€jfƒ|$ÿ…Ý¶‹S49Åf‹4zr2QjWSè‹ôÿÿƒÄ…Àtƒøv…YƒìWSèiƒÄ…À…D‹S4f‹zf9ðt
+‰ÆÇD$ƒì�D$"PSèþûÿÿƒÄ…À…RW·D$"PSèÙðÿÿƒÄ…À…ü‹C4f‹xf9ðt
+‰ÆÇD$‹D$…Àt6‹l$…ít.ƒì·ÆPSèåÿÿY_D$PSè^èÿÿƒÄ<Ut
ÇD$f‰t$‹D$4‰CPjÿt$<·D$"PSèÝäÿÿ]ZD$PSè¸îÿÿƒÄ…Àu{‹D$f9C.vof9t$t<·|$‹K0Š„Òx-ˆÐƒà<?wH�Bˆ‹|$…ÿtB·Ö‹K0Š
+©t*Hˆ
+ë,‹L$…Éu$·Ö‹[0ŠˆÈƒà<?w
+�Aˆë
+‰ö¸ë�1ÀƒÄ[^_]Ã‰öUWVSƒì‹\$ ‹s…ö‹l$$¿t
¸é��v;k(¸stfƒ{vÿt%f‹Ct@fƒøïf‰CtvƒìfÇCtSèüÿÿÿƒÄ…ÀuH;k@u
‹Ch‹@4Ç@ ÿCX1öƒÿu*‰ö9k@uÇC@ÿÿÿÿQÿt$,USFè¿üÿÿƒÄƒþ‰ÇƒÿtØ‰øƒÄ[^_]Ã‰öUWVSƒì‹t$0‹F…À‹l$4t
+¸é|‹T$8�*;F(v¸éf‰öÇD$‹D$89D$ƒL‰öWjUVèèÿÿ‰ÃƒÄƒûÿ„1Ò‰è÷vf‰D$·ø‹F4·x‹F0Š<ÿtI<ïtEƒà<@v>SjWVèËñÿÿƒÄ…Àtƒøv…ïƒìWVè©ƒÄ…À…ÚQjUVè�çÿÿ‰ÃƒÄ�T$‰T$ÆD$ÆD$RjSVècåÿÿƒÄ€=u‹Nh‹A4¶P¶€¼‚u
+‹F<…Àu‹Nhƒìjjÿt$ �CPÿvhÿQDƒÄ ‹N$‰ÚÓê·Ú‹N0Š<ÿt<ïtƒà<@w3€<y‹F4f‹xf‹D$f9F.v·ÒŠ
+©tHˆ
+ë¸ë�ÿD$ÿF\‹T$8E9T$‚¶þÿÿ1ÀƒÄ[^_]Ã1ÀÃ�UWVSƒì‹l$$fÇD$ÿÿÇD$‹]1ÿƒûÿ‹t$ ……‹^…Ût
¸éµ�vƒì�D$PVè6õÿÿ‰ÇƒÄ…ÿtfƒ~„�·F¯F‰E1Àé~‹L$…Étf‹D$
+f‰D$ÇD$ë‹D$f;D$
+uƒìSVèßôÿÿ‰ÇƒÄ…ÿu5‹]·N‹V‰È¯Â9Øs)‹V…Ò…gÿÿÿƒì�\$SVè¢÷ÿÿ‰ÇƒÄ…ÿt‘·N‹V¯Ê‰M‰øƒÄ[^_]Ã‰ö‹D$‹@(ÃSƒì‹\$‹C0…ÀtƒìPèüÿÿÿƒÄ‹C4…ÀtƒìPèüÿÿÿƒÄ‹C8…ÀÇC0ÇC4tƒìPèüÿÿÿƒÄ‹C<…ÀtƒìPèüÿÿÿƒÄÇC8ÇC<ƒÄ[Ã�v‹D$ÁàÃ�vUWVSƒì‹|$(‹Gh·T$,‹@4Ç@ RWè<àÿÿ‰Æ‹O$¸Óà�,0ƒÄ9îƒ€‰öƒì‹GhjhÿwlVÿwhÿP@1ÛƒÄ Pjh·ÃGlPÿƒÄ…Àu8ƒÃf�ûÿvÚƒì‹GhjjÿwlVÿwhÿP@ƒÄjhÿwlÿƒÄ…Àt1Àë�Æ9îr‚¸ƒÄ[^_]Ã�UWVSƒìx‹œ$ŒfÇD$HÇD$DÇD$@ÇD$<hÀèüÿÿÿ^_Áãÿ´$��«UèæÿÿƒÄ…À…Ö	Qjj�t$\VÿƒÄ‹D$<f;ƒ fÇƒsF�ƒì‹]hjjV·EPUèúÞÿÿ_ZPÿuhÿS@ƒÄjhVÿƒÄ…Àt‹E@f;E f‰Er»‹Œ$„ŠQˆÐƒà	<	u`‹…Àt…À@tSë9�Htë3�vˆÐ%ö‹”$„ˆBˆÂë3�vfƒ|$Xt‹Œ$„Çÿÿÿÿë�ƒìUèýÿÿƒÄ¸3éö‰öƒâtS‹”$„‹…Àx‹M$HÓø‹L$<�Lf‰L$<é…‰ö‹Ef‰D$f;E r
+fÇD$<ët�‹D$Xfƒøvif‰D$<ëb�v‹”$„‹B(…À~‹M$HÓø@f‰D$<·À‰B(ë‰ö‹Œ$„ÇA(‹„$„€xt‹@‹‹M$HÓè‹T$<�Tf‰T$<‹Ef‰D$f‹T$f‰T$>ƒì�D$fPèüÿÿÿ‹L$Lf‰M"‰D$P‹M$¸ÓàH‰Eƒé	¸Óà‰E‹”$”»d¶B‰Þ·M")Æ¯ñ‰ð·} )Ï™÷ÿ‰Á‹„$”(H·} f¶H·u"‰|$)t$f‰M¶P)Ó¯\$‰Øº…ëQ÷ê‰ØÁøÁú)ÂÑ·ÁÆ‰\$ƒÄ9÷f‰M¸@Žw‹M$ÇD$DÓd$D‹E f+E"ƒìf‰EUèääÿÿ‰ÃƒÄ…Û…G·M ·U"‰È)Ð1ÿ9Ã}1Û‹u4fÇ^ÿÿ·M G·U"‰È·ß)Ð9Ã|æ‹E f9ErQÇD$@Qjhÿhÿ1ÿƒÄf;} s_�vƒì·ß‹u0SUèØûÿÿƒÄ…À²ÿu1Òˆ3Gf;} rÛë5�ƒì‹]hjQÿu0·EPUè	Üÿÿ_ZPÿuhÿS@‰D$TƒÄ …À…x‹E0€8u¸wév‰öfƒE‹”$ˆöB.„Ì·B$¯B¶Z ¿1Ò÷ó9ß‰D$(�«�‹D$(¯Ç‹M$Óø·Ø‰\$ ‹E0€<ÿuÇD$0Æ‹M$V+M¸ÓàÓã·À‹UhP·ÃPRÿRH‰D$DƒÄ…À…Ö1öƒì‹]hjjhÿt$8Uè/ÛÿÿZ‰òÁâ	YÐPÿuhÿSD‰D$TƒÄ …À…œFƒþ~Â‹Œ$ˆG¶A 9ÇŒVÿÿÿ1ÿ‹U f9×s·Ï‹E0€<ÿtÆk‹U Gf9×rçfÇE"1ÿ1Òf;|$<s<f;} s4‹M0�·ÇŠ<ÿt<ïtƒà<@w	�Bf‰E"‰ÂGf;T$<sf;} rÔë‰ö1Òf;T$<‚Ïf‰}"f‹U"1ÿf9×sC‹M0�·ÇŠ<ÿt/<ït+ƒà<@v$‹”$„f¶Bf‹Uf9Â†Ž�Bÿf‰Ef‹U"Gf9×rÁ·U"·M·] �9ÃŽf‰Ø)Ð‹T$D)È…Òy�ÂÿÁú	¯Â‹U‰Ñ‰E(�Dÿ1Ò÷ñf‰E‹M f‹E"f9Èf‰Es(·Ð‹E0€<ÿt#‹E@f9Èf‰Es·Ð‹E0€<ÿuçë�·U‹E0Æj‹E@‹M f9Èf‰E
+s)·Ð‹E0€<ÿt$�f‹E
+@f9Èf‰E
+s·Ð‹E0€<ÿuæë‹E0·U
+Æjf‹}"é—ƒì·ßSUèâÿÿ‰D$DƒÄƒøu7f;}t$f;}
+tÿD$8‹E0Æk‹T$8ƒÂ·E9Â�yÇD$4ë�v‹D$4…À…„‹„$„‹H0…Ét,f‹E"‰úf)ÂBƒì·ÒR‹U f)Â·ÒRÿÑ‰D$DƒÄ…À…JG‹U f9×‚]ÿÿÿ1ÿf9×s‰ö·Ï‹E0€<kuÆ‹U Gf9×rçWjhÿ�\$\Sÿf‹U"‹E f)Ðf‰T$hf‰D$fƒÄjhSÿ[‹E(^Áà	P�\$fSèüÿÿÿ·U‹E0Æÿ·U
+‹E0ÆÿƒÄf‹T$f;Uuƒ|$0tƒìSèüÿÿÿƒÄ9D$@„ÆQhjÿulÿƒÄj�D$XPÿulÿfÇD$Nf‹}
+ƒÄ�ƒì·÷VUèàÿÿ‰D$DƒÄ…Àu,ƒì‹]hj·E Pÿu0VUè¡×ÿÿ_ZPÿuhÿSD‰D$TƒÄ ‹\$4…Ûu'ƒì‹]hjhÿulVUèm×ÿÿZYPÿuhÿSD‰D$TƒÄ ‹|$4…ÿ…Ý‹}fÿD$>fƒ|$>†mÿÿÿ‹Œ$„öA…0fƒ}"„%ÆD$Vjh�\$TSÿƒÄjjF�D$XPÿÇD$T‹M$Ód$T1ÿƒÄé±‰ö‹D$‹”$„;B(u"‹BŠ@ˆD$Sj‹BƒÀP�L$TQÿƒÄ‹D$D9D$4fÇD$<}W‹uh1Ûƒìjj�T$\Rÿt$0Uè~ÖÿÿZY¶T$7ØÐPÿuhÿVD‰D$T‹Eh‰ÆƒÄ f‹NfL$<·D$<‰Ã;\$D}‹D$4…Àt®‹L$4…Étëy‹„$„ÿ@(Gf;}"sh·×‰T$‹E0€<ÿußƒìRUèÉÞÿÿ‰D$DƒÄ…À„"ÿÿÿë=‹Ef‹|$>f9Çf‰D$s+‰ö·×‹E0€<tƒìRUèŽÞÿÿƒÄ‹Ef‰D$Gf;|$r×‹T$4…Òt3ƒìhàë1�ƒìUè»ôÿÿƒÄ¸@ë5�ƒìUè§ôÿÿƒÄ¸ë!�ƒìh èüÿÿÿƒÄƒìUèƒôÿÿ‹D$DƒÄƒÄl[^_]ÃVS‹T$‹t$‹B(‹Z$‰ˆÙ·B"Óà‰F‹Bx‰F‰^1À[^Ã�UWVSƒì‹|$ ¹…ëQ‰È·W ÷ê‰Ð1Ûf‹O ‹l$,Áèf9Ë‹t$$ÇEs_·À‰D$‰ö·Ó‹G0€<kuD‹E;D$w#‹O$ƒìÓâ@‰‰EjVèüÿÿÿ‰ÆƒÄf‹O ë‰öƒìh@èüÿÿÿƒÄ¸@ë�Cf9Ërª·G ‹O$Óà‹T$(‰1ÀƒÄ[^_]Ã�UWVSƒì`‹D$xÇD$0ÇD$$¶P‹|$t‹\$|jjÁç�l$L¶‡UÆ„ÂÿÇ$èüÿÿÿYXS�·VèíÚÿÿƒÄ…À…—‹‡h‹T$|‰f‹‡ ‰Âf…ÒÇ‡xfÇ‡tU‰ï�vƒìjjW·FP‹^hVèÊÓÿÿ]ZPÿvhÿS@ƒÄjhWÿƒÄ…Àtf‹F@f‹V f9Ðf‰Fr·ë�f‹V f‹Ff9Ðrƒìh)èüÿÿÿƒÄ¸éò�@f9Ðf‰F
+sR�|$0‰öƒìjjW·F
+P‹^hVèFÓÿÿZYPÿvhÿS@ƒÄjhWÿƒÄ…Àtf‹F
+@f‹V f9Ðf‰F
+r·ë�f‹V f9V
+rfÇF
+ÿÿf‹D$Ff‰F ‹D$Hƒìf‰F"�D$VP¿èüÿÿÿf‹V"‹^$fV ˆÙ‰úƒë	‰|$ÓâˆÙÓd$‰ÅÁí	‹D$J‰V�T(ÿ‰T$‰F‰Ð1Ò÷t$‰Áf‰NˆÙ‰n(·V Óí·N"·Å)ÊƒÄ9Ð~~fƒ~
+ÿtkf‹D$6f‰F ‹D$8ƒìf‰F"�D$FPèüÿÿÿf‹V"‹^$fV ˆÙ‰úƒë	Óâ‰ÅˆÙÓçÁí	J�D/ÿ‰V1Ò÷÷‰Áf‰NˆÙ‰n(·V Óí·N"·Å)ÊƒÄ9Ð‰~~¸é‡‰öƒìVè#ÚÿÿƒÄ…À…qƒìj·F Pÿv0·FP‹^hVèÑÑÿÿ_]PÿvhÿS@‰ÃƒÄ …ÛtAfƒ~
+ÿ„Ûƒìj·F Pÿv0·F
+P‹^hVè”ÑÿÿZYPÿvhÿS@‰ÃƒÄ …Û…™1Àf;FfÇD$&s ‹V4�v·ÀfÇBÿÿf‹D$&@f;Ff‰D$&ræ1É1Àf;N fÇD$&sN�f;F"rf;Ftf;F
+t·À‹V0€<ÿtë‹V0·Á€<ÿtÆkë‰öÆjf‹L$&�A‰Áf;N f‰D$&r³1É1Àf;N fÇD$&sK‰ö·À‹V0Šƒèj<v)P�D$0P·ÁPVè8èÿÿ‰ÃƒÄ…Û…Ë‹D$,Fxf‹L$&�A‰Áf;N f‰D$&r·f‹F"‰Áf;N fÇFf‰D$&sP·Ø‰ÚV0Š<t<�u"ƒìSVèLÝÿÿƒÄf‹L$&f;N|ufÇF|ÿÿë‰ö<ïuÆÿf‹L$&�A‰Áf;N f‰D$&r°f‹F"f‹V f9ÐfÇFf‰D$&‰Ás'‹^0�v·À€<ÿu	fÿFf‹L$&�Af9Ðf‰D$&‰Árßf‹F"fƒ~|ÿf‰F,ÇF\ÇFXÇFTÇFdÇF`„‘�D$*P�D$,P·F|PVè¬Ïÿÿ‹D$8%ÿf‰D$8ƒÄf;Fs·T$(‹F4f‹Pf;F f‰D$&rƒìh€èüÿÿÿ‰4$èqîÿÿƒÄéEýÿÿ�·Ð‹F0€$€·T$&‹F0€jUj·D$0PVèÿÝÿÿƒÄ…À…¥fƒ~uƒì�D$.PVè£âÿÿƒÄ‹\$t‰3ƒìÇCèÇCÜÇCŒÇC$4ÇC(Ø5ÇC,0ÇC0Ä*ÇC0ÇC 8ÇC8ð*ÇCÇChCèüÿÿÿƒÄ€=u·F ƒìÁàPèüÿÿÿ‰F8ƒÄë�ÇF8‹F8…Àt:fƒ~ fÇD$&t<‰Â‰ö·D$&fÇ‚­ÞfÇD‚­Þf‹D$&@f;F f‰D$&rÝë�vƒìhÀèüÿÿÿƒÄ€=u#‹N$·F ƒéÓà‰D$ ƒìPèüÿÿÿ‰F<ƒÄë	‰öÇF<‹V<…Òt.1À;D$ s6ëƒìVèïìÿÿƒÄ‰ØëU‹V<�ÆU@;D$ rñë�vƒìhèüÿÿÿƒÄ‹Nxºðÿ‰Ó‰È1Ò÷óf¶Òf‰Vt·V‰Ó‰È1Ò÷óÇFf‰Vv1ÀƒÄ\[^_]Ã�vW‹VƒúS¸fe�RÁàÇ€ +Ç€Œ �B£1Ò¿¾»¹�‰ÐÁàBƒÀ0ƒúÇ8Ç0ÇÇvÖ1À[^_ÃVSƒì‹t$‹\$ h@èüÿÿÿ‹FhƒÄ‹@4Ç@ jSVè€Ïÿÿ‹FhÇ$jhƒÃSÿvhÿPDƒÄ$[^Ã�vUWVSƒì‹t$0‹F(9FLƒ5ƒì¶Pèüÿÿÿ‰ÅƒÄ…íuƒìh€èüÿÿÿƒÄé�v‹^L1Ò‰Ø÷v‰Áf‰L$‹V()Ú;T$4v‹T$4‰T$4‹Fh‹@4Ç@ WhhÿÿvlÿƒÄ‹\$4…Û„´‹^L1Ò‰Ø÷vÁâ	‹N$·úºÓâ)ú‹L$4Áê	9Ñ‰L$v‰T$·D$‰D$‹F4‹L$f‹Hfƒøÿu�‰FLéMƒì·ÀPVè§Ëÿÿø‰D$ƒÄ‹L$1ÿ…É„)�D$‰$�ÇD$ÿÿÿÿRÿt$ÿvLVè:Ðÿÿ‰ÃƒÄƒûÿu‰ú¶ÂÁà	‹\$ÃƒìSVè¤ÎÿÿƒÄ,ÿuEƒì‹FhjhUSÿvhÿP@ƒÄ …À…×PhUÿvlÿƒÄ…À„”ƒìSé‚�ƒì‹FhjhUSÿvhÿP@ƒÄ …Àt"ƒø…�ƒìSVèáýÿÿY[ÿt$VèáÝÿÿƒÄ‹T$ƒúÿtCƒì‹FhjhURÿvhÿP@ƒÄ …ÀuORhUÿvlÿƒÄ…Àtƒìÿt$ Vè‰ýÿÿƒÄG‰ùÿFL¶Á;D$‚ßþÿÿ‹D$fÿD$)D$4…Lþÿÿ1ÀƒÄ[^_]Ã‰öƒìjÿÿt$èšýÿÿƒÄÃ‰öVSS‹\$fƒ{‹t$uƒì�D$
+PSè¬ÝÿÿƒÄ…ÀuQj·ÆPSèÔØÿÿƒÄZ[^Ã�UÿKâ“÷UU01.01Debug: media is not fit for NFTL format.
+Debug: failed allocating conversion tables for NFTL.
+writeAndCheck : The sector was not erased and is ignored
+Debug: starting NFTL format.
+Debug: NFTL failed while formating the binary partition.
+Debug: finished NFTL format.
+Debug: ERROR to many bad blocks.
+ERROR - a bad unit header encountered.
+Debug: NFTL runs without U-cache
+Debug: NFTL runs without S-cache
+markAsIgnored : A sector is being marked as ignored
+
+Debug : Can not verify sectors since no buffer was allocated
+ANAND„¨¬ Debug: starting NFTL mount.
+Debug: not NFTL format.
+Debug: finished NFTL mount.
+GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.rodata.str1.1.rodata.comment4(6	HEð%\6+€6 0€662 6À F2`9aUÁ9]Ã97ú9fh<0;	˜A¯ñÿ'1 A0$MTîYDme´'}Ü•‘t ”S¶èÇAÓLTá Pïð[øLS 9Ü+
+(,3Q6›B¤iM
[Y°8fôCoì5;|h‰‰€3V—8€§¸õµèµ¿ ŽÉ0ªàÜ®ìŒ¤ù04ú08u+0ÀË9DŒ 8
+OÄ*+Xð*¯` +
jØ5v	„“ ­¸ËÔÜêl
ùô$-4°
@òÿCKX`k��°2|Ÿ§nftllite.cgcc2_compiled.scacheTableonesCountunitBaseAddressgetUnitDatasetUnitDatagetNextUnitgetSectorFlagsFromCachesetSectorFlagsCachegetSectorFlagsfindEndOfEndlessChainvirtual2PhysicalgetFoldMarkgetUnitTailersetUnitTailerinitNFTLinitTablesmarkUnitBadformatUnitwriteAndCheckmarkAsIgnoredlastInChainassignUnitformatChainallocateUnitfoldUnitcheckFoldingfindFreeUnitverifySectorscreateUnitCountfoldBestChainmapSectormountUnitallocateAndWriteSectorwriteSectordeleteSectortlSetBusydefragmentsectorsInVolumedismountNFTLvolsisErasedcheckSum.0formatNFTLNFTLInforeadBBTmountNFTLcheckVolumesectorFlags.1flMaxUnitChainFlDebugPrintflSocketNoOfflBufferOfflReadBackBufferOfflmalloctffssetflVerifyWriteswapUnitsflSectorsVerifiedPerFoldingflMarkDeleteOnFlashflPolicyflfreegetAnandRecfftffscmpfromUNALLONGtffscpytoUNALLONGflAddLongToFarPointerflUseNFTLCacheflRegisterNFTLnoOfTLstlTableÖª;Ð;<2==>"=*?Z@k@„‰<z	A 
+B¹
+¾
+<ã
+=÷
+B@=TB`D*=<BP;/C~E•FLG_G€G“G¸  I- J\ Ie Jº ¿ <Ñ ò A!!5!1<!J’"KÀ#IÆ#Aã$ 'A¾'1Å'LØ'M(K*(A=(L)1)L%)Ao)Lm* *¥*<W+Nl+q+<Õ+Ý+Bä+Aë+1ð+<ù+,,(,3,e,1l,J�,1¢,<é,1ð,J?-KÃ-K¶0»0<$1+12191@1G1N1U1\1c1v11{1<„1O—1@ð1õ1<þ1O2@h2m2<³2QË2RÏ2Õ2RÙ2á2Qè2í2ò2÷2:3?3<i37Ÿ3?°3µ3<4A5J‹5Jflbase.o/       1037556709  0     0     100644  1020      `
+ELFH4(
+‹T$‰Ð‹L$fÁèˆAˆÃ‹T$f¶BÁàf¶Ð·ÀÃ‰öVSƒì‹\$·Ã‹t$PVÁëèüÿÿÿƒÆ‰\$$‰t$ ƒÄ[^éüÿÿÿ�VSƒì‹\$SèüÿÿÿƒÃ‰Æ‰$èüÿÿÿƒÄ·ÖÁà�[^Ã�01.01GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.comment4ˆ	Ü %¼+¼0¼6Ð7?ØÀ		˜Añÿ
+ ),/4\+flbase.cgcc2_compiled.toUNALfromUNALtoUNALLONGfromUNALLONGBg	t	Wdosformt.o/     1037556710  0     0     100644  3176      `
+ELFÐ4(UWVSƒì(‹D$<‹t$L‹\$D‹|$@‹l$Hÿ0‹T$@ÿR,‰D$1Àƒþ•ÀZ�D@‰D$V�D$(P�D$(PSÿt$$èüÿÿÿƒÄ ‹L$0‹Q4…ÒtP�D$P�D$Pÿ1ÿÒƒÄ‹D$f‰G‹D$ƒìf‰Gh�GPèüÿÿÿ‰èˆGÆGø‹D$(‰G‹‹T$$¯Ú¯Ø)Ã1À�ûÿÿŸÀ‰_ ZH·ÓY!ÂR�GPèüÿÿÿ‰Ø™÷|$‰ÁŠD$ƒÄˆG
ë‰öŠG
ÑàˆG
Ñù…öuŠG
<w�ùþæë	��ùþÿØ¶W
‰ÐÁà	)ÐÁà)ÐÑà9G s�TI‰ÐÁèÂÑú‰ÐHy�‚þë�v�	‰ÐƒÀy�‚Áø	@·ðf‰w¹…ëQ‹D$÷á‰ÓÁë…Û»ƒû~»‰ØÁàƒì·ÀP�GPèüÿÿÿƒÄ‹L$0‹A4…Àt#¯îl$�+¶W
÷Ð‰ÑD$1Ò÷ñBf‰Wë‰öfÇGƒÄ[^_]Ã‰öUWVS�ì‹´$(‹¬$$‹¼$,hj�\$SÿƒÄhÚhSÿÆ„$Î€�œ$ÎƒÄfƒ~vÆ„$¿fÇ„$Àë‰öÆ„$¿fÇ„$À¶V
‰ÐÁà	)ÐÁà)ÐÑà9F ²r²ˆSŠFHˆC�Wÿ�GÿÁâ%fVÁèÂf‰S·FƒìP�CPèüÿÿÿY_ÿv �CPèüÿÿÿfÇ„$UªƒÄ�D$PjÿuÿU�Ä[^_]Ã‰öUWVS�ì ‹œ$<‹´$@‹¬$8hj�D$PÿÆD$D€ÆD$F)ƒÄjS�D$CPÿƒÄjj �\$GSÿƒÄ…ötRjVSÿƒÄPj¶U
‰ÐÁà	)ÐÁà)ÐÑà9E ºrº	R�D$‰D$�D$RPÿ‹|$ü‰î¹	ó¥ÆD$ éƒÄjh�D$PÿfÇ„$UªƒÄÿt$ÿu‹”$<ÿ2ÿR�Ä,[^_]Ã‰öUWVS�ì‹´$4·~~ÇD$€~„�·V‰ö1Û9Ó}r�l$‰öPhjUÿƒÄ…Ûu-ŠFˆD$ÆD$ÿÆD$ÿ¶V
‰ÐÁà	)ÐÁà)ÐÑà9F rÆD$ÿQUW‹„$<ÿ0‹”$@ÿRGƒÄ…Àu·FC‰Â9Ó|”ÿD$¶F9D$Œvÿÿÿ1À�Ä[^_]Ã�UWVS�ì‹¬$$·E¶U·ME¯Ñ�41ÿé‚�vRhj�\$SÿƒÄ…ÿu@‹„$(…Àt5Qjj SÿƒÄjÿ´$0SÿÆD$(fÇD$&fÇD$(!ƒÄR�D$PV‹„$,ÿ0‹”$0ÿRFƒÄ…ÀuƒÇƒì�EPèüÿÿÿ·ÀƒÄ9ÇŒgÿÿÿ1À�Ä[^_]Ã‰öWVSƒìL‹t$`ŠFÀèƒà‹|$\P¶FP�D$ P�\$(SWèSúÿÿƒÄÿt$SWèüÿÿƒÄ…Àu@ÿv�F	PSWèýÿÿƒÄ…Àu+ƒìSWèÿýÿÿƒÄ…ÀuQÿvSWèµþÿÿ‰ÂƒÄ1À…Ò”ÀH!ÐƒÄ@[^_Ã�vú3ÀŽÐ¼|‹ôPPûü¿¹ò¥ê¾¾³€<€t€<uƒÆþËuïÍ‹‹L‹îƒÆþËt€<tô¾‹¬<tV»´Í^ëðëþ¿»|¸WÍ_s3ÀÍOuí¾£ëÓ¾Â¿þ}�=UªuÇ‹õê|Invalid partition tableError loading operating systemMissing operating system01.01FAT12   FAT16   MSystemsGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.1.comment4	°¸	%@Ü+0620EK7‚Nˆ	`
+	è
+ÈñÿÒ,Ú7Ô
+NàþbàÇm¨Ö�‘˜ ¨³¼€‰dosformt.cgcc2_compiled.getDriveGeometrybootCode.0createMasterBootRecordcreateDOSbootSectorcreateFATscreateRootDirectoryflBuildGeometrytoUNALtffssettffscpytoUNALLONGfromUNALflDosFormatJ‹É�§µ
(:Ll	s	‡¤	¯'ç_docbdk.o/       1037556710  0     0     100644  13068     `
+ELF8!4(ƒìhÌjhÿƒÄjhÿhÿƒÄÇ1Ò�v¡Æ¡Æ@¡Æ@:BƒD€úvÙÆÇƒÄÃUWVSƒì‹|$ ‹
f…ÿ‹i@f‹Y
+„·f‹qf9ó‡ª1Ò‰Øf÷q·Â;E(s](f9ó‡Ž‰öƒìjj�t$V¶Q·Ã¶I>ÓàÂRUÿU@ƒÄ …ÀtƒìhèüÿÿÿƒÄ1ÀëZ�P¡jƒÀPVÿƒÄ…ÀuOCf…ÿ‹
t)f‹qf9ów 1Ò‰Øf÷q·Â‹Q@;B(s�fZ(f9ó†tÿÿÿ·Ã¶I>ÓàƒÄ[^_]Ã�vUWVSƒì‹D$ f‰D$
+è·…À…]ƒìhèüÿÿÿ‹ƒÄötVVjÿt$,�CPÿƒÄ…Àu8‹ŠC8Cu0f‹T$
+f;Sr%¶K>‹C Óè·SÂ·D$
+9Â‡óë�‹Qjÿt$,�CPÿ‹ŠBˆB¡f‹L$f‰HfÇ@
+Ç@Ç@ Ç$@èüÿÿÿ‹‹C@f‹sf‹K‰D$1ÿƒÄf9Î‰Ý‡‰ð‰úf÷s·Â‹T$éì‰öƒìh€èüÿÿÿ‹Ç$�BjP¶J>·Æ¶ZÓàÃSÿt$ ‹L$$ÿQ@ƒÄ …À… ƒìhÀèüÿÿÿƒÄ¡jƒÀPÿt$0ÿƒÄ…ÀuXf…ÿu	¡f‰p
+¡‹P G…Òf‰pu9f;|$
+v2UjhƒÀPÿƒÄ…Àu‹·T$
+·Ç)Ð¶K>Óà‰C ‹Ff‹Kf9Î‰Ýw$1Ò‰ðf÷s·Â‹S@;B(ƒ
ÿÿÿfr(f9Î†ÿÿÿf;|$
+wƒìhèüÿÿÿƒÄ¸4ëH‰ö·÷¶U>‰ðˆÑ‹{ Óà…ÿ‰Cu·D$
+)ÆÓæ‰s Rj¡ÿt$,ƒÀPÿ¡€ƒÄ1ÀƒÄ[^_]Ã‰öUWVSƒì ‹D$4Œ‰D$¡‹x@hjÿt$<ÿÇD$(ÆD$#ƒÄŠL$:O ƒò‰ö‹l$¡fo(·@D$·õ;t$ÇD$s~1ÛëP‰öƒìjhŒÿt$(¶O‰ò¶ÃÓâÁàÂRWÿW@ƒÄ …Àt
+ƒìh@ëTRjhÿt$ ÿƒÄ…ÀtC€ûv­E·Å‰Æ;t$s‹D$…Àu1Ûëã�ÇD$ëÝ‰ö‹l$…íuƒìh€èüÿÿÿƒÄ¸ë/�1Û‰ö¶Ã‹L$‹�C‹L$0	�€û"véþD$ŠD$:G ‚ÿÿÿ1ÀƒÄ[^_]Ã‰öUWVS�ìl‹‹z@ÆD$ö…!ŠGˆB>·G$‰D$‹_‹5‰Ý¶N>¶W ¯èÓí¶O‰T$™÷|$Óë‰ÑL$‰È™÷|$‰Á·Û¯Ùƒìf‰^hÀèüÿÿÿf‹G.ƒÄ©tQjh!�„$\PÿƒÄf‹G.©tRjh�„$\PÿƒÄf‹G.ƒàuƒìhèüÿÿÿƒÄ¸jé³‰ö‹_(9ësL�´$@‰öƒìjjV¡¶H>‰ØÓàPWÿW@ƒÄ …À…|Pj�„$XPVÿƒÄ…ÀtC9ër½9ëuƒìh`èüÿÿÿƒÄ¸é@�vf‹G.©t8ƒìh èüÿÿÿƒÄ‹…ÛfÇBt	�Cÿf‰BëfÇBÆD$f‹G.ƒà„2ƒìhÀèüÿÿÿÆD$/Y�D$,PèüÿÿÿƒÄ…À…ÉöD$S �\$Du%€=uƒìhèüÿÿÿƒÄ¸4é›‰ö¶‰ÂÁâÂ�•‰¶T$Âƒú¶t$4�ªöC „ �æÿ¿�vþD$·C‰ñ‹-Óàf‰E‹C@Óà¶Hf‰E‰ÐÁàÐ‹D‡@‰E@ŠCˆE;‹
f‹C¶f‰A<‰ÐÁàÐÁàf‹Tf‰QŠD>ˆA>¶D$¶ÐƒDƒÃƒø
+öC …nÿÿÿ1ö‰ó:\$sZ¶�<@½Š
�v¶Á‰ÂÁâÂÁâ�‚‰ó‰D$¶ÃøFˆ(‰ðA:D$Æ‚rÎ‹T$‰ˆ
€=w¶¶�@�º€<ÿuƒìh@èüÿÿÿƒÄ¸ë�v¶‰ÐÁàÐ�…£1À�Äl[^_]ÃUWVSƒì‹t$,Ç‹T$4‹D$8‹l$0·\$(ÇPSè]øÿÿ‹=‹W‰‹w ‰u·W¶O>)ÓÓã)Þ‰u‹W@‹R‹L$<‰ƒÄ[^_]Ã�vUWVSƒì‹|$(‹l$,·÷ÿt$0VèøÿÿƒÄ…ÀuS‹·K‰ð)È¶K>Óà‹S )Â9Õvƒìh'èüÿÿÿƒÄ¸4ë�ƒìf‰{‰k$VèÐöÿÿ‹‰B,ƒÄ1ÀƒÄ[^_]Ã‰öUWVSƒì·D$$‹5‹n@‰D$‹E9D$w	‹T$;V$v
¸éD�vH‹V,…Ð…Ó¶N>‰ÓÓëf‹Nf9Ë‡�1Ò‰Øf÷v·Â;E(s](f9Ë‡��vƒìjj�|$W¶N>·Ó¶FÓâÐPUÿU@‰ÆƒÄ …ö…°V¡jƒÀPWÿƒÄ…Àt1‹5Cf‹Nf9Ëw'1Ò‰Øf÷v·Â‹V@;B(s–fZ(f9Ëv�ë	�v‹5f;^¸4wx¶N>·ÃÓà‰F,fÿF‹5‹D$‹V$9Ðv‰Ð€~‰Ât€~°u1Àƒì¶ÀP·ÚSÿt$4ÿv,UÿU@‰ÆƒÄ …ötƒìhèüÿÿÿƒÄ‰ðë�v¡X,)X$1ÀƒÄ[^_]Ã�vUWVSƒì‹t$(‹l$,‹|$0·Þÿt$4SèöÿÿƒÄ…ÀuG‹¶J>‹BÓè·À)ØÓà9ès¸4ë&‰ø‰j4f‰r8ˆB:ƒìSè×ôÿÿ‹‰B0€"÷1ÀƒÄƒÄ[^_]Ã‰öUWVSƒì,‹5‹F@·T$D‰D$‰T$‹@9Âw;V4v¸éÖ�H‹V0…Ð…`¶N>‰ÓÓëf‹Nf9Ë‡¥1Ò‰Øf÷v·Â‹T$;B(sfZ(f9Ë‡„‰öƒìjj�|$4W¶N>·ë¶FÓåèPÿt$4‹L$8ÿQ@‰ÆƒÄ …ö…<Q¡jƒÀPWÿƒÄ…Àt.‹5Cf‹Nf9Ëw$1Ò‰Øf÷v·Â‹V@;B(s�fZ(f9Ëv†ë‹5f;^¸4‡öF:t!Rj·ëUÿt$$‹T$(ÿRHƒÄ…ÀtéÜ�v·ëë	�v‹5‹L$‹A9F4wöF:tPjh�FPÿƒÄëY�f‹^8¿ë	�‹5‰ö·Ç‰D$1Ò‰Ø¹
+f÷ñ�B0·Ë‹T$ˆD2�‰�€�A‰ÂÁâÐ��Áè‰ÃOfÁëfƒÿw´‹¶J>ƒìÓå‰j0fÿB8jj�BP¶BB0Pÿt$4‹L$8ÿQD‰ÆƒÄ ƒþ…›ƒìjj�\$4S‹¶BB0Pÿt$4‹T$8ÿR@ƒÄ¡jƒÀPSÿƒÄ…Àt¸é¿‰öWjh�D$0PÿƒÄ…Àt4ÇD$ƒìjj�D$0P‹¶BB0Pÿt$4‹L$8ÿQDƒÄ …Àuo‹5‹D$‹V49Ðv‰Ð€~‰Ât€~°u1Àƒì¶ÀP·ÚSÿt$Tÿv0ÿt$4‹T$8ÿRDƒÄ …Àtë$�vƒìhèüÿÿÿƒÄ‰ðë
¡X0)X41ÀƒÄ,[^_]Ã�vUWVSƒì‹D$$f‰D$
+‹‹j@ÿt$(j·D$¶J>ÓàP·D$,PèüÿÿÿƒÄ…À…eRj¡ÿt$0ƒÀPÿƒÄj¡hƒÀPÿ‹¶K>‹C0fÇD$ƒÄ‰Æf‹D$
+Óîf9D$ƒëH�v¸4éü‰ö¸éð‰öƒìhèüÿÿÿƒÄ‰Øé×�‹ë
F‹f;sw»1Ò‰ðf÷s·Ò‹C@;P(s
+fp(f;swªƒìjj�CP·þ¶K>‰ø¶SÓàÂRUÿU@‰ÃƒÄ …ÛuŒPj¡ÿt$0ƒÀPÿƒÄ…Àu�SjWUÿUHƒÄ…ÀuNƒìj‹j�BP¶J>¶BÓçøPUÿUDƒÄ …Àu%fÿD$f‹D$
+Ff9D$‚9ÿÿÿ‹ÇC41ÀƒÄ[^_]Ã‰öUWVSƒì‹D$ f‰D$‹\$(¡ƒ;ÿ‹h@uƒìh€èüÿÿÿƒÄ¸3é¸�ÿt$$j·D$¶MÓàPjèüÿÿÿƒÄ…À…“Vj¡SƒÀPÿƒÄj¡hƒÀPÿ‹¶K>‹C0fÇD$ƒÄ‰Æf‹D$Óîf9D$ƒ3ë/�vƒìhèüÿÿÿƒÄ‰Øé �¸4é‰ö‹‰öf‹Kf9Î‡•1Ò‰ðf÷s·Â‹S@;B(sfr(f9Îwy�vƒìjj�|$W¶K>·Æ¶SÓàÂRUÿU@‰ÃƒÄ …Û…{ÿÿÿSjWÿt$0ÿƒÄ…Àt.‹Ff‹Kf9Îw$1Ò‰ðf÷s·Â‹S@;B(s›fr(f9Îv’ë‹f;s‡@ÿÿÿQj·ÞSUÿUHƒÄ…ÀuMƒìj‹j�BP¶J>¶BÓãØPUÿUDƒÄ …Àu$fÿD$f‹D$f9D$‚üþÿÿ‹ÇC41ÀƒÄ[^_]Ã�ƒìè¬òÿÿ…ÀuJ‹‹B@ö@.tƒìhÀèüÿÿÿƒÄ¸jë$‰ööB<uƒìhèüÿÿÿƒÄ¸më�v1ÀƒÄÃ‰öƒìèœÿÿÿ…À…ƒ‹öB<@uƒìhCë)‰ö‹B@‹Hl…Ét‹H|…Ét‹Hp…Ét‹Hx…Éuƒìh èüÿÿÿƒÄ¸jë5‰öPÿt$¶B;Pÿr@ÿÑƒÄ…ÀuP‹‹J@h^¶B;Pÿr@ÿQpƒÄƒÄÃ�Sƒì‹\$èÿþÿÿ…ÀtƒømtNëQ‹‹B@‹Hx…É¸jt<PS¶B;Pÿr@ÿÑƒÄ…Àu)f‹%¾ÿf‰‹f‹R<ƒâA	Ðf‰1Àë�vfÇƒÄ[Ã‰öƒìè”þÿÿ…Àu'‹‹B@‹Hp…É¸jtPÿt$¶B;Pÿr@ÿÑƒÄƒÄÃ�ƒìè\þÿÿ…Àu0‹‹B@ö@.u‹Ht…Éu
+¸jë�vƒì¶B;Pÿr@ÿÑƒÄƒÄÃUWVSƒì(�D$&Š\$<PèkþÿÿƒÄ…À…·€ûufƒL$ë	�vfƒd$÷1ÿ‹
‹A@‰ú:P ƒ‰�D$‰D$�l$‰øƒì¶Ø‹Q@Sÿt$U¶A;Pÿq@ÿRlƒÄ …Àu\‹
‹q@S‹A@¶@ H1Ò9Ã”ÂRjÿt$ ÿt$ ‹T$(…Ò¸t·D$.P¶A;Pÿq@ÿV|ƒÄ …ÀuG‹
‹A@‰ú:P rƒ1ÀƒÄ[^_]Ã�UWVSƒì(�D$&Pè�ýÿÿƒÄ…À…¥1ÿ‹
‹A@‰ú:P ƒ��D$‰D$�l$‰ö‰øƒì¶Ø‹Q@Sÿt$U¶A;Pÿq@ÿRlƒÄ …Àu^‹
‹q@S‹A@¶@ H1Ò9Ã”ÂRÿt$8ÿt$ ÿt$ ‹\$(…Û¸t·D$.P¶A;Pÿq@ÿV|ƒÄ …ÀuG‹
‹A@‰ú:P r�1ÀƒÄ[^_]Ã�vUWVSƒì(�D$&‹|$<Pè¿üÿÿƒÄ…À…Ð‰øƒàf9øu÷Çu
+¸3é´f‹D$%ùÿ1í‹
	Ç‰ê‹A@:P ƒ��D$�T$‰D$‰T$‰ö‰èƒì¶Ø‹Q@Sÿt$ÿt$ ¶A;Pÿq@ÿRlƒÄ …ÀuZ‹
‹q@S‹A@¶@ H1Ò9Ã”ÂRjÿt$ ÿt$ ‹T$(…Ò·Çu¸P¶A;Pÿq@ÿV|ƒÄ …ÀuE‹
‹A@‰ê:P r‚1ÀƒÄ[^_]ÃWVSƒì‹t$$Š‹ƒà�âðÁê<‹L$(‹^¢ˆwˆÐ<v
+¸éy¶¶�@Š„<ÿt¶Ð‰ÐÁàÐ�…£ë)¶‰ÂÁâÂÁâ�‚£‰Š@Æ‚¶¶Š„Â‹I4ˆA‹D$ -‘ƒøi‡êÿ$…�vŠC‹ƒàˆBŠC‹ˆBPSÿs·CPèüÿÿÿƒÄé³‰öWj·CPÿsèüÿÿÿƒÄé™ƒìS�D$P�CP�CP·CPèüÿÿÿ‹
·Q‰Ç·A)Ð‹Q@¶J@Óà‰F1ÒÆCƒÄ ¹¶�@�€<ÿtþCBƒú~ä‰øé.�ŠC‹ƒàˆBŠC‹ˆBS¶CPÿs·CPèüÿÿÿƒÄé÷‰ööCt¡€H:ë�v¡€`:÷ƒì·CPÿsèüÿÿÿƒÄéÀ�vŠC‹ˆBV�CPS·CPèüÿÿÿƒÄé™ŠC‹ˆBQS·CP·CPèüÿÿÿƒÄëw‰öƒì�D$PèüÿÿÿƒÄ…Àua·D$
+‰F1ÀëUƒì·FPèüÿÿÿƒÄëC‰öƒìÿvèüÿÿÿƒÄë1èüÿÿÿë*�ƒìÿvèüÿÿÿƒÄëƒì¶FPèüÿÿÿƒÄë‰ö¸ƒÄ[^_Ã01.01(EXTRA)read failed.
+FFFFBNANDANANDgot out of the partition.
+Uncheangable protection.
+00000000Debug: getBootAreaInfo() - BDK mount succeed.
+Debug: searching for signtured blocks.
+Debug: getBootAreaInfo() - Reading unit signature...
+Debug: getBootAreaInfo() - Signature read done.
+Debug: getBootAreaInfo() - No space in volume.
+Debug: ERROR reading original unit header.
+Debug: binary partition data could not be found.
+Debug: searching for TL media header.
+Debug: Not a DiskOnChip device therfore Binary partitions are not supported.
+Debug: TL format does not exists.
+NFTL media header encounterd.
+INFTL media header encounterd.
+Device is not formated with a binary partition.
+Device is not formated the specified binary partition.
+Debug: can not use 'FFFF' signature for Binary partition.
+NFTL does not support protection.
+Not a protectable partition.
+H/W does not support protection.
+ˆÀøŒœ`°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Ð@t„GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.rel.data.bss.note.rodata.str1.1.rodata.str1.32.rel.rodata.comment4¼	<(x
)ð%	´/
/ø4ø:2gI2€` ]à°Y	¼/P
	e� 7Ç n�#°	@&ûñÿ
+(:IUxéjd‚z0¨ƒ|Z’Ø—	§® Ìòÿ¶x¾ÆÓÛãèFõØe
@	~!À	�6DvL¼cÐ®t€û†pn›à7¨@µXßÃ8ÉÐøåüÀídocbdk.cgcc2_compiled.noOfPartitionsglobalPartitionNoglobalSocketNohandleTablegetPhysAddressOfUnitgetBootAreaInfobdkMountprotectionInitprotectionChangeInitbdkVolbdkVolsbdkInittffssetFlDebugPrinttffscmptffscpybdkRetrieveHeaderbdkGetBootPartitionInfobdkCopyBootAreaInitbdkCopyBootAreaBlockbdkUpdateBootAreaInitbdkUpdateBootAreaBlockbdkEraseBootAreabdkCreateBootAreabdkGetProtectionTypebdkInsertKeybdkRemoveKeybdkLockEnablebdkChangeKeybdkSetProtectionTypebdkCallflVerifyWrite &/3=ENYelp…ï
+ô!…Š�©¶îÿ49?|�‡ÂÇÏßðù
++Dƒˆ¿ÍÒý9Ž˜
+¢äé<d£¨¾
+Ìâ
+ð	5_w|Ÿ¤­àåõ!7EKuˆ›ºÅï÷#)?[hnt~…�ž£ÂÇ		e	„	
+‰	ª	Î	g
+t
+�
+²
+Ó
+
+-m£Åjw„²ö

+
2
~
É
ä
ñ

+8X¨
+­¹â#-2
+<BŒ
+‘¢«/i•¥ªÑäïùþ
+@
+EbËØ-fŠ› º¿êø
+#(QY
+Š½î&’ÕX�éNœä &?FPejsƒˆŽ”œ£ª*ÉÕäö39`g�œ²ÇÕé ý"!5!I#i({$…%“'¥& $(,048<@DHLPTX\`dhlptx|€„ˆŒ�”˜œ ¤¨¬°´¸¼ÀÄÈÌÐÔØÜàäèìðôøü $(,048<@DHLPTX\`dhlptx|€„ˆŒ�”˜œ ¤diskonc.o/      1037556711  0     0     100644  13544     `
+ELFà(4(	Sƒì‹\$jhÿs8ÿ“œƒÄj
+hÿs8ÿ“œƒÄ[ÃSƒì‹\$jhÿs8ÿ“œƒÄj*hÿs8ÿ“œƒÄ[Ãƒì‹D$jhÿp8ÿ�œƒÄÃ�VSQ‹t$‹F0ö@ÆD$t31Û�ƒìhÿv8ÿ–˜ŠT$ÂCˆT$ƒÄƒû~Üƒìhë2‰ö1Û‰öƒìhÿv8ÿ–˜ŠT$ÂCˆT$ƒÄƒû~Üƒìhÿv8ÿ–˜ƒÄZ%€¶À[^ÃWVS‹\$‹t$·‹N0#Q‹D$)ƒà‹|$t�Â·A9ÂsÇë�v·F"9ÂÀƒà±ƒÀP‰‹F0·@H!Â[^_ÃWVSƒì‹|$ ÆD$1Û�vƒìh ÿw8ÿ—˜ŠT$ÂCˆT$ƒÄƒû~Üƒìhÿw8ÿ—˜‰Æ1ÛƒÄƒìh ÿw8ÿ—˜ŠT$ÂCˆT$ƒÄƒû~Ü‰ðÀè‰ÆƒÄƒö‰ò[¶Â^_Ã‰öVSV‹t$1Û�vƒìVè_ÿÿÿƒÄ…Àu¸ë�C�û/u~ßƒìhèüÿÿÿƒÄ1À[[^Ã�VSƒìŠD$¶À‹t$ÆD$Phÿv8ÿ–œ1ÛƒÄ�vƒìh ÿv8ÿ–˜ŠT$ÂCˆT$ƒÄƒû~ÜX[^Ãƒì¶D$‹T$Phÿr8ÿ’œƒÄÃ�Sƒì‹\$hÿs8ÿ“˜ƒÄ„Àu4Rh…hÿs8ÿ“œƒÄh…hÿs8ÿ“œ‹C0Æ@ƒÄƒÄ[Ã‰öVSƒì‹t$Š\$jÿv4èüÿÿÿƒÄ…Àt(P¶ÛShÿv8ÿ–œƒÄShÿv8ÿ–œƒÄY[^Ã‰öSƒì‹\$hÿs8ÿ“˜ƒÄ<0uƒìhÿs8ÿ“˜ˆD$XZhë�ƒìhÿs8ÿ“˜ˆD$ZYhÿs8ÿ“˜ŠT$1ÂˆT$ƒÄŠT$1Àƒâ•ÀƒÄ[Ã�WVS‹t$‹\$ƒìVèüÿÿÿ‰Ç‰_8X‹µZ
PWèüÿÿÿƒÄ…À……Vh„hÿw8ÿ—œƒÄh„hÿw8ÿ—œƒÄh…hÿw8ÿ—œƒÄh…hÿw8ÿ—œY[hÿw8ÿ—˜ƒÄ< tƒìhÿw8ÿ—˜ƒÄ<0t1Àë‰ö‰|$[^_é°þÿÿ[^_ÃSƒì‹\$j6h?ÿs8ÿ“œƒÄjch?ÿs8ÿ“œÇ$èèüÿÿÿƒÄ1À[Ã‰öUWVSƒì‹|$(÷Çÿ‹t$ ‹l$$t
¸é±�vƒìVè�ÿÿÿƒÄ…À…š‹N8…Éu
¸é‰�vf…ÿt1Û�ƒì·ÃPÿv8ÿ–˜ˆ+CƒÄ�ûÿ~áf�ÿvV€~t)ƒìh@ë6‰ö�ƒƒì·ÀPÿv8ÿ–˜ˆ+CƒÄ�ûÿ~Ûf�ÿvƒìh€èüÿÿÿƒÄ¸ë�1ÀƒÄ[^_]Ã‰öUWVSƒìŠT$,¶úÁç	÷D$0‹l$$‹t$(¸j…é‹D$ ‹HH…Éu‹@D…À„Î·Æø=w
€úw÷Æÿt
¸é°�v„ÒuSjjÿt$,ÿÑƒÄ…À…“Ñçf…öt]�vf�þ·Þv»ƒìj
+SUWÿt$<‹T$@ÿRDƒÄ …Àu`ƒìj
+SU�‡Pÿt$<‹T$@ÿRDƒÄ …Àu@�Å�Çf)Þu¦÷D$0u1Àë!‹T$ ‹‚„…ÀtƒìRÿÐƒÄë�v¸jƒÄ[^_]Ã�vUWVSƒì‹|$$…ÿ‹l$,ŠD$ ÇD$u
¿€ÇD$(‹L$(…ÉuÇD$(ƒì¶ØSèüÿÿÿ‰ÆX‹�Z
PVèüÿÿÿƒÄ…À…Ôÿ–ˆ‰};|$(‰Ãw@�‹E‰F8Qh„hPÿ–œƒÄh„hÿv8ÿ–œ‰ØEƒÄ‰E;D$(vÁ‰};|$(‡n‹E‰F8Rh…hPÿ–œƒÄh…hÿv8ÿ–œZYhÿv8ÿ–˜ƒÄ< t+ƒìhÿv8ÿ–˜ƒÄ<0tƒ|$…ôé�v‹D$…Àu`ƒìVè#ûÿÿƒÄ…À„Ðƒìhÿv8ÿ–˜ƒÄ„ÀtWjhë
+‰öQjhÿv8ÿ–œƒÄÇD$‹}‰øé‰‰öƒìhÿv8ÿ–˜ƒÄ< tƒìhÿv8ÿ–˜ƒÄ<0ufƒìVè“úÿÿƒÄ…ÀtVƒìhÿv8ÿ–˜ƒÄ<0uƒìhë
+‰öƒìhÿv8ÿ–˜ƒÄˆD$ŠD$<u‹EØ‰E;D$(†’þÿÿ‹T$…Òu1Àë‰öÁï‰øƒÄ[^_]Ã�vVSƒì‹\$¿C,¯C�pÿ#t$‰ðÁè	Áà�æÿ	ÆjSèÐøÿÿ‰òƒÄ¶ÂP‹C0·@(Pÿs8ÿ“œ‰òƒÄ¶ÆP‹C0·@(Pÿs8ÿ“œ‰ðÁèƒÄ¶ÀP‹C0·@(Pÿs8ÿ“œƒÄöC/tPÁîV‹C0·@(Pÿs8ÿ“œƒÄ‹C0ö@tVjhÿs8ÿ“œƒÄÇD$1‰\$[[^é,øÿÿVSƒì‹t$Š\$jVèøÿÿƒÄ¶ÛS‹F0·@(Pÿv8ÿ–œ‹F0ƒÄö@tQShÿv8ÿ–œƒÄZ[^ÃWVS‹t$€~ ‹|$v1‹N0‹1Ò÷qˆÁ‹V0ˆBS¶ÙShÿv8ÿ–œ‹F0¯X)ƒÄ[^_Ã‰öVSƒì‹\$‹t$jÿs4èüÿÿÿ‹S0‰B,XZVSè’ÿÿÿ¿S,¯S‹‰Ñ1Ò÷ñ¶À‰\$ ‰D$$ƒÄ[^é�÷ÿÿ�UWVSƒì‹|$ ‹W0öB‹l$$‹t$(ÆD$tKƒìhÿw8ÿ—˜ŠT$ÂNˆT$ƒÄf�þ‰óv»·ÃPU‹G0·@(Pÿw8ÿ—ŒƒÄ‹W0ë1Ûf9Þv$‰ðf)Ø·ÀP·Ã�(P·B(Pÿw8ÿ—ŒƒÄ‹W0öBtƒìhÿw8ÿ—˜·Öˆ*ƒÄƒÄ[^_]Ã�Sƒì·D$‹\$Pÿt$‹C0·@(Pÿs8ÿ“�‹C0ƒÄö@tQjhÿs8ÿ“œƒÄƒÄ[ÃSƒì¶D$‹\$P·D$P‹C0·@(Pÿs8ÿ“”‹C0ƒÄö@tPjhÿs8ÿ“œƒÄƒÄ[Ã‰öSƒì‹\$ÆD$jp‹C0·@(Pÿs8ÿ“œ‹C0ƒÄö@tQjphÿs8ÿ“œƒÄƒìjSè©õÿÿ‹C0ƒÄö@t%ƒìhÿs8ÿ“˜ŠT$ÂˆT$XZhë&�ƒìh
ÿs8ÿ“˜ŠT$ÂˆT$‹C0ZY·@(Pÿs8ÿ“˜ƒÄ¶ÀƒÄ[Ã�vVSƒì¶D$‹\$‹t$ PSè÷üÿÿXZVSèüÿÿ‰\$ ƒÄ[^éÈôÿÿWVS‹\$öC/‹t$‹|$tWƒìhÿSè½üÿÿ‰$è�ôÿÿƒÄ…ötLR�æÿV‹C0·@(Pÿs8ÿ“œ‹C0ƒÄö@t*PVhÿs8ÿ“œë�v‰òƒì¶ÂPSèeüÿÿƒÄ‹C0Vh€·@(Pÿs8ÿ“œ‹C0ƒÄö@tQh€hÿs8ÿ“œƒÄƒìWSèJûÿÿƒÄ‰\$[^_é÷óÿÿ�vSƒì‹\$jSèüûÿÿ‰$èÜóÿÿ‰$è$þÿÿƒÄƒàtƒìhÀèüÿÿÿƒÄ¸ë�1ÀƒÄ[Ã�UWVSƒì8‹t$L‹|$X‹l$\ÇD$ÿv4èüÿÿÿƒÄ…Àt
+¸é)ƒì�\$LSVèüÿÿ·ÅPS�D$$PVèròÿÿƒÄ öF/t=ƒ|$u6‹F0f‹X#\$DQ·@ƒÃD$H·Û)ØPjVè]þÿÿƒÄShÿVèýÿÿëRÿt$Hÿt$Vè=þÿÿƒÄ‰ëƒãtƒìVè.ñÿÿƒÄP·ÿWÿt$PVèœüÿÿƒÄf…Û„Žƒìj!Vè
óÿÿ‹F0ƒÄö@t!1Û�vQjh ÿv8ÿ–œCƒÄƒû~æëRjjVè•üÿÿƒÄƒìj1VèÇòÿÿj�\$$Shÿv8ÿ–ŒƒÄVèÑðÿÿƒÄjSVèüÿÿƒÄjhVèüÿÿƒÄƒìVèIþÿÿƒÄ…À…ãƒìjVèkòÿÿ‹F4ƒÄ€x„ÆPÿt$Hÿt$VèýÿÿƒÄW‹F0ÿp$VèôúÿÿƒÄW‹F0ÿp$ÿt$TÿƒÄ…ÀtƒìhèüÿÿÿƒÄ¸ëw‰öƒåtXSj‹F0ÿp$Vè¬úÿÿƒÄj‹F0ÿp$�D$PÿƒÄ…ÀuÆQj‹F0ÿp$Vè€úÿÿƒÄj‹F0ÿp$hÿƒÄ…ÀušƒìjVè ñÿÿ‰4$èTñÿÿƒÄ1ÀƒÄ,[^_]Ã�vUWVSƒì‹l$0‹D$(÷Å‹|$,‰D$fÇD$ufÇD$f‹D$H#D$$f‹t$f)Æöt¸xëa�ƒìÿt$,è ñÿÿƒÄ…ÿtK�·Þ9ûv‰þ·Þƒìf�þt�åýÿ·ÅPSÿt$ÿt$<ÿt$<èýÿÿƒÄ …Àu\$$\$)ßf‹t$u¶1ÀƒÄ[^_]ÃUWVSƒìD‹D$\�\$‹|$h‹t$X‰D$‹l$dÇD$ÇD$SVèùÿÿ·ÇPS�D$ PVè^ïÿÿƒÄÿt$ÿt$Vè=ûÿÿƒÄ÷ÇtƒìVè-îÿÿƒÄP·Å‰D$Pÿt$`VèùÿÿƒÄ÷Ç
+tC·D$T‹V0#B…Àu4¸‰Ãf)ët(ë�v‹V0�ƒì·B(Pÿv8ÿ–˜¶À‰D$ƒÄfKuÝ÷Ç„½Sj�D$(PVèŸøÿÿ‰4$è#îÿÿƒÄ…À„�f…ÿygj�\$Shÿv8ÿ–ŒŠT$ ŠD$$ˆD$ ˆT$$ŠD$%ŠT$!ˆT$%ˆD$!ƒÄjSÿt$dèüÿÿÿƒÄ…Àt@ƒìh@èüÿÿÿÇD$ƒÄë&‰ö�Ï€ƒì·ÇPÿt$ÿt$lÿt$lVèyþÿÿƒÄ ëGƒìVècíÿÿƒÄƒìjVè-ïÿÿƒÄƒçt$‹V0·J
+·D$�Qÿ!Ð$9ÈuƒìVèÀîÿÿƒÄ‹D$ƒÄ<[^_]Ã�UWVSƒì‹t$0‹D$(÷Æ‹l$$‹|$,‰D$fÇD$ufÇD$ ƒà<u¸xëqƒìÿt$,èïÿÿf‹D$H!èf‹T$f)ÂƒÄ…ÿtL�·Ú9ûv‰ú·Úƒìf�útfƒþ
+t�æõÿ·ÆPSÿt$Uÿt$<è‡ýÿÿƒÄ …ÀuÝ\$)ßf‹T$uµ1ÀƒÄ[^_]Ã�vUWVSƒì‹D$ ‹X0‹@Áè
+‹s$·ÀÇD$9D$‹|$$�®‰D$}Q‰öƒìjhVWÿt$<èóþÿÿƒÄ …À…‚9î‰ðs‹ƒúÿuuƒÀ9èrôÿD$‹T$�Ç9T$|¸‹D$ ‹X0ÇD$fƒ{ti‰öƒìj·C
+PVÿt$<ÿt$<è�þÿÿƒÄ …Àu#‹D$ ‹H0f‹A
+fÁè1Ò·À9Â‰Ë}�vƒ<–ÿt
+¸ë �vB9Â|ëÿD$�D$$·A9D$|™1ÀƒÄ[^_]Ã�vUWVSƒì‹D$4·ø‹t$0f‰D$ÇD$‰û¯^ö‹l$8‰\$t
+¸xéƒìÿv4èüÿÿÿƒÄ…Àt
+¸é·Å�8‰D$‹F0·@·V$¯Â9D$v
+¸éÙƒìVèíÿÿ‹F0‹H1Ò‰Ø÷ñ�Xf¶F ƒÄf9ÃtC1Ò‰È÷vf¯Ã·Ð9T$~/Q‰Ãf+\$f)Ý·ÅPRVè-ÿÿÿ‰D$ ƒÄ…À‰Ýt‹D$ét�vƒì�D$ PVèšôÿÿfÇD$ƒÄf9l$ƒ<ë?�vƒìh€èüÿÿÿÇD$ Y[hÿVèÆóÿÿ‰4$è¦ëÿÿƒÄé‰ö·|$�vƒì‹F0·@‰ûhÿ¯ØVè’óÿÿXZjVè´ëÿÿ‰4$èhëÿÿY_j`VèvóÿÿXZjVè˜ëÿÿƒÄ¶ÃP‹F0·@(Pÿv8ÿ–œƒÄ¶ÇP‹F0·@(Pÿv8ÿ–œƒÄöF/tÁëW¶ÃP‹F0·@(Pÿv8ÿ–œƒÄ‹F0ö@tSjhÿv8ÿ–œƒÄƒìjVèëÿÿZYhÐVèâòÿÿ‰4$èÂêÿÿ‰4$è
+õÿÿƒÄƒà…ÞþÿÿfÿD$fÿD$f9l$‚ýþÿÿƒìjVèÒêÿÿ‹D$ ƒÄƒÄ[^_]Ã�vSƒì‹\$jÿt$(‹C0ÿp ÿt$,Sè®ûÿÿ‹C4Ç@ ‹C0‹@ ƒÄ([Ã�UWVSƒì\ŠD$|ˆD$O‹T$p‹B0¶R‹@ˆÑÓø‰D$<‹L$p·A$¯A‰D$¶L$O‹D$tD$xÑÓà‹œ$€;D$ÇD$‰\$v
¸3é%�v‹D$p‹@‹T$<9Ð‰D$s�Ñd$‹L$<9L$rò‹T$p‹B4Ç@ ŠL$OÓl$<Wÿt$|hÿSÿÇD$TƒÄ‹D$9D$Dƒ¾‹t$x…ö„²‹L$p‹Q0�v‹D$D‰D$H‹JL$H‹D$9D$Hv‰D$H‹|$H+|$;|$D¾ vgë
+‰ö‹L$p‹Q0�ƒìjjÿr �GPÿ´$Œè^úÿÿ‰D$8ƒÄ …À…ËSjh‹T$|‹B0ÿp ÿƒÄ…Àt‹L$p+yN;|$Dvf…öu�;|$Dt	f…ö…–ƒ¼$„…|‹|$H+|$;|$Dv[‰ö‹L$1Û…Éu2‹D$9D$s(ƒì�;Pÿt$|èŒúÿÿ‰D$(ƒÄ‹T$pZ…Àu;\$rØ‹T$…Òt‹L$p+y;|$DÇD$w§;|$D„	‹l$D‹D$H9Å‰þƒÏ�vPhhÿ‹T$|‹B0ÿp ÿ1ÛƒÄ9ýr‹L$�99Ås‹T$p‹B0‹@ Æë#�ƒìUÿt$|èëùÿÿƒÄ…Àt‹L$p‹A0‹@ Æ‹T$pC‹BÅ�ûÿv¬Áà	9Åu‹R0‹B €8tÆ‹L$p‹Q0ë	‰ö‹D$p‹P0ƒìjhÿr Vÿ´$Œè/öÿÿƒÄ …Àu8�Æ;l$H‚4ÿÿÿƒìjjh�GPÿ´$Œèüõÿÿ‰D$8ƒÄ ë�v¸pép‰ö‹T$p¶J¶t$Oñ‹l$DÓí9l$t‚‹L$<�)9D$tƒ1Ò‹D$t÷ñ‰Ó‰Ê)Ú‹D$x9Ðv‰Ð‰ñÓã·Àß)D$x‰|$@Óàf‰D$ �d$@þÿÿ‹D$p‹P0�ƒìjhÿr ÿt$Xÿ´$Œèë÷ÿÿƒÄ …À…\ÿÿÿ�ãÿ¸·T$ )Ø9Ðv‰Ðf)D$ Ø·À9ÃsN‹L$p‹Q0ÇD$ŠL$OÓd$‰Ç�‹t$f…öt�v‹B Š<ÿt
‹T$ˆ‹L$p‹Q0CfNuäÿD$9ûrÐë	‰ö‹D$p‹P0�D$@fƒ|$ …Iÿÿÿ‹t$x…öt l$<‰l$të�v‹L$p‹Q0ë
+�v‹D$p‹P0‹JL$D‹D$9D$Ds‹\$x…Û…Xüÿÿ1ÀƒÄ\[^_]Ã‰öWVS‹D$…À‹L$¶t$¶|$…?‹Q0€z…5‰óf¶Ã‰ûf‰f¶Ãf‰BfÇBf‹Y.‰Ø�æÿ
�þ˜ÇA@Bf‰A.fÇA"„�þì…‰ø¶ðƒþy„Õƒþy(ƒþu„�ƒþu
+ƒþstméØƒþv„�éÊ‰ö�þåt(�þå�þãté«�v�þæté›�vfÇåìÇA@é}�vfÇæìÇA€éi�vfÇsìÇAfÑbéQ�vfÇuìÇAfÑbé9�v�ËfÇvìf‰Y.ÇAfÑbé��ËfÇyìf‰Y.ÇAfÑbé÷�‰ø¶ðƒþv„’ƒþv!ƒþsthƒþsƒþkt>éÙ�ƒþutcéÎ‰ö�þåt$�þåƒþytoé²‰ö�þæté£�vfÇå˜ÇA@ëd‰öfÇæ˜ÇA€ëT‰öfÇs˜ÇAë@‰öfÇu˜ÇAë0‰ö�ËfÇv˜f‰Y.ÇAë�ËfÇw˜f‰Y.ÇAfÑbf�I.ë‰ö‹Q0‰ñf¶Áf;u‰ûf¶Ãf;Bu
+¸ë�v1À[^_Ã‰öUWVSƒì‹\$(‹l$,ÆD$h�Sè!ëÿÿZYjSèCãÿÿƒÄj‹C0·@(Pÿs8ÿ“œ‹C0ƒÄö@tPjhÿs8ÿ“œƒÄƒìjSèãÿÿÇ$
+èüÿÿÿ1öƒÄ�ƒìh ÿs8ÿ“˜ŠT$ÂFˆT$ƒÄƒþ~Ü‹C0ö@t'ƒìhÿs8ÿ“˜ŠT$ÂˆT$^_hë(�vƒìh
ÿs8ÿ“˜ŠT$ÂˆT$‹C0ZY·@(Pÿs8ÿ“˜‰ÇƒÄƒìj
+èüÿÿÿ1öƒÄ‰öƒìh ÿs8ÿ“˜ŠT$ÂFˆT$ƒÄƒþ~Ü‹C0ö@t'ƒìhÿs8ÿ“˜ŠT$ÂˆT$^Xhë(�vƒìh
ÿs8ÿ“˜ŠT$ÂˆT$‹C0ZY·@(Pÿs8ÿ“˜ƒÄU¶À‰úP¶ÂPSèÎûÿÿƒÄHt1ÀëZƒìfÿC$jSè©áÿÿƒÄ…íu?‹K0€yu6fÇAfÇA
+f‹C"H·À‰A·Q·C"¯Ð‰S‹C‰Ó1Ò÷óf‰AÆA¸ƒÄ[^_]Ã‰öUWVSƒì(‹t$<ÆD$ÇD$ ÿv4èüÿÿÿˆÃ¶ÛÇ$Àèüÿÿÿ�[Áà‰F0X‹�Z
PVèüÿÿÿƒÄ…À…îƒìSèüÿÿÿ‹V0‰B$‰$èüÿÿÿ‹V0‰B _]jÿv4èüÿÿÿY[húÿv4èüÿÿÿ‹F0Ç@ÆF Æ@fÇF$ÇF fÇF,XZjÿv4èüÿÿÿ‹V0‰B,‰F8‹j,ƒÄ…í„nƒìh„Vè3áÿÿ[_h…Vè&áÿÿZYhÿv8ÿ–˜¶ÀƒÄƒø tKƒø0…1Ûƒìhÿv8ÿ–˜CˆD$+ƒÄƒû~âŠD$<0”Â°(ÐˆF‹F0fƒHfÇ@(ë‰ö‹F0fƒ`÷fÇ@(ÆFƒì�D$‰D$PVè<èÿÿ‹F0ƒÄö@t ƒìhÿv8ÿ–˜ˆD$+]Xhë‰öƒìhÿv8ÿ–˜ˆD$+[_hÿv8ÿ–˜ŠT$+1ÂˆT$*ƒÄŠD$ƒà„NÇD$‹F0Æ@ëEQ¶BPhÿv8ÿ–œ1ÛƒÄ�vƒì¶ÃPVèßÿÿ]XhÿVCèñæÿÿƒÄƒû|Ý‹F0þ@‹F0€x‰Âv°Æ@W‹F0¶@Phÿv8ÿ–œY[jVèßÞÿÿ1ÿƒÄ‰ö1Û;\$�‚�l$‹D$‰D$ƒìUVè"çÿÿXZSVèAûÿÿƒÄHu+�GˆD$‰ø„Àu¿F,‹V0¯FB¿F,¯FD$ë-‰ö‰ø„Àt‹\$¿ë�v‰\$‰Ú¯V¿N,‹F0¯Ñ‰PC;\$|‚G‰ø<†gÿÿÿ‹F0Æ@S‹F0¶@Phÿv8ÿ–œƒÄfƒ~$uƒìhèüÿÿÿƒÄ¸é“�ÇD$ƒìÿt$VèSæÿÿŠD$ˆF ‰4$èÜÿÿƒÄ€~ÇFD°ÇFHÇF@DÇF<xu'ÇFP¬Ç†„¤ÇFXäÇFTÄfƒN.ë�fƒN.€~ufƒN.ƒìh@èüÿÿÿƒÄ1ÀƒÄ[^_]Ã‰öWV S1ö<‹|$v¸fëm�v @F¢<wLƒì¶Pèüÿÿÿ‰Ã¶‰‰$èüÿÿÿYXjSèüÿÿÿ�T$ ‰ÐPWÿt$(¶PèžáÿÿƒÄ …À‰C,u¤1À…ö”ÀHƒàÄƒÀ<[^_Ã‰ö¡ƒø~¸fÃÇ…ä @£1ÀÃUU01.01Debug: timeout error in NFDC 2148.
+ERROR: Device does not support more the 512 bytes of IPL.
+ERROR: Device does not support more the 1024 bytes of IPL.
+Debug: NFDC 2148 write failed.
+Debug: NFDC 2148 write failed in verification.
+Debug: EDC error for NFDC 2148.
+Debug: NFDC 2148 erase failed.
+Debug: entering NFDC 2148 identification routine.
+Debug: failed to identify NFDC 2148.
+Debug: identified NFDC 2148.
+MSYS_BBTGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.rodata.str1.1.comment4ˆ%	�2X
+%¼%+À%0À%62à%` F2@(	UI(7€(^À*°1	p/ñÿ0$00/`6|�?\KhŠPôC]8TjŒu¬V�J�P™¤>§äÞ¯Ä¸äQÏ8	ÔÚ
+Pâ\
+Fî¤
+Kõð
+¿û°HøJDµü0,
Ñ+G8DHeS°¸]hÛkD½t	e‰x3‘¬–™D†¦Ì²ä òÂÏÕÐÔäîú*2@QYfq„�£´Ø$ŠÅÑÜêúd%$diskonc.cgcc2_compiled.eccONreadeccONwriteeccOFFeccErrormakeCommandbusywaitForReadywriteSignalsselectChipchkASICmodesetASICmodecheckToggleforceDownLoadreadIPLwriteIPLflDocWindowBaseAddresssetAddresscommandselectFloormapWinrdBufwrBufwrSetreadStatusreadCommandwriteCommandwriteExecuteanandMark.0writeOneSectordoc2WritereadOneSectordoc2ReadcheckErasedoc2Erasedoc2MapreadBBTisKnownMediareadFlashIDdoc2000IdentifyFlDebugPrintflMapcheckWinForDOCflFlashOfflBusConfigsetBusTypeOfFlashflDelayMsecsflWriteProtectedtffscmpflSuspendModeflCheckAndFixEDCtffssetflSocketNoOfdocMtdVarsflReadBackBufferOfflBufferOfflSetWindowBusWidthflSetWindowSpeedflRegisterDOCSOCnoOfSocketsflSocketOfdocSocketInitflSetWindowSizeflRegisterDOC2000noOfMTDsmtdTable%*12à4í5ú6×7l¤©1(425?6·
+2,11g8¡9 1V9|‚9ñ:©;¸½1v:7:W8(-1]<ù*	9ã< *>7Õ7!=!!1!>'!54!6H!?V!@h!Aw!B¨!2%$*$1j$q$x$$ˆ$’$™$ $À$Å$1Û$Dõ$Dü$D
+%D%E%D#%F-%Ge%Iw%J{%�%Iinftl.o/        1037556714  0     0     100644  35556     `
+ELFu4(ŠT$1À„Òt‰ö÷Ât@Ðêuó¶ÀÃ�vUWVSƒì‹\$,‹|$4‹l$8‹3jj�D$P·SF·D$<¶KpÐÓàD$HPÿ3ÿV@f‹T$&T$$f‰‹T$ ‰UƒÄ,[^_]ÃUWVSƒì‹D$(‹L$,‹\$ ‹l$0f‰D$f‰D$‰$·T$$‰æƒì‹;jjV·CF¶KpÂÓâêRÿ3ÿWDƒÄ,[^_]Ã�vVSƒì‹t$ ‹F·\$$Ækf‹FHf…ÀtHf‰FHƒìh�D$ P�D$"PSVèÿÿÿ‰ÁƒÄ …Éuƒìhÿt$ jSVèRÿÿÿ‰ÁƒÄ ‹V…Òt�[ÑàfÇ­ÞfÇD­ÞƒÄ‰È[^ÃUWVSƒì‹l$0‹t$,h�D$P�D$P·ýWVè°þÿÿ‰ÃƒÄ …Û…‹V…Òt�ÑàÆDÿfÇÿÿfÇDÿÿ‹VÆDÿ‹V…Òt&P¶Npƒé¸ÓàP‰øÓàhÿ�PÿƒÄƒì‹jjh·FF¶NpøÓàƒÀPÿ6ÿRD¶Nn¸ÓàƒÄ·À‹PfnF·ÅÓà·ÀPÿ6ÿRHÿF<‰Ã‹D$@‰D$ƒÄ…ÀuÇD$…Ûuƒìÿt$4ÿt$hi<WVè#þÿÿ‰ÃƒÄ …ÛtƒìWVèdþÿÿƒÄ‰Øë�‹F€<ÿtÆÿfÿFH1ÀƒÄ[^_]Ã�UWVSƒì,‹l$@ÆD$‹M…É‹D$DtQ·À‰D$�@�f‹f=­ÞtAf�|­Þt8‹\$Hf‰f‹D‹\$Lf‰ŠD‹L$Pˆ‹EŠD‹\$Tˆé¼‰ö·À‰D$‹D$XÆƒì‹Ejj�t$4V·UFT$ ¶MpÓâƒÂRÿuÿP@ƒÄ …À…†‹D$ ‹T$Hf‰f‹D$"‹L$Lf‰ŠD$$‹\$PˆŠD$%‹T$Tˆ1ÿ�v‹L$Hfƒ9ÿuJ‹\$Lfƒ;ÿu@‹D$P€8ÿu7‹T$T€:ÿu.€~ÿu(…ÿ„ÑQhÿt$Uè ýÿÿƒÄ…À„¶éŠF5ªƒì¶ÀPè4üÿÿƒÄ<vARhÿt$UèeýÿÿƒÄ…À…Ì‹L$HfÇÿÿ‹\$LfÇÿÿ‹D$PÆÿ‹T$TÆÿéV�‹L$HŠA2ƒì¶ÀPè×ûÿÿ1ÛƒÄƒàt³‹T$LŠB2ƒì¶ÀPè¶ûÿÿƒÄƒàtƒËƒì¶FPèžûÿÿƒÄƒàtƒËƒì¶FPè†ûÿÿƒÄƒàtƒËˆØ2F÷Ðƒà<ˆD<„Î…ÿ~aŠD$ˆD$ŠL$L$©t‹D$ ‹\$Hf‰ŠD$©tf‹F‹T$Lf‰ŠD$©t
ŠF‹L$PˆŠD$ƒàtuŠF‹\$Tˆëj�ƒì‹Ujj�D$$P·EFD$ ¶MpÓàPÿuÿR@ƒÄ …À…†‹D$‹T$Hf‰f‹D$‹L$Lf‰ŠD$‹\$PˆGŠD$‹T$TƒÿˆŽûýÿÿ‹M…Ét>€|$u7‹\$�[‹\$Hf‹Ñâf‰‹\$Lf‹f‰D‹\$PŠˆD‹\$T‹MŠˆDŠD$‹T$Xˆ1ÀƒÄ,[^_]Ã‰öSƒì‹L$·T$‹A€<‹\$y
+¸ÿÿë@�vP�D$P�D$P�D$P�D$P�D$PRQèüÿÿƒÄ €|$uf;$t¸þÿë·D$ƒÄ[Ã‰ö‹L$‹T$‰È+B@Áè‹RfÁé¶ƒáÓøƒà¶€Ã�WVS‹D$‹p…ö‹\$ŠL$„Š‹x@‰Ø)øÁèŠ0¶ÁƒøU±tƒøU1É…Àë=ÿ±t±‰ØfÁèƒàƒøtƒø…Àtë<ƒøt#ƒøt*ë0�âüë&�âó��	Âë�v�âÏÁáë�ƒâ?Áá	Ê)ûÁëˆ3[^_ÃUWVSƒì‹l$ ÆD$	‹]…Ût%ƒìÿt$,UèÿÿÿˆD$ƒÄ<t
¶D$	éõ�vƒì‹Ujj�\$S‹D$<ƒÀPÿuÿR@ŠD$*ƒÄ :D$u<ÿt<Ut„Àu
+ˆD$	é��‹E‹P4ƒìÇB jhÿuÿt$<ÿuÿP@ƒÄhhÿÿu‰ÃÿƒÄ…ÛuR1ÿ¾UëG1ö‰ø<w:ƒì‰ð2D$¶ÀPèøÿÿYˆÃ‰ð2D$¶ÀPèøÿÿ¶À¶ÓÂƒÄƒúÃ‰ðˆD$	‰ø<v¸ëR¶\$
Sÿt$,Uè/þÿÿƒÄ‰ØƒÄ[^_]Ã‰öUWVSƒì,‹D$D‹L$H‹T$Lf‰D$‹t$P‹l$T‰èf‰L$&f;T$‰ñˆD$‹|$@f‰T$$ˆL$ÆD$¸„ŠD$'2D$&¶ÀƒìPèe÷ÿÿƒÄƒàt€L$ŠD$%3D$$¶ÀƒìPèD÷ÿÿƒÄƒàt€L$ƒì¶D$Pè)÷ÿÿƒÄƒàt€L$ƒì¶\$Sè÷ÿÿƒÄƒàt€L$f‹D$&f‰D$f‰D$·D$$f‰D$f‰D$�T$‰ð‰$ˆD$‰êŠD$ˆT$¶ÐˆD$Áâ·D$	Ð‰ñ
ªˆL$ˆ\$‰D$�L$ƒì‹jjQ·t$·GF¶Op�0ÓàƒÀPÿ7ÿRD‰ÃƒÄ …Ûu+ƒì‹jjÿt$·WF¶Op�2Óâ�ÂRÿ7ÿPD‰ÃƒÄ …Ûup‹‹@4€x„ ‹W…Òt�vÑàfÇ­ÞfÇD­ÞU�D$P�D$P�D$P�D$P�D$PVWè†øÿÿ‰ÃƒÄ …Ûu‹D$f9D$&uf‹D$
+f9D$$u€|$t?ƒìhèüÿÿÿƒÄhVWè÷ÿÿ‰ÃƒÄ…ÛtƒìVWèpöÿÿƒÄ‰Øë<�¸ë4�‹O…Ét*�vf‹D$&Ñâf‰‹D$$f‰DŠD$ˆD‹GŠL$ˆL1ÀƒÄ,[^_]Ã�VSS‹t$‹Nt…Éu6ƒìÇFt‹jjh·FD·Vx¶NpÐÓàƒÀ,Pÿ6ÿSDƒÄ ë�v1ÀZ[^Ã‰öVSƒì‹\$‹t$ h@èüÿÿÿ‰$è•ÿÿÿƒÄjVSè=ûÿÿ‹Ç$jhƒÆVÿ3ÿPDƒÄ$[^Ã‰öUWVSƒì‹t$ f‹FX‹\$$!ØÁà	f‰D$
+fÇD$ÇD$ÿÿÿÿÆD$ÿ‹T$(·NV‰ØÓèƒúÿu·è‹Ff‹hé¹�vQ·èU¶NpÓê‰Ðf+FF·ÀPVèúÿÿ‰ÃƒÄfƒûþ¸þÿÿÿ„±é‚fƒûþtfƒ|$?v
+¸þÿÿÿé”·VF·û¶Np�:Óâ·D$
+Â‰T$ƒìÿt$VèüúÿÿˆD$‹FƒÄf;hu€|$ÿt
+‹D$,Ç€|$ÿt€|$ufÿD$PUWVèƒùÿÿ‰ÃƒÄfƒûÿ…tÿÿÿ€|$t€|$ÿt€|$u¸ÿÿÿÿë‹D$ƒÄ[^_]ÃWVS‹|$…ÿ‹t$töG.uƒìh€èüÿÿÿƒÄ¸é’�‹GP…ÀuƒìhÀèüÿÿÿƒÄ¸jës‰ö‰>Š_ˆ^oˆ^p‰ø·P$¯P¶ËÓê�ú€v€ûw�CˆFpŠFp*FoƒìˆFn‹ÿp4èüÿÿÿ‰$èüÿÿÿ‰F[ÿw4èüÿÿÿ‰$èüÿÿÿ‰F‹G4Ç@ ƒÄ1À[^_Ã�vWVS‹t$…ö‹|$tQj|jWÿZÿv4èüÿÿÿˆGmƒÄƒìVWèÿÿÿƒÄ…Àur·^$¯^¶wp�N÷ºÓâf¶Gp‰ñƒè	f‰WTÓëJf‰GVÇGÇGÇGÇGÇG`ÿÿÿÿfÇGRfÇGFf‰WXf‰_LÇGtÇGd1À[^_Ã�vSƒì‹\$·CLPèüÿÿÿƒÄfƒ{J‰Ct·CJƒìÑàPèüÿÿÿ‰CƒÄ‹S…Òt‹C…Àufƒ{JtƒìhëD�¶Cmº ŠA„Éˆu@ƒìhèüÿÿÿ¶Sm¹€‰‘¶Cm‹�ƒÄ…Ûuƒìh@èüÿÿÿƒÄ¸?ë‰ö1ÀƒÄ[Ã�UWVSƒì,‹t$D‰ófƒûÿ‹|$@‹l$HfÇD$u…ítf‰u·ÃéJ‰ö·Ó‹G€<y…ítfÇEÿÿ‰Ðé+�vS�D$/‰D$P�D$2‰D$P�D$5‰D$P�D$6P�D$8PRWècóÿÿƒÄ €|$+t%ƒìh€èüÿÿÿƒÄ…í„ÔfÇEÿÿéÉ‰öf‰t$f‹\$&f;_Lƒ³fƒûÿ„©�D$"‰D$�D$ ‰D$‰öQÿt$ÿt$ÿt$ÿt$ÿt$ ·óVWèåòÿÿƒÄ €|$+u‚‹G€<y‹T$$‹D$ f9Âu…ít	f‹D$f‰E‰ðëL‹T$$‹D$ f9Ðt…ítfÇEÿÿ·D$ë.‰öf‰\$fÿD$f‹\$"f;_Lsfƒ|$?w
+fƒûÿ…iÿÿÿ¸þÿƒÄ,[^_]ÃUWVSƒì‹|$ ‹‹C4¶P¶Gm¶„Â…À‹L$0‰ÝtHt·ñé��v·ñ‰ðGh9Gd‡‰ë�·ñ‹E4Æ@ƒì‰ð‹Áà	jPÿwÿt$<ÿ7ÿR@ƒÄ …À…÷1Ò9ò}P‰ñ‰ö1Û‹G�vƒ<˜ÿuC�û€|ñB9Ê|äë.‰öƒì‹D$,Áâ	ÐPWèúÿÿÇ$ÀèüÿÿÿƒÄ¸é¡‹ƒì·D$8P‰ðÁà	Pÿt$<ÿt$<ÿ7ÿSD‰Å‹‹H4¶Q¶GmƒÄ €¼ÂtÆAƒýu9ƒìh1ÛèüÿÿÿƒÄ9ó}F�v‰ØƒìÁà	D$,PWCèˆùÿÿƒÄ9ó|åë&�v1Û9ó}‰öP‰ØjUÁà	D$,PWCèÈôÿÿƒÄ9ó|å‰èƒÄ[^_]Ã�vUWVSƒìŠT$,‹|$ ‹D$(ˆT$f9GR‹l$$ŠL$0v#·ð‹Wfƒ<rÿt‹G·rŠ·Ýƒâˆë�·ð·Ý‹GÆ 8Ár�Hÿ�Aƒì¶ÀPŠD$@¶ÀP‹G·pPVSWèöÿÿ‰D$$ƒÄ ‹T$…ÒtƒìSWè‡îÿÿƒÄë"‰öf;oL¸w‹Gf‰,pf‹GHf…ÀtHf‰GH‹D$ƒÄ[^_]ÃUWVSƒì‹l$ ‹t$$1ÿ·Æ‰D$ë‰öGSjÿt$Uèüÿÿ‰ÃƒÄfƒûþtfƒÿ?v	¸ë ‰öQh·ÃPUè€îÿÿƒÄ…Àuf9óu¼1ÀƒÄ[^_]Ã‰öUWVSƒì‹l$ ·t$$‹Ef‹pfƒøÿtF·Ø‹E€$€‰÷·MVÓç1öfƒ}Tt+�D$‰D$ÿt$jÿWUèøÿÿƒÄ@t‹EþF·ETG9Æ|ÝƒÄ[^_]Ã�UWVSƒìL‹l$`‹E\9Edƒƒì¶EmPèüÿÿÿ‰D$$ƒÄ…Àuƒìh`èüÿÿÿƒÄéÔ‹Ed·MV‰ÂÓêf‰T$ ‹U\)Â;T$dv‹T$d‰T$d‹E‹@4Ç@ PhhÿÿuÿƒÄ‹|$d…ÿ„��‹UX#Ud¶MpÁâ	¾Óæ·Ê)Î‰ð‰L$Áè	‹L$d9Á‰L$v‰D$·D$ ‰D$‹E‹L$f‹HfƒûÿuÁþ	udé�f…ÒuVhjhÿƒÄÆD$·Û‰$é‘�·EF$¶Mp‹\$Óà‹T$…Û�<ÆD$„g�L$>‰L$�v‰þÁî	·UX‰ð!Ð‹……ÉuƒìWUèFòÿÿˆD$N·UXƒÄ�‡‰ÃÁë	‰D$‰Ø!Ð‹……Àuƒìÿt$Uèòÿÿ‹T$ˆBƒÄ·UXŠD$>‹L$:A…Ñ!Ó‹�…Û…À!Ö‹µ…É…¯¶ÀƒøU„¯ƒøU…À„¢éƒ�=ÿ…wƒì‹Ejhÿt$(WÿuÿP@ƒÄ …À…èRhÿt$ÿuÿƒÄ…ÀtƒìWUèNõÿÿ^Xÿt$Uè2ýÿÿƒÄSh‹D$PÿuÿƒÄ…À„ýƒìÿt$UèõÿÿZYéÃ�vƒì‹Ejhÿt$(WÿuÿP@ƒÄ ƒø…¬ƒì‹Ejhÿt$(WÿuÿP@ƒÄ …ÀtQƒìWUè·ôÿÿ‹EÇ$hÿt$(�ŸSÿuÿP@ƒÄ …ÀtƒìSë:‰öÁë	·EX!ÃÇ�ë+‰ö‰ø·UXÁè	!ÐƒìÇ…�‡PUèJôÿÿƒÄƒìÿt$Uè*üÿÿƒÄë�‰øÁè	·UX!ÐÇ…�Çé�v1Ûë·UX‰øÁè	!Ðƒ<…„Ò·Ã‹T$¶ƒøUtsƒøU
+…Àtjé´�=ÿ…¨ƒì‹Ejhÿt$(WÿuÿP@ƒÄ …À…Phÿt$ÿuÿƒÄ…ÀtkƒìWUè‚óÿÿY^ÿt$UèfûÿÿƒÄëP�ƒì‹Ejhÿt$(WÿuÿP@ƒÄ ƒøuƒìWUèFóÿÿXZÿt$Uè*ûÿÿƒÄ‰øÁè	·UX!ÐÇ…C�Çfƒû†ÿÿÿ€D$¶D$;D$‚¤üÿÿþD$€|$„eüÿÿVÿt$ÿt$Uè²íÿÿ‰ÃƒÄfƒûþt€|$?vƒìh èüÿÿÿƒÄ¸ë+�·ËfC‰$…üÿÿ‹D$Ed‹T$fÿD$ )T$d…€ûÿÿ1ÀƒÄL[^_]Ã‰öƒìjÿÿt$èÎúÿÿƒÄÃ‰öUWVSƒìL‹t$`‹T$d‹Ff‰T$6·úf‹x¸ÿÿÇD$,ÇD$$ÿÿÿÿf‰D$"f‰D$J‹‹H4¶Q¶Fm€¼‚Š”ÂÇD$ˆT$”D$f;^L¸ƒ¡ÇA ·NVÓç·ÛÿF4‰|$0‰\$‰\$·FF‰ÝÅ¶NpÓå€|$u!ƒìÿ5VèúÿÿƒÄ…À…S‹D$0‰Fhƒ|$u7Q�D$NPÿt$Vè;õÿÿf‰D$2ƒÄfƒøþ„å·VF·D$"¶NpÐÓà‰D$$f‹D$6f9FRvU‹V‹L$öuKƒ|$ufƒ|$Jÿt·D$JÆ€ƒì·D$*Pë�‹Vƒì·ÀfÇBÿÿÿt$Vè�øÿÿƒÄé±�v‹V‹D$€<ˆ_ÇD$(fƒ~T„W�T$D‰T$ÇD$Dÿt$jÿÿt$8Vèñÿÿ‰ÃƒÄ9ëu#¶D$…ÀtHtë
+�‹L$0;NdsÿD$,éæ‰ö1ÿƒûÿto�ƒûþ„ïƒì‹jhÿvSÿ6ÿP@ƒÄ …ÀtIƒø…ƒìhàèüÿÿÿ‰øƒÄ:r¸éä‰öÿt$Sÿt$8Vèqðÿÿ‰ÃƒÄGƒûÿu’ƒûÿtiÿD$,9ëta‹‹@4¶P¶Fm€¼‚u;\$$uD‹T$D…Òu‹D$h…À„dƒìjjÿvUVèõÿÿƒÄ ÿF0…Àtƒø…f‹|$h…ÿ„$�D$$ÿFhÿD$(ÿD$0·FT�Å9D$(Œ±þÿÿƒ|$huNƒìh�D$PP�D$RPÿt$,Vè’äÿÿƒÄ …À…ƒìhÿt$P·D$RPÿt$,Vè¿äÿÿƒÄ …À…Þ‹\$,…ÛŽ´Q�D$AP�D$DP�D$GP�D$HP�D$JPÿt$,Vè˜æÿÿƒÄ …À…£€|$=¸…“‹‹@4¶P¶Fm€¼‚u&·T$J‹F€€Rh·D$*PVèåÿÿƒÄëY�v‹F‹T$€€·L$8‰L$ë0‰ö¸ë7�ƒìh èüÿÿÿƒÄ¸vë�·T$6‹FfÇPÿÿƒìÿt$VèÙõÿÿƒÄƒÄL[^_]Ã‰öUWVSƒìºÿÿ‹D$4fÇD$
+ÿÿfÇD$‹|$0f‰ÇD$�vfÇD$ÿÿfÇD$f‹GT@fÇD$f‰D$f‹OJf9L$ƒ1‰ö·\$‹Gf‹Xfƒøÿ„	·è‹WŠD<ÿt(ƒà<@v!f‹T$f‰T$
+ƒìh€èüÿÿÿƒÄéÑ‰öf‹D$f9GRw4f�|$ÿvfƒ|$ÿ…ÃƒìSWèbõÿÿf‹D$@fÿD$f‰GRƒÄ‹WŠD¾f!Æ„Ïf9t$rw„ÀxsS�D$P�D$"P�D$%P�D$&P�D$(PUWè·äÿÿ‰ÃƒÄ …Û…œ€|$…€f‹T$f9T$utf9t$u
f¶D$f9D$sf¶D$f‹T$f‰D$f‰t$f‰T$f‹OJfÿD$f9L$‚Ñþÿÿfƒ|$ÿ„µQj·t$‹G·pPWèKðÿÿ‹T$DƒÄfƒøþf‰u¸é�f‹D$f‰D$ë·RjVWèúùÿÿ‰ÃƒÄ…Ûtƒûvt4ƒìh`èüÿÿÿƒÄ‰ØéË�fƒHwlƒìhÀèüÿÿÿƒÄëK�vƒìhèüÿÿÿ‹G·p‹GÆ`‹T$DfÇÿÿƒÄë�vfƒ|$
+ÿu#‹D$4fƒ8ÿ„&ée�ÿD$ƒ|$	Žµýÿÿfƒ|$
+ÿ„IƒìhèüÿÿÿƒÄ‹T$4fƒ:ÿ…ƒìh@èüÿÿÿƒÄfƒHtCf‹_P‰Ø‰ö@f;GLf‰GPrfÇGP·WP‹G€<ÿuPhRWè±áÿÿƒÄ…ÀtRf‹GPf9ØuÅ‹D$4fƒ8ÿ…›ƒìhàèüÿÿÿƒÄj·\$‹G·XPWèÊîÿÿ‹T$DƒÄfƒøþf‰u&ézþÿÿ�f‹GP‹T$4f‰ƒìh èüÿÿÿƒÄëš�vƒìSWèÆòÿÿƒÄjSWè^øÿÿ‰ÃƒÄ…Ût!éFƒìhÀèüÿÿÿƒÄ¸?é,‰öfÇD$f‹OJf9L$ƒ‰ö·t$‹Gfƒ<pÿ„í·p‹GŠ<ÿ„Ûƒà<@†ÐƒìVWè>òÿÿÇ$ èüÿÿÿƒÄ�D$P�D$"P�D$%P�D$&P�D$(P‹G·pPWè°áÿÿƒÄ …À…—€|$…{ýÿÿf‹D$f9D$…kýÿÿ‹T$4·Uj‹G·pPWèŽíÿÿ‹T$DƒÄf‰hSWèàÿÿƒÄ…ÀuGƒì¶D$&P¶D$)PVSWèZðÿÿƒÄ …Àu)SjVWè)÷ÿÿ‰ÃƒÄ…Ûuf‹OJfÿD$f9L$‚ðþÿÿ1ÀƒÄ[^_]Ã‰öWVSƒì‹\$ f‹sPfƒ{H‹|$$‰ðw-ƒìWSèÿúÿÿƒÄƒø?…™ƒìh`èüÿÿÿƒÄf‹CP�v@f;CLf‰CPrfÇCP·SP‹C€<ÿuNƒìh�D$P�D$PRSèÞÿÿƒÄ …ÀuDf�|$
+i<tPh·CPPSè$ßÿÿƒÄ…Àu
f‹CPf‰1Àë‰öf‹CPf9ðu‹ƒìWSè]úÿÿƒÄƒÄ[^_Ã�vWVSƒì‹D$$ƒøv‹t$ ‹|$(…­ƒìh èüÿÿÿ[X�D$PVè÷þÿÿƒÄ…À…ˆQ�D$P�D$P�D$P�D$P�D$P‹F·ß·XPVèÅßÿÿƒÄ …ÀuVf9|$u€|$
t¸ëA� 8D$rHˆD$ƒì¶D$P¶D$PS·D$&PVè˜îÿÿƒÄ …Àu
RjSVègõÿÿƒÄƒÄ[^_Ã�UWVSƒì‹t$ f‹F:@f;FJf‰F:rfÇF:f‹^:‰Ú‹Në�C·Ãfƒ<Aÿu
f;^Jr1Ûf9Úuèf9Ú„Çf‰^:‹F·û·x‹F€<‰Šƒì�l$UVèæýÿÿƒÄ…À…•‹Vfƒ<zÿu	fÿNHé€P�D$
P�D$P�D$PU�D$P·zPVè«ÞÿÿƒÄ …ÀuZ€|$	¸uNf9\$uGƒì¶D$P¶D$PW·D$"PVè‘íÿÿƒÄ …Àu$QjWVè`ôÿÿƒÄ…ÀtRWPVè$þÿÿƒÄë�v1ÀƒÄ[^_]Ã‰öUWVSƒì‹\$ ‹|$$;{`u,‹‹B4‹H …Éu"‹C9˜…¥ë�vÇCëq�v‹‹B4;{\Ç@ ÇCÇC ÿÿÿÿsu1ö�l$�vUÿs WSè�æÿÿƒÄƒøþ‰C s¶‹Cƒì‰C‹jhÿsÿs ÿ3ÿP@ƒÄ …ÀtƒøuF‰ð<?vº‰ò€ú?v¸ë,‹C‰˜‹‹@4‰{`Ç@ ‹T$(…Òt	‹C ‹T$(‰‹CƒÄ[^_]ÃUWVSƒì,‹T$D‹L$L�DÿÇD$ÇD$‹T$@;B\r¸é®‰ö‹L$L9L$fÇD$sI�|$$1Û�t$�Wjÿ‹D$LØPÿt$Lè�åÿÿƒÄ��ƒøþ‰2uÇ2ÿÿÿÿfÿD$·D$‰Ã;\$LrÂƒ|$LuO‹T$‹L$9ÊvC‰Ð)È=u8ƒùÿt3Bt0ƒì‹T$L‹jhÿt$\Qÿ2ÿP@ƒÄ …Àu‹L$@ƒA$1Àéü‹T$L…ÒfÇD$„å�1íëmƒì‹L$L‹jhÿt$\Rÿ1ÿP@‰D$4‹D$`ÿ@$ƒÄ ‹D$…Àt}ƒ|$u-�D$$Pÿ4‹D$LøPÿt$LèµäÿÿƒÄƒøþ‰uÇÿÿÿÿë	�‹D$ëz‰öE‰ê€ú?w9·|$�4½�\$‹ƒúÿ…pÿÿÿShjÿt$TÿÇD$ ƒÄ‰é€ù?w°fÿD$ƒìhÿt$Tèüÿÿÿ‰D$XƒÄ·D$;D$L‚ÿÿÿ‹D$ƒÄ,[^_]ÃUWVSƒì‹l$$‹t$,ÇD$ÇD$�.‹T$ ‹|$(;B\‰ûv¸éÒ�÷ÅuƒþuCjSUÿt$,è¾ýÿÿƒÄ…ÀtƒøÇD$…Ÿƒþ„–ƒìhWèüÿÿÿEN‰ÇƒÄ�D.ÿ©u‰D$‰ð‰ûƒàþ1ÿ9ÇsB‰Æ‰öjS�/Pÿt$,èXýÿÿƒÄ…Àt
ƒøÇD$u=ƒìhSƒÇèüÿÿÿƒÄ9÷‰ÃrÂ‹L$…ÉtjSÿt$ÿt$,èýÿÿƒÄ…Àu‹D$ƒÄ[^_]Ã�vUWVSƒìL‹T$lf‰T$4‹t$`·NV‹D$dÓè·È‰L$f‰D$ ‹Ff‹H‹L$df#NX‰ÇÁá	1í¸ÿÿfƒÿÿf‰L$fÇD$f‰T$ÇD$ÇD$ÇD$fÇD$ÿÿ‰ûf‰D$6„7‰ö‹D$…Àug·VF·Ãƒì¶NpÐÓà·T$"ÐPVèÞÿÿ¶ÀƒÄƒøt ƒø…Àtë1‰öƒøUu*fÿL$EÇD$‹L$…Éuf‹D$6f‰D$‰ßÇD$fƒ|$4ut‹T$…Òul·VF·Ãƒì¶NpÐÓà·T$"�„PVè˜Ýÿÿ¶ÀƒÄƒøt ƒø…Àtë1‰öƒøUu*fÿL$EÇD$‹D$…Àuf‹D$6f‰D$‰ßÇD$f;l$4tCf‰\$6Qÿt$ ·ÃPVèúÛÿÿ‰ÃƒÄfƒûþ„fÿD$fƒ|$?¸‡ÿfƒûÿ…Ëþÿÿƒ|$uf‹T$f‰T$6‰ûf‹D$6fƒøÿ…Ufƒûÿt~R�D$CP�D$FP�D$IP�D$JP�D$LP·ÛSVèCØÿÿƒÄ …À…ž€|$?¸…Ž 8D$>r4‹F€<x+Pjÿt$$VèîÿÿƒÄ…ÀtUÿt$ PVèÄ÷ÿÿƒÄ…À…Oƒì�D$>PVè×öÿÿƒÄ…À…6‹F‹L$f‹HfƒûÿuÆD$>ÆD$=ëZ�vW�D$CP�D$FP�D$IP�D$JP�D$LP·ûWVèŒ×ÿÿƒÄ …À…ç€|$?…Ò‹D$ f9D$8…Ã‹F€<yÆD$>ƒì¶D$JP¶D$MPÿt$0·D$NPVèVæÿÿƒÄ …À…•fCu·T$6‹FÆ€f‹\$6ë‰Ã‹T$dƒì·D$@‰VhPjÿt$|·VF·Ã¶NpÐÓà·T$2ÐPVèƒäÿÿƒÄ …ÀuB‹L$ f9NRv6‹F‹T$·<P‹^Š‰Èƒà·T$Ðƒø@ŠT$�
+ˆë¸ë�1ÀƒÄL[^_]Ã‰öUWVSƒì‹l$$·|$,�/‹t$ �Bÿ;F\r	¸ë|‰ö;n`u9Âu‹‹@4Ç@ ‹‹@4¶P¶Fm€¼‚u,fƒ~:ÿt%f‹F8@fƒøïf‰F8vƒìfÇF8Vè·öÿÿƒÄ…Àu"~(1Û�vWÿt$,UVCè¯ûÿÿƒÄ€ûwƒøtæƒÄ[^_]Ã‰öSƒì‹\$SèòÝÿÿƒÄ…Àujÿt$ÿt$Sè/ÿÿÿƒÄƒÄ[Ã�vUWVSƒì‹D$$‹\$ ‰Ç·KVÓïfƒÿÿ¸„sƒì�D$PSè|ôÿÿƒÄ…À…Z‹C·ïf‹hf‰$f@„¥V�D$
P�D$P�D$P�D$P�D$P·t$VSè9ÕÿÿƒÄ …À…€|$	uf;|$tƒìhàèüÿÿÿƒÄ¸éë‰ö‹C€<xO 8D$rIQjUSèâêÿÿƒÄ…ÀtRUPSè¦ôÿÿƒÄ…À…°‹Cf‹hfƒøÿuf‰$ÆD$ÆD$ë‰öÆD$ƒì¶D$P¶D$PU·D$"PSè§ãÿÿƒÄ …Àui·T$
+‹C€$€·L$
+‹SŠCTfƒ<$ÿu·T$
+‹C€€‹Sf‹D$
+f‰jƒì·CTÇChPjÿt$<·D$"·SF¶KpÐÓàPSè¾áÿÿƒÄ ƒÄ[^_]Ã�vUWVSƒì‹|$,‹D$$‹l$ ø1ö;E\v¸éJ‰öƒìUèûÛÿÿƒÄ…À…4÷D$$uƒÿuCjÿt$,ÿt$,Uè%ýÿÿƒÄƒÿ‰Æ„…ö…ýÿD$$ƒìhÿt$4èüÿÿÿ‰D$8OƒÄ‹T$$�Dÿ©ÇD$u‰D$ƒçþ1Û9ûƒŽ‰ö‰ØƒìÁà	Pÿt$4èüÿÿÿ‰Æ‹E‹@4¶P¶EmƒÄ€¼‚u9‹L$$Ù·EX…Èu+‰ø)Ø·UT9ÐrPVQUèRýÿÿ‰ÆƒÄ…öu[·ET�\þë�vjV‹D$,ØPUèPüÿÿ‰ÆƒÄ…öu5ƒÃ9û‚tÿÿÿ‹|$…ÿt"ƒìÁã	Sÿt$4èüÿÿÿjPÿt$ Uèüÿÿ‰ÆƒÄ ‰ðƒÄ[^_]ÃUWVSƒì‹|$4‹T$8‹t$0�:;F\fÇD$v
+¸éƒìVèÚÿÿƒÄ…À…üÇD$‹D$89D$ƒä�T$‰T$‰öÿt$jÿWVèßÚÿÿ‰ÃƒÄƒûþ¸„¼ƒûÿ„›·NV‰ýÓíQjSVèÍÕÿÿƒÄ€=u‹‹A4¶P¶Fm€¼‚u	‹V…Òu‹ƒìjj�D$*P�CPÿ6ÿQDƒÄ …ÀuY·Õ‹Ff9nRf‹Pv1·È‹VŠ©t	Hˆë�vƒìh èüÿÿÿƒÄ¸ë�ÿD$ÿF,‹D$8G9D$‚&ÿÿÿ1ÀƒÄ[^_]ÃUWVSƒì‹t$,‹l$0Vè[Ùÿÿ1ÿƒÄ…Àus‹]ƒûÿu5ƒì�D$PVè@ëÿÿ‰ÇƒÄ…ÿtfƒ~HtM·FH·NVÓà‰E1Àë<�v‹]·VH·NV‰ÐÓà9Ø}ƒì�D$PVèûêÿÿ‰ÇƒÄ…ÿtÖ·VH·NVÓâ‰U‰øƒÄ[^_]Ã�v1ÀÃ�‹D$‹@\ÃUWVSƒì‹|$$…ÿ‹t$ ‹l$,„±�‹U¶Np‰ÐÓè@Óà)Ð9Ç‰úv‰Â‹\$4…Ûtƒì‹·ÚjS‹T$<ÿ2ÿuÿ6ÿP@ë�ƒì‹·ÚjS‹L$<ÿ1ÿuÿ6ÿPDƒÄ …ÀuV‰ØE‰E‹T$(¶NpÓè·VD)Ð‹L$0)ß€<ÿt&»�¶Np‰ØÓàE‰E¶NpÓè)Ð‹L$0€<ÿuà…ÿ…Pÿÿÿ1ÀƒÄ[^_]Ã‰öUWVSƒìD‹|$X‹G‰D$ ‹\$`‹j�l$,U¶GnPj
+·GDPÿ7ÿRP‰ÆƒÄ …ö…wÆ€|$ ÿt‰ê�vŠ@<	ˆw	¶À€<ÿuî€;
+uƒìh`èüÿÿÿƒÄ¸pé7�vf¶f‰Gx¶·GD¶OpÐ‹·R"ÓàÐ‰D$ƒì·oLÿt$\�D$,P�D$,‰D$‰ëP�D$,�ãÿ‰D$)ÝPUWèRþÿÿ‰ÆƒÄ …ö…Ñ·GJ¾�,‰ð)Ø9Å‰êv‰Â…Ûf‰T$„‹T$T…ÒtLƒì‹jVÿwÿt$4ÿ7ÿP@ƒÄ·ÛSÿwÿt$$‰ÆÿƒÄ·D$‰D$P_SÿwÿƒÄëJ�vP·ÛSÿt$ ÿwÿƒÄ·D$‰D$Pÿw_Sÿ‹Ç$Vÿwÿt$4ÿ7ÿPD‰ÆƒÄ …ö‰ð…‹$G‰D$‹D$‰D$¶Op·_D‰ÂÓè‰\$)Ø�t$ €<0ÿt7»‹D$Óã‰D$��‰D$‰ÂÓè+D$€<0ÿuëë�‹G·\$‰D$‰$+,$ƒìÿt$\�D$,P‰ëÿt$�ãÿÿt$)ÝUWèéüÿÿ‰ÆƒÄ …öul…Ûtf‹l$T…ít0ƒì‹jhÿwÿt$4ÿ7ÿP@ƒÄSÿwÿt$$‰ÆÿƒÄë.VSÿt$ ÿwÿ‹Ç$hÿwÿt$4ÿ7ÿPD‰ÆƒÄ ‰ðƒÄ<[^_]ÃVSƒì‹t$h èüÿÿÿƒÄöFl„ƒ~t…ƒì‹^hàèüÿÿÿŠFF*FDˆD$¶Nn¶ÀÓàƒÄ·À‹P·FDÓà·ÀPÿ6ÿRHƒÄ…À…¼€flþP�D$PjVèÂüÿÿƒÄ…À…�Qhjÿvÿ·FH‰·FP‰C·FR‰C‹F$‰C‹F(‰C‹F,‰C‹F0‰C‹F4‰C·F8‰C ·F:‰C$‹F<‰C(ÇC,UUªª‹Fd‰C4‹Ç$hÿv¶T$·FD¶NpÐÓàPÿ6ÿSDƒÄ …Àtƒìh ë
+‰öƒìh`èüÿÿÿƒÄ¶Fm€¸ u&‹…€…ÀtƒìPèüÿÿÿ¶FmÇ…€ƒÄ¶VmŠ‚ „ÀxHˆ‚ ‹F…ÀtƒìPèüÿÿÿƒÄ‹F…ÀtƒìPèüÿÿÿƒÄ‹F…ÀÇFÇFtƒìPèüÿÿÿƒÄ‹F…ÀtƒìPèüÿÿÿƒÄÇFÇFƒìh èüÿÿÿƒÄ[^Ã�UWVSƒì@‹l$T‹U·r$‰ð¶z ‹Z™¶Mp÷ÿÓë‰Ñj�1j™÷ÿÿt$`f¯ØÿƒÄƒ|$Xu0ƒì‹Ejÿu¶UnR·ULRjÿuÿPPƒÄ …À…Í‹}ë�v�|$ ÆD$‹M1À:A ƒ†�f¶T$‹D$Xf¯Ó…Àu$ƒìjW¶EnPj·ÂPÿuÿQPƒÄ …À…y1Ò�rë�Bf9òs	·Â€<8ÿuñf9òtD‹t$X…öuf¶D$f¯ÃÂ¶D$‹L$Tf‰AþD$‹MŠD$:A ‚{ÿÿÿ‹\$\…Ûu?é‰öƒìhàèüÿÿÿƒÄ¸péÿ‰öƒìh€	èüÿÿÿƒÄ¸éã‰öQhjÿuÿÆD$/ƒÄ‹}é±�v1öë‹}�ƒì±”j
+¶ÙS‰ØEP¶D$7‹L$l·A¶Mp·ÆÓâÁàÂRÿuÿW@ƒÄ …Àtƒìh@	èüÿÿÿƒÄëRjh]SÿƒÄ…ÀtFfƒþv�fƒþ‡Bÿÿÿ°”f¶Ø1öfƒûv¶ø�·Æ‹M�Š
+Ff9ówëþD$‹E‰ÇŠT$:W ‚Eÿÿÿ1ÀƒÄ<[^_]Ã�vS‹T$‹\$‹B\‰¶Jp·BNÓà‰C‹B<‰C¶Bp‰C1À[ÃUWVSƒì‹D$ ‹‹T$ ·C$¶Jp¯CÓè·À‰Â¹…ëQ‰D$Ñâ‰È÷â‰Ð‹T$,Ç‹SPÁè…Ò‹l$$u7ƒìhÀ	èüÿÿÿƒÄ¸é�ƒìh
+èüÿÿÿƒÄ¸@éæ‰ö‹{(;|$ƒ¿·À‰D$‹\$)û�ûv»ƒì‹L$(‹j¶Qmÿ4•€¶QnRSWÿ1ÿPP1öƒÄ 9Þs^‹D$,‹;T$sX‰ö‹L$ ¶Am‹…€Š<ÿt+þÈt'¶Ip�>ƒìÓà‰EjUèüÿÿÿ‹T$<‰Å‹@‰ƒÄ‰ÂF9Þs;T$r´ë‰ö‹L$,‹;T$„$ÿÿÿß;|$‚Hÿÿÿ‹D$ ¶HpÓd$‹D$(‹T$‰1ÀƒÄ[^_]ÃUWVSƒì‹D$$‹\$(ŠT$01öf9Ø‹|$ ‹l$,ˆT$t8‰öfƒøþtfƒþ?v¸ë2�ŠL$‹W·ÀˆQ·ÕRPWèÊÿÿFƒÄf9ØuÊ‹G·ÓŠL$ˆ1ÀƒÄ[^_]Ã�vWVSƒì‹t$,h�D$P�D$P·|$<WVè/Äÿÿ‰ÃƒÄ …Û…‰·FF�89Ã}¸ëwP¶Nn¸Óà·À‹P¶Fo¶Np)ÁÓã·ÃPÿ6ÿRH‰ÃƒÄ…ÛtƒìWVè~ÄÿÿƒÄ‰Øë6�vÿF<‹D$@…À‰D$uÇD$ƒìhÿt$hi<WVèðÃÿÿƒÄ ƒÄ[^_Ã‰öVSƒì ‹\$,‹jj�D$P·t$<·CF¶Kp�0ÓàƒÀPÿ3ÿR@ƒÄ …ÀuPƒì‹jj�D$P·CF¶Kp�0ÓàPÿ3ÿR@ƒÄ …Àu#‹D$f9D$uf‹D$
+f9D$t
+¸>ë�v1ÀƒÄ[^ÃUWVSƒì<‹|$P‹t$T·Þ‹GŠ<tI<�tE<tA<‚t=ƒìh�D$HP�D$JPSWèÃÂÿÿ‰ÂƒÄ …Ò…=‹D$8G<f�|$6i<t‹GÆÿ1ÀéQ�D$9‰D$ P�T$<‰T$ R�L$?‰L$ Q�D$@‰D$ P�T$B‰T$ RSWèËÄÿÿ‰ÂƒÄ …Ò…Ý€|$5…ôf‹D$.f‰D$&f@ufƒ|$0ÿu€|$3ÿu€|$4ÿtˆfƒ|$&ÿ„Äf‹T$&f9WJ†µ‹O·l$.f‹if‰D$*‹D$0f‰D$$f;GLr(fƒ|$*ÿu‹Gf‰4ié½ƒìSWè>þÿÿƒÄ…Àupë}�·D$0‹WŠ<t<�t·Îf‰t$,‰L$ ÆéN‹D$$f9D$*uÆ‹G·T$.f‰4PéÝþÿÿfƒ|$*ÿu‹Gf‰4iëP�vƒìSWèÎýÿÿƒÄ…Àt‹GÆé¬þÿÿ�vƒì·l$2UWè©ýÿÿƒÄ…Àt"‹GÆD‹G·T$.f‰4P‹GÆ�ésþÿÿ‰ö‹GÆƒìh@
+èüÿÿÿƒÄéUþÿÿ‹GÆé²·Þ‹GŠ<t<�u7f9t$*…–ƒìj·\$6S·ÅPÿt$8Wèçûÿÿ‹T$L‹Gf‰XƒÄ éþÿÿRÿt$ ÿt$ ÿt$ ÿt$ ÿt$ SWèìÂÿÿ‰ÂƒÄ …Ò…þ€|$5…xÿÿÿf‹L$&f9L$.u*ŠD$3@:D$)u‹GÆ‰õ‹t$0ŠD$3fƒþÿˆD$)…Nÿÿÿfƒ|$*ÿu2ƒìj·t$6V·ÝSÿt$8WèIûÿÿ‰Â‹GÆ�‹L$L‹Gf‰pé~ƒì·\$2SWè]üÿÿƒÄ…Àt>‹GÆ‹G·T$.‹L$,ƒìf‰Pj·D$6P·ÝSÿt$8Wèêúÿÿ‰Â‹GÆ�ë-�vƒìh@
+èüÿÿÿ·D$6Ç$P·ÅPÿt$8Wè´úÿÿ‰ÂƒÄ ‰ÐƒÄ<[^_]Ã�VSƒì‹t$h€
+èüÿÿÿƒÄ�D$PjVèáñÿÿƒÄ…À…¢ƒì‹jhÿv¶T$·FD¶NpÐÓàPÿ6ÿS@ƒÄ …Àuu‹V�z,UUªªuif‹f‰FHf‹Bf‰FPf‹Bf‰FR‹B‰F$‹B‰F(‹B‰F,‹B‰F0‹B‰F4f‹B f‰F8f‹B$f‰F:‹B(‰F<‹B4‰FdƒìhÀ
+èüÿÿÿƒÄ¸ë�ƒìhèüÿÿÿƒÄ1À[[^Ã‰öVSR1ö€=‹\$u·CL�@ƒìÑàPèüÿÿÿ‰CƒÄëÇC‹K…Ét21Òfƒ{Lt9ë�v‹K��RÑàfÇ­ÞfÇD­ÞB·CL9Âráë�vƒìh@èüÿÿÿƒÄ€=u¶Kp·sLƒéƒìÓæVèüÿÿÿ‰CƒÄë�ÇC‹S…Òt1À9ðs$ë‰ö‹S�ÆU@9ðróë�ÇD$€X[^éüÿÿÿ^[^ÃUWVSƒì(‹T$<‰ÐÁà)Ð�<…hÀèüÿÿÿƒÄj|j�·Vÿ]Xÿt$@Vè…Êÿÿ‰ÃƒÄ…Ûujj�l$UVèüÿÿÿ‰ÃƒÄ…Û‰Ø…b‹T$4‹¯¶B;ErƒìhàèüÿÿÿƒÄ¸é5�Ç‡<‹—‹D$<‰‹U�Õ)ÐÁà·À�D($‰D$f‹@f‰‡N‹L$4¶Q�Õ)Ð‹\$�ƒ‰\$ŠEf‹‹T$ˆ‡lf‹Bf‰‡Df‹B¶—pˆÑf‰‡F·ÀÓà‰‡@‹L$‹ˆÑÓàÁè	‰‡\‹T$f‹Bf+B@f9Ãf‰ŸJf‰‡Lvƒìh èüÿÿÿƒÄ¸éV‰öƒìVèûÉÿÿ‰ÃƒÄ…Û…>ƒìVèüÿÿÿ‹L$D¶Q¶‡mÆ„ÂƒÄ÷EtƒìVèuüÿÿƒÄ…À…>ƒìjÿ·¶‡nP·‡LP·‡FPÿ·‹\$XÇ‡tÿSP‰ÃƒÄ …Ûtƒìhé‰ö1Àf;‡LfÇD$s+‰ö·À‹V€<ÿtÆkë‰öÆÿf‹D$@f;FLf‰D$r×1Û‹:X s9�l$‰ï¶ÃÑàf‹8f‹NFf)Êf;VLf‰T$sf9(v
+·Ò‹FÆkC‹:X rÍ1Àf;FJfÇD$s ‹V�v·ÀfÇBÿÿf‹D$@f;FJf‰D$ræ1É1Àf;NLfÇD$s9�·Ð‹F€<ktƒìRVè®÷ÿÿ‰ÃƒÄ…Û…1f‹L$�A‰Áf;NLf‰D$rÈ1À1Éf;FLfÇFHfÇD$ƒŒ�·À‹V¶=�t#=�ƒøtƒøtëS=‚t=ÿuEë:·Á€$€ë5�vƒìh"èüÿÿÿY[·D$PVèÅõÿÿƒÄ…Àu·T$‹FÆÿfÿFHf‹L$�Af;FLf‰D$‰Á‚uÿÿÿ‹N<ºðÿ‰Ó‰È1Ò÷óf‰V8·VJ‰Ó‰È1Ò÷ófÇFPÇF,ÇF(ÇF$ÇF4ÇF0f‰V:fƒ~HuMƒì�D$PVèÖÿÿ‰ÃƒÄ…Ût6ƒû?t!é˜ƒìh€èüÿÿÿ‰4$è¯îÿÿƒÄ‰Øë|ƒìhÀèüÿÿÿƒÄ‹D$4Ç@¤,Ç@ð/Ç@x.Ç@$41Ç@(p‰0Ç@H$Ç@,Ô1Ç@0¸9Ç@Ð1Ç@ p5Ç@$'Ç@8ä9ƒìh
èüÿÿÿƒÄ1ÀƒÄ[^_]ÃUWVSƒì<‹T$P‹l$T‹2ÆD$÷EŠ]u
+¸méN‹D$\-"ƒø†³‹D$XŠ@ˆD$‹Vx…Ò¸j„!Q�D$2P¶ûWVÿÒ‰Â‹L$h·D$>ƒÄ…Ò‰A‰Ð…ù�|$\!tföD$. uƒìh 
èüÿÿÿƒÄ¸séÎ‹Fl…Àt‹N|…Ét‹Fp…Àuƒìh6é�‰ö÷E@u¸né—�RhTWVÿÐƒÄ‹D$\-!ƒø‡uÿ$…‰ö‹T$X‹BƒÈ÷E@‰Bt&ƒà@…Mƒìh€
èüÿÿÿƒÄ¸é5�vƒà¿‹L$X‰Aé!�ŠD$ƒàt‹T$XƒJë	�‹L$Xƒa÷1ÿ‰ø:F ƒ÷�T$(�L$$‰T$‰L$¶ë‰øƒì¶ØSÿt$ÿt$ UVÿVl‰ÂƒÄ …Òu8S¶F H1Ò9Ã”ÂRjÿt$4ÿt$4‹\$<…Û¸t‹T$l·BPUVÿV|‰ÂƒÄ …Ò…�G‰ù:N r™éx1ÿ‰ø:F ƒk�T$(�L$$‰T$‰L$¶ë‰øƒì¶ØSÿt$ÿt$ UVÿVl‰ÂƒÄ …Òu9S¶F H1Ò9Ã”ÂR‹T$`ÿrÿt$4ÿt$4‹L$<…É¸t·BPUVÿV|‰ÂƒÄ …Ò…ôG‰ù:N r˜éë�vŠD$ƒà:D$u	ŠD$ƒàu
+¸3éÊ1ÿ‰ú:V ƒ»�L$(�D$$‰L$‰D$¶ë‰úƒì¶ÚSÿt$ÿt$ UVÿVl‰ÂƒÄ …Òu5S¶F H1Ò9Ã”ÂRjÿt$4ÿt$4‹\$<…Û¸t¶D$$PUVÿV|‰ÂƒÄ …ÒuLG‰ù:N r ëF‰ö‹Vt…Òtƒìë(‹Vp…Òuƒìh]èüÿÿÿƒÄ¸jë‰öQ‹D$\ÿp¶ÃPVÿÒƒÄë‰Ðë1ÀƒÄ<[^_]Ã‰öUWVSƒì8‹T$PŠƒà¶Ð‰ÐÁà)Ð‹T$P�…‹%ðÁè‹|$L‹l$XˆD$hà
èüÿÿÿXZÿt$P�³VèQÁÿÿƒÄ…Àujj�D$ PVèüÿÿÿƒÄ…À…¾�ÿ'ÇEu‹ƒ¶@‹T$D‰Bé—�v‹ƒ¶$;P�X$v
+ÇEë�P�Õ)Ð�ƒ�ÿ!rY�ÿ&v5�ÿ8uIƒ}tKW‹C+C¶NnÓà·ÀP‹CÓà·ÀPÿt$T‹T$XÿRHëƒ}tWÿt$HSVèZûÿÿ‰EƒÄë
+‰ö¸3ë�1ÀƒÄ,[^_]Ã‰öWVSƒì‹\$(…Û‹|$ ‹t$$t2�Fƒì·ÀP‹¶Op‹BÓèf¯B$·ÀPÿÓ‰ÃƒÄ…Ût	ƒìWéœƒìh�D$P�D$P·öVWè¬³ÿÿ‰ÃƒÄ …Ûu$R¶On¸Óà·À‹P‰ðÓà·ÀPÿ7ÿRH‰ÃƒÄ…Ûu2‹D$@…À‰D$uÇD$ƒìhÿt$hi<VWè¢³ÿÿ‰ÃƒÄ …Ût!ƒìh èüÿÿÿYXVWè×³ÿÿ‰<$èwèÿÿƒÄ‰ØƒÄ[^_Ã�vUWVS�ìü‹”$‰ÐÁà)Ð�…‰„$Œ‹„$‹@‰„$ˆ‹„$‹@‰„$„‹”$ŠRˆT$vˆT$u‹Œ$ŠI�œ$ÈL$vÆD$`fÇD$XÆD$WÆD$VÆD$w‰\$‰Ú¾D$wfÇBþD$w€|$w~êƒìh`èüÿÿÿƒÄj|jÿ´$˜ÿƒÄ‹´$ŠF„À„‚‹n(…í~<„s€|$v�hƒìÿ´$ ÿ´$˜è,¿ÿÿƒÄ…À…X‹„$Š@ ‹”$ŒˆD$^ƒìfÇBJRè±¿ÿÿ‰ÃƒÄ…Û…<‹Œ$Œ‹1¶Ap·~$ˆÁ‹VÓê‰ø¶n ·Ê™÷ý‰Ó�;™÷ý¯Èf‰Œ$À‹œ$¶S·É¯Ñ¹…ëQ‰È÷âÁêJf‰”$¸1ÿ€~ vG�Œ$¸�”$À‰L$$‰Ë‰T$ ‰Õ‰ñ�v�?‹„$Àf‰*‹„$¸f‰G�W¶A 9ÂrÛë��œ$À�´$¸‰\$ ‰t$$·„$À‹”$Œ�?¯øf‹BL‹\$ f)øf‰‹´$¶V·À»…ëQ¯Ð‰Ø÷âÁê‹\$$Jf‰ŠFÀèƒàPj�´$¸‰t$8Vÿ´$˜èüÿÿÿƒÄh‰Ã‹„$”ÿp�”$ü‰T$XRÿ�Œ$$‰Œ$€ƒÄ‹´$€~…(ÆD$_ŠV 8T$_ƒ‰öf¶D$_f¯„$À�h‹Œ$Œ·õ‹A€<…Ýƒìjhÿq‹„$¤¶Hp‰ðÓàPÿ´$4‹”$8ÿR@ƒÄ …Àt=ƒìjh‹Œ$ ÿq‹„$¤¶Hp‰ðÓàPÿ´$4‹”$8ÿR@ƒÄ …ÀuEWjh‹Œ$˜ÿqÿƒÄ…Àu2QjVÿ´$$‹´$(ÿVHƒÄ…Ûu"»ë"�v‹„$ŠP ë‹Œ$ŠQ ë
+‹´$ŠV þD$_8T$_‚ìþÿÿƒûu‹”$ŠB©t%÷ˆBƒûpuƒìÿ´$˜èNäÿÿƒÄ¸péH�‹Œ$Œ‹A€8uƒìQè(äÿÿƒÄ¸wé"�vÆD$_Š\$^1í1ÿ8\$_ƒ“ÇD$,‹L$ �œ$¨‰ö¶T$_Ñâ·
+Çf‹
+‹T$,9úf‰D$xs0‰ö‹´$Œ‹F€<ÿtfÿL$xÆkë�ÆÿE·Å9ø‰D$,‰ÂrÒfÿL$x¶D$_Ñà‹t$x‹T$$f;4‚
+f‰4þD$_ŠD$^8D$_r‚‹T$p�¬$¦‰”$€fÇD$xfÇD$z1ÿ‰è‰öÆGƒÿvö‹Œ$ŠQ÷Â„ò‹ƒøÿu‹\$Lƒâ	‹C€ú	‰tÆAë‰ö‹t$L;F�ß	1ÿ9Ç}`‰ë1ö�‹”$€f‹fT$z‹Œ$€öAt2‹”$¶B‹I9Áƒr	f‹D$z‰òf÷´$¸@ˆ‹Œ$‹Gƒ„$€9Ç|¥‹„$€+D$p�À�Ð�Ð�Ð‰ÑÁáÊ�Ð÷ÚÁêf‹\$zˆT$vˆT$`f‰\$x‹„$Š@D$v‹”$ŠRT$v€|$v�	R�„$ô‹”$„f)Â¸f)Ð·ÀPjÿ´$ŒÿÆ„$‡ƒÄ‹Œ$€y„®�‹œ$„‹…Àt‹´$ŒH¶NpÓè·À@ë�v1À‹”$„…À‰u$‹Œ$‹A(…Àu€|$w„„€|$w…y‹œ$„‹‹´$€‰¶C
 ‰FƒÃf‹ƒÆþD$wfD$x‰œ$„‰´$€‹Œ$¾T$w¶A9ÂŒSÿÿÿ‹„$‹@‰„$„‹”$‹B(…ÀŽíöB…ã‹œ$Œ¶KpHÓø·À@‰B(f‹r(ft$xWjhz�„$¤PÿƒÄjjF�„$¨PÿƒÄ‹„$€xt
‹@(‹T$pëj‰ö‹Œ$ÆA‹A(‹œ$€‰€|$ut"‹´$„¶F
 ‰CŠFˆ„$áë�v‹„$€Ç@ �”$Ð‰”$„ƒ„$€þD$v‹œ$Œ¶Kn‹´$Óf(‹Œ$¶Q¾D$v‹\$L)Ð‰C‹D$x1Òf÷´$¸ˆD$]f¶D$^f‰T$JfD$xVjhSÿƒÄjh�„$üƒÀPÿ‹´$$¶F‰C ‹”$œ¶Bn‰CÇC¶FÆ„$‡ƒÄƒø‰C†*‹Œ$ˆ‹‹œ$;C‚W…Àt‹´$ŒH¶NpÓè·À@ë�v1À‹”$€‰‹Œ$ˆ‹A‰BÇB@‹œ$€f‹‰ÐfAfD$xfS¶A
@·Ê‰C·´$À‰È1Ò÷ö‰ÃC¯Þ‹´$¶V¸d)Ð¯Ø‰Øº…ëQ÷âÁêÑ�I‹Œ$·A"‰Ñ¾t$wÁ�\6þt‹”$Œ�Aÿ¶JpÓè@‹L$f‰ë‰ö‹D$fÇ‹T$f‹trþþD$wft$xƒ„$ˆ ƒ„$€¶D$w‹L$L;A‚Öþÿÿ‹œ$f¶CfD$xÆD$_ŠD$^1ÿ8D$_s‹T$$¶D$_·BŠL$^þD$_Ç8L$_rç‹œ$€ÇCÀ‹´$¶F‰C‹”$Œ·BLH‰C¶D$^·T$x�8)Ð‰f‹Cf·È·´$À‰È1Ò÷ö‰ÃC¯Þ‹´$¶V¸d)Ð¯Ø‰Øº…ëQ÷âÁêÑ�I‹\$L‹Œ$·A"ÇC‰Ñ¾t$wÁ�\6þt‹”$Œ�Aÿ¶JpÓè@‹L$f‰ë
�v‹D$fÇ‹T$‹œ$€‹¿Drþ)Á…É‰„Ð‹´$Œ·FL9Á‡½‹”$¶B	CŠL$v‹\$pˆL$w‰œ$€ë]‰ö‹´$€‹F©t>‹”$‹Z|…Û„Ýƒà@tþD$W¶B¶T$W)Ð‰Fë¶D$V‹Œ$€‰AþD$VþL$wƒ„$€€|$wž¶T$W‹œ$;S‡m¶D$VÐ¶S1ÿ9Ð~)éW�vQ‰úhT¶ÂPÿ´$$‹Œ$(ÿQpƒÄG‹œ$¶C9ÇrÐ1Òf‹D$zf÷´$¸ŠT$^8ÐˆD$_ƒ �‹Œ$1ÿ€yt~�Š\$_8/wd‹´$€~u
+�W‰Óë�v�?�P�X¶D$_PjhT‹„$$¶HÓãSÓâR‰új¶ÂPÿ´$4‹Œ$8ÿQ|‰ÃƒÄ …Û…¿‹œ$G¶C9ÇrƒþD$_ŠD$^8D$_‚aÿÿÿƒìh èüÿÿÿf‹„$Š1Òf÷´$ÈˆD$o¶ÀÑàf‰T$X‹Œ$$‹\$@‹T$4f‹,‹´$€‹If‹fÇ„$ŽÆ„$‡ÿ‰Œ$˜‰´$�f‰„$ŒƒÄEfƒ|$z„{‹D$H¶T$`f‰D$zf)D$|�Õ)Ð�4†‰´$€1ÿ‰T$@�vƒìjh‹”$ ÿr�?‹\$H‰L$\·¶JpÓàPÿ´$4‹´$8ÿV@‰ÃƒÄ …Û… R‹D$DÁà+D$DÁàP‹”$”‹BƒÀ$Pÿt$|ÿƒÄ‹Œ$ÿq0‹\$8‹t$L·Pÿ´$˜èÖðÿÿ‰ÃƒÄ…Û…W‹D$D1ö‰D$<�vƒìjh�„$P‹L$H‹\$T‹„$¤·¶HpÓâ‰ñ¶ÁÁàÂRÿ´$4‹œ$8ÿSD‰ÃƒÄ …Û…äF‰ð<v¥G¶D$_9Ç†çþÿÿ·Õfƒ|$H‰T$,t+‹Œ$Œ‹A‰öE·Ý‰\$,€<ktòfÿL$zuëë�·õ‰t$,�„$¨‰D$(é©�ƒìÿ´$˜èYÙÿÿƒÄ¸@éSPhj�„$üPÿ]ÿ´$˜è)ÙÿÿƒÄ¸é#ƒìÿ´$˜è
ÙÿÿƒÄ¸3éƒìÿ´$˜èñØÿÿƒÄ¸jéëƒìÿ´$˜èÕØÿÿƒÄ‰ØéÒ�v·Õ‰T$,�¶L$_�	‹D$(f‹fƒ|$|f‰D$x„Í€|$vˆÂ‰L$8‰T$4fƒ|$~…ÜþL$v‹Œ$€‹T$,‰Qf‹Af‹Ðf‰D$~‹Q‰Ñ�á@tþD$w¾D$w‹\$f‹CfD$~…Éte…Òy1Wj‹„$ƒÀP�„$œPÿ‹´$$f¶vf‰t$hë_‰öVj‹„$�ƒÀP�„$œPÿ‹„$˜f¶@f‰D$hë.�Sj‹„$ŒƒÀ	P�„$œPÿ‹”$”f¶Rf‰T$hƒÄ‹L$|f9L$~v·ùf)L$~fÇD$|ëf‹\$~·|$~f)\$|fÇD$~f‰l$Z‹´$€‹N÷Á@„@ŠD$]8D$_u)·T$J·D$x)Ð‹\$$‹t$4¯ø·)Ó‰ø1Ò÷ó‰\$ë·D$x¯ø‹T$$‹\$4·4‰ø1Ò÷ö‰Ç…ÿ„Ùë
+‰ö·Õ‰T$,�‹Œ$Œ‹A‹\$,€<ÿuX¾D$w�‹t$f‹2f…Àxf…Àu
+‹Œ$€‰YH‹\$f‰Q‹´$ÿv0ÿt$4ÿ´$˜è8íÿÿ‰ÃOƒÄ…ÛtMé��‹„$‹P0…Òt9�Eƒì·ÀP‹œ$˜‹´$$¶Kp‹FÓèf¯F$·ÀPÿÒ‰ÃƒÄ…Û…]ýÿÿE…ÿ…<ÿÿÿ·Å‰D$,‹”$€‹Jfƒ|$~uƒ„$ˆ ÷Á „…‹Œ$€‹A…ÿ‰A„I‰ö‹œ$Œ‹C‹t$,€<ÿ…ØR‹„$ÿp0VSèjìÿÿ‰ÃOƒÄ…Û…Ã1ö‰ö‹”$‹B(…À~.ƒìH‰B(jj�„$¬P‹œ$¤¶Kp‹D$DÓà�D0Pë6�vƒìjj‹„$˜ƒÀP‹Œ$œ‹œ$¤¶Q‹D$D¶KpÓàòÂRÿ´$4‹”$8ÿRD‰ÃƒÄ …Û…Güÿÿ‹œ$Œ¶Ko¸ÓàÆ¶Kp‰ðÓè…À„OÿÿÿëH�‹´$‹V0…Òt9�Eƒì·ÀP‹œ$$‹„$˜¶Hp‹CÓèf¯C$·ÀPÿÒ‰ÃƒÄ…Û…ÙûÿÿE·õ…ÿ‰t$,…¹þÿÿfƒ|$~uƒ„$„‹”$€‹Jë�‹œ$€‹Kƒát{ÿt$8j�„$˜P‹T$8‹D$,‹L$@J·4‰Ð‹œ$˜™¶Kp÷þÓâR‹t$0‹\$Df‹D$j1Òf÷43·ÒÓâR·D$lP‹´$˜¶FPÿ´$4‹”$8ÿR|‰ÃƒÄ …Û…"ûÿÿfƒ|$~u‹D$,‹Œ$€H‰AƒÁ‰Œ$€fƒ|$|t€|$v‰Fûÿÿ¶D$_·”$À‹\$ ·C¯Â�<‹T$,9úƒŒ�v‹´$Œ‹F€<ÿu P‹„$ÿp0RVè&êÿÿ‰ÃƒÄ…ÛtLé‹Œ$‹Q0…Òt9�Eƒì·ÀP‹œ$˜‹´$$¶Kp‹FÓèf¯F$·ÀPÿÒ‰ÃƒÄ…Û…MúÿÿE·Å9ø‰D$,‰Â‚wÿÿÿfƒ|$~u‹”$€öBó@t‹D$,H‰Bì¶D$_Sj‹L$8·A‰ÆVÿ´$˜èƒéÿÿ‰ÃƒÄ…Û…Ý1ÿƒìjh�„$P‹œ$¤¶Kp‰ò‰øÓâÁàÂRÿ´$4‹”$8ÿRD‰ÃƒÄ …Û…©ùÿÿGƒÿv³þD$_ŠL$^8L$_sa¶D$_Ñà‹\$0‹t$$f‹,f‹0f‰D$|‹D$pE;„$€‡ƒùÿÿ�vÇ@Ç@Ç@ƒÀ;„$€vß·Å‰D$,é[ùÿÿ�vƒìhèüÿÿÿYÿ´$˜èþÑÿÿƒÄ1À�Äü[^_]Ã‰ö‹VƒúS¸f�ƒ�RÁàÇ€xBÇ€ÐJÇ€M�B£1Ò¸ �vÆÿBƒú~ö1Ò¹¾»�‰ÐÁà)ÐÁàBÇƒÀƒúÇ0ÇÇ~Ñ1À[^ÃUÿ01.01XH€JŒJ¤HLIÜIsetUnitData : Failed setting unit data
+markAsIgnored : A sector is being marked as ignored
+
+Debug: media is not fit for INFTL format.
+
+DEBUG : MTD read BBT routine was not initialized
+
+Debug: failed allocating conversion tables for INFTL.
+
+Debug: failed allocating multi-sector buffers for INFTL.
+
+First In chain found bad unit header
+writeAndCheck : The sector was not erased and is ignored
+writeAndCheck : Write of a sector failed and was marked as ignored
+
+Debug : Can not verify sectors since no buffer was allocated
+
+verifySectors : Bad chain was found
+foldUnit : EDC error on folding
+foldUnit : Failed to write a sector while folding but will not force folding
+FoldBestChains : Skiped unavailable unit
+foldBestChains : Folding success, but need more units.
+foldBestChains : Failed folding, mark as unavailable and try folding another
+foldBestChains : ERROR - Failed folding, with status diffrent then flCanNotFold.
+foldBestChains : Failed - not enough units on flash.
+foldBestChains : Found a frozen unit.
+foldBestChains : No free unit was found so far, so search for one.
+foldBestChains : Found a free unit for folding not in place.
+foldBestChains : Will force folding on Frozen candidate
+foldBestChains : Now free all frozen units.
+Debug: Using last free unit of the media.
+checkFolding : Perform folding not in place
+
+writeFullUnit: Found a brocken chain
+delete sector : Unit does not apear to have any sectors
+
+Debug: Too many Bad blocks in quick mount area
+
+Debug: starting INFTL dismount.
+
+Debug: with save operation of quick mount data.
+Debug: ERROR writing quick mount information.
+Debug: Error erasing quick mount information.
+Debug: finished INFTL dismount.
+Debug: ERROR too many bad blocks (can not find place for INFTL header.
+Debug: ERROR reading original unit header.
+Debug: Media header was not found on all copies.
+Debug: ERROR unerasable BBT not supported by MTD.
+Debug: ERROR to many bad blocks.
+Debug: We have reached a unit twice while mounting.
+Debug: trying to read quick mount information.
+Debug: quick mount information was successfuly restored.
+Debug: Error getting quick mount information.
+Debug: INFTL runs without U-cache
+Debug: INFTL runs without S-cache
+Debug: starting INFTL mount.
+Debug: wrong partition number.
+Reported no of virtual unit is larger then no of physical units
+Debug: Error going along INFTL chains.
+Debug: Not enough free units. Media is read only.
+Debug: finished INFTL mount.
+Please insert key before trying to change protection attributes
+Debug: INFTL reported CHANGEALE protection, but MTD does not allow it.
+Debug: starting INFTL preMount operation.
+Debug: ERROR failed formating unit.
+Debug: starting INFTL format by verifying arguments.
+Debug: INFTL format arguments have been verified, starting format.
+Debug: finished INFTL format.
+BNANDDebug: Error reading BBT.
+Orphan unit found
+Protection routine are NULL
+00000000Protection routine is NULL
+„¨¬ 5140GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rel.rodata.rodata.str1.32.rodata.str1.1.comment4 d	ì�È%Td+`dÀ 0`d:€d06	´Š0B2Àd  R2às„adt7›tj8w
K	H}¡ñÿ	$. T<tQJÈ€V`H?kˆ:wÄfƒ,+›X¨¯6¾8kÊÐ¤
+Jæôð
+J<<xÅ"@
±,ô
¯7 M€ \¤„i(yw¤Ð‚tjŽàkž®L"¼pÈ„"Ñ¨Úß„!ÑìX"Ïù(#H$ð8%ì"$'.<(ºFø+ªT¤,-`Ô,¡nx.xð/DŒ41™—Ð1¡Ô1±Ü1Ö¾´2¼Íp5ÿ	Û¸9,åä9píT;uúÌ;Â
+�<Œ=“%°@æ9xBÔD€ILG‚YÐJ>gLõqMz
+}…’Ÿª½ÆÔãëô 6JRYp7Eh˜Aàr�„cœ‘™inftl.cgcc2_compiled.scacheTableonesCountgetUnitTailersetUnitTailermarkUnitBaddiscard.0formatUnitgetUnitDatagetPrevUnitgetSectorFlagsFromCachesetSectorFlagsCachegetSectorFlagssetUnitDatatmp.1discardQuickMountInfosectorFlags.2markAsIgnoredvirtual2PhysicalinitINFTLbasicinitINFTLinitTablesmultiSectorBufCountermultiSectorBuffirstInChainwriteAndCheckassignUnitformatChaincreateUnitCountscannedBlocks.3verifySectorscheckVolumefoldUnitfoldBestChainallocateUnitcheckFoldingapplyWearlevelingmapSectorread2SectorsreadSectorsallocateAndWriteSectorswrite2SectorswriteSectorwriteFullUnitwriteMultiSectordeleteSectordefragmenttlSetBusysectorsInVolumeputGetBufferquickMountDatadismountINFTLINFTLInforeadBBTconvertChaineraseOrphanUnitcheckUnitHeadgoAlongChaincheckQuickMountInfomountINFTLvolsprotectionINFTLpreMountINFTLeraseUnitformatINFTLtffssetFlDebugPrintflSocketNoOfflBufferOfflReadBackBufferOfflmallocflVerifyWriteflMaxUnitChaintffscmpflPolicyflSectorsVerifiedPerFoldingdataErrorObjectflAddLongToFarPointerflMarkDeleteOnFlashtffscpyflfreeretrieveHeaderinitCatchflUseNFTLCacheflRegisterINFTLnoOfTLstlTableÉKÚR´K-
+2
+LÃ
+þ
+L'‘–L³¸L
M
N
M#
OW
K`
MPPAMePn‡ŒL38LDQâçL+Q?FLúRlO„LÐKJPK¨Û%�SÆSt‘ÊòYSÇ(-LÑTÙQ6UšŸLªRóTTlqLAFLœ¡L»ÀLÐÕL38LQVL¹¾Lÿ L8 = L¥ ª L¹!¾!Lw"|"Lá"Rþ$VÖ&Kþ&W¥'W(Wa*RE,Tl-q-LŽ-Rú.W>/WX/TÐ/W�0X§0T11L3 3Lê3Y4Y4Y84Y/5YC5Yz55L¡5¦5L
+6K”6 6¥6L²6¼6É6ZÔ6å6ð67Z7Z47ZG7Z`7e7Lª7K˜8�8L´8¹8LÙ8K69;9LH9;R9S5:::LP:U:L¡:Ó:õ:W? ?L|@�@Lº@¿@LlAqAL„A‰ALŸA]¸APB
BLB]/BPhB’B—BL¤B«BKÏB[èBùBþBLCCGCsC~C‰C’C�C°CÇCÎCØCÝCLD\D!DQMDTD\DdDkDuD�D;�DðE;õEL°FµFLÌFÑFLßFæFíFôFûFGGGG G'G.G6G;GLâGçGLH;2H;RH{H€HL—J;œJLKKLK9K[YKrKßLäLL#M²M·MLËMK|O[¢OYP;�PScSK€T;ŽTY£TK€U;‡UY‘U;¢UYY;’Y;óYøYL[Y6\KS]Y„]Y´]Y\cacL†c_¢c`¦c¬c`°c¶c`ºcÂc_ÉcÝcâcçcpBL $mdocplus.o/     1037556716  0     0     100644  21364     `
+ELFäC4(

+‹T$�âñ1ÀJ•À�ÅÃƒì¶T$ƒú‹D$ŠL$tƒútƒìhë"
ë�
¶Ñƒút ƒútƒìh@èüÿÿÿƒÄ1Àë ‰ö
ƒìPÿt$èüÿÿÿ‰ÂƒÄ1À…Ò”ÀƒÄÃ‰öVSR‹t$1Û�vPjhÿv8ÿ–œCƒÄƒû~æƒìhFÿv8ÿ–˜ƒÄ%€¶À[^Ã�vWVS‹t$Š\$ƒìh
+ÿv8ÿ–˜K‰ÇÁã%Ï	ØƒÄ¶ÀPh
+ÿv8ÿ–œƒÄ‰ø[ƒà0^_Ã‰öVSS‹t$ÆD$1Û‰öƒìhÿv8ÿ–˜ŠT$ÂCˆT$ƒÄƒû~Ü1Û‰öƒìh ÿv8ÿ–˜%ÀƒÄ<Àu¸ë.C�û/u~Óƒìh€èüÿÿÿƒÄj`h"ÿv8ÿ–œƒÄ1ÀY[^Ã‰öSƒì‹\$€{ ‹T$v&‹C0¶HÓêˆPP‹C0¶@Phÿs8ÿ“œƒÄƒÄ[Ã�vVSQ‹t$ÆD$1Û‰öƒìhÿÿv8ÿ–˜ŠT$ÂCˆT$ƒÄƒû~ÜZ[^ÃVSƒì‹\$hxÿs8ÿ“˜1öƒÄ„ÀytPhÿh$ÿs8ÿ“œƒÄ�Qjh.ÿs8ÿ“œFƒÄƒþ~æRjhÿs8ÿ“œ^Xhxÿs8ÿ“˜ƒÄ„ÀyƒìhÀèüÿÿÿƒÄ¸së�v1À[[^Ã‰öVSƒì‹t$Š\$ ÆD$VèüÿÿÿˆØƒÈˆD$ƒÄŠD$¶ÀPhÿv8ÿ–œƒÄŠD$÷Ð¶ÀPhvÿv8ÿ–œƒÄƒãu/ƒìhÿv8ÿ–˜ˆD$ŠD$ƒÄƒàtƒìVèÝþÿÿƒÄë1ÀZ[^Ã‰öVSƒì‹\$SèüÿÿÿYXhÿs8ÿ“˜ˆD$XZhxÿs8ÿ“˜1öƒÄ„Àx	ŠD$ƒàu)ƒìjSèÿÿÿ‰Æ‹C0ƒÄ¶@Phÿs8ÿ“œƒÄY‰ð[^ÃVSƒì‹\$¶t$jSèâþÿÿƒÄ…Àu9‰òP¶ÂPhÿs8ÿ“œY^htÿs8ÿ“˜ˆÂƒÄ1ÀƒâJ•ÀHƒà‘ƒÀoZ[^Ã‰öƒì÷D$‹D$tÇD$ƒÄé{þÿÿ�v‰D$ƒÄéüÿÿÿWVSƒì‹t$ 1Û1ÿ:^ sO�Q¶ÃPhÿv8ÿ–œXZhÿv8ÿ–˜%þˆD$ƒÄŠD$¶ÀPhÿv8ÿ–œCƒÄ:^ r²QhÃh~ÿv8ÿ–œƒÄh€h~ÿv8ÿ–œÇ$dèüÿÿÿƒÄ�Rjhÿv8ÿ–œƒÄhâhvÿv8ÿ–œ1ÛƒÄ÷Ã¶ÃtƒÀUëƒèVˆD$PŠD$¶ÀPhÿv8ÿ–œƒÄŠD$÷Ð¶ÀPhÿv8ÿ–œZYhÿv8ÿ–˜ŠT$ƒÄ8ÐuCG€û	v•€û	w�ÿß“†Xÿÿÿ1Û:^ s�ƒì¶ÃPVèþÿÿƒÄ…ÀuC:^ ræ1ÀƒÄ[^_Ã�Sƒì‹\$hFÿs8ÿ“˜ˆD$XZhFÿs8ÿ“˜ŠT$1ÂˆT$ŠT$1Àƒâ•ÀƒÄ[Ã�vUWVSƒì‹l$,‹\$0ÆD$Uèüÿÿÿ‰Çƒì‰_8�4­»ÿ4è¶ùÿÿƒÄ¶ÀPjÿ4Wè¼ùÿÿƒÄ 1Û…À„¢�vƒìhÿÿw8ÿ—˜ŠT$ÂCˆT$ƒÄƒû~Üƒìhÿw8ÿ—˜ZYhvÿw8‰Æÿ—˜ˆD$ÆD$ƒÄŠD$¶ÀPhÿw8ÿ—œƒÄŠD$÷Ð¶ÀPhvÿw8ÿ—œŠD$ƒÈˆD$ƒÄŠD$¶ÀPhÿw8ÿ—œƒÄŠD$÷Ð¶ÀPhvÿw8ÿ—œ[Xhÿw8ÿ—˜ˆD$ŠD$ƒÄ<@tŠD$<A…‚ƒìh
+ÿw8ÿ—˜ƒÄ1Ò„À˜Â�ÕRj�­ÿ³Wè†øÿÿƒÄ…Àu+ƒìÿ³èYøÿÿƒÄ¶ÀPjÿ³Wè\øÿÿƒÄë�vƒìWèÿýÿÿƒÄ…Àt¸ë2�‰òQ¶ÂPhÿw8ÿ—œƒÄ¶D$Phvÿw8ÿ—œƒÄ1ÀƒÄ[^_]Ã�vUWVSƒì‹L$$ŠD$ …É‹l$,ˆD$
+ÇD$ÆD$uÇD$$€ÇD$(‹T$(…ÒuÇD$(ƒì¶\$SèüÿÿÿƒìÁã¾‰Çÿ43è}÷ÿÿƒÄ¶ÀPjÿ43Wèƒ÷ÿÿƒÄ …À„âÿ—ˆ‰Æ‹D$$‰E‹D$(9D$$w\�v‹E‰G8ÆD$ƒìWèüÿÿÿƒÄŠD$¶ÀPhÿw8ÿ—œƒÄŠD$÷Ð¶ÀPhvÿw8ÿ—œ‰ðEƒÄ‰E;D$(v§‹D$$‰E‹D$(9D$$‡P‰ö‹E‰G8ÆD$PŠD$¶ÀPhÿw8ÿ—œƒÄŠD$÷Ð¶ÀPhvÿw8ÿ—œY[hÿw8ÿ—˜ˆD$ŠD$ƒÄ<@tŠD$<Atƒ|$…ÍéÚ‹T$…Ò…¤ƒìh
+ÿw8ÿ—˜ƒÄ1Ò„À˜Â�ÕRj¶D$�…ÿ³Wè/öÿÿƒÄ…Àu(ƒìÿ³èöÿÿƒÄ¶ÀPjÿ³WèöÿÿƒÄëPƒìWè«ûÿÿƒÄ…Àt@Pjhÿw8ÿ—œ‹EÇD$‰D$4ƒÄë�vƒìhÿw8ÿ—˜ƒÄ<u‹Eð‰E;D$(†²þÿÿ‹\$…Ûu1Àë‰öÁl$$‹D$$ƒÄ[^_]Ã�vVSƒì‹t$‹F0‹X¿N,I#\$Óë¶ÓR‰Øh&Áè	‰ÓÁàÿv8	Ãÿ–œƒÄ¶ÇPh&ÿv8ÿ–œÁëƒÄ¶ÃPh&ÿv8ÿ–œƒÄjh.ÿv8ÿ–œƒÄjh.ÿv8ÿ–œ‰4$èõõÿÿƒÄ…Àu
+¸eë9�vƒìhxÿv8ÿ–˜ƒÄ„ÀyPj`h"ÿv8ÿ–œƒÄ¸së�1À[[^Ã‰öVSƒì¶t$‹\$Vh$ÿs8ÿ“œƒÄVh.ÿs8ÿ“œƒÄVh.ÿs8ÿ“œƒÄ[^Ã�UWVSƒì‹|$(¿Çƒè‰ÂÁêJ‹t$ ‰Õ!ÅfÇD$
+‹F0¶@ƒø„¶ƒø…•f‹F,fƒøtfƒø„Åé|1Ûëƒìh*ÿv8ÿ– f‰D$CƒÄfƒÿu…Û~Üë‰öƒû~Óf…ít·íUÿt$(‹F0·@(Pÿv8ÿ–ŒƒÄë1í1Ûë‰öƒìh,ÿv8ÿ– f‰D$CƒÄfƒÿwƒû~Ûë�…ÛxÔ‰ë·ÿ9û�ç�vƒìh,ÿv8ÿ–˜‹T$4ˆCƒÄ9û|àé¿�v1Ûëƒìh*ÿv8ÿ– f‰D$CƒÄfƒÿw…Û~Üë‰öƒû~Óf…ít·íUÿt$(‹F0·@(Pÿv8ÿ–ŒƒÄë1í1Ûë‰öƒìh,ÿv8ÿ– f‰D$CƒÄfƒÿwƒû~Ûë�…ÛxÔ‰ë·ÿ9û�'�vƒìh,ÿv8ÿ– f‰D$ŠD$‹T$4ˆŠD$ˆD¿F,ÃƒÄ9û|Êéé�1Û·ÿë&�ƒìh*ÿv8ÿ–˜f¶Ðf‹D$Ðf‰D$CƒÄ¿V,�Jÿ‰øÓøHu	…Û~Éë�vƒû~¿f…ít"·íUÿt$(‹F0·@(Pÿv8ÿ–ŒƒÄ¿V,ë1í1Ûë$‰öƒìh,ÿv8ÿ–˜f¶Àf‰D$CƒÄ¿V,�Jÿ‰øÓøHfƒ~,u	ƒû~Èë‰öƒû~¿ë�…Ûx¸‰ë9û}"‰öƒìh,ÿv8ÿ–˜‹T$4ˆCƒÄ9û|àƒÄ[^_]ÃWVSƒì‹t$ fÇD$‹F0¶@ƒø‹T$$tGƒø…ƒ1Û·úë�vƒìh*ÿv8ÿ– f‰D$CƒÄ¿N,I‰øÓøHu…Û~ÖëMƒû~ÏëF�1Û·úë&�ƒìh*ÿv8ÿ–˜f¶Ðf‹D$Ðf‰D$CƒÄ¿N,I‰øÓøHu…Û~Ëë�ƒû~ÃƒÄ[^_ÃWVS‹\$‹|$¶t$ƒìWSèFòÿÿ‰$èüÿÿÿƒÄ…ÀunQhàh"ÿs8ÿ“œXZ‰ò¶ÂPSèÝûÿÿY^WSèôúÿÿƒÄ…Àu<Rjh ÿs8ÿ“œƒÄjhÿs8ÿ“œƒÄjhÿs8ÿ“œƒÄ1À[^_Ã�Sƒì‹\$jpSè|ûÿÿƒÄj�D$PSè´ûÿÿf‹D$ƒà·ÀƒÄ[ÃWVS‹\$‹t$¶|$ƒìVSèzñÿÿ‰$èüÿÿÿƒÄ…ÀuoRh€h"ÿs8ÿ“œYXhÿSèûÿÿ‰$è²ðÿÿƒÄ…Àu¸eë8R‰ú¶ÂPh$ÿs8ÿ“œ_Xh€SèÚúÿÿƒÄ‰t$‰\$[^_éçùÿÿ�v[^_ÃSƒì‹\$jh.ÿs8ÿ“œƒÄjh.ÿs8ÿ“œXZjSè‹úÿÿ‰$è+ðÿÿƒÄ…Àu¸eë?�ƒìSèßþÿÿƒÄ…ÀtƒìhèüÿÿÿƒÄ¸ë�Qj`h"ÿs8ÿ“œƒÄ1ÀƒÄ[Ã�WVSƒì‹t$$‹\$(jhFÿv8ÿ–œƒÄj(hFÿv8ÿ–œhS‹F0·@(Pÿv8ÿ–�1ÛƒÄ �vWjhÿv8ÿ–œCƒÄƒû~æ‹F0€xu)1Û‰ç��ƒ@ƒì·ÀPÿv8ÿ–˜ˆ;CƒÄƒû~Þë*1Û‰ö�ƒ@ƒì·ÀPÿv8ÿ– f‰DƒÃƒÄƒû~ÚQjhFÿv8ÿ–œj�D$P‹F0·@(Pÿv8ÿ–�ƒÄ0[^_Ã‰öUWVSƒì,‹D$H¾ŠT$Tf)Æf…À‹\$@‹|$LˆT$
t‹T$D·èÆÆDÿë�v·èQjhFÿs8ÿ“œƒÄjhFÿs8ÿ“œUÿt$X‹C0·@(Pÿs8ÿ“Œ‹C0ƒÄ €x…³fƒ{,…¨f…öt&ë�‹C0�ƒì·@(Pÿs8ÿ“ f‰D$ƒÄfƒîuÝfÇD$ë1‹C0ƒì·@(Pÿs8ÿ“ f‹T$·Òf‰D ƒÄf‹D$ƒÀf‰D$f‹D$fƒøvÄƒ|$Xu
ƒìh,ë�v‹C0ƒì·@(Pÿs8ÿ“ ƒÄf‰D$éÇ�vf…öt(ë�‹C0�ƒì·@(Pÿs8ÿ“˜f¶Àf‰D$ƒÄfNuÛfÇD$ë0‰ö‹C0ƒì·@(Pÿs8ÿ“˜f‹T$·ÒˆD ƒÄf‹D$@f‰D$f‹D$fƒøvÇfÇD$ë?‰öƒìƒ|$`t
+‹C0·@(ë�¸,Pÿs8ÿ“˜f‹T$·ÒˆD ƒÄf‹D$@f‰D$f‹D$fƒøv¸ƒìSèCìÿÿƒÄ…À„$f…ÿ‰Ï‹C0€xt.1ÿ�t$�‡@ƒì·ÀPÿs8ÿ“˜·×GƒÄfƒÿˆ2vÚë.1ÿ‰ö�‡@ƒì·ÀPÿs8ÿ“ ·×ƒÇf‰D ƒÄfƒÿvÖf¶D$f‰D$ŠD$ˆD$f‹D$ˆD$f¶D$f‰D$ŠD$ˆD$f‹D$ˆD$Rj�D$Pÿt$PèüÿÿÿƒÄ…Àtfƒìh@èüÿÿÿƒÄ¸ëe�vP¶t$Vÿt$XSèúÿÿƒÄ…ÀuJƒìhSèJùÿÿƒÄÿt$\V�Ï€ÿt$\·ÇPUÿt$\SèÍüÿÿƒÄ ëUjhFÿs8ÿ“œƒÄ1ÀƒÄ,[^_]Ã‰öS‹\$‹L$ÆPf‹f�úÿv:�âÿfƒúf‰w#fƒúw·ÂD$ƒøw�B
+ë/fÇÆë(‰ö�Bë�v‹D$fƒx,ufƒúwÆë‰ö�Bf‰[ÃVS‹\$f‹f�úÿ‹t$‹L$‰Ðv"ƒ|$tf�úufÇÆë4‰öƒÀ
+f‰‰Â‹F0f;PsÆë‰öf;V"sÆë�ÆP‹F0f‹@Hf![^Ã�vUWVSƒì‹|$$‹T$ ‹B0‰ùf#H‰È‰Ã�ãÿ‹t$,f‰D$·Ã‰D$�0ƒø‹l$(v
+¸éŽ�D$PV�D$Pÿt$,èÈþÿÿ‹T$0‹B0‹@÷Ð!ø·T$ƒÄ�<¶D$PWÿt$,èWøÿÿƒÄ…À…F‹L$ fƒy,u¸f)Ø·À9ðv‰ðVë+�€|$Pu9fƒ|$v	¸ë‰ö¸f)Ø·À9ðv‰ðS·ÀPUÿt$,èdôÿÿƒÄéÌfƒ|$w<¸f)Ø·À9ðv‰ðQ·ØSUÿt$,è4ôÿÿƒÄ)Þ„™V�+P·D$)Çëw�vRj‰è+D$ƒÀPÿt$,èôÿÿƒÄƒîtj·T$)×¸‰ú‹L$f)Ø�¼t·ØSUWÿt$,è�þÿÿƒÄ…ÀuP)Þ…öt0‰ðƒøv¸·ÀP+l$�EP+|$�GPÿt$,èKþÿÿƒÄë‰öPj`h"‹D$,ÿp8ÿ�œƒÄ1ÀƒÄ[^_]Ã‰öUWVSƒì,‹D$Pf‰D$‹|$@‹G0‹T$Df#P‰Ðf‰D$
+f‰D$·W"·À)Â‹D$L9Ðv‰ÐfÇD$j‰Å�D$P�D$PWè[ýÿÿ‹G0‹@÷Ð#D$T·T$Ð‰D$TƒÄ‹T$L…Ò„`�P¶D$Pÿt$LWèköÿÿƒÄ…À…E·Å)D$LƒìPWè›õÿÿƒÄ€|$
tfƒ,…§fÇD$f‹L$f)L$f9l$vf‰l$f�|$u
+÷D$ufƒ|$
+uBfƒ|$u:V1Àf;l$”ÀP¶D$Pÿt$P·D$P·t$Vÿt$`Wè¾øÿÿƒÄ …Àt/é§‰ö‹D$f9Åu�Eþ·ÀPÿt$L‹G0·@(Pÿw8ÿ—ŒƒÄf+l$f…í„ñfƒ,…æ€|$
ujf�|$u
+÷D$uj�D$P‹G0·@(Pÿw8ÿ—ŒƒÄj�D$P‹G0·@(Pÿw8ÿ—Œ·D$‹T$TD$X�D
+fÇD$‰D$TÆD$ƒÄf�ýf‰l$u
+÷D$uf�|$u7÷D$
+t-Sj¶D$Pÿt$P·D$P·ÅPÿt$`Wè´÷ÿÿƒÄ …Àt$é��Eþ·ÀPÿt$L‹G0·@(Pÿw8ÿ—ŒƒÄ÷D$tf�|$„÷D$
+…ø‹G0€xuwfƒ,up1Û·t$ë�vƒìh,ÿw8ÿ— f‰D$CƒÄ¿O,I‰ðÓøH
+ƒû~Õë�v…ÛxÌƒìh,ÿw8ÿ— f‰D$‹T$XŠD$òˆBþŠD$ˆBÿƒÄëy�1Û·t$ë�vƒìh,ÿw8ÿ—˜ˆD$CƒÄ¿O,I‰ðÓøHfƒ,uƒû~Ïë
�ƒû~Çë�…ÛxÀ»�vƒìh,ÿw8ÿ—˜‰ò)ÚK‹L$XƒÄ…Ûˆ
+Ü‹L$L…Ét7·D$D$H‹G0‹@÷Ð#D$D·W"Ð‰D$D‹D$L9Ðv‰Ð‰ÅfÇD$ÆD$
Rj`h"ÿw8ÿ—œƒÄ‹D$L…À…¡üÿÿ1ÀƒÄ,[^_]Ã�vUWVSƒì ƒà<‹t$$‹|$(‹\$,‹l$0u
¸xé•�v÷Æt)ƒìjj�D$P�FÿPÿt$<è¯ÿÿÿƒÄ …ÀujŠD$ˆFGK÷Ãt*ƒì·ÅPj�D$KP�3Pÿt$<è{ÿÿÿƒÄ …Àu6ŠD$
+ˆ;÷ÅtSWVÿt$,è�ùÿÿƒÄëƒì·ÅPSWVÿt$<èUûÿÿƒÄ ƒÄ[^_]Ã‰öUWVSƒì‹|$ ‹\$$‹G0‰Úf#P‰Ðf‰D$‰Å�D$‹t$,PV�D$PWèVøÿÿ‹G0‹@÷Ð!Ø·T$ƒÄ�¶D$PSWè¸òÿÿ�åÿƒÄ…À…lfƒ,u°‰ê(Ð¶À9ð†!‰ðé€|$Pu
fƒ|$wÙ°ë×�fƒ|$wH°‰ê(Ð¶À9ðv‰ð·ØSÿt$,‹G0·@(Pÿw8ÿ—�ƒÄ)Þ„é\$(hÿhé˜‰ö‹D$(·Õ)ÐŠPˆT$Š@ˆD$�T$jR‹G0·@(Pÿw8ÿ—�ƒÄƒî„™�…hÿ·ÀP‹G0·@(Pÿw8ÿ—”¸f)è·ØSÿt$<‹G0·@(Pÿw8ÿ—�ƒÄ )ÞtQ‹D$(�\‰\$(hÿj‹G0·@(Pÿw8ÿ—”ƒÄƒþ‰ðv¸·ØSÿt$,‹G0·@(Pÿw8ÿ—�)ÞƒÄ…ö¸uƒìWèÚñÿÿƒÄƒÄ[^_]Ã�vUWVSƒì‹t$ ‹F0‹T$$f#P‰Ðf‰D$f‰D$1À÷D$0‹l$(‹|$,fÇD$t
�ÿÿv¸P�D$P�D$PVèÁöÿÿ‹F0‹@÷Ð#D$4·T$Ð‰D$4ƒÄ…ÿ„Ç�vP¶D$Pÿt$,VèŸðÿÿƒÄ…À…ª€|$tfƒ~,ul¸f+D$·À9øv‰ø·Øf‰D$‰Ø)Çf�|$u.ƒ|$0u'ƒìUVèyñÿÿjh‹F0·@(Pÿv8ÿ–�ƒÄ ëPU‹F0·@(Pÿv8ÿ–�ƒÄ…ÿ·\$„åfƒ~,…Ú€|$u9f�|$uƒ|$0thÿj‹F0·@(Pÿv8ÿ–”ƒÄ·D$ÅfÇD$f‹F"f+D$·À9øv‰øf=f‰D$u5ƒ|$0u.jh‹F0·@(Pÿv8ÿ–�Y[UVè©ðÿÿƒÄ·\$ëI�vf�|$u"€|$uhÿj‹F0·@(Pÿv8ÿ–”ƒÄ·\$SU‹F0·@(Pÿv8ÿ–�ƒÄ)ß‹F0‹@÷Ð#D$$·V"Ð‰D$$fÇD$ÆD$ƒìVè™ïÿÿÝƒÄ…Àu
+…ÿ…<þÿÿ1ÀƒÄ[^_]Ã‰öUWVSƒì<‹D$`ö‹|$\f‰D$t¸xé¯�ƒì‹T$\ÿr4èüÿÿÿƒÄ…Àt
+¸éŽ÷D$T„»‹T$XŠˆD$/‹D$ƒà�\$.ÆD$.ÿtjS‹D$\HPÿt$\èLûÿÿƒÄ‰Æ·l$ë ƒì·l$UjS‹D$lHPÿt$lèýÿÿ‰ÆƒÄ …ötPj`h"‹T$\ÿr8ÿ’œƒÄƒìUjS‹D$lHPÿt$lè"úÿÿƒÄ …À…é‹T$XŠ8Ctƒìh€é´�vÿD$XÿD$TO÷Ç„»O‹T$XŠˆD$.‹D$ƒà�\$.ÆD$/ÿt!jS‹D$\øPÿt$\è‚úÿÿƒÄ‰Æ·l$ë#‰öƒì·l$UjS‹D$løPÿt$lè8üÿÿ‰ÆƒÄ …ötVj`h"‹T$\ÿr8ÿ’œƒÄƒìUjS‹D$løPÿt$lèTùÿÿƒÄ …À…‹T$XŠ8D$.tƒìhÀéä�v‹D$ƒàtWÿt$\ÿt$\ÿt$\èÝùÿÿ‰ÆƒÄë"‰öƒì·l$UWÿt$lÿt$lÿt$lè™ûÿÿ‰ÆƒÄ Qj`h"‹T$\ÿr8ÿ’œ‹T$`‹B4ƒÄ€x…�…ö…‡‹D$X…ÿ‰D$t{·l$‰ö�ÿ‰øv¸ƒìU·ØS‹T$d‹B0ÿp$ÿt$lRèyøÿÿ‰ÆƒÄ …öuRS‹T$X‹B0ÿp$ÿt$ÿƒÄ…ÀtƒìhèüÿÿÿƒÄ¸ë\$\$T)ßuŒ‰ðƒÄ<[^_]Ã‰öUWVSƒì‹D$4·Ð‰T$f‰D$‹\$0‹K‰Ö¯ñ‹C0‹x1Ò‰ð÷÷¶À@¯Ç1Ò÷ñö‹l$8‰Çt¸xé6�ƒìÿs4èüÿÿÿƒÄ…Àt
+¸é·Å‹L$Á‹C0·@·S$¯Â9Á~
¸éô�v·×9Ñ~OPf+|$f)ý·ÅPRSèMÿÿÿƒÄ…Àt2éÊ�Qj`h"ÿs8ÿ“œƒÄ¸sé«‰ö¸eéŸ‰ö‰ýƒìVSèœÜÿÿ‹D$$¿K,¾Óþ™÷þ‹C0‰Ö·@1ÿ¯ðƒÄf9ïƒcƒìSèüÿÿÿƒÄ…À…QRh€h"ÿs8ÿ“œYXhÿSèæÿÿ‰$è£ÛÿÿƒÄ…À„tÿÿÿƒìj`Sèååÿÿ‰òƒÄ¶ÂPh&ÿs8ÿ“œ‰òƒÄ¶ÆPh&ÿs8ÿ“œƒÄjh.ÿs8ÿ“œƒÄjh.ÿs8ÿ“œXZhÐSè„åÿÿ‰$è$ÛÿÿƒÄ…À„õþÿÿƒìhxÿs8ÿ“˜ƒÄ„Àˆ¹þÿÿƒìSèÀéÿÿƒÄ…ÀtIƒìhèüÿÿÿ^_hÿSè+åÿÿ‰$èËÚÿÿƒÄ…À„œþÿÿQj`h"ÿs8ÿ“œƒÄ¸ë*�Rj`h"ÿs8ÿ“œ‹C0G·@ƒÄÆf9ï‚�þÿÿ1ÀƒÄ[^_]Ã�vSƒì‹\$jÿt$(‹C0ÿp ÿt$,Sèrõÿÿ‹C4Ç@ ‹C0‹@ ƒÄ([Ã�UWVSƒì<‹T$XJŠD$\ˆD$/‰T$(‹L$P¿A,H‰D$·Q$¯Q¶D$/¶IÁ‹D$TÓêD$X9Ðv
+¸3é*‹\$X…Û„ƒ|$XwUƒê	;T$Ts‹|$T)×ë‹T$T1ÿƒìj�\$<S¶D$?PjRÿt$lèjÿÿÿƒÄÿt$\�;Sÿt$l‰ÆÿƒÄ‰ðéÃ�‹t$P‹F4Ç@ ‹^0‹|$P¶O‹CÓø€‰Þ·Àu‰ÂÑêë�‰ÂÁê€|$/…x‹l$TÁíŠL$Óå‹|$T‹L$X�D9ÿÁèŠL$Óà‹|$Pf‹,f)èøf‰D$"·Ò‹D$`‰T$‰D$1Ò‰è÷t$‰Ç¸¯~Óà·t$"�8…ö‰Õ‰D$‰t$‰t$$„¹‰ö‹D$)è;D$$v‹D$$‰Ç·Ç‰l$)D$$�d$þÿÿf…ÿtzë‹D$P‹X0�ƒìjhÿs ‹D$,D$0Pÿt$lè™óÿÿƒÄ …À…’¾f)îf9þv‰þQ·ÞS‹T$X‹B0h Uÿt$(ÿ\$,ƒÄ�D$1íf)÷u�‹L$P‹Y0‹s‹T$$t$…Ò…Iÿÿÿ‹D$…Àt‹|$`‹D$Š_ŠL8ÿ""L8þë‰ö‹T$`‹t$ŠŠLÿ‹D$TD$Xƒàƒøt&ƒøwHt5ëXƒøuSˆÈ‹T$(
Ï‹|$`ˆ:J‰T$(ˆÈ‹|$(
ó‹t$`ˆ7O‰|$(‹T$(�Éü‹D$`ˆfƒl$"J·L$"‰T$(‰L$‹t$P‹T$¿F,9Â~~‹l$…ít‹|$`ŠL:ÿ"L:þë‰ö‹D$`‹T$ŠLÿˆÈ‹|$(‹t$`ƒÈ?ˆ7‰òˆÈú
ÏˆBÿˆÈ
ó�ÉüˆBþˆJýƒï‰|$(‹D$Pf‹@,f)D$"·T$"‰T$‹L$P¿A,9Â‚‹D$TƒàƒøÇD$(t'ƒør
ƒøt4ƒøtFëR�ˆØ
ü‹t$`ˆÇD$(ˆØ‹T$(
ó‹|$`ˆ:B‰T$(ˆØ‹t$(
Ï‹L$`ˆF‰t$(ƒË?‹|$`‹D$(ˆ8ÇD$(‹T$X9T$(}!�‹L$`‹t$(€<ÿtÆÿD$(‹|$X9|$(|à1É‹D$P1Û:H sk‹t$Tt$X�v1Òë�;D$Tr9ðw+D$T‹|$`Æ8B‹|$…ÿ¿Âtƒøë‰öƒø~ÏA¶Ù‹D$PÁã
+:H r»ë�ƒìh@èüÿÿÿƒÄ¸pë�1ÀƒÄ<[^_]Ã‰öWVS‹t$‹F0Š\$¶@P¶ûWPÿv4èüÿÿÿZYÿ4…Vè}ÔÿÿƒÄ…Àu
+¸éb‹Ž¨…Ét$RjPÿv4èüÿÿÿZY¶ÀPWÿ–¨ƒÄ…À…4€~…¤ƒìh
+ÿv8ÿ–˜ˆÁ‰Ê¶Ãƒâ�…üÿÿÿƒÄ9Â„û€ûu:P‰È%ûPh
+ÿv8ÿ–œY_h
+ÿv8ÿ–˜ƒÄƒàtE¸qé¿�ƒÉR¶ÁPh
+ÿv8ÿ–œ_Xh
+ÿv8ÿ–˜ƒÄƒàu¸qé†³f¶ÃHf‰F,¿N,¸‹^0Óàf‰C¿N,¸Óàf‰F"¸Óàf‰C
+f‹F"H·À‰C·S·F"¯Ð‰Ñ‰V‹F1Ò÷ñf‰C‰ÈfÿF,ƒøÆFv»‰Â1É�vA‰ØÓà9Ðr÷ˆN1À[^_Ã‰öUWVSƒì‹|$(÷Çÿ‹l$$t‹L$ ¶A ·×Áà
+9Â~¸éÑ�ƒìÿt$,è×ÿÿƒÄ…À…¹ƒìÿt$,èüÿÿÿƒÄ…À…¢‹D$ ‹P8…Òu¸é��ƒì‹T$(¶B PRèüÿÿÿˆD$ÇD$ƒÄf…ÿtI‰öf�ÿ‰þv¾1Ûf9ós$�vƒì·ÃP‹L$,ÿq8ÿ‘˜CˆEƒÄEf9órßƒ|$ÿD$f)÷u¹ƒìŠD$¶ÀPÿt$,èüÿÿÿˆD$1ÀƒÄƒÄ[^_]ÃUWVS�ìŒ‹„$¨Š”$¬f‰D$<ˆT$;‹„$¤¶ÒÁâ	‰D$,‹¼$ ÇD$4·D$<Ð¶W Áâ
+9Ð~
¸é­�vƒìWèüÿÿÿ‰ÆƒÄ…ö…”‹”$°ƒâ‰T$tBƒúuƒìh€èüÿÿÿƒÄ¸3ée�v€uƒìhÀèüÿÿÿƒÄ¸jéB‹Gp…ÀtUhjWÿÐ‰ÆƒÄ…ö…#fƒ,u ÇD$4ƒìjWèüÿÿÿ‰ÆƒÄ…ö…ü‹G4Ç@ €u.‹GÑè‰D$fÇD$‹GÑà‰D$‰D$@‹G�„ë*‹G�@‰D$‰ÐfÇD$‰T$‰D$@‹G�„@‰D$H‹D$@‰D$D‹D$H‰D$LŠD$;ˆD$+Ðl$+ŠD$+Ñà(D$;‹G0¶T$+¯P‰T$$éã�V¶t$/Vhÿw8ÿ—œ‹T$Lf‰T$2ƒÄf�|$<vfÇD$"S·\$&Sÿt$4‹G0ÿp ½ÿ‰èƒÄ)ØPhÿ‹G0X SÿƒÄ€|$;„»ƒìjU‹G0ÿp ‹D$<D$`PWèÐðÿÿ‰ÆƒÄ …ö…ZƒìjU‹G0ÿp ‹D$<D$`èPWè¦ðÿÿ‰ÆƒÄ …ö…0ƒìjU‹G0ÿp ‹D$(D$`D$<PWèzðÿÿ‰ÆƒÄ …ö…ƒìjU‹G0ÿp ‹D$(D$`‹T$<�„PWèGðÿÿ‰ÆƒÄ …ö…ÑÆD$;éDƒìhtÿw8ÿ—˜ƒàƒÄƒøtƒø…ƒ¾oé˜�€u:‹G0¶O‹@Óø¯ðf‹\$‹D$óÓè�‹l$f‰D$ l$$‹D$è‰D$ës‰ö‹G0¶O‹@Óø¯ðf‹\$‹D$‹l$óÓèl$$‹T$�êf‰D$ ‰T$ë9‹G0¶O‹@Óø¯ðf‹D$ð‹T$f‰D$ T$$‹D$Óè‹\$ ‰ÕÃ‰T$l$ƒìjj�D$d‰D$Pÿt$4Wè9êÿÿ‰ÆƒÄ …ö…¿ƒìjj�T$v‰T$R‹D$4€‰D$PWèêÿÿ‰ÆƒÄ …ö…ŽQj·ÃPWÿWH‰ÆƒÄ…ö…vƒìjjÿt$UWèÍîÿÿ‰ÆƒÄ …ö…Wƒìjjÿt$�…€PWè¨îÿÿ‰ÆƒÄ …ö…2Rj·D$(PWÿWH‰ÆƒÄ…ö…ƒìjjÿt$ÿt$4Wèlîÿÿ‰ÆƒÄ …ö…öƒìjjÿt$ÿt$WèJîÿÿÇD$PƒÄ �l$@�vƒìjh‹G0ÿp ‹\$H‹D$<Áã+PWèîÿÿ‰ÆƒÄ …ö…�ƒìjh‹G0ÿp ‹D$<+D$(PWèäíÿÿ‰ÆƒÄ …ö…nÿD$0ƒ|$0~”f�|$<†Óf�l$<‹T$<�D$,f�úf‰T$"vfÇD$"P·\$&Sÿt$4‹G0ÿp ÿ¸ƒÄ)ØPj‹G0X SÿƒÄƒ|$0r�l$@‰öƒìjh‹G0ÿp ‹\$H‹D$<Áã+PWè3íÿÿ‰ÆƒÄ …ö…½ƒìjh‹G0ÿp ‹D$<+D$(PWèíÿÿ‰ÆƒÄ …ö…ŽÿD$0ƒ|$0~”f‹D$"f)D$<t�D$,‹l$…ítD÷„$°ÆD$?øtÆD$?�ƒìjj�D$SP‹G‹T$<�@�„PWè•ìÿÿ‰ÆƒÄ …öu#þD$+‹G0‹@D$$ŠD$+:G sfƒ|$<…	ûÿÿƒ|$4uƒìWèüÿÿÿY[jWèüÿÿÿƒÄ…Àu2…öu,÷„$°u1Àë�v‹‡„…ÀtƒìWÿÐƒÄë�v‰ð�ÄŒ[^_]Ã�vUWVSƒì$‹|$8¿G,H‹\$@‰D$jWè\Ìÿÿ‰<$‰Þèüÿÿÿ�æÿƒÄ…À…f�û¸‡ôƒìj·Û·î‰\$)ëSÿt$HÇD$ŠL$$Ód$·G"D$PWèˆëÿÿƒÄ …À…´f…ötc‹G4Ç@ Rhj‹G0ÿp ÿƒÄU‹D$<ØP‹G0ÿp ÿÇ$h‹G0ÿp ·G"D$D$ )èPWèëÿÿƒÄ …ÀuLPjj�\$Sÿ‹D$‰D$$ÆD$ Ç$jSŠL$$¸ÓàPWèÜêÿÿƒÄ …ÀuƒìWèèÍÿÿƒÄƒÄ[^_]Ã�UWVSƒì‹\$(¿C,‹l$4j�pÿSèËÿÿYXhxÿs8ÿ“˜1ÿƒÄƒàt4ƒìjj�D$P‰ñ¸ÓàPSèpåÿÿ‹T$H‰Ç‹D$$‰fÇEƒÄ ë�fÇE‹L$(Ç‹D$$ÇƒÄ[^‰ø_]ÃUWVSƒì4‹D$Tf‰D$&‹D$P‹T$H‰D$¿B,‹\$LjR�hÿèuÊÿÿ^ÿt$LèüÿÿÿƒÄ…Àu�D$*P�D$(P�D$(Pÿt$LèÿÿÿƒÄ…À…ifƒ|$*¸4…X·ó·|$�7;L$$‰L$¸‡:‹T$@‹B4Ç@ ‰éºÓâfÁë	‹L$@·A"·Ë‹\$ÂÁá	‰Ø%þ�,ò)Ãú)Ú9ñ‰L$ ‰\$‰T$tqƒìjh‹T$T‹B0ÿp URè6äÿÿƒÄ …À…Ã‹T$ ‰Ð)ð9øv‰ø‰D$$S·D$(P‹L$H‹A0p )ÖVÿt$ÿ‹D$4D$ Å‹D$4f)D$.ƒÄfƒ|$tnƒìj‹\$()ëSÿt$$Uÿt$\è¾ãÿÿƒÄ …ÀuO‹L$…ÉtE\$ƒìjh‹T$T‹B0ÿp ÿt$0Rè�ãÿÿƒÄ …ÀuRÿt$‹L$H‹A0ÿp ÿt$ÿƒÄ1ÀƒÄ,[^_]ÃSƒì‹\$SèüÿÿÿƒÄ…ÀuN‹C4ƒìÇ@ jh‹C0ÿp jSè)ãÿÿƒÄ …Àu%Pj¿K,I¸‹S0ÓàB Pÿt$ ÿƒÄ1ÀƒÄ[ÃUWVSƒì‹t$,ÿv4èüÿÿÿˆÃ¶ÛÇ$ èüÿÿÿ�[Áà‰F0‰$èüÿÿÿ‹V0‰B$‰$èüÿÿÿ‹V0‰B XZjÿv4èüÿÿÿ_]jxÿv4èüÿÿÿZYjÿv4èüÿÿÿ‹V0‰B,‰F8‹B,ƒÄ…À„.ƒì�<�»ÿ4èÆÿÿƒÄ¶ÀPjÿ4VèÆÿÿƒÄ…À„úƒìjVè´ÈÿÿƒÄ…À…éƒìh
+ÿv8ÿ–˜ƒÄ1Ò„À˜Â�ÕRUh
+ÿv8ÿ–˜ƒÄ1Òƒà•ÂBRÿ·Vè®ÅÿÿƒÄ…À„Žƒìhÿv8ÿ–˜¶ØƒÄƒû@tƒûAt*éX�‹F0ÇFÆFÇFÆ@ÇF(ë"‰ö‹F0ÇFÆFÇFÆ@ÇF(‹F0fÇ@(Sjhÿv8ÿ–œƒÄhàh"ÿv8ÿ–œ‰4$è´ÊÿÿƒÄ…À„Ðƒìh
+ÿv8ÿ–˜ƒÄ1Òƒà”Â¸f)Ðf‰F,1ÿ�v‰úQ¶ÂPhÿv8ÿ–œ1ÛƒÄ‰öRhàh"ÿv8ÿ–œ]XhÿVCèîÏÿÿƒÄƒû|ÖG‰ø<v³‹N0fÇ˜fÇAu‹FfÇu˜fÇA ‰A¿F,Áàf‰AÑàf‰F"·V"·A¯Â‰F¿F,Áàf‰A
+f‹F"H·À‰A‹F1Ò÷vf‰ASjhÿv8ÿ–œZY‹^0h
+ÿv8ÿ–˜ƒÄ„À²x²ˆSƒì¶F,PVèüÿÿÿ1ÿƒÄfÇF$ë,‰öƒìUVèzÇÿÿƒÄ…À…ÓPj`h"ÿv8ÿ–œƒÄG‰ú€úwAU¶êUhÿv8ÿ–œY[hÿv8ÿ–˜¶Ø�CÀƒÄƒøwƒìVèÉÿÿƒÄ…ÀuŽ‰úf¶Âf‰F$ˆV ‹F0Æ@R‹F0¶@Phÿv8ÿ–œƒÄfƒ~$uƒìh`èüÿÿÿƒÄ¸éû�vƒì‹^0h
+ÿv8ÿ–˜ƒÄ„À²y#²ë�vƒìh èüÿÿÿƒÄ¸oéº‰öˆS‹V0ÆFÆFÇF@B‹BH‰BƒìÇFD@!ÇFH $ÇF@DÇF<´&Ç†€,Ç†„\ÇFPè&ÇFT .ÇFX-ÇFd€6ÇF`7ÇF\85ÇFhä8ÇFlÇFpÇFtÇFxÇF|fÇF.hàèüÿÿÿƒÄ1ÀƒÄ[^_]ÃWV S1ö<‹|$v¸fëm�v @F¢<wLƒì¶Pèüÿÿÿ‰Ã¶‰‰$èüÿÿÿYXjSèüÿÿÿ�T$ ‰ÐPWÿt$(¶PèšÉÿÿƒÄ …À‰C,u¤1À…ö”ÀHƒàÄƒÀ<[^_Ã‰ö¡ƒø~¸fÃÇ…@£1ÀÃ01.01ERROR: No such interleave factor (setDOCPlusBusType).
+ERROR: Invalid if_cfg value (setDOCPlusBusType).
+Debug: timeout error in waitForReady routine.
+Can't recover from protection violation
+Debug: NFDC MDOCP write failed.
+Debug: EDC error for NFDC MDOCP.
+reading back data failure of first unaligned byte
+reading back data failure of last unaligned byte
+Debug: doc2Erase - erase failed.
+Debug: Error reading DiskOnChip Millennium Plus BBT.
+ERROR - Can write IPL with both Strong Arm and X-Scale modes
+ERROR - DiskOnChip Millennium Plus 32MB does not support special IPL modes
+Debug: entering NFDC MDOCP identification routine.
+Debug: failed to identify NFDC MDOCP.
+Debug: failed to download OTP/DPS.
+Debug: identified NFDC MDOCP.
+UUreading back data failure
+00000000GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.32.rodata.rodata.str1.1.comment4À>	ŒOè%ô>+ô>0ô>62 ? F CN2"C%]GC7~CfìE€3	lKñÿ/vA�EJ$ŽW´=c,šzÈ’†ÐZ–,0 \o®ÌEº�Ñœ
+ÞÜ|GäÄÜê ´ñT›ýð0 œ¼�"Lö3DVCœpOi`xÞnXé}DÊ†Ý•¡ðN±@!Þ» $‘Å´&3Íè&‚Õ-Ý .æ85Gï€6�÷7Ôÿä8h	*ØJ9ô8J\tVcv€Œ�«¼ÄÌl+¦ÝêòL9Ä
 +?PVj~’¡¯>ŠÄÐÛéùœ>$mdocplus.cgcc2_compiled.chooseDefaultIF_CFGsetDOCPlusBusTypeeccErrorwaitForReadyselectFloorrecoverFromAccessErrorsetASICmodechkASICDownloadpowerDownforceDownLoadcheckToggleflDocWindowBaseAddresssetAddresscommandrdBufrdBufSreadCommandreadStatuswriteCommandwriteExecutewriteDataPlusEDCreadDataPlusEDCsetExtraPtrsetSectorDataPtrreadExtraAreareadSectorDatadoc2ReadwriteExtraAreaanandMark.0writeSectorDatadoc2Writedoc2Erasedoc2MapreadBBTreadIPLwriteIPLwriteOTPotpSizereadOTPgetUniqueIdFlDebugPrintsetBusTypeOfFlashsetIplSizePlusreleasePowerDownchkASICmodeflDelayMsecscheckWinForDOCPLUSflFlashOfflBusConfigflCheckAndFixEDCflSuspendModeflWriteProtectedtffscmptffscpychangeInterleaveflSocketNoOftffssetdocPlusIdentifydocMtdVarsflReadBackBufferOfflBufferOfflSetWindowBusWidthflSetWindowSpeedflMapprotectionBoundriesprotectionKeyInsertprotectionKeyRemoveprotectionTypeprotectionSetflRegisterDOCPLUSSOCnoOfSocketsflSocketOfdocSocketInitflSetWindowSizeflRegisterDOCPLUSnoOfMTDsmtdTable6Z_3z4�’3ª¯3Ü6g6ð8*:>;ˆ;ž;²;j:u;Ì6ß	;õ	;	
+;r7>7!3<3L=Ö#… #M!=s!><"#æ#?õ#&ú#3\$={$>I%7;&@&3‘'@Û(@L+Q+3ˆ+B‘+;¾+Bg-7š-5.5….7¯.´.3Ò.×.3ñ.&/A)0@C0Cº3@Ô3Cã47í4A^57â5Cù5@76CE77J8@Ó8@î87>9@[9Bg9l93w9E‚9F�9G¢9H®9Iº9Jà9;`:;9<A÷<ü<38===3r=y=€=‡=‘=›=¢=©=°=·=¾=Å=Ì=Ó=KÚ=Lá=Mè=Nï=Oú=ÿ=3>Q->Q4>QB>QH>RQ>Q[>Se>T�>V¯>W³>D¹>VX7protectp.o/     1037556716  0     0     100644  4468      `
+ELFX
4(VSQ‹\$1ö€{ t>�ƒìhÿs8ÿ“˜ƒÈˆD$ƒÄŠD$¶ÀPhÿs8ÿ“œF¶C ƒÄ9Æ|ÃZ1À[^Ã�UWVSƒìŠD$0‹t$,ˆD$Š\$<VèüÿÿÿƒÄ…À½
+…€~u½	Q¶ÃPhÿv8ÿ–œƒÄ¶D$…À�}tHt_¸éË�ƒìh`ÿv8ÿ–˜ˆÃXZhaÿv8ÿ–˜¶Ó‰éÓâ¶À‰ùÓà	Â‹D$8‰ZYhdÿv8ÿ–˜YˆÃXheëRƒìhhÿv8ÿ–˜ˆÃXZhiÿv8ÿ–˜¶Ó‰éÓâ¶À‰ùÓà	Â‹D$8‰Y[hlÿv8ÿ–˜ˆÃXZhmÿv8ÿ–˜‰é¶ÓÓâ¶À‰ùÓà	Â‹D$<‰ƒÄ1ÀƒÄ[^_]Ã‰öWVS¶D$…À‹t$‹|$tHt1ëw�v1Û‰öR¶;Phpÿv8ÿ–œCƒÄƒû~ãƒìh\ë*�1Û‰öP¶;Phrÿv8ÿ–œCƒÄƒû~ãƒìh]ÿv8ÿ–˜Àè÷ÐƒàHƒàŽƒÄƒÀrë‰ö¸[^_Ã�vUWVSƒìŠD$0‹t$,ˆD$Vèüÿÿÿ‰ÅƒÄ…í…à1ÿ‰ú:V ƒÑ�‰úP¶ÂPhÿv8ÿ–œƒÄ¶D$…ÀtHt@¸é¤‰öƒìh\ÿv8ÿ–˜ƒÄƒàu{ƒìh\ÿv8ÿ–˜ƒÄƒàu4ë`ƒìh]ÿv8ÿ–˜ƒÄƒàuGƒìh]ÿv8ÿ–˜ƒÄƒàt.Sÿt$,¶\$SVèüÿÿÿƒÄ…ÀtQhSVèüÿÿÿƒÄ…Àt‰ÅG‰ø:F ‚0ÿÿÿ‰èƒÄ[^_]Ã‰öUWVSƒì1ö‹\$ ‰ò:S ŠD$$sF‰å¶ø�v‰òQ¶ÂPhÿs8ÿ“œƒÄUWSèüÿÿÿƒÄ…Àuþ$RUWSèüÿÿÿƒÄF‰ð:C rÂƒÄ[^1À_]ÃUWVSƒì(ŠD$@‹l$<ˆD$UèüÿÿÿƒÄ…À…†‹D$8fÇ0ÆD$1À:E ƒk�vS¶D$Phÿu8ÿ•œƒÄ¶D$…ÀtHt$¸é<‰öƒìh\ÿu8ÿ•˜ˆD$+ë�ƒìh]ÿu8ÿ•˜ˆD$+‹D$Hfƒ@ƒÄŠD$ƒàÇD$t{ƒì¶D$P�D$$P�D$$P¶|$'WUèüÿÿÿƒÄ …À…Ç¶M‹\$‹t$ÓëÓî‰\$‰t$ŠU€úu�G9Ãu9óu€úu!�?�B9Ãu�B9ðt‹D$8fƒÇD$ŠD$ƒàt‹D$8fƒÇD$ŠD$ƒàuƒ|$u‹D$8fƒ ßŠD$ƒàt‹D$8fƒƒìhxÿu8ÿ•˜ƒÄƒàt‹D$8fƒ ïþD$ŠD$:E ‚˜þÿÿ1ÀƒÄ[^_]Ã‰öS1Ò·L$9Ê‹\$°ÿ}
+‰ö*B9Ê|ø¶À[Ã�vUWVS�ìˆŠ„$ ˆD$[‹„$¤f‰D$XŠ”$´Š„$¸ˆT$<ˆD$;ÇD$4‹´$œ¶è‹F0¯hÇD$$ÇD$ Vèüÿÿÿ‰ÃƒÄ…Û…‹”$ 9”$œw‰Ð+„$œ‹V0;Br¸éÛ‰öfƒ~,u ÇD$(ƒìjVèüÿÿÿ‰ÃƒÄ…Û…²€~u‹F�<‹^�‡ÑëfÇD$‰D$ë�‹^�<[�—fÇD$‰T$ƒìhtÿv8ÿ–˜ƒÄ¶T$O…ÒtJ„‘¸éH�vƒàƒøt@ƒø„Ï‹F0¶N‹@Óø¶T$/¯Ð‰ØBÓèf‰T$&Âf‰T$$në‰l$ ‰\$éð‹F0¶N‹@Óø¶T$/¯Ð‰ØBÓèf‰T$$Âf‰T$&‹Fè�‰\$ ‰D$é¶‰öƒàƒøt`ƒøtO‹F0¶N‹@Óø¶T$/¯Ðf‹D$Ðf‰D$&‰ØïÓèf‹T$&Âl$‰øØëf‰T$$‰|$ ‰D$‰l$‰\$ëY�¸oé[‰ö‹F0¶N‹@Óø¶T$/¯Ðf‹D$Ðf‰D$$‰ØÓè‹T$$Â�D=l$f‰T$&�ë‰T$ ‰D$‰l$‰\$‹Œ$¤…Éueƒìjj�|$dWÿt$8VÿV@‰ÃƒÄ …Û…œƒìjWè9ýÿÿƒÄ„ÀtƒìjjW‹D$8€PVÿV@ƒÄ ƒì¶FPW·D$\P�D$lPë�vƒì¶FP�D$\P·D$\Pÿ´$¸ÿ´$¸ÿ´$¸è{ƒÄ Rj·D$,PVÿVH‰ÃƒÄ…Û…ƒìjj�|$dWÿt$4VÿVD‰ÃƒÄ …Û…íƒìjjW‹D$4€PVÿVD‰ÃƒÄ …Û…Ê€|$O…x‹F4ƒìÇ@ jh‹F0ÿp ÿt$0VÿV@‰ÃƒÄ …Û…�ƒìjh‹F0ÿp ÿt$,VÿVD‰ÃƒÄ …Û…kƒìjh‹F0ÿp ‹D$,PVÿVD‰ÃƒÄ …Û…@ƒìjh‹F0ÿp ‹D$0PVÿV@‰ÃƒÄ …Û…ƒìjh‹F0ÿp ‹D$,PVÿVD‰ÃƒÄ …Û…êƒìjh‹F0ÿp ‹D$,PVÿVD‰ÃƒÄ …Û…¿ƒìjj‹F0ÿp ‹D$0PVÿV@‰ÃƒÄ …Û…—ƒìjj‹F0ÿp ‹D$,PVÿVD‰ÃƒÄ …Û…oƒìjj‹F0ÿp ‹D$,PVÿVD‰ÃƒÄ …Û…GPj·D$.PVÿVH‰ÃƒÄ…Û…-ƒìjjWÿt$8VÿVD‰ÃƒÄ …Û…ƒìjjW‹D$8€PVÿVD‰ÃƒÄ …Û…í€|$O…âƒìjh‹F0ÿp ÿt$,VÿV@‰ÃƒÄ …Û…½ƒìjh‹F0ÿp ÿt$0VÿVD‰ÃƒÄ …Û…˜ƒìjh‹F0ÿp ‹D$0PVÿVD‰ÃƒÄ …Ûuqƒìjh‹F0ÿp ‹D$,PVÿV@‰ÃƒÄ …ÛuJƒìjh‹F0ÿp ‹D$0PVÿVD‰ÃƒÄ …Ûu#ƒìjh‹F0ÿp ‹D$0PVÿVD‰ÃƒÄ ƒ|$(uƒìVèüÿÿÿ_]jVèüÿÿÿƒÄ…Àu$…ÛuŠD$0ƒàt‹†„…ÀtƒìVÿÐ‰ÃƒÄ‰ØƒÄ|[^_]Ã�vUWVSƒìŠD$41É<•Á‹T$ ‹\$$ƒÁ	‹t$0ÓêÓë‰‹l$(‹|$,‰^1É�V�Š)ˆAƒù~ô÷Ç•ÀÁà÷ÇˆFt€Nƒçt€NƒìjVèåøÿÿˆFƒÄ[^_]Ã‰ö01.0100000000GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.1.comment4€	h	%´+´0´62È	EÑ7
N@
+	PºñÿX!(~0S=T:Q]�™d,x<hŒ¤²›|�©protectp.cgcc2_compiled.findChecksummakeDPSsetStickyBitprotectionBoundrieschkASICmodetryKeyprotectionKeyInsertprotectionKeyRemoveprotectionTypeprotectionSetchangeInterleavem
A
x‹¹
xÞ
2¼
Ætffs2lnx.o/     1037556716  0     0     100644  5548      `
+ELFt
+4(UWVSƒìèüÿÿÿ…À£tƒìPhëaƒìPh&ëV�1ÿ;ÆD$ƒö�¶D$ƒìhh'£èüÿÿÿƒÄ…À£u ˆD$
+1íéœƒìPhèüÿÿÿƒÄ1ÀéÛ‰ú¶Â�‰èÁà
+D$¾!ƒìˆƒ Æ3h¶ƒ h!£èüÿÿÿƒÄ…À£u*¡©t,© u%©tÆ3ƒàt€3ë�ƒøjt	ƒøm…ÿÿÿEG‰ë:\$
+‚pÿÿÿ‰ú¶ÂþD$;‚ÿÿÿ¶=‰û€û?w#¹ º!�v‰û¶ÃÑàGÆÿÆ‰ø<?vê¸ƒÄ[^_]Ã�ƒì¶D$¶„ hh*£èüÿÿÿƒÄ…À£tƒìPhCèüÿÿÿƒÄ1Àë�v¸ƒÄÃ�v¶D$¶„!Ã‰ö¶T$1À€¼ ÿ•ÀÃ�¶D$Š„!ƒà¶ÀÃ�¶D$Š„!ƒà¶ÀÃ�ƒì¶D$¶„ hh-£èüÿÿÿƒÄ…À£tƒìPh]èüÿÿÿƒÄ1Àë�v¸ƒÄÃ�v¡Ã‰öƒì¶D$¶„ hh5£èüÿÿÿƒÄ…À£tƒìPhèüÿÿÿƒÄ1Àë�v¡ƒÄÃ�vSƒì¶D$‹T$‹L$ ‹\$$¶„ hh2£‰‰
‰èüÿÿÿƒÄ…À£tƒìPhzèüÿÿÿƒÄ1Àë¸ƒÄ[Ã‰öSƒì¶D$‹T$‹L$ ‹\$$¶„ hh0£‰‰
‰èüÿÿÿƒÄ…À£tƒìPhŒèüÿÿÿƒÄ1Àë¸ƒÄ[Ã‰öSƒì0¶D$8�¶ƒ ‹T$<‰D$�D$‰T$Ph#èüÿÿÿƒÄ…À£tƒìPh@èüÿÿÿƒÄ1Àë
�Æƒ!¸ƒÄ([Ã�vSƒì‹T$�êð‰1Û¶D$ƒú‹L$Š„ ‡{ÿ$•¶À£‰
Çð‰éo�v¶À£‰
Çñ‰éO�v¶À£‰
Çò‰é/�v¶À£‰
Çó‰é�v¶À£‰
Çô‰éï�v¶Ã£‰
Çõ‰éÏ�v¶À£‰
Çö‰é¯�v¶À£‰
Ç÷‰é��v¶À£‰
Çø‰éo�vƒà£‰
Çù‰éO�v¶À£‰
Çú‰é/�v¶À£‰
Çû‰é�v¶Ã£‰
Çü‰éï�vƒà£‰
Çý‰éÏ�vƒà£‰
Çþ‰é¯�vƒà£‰
Çÿ‰é��vƒà£‰
ÇŠéo�vÇ‰
ÇŠéM�Ç‰
ÇŠé-�ƒà£‰
ÇŠé�vƒà£‰
ÇŠéï�vƒà£‰
ÇŠéÏ�v¶À£‰
ÇŠé¯�v¶À£‰
ÇŠé��vƒà£‰
ÇŠër‰öƒà£‰
Ç	ŠëV‰öƒà£‰
Ç
+Šë:‰ö‹‹…À‹Qt
Ç31Àë8�vÇë(ƒìj3h èüÿÿÿƒÄ1Àë‰öƒìhèüÿÿÿƒÄ¸ƒÄ[Ã‰ö01.01FlInit->flInitFlInit->flCountVolumesFlInit->flIdentifyProtectionFlMount->flAbsMountVolumeFlDismount->flDismountVolumeFlRead->flAbsReadFlWrite->flAbsWriteFlIoctlFlGetNumberOfSectors->flSectorsInVolumeFlRemoveProtectionFromParm->flInsertProtectionKey8Xx˜¸Øø8Xx˜¸Øø8Xx˜¸Øø8TpŒGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.rodata.str1.1.rodata.str1.32.rel.rodata.comment4à	¬ %+   0 624¨E2à€ Y`	pU	ÌàaÐ	7
+j¤
	¤ñÿ & €
+.s5<GN[tQcÈsØ}ìŠ˜Q£h¸pQÍÄnÔ4nÜ¤a÷Öÿtffs2lnx.cgcc2_compiled.statioreqdevicesFlInitflInitnoOfDrivesbdCallFlErrorPrintFlMountFlGetProtectionFlIsExistFlIsReadProtFlIsWriteProtFlDismountFlGetNumberOfDevicesFlGetNumberOfSectorsFlReadFlWriteFlRemoveProtectionFromParmFlIoctlflIOctl%0ISXbi}‚¢«´»ÅÊÔÛ+8DI€…�”ž©®Ñâô %/4>INi|�‹�š¥
+ª¹Ýâìòøþ
MR\bhns}ˆ�³ÎØã
+èö'4<BH\bh|‚ˆœ¢¨¼ÂÈÜâèü"(<BH\bh|‚ˆœ¢¨¼ÂÈÜâèü"(<BHZdjz„Šœ¢¨¼ÂÈÜâèü"(<BHX^dtz€²·ÈÍ $(,048<@DHLPTX\`dhlflcustom.o/     1037556717  0     0     100644  1632      `
+ELFÀ4(
+Sƒì �D$P�D$P�D$P�D$P�D$PhhhhhèüÿÿÿƒÄ,�\$Sÿt$jfèüÿÿÿƒÄSÿt$jèüÿÿÿƒÄSÿt$hÊèüÿÿÿƒÄSÿt$hËèüÿÿÿƒÄSÿt$jeèüÿÿÿƒÄ([Ã�vVSƒìÿ5ÿ5èüÿÿÿ‰ÆƒÄ…öu
+èüÿÿÿèüÿÿÿƒìÿ5ÿ5èüÿÿÿ‰ÃƒÄ…Ûuèüÿÿÿèüÿÿÿèüÿÿÿ…öt	…Û¸<u1ÀZ[^Ã01.01GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-113).symtab.strtab.shstrtab.rel.text.data.bss.note.comment4	°°%4+4046H7?Pp	
+	Àïñÿ")•5òÿ?òÿNòÿYeq˜h†›­½Îàflcustom.cgcc2_compiled.dwWinHdwWinLflSetEnvVarflUse8BitflUseNFTLCacheflUseisRAMGetFlParamsflSetEnvAllflRegisterComponentsflRegisterDOCPLUSSOCflRegisterDOCPLUSflRegisterINFTLflRegisterDOCSOCflRegisterDOC2000flRegisterNFTL#(
-27JYk}ŒŸ¥ª¸½ÆÌÑßäé
\ No newline at end of file
diff -Naur linux-2.4.23/drivers/block/doc/tffs2lnx.h linux-2.4.23_TS_2_5/drivers/block/doc/tffs2lnx.h
--- linux-2.4.23/drivers/block/doc/tffs2lnx.h	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/block/doc/tffs2lnx.h	Tue Aug 10 15:17:44 2004
@@ -0,0 +1,67 @@
+/*
+ * $Log: tffs2lnx.h,v $
+ * Revision 1.2  2004/08/10 22:17:44  eddie
+ * This library is required to compile the disk on chip module.
+ *
+ * 
+ */
+
+/***********************************************************************************/
+/*                        M-Systems Confidential                                   */
+/*           Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2002            */
+/*                         All Rights Reserved                                     */
+/***********************************************************************************/
+/*                            NOTICE OF M-SYSTEMS OEM                              */
+/*                           SOFTWARE LICENSE AGREEMENT                            */
+/*                                                                                 */
+/*      THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE                 */
+/*      AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT           */
+/*      FOR THE SPECIFIC TERMS AND CONDITIONS OF USE,                              */
+/*      OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE:                               */
+/*      E-MAIL = info@m-sys.com                                                    */
+/***********************************************************************************/
+
+#ifndef ___TFFS2LNX__H__
+#define ___TFFS2LNX__H__
+
+/* Set DiskOnChip Window Address */
+#define FL_DOC_WIN_SIZE		0x2000l
+#define FL_DOC_PHYS_ADDR_LOW	0xC8000l
+#define FL_DOC_PHYS_ADDR_HIGH	0xDE000l
+
+void fl_docCsInit( void );
+int fl_mapPhysMem( unsigned long winl, unsigned long winh );
+void fl_releasePhysMem( unsigned long winl, unsigned long winh );
+
+/* Driver Functions */
+unsigned char FlInit(void);
+unsigned char FlMount(unsigned char bDevice);
+unsigned char FlIsExist(unsigned char bDevice);
+unsigned char FlIsReadProt(unsigned char bDevice);
+unsigned char FlIsWriteProt(unsigned char bDevice);
+unsigned char FlGetProtection(unsigned char bDevice);
+unsigned char FlRemoveProtectionFromParm(unsigned char bHandle,unsigned char*pKey);
+unsigned char FlDismount(unsigned char bDevice);
+int FlGetNumberOfDevices(int max);
+unsigned long FlGetNumberOfSectors(unsigned char bDevice);
+unsigned char FlRead(unsigned char bDevice, void *data, int block, int count);
+unsigned char FlWrite(unsigned char bDevice, void *data, int block, int count);
+int FlIoctl(unsigned char bDevice, int cmd,unsigned long arg);
+
+#define MAX_DEVICES		64	/* "imported" from OSAK, MAX_DEVICES>=VOLUMES from flcustom.h */
+
+/* non-OSAK IOCTLs defenitions */
+#define FL_IOCTL_LNX	(FL_IOCTL_EXTENDED_WRITE_IPL+1)
+typedef struct
+{
+	unsigned long command;
+	unsigned long data;
+} flInputLnxRecord;
+typedef struct
+{
+	unsigned long status;
+	unsigned long data;
+} flOutputLnxRecord;
+/* end of non-OSAK IOCTLs defenitions */
+
+#endif	/* ___TFFS2LNX__H__ */
diff -Naur linux-2.4.23/drivers/block/ll_rw_blk.c linux-2.4.23_TS_2_5/drivers/block/ll_rw_blk.c
--- linux-2.4.23/drivers/block/ll_rw_blk.c	Fri Nov 28 11:26:19 2003
+++ linux-2.4.23_TS_2_5/drivers/block/ll_rw_blk.c	Tue Dec  2 18:04:23 2003
@@ -1541,6 +1541,9 @@
 #ifdef CONFIG_BLK_DEV_MFM
 	mfm_init();
 #endif
+#ifdef CONFIG_BLK_DEV_MSYS_DOC
+	fl_init();
+#endif /* CONFIG_BLK_DEV_MSYS_DOC */
 #ifdef CONFIG_PARIDE
 	{ extern void paride_init(void); paride_init(); };
 #endif
diff -Naur linux-2.4.23/drivers/char/Config.in linux-2.4.23_TS_2_5/drivers/char/Config.in
--- linux-2.4.23/drivers/char/Config.in	Fri Nov 28 11:26:20 2003
+++ linux-2.4.23_TS_2_5/drivers/char/Config.in	Tue Dec  2 18:04:54 2003
@@ -227,6 +227,13 @@
    tristate '  ALi M7101 PMU on ALi 1535D+ Watchdog Timer' CONFIG_ALIM1535_WDT
    tristate '  ALi M7101 PMU Watchdog Timer' CONFIG_ALIM7101_WDT
    tristate '  AMD "Elan" SC520 Watchdog Timer' CONFIG_SC520_WDT
+#   if [ "$CONFIG_TS_386" = "y" ]; then
+#     tristate ' Technologic Systems 386EX SBC Watchdog Timer' CONFIG_TS386_WDT
+#   fi
+   if [ "$CONFIG_TS_M486" = "y" ]; then
+      tristate ' Technologic Systems 5x00 SBC Watchdog Timer' CONFIG_TS486_WDT                                                                                
+   fi
+
    tristate '  Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG
    if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
       tristate '  DC21285 watchdog' CONFIG_21285_WATCHDOG
@@ -367,4 +374,10 @@
    tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
 fi
 
+if [ "$TSYSTEMS" = "y" ]; then
+  tristate ' Analog to Digital driver for Technologic Systems SBC' CONFIG_TSA2D
+  tristate ' Technologic Systems TS-9700 driver support (DAC/AtoD)' CONFIG_TS9700
+  tristate ' Technologic Systems support for Matrix Keypad' CONFIG_TSKEYPAD
+
+fi
 endmenu
diff -Naur linux-2.4.23/drivers/char/Makefile linux-2.4.23_TS_2_5/drivers/char/Makefile
--- linux-2.4.23/drivers/char/Makefile	Fri Nov 28 11:26:20 2003
+++ linux-2.4.23_TS_2_5/drivers/char/Makefile	Tue Dec  2 18:04:54 2003
@@ -35,6 +35,12 @@
 CONSOLE  =console.o
 SERIAL   =serial.o
 
+ifdef TSYSTEMS
+obj-y		+= auto485.o
+obj-$(CONFIG_TS_M486) += ts5600.o
+obj-$(CONFIG_TS9700) += ts9700.o
+endif
+
 ifeq ($(ARCH),s390)
   KEYMAP   =
   KEYBD    =
@@ -276,6 +282,9 @@
 obj-$(CONFIG_NWFLASH) += nwflash.o
 obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
 
+obj-$(CONFIG_TSA2D) += a2d_driver.o
+obj-$(CONFIG_TSKEYPAD) += ts_keypad.o
+
 # Only one watchdog can succeed. We probe the hardware watchdog
 # drivers first, then the softdog driver.  This means if your hardware
 # watchdog dies or is 'borrowed' for some reason the software watchdog
@@ -289,6 +298,8 @@
 obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
 obj-$(CONFIG_W83877F_WDT) += w83877f_wdt.o
 obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
+obj-$(CONFIG_TS386_WDT) += ts_386wdt.o
+obj-$(CONFIG_TS486_WDT) += ts_486wdt.o
 obj-$(CONFIG_WDT) += wdt.o
 obj-$(CONFIG_WDTPCI) += wdt_pci.o
 obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
diff -Naur linux-2.4.23/drivers/char/a2d_driver.c linux-2.4.23_TS_2_5/drivers/char/a2d_driver.c
--- linux-2.4.23/drivers/char/a2d_driver.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/a2d_driver.c	Tue Dec  2 18:04:54 2003
@@ -0,0 +1,280 @@
+
+#ifdef MODVERSIONS
+#include <linux/modversions.h>
+#endif
+
+#include <linux/module.h>
+#include <linux/errno.h>
+#include <linux/devfs_fs_kernel.h>
+
+#include <asm/io.h>
+#include <asm/uaccess.h>
+#include <linux/ts_sbc.h>
+
+#include <linux/a2d_driver.h>
+
+/* Todo:
+ * Make ugly section of code into beautiful
+ * support asynchronous operations
+ */
+
+#define A2D_DEVICE_ERROR 0x5000
+	//the device can never return the upper 4 bits set to 0101
+
+struct a2d_info_s {
+	unsigned char channelno;
+	unsigned char polar_mode ; /* false: unipolar 
+				      true : bipolar
+				       */
+	unsigned char range; /* true: Range1 (5v range)
+				false: Range2 (10v range)
+				*/
+	signed int data;
+	char error;
+	struct semaphore sem;
+};
+
+static devfs_handle_t dev_parent;
+static struct a2d_info_s a2d_info[CHANNELS_MAX];
+
+static int fop_open (struct inode * inode, struct file * filep){
+	int channelno = MINOR(inode->i_rdev) - 1;
+
+	MOD_INC_USE_COUNT;
+
+	if (channelno >= CHANNELS_MAX) 
+		return -ENODEV; 
+	return 0;
+}
+
+static int fop_close (struct inode *inode, struct file *filep) {
+	MOD_DEC_USE_COUNT;
+	return 0;
+}
+
+int fop_ioctl ( struct inode *inode, struct file *filep,
+		unsigned int cmd, unsigned long arg)
+{
+	int channelno = MINOR(inode->i_rdev) - 1;
+	int user_a2dinfo;
+
+	if (channelno >= CHANNELS_MAX)
+		return -ENODEV;
+
+	switch (cmd)
+	{
+		case TSA2D_CONFIG:
+			a2d_info[channelno].polar_mode = arg & A2D_BIPOLAR; 
+				//if not set, then unipolar
+			a2d_info[channelno].range = arg & A2D_RANGE2; 
+				//if not set, then range1
+			break;
+		case TSA2D_SHOWCONFIG:
+			user_a2dinfo = 0;
+			user_a2dinfo |= a2d_info[channelno].polar_mode 
+				| a2d_info[channelno].range ;
+			return user_a2dinfo;
+			break;
+		default:
+			return -EINVAL;
+			break;
+	};
+
+	return 0;
+}
+
+static loff_t fop_nollseek (struct file *filep, loff_t offset, int whence) 
+{
+	return -ESPIPE;
+}
+
+static ssize_t fop_read (struct file *filep, char *buf, 
+		size_t count, loff_t *ppos)
+{
+	int channelno;
+	int ret;
+	int len = sizeof(a2d_info[channelno].data);
+	unsigned long res;
+
+	ret = 0;
+	channelno = MINOR(filep->f_dentry->d_inode->i_rdev) - 1;
+	if (channelno >= CHANNELS_MAX) 
+		return -ENODEV; 
+	
+	if (*ppos < 0) 
+		return -EINVAL;
+	if (count <= 0)
+		return 0;
+
+	if (a2d_info[channelno].data == A2D_DEVICE_ERROR)
+			return -EIO;
+
+	if ( down_interruptible ( &a2d_info[channelno].sem) )
+		return -ERESTARTSYS ;
+
+	if ( len > *ppos) {
+		len -= *ppos ;
+		if (len > count)
+			len = count;
+		ret = len;
+		res = copy_to_user(buf, &a2d_info[channelno].data, len);
+		if ( res != 0) 
+			ret = -EFAULT;
+		else
+			*ppos +=len;
+	}
+
+	up (&a2d_info[channelno].sem);
+	return ret;
+}
+
+static signed int a2d_convert (unsigned char command) {
+	int status; 
+	signed int result; 
+	int lsb, msb;
+	char i = 0;
+
+	outb(command, A2D_PORT);
+	/* Damn this is ugly */
+	status = inb(A2D_BUSY_PORT);
+	while ( (status & A2D_BUSY_BIT) != 0 && i < 50) {
+		status = inb(A2D_BUSY_PORT);
+		i++ ;
+	}
+	if ( i >= 50) {
+		//timeout, conversion never finished
+		printk("a2d_driver.o: TIMEOUT READING A2D DEVICE\n");
+		printk("status was 0x%x\n", status);
+		return A2D_DEVICE_ERROR;
+	}
+	lsb = inb(A2D_PORT);
+	msb = inb(A2D_PORT + 1);
+	result = (msb << 8) | lsb;
+
+	return result;
+	
+}
+
+
+static ssize_t fop_write (struct file *filep, const char * buff, size_t count, loff_t *ppos)
+{
+	int channelno;
+	char command =  0;
+
+	channelno = MINOR(filep->f_dentry->d_inode->i_rdev) - 1;
+
+	if (channelno >= CHANNELS_MAX) 
+		return -ENODEV; 
+
+	/* only one write should be serviced at a time
+	 * as they invoke a conversion request and 
+	 * change value of a2d_info[i].data
+	 */
+	if ( down_interruptible ( &a2d_info[channelno].sem) )
+		return -ERESTARTSYS ;
+	
+	command = channelno | a2d_info[channelno].polar_mode
+		| a2d_info[channelno].range;
+	a2d_info[channelno].data = a2d_convert(command);
+
+	*ppos = 0;
+	up ( &a2d_info[channelno].sem);
+
+	if (a2d_info[channelno].data == A2D_DEVICE_ERROR)
+			return -EIO;
+	
+	/* We only care that a write took place.
+	 * We don't care what was written, so
+	 * just signal that all data was recieved
+	 */
+	
+	return count ;
+}
+
+struct file_operations a2d_fops = {
+	owner: 	THIS_MODULE, 	//2.4.x compliant only
+	llseek: fop_nollseek,
+	read: 	fop_read ,
+	write:	fop_write ,
+	open:	fop_open ,
+	release:fop_close ,
+	ioctl:	fop_ioctl, 
+};
+
+int a2d_register () {
+	int i;
+	char name[4];
+	
+	dev_parent = devfs_mk_dir(NULL, "AtoD", NULL);
+	
+	for (i =0; i < CHANNELS_MAX; i++) {
+		sprintf (name, "%i", i);
+		devfs_register ( dev_parent, name, 
+			DEVFS_FL_DEFAULT | DEVFS_FL_AUTO_DEVNUM ,
+			0, 0, S_IFCHR | S_IRUGO | S_IWUGO, &a2d_fops, 0);
+	}
+		
+	return 0;
+}
+
+void a2d_remove () {
+	devfs_handle_t de;
+	int i;
+	char name[4];
+	
+	if (MOD_IN_USE) {
+		printk( KERN_WARNING "module in use, removal refused\n");
+		return ;
+	}
+
+	for (i = 0; i< CHANNELS_MAX; i++) {
+		sprintf (name, "%i", i);
+		de = devfs_find_handle (dev_parent, name, 
+				0,0,DEVFS_SPECIAL_CHR,0);
+		devfs_unregister (de); /* if null, this function
+					  should do nothing */
+	}
+
+	devfs_unregister(dev_parent);
+}
+
+int a2d_init () {
+	int result, i;
+	struct sbc_info *sbc;
+
+	/*check that A2D is installed in PLD*/
+	sbc = get_sbcinfo ();
+	if ( !sbc->AtoD) {
+		printk ( KERN_WARNING "a2d.o: AtoD option not installed\n");
+		remove_sbcinfo (sbc);
+		return -1;
+	} else
+		remove_sbcinfo (sbc);
+
+	for (i = 0; i < CHANNELS_MAX; i++) {
+		a2d_info[i].channelno = i;
+		a2d_info[i].polar_mode = 0;
+		a2d_info[i].range = 0;
+		a2d_info[i].data = 0;
+		sema_init(&a2d_info[i].sem, 1);
+	}
+
+	result = a2d_register ();
+
+	if ( result < 0 ) {
+		return result;
+	}
+
+
+	printk (KERN_NOTICE "a2d.o: Technologic Systems %s\n", A2D_VER);
+	printk ( KERN_NOTICE "a2d.o: Module Loaded\n");
+	return 0;
+}
+
+module_init (a2d_init);
+module_exit (a2d_remove);
+
+MODULE_AUTHOR("Liberty Young; Technologic Systems");
+MODULE_LICENSE("Dual MPL/GPL");
+MODULE_DESCRIPTION("Driver for TS SBCs with a Maxim 197 AtoD converter");
+MODULE_SUPPORTED_DEVICE("Technologic Systems SBC with AtoD");
diff -Naur linux-2.4.23/drivers/char/auto485.c linux-2.4.23_TS_2_5/drivers/char/auto485.c
--- linux-2.4.23/drivers/char/auto485.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/auto485.c	Tue Dec  2 18:04:54 2003
@@ -0,0 +1,197 @@
+#include <linux/config.h>
+#include <linux/ts_sbc.h>
+#include <asm/termios.h>
+#include <linux/serialP.h>
+#include <asm/io.h>
+
+/*
+ * Liberty Young	Technologic Systems
+ * 11/02	
+ * auto485.c	(de)Set RTS mode of the Single Board Computer
+ * 		(de)Set auto485 mode of the Single Board Computer
+ */
+
+extern int tty_get_baud_rate(struct tty_struct *tty);
+
+static void disable_rtsmode ( void ) {
+	unsigned char portval;
+	portval = inb(0x75);
+	portval &= 0xBF; 
+	outb(portval, 0x75);
+}
+
+static void enable_rtsmode ( void) {
+	unsigned char portval;
+	portval = inb(0x75);
+	portval |= 0x40;
+	outb(portval, 0x75);
+}
+
+static void disable_auto485( void ) {
+	unsigned char portval;
+
+	portval = inb(0x75);
+	portval &= 0x7F; 
+	outb(portval, 0x75);
+}
+
+//note: we could use roundf here with C99 compliant compilers
+//but instead, we've opted not to deal with the extra code size
+static int ugly_roundf (float x) {
+	float temp;
+	temp =x ;
+	temp = temp + 0.5;
+	return (int)temp;
+}
+
+static int enable_auto485 ( unsigned int board_id, unsigned int datalength, int baud, int port) {
+	float timervalue;
+	unsigned char portval;
+	struct tv_sigbits {
+		u8 lsb;
+		u8 msb;
+	};
+	union uTV {
+		struct tv_sigbits sigbit;
+		u16 TV;
+	} loadvalue;
+	
+	//now we have to check for a Baud rate of no less than 9600 and no more than 115200
+	if ( (baud < 9600) || (baud > 115200) ) {
+		printk("serial.c: BaudRates less than 9600\n");
+		printk("or greater than 115200 are not allowed\n");
+		return -1;
+	}
+	if (board_id == 5300) {
+		if (port != 0x3F8) {
+			printk("auto485.c: this board only supports RS485 on COM1\n");
+			return -1;
+		}
+		timervalue = (115200.0 / baud) * 2.0;
+	
+		loadvalue.TV = ugly_roundf(timervalue); 
+		printk("loadvalue = %d\n", loadvalue.TV);
+		printk("loadvalue LSB is 0x%02x\n", loadvalue.sigbit.lsb);
+		printk("loadvalue MSB is 0x%02x\n", loadvalue.sigbit.msb);
+		
+		portval = inb(0x61);	
+		portval |= 0x03;
+		outb(portval, 0x61);
+		printk("write to I/O 0x61 value 0x%02x\n", portval);
+
+		outb(0xB6, 0x43); /* Timer2 into 'square mode' */
+		outb(loadvalue.sigbit.lsb, 0x42);
+		outb(loadvalue.sigbit.msb, 0x42);
+
+		if (datalength == 9){
+			printk("writing 0xC0 to I/O 75h\n");
+			outb(0xC0, 0x75);
+		}
+		if (datalength == 8){
+			printk("writing 0x80 to I/O 75h\n");
+			outb(0x80, 0x75);
+		}
+	}
+
+	if (board_id == 5400){
+		if (port != 0x3F8) {
+			printk("auto485.c: this board only supports RS485 on COM1\n");
+			return -1;
+		}
+		timervalue =  ((((115200.0 / baud) * 3200.0) / 31) - 3);
+		loadvalue.TV = ugly_roundf(timervalue); 
+		
+		printk("loadvalue = %d\n", loadvalue.TV);
+		printk("loadvalue LSB is 0x%02x\n", loadvalue.sigbit.lsb);
+		printk("loadvalue MSB is 0x%02x\n", loadvalue.sigbit.msb);
+		
+		portval = inb(0x61);	
+		portval |= 0x02;
+		portval &= 0xFE;
+		outb(portval, 0x61);
+
+
+		outb(0xB2, 0x43); /* Timer2 into 'one-shot' mode  */
+		outb(loadvalue.sigbit.lsb, 0x42);
+		outb(loadvalue.sigbit.msb, 0x42);
+		
+		if (datalength == 9)
+			outb(0xC0, 0x75);
+		if (datalength == 8)
+			outb(0x80, 0x75);
+
+	}
+	if (board_id == 5500){
+		if (port != 0x3E8) {
+			printk("auto485.c: this board only supports RS485 on COM3\n");
+			return -1;
+		}
+		if (datalength == 9)
+			outb(0xC0, 0x75);
+		if (datalength == 8)
+			outb(0x80, 0x75);
+	}
+
+	return 0;
+}
+
+int sbc_serial_modes ( struct async_struct *info, unsigned int cmd, 
+		unsigned int *value) 
+{
+	struct sbc_info *sbc;
+	int error;
+	unsigned int arg, datalength ;
+	int baud, cflag;
+	
+	error = 0;
+	sbc = get_sbcinfo();
+	arg = *value;
+	//is this operation even permissable?
+	if (!sbc->auto485){
+		remove_sbcinfo (sbc);
+		printk("serial.c: Sorry, this board does not support auto485\n");
+		printk("check /proc/SBC/info for features supported\n");
+		return -1; //this should be an actual errno
+	}
+	switch (cmd) {
+		case TIOC_SBCC485: 
+			if (arg & AUTO485){
+				printk("disableing auto485\n");
+				disable_auto485();
+			}
+			if (arg & RTSMODE){
+				printk("disableing rts mode\n");
+				disable_rtsmode () ;
+			}
+			break;
+		case TIOC_SBCS485:
+			if ( arg & AUTO485) {
+				cflag = info->tty->termios->c_cflag;
+				baud = tty_get_baud_rate (info->tty);
+				printk("SETTING auto485\n");
+
+				if (!(cflag & CS8)){
+					printk("auto485.c: Currently only handles CS8\n");
+					return -1;
+				}
+				datalength = 8;
+				if ( cflag & PARENB)
+					datalength = datalength + 1;
+
+				printk("cflag & PARENB:%d\n", cflag & PARENB);	
+				error = enable_auto485 ( sbc->board_id,
+						datalength, baud, info->port); 
+			}
+			if (arg & RTSMODE) {
+				printk("setting rts mode\n");
+				enable_rtsmode();
+			}
+			break;
+	}
+
+	remove_sbcinfo (sbc);
+	return error;
+}
+
+
+
diff -Naur linux-2.4.23/drivers/char/pc_keyb.c linux-2.4.23_TS_2_5/drivers/char/pc_keyb.c
--- linux-2.4.23/drivers/char/pc_keyb.c	Thu Nov 28 16:53:12 2002
+++ linux-2.4.23_TS_2_5/drivers/char/pc_keyb.c	Tue Dec  2 18:04:54 2003
@@ -487,7 +487,7 @@
 static unsigned char handle_kbd_event(void)
 {
 	unsigned char status = kbd_read_status();
-	unsigned int work = 10000;
+	unsigned int work = 100;
 
 	while ((--work > 0) && (status & KBD_STAT_OBF)) {
 		unsigned char scancode;
@@ -509,9 +509,11 @@
 
 		status = kbd_read_status();
 	}
-		
+#ifndef TSYSTEMS		
 	if (!work)
-		printk(KERN_ERR "pc_keyb: controller jammed (0x%02X).\n", status);
+		printk(KERN_ERR "pc_keyb: controller jammed (0x%02X).\n", status); 
+#endif 
+	
 
 	return status;
 }
diff -Naur linux-2.4.23/drivers/char/serial.c linux-2.4.23_TS_2_5/drivers/char/serial.c
--- linux-2.4.23/drivers/char/serial.c	Fri Nov 28 11:26:20 2003
+++ linux-2.4.23_TS_2_5/drivers/char/serial.c	Tue Dec  2 18:04:54 2003
@@ -57,6 +57,10 @@
  * 10/00: add in optional software flow control for serial console.
  *	  Kanoj Sarcar <kanoj@sgi.com>  (Modified by Theodore Ts'o)
  *
+ * 11/02: (unofficial) added in option to control Technologic Systems
+ *      Single Board Computers' auto485 mode and RTS mode on/off
+ *      Liberty Young <liberty/AT/embeddedx86/dot/com>
+ *
  * 02/02: Fix for AMD Elan bug in transmit irq routine, by
  *        Christer Weinigel <wingel@hog.ctrl-c.liu.se>,
  *        Robert Schwebel <robert@schwebel.de>,
@@ -64,7 +68,7 @@
  *        Theodore Ts'o <tytso@mit.edu>
  */
 
-static char *serial_version = "5.05c";
+static char *serial_version = "5.05c-TS";
 static char *serial_revdate = "2001-07-08";
 
 /*
@@ -266,6 +270,11 @@
 /* number of characters left in xmit buffer before we ask for more */
 #define WAKEUP_CHARS 256
 
+#ifdef TSYSTEMS
+extern int sbc_serial_modes (struct async_struct *info, unsigned int cmd, unsigned *value);
+#endif
+
+
 /*
  * IRQ_timeout		- How long the timeout should be for each IRQ
  * 				should be after the IRQ has been active.
@@ -2701,7 +2710,9 @@
 			/* "setserial -W" is called in Debian boot */
 			printk ("TIOCSER?WILD ioctl obsolete, ignored.\n");
 			return 0;
-
+		case TIOC_SBCC485:
+		case TIOC_SBCS485:
+		      return sbc_serial_modes (info,cmd,(unsigned int *)arg);
 		default:
 			return -ENOIOCTLCMD;
 		}
diff -Naur linux-2.4.23/drivers/char/ts5600.c linux-2.4.23_TS_2_5/drivers/char/ts5600.c
--- linux-2.4.23/drivers/char/ts5600.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/ts5600.c	Fri Jun 25 16:32:09 2004
@@ -0,0 +1,568 @@
+/*
+ * TS-5600 Driver
+ * (c) Technologic Systems ([SPAM]info@[FILTER]embeddedx86.[com])
+ *      author: Liberty Young (liberty/AT/embeddedx86/DOT/com)
+ *      
+ * Technologic Systems does not admit any liability nor any warranty for 
+ * this software or any of its use(s). This software is provided AS-IS. 
+ *
+ * 
+ * Version: 1.00.0	November 2003
+ * 	L.Y.	Initial Version
+ *
+ * 	Version: 1.01	January 21.2004
+ * 	L.Y.	fixed possible bug with devfs autonumbering
+ *
+ * 	Version 1.02	February 03.2004
+ * 	L.Y.	fixed dac_open not ouputing data to right channel 
+ *
+ * 	Version 1.03    June 17.2004
+ * 	L.Y.	fixed introduced bug (See cvs)
+ *
+ * This code is board specific. It only works for the Technologic Systems
+ * TS-5600 SBC
+ *
+ */
+
+#ifdef MODVERSIONS
+#include <linux/modversions.h>
+#endif
+
+#include <linux/module.h>
+
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/fs.h>
+#include <linux/devfs_fs_kernel.h>
+#include <linux/spinlock.h>
+#include <linux/ts_sbc.h>
+#include <asm/uaccess.h>
+#include <asm/io.h>
+#include <asm/semaphore.h>
+
+#include "ts5600.h"
+
+#define LOG_LEVEL KERN_INFO
+#define DAC 1
+#define A2D 0
+#define SPI_NOOP 2
+#define TS5600_MMCRBASE 0xDFC20
+
+#define PIO_0_15_PFS       0x0
+#define PIO_0_15_DIR       0x0A
+#define PIO_0_15_DATA      0x10
+#define PIO_0_15_CLEAR     0x18
+#define PIO_0_15_SET       0x14
+#define PIO_16_31_PFS      0x02
+#define PIO_16_31_DIR      0x0C
+#define PIO_16_31_DATA     0x12
+#define PIO_16_31_CLEAR    0x1A
+#define PIO_16_31_SET      0x16
+
+#define SPI_CTRL_REG       0x000B0
+#define SPI_TX_DATA        0x000B1
+#define SPI_CMD_REG        0x000B2
+#define SPI_STATUS_REG     0x000B3
+#define SPI_RX_DATA        0x000B4
+
+
+unsigned long *mmcr_base;
+
+struct spi_data_s {
+	uint8_t LSB ;
+	uint8_t MSB ;
+} ;
+
+struct spi_regs_s {
+	unsigned long *control_reg;
+	unsigned long *tx_data;
+	unsigned long *command_reg;
+	unsigned long *status_reg;
+	unsigned long *rx_data;
+} spi_reg;
+
+struct pio_registers_s {
+	unsigned long *pfs_0_15;
+	unsigned long *dir_0_15;
+	unsigned long *data_0_15;
+	unsigned long *clear_0_15;
+	unsigned long *set_0_15;
+	unsigned long *pfs_16_31;
+	unsigned long *dir_16_31;
+	unsigned long *data_16_31;
+	unsigned long *clear_16_31;
+	unsigned long *set_16_31;
+
+} pio_reg;
+
+
+union dac_data {
+	struct spi_data_s data;
+	uint16_t value;
+};
+
+union a2d_data {
+	struct spi_data_s data;
+	uint16_t value;
+};
+
+	
+
+struct a2d_channel_s {
+	int data;
+	int mode; 
+	devfs_handle_t devfsnode;
+};
+
+struct dac_channel_s {
+	union dac_data data;
+	int mode; 
+	devfs_handle_t devfsnode;
+};
+
+static struct ts5600_s {
+	struct a2d_channel_s a2d_channel[A2D_CHANNELS_MAX];
+	struct dac_channel_s dac_channel[DAC_CHANNELS_MAX];
+	devfs_handle_t devfs_parent;
+	devfs_handle_t a2d_dir;
+	devfs_handle_t dac_dir;
+	struct semaphore spi_mutex;
+} ts5600;
+
+
+int enable_cs(char);
+void disable_cs (char );
+uint8_t spi_transfer (uint8_t);
+
+int enable_cs(char operation ){
+	int i;
+
+	for (i=0; readb(spi_reg.status_reg) & 0x02; i++)
+		if (i>100)
+			return -EIO;
+
+	switch (operation) {
+		case A2D:
+			writeb(0x21, spi_reg.control_reg);
+			writew(0x0800, pio_reg.clear_16_31);
+			break;
+
+		case DAC:
+			writeb( 0x03, spi_reg.control_reg);
+			writew( 0x8000, pio_reg.clear_0_15);
+			break;
+		default:
+			return -ENODEV;
+			break;
+	}
+	return 0;
+}
+
+void disable_cs (char operation){
+
+	int i;
+	switch (operation) {
+		case A2D:
+			writew(0x0800, pio_reg.set_16_31);
+			break;
+
+		case DAC:
+			writew( 0x8000, pio_reg.set_0_15);
+			break;
+
+		default:
+			break;
+	}
+
+	for (i=0;i<1000;i++);
+}
+
+uint8_t spi_transfer( uint8_t data){
+
+	int i;
+	uint8_t returndata;
+
+	writeb(data, spi_reg.tx_data);
+	writeb(0x03, spi_reg.command_reg);
+
+	for (i=0; readb(spi_reg.status_reg) & 0x02; i++)
+		if (i>100) 
+			break;
+	if (i > 100)
+		printk("ts5600.o: spi_transfer reported an error\n");
+	
+	returndata = readb(spi_reg.rx_data);
+	return (returndata);
+
+}
+
+static char get_channelno (int minornumber) {
+	char i; 
+
+	i = minornumber;
+	if (minornumber >= 8)
+		i = minornumber - 8;
+	return i;
+}
+
+void dac_process (union dac_data outvalue){
+
+	if (down_interruptible(&ts5600.spi_mutex))
+		return ;
+	
+	if (enable_cs(DAC) < 0){
+		up(&ts5600.spi_mutex);
+		return ;
+	}
+
+	spi_transfer(outvalue.data.MSB);
+	spi_transfer(outvalue.data.LSB);
+	
+	disable_cs(DAC);
+
+	up(&ts5600.spi_mutex);
+
+	//wake up other sleeping processes
+}
+
+static int a2d_convert (int channel) {
+	uint8_t data;	
+	union a2d_data returnval;
+
+	data = (channel << 3) | 0x04;
+	
+	if (down_interruptible(&ts5600.spi_mutex))
+		return A2D_DEVICE_ERROR;
+
+	if (enable_cs(A2D) < 0){
+		up(&ts5600.spi_mutex);
+		return A2D_DEVICE_ERROR;
+	}
+
+	spi_transfer(data) ;
+	spi_transfer(data) ;
+
+	returnval.data.MSB = spi_transfer(data);
+	returnval.data.LSB = spi_transfer(data);
+
+	disable_cs(A2D);
+
+	up(&ts5600.spi_mutex);
+
+	//wake up other sleeping processes
+	return returnval.value;
+	
+}
+
+
+
+static int a2d_fop_open (struct inode * inode, struct file *filep)
+{
+	int minor;		
+	int channelno;
+	
+	minor = MINOR(filep->f_dentry->d_inode->i_rdev) - 1;
+    channelno = get_channelno(minor);
+    if (channelno >= A2D_CHANNELS_MAX)
+        return -ENODEV;
+
+	MOD_INC_USE_COUNT;
+	return 0;
+}
+
+static int dac_fop_open (struct inode * inode, struct file *filep)
+{
+	int minor;	
+	int channelno;
+
+	minor = MINOR(filep->f_dentry->d_inode->i_rdev) - 1;
+	channelno = get_channelno(minor);
+	if (channelno >= DAC_CHANNELS_MAX)
+		return -ENODEV;
+
+	MOD_INC_USE_COUNT;
+	return 0;
+}
+
+static int fop_close (struct inode *inode, struct file *filep){
+	MOD_DEC_USE_COUNT;
+	return 0;
+}
+
+static ssize_t a2d_fop_read (struct file *filep, char *buf, size_t count, loff_t *ppos) {
+	int channelno; 
+	int len = sizeof(int);
+	int minor;
+	unsigned long res;
+
+	minor = MINOR(filep->f_dentry->d_inode->i_rdev) - 1;
+                                                                                
+    channelno = get_channelno(minor);
+
+    if (*ppos < 0)
+        return -EINVAL;
+
+	*ppos = 0;
+
+  	if (ts5600.a2d_channel[channelno].data == A2D_DEVICE_ERROR)
+		return  -EINVAL;
+
+    res = copy_to_user(buf, &ts5600.a2d_channel[channelno].data, len);
+    if ( res != 0)
+       return -EFAULT;
+
+    return 0;
+}
+
+	
+static ssize_t dac_fop_write (struct file *filep, const char *buff, size_t count, loff_t *ppos) 
+{
+	int channelno;
+	int minor;
+	int data;
+	int channelswitch;
+	union dac_data processdata;
+
+	minor = MINOR(filep->f_dentry->d_inode->i_rdev) - 1;
+
+	channelno = get_channelno(minor);
+	switch (channelno)
+	{
+		case 0:
+			channelswitch = 0x00;
+			break;
+		case 1:
+			channelswitch = 0x40;
+			break;
+		case 2:
+			channelswitch = 0x80;
+			break;
+		case 3:
+			channelswitch = 0xc0;
+			break;
+	}
+			
+    if (*ppos < 0)
+        return -EINVAL;
+    if (count <= 0)
+        return 0;
+
+	copy_from_user (&data, buff, sizeof(int));
+	
+	data = data | channelswitch;
+	processdata.value = data;
+	dac_process ( processdata);
+	*ppos += sizeof(char);
+
+	return sizeof(char);
+
+}
+
+static ssize_t a2d_fop_write (struct file *filep, const char * buff, size_t count, loff_t *ppos)
+{
+	int channelno;
+	int minor;
+	
+	minor = MINOR(filep->f_dentry->d_inode->i_rdev) - 1;
+
+	channelno = get_channelno(minor);
+
+	ts5600.a2d_channel[channelno].data = a2d_convert(channelno);
+
+	*ppos += count;
+
+	return count ;
+}
+
+
+
+static loff_t fop_nollseek (struct file * filep, loff_t offset, int whence)
+{
+	return -ESPIPE;
+}
+
+
+struct file_operations dac_fops = {
+	owner: 	THIS_MODULE, 	//2.4.x compliant only
+	llseek: fop_nollseek,
+	write:	dac_fop_write ,
+	open:	dac_fop_open ,
+	release:fop_close ,
+};
+
+struct file_operations a2d_fops = {
+	owner: 	THIS_MODULE, 	//2.4.x compliant only
+	llseek: fop_nollseek,
+	read: 	a2d_fop_read ,
+	write:	a2d_fop_write ,
+	open:	a2d_fop_open ,
+	release:fop_close ,
+};
+
+
+int a2d_register (void) {
+	int i;
+	char name[4];
+
+	ts5600.a2d_dir = devfs_mk_dir (ts5600.devfs_parent, "A2D", NULL);
+
+	for (i =0; i < A2D_CHANNELS_MAX; i++) {
+		ts5600.a2d_channel[i].data = A2D_DEVICE_ERROR;
+		sprintf (name, "%i", i);
+		devfs_register ( ts5600.a2d_dir, name, 
+			DEVFS_FL_DEFAULT,
+			8, A2D_MINOR_OFFSET +i, S_IFCHR | S_IRUGO | S_IWUGO, &a2d_fops, 0);
+	}
+		
+	return 0;
+}
+
+int dac_register (void) {
+	int i; 
+	char name[4];
+
+	ts5600.dac_dir = devfs_mk_dir (ts5600.devfs_parent, "DAC", NULL);
+
+	for (i=0; i < DAC_CHANNELS_MAX; i++){
+		ts5600.dac_channel[i].data.value = 0;
+		sprintf(name, "%i", i);
+		devfs_register ( ts5600.dac_dir, name, 
+			DEVFS_FL_DEFAULT ,
+			8, DAC_MINOR_OFFSET+i, S_IFCHR | S_IWUGO, &dac_fops, 0);
+	}
+		
+	return 0;
+}
+
+int a2d_unregister (void) {
+	int i;
+	char name[4];
+	devfs_handle_t de; 
+	
+	for (i = 0; i< A2D_CHANNELS_MAX; i++) {
+		sprintf (name, "%i", i);
+		de = devfs_find_handle (ts5600.a2d_dir, name, 
+				0,0,DEVFS_SPECIAL_CHR,0);
+		devfs_unregister (de); /* if null, this function
+					  should do nothing */
+	}
+	devfs_unregister(ts5600.a2d_dir);
+	ts5600.a2d_dir = 0 ;
+
+	return 0;
+}
+
+
+int dac_unregister (void) {
+	int i; 
+	char name[4];
+	devfs_handle_t de;
+
+	for (i=0; i< DAC_CHANNELS_MAX; i++){
+		sprintf (name, "%i", i);
+		de = devfs_find_handle (ts5600.dac_dir, name,
+				0,0,DEVFS_SPECIAL_CHR, 0);
+		devfs_unregister(de); 
+	}
+	devfs_unregister(ts5600.dac_dir);
+	ts5600.dac_dir = 0;
+
+	return 0;
+}
+
+
+int start_module (void) {
+
+	int tmp;
+	struct sbc_info *sbc;
+
+	sbc = get_sbcinfo();
+	if ( sbc->board_id != 5600) {
+		printk( KERN_WARNING "ts5600.o: determined board is not TS5600\n");
+		remove_sbcinfo(sbc);
+		return -1;
+	}
+		
+	
+	ts5600.devfs_parent = devfs_mk_dir(NULL, "SBC/TS5600", NULL);
+	if (ts5600.devfs_parent < 0) {
+		printk(KERN_WARNING "ts5600.o: trouble with devfs\n");
+	}
+
+	a2d_register();
+	dac_register();
+	
+	sema_init(&ts5600.spi_mutex, 1);
+	
+	spi_reg.control_reg = ioremap (TS5600_MMCRBASE  + SPI_CTRL_REG ,1);
+	spi_reg.tx_data 	 = ioremap (TS5600_MMCRBASE  + SPI_TX_DATA,1);
+	spi_reg.command_reg = ioremap (TS5600_MMCRBASE  + SPI_CMD_REG,1);
+	spi_reg.status_reg  = ioremap (TS5600_MMCRBASE  + SPI_STATUS_REG,1);
+	spi_reg.rx_data	 = ioremap (TS5600_MMCRBASE  + SPI_RX_DATA,1);
+	
+	pio_reg.pfs_0_15 = ioremap (TS5600_MMCRBASE+ PIO_0_15_PFS,1) ;	
+	pio_reg.dir_0_15 = ioremap (TS5600_MMCRBASE+ PIO_0_15_DIR,1) ;	
+	pio_reg.data_0_15 = ioremap (TS5600_MMCRBASE+ PIO_0_15_DATA ,1) ;	
+	pio_reg.clear_0_15 = ioremap (TS5600_MMCRBASE+ PIO_0_15_CLEAR,1);	
+	pio_reg.set_0_15 = ioremap (TS5600_MMCRBASE+ PIO_0_15_SET,1) ;	
+	pio_reg.pfs_16_31 = ioremap (TS5600_MMCRBASE+ PIO_16_31_PFS,1) ;	
+	pio_reg.dir_16_31 = ioremap (TS5600_MMCRBASE+ PIO_16_31_DIR,1) ;	
+	pio_reg.data_16_31 = ioremap (TS5600_MMCRBASE+ PIO_16_31_DATA,1) ;	
+	pio_reg.clear_16_31 = ioremap (TS5600_MMCRBASE+ PIO_16_31_CLEAR,1) ;	
+	pio_reg.set_16_31 = ioremap (TS5600_MMCRBASE+ PIO_16_31_SET,1);	
+
+	//all pio_reg stuff use 16 bit registers..use readw, writew (2 byte)
+	//all spi_reg stuff use 8 bit registers...use readb, writeb (1 byte)
+	//setting PIO pins we use to outputs
+	
+	writew (0x80F0, pio_reg.set_0_15);
+	writew(0x0800, pio_reg.set_16_31);
+
+	//set PIO Direction pins we use to outputs
+	tmp = readw(pio_reg.dir_0_15);
+	tmp |= 0x80F0;
+	writew(tmp, pio_reg.dir_0_15);
+	tmp = readw(pio_reg.dir_16_31);
+	tmp |= 0x0800;
+	writew(tmp, pio_reg.dir_16_31);
+
+	//set PIO Pin Function Select to PIO mode
+	tmp = readw(pio_reg.pfs_0_15);
+	tmp &= 0x7F0F;
+	writew (tmp, pio_reg.pfs_0_15);
+	tmp = readw(pio_reg.pfs_16_31);
+	tmp &= 0xF7FF;
+	writew(tmp, pio_reg.pfs_16_31);
+
+	printk(KERN_NOTICE "ts5600.o: Technologic Systems %s\n", TS5600_VER);
+	printk(KERN_NOTICE "TS5600.o: Module Loaded \n");
+
+	return 0;
+
+}
+
+
+void ts5600_cleanup (void) {
+
+	if (MOD_IN_USE){
+		printk(KERN_WARNING "ts5600.o: module in use, removal refused\n");
+		return;
+	}
+
+	iounmap(mmcr_base);
+
+	dac_unregister();
+	a2d_unregister();
+
+	devfs_unregister(ts5600.devfs_parent);
+
+	printk(LOG_LEVEL "ts5600.o: module was removed\n");
+}
+
+module_init (start_module);
+module_exit	(ts5600_cleanup);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR ("liberty young; technologic systems");
diff -Naur linux-2.4.23/drivers/char/ts5600.h linux-2.4.23_TS_2_5/drivers/char/ts5600.h
--- linux-2.4.23/drivers/char/ts5600.h	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/ts5600.h	Fri Jun 25 16:32:09 2004
@@ -0,0 +1,42 @@
+/* ts5600.h
+ * Technologic Systems
+ * Liberty Young	Liberty/at/embeddedx86/dot/com
+ *
+ * This driver is for a TS5600 only
+ * with the Analog to Digital option installed 
+ * and the Digitaal to Analog option installed
+ *
+ * No warranty is implied, or given, with this device driver.
+ */
+
+#define READY_BIT	0x80	//bit 7
+#define A2D_CHANNELS_MAX	8 /* 0 TO 7 channels on device */
+#define DAC_CHANNELS_MAX	4 
+#define A2D_MINOR_OFFSET	1
+#define DAC_MINOR_OFFSET	9
+#define A2D_DEVICE_ERROR 0x5000
+#define TS5600_VER "[06.17.04] Ver 1.03"
+
+/* I/O Map
+ *
+ * AtoD has no special options bits. 
+ *
+ * Command register for DAC
+ * bits 0-11	Value to DAC
+ * bit 12		Destination
+ * bit 13		0
+ * bit 14		FAST/SLOW DAC mode
+ * bit 15		Destination
+ *
+ * Destination as follows:
+ * bit 15 	bit 12
+ * 0		0		DAC B and buffer
+ * 0		1		Buffer
+ * 1		0		DAC A destination, also copy data from Buffer into B
+ * 1		1		illegal
+ */
+
+#define FAST_DAC	0x01
+#define SLOW_DAC	0x00
+
+#define DAC_MASK	0x0FFF
diff -Naur linux-2.4.23/drivers/char/ts9700.c linux-2.4.23_TS_2_5/drivers/char/ts9700.c
--- linux-2.4.23/drivers/char/ts9700.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/ts9700.c	Mon Jan 26 16:23:15 2004
@@ -0,0 +1,496 @@
+/*
+ * TS-9700 Driver
+ * (c) Technologic Systems (info_AT__embeddedx86__DOT.com)
+ * author: Liberty Young
+ *
+ * Technologic Systems does not admit any liability nor any warranty 
+ * for this software or any of its use(s). This software is provided
+ * AS-IS.
+ *
+ * This driver is for a TS-9700 only with the Analog to
+ * Digital option installed and the Digital to Analog
+ * option installed
+ *
+ * L.Y. 01.00:	First Release, AtoD functionality only
+ * L.Y. 02.00:	Production release, includes DAC support
+ * L.Y. 02.01:	fixed bug #000044 with determing channel/board 
+ * 
+ */
+
+#ifdef MODVERSIONS
+#include <linux/modversions.h>
+#endif
+
+#include <linux/module.h>
+#include <linux/errno.h>
+#include <linux/devfs_fs_kernel.h>
+#include <linux/slab.h>
+
+#include <asm/io.h>
+#include <asm/uaccess.h>
+#include <linux/init.h>
+
+#include "ts9700.h"
+
+/* Todo:
+ * Make ugly section of code into beautiful
+ * support asynchronous operations
+ */
+
+#define A2D_DEVICE_ERROR 0x5000
+	//the device can never return the upper 4 bits set to 0101
+
+int baseio1= 0x0; 	
+int baseio2 = 0x0;
+int baseio3 = 0x0;
+int boardcount = 0;
+
+struct a2d_channel_s {
+	signed int data; 
+	int mode ;
+	devfs_handle_t devfsnode; 
+};
+
+struct dac_channel_s {
+	signed int data;
+	char speed;	//fast/slow
+	devfs_handle_t devfsdnode;
+};
+
+struct ts9700_s {
+	int base_io; 
+	unsigned char command;
+	struct a2d_channel_s a2d_channel[A2D_CHANNELS_MAX];
+	struct dac_channel_s dac_channel[DAC_CHANNELS_MAX];
+	devfs_handle_t devfsdir ;
+	devfs_handle_t a2d_dir; 
+	devfs_handle_t dac_dir; 
+};
+
+struct ts9700_info_s {
+	char board;
+	char channel;
+};
+
+static devfs_handle_t dev_parent;
+static struct ts9700_s ts9700 [MAX_BOARDS];
+
+int get_boardnumber (int minornumber){
+	int i;
+	i = (minornumber-A2D_MINOR_OFFSET)/(A2D_CHANNELS_MAX+DAC_CHANNELS_MAX);
+	return i;
+}
+
+int get_channelno (int minornumber){
+	int i;
+	int floor;
+
+	minornumber = minornumber - A2D_MINOR_OFFSET ;
+	floor = (minornumber / (A2D_CHANNELS_MAX+DAC_CHANNELS_MAX))*(A2D_CHANNELS_MAX+DAC_CHANNELS_MAX);
+	i = minornumber - floor;
+
+	if (i >= A2D_CHANNELS_MAX)
+		i = i - A2D_CHANNELS_MAX;	//DAC channel
+
+	return i;
+}
+
+static int fop_open (struct inode * inode, struct file * filep){
+	int minor; 
+	int boardnum, channelnum;
+	struct ts9700_info_s *info;
+
+	MOD_INC_USE_COUNT;
+	
+	minor = MINOR(filep->f_dentry->d_inode->i_rdev);
+	boardnum = get_boardnumber(minor);
+	if (boardnum > MAX_BOARDS ){
+		printk("board #%d is invalid\n", boardnum);
+		MOD_DEC_USE_COUNT;
+		return -ENODEV;
+	}
+
+	channelnum = get_channelno(minor);
+	if (channelnum > A2D_CHANNELS_MAX) {
+		printk("channel #%d is invalid\n", channelnum);
+		MOD_DEC_USE_COUNT;
+		return -ENODEV;
+	}
+
+	info = kmalloc(sizeof(struct ts9700_info_s), GFP_KERNEL);
+	if (!info)
+		return -ENOMEM;
+	info->board=boardnum;
+	info->channel=channelnum;
+	filep->private_data = info;
+
+	return 0;
+}
+
+
+static int fop_close (struct inode *inode, struct file *filep) {
+	struct ts9700_info_s *info;
+
+	info = (struct ts9700_info_s *)filep->private_data;
+	kfree(info);
+	filep->private_data = NULL;
+
+	MOD_DEC_USE_COUNT;
+	return 0;
+}
+
+static loff_t fop_nollseek (struct file *filep, loff_t offset, int whence) 
+{
+	return -ESPIPE;
+}
+
+static ssize_t dac_fop_read (struct file *filep, char *buf, 
+		size_t count, loff_t *ppos)
+{
+	return -EINVAL;
+}
+
+static ssize_t fop_read (struct file *filep, char *buf, 
+		size_t count, loff_t *ppos)
+{
+	int channelno;
+	int ret;
+	int boardnum; 
+	int len = sizeof(signed int) ;
+	unsigned long res;
+	struct ts9700_info_s *info;
+	
+	ret = 0;
+	info = (struct ts9700_info_s *) filep->private_data;
+
+	boardnum = info->board;
+	channelno = info->channel;
+	
+	if (*ppos < 0) 
+		return -EINVAL;
+	if (count <= 0)
+		return 0;
+
+	if (ts9700[boardnum].a2d_channel[channelno].data == A2D_DEVICE_ERROR)
+			return -EIO;
+
+	if ( len > *ppos) {
+		len -= *ppos ;
+		if (len > count)
+			len = count;
+		ret = len;
+		res = copy_to_user(buf, &ts9700[boardnum].a2d_channel[channelno].data, len);
+		if ( res != 0) 
+			ret = -EFAULT;
+		else
+			*ppos +=len;
+	}
+
+	return ret;
+}
+
+void dac_process (int baseio, int command, char chan, char speed){
+	long int outvalue;
+	int i; 
+	int status=0;
+	
+
+	command &= DAC_MASK;
+	outvalue = command;
+
+	i = chan << 14;
+	outvalue |= i;
+
+	i = speed ? 0x01000 : 0;
+	outvalue |=i;
+
+	outw(outvalue, baseio+4);
+
+	status = inb(baseio+6);
+	while ( (status & READY_BIT) == 0 && i < 90) {
+		status = inb(baseio+6);
+		i++ ;
+	}
+	if (i>=90)
+		printk("ts9700.o:dac_process(...):read bit timeout\n");
+}
+
+
+
+static signed int a2d_convert (unsigned char command, int baseio) {
+	int status; 
+	signed int result; 
+	int lsb, msb;
+	char i = 0;
+
+	command &= 0xEF; //double acquisition
+	outb(command, baseio+0);
+
+	status = inb(baseio+0);
+	while ( (status & READY_BIT) == 0 && i < 90) {
+		status = inb(baseio+0);
+		i++ ;
+	}
+	if ( i >= 50) {
+		//timeout, conversion never finished
+		printk("ts9700.o: TIMEOUT READING A2D DEVICE\n");
+		printk("status was 0x%x\n", status);
+		return A2D_DEVICE_ERROR;
+	}
+
+	lsb = inb(baseio+2);
+	msb = inb(baseio+3);
+	result = (msb << 8) | lsb;
+
+	return result;
+	
+}
+
+static ssize_t dac_fop_write (struct file *filep, const char * buff, size_t count, loff_t *ppos)
+{
+	int channelno;
+	int boardnum; 
+	int *dac_data;
+	int baseio;
+	int data;
+	long i; 
+	struct ts9700_info_s *info;
+
+	info = (struct ts9700_info_s *) filep->private_data;
+
+	boardnum = info->board;
+	channelno = info->channel;
+
+	dac_data = &ts9700[boardnum].dac_channel[channelno].data;
+	baseio = ts9700[boardnum].base_io;
+
+	*ppos = 0;
+
+	copy_from_user (&data, buff, sizeof(int));
+	
+	*dac_data = (int)data;
+	dac_process (baseio, *dac_data, channelno, 0);
+	i=sizeof(int);
+
+	*ppos += i;
+	return (i); 
+
+}
+
+static ssize_t fop_write (struct file *filep, const char * buff, size_t count, loff_t *ppos)
+{
+	int channelno, boardnum; 
+	char command = 0;
+	struct ts9700_info_s *info;
+
+	info=(struct ts9700_info_s *)filep->private_data;
+
+	boardnum = info->board;
+	channelno = info->channel;
+
+	command = channelno | DOUBLE_ACQUIRE ; 
+	ts9700[boardnum].a2d_channel[channelno].data = a2d_convert(command, ts9700[boardnum].base_io);
+
+	*ppos = 0;
+
+	if (ts9700[boardnum].a2d_channel[channelno].data == A2D_DEVICE_ERROR)
+			return -EIO;
+	
+	/* We only care that a write took place.
+	 * We don't care what was written, so
+	 * just signal that all data was recieved
+	 */
+	
+	return count ;
+}
+
+struct file_operations dac_fops = {
+	owner: 	THIS_MODULE, 	//2.4.x compliant only
+	llseek: fop_nollseek,
+	read: 	dac_fop_read ,
+	write:	dac_fop_write ,
+	open:	fop_open ,
+	release:fop_close ,
+};
+
+struct file_operations a2d_fops = {
+	owner: 	THIS_MODULE, 	//2.4.x compliant only
+	llseek: fop_nollseek,
+	read: 	fop_read ,
+	write:	fop_write ,
+	open:	fop_open ,
+	release:fop_close ,
+};
+
+int a2d_unregister (struct ts9700_s * ts9700) {
+	int i;
+	char name[4];
+	devfs_handle_t de; 
+	
+	for (i = 0; i< A2D_CHANNELS_MAX; i++) {
+		sprintf (name, "%i", i);
+		de = devfs_find_handle (ts9700->a2d_dir, name, 
+				0,0,DEVFS_SPECIAL_CHR,0);
+		devfs_unregister (de); /* if null, this function
+					  should do nothing */
+	}
+	devfs_unregister(ts9700->a2d_dir);
+	ts9700->a2d_dir = 0 ;
+
+	return 0;
+}
+
+
+int dac_unregister (struct ts9700_s * ts9700) {
+	int i; 
+	char name[4];
+	devfs_handle_t de;
+
+	for (i=0; i< DAC_CHANNELS_MAX; i++){
+		sprintf (name, "%i", i);
+		de = devfs_find_handle (ts9700->dac_dir, name,
+				0,0,DEVFS_SPECIAL_CHR, 0);
+		devfs_unregister(de); 
+	}
+	devfs_unregister(ts9700->dac_dir);
+	ts9700->dac_dir = 0;
+
+	return 0;
+}
+
+int a2d_register (struct ts9700_s * ts9700, int boardnum) {
+	int i, minor;
+	char name[4];
+
+	ts9700->a2d_dir = devfs_mk_dir (ts9700->devfsdir, "A2D", NULL);
+
+	for (i =0; i < A2D_CHANNELS_MAX; i++) {
+		sprintf (name, "%i", i);
+		minor = A2D_MINOR_OFFSET + (
+				(A2D_CHANNELS_MAX+DAC_CHANNELS_MAX) *boardnum) +i;
+		devfs_register ( ts9700->a2d_dir, name, 
+			DEVFS_FL_DEFAULT ,
+			8, minor, S_IFCHR | S_IRUGO | S_IWUGO, &a2d_fops, 0);
+	}
+
+
+		
+	return 0;
+}
+
+int dac_register (struct ts9700_s * ts9700, int boardnum) {
+	int i, minor; 
+	char name[4];
+
+	ts9700->dac_dir = devfs_mk_dir (ts9700->devfsdir, "DAC", NULL);
+
+	for (i=0; i < DAC_CHANNELS_MAX; i++){
+		sprintf(name, "%i", i);
+		minor = DAC_MINOR_OFFSET+(
+				(A2D_CHANNELS_MAX+DAC_CHANNELS_MAX)*boardnum) + i;
+		devfs_register ( ts9700->dac_dir, name, 
+			DEVFS_FL_DEFAULT ,
+			8, minor, S_IFCHR | S_IRUGO | S_IWUGO, &dac_fops, NULL);
+	}
+		
+	return 0;
+}
+
+int ts9700_register (int board_number) {
+	char name[3];
+
+	sprintf(name, "%d", board_number);
+
+	ts9700[board_number].devfsdir = devfs_mk_dir (dev_parent, name, NULL); 
+
+	a2d_register(&ts9700[board_number], board_number) ; 
+	dac_register(&ts9700[board_number], board_number) ;
+
+	return 0;
+}
+
+
+
+void a2d_remove (void) {
+	int i;
+	
+	if (MOD_IN_USE) {
+		printk( KERN_WARNING "module in use, removal refused\n");
+		return ;
+	}
+	
+	for (i=0;i < boardcount; i++){
+		a2d_unregister (&ts9700[i]); 
+		dac_unregister (&ts9700[i]);
+	}
+
+	devfs_unregister(dev_parent);
+
+	return ; 
+}
+
+int check_for_ts9700 (int ioaddress){
+	int result;
+
+	outb(0xFF, 0x80); //clear bus memory
+	result = inb(ioaddress+ 1); 
+	if ( result != 0x97) 
+		return 0;
+	
+	return 1;
+}
+
+
+int a2d_init (void) {
+	int i;
+	
+	dev_parent = devfs_mk_dir(NULL, "SBC/TS9700", NULL);
+	if (dev_parent < 0){
+		printk( KERN_WARNING "ts9700.o: trouble with devfs\n");
+	}
+
+
+	baseio1 = baseio1 ? baseio1 : 0x160; //if no baseio for board 1 is given, 
+										//then default to 0x160
+	if (! check_for_ts9700(baseio1)) {
+		printk ( KERN_WARNING "ts9700.o: TS-9700 not found at I/O 0x%02x\n", baseio1);
+		devfs_unregister(dev_parent);
+		return -1;
+	}
+
+	ts9700[boardcount++].base_io = baseio1; 	
+
+	if (baseio2 != 0) {
+		if (check_for_ts9700(baseio2)) 
+			ts9700[boardcount++].base_io = baseio2;
+	}
+	if (baseio3 != 0) {
+		if (check_for_ts9700(baseio3)) 
+			ts9700[boardcount++].base_io = baseio3;
+	}
+
+
+	for (i=0;i < boardcount; i++){
+		ts9700_register(i) ; 
+	}
+	
+	printk (KERN_NOTICE "ts9700.o: Technologic Systems %s\n", TS9700_VER);
+	printk ( KERN_NOTICE "ts9700.o: Module Loaded\n");
+	printk (KERN_NOTICE "ts9700's present: %d\n", boardcount);
+	return 0;
+}
+
+module_init (a2d_init);
+module_exit (a2d_remove);
+
+MODULE_AUTHOR("Liberty Young; Technologic Systems");
+MODULE_LICENSE("Dual MPL/GPL");
+MODULE_DESCRIPTION("Driver for TS-9700  ");
+MODULE_SUPPORTED_DEVICE("Technologic Systems 9700 ");
+MODULE_PARM(baseio1, "i");
+MODULE_PARM_DESC(baseio1, "Base I/O port for TS-9700 (default 0x160)");
+MODULE_PARM(baseio2, "i");
+MODULE_PARM_DESC(baseio2, "Base I/O port for TS-9700 (default: no device)");
+MODULE_PARM(baseio3, "i");
+MODULE_PARM_DESC(baseio3, "Base I/O port for TS-9700 (default: no device)");
+
diff -Naur linux-2.4.23/drivers/char/ts9700.h linux-2.4.23_TS_2_5/drivers/char/ts9700.h
--- linux-2.4.23/drivers/char/ts9700.h	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/ts9700.h	Wed Jan 21 10:21:11 2004
@@ -0,0 +1,47 @@
+
+
+#define READY_BIT	0x80	//bit 7
+#define A2D_CHANNELS_MAX	8 /* 0 TO 7 channels on device */
+#define DAC_CHANNELS_MAX	4 
+#define MAX_BOARDS	3 /* max boards that can be installed */
+#define A2D_MINOR_OFFSET 24 //minor number
+#define DAC_MINOR_OFFSET (A2D_MINOR_OFFSET + A2D_CHANNELS_MAX )
+#define TS9700_VER "[01.21.04] Ver 2.01"
+
+/* I/O Map
+ * 			-=AtoD=-
+ * base + 0	Command	R/W
+ * Base + 1	ID	R	(should read 0x97)
+ * Base + 2	LSB	R
+ * Base + 3	MSB	R 	(upper 4 bits =0)
+ *			-=DAC=-
+ * Base + 4	DAC LSB
+ * Base + 5 DAC MSB
+ * Base + 6	DAC status (ro) bit7= Ready
+ * Base + 7	reserved
+
+ * Command register for AtoD
+ * bits 0-2 	selected channel (0 - 7)
+ * bits 3	reserved
+ * bit 4	selected  single or double acquistion
+ * bit 5-6 	reserved
+ * bit 7	ready bit (0 = doing acquistion)
+ *
+ * Command register for DAC
+ * bits 0-11	Value to DAC
+ * bit 12		Fast DAC Mode
+ * bit 13		Write to Buffer Only
+ * bits 14-15	DAC Channel
+ */
+
+#define SINGLE_ACQUIRE	1
+#define DOUBLE_ACQUIRE   0
+
+#define A2D_MAGICNUM 0xD1
+#define TSA2D_CONFIG  _IOW(A2D_MAGICNUM, 1, int)
+#define TSA2D_SHOWCONFIG _IOR(A2D_MAGICNUM, 2, int)
+
+#define FAST_DAC	0x01
+#define SLOW_DAC	0x00
+
+#define DAC_MASK	0x0FFF
diff -Naur linux-2.4.23/drivers/char/ts_486wdt.c linux-2.4.23_TS_2_5/drivers/char/ts_486wdt.c
--- linux-2.4.23/drivers/char/ts_486wdt.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/ts_486wdt.c	Tue Dec  2 18:04:54 2003
@@ -0,0 +1,176 @@
+/*
+ * AMD ELAN SC520 Watch Dog Timer Driver 
+ * (c) Technologic Systems (info@embeddedx86.com)
+ *      author: Liberty Young (liberty@embeddedx86.com)
+ *      
+ * Technologic Systems does not admit any liability nor any warranty for 
+ * this software or any of its use(s). This software is provided AS-IS. 
+ *
+ * 
+ * Version: 0.1.0	December 2001
+ * 	L.Y.	Initial Version
+ *
+ * This code is processor specific. It only works for the AMD Elan SC520 
+ * on-chip Watchdog Timer 
+ * and was developed for use in the Technologic Systems' Elan based Single 
+ * Board Computers
+ *
+ * Portions of this code is based off the W83877F Computer Watchdog Timer 
+ * driver by Scott Jennings
+ */
+
+#ifdef MODVERSIONS
+#include <linux/modversions.h>
+#endif
+
+#include <linux/module.h>
+
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/fs.h>
+#include <linux/devfs_fs_kernel.h>
+#include <asm/io.h>
+
+#include "ts_486wdt.h"
+
+#define LOG_LEVEL KERN_INFO
+
+static unsigned long wdtmrctl;
+
+static int sc520_wdt_ping (void ) 
+{
+	writew (WDT_RESET_KEYSEQ1, (unsigned long) wdtmrctl) ;
+	writew (WDT_RESET_KEYSEQ2, (unsigned long) wdtmrctl) ;
+
+	dprintk("WDT was written to\n");
+	
+	return 1;
+}
+
+
+
+static void sc520_wdt_startup (unsigned long enable)
+{
+
+	union sc520_wdtmrctl_reg wdtregister;
+	wdtregister.wdtmrctl.wdt_ctl = 0XD0;
+
+	if (enable >= 1)
+		wdtregister.wdtmrctl.exp_timeout = (unsigned int) enable;
+	else
+		wdtregister.wdtmrctl.exp_timeout = 0x10;
+	
+	writew ( WDT_EN_KEYSEQ1, (unsigned long) wdtmrctl);
+	writew ( WDT_EN_KEYSEQ2, (unsigned long) wdtmrctl);
+ 	printk (LOG_LEVEL "\nAMD Elan SC520 WDT enable sequence\n");
+	
+	dprintk("\value of wdtmrctl_register: %x\n", wdtregister.wdtmrctl_reg);
+	
+	printk(LOG_LEVEL "\nAMD Elan SC520 WDT started with timeout of %xh \n",			wdtregister.wdtmrctl.exp_timeout);
+	writew (wdtregister.wdtmrctl_reg, (unsigned long) wdtmrctl);
+}
+
+
+/*
+ * /dev/watchdog handling
+ */
+
+static loff_t fop_nollseek (struct file * filep, loff_t offset, int whence)
+{
+	return -ESPIPE;
+}
+
+static ssize_t fop_read (struct file * filep, char * buf, size_t count, loff_t * ppos)
+{
+	return -EINVAL;
+}
+
+static ssize_t fop_write (struct file * filep, const char * buff, size_t count, loff_t *ppos)
+{
+	/*no seeking allowed!*/
+	if (ppos !=&filep->f_pos)
+		return -ESPIPE;
+
+	if (sc520_wdt_ping ())
+		return count;
+	else
+		return EIO;
+}
+
+
+static int fop_open (struct inode * inode, struct file * filep)
+{
+	return 0 ;	
+}
+
+
+
+int fop_ioctl (struct inode *inode, struct file *filep, 
+		unsigned int cmd, unsigned long arg)
+{
+	switch (cmd)
+	{
+		case WDT_PING:
+			if (sc520_wdt_ping())
+				return 0;
+			else
+				return  EIO;
+			break;
+		case WDT_BEGIN:		
+			sc520_wdt_startup(arg);
+			return 0;
+			break;
+		default:
+			return -EINVAL;
+			break;
+	};
+}
+
+struct file_operations sc520_wdt_fops = {
+	/* tagged interface is NOT C compliant; GNU specific */
+	
+	owner: THIS_MODULE,	//2.4.x compliant onl
+	llseek: fop_nollseek,
+	read:	fop_read,
+	write:	fop_write,
+	open: 	fop_open,
+	ioctl:	fop_ioctl,		
+};
+
+int init_module () {
+#ifdef CONFIG_DEVFS_FS
+	if (devfs_register (NULL, "amdwdt", DEVFS_FL_AUTO_DEVNUM, WDT_MAJOR,0,
+			S_IFCHR | S_IRUGO | S_IWUGO, &sc520_wdt_fops, 0) < 0) {
+#else
+	if ( register_chrdev ( WDT_MAJOR, "AMD Elan SC520 WatchDogTimer", 
+				&sc520_wdt_fops) <  0) {
+#endif
+		printk( KERN_WARNING "AMD SC520 Watch Dog Timer failed to registration");
+		return -ENODEV ;
+	} else 
+		wdtmrctl = (unsigned long) ioremap (SC520_WDTMRCTL, sizeof(union sc520_wdtmrctl_reg) );
+
+	printk (LOG_LEVEL "AMD Elan SC520 WatchDogTimer Module loaded\n") ;
+	return 0;
+
+
+}
+
+
+void cleanup_module () {
+#ifdef CONFIG_DEVFS_FS
+	devfs_handle_t de;
+	de = devfs_find_handle (NULL, "amdwdt", 0,0,DEVFS_SPECIAL_CHR,0);
+	devfs_unregister (de);
+#else
+	unregister_chrdev ( WDT_MAJOR, "AMD_SC520_WDT");
+#endif
+	iounmap((void *) wdtmrctl);
+	printk(LOG_LEVEL "WDT module was removed.");
+}
+
+
+
+
diff -Naur linux-2.4.23/drivers/char/ts_486wdt.h linux-2.4.23_TS_2_5/drivers/char/ts_486wdt.h
--- linux-2.4.23/drivers/char/ts_486wdt.h	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/ts_486wdt.h	Tue Dec  2 18:04:54 2003
@@ -0,0 +1,68 @@
+/***********************************************
+ * Technologic Systems	Liberty Young
+ *
+ * This driver only works with linux kernel 2.4.18 or compatible
+ * and only implements the basic features of the AMD SC520 Elan's WDT.
+ * Those features are starting the WDT with a user specified timeout,
+ * and reseting the WDT's counter. Of course, should the counter never
+ * be reseted, the Microprocessor its self will cause a hardware reset.
+ * Advanced features such as an interrupt timeout, of the "soft" timeout,
+ * are not supported.
+ * Though those features kinda defeat the purpose of a WD in an embedded 
+ * system :)
+ *
+ * Time Out Value
+ * A simple equation for figuring out the timeout value is as follows
+ * (from the AMD Elans user's manual):
+ * Duration = 2 ^ (timeout value) / (33 MHz crystal frequency)
+ *
+ * Dec 2001	Created
+ * Nov 2002	Slight modifications
+ *
+ */
+
+
+#define SC520_WDTMRCTL 	0XDFCB0
+#define SC520_WDT_MAGICNUM 0x57		//"W" 
+#define WDT_MAJOR	30
+
+#define WDT_PING  _IOW(SC520_WDT_MAGICNUM, 6, int)
+
+#define WDT_BEGIN	_IO(SC520_WDT_MAGICNUM,0)
+
+#ifdef DEBUG
+#define dprintk(x...) printk(## x)
+#else
+#define dprintk(x...)
+#endif
+
+#define WDT_EN_KEYSEQ1 0x3333
+#define WDT_EN_KEYSEQ2 0XCCCC
+
+#define WDT_RESET_KEYSEQ1 0XAAAA
+#define WDT_RESET_KEYSEQ2 0X5555
+
+/* the WDT's MRCTL register*/
+struct  sc520_wdtmrctl_def {
+	__u8 exp_timeout ;	//exponential timeout
+  	__u8 wdt_ctl ;		//bits that control and set Watchdog timer
+	
+};
+
+union sc520_wdtmrctl_reg {
+	struct sc520_wdtmrctl_def wdtmrctl;
+  	__u16 wdtmrctl_reg;
+};
+
+
+/* the WDT's Count Low register*/
+struct sc520_wdtmrcntl_reg {
+  	__u16 wdt_cntrl ;
+};
+
+/* the WDT's Count High Register*/
+struct sc520_wdtmrcnth_reg {
+	  __u16 wdt_cntrh ;
+};
+
+
diff -Naur linux-2.4.23/drivers/char/ts_keypad.c linux-2.4.23_TS_2_5/drivers/char/ts_keypad.c
--- linux-2.4.23/drivers/char/ts_keypad.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/char/ts_keypad.c	Mon Mar 15 10:25:48 2004
@@ -0,0 +1,330 @@
+/*
+ * (C) Technologic Systems August, 2003
+ * 		Liberty Young :: liberty AT embeddedx86 DOT c o m
+ * Matrix Keypad Device Driver. Provides /dev/TSkeypad
+ *
+ * Technologic Systems does not admit any liability nor any warranty for
+ * this software or any of its use(s). This software is provided AS-IS.
+ *
+ * Version 1.0.0	September 2003	
+ * 		L.Y.	Initial Version
+ */
+
+//TODO: make device multi-readable
+//TODO: limit on buffer size
+
+#include <linux/config.h>
+#include <linux/module.h>
+
+#include <linux/sched.h>
+#include <linux/interrupt.h>
+#include <linux/tqueue.h>
+#include <linux/ioport.h>
+#include <linux/proc_fs.h>
+#include <linux/slab.h>
+#include <linux/fs.h>
+#include <linux/devfs_fs_kernel.h>
+
+#include <asm/io.h>
+#include <asm/uaccess.h>
+
+#define VERSION	"1.0.00"
+#define DFLT_IRQ 4
+#define STOP 1
+#define RUN 0
+#define UNUSED 2
+#define KEYPADPORT 	0x7D
+#define KEYPAD_DATAPORT 0x7E
+
+unsigned char keyMatrix[4][4] = {
+	{ '1','2','3','A' },
+	{ '4','5','6','B' } ,
+	{ '7','8','9','C' },
+	{ '*', '0', '#', 'D'}
+};
+
+struct userdata_s {
+    int len;
+    char *buf;
+    task_queue *queue;
+} userdata ;
+
+
+struct datafifo_s {
+	char pressedkey; 
+	struct datafifo_s *next; 
+} ;
+
+struct head_node {
+	struct datafifo_s *head; 
+	struct datafifo_s *tail; 
+} fifo_head, userfifo_head; 
+
+struct scaninfo_s {
+	int last_scancode;
+	int cols[4];
+} ;
+
+struct keypad_s {
+	task_queue *queue;
+	int stop ;
+	struct scaninfo_s new_data;
+	struct scaninfo_s old_data;
+} keypad_data;
+
+static struct tq_struct read_task; 
+static struct tq_struct keypad_task;
+static devfs_handle_t dev_handle;
+
+void handle_keypress (unsigned char);
+void process_keypaddata (unsigned long);
+void process_read (void *);
+struct scaninfo_s scan_keypad ();
+void service_timer_interrupt (void *);
+void setup_timer_interrupt (); 
+static ssize_t service_readrequest (struct file * , char *, size_t , loff_t *);
+static int keypad_fopen (struct inode *, struct file *);
+static int keypad_fclose (struct inode *, struct file *);
+
+
+struct file_operations tskeypad_fops = {
+	owner: THIS_MODULE,
+	open: keypad_fopen, 
+	read: service_readrequest,
+	release: keypad_fclose,
+} ;
+
+
+DECLARE_WAIT_QUEUE_HEAD (cleanup_waitq);
+DECLARE_WAIT_QUEUE_HEAD (read_waitq);
+
+int add_node (struct head_node *head, struct datafifo_s *node) {
+	if (!node)
+		return -1;
+
+	if (!head->head){
+		head->head = node; 
+		head->tail = node; 
+		return 1; 
+	}
+
+	head->tail->next = node; 
+	head->tail = node; 
+
+	return 1;
+}
+
+int pop_node (struct head_node *head) {
+	struct datafifo_s *oldnode ;
+	
+	oldnode = head->head; 
+	if (head->head->next == NULL) {  	
+		kfree (oldnode); 
+		head->head = NULL;
+		return 0;
+	}
+
+	head->head = head->head->next;
+	kfree(oldnode);
+	return 1; 
+	
+}
+
+void service_timer_interrupt (void *ptr) {
+	unsigned long unused = 0; 
+	struct keypad_s * data= (struct keypad_s *)ptr;
+	if ( data->stop == STOP) {
+		wake_up_interruptible(&cleanup_waitq);
+		return ; 
+	}
+
+	data->new_data = scan_keypad();
+	process_keypaddata(unused);
+	queue_task(&keypad_task, &tq_timer);
+}
+
+struct scaninfo_s scan_keypad () {
+	struct scaninfo_s result;	
+	//set the all rows to high
+	outb (0xEF, KEYPAD_DATAPORT);  //set row 1-A low (header pin 1, dio2_0)
+	result.cols[0] = inb(KEYPAD_DATAPORT) & 0x0F ;	
+	outb (0xDF, KEYPAD_DATAPORT);  //set row 4-B low (header pin 2, dio2_1)
+	result.cols[1] = inb(KEYPAD_DATAPORT) & 0x0F ;
+	outb(0xBF, KEYPAD_DATAPORT); //set row 7-C low (header pin 3, dio2_2)
+	result.cols[2] = inb (KEYPAD_DATAPORT) & 0x0F ;	
+	outb(0x7F, KEYPAD_DATAPORT); //set row *-D low (header pin 4, dio2_3)
+	result.cols[3] = inb (KEYPAD_DATAPORT) & 0x0F ;
+
+	return result ;
+}
+
+void process_keypaddata (unsigned long arg) {
+	int i,j =0 ; 
+	char new_key, old_key;
+
+	struct scaninfo_s incoming= keypad_data.new_data ;
+	struct scaninfo_s *old = &keypad_data.old_data;
+
+	for (i=0; i < 4; i++){
+		new_key = ~incoming.cols[i] & 0x0F;
+		old_key = old->cols[i] ;
+		for (j=0; j<4; j++) { //on each row, 
+			//check the bit if key was previously set
+			if ( (0x01 << j) & old_key) {	
+				//check if new key is NOT set..released
+				if ( !((0x01 << j) & new_key)) {
+					handle_keypress (keyMatrix[j][i]);
+					old->cols[i] ^= (0x01 << j);
+				}
+			} else  
+				if ( (0x01 <<j) & new_key) 	//incoming key is set
+					old->cols[i] = new_key;
+		}
+	}
+}
+
+
+void process_read (void * arg){
+	struct head_node *userfifo = (struct head_node *) arg; 	
+	struct datafifo_s *newnode ; 
+	
+	if (fifo_head.head == NULL) {
+		wake_up_interruptible(&read_waitq);
+		return ; 
+	}
+
+	//unroll datafifo into userfifo (a context process safe buffer)
+    do {
+		newnode = kmalloc (sizeof(*newnode), GFP_ATOMIC);
+		newnode->next=NULL;
+		newnode->pressedkey= fifo_head.head->pressedkey; 
+		add_node (userfifo, newnode);
+	} while (pop_node(&fifo_head)) ;
+	
+	wake_up_interruptible(&read_waitq);
+	return ; 
+}
+
+int keypad_fopen (struct inode *inode, struct file *filep) {
+
+	MOD_INC_USE_COUNT; 
+	setup_timer_interrupt();
+	return 0;
+}
+
+int keypad_fclose (struct inode *inode, struct file *filep){
+	MOD_DEC_USE_COUNT;
+	keypad_data.stop = STOP;
+	return 0;
+}
+
+ssize_t service_readrequest (struct file *filep, char *buf, 
+	size_t count, loff_t *offp) {
+
+	int len =0; 
+	init_waitqueue_head(&read_waitq);
+
+	read_task.routine = process_read; 
+	read_task.data = (void *)&userfifo_head; 
+
+	queue_task (&read_task, &tq_timer);
+	interruptible_sleep_on(&read_waitq);    /* sleep till completion */
+
+	if (!userfifo_head.head) {
+		return len ; 
+	}
+
+	//we now have a data structure that is SAFE to sleep on and 
+	//run within user context;
+	do {
+		len += sprintf(buf+len, "%c", userfifo_head.head->pressedkey);
+	}while ( pop_node(&userfifo_head ) & (len+sizeof(char) < count) );
+
+	return len ;
+}
+
+
+void setup_dioports() {
+	char data;
+	//TODO: error checking
+	request_region(KEYPADPORT, 1, "matrix keypad");  
+	request_region (KEYPAD_DATAPORT, 1, "matrix keypad"); 
+	data = inb(KEYPADPORT);
+	data |= 0x02;
+	outb(data, KEYPADPORT); //pins 0-3 as inputs, pins 4-7 as outputs
+
+}
+
+void setup_userland () {
+	dev_handle = devfs_register(NULL, "SBC/TSKeypad",
+		DEVFS_FL_DEFAULT | DEVFS_FL_AUTO_DEVNUM, 0, 0, 
+		S_IFCHR |S_IRUSR | S_IRGRP | S_IROTH, 
+		&tskeypad_fops, 0);
+}
+
+void setup_timer_interrupt () {
+	keypad_data.stop = RUN;
+	keypad_task.routine = service_timer_interrupt;
+	keypad_task.data = (void *)&keypad_data;
+	queue_task(&keypad_task, &tq_timer);
+}
+
+void handle_keypress (unsigned char key ) {
+	struct datafifo_s *node; 
+	
+	node = kmalloc(sizeof(struct datafifo_s), GFP_ATOMIC);
+	if (!node) 
+			return ; 
+	node->pressedkey= key;
+	node->next = NULL;
+	add_node(&fifo_head, node);
+	return ;
+}
+
+static int tskeypad_init ()  {
+	int i;
+
+	init_waitqueue_head(&cleanup_waitq);
+	fifo_head.head = fifo_head.tail = NULL;
+	userfifo_head.head = userfifo_head.tail = NULL;
+	keypad_data.stop = STOP;
+
+	for (i=0;i<4;i++) {
+		keypad_data.new_data.cols[i]=0;
+		keypad_data.old_data.cols[i]=0;
+	}
+	setup_userland();
+	setup_dioports ();
+	printk ("Technologic Systems Matrix KeyPad Driver V. %s\n", VERSION	);
+	return 0; 
+}
+
+
+void tskeypad_remove () {
+	if (MOD_IN_USE)
+		return;
+
+	if (keypad_data.stop != STOP) {
+		keypad_data.stop = STOP;
+		interruptible_sleep_on(&cleanup_waitq);
+	}
+
+	release_region(KEYPADPORT, 1);
+	release_region(KEYPAD_DATAPORT, 1);
+	devfs_unregister(dev_handle);
+	if (userfifo_head.head) 
+		while ( pop_node(&userfifo_head ) ) {}; //avoid memory leaks
+	
+	if (fifo_head.head) 
+	while (pop_node(&fifo_head)) {} ;
+
+	printk ("TS Matrix Keypad..Exiting\n");
+}
+
+module_init (tskeypad_init);
+module_exit (tskeypad_remove);
+
+MODULE_AUTHOR("Technologic Systems: Liberty Young");
+MODULE_DESCRIPTION("Driver matrix Keypad on TS SBCs)");
+MODULE_LICENSE("GPL");
+
diff -Naur linux-2.4.23/drivers/misc/Makefile linux-2.4.23_TS_2_5/drivers/misc/Makefile
--- linux-2.4.23/drivers/misc/Makefile	Fri Dec 29 15:07:22 2000
+++ linux-2.4.23_TS_2_5/drivers/misc/Makefile	Tue Dec  2 18:05:00 2003
@@ -11,6 +11,9 @@
 
 O_TARGET := misc.o
 
+obj-y	:= ts_sbcinfo.o
+export-objs := ts_sbcinfo.o
+
 include $(TOPDIR)/Rules.make
 
 fastdep:
diff -Naur linux-2.4.23/drivers/misc/ts_sbcinfo.c linux-2.4.23_TS_2_5/drivers/misc/ts_sbcinfo.c
--- linux-2.4.23/drivers/misc/ts_sbcinfo.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/misc/ts_sbcinfo.c	Fri Jun 25 16:33:46 2004
@@ -0,0 +1,302 @@
+/*
+ * ts_sbcinfo.c
+ * Liberty Young	Technologic Systems
+ * spam_filter(email): liberty(at)embeddedx86.com/dot/com
+ * These functions add proc entries to display information
+ * about the SingleBoardComputer
+*/
+
+#include <linux/module.h>
+#include <linux/modsetver.h>
+#include <linux/ioport.h>
+#include <linux/proc_fs.h>
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/ts_sbc.h>
+#include <asm/io.h>
+	
+struct sbc_info ts_sbc;
+
+struct sbc_info *get_sbcinfo ( void ) {
+	struct sbc_info *info;
+	info = NULL;
+
+	info = kmalloc (sizeof(struct sbc_info), GFP_KERNEL);
+	if (!info)
+		return info;
+
+	memset (info, 0, sizeof(struct sbc_info));
+	*info = ts_sbc;
+	return info;
+}
+void remove_sbcinfo ( struct sbc_info *info)
+{
+	kfree (info);
+}
+
+void sbc_flipled ( int direction) { 
+	struct sbc_info *info;
+	unsigned int temp;
+	
+	info = get_sbcinfo();
+	if ( !info)
+		return;
+	switch (info->board_id) {
+		case 5300:
+		case 5400:
+		case 5500:
+			//request region?
+			temp = inb(0x77);
+			temp &= 0x01; //bit 0 is LED bit
+			temp = ~temp & 0x01;
+			outb(temp, 0X77);
+		default:
+			break;
+	}
+
+	remove_sbcinfo (info);
+}
+
+
+EXPORT_SYMBOL(remove_sbcinfo);
+EXPORT_SYMBOL(get_sbcinfo);
+
+static int sbc_setinfo ( struct sbc_info *sbc){
+	unsigned int err, temp;
+	
+	memset( sbc, 0, sizeof(struct sbc_info));
+	err = check_region(0x74,4);
+	if (err < 0)
+		return err;
+	
+	request_region(0x74, 4, "TS-SBC");
+
+	temp = inb(IO_SBCID);
+	if (temp & 0x07) 	//first 3 bits are set?
+		temp &= 0x07;	//Then we have a 3x00 SBC
+		
+	switch (temp) {
+		case TS5600:
+			sbc->board_id = 5600;
+			break;
+		case TS5400:
+			sbc->board_id = 5400;
+			break;
+		case TS5300:
+			sbc->board_id = 5300;
+			break;
+		case TS5500:
+			sbc->board_id = 5500;
+			break;
+		case TS3300:
+			sbc->board_id = 3300;
+			break;
+		case TS3200:
+			sbc->board_id = 3200;
+			break;
+		case TS3100:
+			sbc->board_id = 3100;
+			break;
+		default:
+			sbc->board_id = 0;
+	}
+	//0x75 is Option Code I/O 
+	temp = inb(0x75);
+
+	//check for SRAM option
+	switch (sbc->board_id) {
+		case 5600:
+		case 5300:
+		case 3400:
+		case 3300:
+		case 3200:
+			if (temp & 0x01) 
+				sbc->sram = 1;
+			break;
+		default:
+			break;
+	}
+		
+	//Does board support Analog to Digital support?
+	switch (sbc->board_id) {
+		case 5600:
+			sbc->AtoD = 1;	//board no longer needs PLD changes
+			break;
+		case 5500:
+		case 3300:
+			if (temp & 0x04)
+				sbc->AtoD = 1;
+			break;
+		default:
+			break;
+	}
+	
+	//Is board set up to do RS485 and auto485?
+	//only 5300(rev c), 5400, and 5500 can 
+	//at this point
+	switch ( sbc->board_id) {
+		case 5600:
+		case 5400:
+		case 5500:
+			if ( (temp & 0x02) == 0x02){
+				sbc->RS485 = 1;
+				sbc->auto485 = 1; //they just have it
+			}
+			break;
+		case 5700:
+			if ( (temp & 0x02) == 0x02)
+				sbc->RS485 = 1;
+			break;
+		case 5300:
+			if ( (temp & 0x02) == 0x02)
+				sbc->RS485 = 1;
+
+			if (temp & 0x0A)
+				sbc->auto485 = 1;
+			break;
+		default:
+			sbc->auto485=0;
+			break;
+	}
+
+	/* 0x76 is another Option code */
+	temp = inb(0x76);
+	
+	//check for Industrial Temp
+	if (temp & 0x02)
+		sbc->industrial = 1;
+
+	//check for external reset pin
+	switch (sbc->board_id) {
+		case 5600:
+		case 3400:
+		case 5500:
+			if (temp & 0x01)
+				sbc->extrst = 1;
+			break;
+		case 5700:
+			sbc->extrst = 1;
+		default:
+			sbc->extrst = 0;
+	}
+
+	// 0x77 is Jumpers and LED...bits 1 - 7 are r/o
+	// bit 0 is r /w
+	// 5x00 only
+	
+	temp = inb(0x77);
+
+	switch (sbc->board_id){
+		case 5700:
+		case 5600:
+		case 5500:
+		case 5400:
+		case 5300:
+			sbc->jumpers = (temp & 0xFE); 
+			break;
+		default:
+			sbc->jumpers = 0;
+	}
+
+	release_region(0x74,4);
+
+	return 0;
+}
+
+static int sbc_read_proc(char *page, char **start, off_t off,
+		int count, int *eof, void *data)
+{
+	int len = 0;
+	unsigned int temp;
+
+	len += sprintf(page + len, "Board ID:		TS-%d\n",
+			ts_sbc.board_id );
+	len += sprintf(page + len, "RS485:   		%s\n",
+			ts_sbc.RS485 ? "yes" : "no");
+	len += sprintf(page + len, "AnalogToDigital: 	%s\n",
+			ts_sbc.AtoD ? "yes" : "no");
+	len += sprintf(page + len, "Auto485:  		%s\n",
+			ts_sbc.auto485 ? "yes" : "no");
+	len += sprintf(page + len, "SRAM:   		%s\n",
+			ts_sbc.sram ? "yes" : "no");
+	len += sprintf(page + len, "External Reset:	%s\n",
+			ts_sbc.extrst ? "yes" : "no");
+
+	//Jumper reads are only 5x00
+	switch (ts_sbc.board_id) {
+		case 5600:
+		case 5300:
+		case 5400:
+		case 5500:
+			request_region(0x77,1,"TS-SBC");
+			temp = inb(0x77);
+			len += sprintf(page + len, "JPS: ");
+
+			if (temp & 0x02)
+				len += sprintf(page + len, "JP1 ");
+			if (temp & 0x04)
+				len += sprintf(page + len, "JP2 ");
+			if (temp & 0x08)
+				len += sprintf(page + len, "JP3 ");
+			if (temp & 0x10)
+				len += sprintf(page + len, "JP4 ");
+			if (temp & 0x20)
+				len += sprintf(page + len, "JP5 ");
+			if (temp & 0x80)
+				if (ts_sbc.board_id == 5300)
+					len += sprintf(page + len, "JP8");
+				else
+					len += sprintf(page + len, "JP6");
+			len += sprintf(page +len, "\n");
+			break;
+		default:
+			break;
+	}
+			
+			
+	if (len <= off+count)
+		*eof = 1;
+	*start = page + off;
+	len -= off;
+	if (len > count)
+		len =count;
+	
+	return len;
+}
+
+static void sbc_remove_proc (struct proc_dir_entry *entry) {
+	remove_proc_entry (entry->name,
+			entry->parent);
+	entry = NULL;
+}
+
+static int init_sbc_proc( void ) {
+	struct proc_dir_entry *entry, *parent_dir ;
+	int err; 
+	
+	parent_dir = proc_mkdir("SBC", NULL);
+	if (parent_dir == NULL)
+		return -ENOMEM;
+
+	entry = create_proc_read_entry ("info", S_IRUGO, parent_dir, sbc_read_proc, 0);
+
+	if (entry == NULL) {
+		sbc_remove_proc (entry);
+		printk("ts_sbcinfo.c: unable to create proc entry SBC/info");
+		return -ENOMEM;
+	}
+
+	err = sbc_setinfo (&ts_sbc);
+	if (err < 0 ) {
+		sbc_remove_proc( entry);
+		sbc_remove_proc (parent_dir);
+		printk("ts_sbcinfo.c: Problems determing SBC information..Error %d\n",err);
+		return err;
+	}
+
+	return 0;
+}
+
+
+__initcall(init_sbc_proc);
+
diff -Naur linux-2.4.23/drivers/video/Config.in linux-2.4.23_TS_2_5/drivers/video/Config.in
--- linux-2.4.23/drivers/video/Config.in	Fri Nov 28 11:26:20 2003
+++ linux-2.4.23_TS_2_5/drivers/video/Config.in	Tue Feb 17 13:33:37 2004
@@ -30,6 +30,9 @@
          tristate '  Permedia3 support (EXPERIMENTAL)' CONFIG_FB_PM3
       fi
    fi
+   if [ "$TSYSTEMS" = "y" ]; then
+ 	  tristate ' Technologic Systems TS-LCD1 (monochrome QVGA)' CONFIG_TSLCD1
+   fi
    if [ "$CONFIG_ARCH_ACORN" = "y" ]; then
       bool '  Acorn VIDC support' CONFIG_FB_ACORN
    fi
@@ -275,13 +278,13 @@
       fi
       if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_MAC" = "y" -o \
 	   "$CONFIG_FB_SA1100" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
-	   "$CONFIG_FB_TX3912" = "y" ]; then
+	   "$CONFIG_FB_TX3912" = "y" -o "$CONFIG_TSLCD1" = "y" ]; then
 	 define_tristate CONFIG_FBCON_CFB2 y
 	 define_tristate CONFIG_FBCON_CFB4 y
       else
 	 if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_MAC" = "m" -o \
 	      "$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
-	      "$CONFIG_FB_TX3912" = "m" ]; then
+	      "$CONFIG_FB_TX3912" = "m" -o "$CONFIG_TSLCD1" = "m" ]; then
 	    define_tristate CONFIG_FBCON_CFB2 m
 	    define_tristate CONFIG_FBCON_CFB4 m
 	 fi
diff -Naur linux-2.4.23/drivers/video/Makefile linux-2.4.23_TS_2_5/drivers/video/Makefile
--- linux-2.4.23/drivers/video/Makefile	Mon Aug 25 04:44:42 2003
+++ linux-2.4.23_TS_2_5/drivers/video/Makefile	Tue Feb 17 13:33:38 2004
@@ -40,6 +40,7 @@
 obj-$(CONFIG_PPC)                 += macmodes.o
 endif
 
+obj-$(CONFIG_TSLCD1)			  += ts_lcd1.o
 obj-$(CONFIG_FB_ACORN)            += acornfb.o
 obj-$(CONFIG_FB_AMIGA)            += amifb.o
 obj-$(CONFIG_FB_PM2)              += pm2fb.o fbgen.o
diff -Naur linux-2.4.23/drivers/video/ts_lcd1.c linux-2.4.23_TS_2_5/drivers/video/ts_lcd1.c
--- linux-2.4.23/drivers/video/ts_lcd1.c	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/drivers/video/ts_lcd1.c	Tue Feb 17 13:33:38 2004
@@ -0,0 +1,349 @@
+/*
+ * TS-LCD1 Driver
+ * (c) Technologic Systems (info_AT__embeddedx86__DOT.com)
+ * author: Liberty Young
+ *
+ * Technologic Systems does not admit any liability nor any warranty
+ * for this software or any of its use(s). This software is provided
+ * AS-IS.
+ *
+ * This driver is only for the TS-LCD1 (monochrome QVGA PC/104 
+ * daughter board).
+ *
+ * L.Y. 02.04:  First Release
+ *
+ */
+
+
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/string.h>
+#include <linux/fb.h>
+
+#include <asm/io.h>
+
+#include <video/fbcon.h>
+#include <video/fbcon-cfb2.h>
+#include <video/fbcon-cfb4.h>
+
+#define TSLCD_BASEADDR1	0xA0000
+#define TSLCD_BASEADDR2	0xB0000
+#define TSLCD_DISPIO	0x369 
+#define TSLCD_BASEIO	0x368 
+#define TURN_OFF		0
+#define TURN_ON			1
+#define XRES			320 
+#define YRES			240
+
+#define TSLCD_MEMLEN	38400 // 320*240/(pixels per byte)
+#define CMAP_ENTRIES	4
+#define VERSION			"1.01" 
+
+static struct tslcdfb_info {
+	struct fb_info info;
+	struct fb_fix_screeninfo fix;
+	struct fb_var_screeninfo var; 
+	struct display displ; 
+
+	char * fb_virtaddr;
+	unsigned long fb_physaddr;
+	int currcon; 
+	//struct tslcdb_info *next;
+} tslcd_head;
+
+static u16 default_colval [4] = {0, 1, 2, 0xFF};
+static struct fb_cmap default_tscmap = 
+{0, 4, default_colval, default_colval, default_colval, NULL};
+
+/*
+static void ts8100fb_init_pots (void){
+	//TODO: 
+	//1. schedule on the kernel_timer change_pots
+	
+	return ;
+}
+
+static int  ts8100fb_read_temp (void){
+	//read temperature on TSLCD1 spi bus
+	//call ts8100fb_change_pots()
+	//reschedule self on generic kernel_timer
+	return 0;
+}
+
+static int ts8100fb_change_pots (int temp){
+		//write out to digital pots on the SPI bus
+		//new value based on passed in temperature
+		
+		return 0;
+}
+*/
+static int tslcd_getcolreg (unsigned , unsigned *, unsigned *,
+		unsigned *, unsigned *, struct fb_info *);
+
+static int tslcd_setcolreg(unsigned , unsigned , unsigned ,
+			  unsigned , unsigned ,
+			  struct fb_info *);
+
+static int tslcdfb_get_fix (struct fb_fix_screeninfo *fix, int con, 
+			struct fb_info *info)
+{
+	struct tslcdfb_info *tsinfo = (struct tslcdfb_info*) info;
+
+	memset (fix, 0, sizeof(struct fb_fix_screeninfo));
+	*fix = tsinfo->fix;
+	return 0;
+}
+
+static int tslcdfb_get_var (struct fb_var_screeninfo *var, int con, 
+			struct fb_info *info)
+{
+	struct tslcdfb_info *tsinfo = (struct tslcdfb_info*) info;
+
+	*var = (con < 0) ? tsinfo->displ.var : fb_display[con].var;
+	return 0;
+}
+
+static int tslcdfb_set_var (struct fb_var_screeninfo *var, int con,
+			  struct fb_info *info)
+{
+	//really nothing you can set
+	printk("in set_Var\n");
+	return -EINVAL;
+}
+	
+static int tslcdfb_get_cmap (struct fb_cmap *cmap, int kspc, int con,
+			   struct fb_info *info)
+{
+	struct tslcdfb_info *tsinfo = (struct tslcdfb_info*)info;
+	if (con == tsinfo->currcon)
+		return fb_get_cmap(cmap, kspc, tslcd_getcolreg, info);
+	else if (fb_display[con].cmap.len)
+		fb_copy_cmap(&fb_display[con].cmap, cmap, kspc ? 0 : 2);
+	else
+		fb_copy_cmap(&default_tscmap, cmap, kspc ? 0 : 2);
+	return 0;
+}
+
+static int tslcdfb_set_cmap (struct fb_cmap *cmap, int kspc, int con,
+			   struct fb_info *info)
+{
+	int err;
+	struct tslcdfb_info *tsinfo = (struct tslcdfb_info*)info;
+	printk("in tslcdfb_set_cmap\n");
+
+	if (!fb_display[con].cmap.len) {	/* no colormap allocated? */
+		err = fb_alloc_cmap(&fb_display[con].cmap,CMAP_ENTRIES,0);
+		if (err) return err;
+	}
+	if (con == tsinfo->currcon){			/* current console? */
+		err = fb_set_cmap(cmap, kspc, tslcd_setcolreg, info);
+		return err;
+	}
+	else {
+		fb_copy_cmap(cmap, &fb_display[con].cmap, kspc ? 0 : 1);
+	}
+	return 0;
+}
+
+static struct fb_ops tslcdfb_ops = {
+	owner: 	THIS_MODULE,
+	fb_get_fix: 	tslcdfb_get_fix,
+	fb_get_var:		tslcdfb_get_var,
+	fb_set_var:		tslcdfb_set_var, 
+	fb_get_cmap:	tslcdfb_get_cmap,
+	fb_set_cmap:	tslcdfb_set_cmap,
+};
+
+static void toggle_backlight (int mode)
+{
+	int i = inb (TSLCD_DISPIO);
+	if (mode)
+		i |= 0x01;
+	else
+		i &= 0xFE;
+
+	outb(i, TSLCD_DISPIO);
+	return ;		
+}
+	
+static void toggle_power (int mode)
+{
+	int i = inb (TSLCD_DISPIO);
+	if (mode)
+		i |= 0x02;
+	else
+		i &= 0xFD;
+
+	outb(i, TSLCD_DISPIO);
+	return ;		
+}
+		
+	
+static int tslcd_getcolreg (unsigned regno, unsigned *red, unsigned *green,
+		unsigned *blue, unsigned *transp, struct fb_info *info)
+{
+	if (regno >= CMAP_ENTRIES)
+		return 1;
+
+	printk("getcolre regno:%d\n", regno);
+	*red = default_colval[regno];
+	*green =  default_colval[regno];
+	*blue = default_colval[regno];
+	*transp = 0;
+	return 0;
+}
+
+static int tslcd_setcolreg (unsigned regno, unsigned red, unsigned green,
+			  unsigned blue, unsigned transp,
+			  struct fb_info *info)
+{
+	if (regno > CMAP_ENTRIES)
+		return 1;
+	return 0;
+}
+ 
+
+/*
+static void do_install_cmap(int con, struct fb_info *info)
+{
+	struct tslcdfb_info *tsinfo = (struct tslcdfb_info *)info;
+	if (con != tsinfo->currcon)
+		return;
+	if (fb_display[con].cmap.len)
+		fb_set_cmap(&fb_display[con].cmap, 1, tslcd_setcolreg, info);
+	else
+		fb_set_cmap(fb_default_cmap(CMAP_ENTRIES), 1, tslcd_setcolreg,
+			    info);
+}
+*/
+static int tslcdfb_switch (int con, struct fb_info *info)
+{
+	struct tslcdfb_info *tsinfo = (struct tslcdfb_info *) info;
+	int currcon = tsinfo->currcon; 
+
+	if (fb_display[currcon].cmap.len)
+		fb_get_cmap(&fb_display[currcon].cmap, 1, tslcd_getcolreg, info);
+	
+	tsinfo->currcon = con; 
+	return 1;
+
+}
+
+static int tslcdfb_updatevar (int con, struct fb_info *info)
+{
+		return -EINVAL;
+}
+
+/* 0 unblank, 1 blank, 2 no vysnc, 3 no hysnc, 4 off */
+static void tslcdfb_blank (int blank, struct fb_info *info)
+{
+	switch (blank) {
+		case 0: 
+			toggle_power(1);
+			toggle_backlight(1);
+			break;
+		case 1:
+			toggle_backlight(0);
+			/* need way to set screen to all black */
+			break;
+		case 4:
+			toggle_backlight(0);
+			toggle_power (1);
+			break;
+	}
+
+}
+
+void tslcd_init_fix (struct tslcdfb_info *tsinfo)
+{
+	strcpy(tsinfo->fix.id, "TS-LCD1");
+	tsinfo->fix.smem_start = tsinfo->fb_physaddr;
+	tsinfo->fix.smem_len = TSLCD_MEMLEN;
+	tsinfo->fix.type = FB_TYPE_PACKED_PIXELS;
+	tsinfo->fix.visual = FB_VISUAL_MONO10;
+	tsinfo->fix.line_length = 160;
+}
+
+void tslcd_init_disp (struct tslcdfb_info *tsinfo)
+{
+
+	tsinfo->displ.var = tsinfo->var;
+	tsinfo->displ.screen_base = tsinfo->fb_virtaddr;
+	tsinfo->displ.visual = tsinfo->fix.visual;
+	tsinfo->displ.type = tsinfo->fix.type;
+	tsinfo->displ.line_length = tsinfo->fix.line_length;
+	tsinfo->displ.can_soft_blank = 1;
+	tsinfo->displ.dispsw = &fbcon_cfb4;
+	
+}
+		
+void tslcd_init_info (struct tslcdfb_info *tsinfo) 
+{
+	strcpy(tsinfo->info.modename, tsinfo->fix.id);
+	tsinfo->info.node = -1;
+	tsinfo->info.fbops = &tslcdfb_ops;
+	tsinfo->info.disp = &tsinfo->displ;
+	tsinfo->info.switch_con = &tslcdfb_switch;
+	tsinfo->info.updatevar = &tslcdfb_updatevar;
+	tsinfo->info.blank = &tslcdfb_blank;
+	tsinfo->info.flags = FBINFO_FLAG_DEFAULT;
+}
+
+void tslcd_init_var (struct tslcdfb_info *tsinfo)
+{
+	tsinfo->var.xres = tsinfo->var.xres_virtual = XRES;
+    tsinfo->var.yres = tsinfo->var.yres_virtual = YRES;
+    tsinfo->var.xoffset = tsinfo->var.yoffset = 0;
+    tsinfo->var.bits_per_pixel = 4;
+    tsinfo->var.grayscale = 1;
+    tsinfo->var.height = tsinfo->var.width = 0;
+    tsinfo->var.vmode = FB_VMODE_NONINTERLACED;
+    //  tsinfo->var.pixclock = ; ???? pixel clock in pico-seconds
+    //  tsinfo->left_margin =
+    //  tsinfo->var.right_margin = ;
+    //  tsinfo->upper_margin = p->var.lower_margin = ;
+    //  set hsync and vsync?
+}
+
+int __init tslcdfb_init (void)
+{
+
+	memset(&tslcd_head, 0, sizeof(tslcd_head));
+	tslcd_head.fb_physaddr = TSLCD_BASEADDR1;
+	tslcd_head.fb_virtaddr = ioremap(tslcd_head.fb_physaddr, TSLCD_MEMLEN);
+	tslcd_head.currcon = -1;
+
+	if (!tslcd_head.fb_virtaddr){
+		printk(KERN_ERR "tslcd.o: unable to map video memory\n");
+		return -ENOMEM;
+	}
+	toggle_power(1);
+	toggle_backlight(1);
+
+	tslcd_init_info (&tslcd_head);
+	tslcd_init_fix (&tslcd_head);
+	tslcd_init_var (&tslcd_head);
+	tslcd_init_disp (&tslcd_head);
+
+	register_framebuffer (&tslcd_head.info );
+	printk("ts_lcd1.o loaded, version %s\n", VERSION);
+	
+	return 0;
+
+}
+
+
+static void __exit tslcdfb_exit(void)
+{
+    unregister_framebuffer(&tslcd_head.info);
+    iounmap(tslcd_head.fb_virtaddr);
+}
+
+#ifdef MODULE
+MODULE_LICENSE("GPL");
+module_init(tslcdfb_init);
+module_exit(tslcdfb_exit);
+#endif
+
+
diff -Naur linux-2.4.23/include/asm-i386/i387.h linux-2.4.23_TS_2_5/include/asm-i386/i387.h
--- linux-2.4.23/include/asm-i386/i387.h	Fri Aug  2 17:39:45 2002
+++ linux-2.4.23_TS_2_5/include/asm-i386/i387.h	Mon Jun 21 13:32:26 2004
@@ -32,9 +32,11 @@
 		save_init_fpu( tsk ); \
 } while (0)
 
+/* backport of infamous FPU exception bug fixed in 2.6.7, 2.4.27
+ * see http://linux.bkbits.net:8080/linux-2.4/gnupatch@40cdf6f8V7sOe5n96HA5Q7r9uDRvJQ for implemented patch */
 #define clear_fpu( tsk ) do { \
 	if ( tsk->flags & PF_USEDFPU ) { \
-		asm volatile("fwait"); \
+		asm volatile("fnclex; fwait"); \
 		tsk->flags &= ~PF_USEDFPU; \
 		stts(); \
 	} \
diff -Naur linux-2.4.23/include/asm-i386/ioctls.h linux-2.4.23_TS_2_5/include/asm-i386/ioctls.h
--- linux-2.4.23/include/asm-i386/ioctls.h	Mon Aug 25 04:44:43 2003
+++ linux-2.4.23_TS_2_5/include/asm-i386/ioctls.h	Tue Dec  2 18:05:03 2003
@@ -69,6 +69,9 @@
 #define TIOCSHAYESESP   0x545F  /* Set Hayes ESP configuration */
 #define FIOQSIZE	0x5460
 
+#define TIOC_SBCC485	_IOW('T',0x70,int) /*TS SBC RTS/485 mode Clear */
+#define TIOC_SBCS485	_IOW('T',0x71, int) /*TS SBC RTS/485 mode Set */
+
 /* Used for packet mode */
 #define TIOCPKT_DATA		 0
 #define TIOCPKT_FLUSHREAD	 1
diff -Naur linux-2.4.23/include/asm-i386/timex.h linux-2.4.23_TS_2_5/include/asm-i386/timex.h
--- linux-2.4.23/include/asm-i386/timex.h	Thu Nov 28 16:53:15 2002
+++ linux-2.4.23_TS_2_5/include/asm-i386/timex.h	Tue Dec  2 18:05:03 2003
@@ -11,6 +11,10 @@
 
 #ifdef CONFIG_MELAN
 #  define CLOCK_TICK_RATE 1189200 /* AMD Elan has different frequency! */
+#elif  CONFIG_TS_M386
+#  define CLOCK_TICK_RATE 1000000 /*Technologic Systems's 386EX SBCs have own frequency */
+#elif CONFIG_TS_M486
+#  define CLOCK_TICK_RATE 1192809 /* the Elan SC520 also has its own frequency*/
 #else
 #  define CLOCK_TICK_RATE 1193180 /* Underlying HZ */
 #endif
diff -Naur linux-2.4.23/include/linux/a2d_driver.h linux-2.4.23_TS_2_5/include/linux/a2d_driver.h
--- linux-2.4.23/include/linux/a2d_driver.h	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/include/linux/a2d_driver.h	Tue Dec  2 18:05:04 2003
@@ -0,0 +1,43 @@
+/* a2d_driver.h
+ * Technologic Systems
+ * Liberty Young	Liberty/at/embeddedx86/dot/com
+ * 12.5.2002
+ *
+ * This driver is for any 3x00, 5x00 series Single Board Computers
+ * with the Analog to Digital option installed in the PLD and using 
+ * the MAXIM 197 AtoD chip. 
+ *
+ * No warranty is implied, or given, with this device driver.
+ */
+#define A2D_PORT  	0x196
+
+#ifdef CONFIG_TS_M386
+# 	define A2D_BUSY_PORT 	0xF860
+#	define A2D_BUSY_BIT	0x20
+#elif CONFIG_TS_M486
+#	define A2D_BUSY_PORT	0x195
+#	define A2D_BUSY_BIT	0x01
+#endif
+
+#define CHANNELS_MAX	8 /* 0 TO 7 channels on device */
+#define A2D_VER "12.8.2002 Ver 1.02"
+
+#define A2D_MAJOR 242
+/* Control bits of a2d command
+ * bits 0-2 	selected channel (0 - 7)
+ * bits 3	uni/bipolar ( 0 = unipolar (ie 0 to +5V)
+ * 			    ( 1 = bipolar (ie -5 to +5V)
+ * bit 4	selected range (0 = 5v range , 1 = 10V range)
+ * bit 5-7 	padded zero (unused)
+ */
+
+#define A2D_BIPOLAR 0x08
+#define A2D_UNIPOLAR 0x00
+#define A2D_RANGE1  0x00 //0 TO 5V range
+#define A2D_RANGE2  0x10 //0 TO 10V range
+
+#define A2D_MAGICNUM 0xD1
+#define TSA2D_CONFIG  _IOW(A2D_MAGICNUM, 1, int)
+#define TSA2D_SHOWCONFIG _IOR(A2D_MAGICNUM, 2, int)
+
+
diff -Naur linux-2.4.23/include/linux/blk.h linux-2.4.23_TS_2_5/include/linux/blk.h
--- linux-2.4.23/include/linux/blk.h	Fri Aug  2 17:39:45 2002
+++ linux-2.4.23_TS_2_5/include/linux/blk.h	Tue Dec  2 18:05:04 2003
@@ -63,6 +63,10 @@
 extern int rd_prompt;		/* 1 = prompt for ramdisk, 0 = don't prompt */
 extern int rd_image_start;	/* starting block # of image */
 
+#ifdef CONFIG_BLK_DEV_MSYS_DOC
+extern int fl_init(void);
+#endif /* CONFIG_BLK_DEV_MSYS_DOC */
+
 #ifdef CONFIG_BLK_DEV_INITRD
 
 #define INITRD_MINOR 250 /* shouldn't collide with /dev/ram* too soon ... */
diff -Naur linux-2.4.23/include/linux/major.h linux-2.4.23_TS_2_5/include/linux/major.h
--- linux-2.4.23/include/linux/major.h	Fri Jun 13 07:51:38 2003
+++ linux-2.4.23_TS_2_5/include/linux/major.h	Tue Dec  2 18:05:04 2003
@@ -137,6 +137,8 @@
 
 #define JSFD_MAJOR	99
 
+#define FLASH_MAJOR	100	/* /dev/msys/fl... */
+
 #define PHONE_MAJOR	100
 
 #define LVM_CHAR_MAJOR	109	/* Logical Volume Manager */
diff -Naur linux-2.4.23/include/linux/ts_sbc.h linux-2.4.23_TS_2_5/include/linux/ts_sbc.h
--- linux-2.4.23/include/linux/ts_sbc.h	Wed Dec 31 17:00:00 1969
+++ linux-2.4.23_TS_2_5/include/linux/ts_sbc.h	Fri Jun 25 16:33:46 2004
@@ -0,0 +1,41 @@
+/*
+ * ts_sbc.h
+ * Liberty Young	Technologic Systems
+ * spam_filter(email): liberty(at)embeddedx86.com/dot/com
+*/
+
+#define TS5300	0x50
+#define TS5400  0x40
+#define TS5500  0x60
+#define TS5600	0x20
+#define TS5700	0x70
+#define TS3400  4
+#define TS3300  3
+#define TS3200  2
+#define TS3100  1
+#define IO_SBCID 0x74
+
+
+#ifndef TSYSTEMS
+# error	"compilation without -DTSYSTEMS (or the like)"
+#endif
+
+
+#define AUTO485 1
+#define RTSMODE 2
+/*describes the SBC and Options installed*/
+struct sbc_info {
+	int  board_id;
+	char RS485;
+	char AtoD;
+	char RS422;
+	char Ethernet;
+	char auto485;
+	char extrst; 	//external reset
+	char sram; 	
+	char industrial;
+	char jumpers;
+};
+	
+extern struct sbc_info *get_sbcinfo (void ) ;
+extern void remove_sbcinfo (struct sbc_info *info);
