From 0372dcee81af7c9c1479fa19528223c9ab832fc8 Mon Sep 17 00:00:00 2001 From: Tiberiu Chibici Date: Tue, 14 Sep 2021 18:50:50 +0300 Subject: [PATCH] [GOOD] BUILD 0.1.0.470 DATE 8/30/2011 AT 6:40 PM ==================================================== Mainly changed: HAL.VFS + Designed virtual file system + Completed the VFS + Added verbose mode for VFS + Updated shell script, now shows build number when building ? TODO: Implement one file system (most likely FAT12) ? TODO: Mount floppy device --- Build/loader.o | Bin 1472 -> 1472 bytes Build/main.o | Bin 1208 -> 1264 bytes Kernel/debug/commands.c | 2 +- Kernel/drivers/drivers.c | 2 +- Kernel/hal/filesys/fat12.c | 8 + Kernel/hal/hal.c | 4 + Kernel/hal/{sysinfo.c => reboot.c} | 6 +- Kernel/hal/vfs.c | 208 +++++++++++++++++++++++--- Kernel/include/fileio.h | 136 +++++++++++------ Kernel/include/memory-add.h~ | 96 ------------ Kernel/include/memory.h | 1 + Kernel/include/memory.h~ | 29 ---- Kernel/include/settings.h~ | 37 ----- Kernel/include/stdlib.h | 2 + Kernel/include/stdlib.h~ | 69 --------- Kernel/include/storage.h | 50 ------- Kernel/include/time.h | 4 +- Kernel/include/version.h | 2 +- Kernel/include/version.h~ | 1 - Kernel/library/memory/memory_alloc.c | 9 ++ Kernel/library/memory/memory_alloc.c~ | 87 ----------- Kernel/library/memory/memory_info.c~ | 48 ------ Kernel/library/memory/memory_init.c~ | 92 ------------ Kernel/library/stdlib/str_ops.c | 17 +++ Kernel/library/time.c | 4 +- Kernel/main.c | 6 +- build.sh~ => build-linux.sh | 1 + build.sh | 34 ++--- build/clock.o | Bin 936 -> 1008 bytes build/cmos.o | Bin 2616 -> 2936 bytes build/console-base.o | Bin 2520 -> 2924 bytes build/console-in.o | Bin 2720 -> 3052 bytes build/console-out.o | Bin 2572 -> 2904 bytes build/console.o | Bin 8964 -> 9680 bytes build/convert_ops.o | Bin 1736 -> 2020 bytes build/crash.o | Bin 4120 -> 4212 bytes build/ctype.o | Bin 1108 -> 1172 bytes build/dma.o | Bin 1852 -> 2124 bytes build/drivers.o | Bin 1476 -> 1596 bytes build/fat12.o | Bin 0 -> 549 bytes build/floppy.o | Bin 6496 -> 7228 bytes build/gdt.o | Bin 1364 -> 1500 bytes build/hal.o | Bin 2008 -> 2120 bytes build/idt.o | Bin 1088 -> 1216 bytes build/irq-asm.o | Bin 1024 -> 1072 bytes build/irq.o | Bin 2256 -> 2396 bytes build/isrs-asm.o | Bin 1872 -> 1920 bytes build/isrs.o | Bin 3792 -> 3924 bytes build/keyboard.o | Bin 4844 -> 5064 bytes build/mem-heap.o | Bin 3168 -> 3620 bytes build/mem-paging.o | Bin 2048 -> 2228 bytes build/mem-phys.o | Bin 2396 -> 2748 bytes build/mem_ops.o | Bin 876 -> 1032 bytes build/memory_alloc.o | Bin 2468 -> 2980 bytes build/memory_free.o | Bin 1260 -> 1340 bytes build/memory_info.o | Bin 1168 -> 1376 bytes build/memory_init.o | Bin 2284 -> 2500 bytes build/mouse.o | Bin 2564 -> 2728 bytes build/num_ops.o | Bin 806 -> 932 bytes build/ord_arr.o | Bin 1796 -> 2216 bytes build/pic.o | Bin 724 -> 776 bytes build/pit.o | Bin 828 -> 900 bytes build/reboot.o | Bin 0 -> 1004 bytes build/stdio.o | Bin 1324 -> 1480 bytes build/storage.o | Bin 763 -> 824 bytes build/str_ops.o | Bin 852 -> 1284 bytes build/sysinfo.o | Bin 940 -> 0 bytes build/time.o | Bin 2240 -> 2692 bytes build/vfs.o | Bin 0 -> 4360 bytes change.log | 22 ++- change.log~ | 24 --- filelistC.txt | 10 +- kernel.bin | Bin 48534 -> 57368 bytes luxos.img | Bin 1474560 -> 1474560 bytes scripts/version.txt | 2 +- 75 files changed, 377 insertions(+), 636 deletions(-) create mode 100644 Kernel/hal/filesys/fat12.c rename Kernel/hal/{sysinfo.c => reboot.c} (81%) delete mode 100644 Kernel/include/memory-add.h~ delete mode 100644 Kernel/include/memory.h~ delete mode 100644 Kernel/include/settings.h~ delete mode 100644 Kernel/include/stdlib.h~ delete mode 100644 Kernel/include/version.h~ delete mode 100644 Kernel/library/memory/memory_alloc.c~ delete mode 100644 Kernel/library/memory/memory_info.c~ delete mode 100644 Kernel/library/memory/memory_init.c~ rename build.sh~ => build-linux.sh (99%) create mode 100644 build/fat12.o create mode 100644 build/reboot.o delete mode 100644 build/sysinfo.o create mode 100644 build/vfs.o delete mode 100644 change.log~ diff --git a/Build/loader.o b/Build/loader.o index b125264426c4677cdaaab3874e4ea04e8e3b8c90..c47ad8b1666814c753ccffa036891f948d395fa2 100644 GIT binary patch delta 13 UcmX@WeSmubBO}XZM#lXt03FT)wEzGB delta 13 UcmX@WeSmubBcsA*M#lXt03LP&(EtDd diff --git a/Build/main.o b/Build/main.o index 596f6bd21cb00be95664e0454470f3c6d53c2253..c9b39ef13ba72d4f7e264a4996d2eecdc2c17ae2 100644 GIT binary patch literal 1264 zcma)5O=}cE5UrUVHHquG25(t#0;@#CCJ9RfFCr7&1QHKw^tg0(TQfKxv8NF?DjsrC zJbU-(|4{HR_!DyQ;$2wl&2+otUbLY5)vK$+w^jYpH+O?1t}yZmCbVx<_d}{@VFMx058)N{+@Nd|;$DarQJE=2?*^ zN(iyAK-7<-o8e0T-rm))CpN?y(M4OJcXXe;*K^)dGYH;sZLoLj*)3qy3SYGXB2kP} zBlj7NuJFKVS|!4$mxjbh8cAZmC`jlW1m0_+M`D<#smj;|&gx+BM9Wm!JpTii*a@RM zZJjZ{vOdeX!cvxapSL>T6CZ3b@({}V@SEdx+42S>#8mKSck!;V1^)l?TV)^Ax6TWK zc*~_$ZHR|+)C`0_Hp&ba!BK^`Wj!>;m+OI5 z`p)YS6f4LH0lJ*vZNAiI<5|`b2YK7Pkh2~yGT?yznT=;y@Qfq(xg;PnjP zuIuVngHF}2^Eo=6N`qeuYKCC$i`?D$l2se}aBm$J@MS1gz&9LW1nC{ zr83UMke&^oP*nYjrQkeI>3Mwm#Q`fYJjEY2?t@?d+e;6x%D#zuA-jV^G< zd0Iuns27GrUm8iGn`I<)3Ig?Y(I(ML<5(puNm8T4>ch@_W@K;o(3$^5E^rbho3NsL zjDht5P3xa$JZ62sUV~`O#xR~~Ug=AW;B{`Ww*`!Q=wMg4;b#7)yT%&Kx5y2K`7Y*O z(P2L1?^=W&_JJGLa0U$;_6&6P#W@yT?lg0^H>99@0>_%u0c$SE_?1bMgZv2c^I?BY zZm3;(zMo89am<;U&vA$4c!Pe8TpW1#<%5@30C&|cM%C#^c{t~fR`|sDw*;Iy!<9N! zQs5ltDtxZOZ&mnmg>O}OzrvqYIK?tdM2~j2;n229`n0LyR1Y7icyB!kO(>)ArJ|tt zfI+0BrZpLrQp-Agu5`AZ@YjeUJG_*)Lm%tVjOW?JYHYYSkGqqMHNModz-gix;PK)u Y)=m&z1!vI>Mvu$91kS~~1LVT}0X|KioB#j- diff --git a/Kernel/debug/commands.c b/Kernel/debug/commands.c index 06ea81d..7393ead 100644 --- a/Kernel/debug/commands.c +++ b/Kernel/debug/commands.c @@ -54,7 +54,7 @@ void CommandTime() }; - Time time = TimeConvertToTime(TimeGetInternalTime()); + Time time = ConvertTimeSystemToTime(TimeGetInternalTime()); ConsoleWrite ("Current time: "); ConsoleWrite ("%#%d:%d%d:%d%d.%d%d%d\n", Color(0,ColorLightGreen) ,(int)time.Hour, diff --git a/Kernel/drivers/drivers.c b/Kernel/drivers/drivers.c index 2f03bae..fd4e1ff 100644 --- a/Kernel/drivers/drivers.c +++ b/Kernel/drivers/drivers.c @@ -15,7 +15,7 @@ void DriversInstall_Clock() Time time; CmosGetRTC(&time); - TimeSetInternalTime(TimeConvertToTimeSystem(time)); + TimeSetInternalTime(ConvertTimeToTimeSystem(time)); Log("%#[Drivers] %#Read RTC time: ", ColorWhite, ColorLightGray); Log("%#%u/%u/%u %u:%u:%u.%u\n", ColorLightCyan, time.Month, time.Day, diff --git a/Kernel/hal/filesys/fat12.c b/Kernel/hal/filesys/fat12.c new file mode 100644 index 0000000..df8ad6d --- /dev/null +++ b/Kernel/hal/filesys/fat12.c @@ -0,0 +1,8 @@ +/* + * fat12.c + * + * Created on: Aug 29, 2011 + * Author: Tiberiu + */ + + diff --git a/Kernel/hal/hal.c b/Kernel/hal/hal.c index db51fe8..a290d7d 100644 --- a/Kernel/hal/hal.c +++ b/Kernel/hal/hal.c @@ -8,6 +8,7 @@ #include "keyboard/keyboard.h" #include "mouse/mouse.h" +#include #include void HalInitialize() @@ -32,4 +33,7 @@ void HalInitialize() // Install mouse driver MouseInstall(); Log("%#[HAL] %#Installed mouse driver\n", ColorYellow, ColorLightGreen); + + // Install VFS + VfsInstall(); } diff --git a/Kernel/hal/sysinfo.c b/Kernel/hal/reboot.c similarity index 81% rename from Kernel/hal/sysinfo.c rename to Kernel/hal/reboot.c index 8529f4c..71733d8 100644 --- a/Kernel/hal/sysinfo.c +++ b/Kernel/hal/reboot.c @@ -8,13 +8,9 @@ */ #include -#include #include -#include - -#include <../drivers/cmos/cmos.h> - #include "keyboard/keyboard.h" + void SystemReboot() { Log("Rebooting system...\n"); diff --git a/Kernel/hal/vfs.c b/Kernel/hal/vfs.c index 23000df..9f9f248 100644 --- a/Kernel/hal/vfs.c +++ b/Kernel/hal/vfs.c @@ -1,40 +1,208 @@ -#include -#include +#include +#include +#include +#include #define MAX_FS_COUNT 64 +#define BAD 0xffffffff -uint32 FsRead(FsNode *node, uint32 offset, uint32 size, uint8 *buffer) +FileSystem* fsArray; +uint32 fsCount; + +MountPoint* mpArray; +uint32 mpCount; +uint32 mpAllocated; + +#define LogVfs(...) { Log("%#[Vfs] ", ColorLightBlue); Log(__VA_ARGS__); } +#define ErrorVfs(...) { Error("%#[Vfs] ", ColorLightBlue); Error(__VA_ARGS__); } + +void VfsInstall () { - if (node->Read != NULL) return node->Read(node, offset, size, buffer); - return NULL; + fsArray = (FileSystem*) kmalloc(MAX_FS_COUNT * sizeof(FileSystem)); + fsCount = 0; + + mpArray = (MountPoint*) kmalloc(32 * sizeof(MountPoint)); + mpCount = 0; + mpAllocated = 32; + + LogVfs("%#VFS now in business.\n", ColorLightGreen); } -uint32 FsWrite(FsNode *node, uint32 offset, uint32 size, uint8 *buffer) +uint8 VfsInstallFs (FileSystem* fs) { - if (node->Write != NULL) return node->Write(node, offset, size, buffer); - return NULL; + if (fsCount >= MAX_FS_COUNT) { + ErrorVfs("%#Failed to install file system '%s': FS count reached.\n", ColorLightRed, fs->Name); + return 0; + } + + memcpy(&fsArray[fsCount], fs, sizeof(FileSystem)); + fsArray[fsCount].Id = fsCount; + + ++fsCount; + LogVfs("Installed file system %#.\n", ColorWhite, fs->Name); + return 1; } -void FsOpen(FsNode *node, uint8 read, uint8 write) +uint32 VfsFindDevice (string dev) { - if (node->Open != NULL) return node->Open(node, read, write); + uint32 i; + for (i = 0; i < mpCount; i++) + if (strcmp(dev, mpArray[i].Name) == 0) + return i; + + return BAD; } -void FsClose(FsNode *node) + +// Returns mount point index, removes dev name from path +uint32 VfsParsePath (string* path) { - if (node->Close != NULL) return node->Close(); + // Sanity check + if (!path || !(*path)) return BAD; + + string dev = *path, p = strchr(*path, ':'); + if (p == NULL) return BAD; // invalid path + + // Split string + *path = p+1; *p = '\0'; + + return VfsFindDevice(dev); } -DirectoryEntry *FsReadDir(FsNode *node, uint32 index) +uint8 VfsMount (string Name, DevReadRoutine R, DevWriteRoutine W, uint32 BlockSize) { - if (node->ReadDir != NULL && (node->Flags&7) == FsDirectory) - return node->ReadDir(node, index); - return NULL; + uint32 i, fsId = BAD, mpIndex = BAD; + + // Try to figure out the file system + for (i = 0; i < fsCount && fsId == BAD; i++) + if (fsArray->Detect && fsArray->Detect(R, BlockSize)) fsId = i; + + if (fsId == BAD) { + ErrorVfs("%#Failed to mount device %s: no file system found.\n", ColorLightRed, Name) + return 0; // No file system, no good + } + + // Try to find an empty slot to fill + for (i = 0; i < mpCount && mpIndex == BAD; i++) + if (mpArray[i].Id == BAD) mpIndex = i; + + // No empty slots? + if (mpIndex == BAD) + { + // Make sure we have enough space + if (mpCount == mpAllocated) { + mpAllocated += 4; + mpArray = kmrealloc(mpArray, mpAllocated * sizeof(MountPoint)); + } + + mpIndex = mpCount++; + } + + // Add to mount point list, set up data + mpArray[mpIndex].Id = mpIndex; + mpArray[mpIndex].FsId = fsId; + mpArray[mpIndex].BlockSize = BlockSize; + mpArray[mpIndex].Read = R; + mpArray[mpIndex].Write = W; + + // Change name if it already exists + uint32 find = VfsFindDevice(Name); + if (find != BAD) + { + uint32 len = strlen(Name); + uint8 success = 0; + Name[len+1] = '\0'; + + // Try to find a number index + for (find = '0'; find <= '9' && !success; find++) + { + Name[len] = find; + if (VfsFindDevice(Name) == BAD) success = 1; + } + + // What? Haven't found anything yet? Try the alphabet + for (find = 'a'; find <= 'z' && !success; find++) + { + Name[len] = find; + if (VfsFindDevice(Name) == BAD) success = 1; + } + + // Still nothing? How in the world is this even possible ?!?!?! + if (!success) return 0; + } + + memcpy(mpArray[mpCount].Name, Name, sizeof(char) * 128); + + LogVfs("Mounted device %#%s", ColorWhite, Name); + return 1; } -FsNode *FsFindDir(FsNode *node, char *name) +void VfsUnmount (uint32 dev_id) { - if (node->FindDir != NULL && (node->Flags&7) == FsDirectory) - return node->FindDir(node, name); - return NULL; + mpArray[dev_id].Id = BAD; + mpCount--; +} + +// Returns pointer to FILE structure that was inputed if success, null otherwise +FILE* VfsOpen (FILE* file, string path) +{ + if (!file) return NULL; + + // Parse string + uint32 dev = VfsParsePath(&path); + file->DeviceId = dev; + + // Device not found, or Open routine doesn't exist + if (dev == BAD || !fsArray[mpArray[dev].FsId].Open) return NULL; + + // Ask the FS to do the 'opening' + return fsArray[mpArray[dev].FsId].Open(&mpArray[dev],file,path); +} + +DirectoryEntry* VfsTest (string path) +{ + // Parse string + uint32 dev = VfsParsePath(&path); + + // Device not found, or Open routine doesn't exist + if (dev == BAD || !fsArray[mpArray[dev].FsId].Test) return NULL; + + // Ask the FS to do the 'opening' + return fsArray[mpArray[dev].FsId].Test(&mpArray[dev],path); +} + +FILE* VfsClose (FILE* file) +{ + if (!file) return NULL; + MountPoint* mp = &(mpArray[file->DeviceId]); + + if (!fsArray[mp->FsId].Close) return NULL; + return fsArray[mp->FsId].Close(mp,file); +} + +uint32 VfsRead (FILE* file, uint32 bsz, uint32 n, uint8* buffer) +{ + if (!file) return NULL; + MountPoint* mp = &(mpArray[file->DeviceId]); + + if (!fsArray[mp->FsId].Read) return NULL; + return fsArray[mp->FsId].Read(mp, file, bsz, n, buffer); +} + +uint32 VfsWrite (FILE* file, uint32 bsz, uint32 n, uint8* buffer) +{ + if (!file) return NULL; + MountPoint* mp = &(mpArray[file->DeviceId]); + + if (!fsArray[mp->FsId].Write) return NULL; + return fsArray[mp->FsId].Write(mp, file, bsz, n, buffer); +} + +DirectoryEntry* VfsReadDirectory (FILE* handle, uint32 index) +{ + if (!handle) return NULL; + MountPoint* mp = &(mpArray[handle->DeviceId]); + + if (!fsArray[mp->FsId].ReadDirectory) return NULL; + return fsArray[mp->FsId].ReadDirectory(mp, handle, index); } diff --git a/Kernel/include/fileio.h b/Kernel/include/fileio.h index 0858ea9..ce9a5f2 100644 --- a/Kernel/include/fileio.h +++ b/Kernel/include/fileio.h @@ -9,62 +9,114 @@ #define FILEIO_H_ #include +#include -enum FsFlags +// Device routines, will read/write 'BlockSize' bytes per call +typedef uint32 (*DevReadRoutine)(uint32 offset, void* buffer); +typedef uint32 (*DevWriteRoutine)(uint32 offset, void* buffer); + +enum FileFlags { - FsFile = 0x1, - FsDirectory = 0x2, - FsCharDevice = 0x3, - FsBlockDevice = 0x4, - FsPipe = 0x5, - FsSymbolLink = 0x6, - FsMountPoint = 0x8 + FileFile = 0x1, + FileDirectory = 0x2, + FileCharDevice = 0x3, + FileBlockDevice = 0x4, + FilePipe = 0x5, + FileSymbolLink = 0x6, + FileMountPoint = 0x7, + FileOwnerRead = 0x8, + FileOwnerWrite = 0x10, + FileOwnerExecute = 0x20, + FileGroupRead = 0x40, + FileGroupWrite = 0x80, + FileGroupExecute = 0x100, + FileOtherRead = 0x200, + FileOtherWrite = 0x400, + FileOtherExecute = 0x800, + FileHidden = 0x1000, }; -typedef uint32 (*ReadRoutine)(struct _FsNode*, uint32, uint32, uint8*); -typedef uint32 (*WriteRoutine)(struct _FsNode*, uint32, uint32, uint8*); -typedef void (*OpenRoutine)(struct _FsNode*); -typedef void (*CloseRoutine)(struct _FsNode*); -typedef struct _DirectoryEntry (*ReadDirRoutine)(struct _FsNode*,uint32); -typedef struct _FsNode* (*FindDirRoutine)(struct _FsNode*,char *name); -typedef struct _FsNode +typedef struct _FILE { - char Name[128]; // The filename. - uint32 Permissions; // The permissions mask. - uint32 UserId; // The owning user. - uint32 GroupId; // The owning group. - uint32 Flags; // Includes the node type. See enum above. - uint32 INode; // This is device-specific - provides a way for a filesystem to identify files. - uint32 Length; // Size of the file, in bytes. - uint32 Implementation; // An implementation-defined number. - ReadRoutine Read; - WriteRoutine Write; - OpenRoutine Open; - CloseRoutine Close; - ReadDirRoutine ReadDir; - FindDirRoutine FindDir; - struct _FsNode *Ptr; // Used by mountpoints and symlinks. -} FsNode; + uint32 DeviceId; // The VFS identifies the mounted device that uses this + uint32 Id; // The FS idenitifies files using this field + char Name[128]; + + /*** Looks like this: + * bits description + * 0-2 file type + * 3-5 owner permissions (rwx) + * 6-8 group permissions (rwx) + * 9-11 other permissions (rwx) + * 12 hidden + * 13-31 (unassigned yet) + * + * Note: In windows FS, the readonly and system attributes are set using permissions and userid */ + uint32 Flags; + uint32 OwnerId, GroupId; + uint32 Size; +} FILE; typedef struct _DirectoryEntry { char Name[128]; - uint32 INode; + uint32 Flags, OwnerId, GroupId, Size; + TimeSystem TimeCreated, TimeModified, TimeAccessed; + } DirectoryEntry; -extern uint32 FsRead(FsNode *node, uint32 offset, uint32 size, uint8 *buffer); -extern uint32 FsWrite(FsNode *node, uint32 offset, uint32 size, uint8 *buffer); -extern void FsOpen(FsNode *node, uint8 read, uint8 write); -extern void FsClose(FsNode *node); -extern DirectoryEntry *FsReadDir(FsNode *node, uint32 index); -extern FsNode *FsFindDir(FsNode *node, char *name); +typedef struct { + uint32 Id; + uint32 FsId; + char Name[128]; + + uint32 BlockSize; + DevReadRoutine Read; + DevWriteRoutine Write; +} MountPoint; + + +// File system routines +typedef uint32 (*FsReadRoutine)(const MountPoint*, FILE*, uint32, uint32, uint8*); +typedef uint32 (*FsWriteRoutine)(const MountPoint*, FILE*, uint32, uint32, uint8*); +typedef FILE* (*FsOpenRoutine)(const MountPoint*, FILE*,string); +typedef DirectoryEntry* (*FsTestRoutine)(const MountPoint*, string); // Test if a file exists, and returns info +typedef FILE* (*FsCloseRoutine)(const MountPoint*, FILE*); +typedef DirectoryEntry* (*FsReadDirRoutine)(const MountPoint*,FILE*,uint32); + +typedef uint32 (*FsDetectRoutine) (DevReadRoutine, uint32 blocksz); + +// File system structure +typedef struct { + uint32 Id; + char Name[16]; + + FsDetectRoutine Detect; + FsOpenRoutine Open; + FsCloseRoutine Close; + FsReadRoutine Read; + FsWriteRoutine Write; + FsTestRoutine Test; // See if file exists without having to open it + FsReadDirRoutine ReadDirectory; +} FileSystem; + + +// Vfs routines +extern void VfsInstall (); +extern uint8 VfsInstallFs (FileSystem* fs); +extern uint32 VfsFindDevice (string dev); +extern uint32 VfsParsePath (string* path); +extern uint8 VfsMount (string Name, DevReadRoutine R, DevWriteRoutine W, uint32 BlockSize); +extern void VfsUnmount (uint32 dev_id); +extern FILE* VfsOpen (FILE* file, string path); +extern DirectoryEntry* VfsTest (string path); +extern FILE* VfsClose (FILE* file); +extern uint32 VfsRead (FILE* file, uint32 bsz, uint32 n, uint8* buffer); +extern uint32 VfsWrite (FILE* file, uint32 bsz, uint32 n, uint8* buffer); +extern DirectoryEntry* VfsReadDirectory (FILE* handle, uint32 index); -#ifdef NEVER -void VfsRegisterFilesys(); -void VfsMount(); -#endif #endif /* FILEIO_H_ */ diff --git a/Kernel/include/memory-add.h~ b/Kernel/include/memory-add.h~ deleted file mode 100644 index acd3a39..0000000 --- a/Kernel/include/memory-add.h~ +++ /dev/null @@ -1,96 +0,0 @@ -/* - * memory-add.h - * - * Created on: Aug 27, 2011 - * Author: Tiberiu - */ - -#ifndef MEMORY_ADD_H_ -#define MEMORY_ADD_H_ - -#include -#include -#include - -/*************************************************** - * Paging * - ***************************************************/ -typedef uint32 Page; - -enum PageFlags -{ - PagePresent = 0x1, - PageWriteable = 0x2, - PageUser = 0x4, - PageWriteThough = 0x8, - PageNotCacheable = 0x10, - PageAccessed = 0x20, - PageDirty = 0x40, - PagePAT = 0x80, - PageCpuGlobal = 0x100, - PageLvl4Global = 0x200, - PageFrame = 0xFFFFF000 -}; - - - -typedef struct { - Page Pages[1024]; -} PageTable; - -typedef struct { - PageTable* Tables[1024]; - uint32 TablesPhysical[1024]; - uint32 PhysicalAddr; -} PageDirectory; - -extern PageDirectory* CurrentDirectory; -extern PageDirectory* KernelDirectory; - -extern void PagingInitialize(uint32 SystemMemory); -extern void PagingSwitchPageDirectory (PageDirectory* dir); -extern Page* PagingGetPage(uint32 addr, uint8 make, PageDirectory* dir); - - -/*************************************************** - * Physical memory manager * - ***************************************************/ -extern uint32 TotalFrames; -extern uint32 TotalMemory; - -void MemPhInitialize(uint32 SystemMemoryKb); -extern void MemPhSetFrame (uint32 frame, uint8 value); -uint32 MemPhGetFrame (uint32 frame); -uint32 MemPhFindFreeFrame(); -void MemPhAllocFrame(Page* page, uint8 isKernel, uint8 isWriteable); -void MemPhFreeFrame(Page* page); -void MemPhReserveFrames (uint32 address, uint32 length); - - -/*************************************************** - * Memory heap * - ***************************************************/ -typedef struct -{ - OrderedArray Index; - uint32 StartAddress, EndAddress, MaxAddress; - // bit 0: supervisor-only bit 1: read-only - uint8 Flags; -} MemHeap; - -extern MemHeap* KernelHeap; - -extern uint32 MemHeapFindSmallestHole (uint32 size, uint8 page_align, MemHeap* heap); -extern int32 MemHeapCompare (uint32 a, uint32 b); -extern MemHeap* MemHeapCreate(uint32 start, uint32 end, uint32 max, uint8 flags); -extern void MemHeapExpand(uint32 newsz, MemHeap* heap, PageDirectory* pd); -extern uint32 MemHeapContract(uint32 newsz, MemHeap* heap, PageDirectory* pd); -extern uint32 MemHeapAlloc (uint32 size, uint8 isPageAligned, MemHeap* heap, PageDirectory* pd); -extern void MemHeapFree (uint32 address, MemHeap* heap, PageDirectory* pd); - - -#define LogMem(...) { Log("%#[Mem] ", ColorLightCyan); Log(__VA_ARGS__); } -#define ErrorMem(...) { Error("%#[Mem] ", ColorLightCyan); Error(__VA_ARGS__); } - - -#endif /* MEMORY_ADD_H_ */ diff --git a/Kernel/include/memory.h b/Kernel/include/memory.h index 0630375..8349daf 100644 --- a/Kernel/include/memory.h +++ b/Kernel/include/memory.h @@ -12,6 +12,7 @@ extern void* kmalloc (uint32 size); extern void* kmalloc_a (uint32 size); extern void* kmalloc_p (uint32 size, uint32* phys); extern void* kmalloc_ap (uint32 size, uint32* phys); +extern void* kmrealloc (void* original, uint32 newsz); extern void kfree (void* addr); extern void MemoryTempInitialize (uint32 kernel_end); diff --git a/Kernel/include/memory.h~ b/Kernel/include/memory.h~ deleted file mode 100644 index 35992b7..0000000 --- a/Kernel/include/memory.h~ +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __MEMORY__H -#define __MEMORY__H - -#include -#include -#include - -/*************************************************** - * Basic memory operations: alloc, free * - ***************************************************/ -extern void* kmalloc (uint32 size); -extern void* kmalloc_a (uint32 size); -extern void* kmalloc_p (uint32 size, uint32* phys); -extern void* kmalloc_ap (uint32 size, uint32* phys); -extern void kfree (void* addr); - -extern void MemoryTempInitialize (uint32 kernel_end); -extern void MemoryInitialize (MultibootInfo* info); - -extern uint32 MemoryGetTotal(); -extern uint32 MemoryGetFree(); // Returns total free physical memory in bytes -extern uint32 MemoryGetUsed(); // Total used physical memory in bytes -extern uint32 MemoryGetFrameSize(); // Same as above functions, but in frames -extern uint32 MemoryGetFramesTotal(); -extern uint32 MemoryGetFramesUsed(); -extern uint32 MemoryGetFramesFree(); - - -#endif diff --git a/Kernel/include/settings.h~ b/Kernel/include/settings.h~ deleted file mode 100644 index 30491f7..0000000 --- a/Kernel/include/settings.h~ +++ /dev/null @@ -1,37 +0,0 @@ -/* - * settings.h - * - * Created on: Aug 16, 2011 - * Author: Tiberiu - */ - -#ifndef SETTINGS_H_ -#define SETTINGS_H_ - -// OS info -#define OS_STRING "lux" -#define OS_VERSION "0.1 [pre-Alpha]" -#define OS_BUILD_DATE __DATE__ -#define OS_BUILD_TIME __TIME__ - -#include - -// Logger -#define VERBOSE_MODE 1 -#define VERBOSE_ERROR 1 -#define VERBOSE_PANIC 1 - - -// Clock -#define PIT_FREQUENCY 100 - -// Console -#define CONSOLE_MAX_PARAMS 32 -#define CONSOLE_DEFAULT_COLOR 0x7 - -// Memory manager -#define KERNEL_HEAP_START 0xC0000000 -#define KERNEL_HEAP_END 0xCFFFF000 -#define KERNEL_HEAP_INITIAL_SIZE 0x100000 - -#endif /* SETTINGS_H_ */ diff --git a/Kernel/include/stdlib.h b/Kernel/include/stdlib.h index 4239b52..eb69f19 100644 --- a/Kernel/include/stdlib.h +++ b/Kernel/include/stdlib.h @@ -24,6 +24,8 @@ extern uint32 strlen (string s); extern int32 strcmp (string a, string b); extern string strcpy (string s1, const string s2); +extern char* strchr (string s, int c); +extern char* strrchr (string s, int c); /*************************************************** * Number operations: len * diff --git a/Kernel/include/stdlib.h~ b/Kernel/include/stdlib.h~ deleted file mode 100644 index 7b0451a..0000000 --- a/Kernel/include/stdlib.h~ +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef __STDLIB__H -#define __STDLIB__H - -#include - -#define IsDigit(c) (c >= '0' && c <= '9') -#define IsHexDigit(c) ( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ) -#define IsUpper(c) (c >= 'A' && c <= 'Z') -#define IsLower(c) (c >= 'a' && c <= 'z') - -#define IsAlpha(c) (IsLower(c) || IsUpper(c)) -#define IsAlphaNum(c) (IsAlpha(c) || IsDigit(c)) - -#define ToLower(c) ((IsUpper(c)) ? (c - 'A' + 'a') : c) -#define ToUpper(c) ((IsLower(c)) ? (c - 'a' + 'A') : c) - -#define Max(a,b) ((a > b) ? (a) : (b)) -#define Min(a,b) ((a < b) ? (a) : (b)) -#define Abs(a) ((a < 0) ? (a * -1) : (a)) - -/*************************************************** - * String operations: len, cmp, cpy * - ***************************************************/ -extern uint32 strlen (string s); -extern int32 strcmp (string a, string b); -extern string strcpy (string s1, const string s2); - -/*************************************************** - * Number operations: len * - ***************************************************/ -extern uint32 numlen (int32 number, int32 base); -extern uint32 unumlen (uint32 number, int32 base); - -/*************************************************** - * Memory operations: cpy, cmp, set * - ***************************************************/ -void* memcpy (void *dest, const void *src, uint32 count); -int32 memcmp (const void *s1, const void *s2, uint32 count); -void* memset (void *dest, uint8 val, uint32 count); - -/*************************************************** - * Conversion operations: num-str/str-num * - ***************************************************/ -extern int32 ConvertIntToString (string buffer, int32 number, int32 base); -extern uint32 ConvertUIntToString (string buffer, uint32 number, int32 base); -extern int32 ConvertStringToInt (string buffer); -extern uint32 ConvertStringToUInt (string buffer); -extern uint32 ConvertStringToIntHex (string buffer); - -/*************************************************** - * Ordered array implementation * - ***************************************************/ -typedef int (*ComparePredicate) (uint32, uint32); -typedef struct { - uint32* Data; - uint32 Size; - uint32 SizeLimit; - ComparePredicate Compare; -} OrderedArray; - -extern OrderedArray OrderedArrayCreate (uint32 maxSize, ComparePredicate p); -extern OrderedArray OrderedArrayPlace (uint32 addr, uint32 maxSize, ComparePredicate p); -extern void OrderedArrayDispose (OrderedArray* arr); -extern uint32 OrderedArraySearch (uint32 key, OrderedArray* arr, ComparePredicate predicate); -extern void OrderedArrayInsert (uint32 item, OrderedArray* arr); -extern uint32 OrderedArrayLookup (uint32 index, OrderedArray* arr); -extern void OrderedArrayDeleteIndex (uint32 index, OrderedArray* arr); - -#endif diff --git a/Kernel/include/storage.h b/Kernel/include/storage.h index dde42b1..8b68a13 100644 --- a/Kernel/include/storage.h +++ b/Kernel/include/storage.h @@ -10,56 +10,6 @@ #include -// Storage device -typedef struct { - - char MountPointName[32];// E.g. "fd0"; you should avoid spaces, or special chars, or otherwise get weird paths like "Mom's floppy\virus.exe" - uint32 DeviceID; // Autocompleted by VFS - - uint32 BlockSize; // E.g. sector size - uint32 BlockCount; // How many blocks are loaded in memory per read - - /******************************************************** - * READ DATA * - * Params: * - * > offset: read starting from block ~ * - * Returns: address to data, NULL for error * - ********************************************************/ - uint32 (*ReadData) (uint32 offset); - - /******************************************************** - * WRITE DATA * - * Params: * - * > offset: write starting from block ~ * - * > address: where to write from * - * Returns: NULL for error * - ********************************************************/ - uint32 (*WriteData) (uint32 offset, uint32 address); - - uint32 FileSystemID; // Autocompleted by 'mount'... at least should be - -} StorageDevice; - - -typedef struct { - uint32 FileSystemID; // Autocompleted by VFS - - /******************************************************** - * DETECT IF THIS IS THE FS ON STORAGE DEVICE * - * Params: * - * > *s: Pointer to device info & routines * - * Returns: positive if match, NULL otherwise * - ********************************************************/ - uint32 (*Detect) (StorageDevice *s); - - uint32 (*Open) (StorageDevice *s, string path); - uint32 (*CreateNode) (StorageDevice *s, string path); - uint32 (*DeleteNode) (StorageDevice *s, string path); - -} FileSystem; - - - extern void ConvertLbaToChs(uint32 SectorsPerTrack, uint32 lba, uint32 *cyl, uint32 *head, uint32 *sector); #endif /* STORAGE_H_ */ diff --git a/Kernel/include/time.h b/Kernel/include/time.h index 2bdc562..26c122c 100644 --- a/Kernel/include/time.h +++ b/Kernel/include/time.h @@ -21,8 +21,8 @@ typedef struct _Time Time; typedef struct _TimeSystem TimeSystem; -extern TimeSystem TimeConvertToTimeSystem (Time t); -extern Time TimeConvertToTime (TimeSystem InternalTime); +extern TimeSystem ConvertTimeToTimeSystem (Time t); +extern Time ConvertTimeSystemToTime (TimeSystem InternalTime); extern uint16 TimeCalculateWeekday (Time t); extern TimeSystem TimeGetInternalTime(); diff --git a/Kernel/include/version.h b/Kernel/include/version.h index e987952..6fc1c9f 100644 --- a/Kernel/include/version.h +++ b/Kernel/include/version.h @@ -1 +1 @@ -#define OS_BUILD "0.1.0.450" +#define OS_BUILD "0.1.0.470" diff --git a/Kernel/include/version.h~ b/Kernel/include/version.h~ deleted file mode 100644 index 2c68073..0000000 --- a/Kernel/include/version.h~ +++ /dev/null @@ -1 +0,0 @@ --e #define OS_BUILD "0.1.0.418" diff --git a/Kernel/library/memory/memory_alloc.c b/Kernel/library/memory/memory_alloc.c index f630d70..d0f33cc 100644 --- a/Kernel/library/memory/memory_alloc.c +++ b/Kernel/library/memory/memory_alloc.c @@ -82,3 +82,12 @@ void* kmalloc_ap(uint32 size, uint32* phys) else ret = _malloc_init2(size,1,phys); return (void*)ret; } + +void* kmrealloc (void* original, uint32 newsz) +{ + void* re = kmalloc(newsz); + memcpy (re, original, newsz); + kfree(original); + + return re; +} diff --git a/Kernel/library/memory/memory_alloc.c~ b/Kernel/library/memory/memory_alloc.c~ deleted file mode 100644 index 3969298..0000000 --- a/Kernel/library/memory/memory_alloc.c~ +++ /dev/null @@ -1,87 +0,0 @@ -/* - * memory_alloc.c - * - * Created on: Aug 27, 2011 - * Author: Tiberiu - */ - -#include - -extern uint32 mem_kernel_end; -extern uint8 mem_initialized; - -// Used prior to proper initialization -uint32 _malloc_init1 (uint32 size, uint8 page_aligned) -{ - uint32 ret = mem_kernel_end; - - if (page_aligned && (ret & 0xfff)) ret = (ret & 0xfffff000) + 0x1000; - mem_kernel_end = size + ret; - - LogMem("%#Allocated %u bytes (%spage aligned) at end of kernel (0x%x).\n", ColorLightMagenta, size, ((page_aligned) ? "" : "not "), ret); - return (ret); -} - -uint32 _malloc_init2 (uint32 size, uint8 page_aligned, uint32* phys) -{ - uint32 ret = MemHeapAlloc(size, page_aligned, KernelHeap, KernelDirectory); - - if (phys) - { - Page *pg = PagingGetPage(ret, 0, KernelDirectory); - *phys = (*pg & PageFrame) + (ret & 0xFFF); - - LogMem("%#Allocated %u bytes (%spage aligned) at address 0x%x (phys=%x).\n", ColorLightMagenta, size, ((page_aligned) ? "" : "not "), ret, *phys); - } - - else { - LogMem("%#Allocated %u bytes (%spage aligned) at address 0x%x.\n", ColorLightMagenta, size, ((page_aligned) ? "" : "not "), ret); - } - - return ret; -} - -// Allocate 'size' bytes -void* kmalloc (uint32 size) -{ - if (!mem_initialized) return 0; - if (mem_initialized == 1) return (void*)_malloc_init1(size, 0); - - return (void*)_malloc_init2(size,0,0); -} - -// Allocate 'size' bytes, page aligned -void* kmalloc_a(uint32 size) -{ - if (!mem_initialized) return 0; - if (mem_initialized == 1) return (void*)_malloc_init1(size, 1); - - return (void*)_malloc_init2(size,1,0); -} - -void* kmalloc_p(uint32 size, uint32* phys) -{ - if (!mem_initialized) return 0; - if (mem_initialized == 1) { - *phys = _malloc_init1(size,0); - return (void*)(*phys); - } - - return (void*)_malloc_init2(size,0,phys); -} - -void* kmalloc_ap(uint32 size, uint32* phys) -{ - if (!mem_initialized) return 0; - - uint32 ret; - if (mem_initialized == 1) { - *phys = ret = _malloc_init1(size,1); - } - - else ret = _malloc_init2(size,1,phys); - - LogMem("%#kmalloc_ap requested, returned 0x%x, phys = 0x%x.\n", ColorMagenta, ret, *phys); - - return (void*)ret; -} diff --git a/Kernel/library/memory/memory_info.c~ b/Kernel/library/memory/memory_info.c~ deleted file mode 100644 index e035707..0000000 --- a/Kernel/library/memory/memory_info.c~ +++ /dev/null @@ -1,48 +0,0 @@ -/* - * memory_info.c - * - * Created on: Aug 27, 2011 - * Author: Tiberiu - */ - -#include -// MemoryGetFree(), MemoryGetTotal(), MemoryGet blah blah... - -// Returns total physical memory in bytes -uint32 MemoryGetTotal() -{ - return (TotalMemory); -} - -// Returns total free physical memory in bytes -uint32 MemoryGetFree() -{ - return (TotalFrames - UsedFrames) * 0x4; -} - -// Total used physical memory in bytes -uint32 MemoryGetUsed() -{ - return UsedFrames * 0x4; -} - -// Same as above functions, but in frames -uint32 MemoryGetFrameSize() -{ - return 0x1000; -} - -uint32 MemoryGetFramesTotal() -{ - return TotalFrames; -} - -uint32 MemoryGetFramesUsed() -{ - return UsedFrames; -} - -uint32 MemoryGetFramesFree() -{ - return (TotalFrames - UsedFrames); -} \ No newline at end of file diff --git a/Kernel/library/memory/memory_init.c~ b/Kernel/library/memory/memory_init.c~ deleted file mode 100644 index 0cf2f18..0000000 --- a/Kernel/library/memory/memory_init.c~ +++ /dev/null @@ -1,92 +0,0 @@ -/* - * memory-init.c - * - * Created on: Aug 27, 2011 - * Author: Tiberiu - */ -#include -#include -#include -#include "../../drivers/cmos/cmos.h" -#include - - -uint32 mem_kernel_end = 0; -uint8 mem_initialized = 0; - -uint32 _memory_get_total_mem(MultibootInfo* info) -{ - // Grub was nice enough to give us info - if (info->Flags & MultibootInfo_MEMORY) return (1024 + info->MemoryUpper); - - // No? Get info from CMOS - uint8 low, high; - uint32 total; - - low = CmosRead(0x30); - high = CmosRead(0x31); - total = (uint32)(low | high<<8) + 1024; - - ErrorMem("%#Missing memory info from bootloader. Reading from CMOS: %ukb\n", ColorLightRed, total); - - return total; -} - -void _memory_reserve_system(MultibootInfo* info) -{ - MagicBreakpoint(); - if ((info->Flags & MultibootInfo_MEM_MAP) != 0) - { - MultibootMemoryMapEntry* location = (MultibootMemoryMapEntry*)info->MemoryMapAddress; - - while ((uint32)location < (info->MemoryMapAddress + info->MemoryMapLength)) - { - if (location->Type > 1) - MemPhReserveFrames((uint32)location->Address, (uint32)location->Length); - - location = (MultibootMemoryMapEntry*) ((uint32)location + location->Size + sizeof(uint32)); - } - } - - else - { - ErrorMem("%#Missing %#memory map%# info from bootloader.\n", ColorLightRed, ColorWhite, ColorLightRed); - - // Standard memory hole at 15mb - MemPhReserveFrames(0x00F00000, 0x00100000); - } - - // Standard reserved memory areas - MemPhReserveFrames(0x0, 0x400 + 256); // Real mode IVT, BDA - MemPhReserveFrames(0x1000, 0x2400); // DMA buffer - MemPhReserveFrames(0x9FC00, 385*1024); // EBDA, Video memory, ROM area -} - - -void MemoryInitialize (MultibootInfo* info) -{ - uint32 totalSystemMemory = _memory_get_total_mem(info); - - MemPhInitialize(totalSystemMemory); - PagingInitialize(0x200000); - - LogMem("Reserving important areas...\n"); - - _memory_reserve_system(info); - - LogMem("Allocating kernel heap...\n"); - - KernelHeap = MemHeapCreate(KERNEL_HEAP_START, KERNEL_HEAP_START - + KERNEL_HEAP_INITIAL_SIZE, 0xCFFFF000, 3); // is kernel, writeable - - LogMem("Done initializing memory!"); - - mem_initialized = 2; -} - -void MemoryTempInitialize (uint32 kernel_end) -{ - mem_initialized = 1; - mem_kernel_end = kernel_end; - LogMem("Initialized temporary memory manager, allocating from %#0x%x.\n", kernel_end); -} diff --git a/Kernel/library/stdlib/str_ops.c b/Kernel/library/stdlib/str_ops.c index e163210..40c5598 100644 --- a/Kernel/library/stdlib/str_ops.c +++ b/Kernel/library/stdlib/str_ops.c @@ -37,3 +37,20 @@ string strcpy (string s1, const string s2) return s1; } + +char* strchr (string s, int c) +{ + while (*s != '\0' && *s != (char)c) s++; + return ((*s == (char)c) ? (char*)s : NULL); +} + +char* strrchr (string s, int c) +{ + string last = NULL; + + if (c == '\0') return strchr(s, c); + while ((s = strchr(s, c)) != NULL) + last = s; s++; + + return (char*)last; +} diff --git a/Kernel/library/time.c b/Kernel/library/time.c index fa8aa23..91daa8b 100644 --- a/Kernel/library/time.c +++ b/Kernel/library/time.c @@ -6,7 +6,7 @@ extern uint32 _internal_frequency_hz; const int16 MonthLen[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }; -TimeSystem TimeConvertToTimeSystem (Time t) +TimeSystem ConvertTimeToTimeSystem (Time t) { TimeSystem sys = {0,0}; @@ -22,7 +22,7 @@ TimeSystem TimeConvertToTimeSystem (Time t) return sys; } -Time TimeConvertToTime (TimeSystem InternalTime) +Time ConvertTimeSystemToTime (TimeSystem InternalTime) { Time t; t.Milisecond = InternalTime.Time % 1000; diff --git a/Kernel/main.c b/Kernel/main.c index b8c764a..2e69775 100644 --- a/Kernel/main.c +++ b/Kernel/main.c @@ -12,14 +12,16 @@ extern uint32 _end; void k_main(MultibootInfo* info) { uint32 KernelEnd = (uint32)&_end; - MemoryTempInitialize(KernelEnd); ConsoleClear(); + MemoryTempInitialize(KernelEnd); + MemoryInitialize(info); + HalInitialize(); DriversInstall(); // Set up memory manager - MemoryInitialize(info); + Log("All ready. Starting console...\n\n"); diff --git a/build.sh~ b/build-linux.sh similarity index 99% rename from build.sh~ rename to build-linux.sh index 400ef01..84d6b2d 100644 --- a/build.sh~ +++ b/build-linux.sh @@ -68,6 +68,7 @@ cp floppy/original.img luxos.img mkdir /media/floppy1 mount -o loop luxos.img /media/floppy1 cp kernel.bin /media/floppy1/ +sleep 1 umount /media/floppy1 rm -r /media/floppy1 diff --git a/build.sh b/build.sh index 84d6b2d..f86ce26 100644 --- a/build.sh +++ b/build.sh @@ -2,8 +2,9 @@ # ----------------- lux Operating System ----------------- OBJ=build -COMPILER=gcc -LINKER=ld +COMPILER=i586-elf-gcc +LINKER=i586-elf-ld +BUILD_VER="0.1.0" BuildC() { @@ -41,18 +42,20 @@ BuildAsm() return 0 } - -echo "lux operating system v0.1" - -# Clean up -echo "[ 1%] CLEANUP" -rm $OBJ/* 2>/dev/null - # Calculate version number read buildno < ./scripts/version.txt buildno=$(($buildno + 1)) echo $buildno > ./scripts/version.txt -echo "#define OS_BUILD \"0.1.0.$buildno\"" > ./Kernel/include/version.h +echo "#define OS_BUILD \"$BUILD_VER.$buildno\"" > ./Kernel/include/version.h + +# On the screen +echo "========================================================" +echo "LUX Operating System build $BUILD_VER.$buildno" +echo "========================================================" + +# Clean up +echo "[ 1%] CLEANUP" +rm $OBJ/* 2>/dev/null # Build kernel BuildC "filelistC.txt" @@ -64,16 +67,11 @@ $LINKER -T link.ld $OBJ/*.o # Make floppy image echo "[ 97%] WRITING FLOPPY IMAGE..." -cp floppy/original.img luxos.img -mkdir /media/floppy1 -mount -o loop luxos.img /media/floppy1 -cp kernel.bin /media/floppy1/ -sleep 1 -umount /media/floppy1 -rm -r /media/floppy1 +mount A: /mnt/floppy 2>/dev/null >/dev/null +cp kernel.bin /mnt/floppy/ # DONE -echo "[100%] DONE!\n" +echo "[100%] DONE!" exit 0 diff --git a/build/clock.o b/build/clock.o index a85951d02bc9de751f483205b255d58faf3f663f..26f98d4238f9897a4b0bee47c619bc82df064f7e 100644 GIT binary patch delta 442 zcmZ3%{(*ghg0~1G0~nZqNeu>W1`dYcZdnko^>&FvH!lm2wc`ad1H&$m*!Rzj2Rp%H z3qcaL|D)Ad%cK^9q#Py|ih3UgvD}@VtrRre{X#VrO!Un341q!-AaNjItO{aatl?mk z=3!y!09q{p6q5nVFfjOnXh%MdW+oJEWpS< zS%p!A(RcDjM&Zdmi~^i1fKGD&YUG@p$|%p+GI=ed_~bc^0$`T9ZVOOG2#8?-YxnS@!-09o#n8JUD9+b{`mo&g%Q z04TyWIh0ABH3z86dh$dj@yQdIN`S6qWlr`03NbJOjp7B-Kr0lXv>KE)g3=aH8tg`( OI(H~v0Z20eZ2)ictyC6z?HelqLY{e+X z7&1AKQJFIX=o|;2(HxU&8RZ!}CeLM5XYBy;8Gy3FlkYGJfO*=JKQamnS^|X`L2^*A zdGc8%@yQ`f0<4>XBA$~kG6_$vVG`i%VPard02JYzJe5hFRR?H;HBe4`@&%?6pslXV j$qsBlSw;>91_2Pw$-tlrrL~~68I-nz(#}xY7fJ&FdY4Go diff --git a/build/cmos.o b/build/cmos.o index ff52882982af758ae0c6c693460b34188658baf2..88229fef1a6976b5d05d6e175dd158600186c927 100644 GIT binary patch literal 2936 zcma)8ZA=?w9KUO?(5}rDx5i{b(k`;3AZfr6!;G4do2`*$Zm@}o!-bbt7U^Kn`AW3p z*6psdUl#r52NM&sIHOw{b>(UQ+fo?IZE6G}NDozRxO%CvS{fHR-Z zc6h>?QuLJeZlF8J3WCAO$P_KzWElX<6|Yj#mV{j35`QDx;SOI{=E+ijghkob0WmRg zR)6Lfe;8Uin(uuvNcPhgboE8A^Zc+_kfNFaW)=8@Bgdy8d)z+++i(`vihigD|KWF z#I*9-KAz!69cNiQZe}6RHog4H$(|YZ7((zEn(a4#o5%1Cdkh6*d`Im!SDmv{`DJXM ze8-;?Vv6Jek#!lFqD9#i^;)}&EoO@3&isCM95k$JbooeX$jIcdovjw^RLc!zTAog; zCGCDtTdw0v8cWUSl3Yluzrl0XR_gc#x$JLP$O%#1Z?~88X*usxq-y;cBUacht&By* zl%eXV?z8KGJzdrxq4yxEGDpBXSd`s^BDp}(8a7k3s7l2uP_!-pQ?#f`Mf_v4c?Ypk z76s*lu5l}cbgnh3?gO!PRoK`p3MOk;7Gf}M_@^y7^b=rZ)w87rMXJbDkt*_GvDJd= zw8ym)V&3_Jx=)@B!KIzyVv_V^C>%R{ydl&Yc_PvR9Sy+7#lPLj@#Aj3)+Y!Gd^C_> z$0QtAiztbqZc*TB;E3N3zS&+nL=VuPF1~_2q22){`2g+W@OYp%D5f4)}>v#yxW^QogRzVoU z11*e+3(<^;^ePmU2iyT0pD6mnyM;0B{yql==3*|>pGli&=L_6j`~+C5@_#|--yQ*J zvueY{X-(OrU2FzO;e2;OHCVT~Fz?;4%{PJaM}aoq1JV(o&HIfs*Pk37i}Z66Kxe#n zfID@1WOy{y#~9tCr&4it>WZg2k4fwpGmhYA7iV()Pls`<^MEE=+#O)z`gD^w*G2s`4MZ!hG6+#}`j(+@vFAydP z-y!^v@Jqre!XF6Bggm@Q=8v$Eu#K>rFiw~w{D|-h;UwYrgdyxF^rVgO5aIiTe*<2v B4YvRQ literal 2616 zcmb7FZ)jUp6n|-7n#2a4|8;EA4JRaQdy}mW75in+w$pV|*JT51m9$N}TAOz1i*u+L zeHr93gIN6FM?pUf_C1se?!72WQYLmq*w-v*Q~QRr73x-mc+SnauP`?dELIFG zC^?h8yjO+@m_5%BjQsaE3fxd~B^yf90{1dxJ=|H7aAtf|mXa61r7v|i_}+0gZ_KBZ z+#*{|oBBTRWc(hS8yy)L!8)wXrg|0mtUTi}!LAHT;G&sfm%EGUGHeE{YVe6?) z&koZlZ+d6oh7#H$X>2WB(!&^j4%@(r8x@uxu~z)%N;6xq%5wJ68P8(qMxY3duw|&q zx7`VLQb}J0_e!p><$LaCb)zEsX<4_ZpLyOIYJg893Pv)!58qXoU+{q&s|x4NV=1{4 z)sW>55O56cu(f+UFT2YhIL~f=Qmp~kJ_^OPP;sv8G?~tv3@{c|;RLDsU?1{FI3z+F zKkn~;>+SzFzE^QF_7wR0_q(Sq(^++^<}!9w$wjJ0MajxXGg<(yow2I39d$d~-s$$W z-B$BotR>F_!x@yzz4|Cm=~eeBE4VcnkZkYghM7{1fu9}zgXJFx zMHYYk-Be4aD&IoX#qcsxoTj9(FCpsDsu}gBwfavXA>@ZNBVc}&u z+7^{pI&Kczy})*=*p_)lYsfF7HDsaWRvTkM7U0oyjU5&v3cZrLHSNXSp~zq|t|t%n zjK!mg$=&VhbLyc3&nNj|d$_Jkk~)21LXQpt>WMm@6}v?2T~&|0uS@E1RF6vP;PkYl z4oyx>#Nu!kpVVV&_iK>@(|UAh9HagxX#*Dir_f)Cg#RU9c(+V(Qc-ro!gdQO!Xr(A zA-)ybBMzK*8xp}o#9z6P>oC10DA)rWWUS*s(%t?(gQ74OA;O=~1-j2=X$?P=jx_$uW4`VP zsEaPvO`4t86S|l87PVcl9)=EK-9j+$9kB535mx2r-Ci;Jhu!FFNu%GZ9!Vd`l0hrMb!vFvP diff --git a/build/console-base.o b/build/console-base.o index c552d928a9ff2d023587e8862cab82311053810f..2323d3dbe398af89d474e563d1b0b0c1cd9d50f2 100644 GIT binary patch literal 2924 zcmah~ZERCj7(TbXgTlI7Mv56QWQjFy0*%Np6w#~}oJN8R-6m!_=(fACq+3Z_)6Vx|N%qA?`%dCz@MTMX(+&VA1F zyr1Wsp6#`5+n?1mO{k#>rzkQZZt1qAUP7%X7cSBAQfoN}i3l|;*BHj+5HjJ_ky z?OH=dE(4RPOF=unztWb@k;~A`{*UH<$mqVhGTKJ^Grg^S_p7-ucIL8s&a9IAb6LCe zwn<&Upl6zWu2U3kEhAg5a2Q@YM7I0KZB3?h%KDc5y&SkWxcUSI)m@x(Sl1h@D|MFw zzaIMilq@2h?CyqU4y?3Gzc8jRwkC(h2kuz168!5yozulRNPKaj=>*CF^mo@8F_rwjCb^YcU4+QJF zb?atZdoC=qd$O|H(0FpwdFn+Tu6-I)dQjM_QF%ur)s+qDNr!#qo~-;~1SV25dD$9O zFLo}s)RtR6K8j@clAK&3J zc`!M#5XqV_ms8T$%Y|qRg*MmJHtuMttEu-t;a?BgOEwJc;7*|py0n#UT_3@IH$khG z79nN{gNAF!5j5Px&Y-d6s2()D>9UYf<+y5iA>?40f=fPV=$}`?eHZ2|<_b)TO*>i* zJtxEx&?M$xn5y<;SdU;DsQVU>{D-O5QL2^JLx$I38A~9bj0m8U-%OTdXte3U@~swUbTvwQGe1LND6;f zBpDI@jzmKEJ7c}QW*;=NntOM5$0NO_O7{P_8ZKy|&~H7~SJ00d^jv7H#9Sm-_Gb&o zR|q7H;>pj2`7m=QkcJBjIx96)zBLfYU-?yGL0k>xNB2ni32BhuQhO=CWTW{MqiTIE z{07OuL*)yAm+r%jC$NV#x-+$pO01EhFiykJSYUQdqEtfFBz_u6_CciI1idxNNBgIm zrTMC`*@sH{D_O#`I7)S0+@3F5C|{|ScxeUVYS(s@vvA9bmlf`27SdAWdk|PW1E+Wt z+|61gGH$?{2301m&V=r+5|J&ySxow^Q@(DXde_8L;Ob2ie-m82SK{x1t9MF#0$jaG z;+MhIJ0wo;TD?KybKvUz5qF?b_4bHYf~)sNTy)0z60xYct|O8#{hcCY({N`z7L68I z&p}hP_H>!Cres`+Tg~ps{%A53i^d9CXn#CWWQ}I>ULpKX!8SkN*BLiazA2Va$!)_9 zGZpRWGw&5!_TlxL&qd;0sYtwNi<%K?qof&ByI+s!>R;qAZIchcZlE!ij0r*iyfj=e z-Mxk%@>b?M86%7XjKhTRJI4GS<|hg9Fg|4c9OF16-KB>2_#@*lj80q=>5CXw5Tc() zn6G2p!1y%dPR3n~?TmXF2N(}A9w9_t`d>%&-Ud1r3h_SkEaO?mPYB`vC6N5SX8jx1 zzhhp3KM>^SWvnH{`8>|Ji4fyM^1Ak185QqN=<1s?yKhAiT@d6>@ q^UNg81FJx(LUj~ma&1cnUVhPk^OH3XtrPg literal 2520 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 diff --git a/build/console-out.o b/build/console-out.o index 777f3535fd045e31197d2cf7f3bc15c6bdbb3f74..0d859baabdaeeff6346a6df39275169137e3f689 100644 GIT binary patch literal 2904 zcma)8ZERCj7(QL^MmI)p!A+-3sqqpaNYwn@emweB^*gu7% z&?j*gN}G)aA%81-pOdC5-)rogVBpLZee4j{F}hypV@V9MO)B|m>f;^8vP?-IGa)%E zDcHt9A!_&;A*bDAF1LO9Dr_{I61}SnHe}zS?Du z=3G4tZQl8#Qel3#7f(QH1!C81(vUu6VUaFl1fQ zwiaEqdp$>M+P#fO-0fapT7%nOuMd0*!sT|aHeHT22-k&(dpGC6sn4r9IYvQQ6D`u- z3%iN&NpyaHr_h-r!yHGMW4QBPud>(7?SZx% z=s&}DFOZEkK0J%vGQYGn!L|}MXRY)JBo7SPp})FDDvar``zFQ^FtJgHoYap=`w59}N}b;i=f5ZI z?@OGJ`XmwmGkpqV-fKh@#UDfz@LjlaVk;4k!ox%_ewQQ<5#c`wWSkS^@V_Z>F&+o{ zuOs4z?kUN45u1hBBY8pck4xnFl8;F|CGl&CKT6cNANa9eh<^hooE!lF literal 2572 zcma)8Z)jUp9KC5@XWF%URXV7%n^QaKkY&TQ=<0J0+N`VVW?9W9$}Cy>=7MRSCNJAM zWSORM4KbojKdG>Z4C#dFmoOca>PA~Zzf1%LQ5*=XnIA;N3B!2KefPHM?3fpB&ON{L z`}gjB_mOn4Z>!Je6MFbWwU}o@v>2Y!E}>1-iQBZR#8B>+%++SI81!4U?xR+1y3z8R z*_WXeigYMFVb!_yRzvDV#p|wIFPF=+Q>-V7$H$oQr@&cZ7&+dWD)s}q9pKJG;$xUY`k2arYMRUSfrF+a=@NN1j z{afZ@%QMdo?qwu*Xd>v>4)ZA?sY*R!G&$ju31XjTP1!x6z!K)TL*a!37OUDe4}vqUrTk#NBR1(kra{3I|c( zXH>MFGP8bo?tf$UDCv-y{Tm3q)MKU0(GxTtF1Ys#H*6)%><<*Z^KQya8Ro>+>vI*~ zg$7%`!j$t&)7`E9IxH!5w;F}uj1H<;mIe__&&FGNb|}wV=Ui$Qm%NXBcp^g{mwEiF zf6C=jjdz&E;IvfbLFK+H)ttj#h|I-4eW3dF3DsAJ{HK^GzoT)izF(g9;v(Lto2WR8 zn+2N1ZicZyPghsx>bB6nRNPIi?~BI631@YCpd;|$x`$KJ*uK`|LIjc{!)|yV&`o%F zK(7*ZEa2LQT@e@xyI~R7mrRO4#2Fs8`oG5A@Ztt7QQljC zcC{h^o*c(rn6+}{{k-KD;xGaMGM@L8>otn&6d&pZ>>TQoBp$$;{#w47-v;=wKOzVH z7^??0&P@un{TrQF8R)}tJ7%Rszh0?$KiZF2Rbl@Kcl9KU+yj0^`5fFE^2&UD5PNhI zXcbGa`B7;%#P8*Kh50H~^2!S2dKbN@>bcX?yhfNR;T7N=$j9^3gMI7$q>X$t7iy62 z(F8~yxq-)S;K#sOs}qy;UI*&I__s0d#bezGq<&h9K>F9suV)P=5%#7raGr5pm*4CuXm6Qf?q31`j2o zu00qz5Kf3LPw7e}l1^f$eJB=<+Y5~gS#La&u)|5a-$`m=AbP|WyQ4$4)9=nD?6&uZ zQ!%&8i8%>f5O+Nqe@*~mc3emAVJ}_(X(jXmz618QaAN3CI5F3ebRO{1sLrK{$qw2H zw>R!S>CEdig>JBM9|mlE-#D3eNAY{Y(6;bQZB^5JsqP{=P*6+Z4G3e&VN z72;K;zozg_V!aUWDg6Uw=YJ07`&j9pDt%Jfrxboo#GipnMC9Rn!@AdqxD+PNy$W}9 zgTf9XJ__52%h0dlBSiSW0%X23P@Y1iwe|jfy{}_)f*2R{URay&x6< diff --git a/build/console.o b/build/console.o index 1a17ea017095589681cbade8f4005905dd86dd90..fabd5245b8a75a727a2820117a54cec6255ef3a9 100644 GIT binary patch literal 9680 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⋙3}(PW-YE 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 F{|BUnZjb-~ diff --git a/build/convert_ops.o b/build/convert_ops.o index 40a7650f716d4e2b343f5b2661551528ce4f0f36..65fc48fce6028077aa6080423cabcf463f08bc02 100644 GIT binary patch literal 2020 zcma)7O>7ip82)B4$CMC9$7Ah8_k#!4gV}oE@B`vb{XG_8T!P(jF zLWqnGKb_rdOiV+#c`zP4c;f(wCCx&s7tu5?k{w(6rKEBs8%1`*Yjv z>J9SO*NdML&IPw3{NY*&-AjrG<=;@)u3ER-$BxC{t+@Ol@OEN{Zq)VI%jH9x)<$c7 zH#ikL#QE>oivxw{>{UMBt_TKoznCq3T8GH19QU>kGav| zpI`jw=NgKn#bR@Lbmbb=n~xgu&y*F@zwkr3_w|+HVJV6fqO-r5XCt1DoV<>S%2;Ix z=kz^M-&n=DSRxM=4@u@m!DzhhaBUpPd9TYb%dhwx_O;H%pOo`=jRuE4u(H-dq)hl< zuKCNOx6DW0{1&(1yT0OfcRl~*N?HHRzHdJC`Y-oJJm>G`t~$NBugdx@CqDZ*Eq*Ls z0bys?uHD@)?s=(a@A$;zRAT!0%!!llCsXOnsSot5k(lvlg|329ZiZdhX>Y!c!=jr!l>%IAV<}vOP;72xTr+cpyiFJ`(#56 zB2YnQ2_?%>Rk=gGN1!G&4*iebPI>6xyL? z+ktM)NhjF}_eba`a-Z=6Un#&v;kX0XAcDa8EsTYMO;9SQIv@0T?(;trEKIMoPQ<(y5TpA4tE2m+`MaPb zG>OJpG=;_e*{fzW8Rz{}?_AZQe}#O=i-w3EhZi zPGz-87IVFUv@x6+GV~Ma<1C#^B@=0p8L3a@9?!WA!x@x_auK4of5s5%PZU`EU@kS0 p(6jD)mm3)y!)_9;@(ZAhheQ7c$tNKU17*Cwqa3eryvcEuR<^da2WGYgQEhs_smm@rZ!~ObsnY%vxXz34?tg<|6Z#G8!OK}4JR^l4 zFeOv~87-MsKQkpOO!tl^@G{5@=5(5yblE0_58LZHyNvhw&lw-jV4p zjm{Xo&**rfG-~3-(2Dvx6j5Iq_uk_q1pCIcS;RgB@mOlg{8!a(MLl@#c6Uc_kEgck zNL97(sLF!1`!kqy3e5%GJ<9c}v*-Q3yGlpr9r8hNlT{&)#DyY@(?YDM)IMhAI1fyn zM-C%5f08t!a&{JzVdMhuIpA9)g39evz_c-D61n|daMc5Va*GFt?n_yli$BRe-W;YJ zx(Z2u>b%7 diff --git a/build/crash.o b/build/crash.o index 766a54e426226e2e9ffbec32bd5eb6b60d926366..0502a21726f60cba0fa9f5d2828c8b102d9db8e2 100644 GIT binary patch delta 1159 zcmX|URR+K;_)T51BA{0feN@BFZL&QQV7}|qHSTR-v zduSL0gJAVgi=|NN!CX8@Tl6C0AJBs!f`SA+h$sa?@V(841G{g&-#0t&V|H%)zx-)G zaavJ0(&4+8JaXvdQ1yHK=2(wk+m|v2$D2#zd8?M|Qar7$#tXwMI;A!~iq4ovvqw(s z^wY_{WQsqJw{{|9;usm1ZKK<@tQ!VVFY`_C8WvA7o_#%%@!YC;!1K*T%X68mWIXGc zUbfG;l~OrbI$u0jIXhb7PCInJit3z-8x1|Gwy9N@$To>wT~}H4qMhg-@9FBMx)W?b z8!6m5e2SNe=rHtg=sa{;G{*|0 z@^{z3>(Fe;{{!yv&y_&kTqUS4nuDgn_X`i$ z$igVV7!iZ{1@Noj)8MzjAA&c)pMbvt{|NpWd<{IxH%0c3aSbHVW}ZmW-7r$3nGb*u zf#<->;1l2hxCXxu{s8#iOVE>2`A$uN*T843^{qzp`eOT>?aS5TL;43suXKL^ delta 1059 zcmXw%Ur1AN6vxkXcXjXXbi>VxUN)MM6;7)egL;%ilKv3O!e&hAA*8u%H+-r4a3vZ+ zEPh5wND)M6BuVsAFU7PTqL+w*dWk3uEPSaT7OivczFpYPKA-Pz=XW;FkNEX?IUegY z$$L`XdmA-UfHI{ohYz{m!k27A&FkCz?y_bt&7VH1Z<0eVx?A;EQuWpbE?@uDYBjf_ zxzz*qXLlhyFqo}8{Hf3S5}6@8U$i^=PUdrCqw!R-E4jTrZF@4cxz1|E$TsCiizkvj z`!elkin-wtl`|8nU>a(|jB3x+l$kIKK_bIPWT{27#~cq4-QtTa)e^X&ZB_GuNb>-* z#;^ZR#ZZ^6H7aU_{S|{~L|w5WYPS_O(-zT3J{43ME9PIvjr%!UtIF0SU$!xL(}{4} z5FlF5Rr3?Yg!x-Lz-e%w@G7E%;3MEHxFF2^U8&sXBK$P?Hh4yu`^?qZp+^vpap1XB z9_YQ)M*hPk=Z4>rYy88-hq#K53iH5i@H^pm!S9F9!Vkfp^}ItgfuMw7+6##8!9Rds zfPW4D4t^Q_H~e4tW?mN=G{#j1mGzN9)9`!5I~?pqa2&xY3D}RpUx1&4pMt*+{{;Ri z{2TaB@JsMjc$0Ta`ZsZPWTFlHK_=})&?U^i7rr0<7<>W#JiH5k4gL=NEc{FOx9}g} zSA67n7ym*~MG)5O6Si=bLAHQ9z}?_p@Srd+)i8J*`8jY&D(_So{wn;8zPf(VoLUUs F{Renxg?<14 diff --git a/build/ctype.o b/build/ctype.o index a69db89867b956abfc04930e773a550b3f4f0230..10a4b4f3462be95f0c3a3f6a223b5bdcd1a1ff68 100644 GIT binary patch delta 378 zcmcb@F@*yIE-EYyJHQf^%*`(p4ub@~HGl*hN|>7uC>-8c zCdlaH?iZ@5V4`QHX9$!K0qbXAV5|yaV65R_l;&Y!=>X~w0E){%-sgoHQwI<6ji7+ZnHe^!fEMb8d#W^{aNuDubaxIfOYXZnY zKw06*dzb{kJfX=KnS@1cfx;juCLjiZ5+KI`q|Vk7$m0ZyL5LQZsX#6p5CgeD??W8L z45VRT3(y4j$%@R%oLhjx3xL90lYN=x8AB%LGWRnIPX5a*%?kF+WLXw<1&~RMKx4$A Pv;vT30y+j1#2^{~J%KUM delta 308 zcmbQjd4*$wg7X(f1~4!IlNt3fE-VZT0zgYRCZ{sVGd4_aWl{%{ zYnjw_8-R9egB=PXKu!T+ODGKyWnfqh5}X{!EG#MrWH7^ofiy_Q6DXt1*#Z<^02JYz oT+1xas4{sjb3dc#WL*|%R#Bj+)MQ^4bpdW5i;;tYK@Lg-00B-vivR!s diff --git a/build/dma.o b/build/dma.o index 595a7086ceffb68b3f2eb2981c70130b5d32dabc..1df203abbafa0360e5769ee8c1c94d0b8a5681a3 100644 GIT binary patch literal 2124 zcma)6UuaWT96m{IO|-XB+bYr)m%1MUp9RlA2@?RC`jMU945#Upj^)$(^Be6Dcmkq;B~a zsY6~TwaFVKQ{EyqN$&og(%kWur5z6-K~|XDEzgrWxOck?ow%i>83zoJ$ABSwFCx>epmPCpY?R33yXiv~{RPpy1=s#g7CqVha~$@bZ_ z6<&GOwbr3P&mVVHfh*0u3z!Yh8P?PP>-9RvD7pOl+~0FAYMxcO7TJHGiv0D!=fDP_ z2iOd31Cqc9a2og(C<7OOZvkG{Pr%Q>f52_vU*Mk7|9~F@&jB%8ZuHX7R{=7EdHaA@Kr6tYmjz7J z=G8Okm4Vgoc$eUkFba?VjYvi#Uk8&>vl2>0+k*p96Gk-| zHTXy+N~d$KeHiQ(eV){#qLWRy&M8+UGPY}r#Nkp&Bxn{3zHy|G%Q<<>({v^e9xd8A zhYNmOe1bG=QLu#=eZcoLR2YhR*5%p+ccC$O#%6%&%!>egHmKPYjKzjp)VkhAjG6zT zJnn}j*uMoK1ZM`8U8P;-tLRjk+T$KVk> z9eUkC7>(;1IMfI{uFLc3bys7o&x)alK}>LY{l*oj^{M@zgqAu*Ywqw(ghUu0KiH40INcgB$69w| ztb3F5+o5$|QtyP;JxRS6TK6M$23q$bbqQMcA@x_#x(BI6CTAy(h;+`LaNJ}jQ*_W! zzDgBNqL2LX;3?NB=I!h*`b9U)OGMlB? zfnjRW&gUIZ`g08i7T;0GI6`z_e*xU_NyRr6yVz8|7kLx3o@Sx za=T)_hp73EB*zq6isOoV6tf?g=k*(StI}S-Ko2OLRy?A3Oz|$oyA|{O%6eZaj)8;F YtWW0e$($!oDdv4q|ETyk#S4mG1E=^RC;$Ke delta 750 zcmX>ju!nDgg7y_A1~4!IlNt;>44e$1olp6vw3bLHXR<}1+fi@n^9f7_*r-VQRI zC*H*##wEYZK>}SKq}Ldv_pd=cSYtyi2aDvThDRo8jfZY9>;TycF%iss#tT*iVe>(4 za^y$eh-C8{fzH@3ouxlIYyUX$Z;J)`sg|eV zH+#8e!*3SJZ)uIsO#i1f9=pcCzwK}*i^_{X|NsAQe$32yzw=Y)k9S~hckGw$(jVQm ze>&g9PCmk@l2rwC@@gP%1mX@L?g!#&Ks*Y!oKL_G>K+NFo z>};i=5t>w*S5m6)lbM%Tl&@f-XR2qUYf%aoG|`0cC(ARt^X282r0Ti*h3XcUBqnE1 zZe*68Jb{^K@+@XC#=Vm_GAnb2urV-b0FC9Ee3x0C@yq1D%<5oLe6kIT0FdR&qRv?Z zRC55Vrj|vXH3S&v+LITu2n)Fa#TbDY2I`q6*RhICW?>aztp_R!o!rPOJXwcTfO88A z1A_oiCHG`kR(aMVtUzxA<-{j9u(s640CfuijS&UXAU2Gz2xNm|5@ZQT-WEvz1!74k z-w#NO0nOxr^233&5)wZJ$kzk%6`=CPK-v$;mxc0MfOIw^0~15gz Tp!8gzQYJnIhBcFI*^dJNvRc+% diff --git a/build/drivers.o b/build/drivers.o index 01acae9451ff4f498301a4a0aecf15e80d315bf0..287856af22664cb476cc3b22fbeb1b664b6693dc 100644 GIT binary patch delta 658 zcmXw0&r2IY6n?Wis~fYXNfU`+s0(hWLI?;_gxdDtfL3YBmLyL(~VRwKECkXjTEU&wWoO(GyyG5VsaK=T5^`LAS1_xQ;?c6ot*gsmhC|wTbDOA$O$ws60$Lj$(=38i{wd=yRm}C`kK-yAoY8j;EH4 zA1TRsz9aUE*zn!ulvHoUq!Tn=mK*DfYr*oXhWaUv=N9j_8bOha^GcVhG8w#t}U z>lp96P{PcrF*BX`XA-$^l4{26w{qy{NFADabzpuFm#Rn3T6!S$S_aASt<5)$V5h!; zDgMe}n=jkIp?O9e^q3K5jnN_601A9@lXW-ISzBMU^)E)7=r{ZKh^|

1)Oe`eMYW Hqiwte+31z< delta 518 zcmXw#%}WAN6vgkndBRLu8YWB-CODKK8H7O*v`Hx|$l+PpsNTBQ(HsjgKKlCISdmR6pxP(6qvuf=W8y!ABrTL`Ew z>q+nj*@LVh734RvOUM5PR2#}KqyV*#ohm_kmsrJumwtcE>b^&BfsjVAGf`igrgQD$(#7 z2TvlbD7xhxv|Xs$*tytC4k>#Q4}=oiqKl>y&i1iKnlXoyYl+EpY9o=!vISEn+JOm? u0lGQc0LD0RH6cz5KmsXX{S~g;0gjsbxT!BVC4d|5TLJF4wgKF8V%LAhJc*nntR@)>CTs{PIIWns!yb%YpDHzS)UU=h^KcK zO=|0FpHvV z!`<(E|M?&1{O6qio^bo()+HW~N9e~Rd}4wLv7pTDsh3bK0%EE-SVZDEkUn1d&?s6N z!+QVUr%s*PfwmYNO-+$(aMbx&OR8MGX3Kx5*(&x!4QNav8Ww(qv`CLt(kDb-Ey`=d zl%t_3ZSwkZZJ;+x>76Rn`xaXcp(A~~dbruD9cs2_{%+`OA&&W$Ic11;!lwp0INJZw zzJGv0ZRW@6vFa{0ZYaA`fi{}i_LVv9tX##a_~sb!!YC>^6*@|>_9i>Fbz0_-S2wL8 zul76KZJF=@2d;$(kvgaut11&s6nk5%OMROa+>cTEP**3pP5DK7 z%<8&<3xgA~YVQ|}ZYetDz}z#%JxvWM%GA37U9!nCMv!!!gJqwC zm?;BEzb`#zcHM9zXQaKHo(4E|y*?q_9PfP}lUkbk>IuKgOP`geTKgYZL<`|GGL>90 zjEn*~m~U)PoUW|ynHf_K$vO3{7XS^c$tWBo3UMblYT= zhlYu!8b)fKZq#tE6jUMy_R_CT(g!BOQ?X##c51~PXkh0!SCl?GI${iLs~l&Rn6px1 z&gsi^TYh(Iz#SF1FQ9NfK*rpG#{cK)V(kiUFV$`7TmC?LPoC6Gg>hR2dZy_fw6iJy zCWUNymVRY*SRs$W92|qj(mjsVJltt5Z9sjv8-7O`w&Pb!`O=;Lq1`2!Pu%ACx1W%g z^uYAqHY}!AM$R<2CnPf`=cM42%)n{OKP{P07C`LqxZIf@n}g$W{Q-B#4H)url(Xp= zap!QWbuD-|_&LB;z;g#qVj4d{PIe%y7(9|Hk`1>=WLm9?=il^Bd2#bwvV?Y8l?R)x za#aKljm+6XBUD-l_sL4IKhx=c1q-&+3Fyg5sd=IXP8Uu9%Q3Edj`_h3YPPM}s??`d z1~^AE^i=4!>^WC6*k{*nqsG7WDIPphI{15h9nxbBa?x09>$h=(bz6;lF&-g5L*3c+d0nj!;?H3>uv($q*dv{m zg(WBhR&yzUbAZJe$1>!6d5qn(=&T{17Istxuo_qnoC7R_iJ#LfSjlVkH04~8w(Py3 zY7`?`G=LwcNOrm(K=_a)HdCp#vqG5^Ml6;s#x%4}?n=^r37qE1a#mVea|UHuKmG~d zC`<+{Vec*uy^-ihdj+;adaNGbOp5=9XFhBWW8X~ya{F;TW_ynM8HQgWzWhus1YZRu zo^R?c$9ujwTEhFzkC;@Yw-|g!(S$$h&GsHGE%ZluBmA+8SXteVx5xXE;)y>>k1m|az=-sJV>g(U?#E5lJI z8e3^OFBpJP^~=GN5~>RuH$lc~PGc*3zG z=2|%vGm?njY$p*S6^jH5;y2rlz2-DsE=m4eI&6Ex8KW2IwcFvy+*=Y+$2Q}AHisOK zoj&Az--{E8cw(U$i6%Fg(WL2G_a)-)$e6Nx{ZKr1vn?msdPUQss+8%(%}{?2TT2n1 z*nvp_OY#ld?WFB6i89G%)vUFV+C^2fs**ys>)dvUh{a>Jm>--s|046!%W5~MW?gVz zo47Ox;pOunl&!j8eZ3OS3ocmDW;V68m{+u1-QjjinGjcoLJQ66E3aBnW7Y>R3)Try z&IIG}Y-|^vO~sz`{f04wy^b>{c(dih{mO^BwRp)p@rqEu^ezt=lrP2GjW>-~%5M)C zv|okyC|;gH(G)07dqaWRc%Zl`U>u;`0N!%MyBtWnWWbPd?*&~3`CQ7Cof)05W9i+9 z{u=hf&W4?d=3%_Qg1iHmwez;Qh7eWbJ%RUg=)4T1&Q@4aaVT4;%lR%27|g)}$OEVc8OmXD2YqbyH3iDj1|8iVD1!iwiVwosA?d3JHa~~W z+q9vtqXEN2a}e^4C?59%vt#z%`hp7UPAKn)#yukauXIz z_V+sB)gqX55-zUSt%ThZbnIIl5o9Y8cETdKI++BGlh6WNIG@&u;F@@EuN_lX_WB#w zCc?cega7q26Pg@0rZ1m*{QeU)UO%kae0UAc5sTxf$M>R>H+0%l4=IrQjU3A;pGFjg z3JTO?Dy#zL`Wr+5t|R@?R{P`rreE#vT3*s}9z8yen_=duKI;8ACoc6!LkhLt2M9Q* zYzWlh+pds%nNKhN2IY53KU(ib2-xO#iO&G^S~UUJT7_u5(T&?uSv!#pf2;42Gw1YFl=`b!k_Z!X|JDd0N__#*}Ug#!L6xUTz*cdVfQ zGjLt^+3&-=biF5^2CnNn`NiP6u9MFP*EO8H2^|0A%ls`a;4R>~j#Ix2T-R^%UT|HT z$@{@|O(q`(*AMgk(*k}UxUSFC-wCd3F8QP2x`vYPEwF!~fD8A^6kH?RYaFg{OT)29 zkDZthEQu!Uh@!l{K}W2OboTezNzsYxUZTSZCmgrgl5FN(0ymaqyvJV2dy#e&i#pA{ zVS%?ToZJvvACATB9#VNrS<(~j;}9t5u$`tzBw?d&yDWs8oTJ){Z*}ZMEZnm^yv}a7 z*F}?{Qg219H^;9#oenz|38A)QN+KHLEpfFP4o0{(x-ON_!{a@!nV*ZSVbX4i!FM9n z=V)P{y(YT0U$HjcUXh48ytP`x?!iT@nfFg6nYhbNNN_1ry)8&e6nEW?NLg<@$w44@ zJ@BiCVQQ5%g)~V-UA&ukwh#{}{xlKJ|3E}N{4){Xv#*F1Ld?Wo^PY=1 z3NKd}QWz#e?Y4d!7*674BB@13=E_b;UnYcs3^NnIXgsB0j{kf%NN;Lw^%F z=6{#sKU4fsa?JNha?JN>BJy&Ca`^iz5&n)7;pZg#aoL=NGEM)>fV5vu4*P4!k@q#^ znD+*SeZ;BwP7zUn9|ThGH$+?*eoHy*|3Z#2v#3Mx1f!Bx^3-KWlb{6Ua*SS@pqwqn6V+xNe*6ns|ty4exfgPt#9i4tSZd3dUArb6UrJ`jzI)maUXi^)IB2`=Z``vf%?qp-!AGDnv)>&1a^OySjFx zoSdk+e;6#~u08Vc$&)9ItgIXuPLxYNFlhY&b@Y>?;}feVN%~jHZ$GmF{}YUE!N%WQX(9 z>2te=3j_uI)}^|Rr4lDn+drmVgsHOsBbV{LhhS^q6*cEZ_DoQb+G8|-h@OvX_ftm) zUbJVi|I6GvnR5FNmG2ujl;A%|r2Qjv_U)wpyQxVe(b=~h<`ib!Pp92uH8iObZoH z9m_*3IUyf9f{`VUxDp=?agjPg<0%;p-C6%i>I-`nWjr;UardWZk1ZSZooKjkse%3(x(4N3*gs7nw|7gsxs5|EizY4$ZW%_lqpAtJ#t&dQ z({vZUMfnLMdqOUk)FdO}f9W$9%%8PiI?dg+jH{CXP0oTz`(M(jE9DvgTL^N|@<~lD z_rGOx{iKtlO?v%Ems{!bp#KGc^xDX_RS&j352zVzdyZp>BP853zRXdmO(S*CX#SUx zeKFOsch{kk@_lkZqtEycROoH%NouG3sPP}zDYu1@)CT8(EZP>1K~cJ{M%lmp1!2#` zRE+70@k+2~G)uRQrqt#HVZ8tDw3nEdZM`F)~A_OU1f5C$`h%D z^HOvo8OPP2017Kda4IaHJOPXemb z{$qeDXv^zO(d=ER2P#L4xaDpUo?&#nvL9deG+BvbkZYg*q-HzWs}VECzOZ&=XKpPo zoISQ(gSJy-1+$B`bQ?DtX#>%6Y+~ziqYYX*GeSEgx{o1&nNN<^^O{5X=X#bxYabG; z9LW5t!@JORu#%Q}%JAiBxB~oIC~@6VZynxq#K8*QZ0=y_l%5}a2M!`_k9rGB4jRSw zC|?D;+_LiaUZ^a#_bt@-e^CeyJEvFrn+p0-*st|D_4=Uanb*0dC)(TF*JXO^cMBsY}wZ4Pv~+=rux}# zS>31Xy-07p6$mcg77N*y8SS;`ay0Tum#5nH$70dg3NsjrcblQO>9p>RMIFx=vZ?yM zXygV<4zTr-)hj&-(~g?Hz8;p=qI+UH1_i8`+Hk!Uw`>Mc2HEt?+Y+o_>6zz=3t4V( z$`v9KjaXu-cgfPZ<^>nlcdKH9cS)PLzzgBBB@oI|gSW9!372@6FK;tfx3!p;v|Q2d zR7;r7w%({+EiHMz8+!~4mVo|fviw@3To{+-E1r8U&8}AF-flWX==HPX@6tjA~ zwsoT|yetI+c0hPH#p9q+61IRlQ)z?nZjOe-Rs^jg2&nhc%RA1G+kws9oZ-*+oC`H> zNc^$JrxEXTPKtWuPJuFSDqNfTxuaT$yHUxLjqRz&HMl@=ENl6!f~^`VsK-?30T$Y; z`;rjLA)`IE)%F&nOuO3Nl~gErw14!Q-7Hac)cavUztki3Db#vz<03eq+7PJ2cfG=T zAfGUPD=cz~@>}b5g0ZZhyX9{R&GL2pVWG#sTIzM@)p9myi~E&+DyxL}Ed;!;GF}`9 zM6z6H?+I*(`wJW?C_+2`6w2M=Js$G8XX?KM^tZ4Fa%|8APiZb|9AT;8*_eMyr_3Xf)#CH_&hl}{$BK|kfZ-9F&2)C^`$8D3c>S~{0x*ccE78ItUN zAoXtt>WA^ZvxwgVela$WM^Q)p2f*J0|22^O5#YU8!0d;72&f<0+grqibF6tc3+JfC zF}pSp3HDgAykJczW(5`H5epr$CAgul*NTe`IFe)Sb|7Xu#g=$8_j{Zw@o0~=k!P1S z6baeQ;ef!~7KnHIt_wsWRu8E>N!Ij)dg%fM?Uubd7>rrij~(X2X=|&p|3=%2MFKtR z0$Z*1*49uQRO)p^!UcAn;j~+kpbvXCh9p7}p5&X9JMeHzXlo*--Q!u?%wr(eFmAO( zU^|xRwY9L<+8o-_r&t?r7zjiI-g>QJ_295<<{d#v^7oCr1P7<8Z9z~%xQ~1rAqz+2 zbON#KfnDu})vXO})CEUL9^0*(0vn>f>vWvjqCqS^?iwyEeExOj!s6zdFTwsdSIHNV z<3Gs@75_RBdc4EA(D)kGGQP;vXqoi1p_BiVzLNbA`AB zNV@~%(EmO;#{YB0f2H`76+%awcskp6ZnzKsaIBoTT)QSyh0wL<&>NV`uH(e6)*zpVJHiodD&Ng~GS#!EjJ z0m>`IAe~(k|ImKU8`~Yz- z_EjS8Ek}rm@85~YllOt_zXUcYpQ*4K$o}RjzF1)+5u4#%tVi2>$QBKp6H2z&iN+WRg!?A=2Sdk-r7y~3vyKCAF$g|91o7sxmr zSG*MaI{6GB?VY7?HW7Z!Cn6r}fb^q-9DY1O4nKDj;in518`>!cmMjqBB68?oOb&e? z5%IZ#h&;cRi1^2e$ith6$gewzUlrmPMC=of5*H$`h}Z`X6Xy%@0TJzLu|II0TNT<0 Qf2wd);e^6!tZ(Z77oibbA^-pY diff --git a/build/gdt.o b/build/gdt.o index c1a82da2c4b33df30e63411ba8ff8bb27629609e..0bb7bd173dedbdf936cb95ea9ac32e09a7b036ef 100644 GIT binary patch delta 687 zcmXw#-Afcv6u{5ix#P~b!#M5^skGpv6K$|98WOo^Fs-m}VdWQ?E`hs9Yy@IRv9QsU ztu94!=}+j*=LnyYb?Y&Mdh?|hK~TsN5`EBfhPwyO{Lbf{bI#A!o#=b_`YQ&Z420h# zL_vq~$%*^55zncOd7ZVAmsow^xow{oJuf)smF(J->las24QdE>|E%n7?%BcbHsi2r zHd-)NO*Ayb^lW~njxX@fVd05ZiM-{%$gT(bskQG%m0&AX2gqf!88?}`Gk(<_NZ&~J zV}V0eD9ZDDppRa|Q_bn&T*sNvOG4>Uc-+YVX zoHmw@p;FHUR1$}*c{IwXrxeLreeA!*#XluuE)+`X!hF8C@bGa#_^elqvWS>tjZjML+i@5bsRNDFG@idNQWim#o-GE%i@s5FArkIKyAtv zzTb%s#pt9QRTp>FxHg2%IpM2uQC4kZ2ou|wYZV{VZq3B5o8pJsA-2`Uep)t$|D{P> z)Ff&<{5_)sG!H@fOX!C;5Kno&(u1C&1N2E|ByUSjNX|$uNxmdT0ahj7$@m76MF4gs ZW4JT zy_kNtj7m4q%x<8Woo`|f11;(f<=6pM^NY2Y=PHQB?{^R^)BHwb;^r>~Cl7-J-JPAS z6f{DUO7lue^?fq)5{vQ`O!Q3kjC3tZ!Gb255I)0X8zw8hy!?_>J$JuQ-QtqOz$-KO42}TA6?a7JE z!a|lnH9!s=d}f?%$09cQ2vE^ypt$E`M;779ZQwAFaps)9pzOzZLwk z8!ZT-`rkV^>NuP1R>6PIjYgwd^R8*wO47diGdTA7OHaCx>&@knd|e8)J_)rEP$}28 zcNNgV-ZSsUImU-bT7Og#8=yUF+FdP{bH#;krPaB`A}O7sn0C24`c&efMrhZ(vjWi>@@*3y0TBX+C}HLx}dJ6dgW_r z?bFiQkGXQ$PiTdJ6em%|j^+FM%7{=yNF_9g8?`8k2r7u6g+#kFBzmAwx+^4tAV>(NZEb4j zszrpWmKC+DMT?+KLJNz6{(xq#=fIuse!ufEGw0rT^`69f{#3AzY1JgSzz*4?=0U6b zYGhJT9$FuoLv0NFPUoYmiOEEJuoEb`wRxD_y+8*obvZq)o7cw&o+4N31x4MZw zErnxRP?^O=EpGp@0esRF2kvQ6Wf#x1gjK`%rWy42MZSe0Jt6Y6(*XWz0sj)^6>GD0 zsi_zdU3jS*qDG-L>=OZe(hd8I4zNN=CpPt{FlkhS?!p)or!@Xr+~KjUQKcpw^r;Sj z2&p0f;_RIONmduYgyhqb&#}6xx#R`OH&{IY`;s3@e$Jl8Ur1kP?*+Ia-BJyJTLwOW tM-GsGX72}hm;Qq_0HD!pxKSr5FX(0s0`xMc#rq`hXAJ?2GpGENe*+*dj delta 456 zcmX@Wd4OYrLcIYa0~nZqNeu=r26l$f&Zpg>Jp9{SInp{sj)Ei(z7ha2*?`RMP%x7T z$UMe!lm#T)9V*fxa+DRwiaiX}3)0xj0@erSH@}fcI}Va%_|JZv6{Haaj=QLEFmOzq zEv<9%FoV0Zvz3BIXi{ljNvXb1W?o`ZzJiIKsh*LpMJZU&L=(cFtj=i7mzQ6Xs^{(( zs#{!=n4CSikWqc|G)6JTj>&5ol{p_UGcY6o&F7eWld(8Z8)Ov}fP4zVmQWfh% zfYQ(qVGsoJfrh~WNS){8qfE-22Y{Y<0OWB_{>UWHx&WxiVX`i>_+%aC5=NWJ3z?-w zZGf@@Kr95bQ4vV{0I|*Fi_Gl-DnJ$^2Ll7hWgyxNO1nYnP!P=x3`!`S2oh`N4G`2cWddj+mc?owe{RB(_^<>58OJs@3ySFZY#RwwyGVsHJ$sjrWETs{y} E05$wjVE_OC delta 411 zcmYk0ze@sf7>D2Y4DKdzaVZx&yQ}MmNQ+HQxrksOI7rJykT=yJI1~nftsUQ~wY8-` z!lg<7k9Vn68hk(6@V?9QJiPGoeg)6L+atf{PocNu{3Bw@zhmy@zp?jIaJ#&h$!L{P zR+SXkmmv^JAE-$eIFL3FNehUj2^>lTIFbZNBm|D70-Q)0IF%xBCO%LXx8TTsnFk9Z za({fs_wLrKPkl{HiI~on#Z7JdLcMIdrCu?8sUDi{s3)ec)ElM;>P^$vL@D7Y1`pgQ l+nd^UrrtIEpx!qLWKUe3o9-c;|nmSOcIbPVN8z diff --git a/build/irq.o b/build/irq.o index 4e1ea31306404e46166e765c4ac33317c8cc0fe2..287d4d57f2ed26cf3426087cacf6b245a1a3bc9b 100644 GIT binary patch delta 797 zcmXYvPiPZC6vp5D*>+>rwM`luO(25_Z6y#Di(;{dnnDD@f35V8LMxbBXvIweo zf+e7ZIf)1L=s~dbptl}U@FWNxJZK>x=%sk_CZgZl%)p!P{k|FAo1NKD{ohg>=Jb0- z@feNg5lWIzt?82Ank?z{fk*7NIsc&JJmzRGzd1K8gJ>t;o{ILet=W>X+cMkKZ_SUF z2ovpO>uug!t5(O%NbTaaqh_>ns&WF>0Q(r?-c=H7zQ_eyKNduN@bd9WH|LbS<4!r} zkwr`*45BVERYRj@WT@##x4=BS`&g(zX(IF^i5-ifKN0G-EvvC$wXs}jEY2;gUcc3_ z4^_@?sK7o`gW|Q_RK-NzM{yh|VRuzQbnIU>EIZN;=^?L!vMGB-r!(WIjXlH%;PD&D zniV=deg>3?z3y}tV4T+j)d+N;euTSxWJD`~nti2z|8Ze$Sktv6m-c=0FO-JZ|QBus%8gHBIECCm%V0nrTeexlpVAuh|YWj;Xk z!tpz1bmN!g{a=}J?4OSRF{g-xXA{7symL?nfZD73y||)&wAeJ H4X6JBgWF=L delta 696 zcmYk3O=uHQ5Xb-f)!o#7*kq%vDP*;+jSY=OBQ^CTX(>g~Lso%cktjv@ZeSPQt+TsA&8fNSHXfGAO<{njx*^f4$S`f{olMdZ{B{2w}u{i^MQeG z?}AbEf# zdu{`s1~}@Vnbz9sv^lB6P&drOK4|DHk0C)-;4FxWjjTM*U*;N)AkzR z*>Hgs;Wg$YP!oQ{ybpLP{EB%$&=mg6JPiC4HfTg`1Q;achV(C>9RQ9CpJ7fN0xpPA OVPh0n7v5y1m-z!6m~OHF diff --git a/build/isrs-asm.o b/build/isrs-asm.o index 54d7daa2a3798d03818e0e5e1e11d6f8b7c6c6c0..674648d9e2fa7bda079ea3e74f072620b13665d5 100644 GIT binary patch delta 659 zcmYk4KP*F06o>DVltRIG?BbPj2%d^5kp@p27|B(8=G_x zktQUfF&IQlmfu2R5`#GB_B45Cc<1|0&b@g#=e8nS(b|SCxtm#Cb5Ha7#=Xy*nBV=* z>GgU_r>h06)UTr)jf{{%Qm6}IAs>v8A3v&nq8pz=0en~r;!P?&c(xS6gU!9TwKK+xG=Ek8JC2yrDodl4hW2ijB(pdU*VyYNOnpi|) zXkuWgL=cO`$3$*UM2HwF5$C+#$i2(|{O)`2zL&Qaxbf$+qSszcinP6#5_!9llFu&t zvrmi`Vj^LE06;YZ8KGYFB-MkS>eQW{T&kicw>s04N1f=&t4hw~Q~P?SUhOzjgR-4A zs+`j%weGYTv(=0rm#Y@NI)F?31wmZkgm8uv#%WFqPI4kR!HMEHrxiyyZ8*$n#{o_Z z`#Bw$~AG29~~0B^>|Al>i<#~yb^2E%liaOsPbKSt`2JOBUy diff --git a/build/isrs.o b/build/isrs.o index 6c33f7880618a0621ce4e13a18acda88d5fccc1f..32aa45326424c3f464eb8ddde41047ac0708d601 100644 GIT binary patch delta 1067 zcmYL{Pe@cz6vn?dzV~Lv8ONL%8|$g_$|g?53a9Z`SRTuN|c)ISjgvHO%tkUeIN|CXYZLT=|$?@{lp7Q09i{qo$%I1yZ znH48#K028u*@e%tj1JrUb8_))1K>x1xM_3qR@Mx-otAIPZl~jO_tIv@%`^{i27et) z3rCS(Zki)*X5auhuC7S2k=3Z;xeQq@#%N;HF=}Iu6^6_gwL(IO7#2GT6bJC{O#5ecv^6(d&B@(SH+L;|BiW)hh%Hkoq=PU)L4q3wC9PDuK^+=U z5^bTf->FMchXkRhjJhWj7Dz-Cbn23akRT5c9isPUpW(pF`+eTL*|+ca`xtxQa?9>` z?uU0}y=Mw0g4KjPovCl*%T3d+^>kp^ms^-8S9*-`-*MNhIJHv^*SPNFnsm(@pO^ce zr_U>np_Y9KePLex^jn>M-Q77mU=P+CDe5A zrZzd(YFN5|lKyg|I$&D$_h{8bUq+~Dk&0i=oik^2x0zC!0d!E*X^{PF6F4F+uxo&# zc!Etc-WJcY*8?xai|jD)MZChU1OAGmG>%4_*G7^0xyW&XX6vmcFvyMoXT@Xejld1@ zLv{o3O#GI;3HT)b!Hxod#1WcRYXo8xdBELl+K7XmUEl;KHUp=n;3}K8<+}I*n~wRh z_%(YA@Im~Y-2(g)hv|^C7|=|S8+Nhdw6o%4Y#S)BT`IW3iB@1j3huJofLZY?b~~^r zUScPJ6|qStt8E3M6uDuBP3M^t53rNKp!gCy1&mQl@CSD|u?=`6@twra6!kRl5BOww AF8}}l diff --git a/build/keyboard.o b/build/keyboard.o index 994a60f3bb51f98b83ffaecd9b8f95f05066b118..1d407721b0281faa0cb486b58e59cd6ccaa35feb 100644 GIT binary patch literal 5064 zcma);3v5%@8OM(uQ=BZ=0irexN}bNMDFqWCJPK(^NFY$c)8R3a5j(Nd1oCk08_a9e z?M>SxYc;0Q7O6;0H>5=jsYn-TXl%t>BB-=#Lt~+5bEDyUwk} zsvYV0_r1^K-gA6kTT!{vX0r*i*+hmI(}bwWG(1HT1!9885?lP;<=*V%^^6&#uy$8^ zv(+o(69>FGLV2S55CwilB`ywT-tLsD&gL`HeC^)F{689w>K%P3vUb~X9rv0YcpI1!*&h8p-&bwu!#rAlf^q(9a z3`n8#(qN$TNh+-NJ7sJhVm%nw+ga{)Cq^>jPZmEFpJHU)NoDbip0o4cgGKxu5+}-g7HYG7KpwuKrRQH>o z!aUR~egBT~oWb z$8Ie8UH@?6L5utC4^ZRvtModJdf&&d(ELMh5Nh;;np@weZPa&b8}z7_r?+aY`c7@V z-k=reb=oR@hxUZNU7M_L(JJ&!+6($REk}P@E7VtN9(}pCQ-4Ww>PxgK`a-QmpQn}R zJ}s!v)I$0*T0nnV+o4a_YV~hwVf}IK6@8M{sJpa!Jxkl7Kc>~`c5QL5Ln-LBxeq7h z%ie{z6>s5IOik`zVkF+a^xQa_vC!vzHEwRQ^HP_?E8~n8u!q9rwy6X64btnY-k64( z0r+IBF%T!3`&FWNyMCo!^>kHvoh0NyaHs=LbAZGQs(n`NpY}hFi>*C%T+|!c#={>S z4Dj3;r>V%f1pSH<^?pwK9koAO7L*CrSr#8x9K{dYZxlaNs?K9qzJV0@@tPQ`fNVEq zV>HiT$XcMYulRv-3uXRpxC4VBDRf>^2hQ@T6M|}dUDFW|LSK_1#7%G)dK)^))MFOe zv{@O4e?P~(_J~;3Vtd;nn>D`2w(m3FON;rC^^d@h(|lCpM~|?XwTVAw|4%G&pIT(i zB3tv)<)5a-ok`Qv?bo|$gj=?_r-$oc|z3h z35AR1WBlC>N_2q`t#ysB>|F?d%g**iC^TzVQ(GYl`Q|h)jm(DqSyBBWmC5>!s3B7O zn(-^j%9eNvD%Nd&&Qs)D=%bNyWe#rReVc^sfYUZL+u`WM!ScX9jeTp0r7q`N_EJ~2 znqgnHFy=oD z^DodBS^S#$>xu%~-z! z{tYk%R_Rr?y3gXTF6_K#uDC%c);>&S(v82%*uh2+QR%`S)VK&*m&81{W+H}mX@ zIV7H6Y;TJatOJ#(!A4VxhMRp#c#k4{p`a2JzPeaU_{bP-GYs`@EiK_z_{kV>hM#wCC3O3A~IE6sP%(L#KK)UNJh=lg|iD zj2B`OXg2auU(Ga!I*d4l9Nf(Lt$=PFH!@j>ZLra}G@d!`M9Ah^Aqppw{3LKQOB2m8 z$rVDOlQ3pOHtS(&a!hNzTzo@qH;ce;5uuGWtKA{~L0>(o_SLU%ny+;P(#=&HDH(ES zQ|a*2498lA7%%5d7P=EAVOIGd&4Jc1QQRKIEtnpb9T4K^w3+m%RLR1rTh+fs{Xo^#!Ek{#nBIWyD+|Dp;=uX$SO-Pm6u?xT4`0&IsmuQW*h^S1XRcyaGB+@*m~^jGy&7hK8Dcgvo0$=& z!ra3=z)UbZn4Qdbn1`5$nMasMnLW&7%wFaR=1Jx$=4s~7nMr0p^K<4G%nQulF)uOy z#2jG$g?XKMgE`E+%e>Eg$i#Ih_mjT2XkY0rC1x{on7Pb6CVhudoQLUU7BK0~C4V8a zh`E?a-)ZD8VU{yjF)NuHnDqTd@!Oa+%m6dQY-BbwBTV{kp!_||1Iz@ogW1V^hk1y3 zn0bVGl-a{P#_VODV4h^2VtTOecFd!kxsADpd4zeINzawyoyaG8m?ccw53>Ik1s}An literal 4844 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 delta 697 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 W2?1#kI|Ry?1k$xYtT_23vpN9qb!aaD diff --git a/build/memory_alloc.o b/build/memory_alloc.o index eeccbef6a87cba270c5a6dcbd8527f64bfe96682..23e4ea42ee5d365f38df57b4de1fd98d2a208313 100644 GIT binary patch literal 2980 zcmb7FZ-`V?6hAZbRwtW%ZnoKyn?2|at+bA-En$-6uw%PRDpJ`>s}AGNa~*d6EHh8o zm8F!?)p3%d57C!EDI$WPFNz<6g4q~DDLV% zYxR{P?%44kTdaOJOP-PakF ze%lMAQakyFJJVn=3~ySmZ>~y|DOJ8Y{ykF+d{J3;t8}WX{e*6uxaxLX@*F&GcQ^9O zw&b@Bc5m&)#I1b!o^GD_QhU<7)avDg_QGB2A3u=XUn^hlt?sa`Gxsq7FA6x>aO`H_ z$f`zO5kIfR9%#bkwOh&yz5nINJG)ytYPQf3&ZLJSRrlF;Ygp?UR(Jd2mCz!0&ASZ@ zuA){cFZ7Jxk+bFinw>T4J!js1>8j2lHrKW*gZeh`E>`Ajqhct{lS*QjyRgeOM3pbN zmP8*O-|6J`TY^zMn=MSFTqkWsk5~t1U8iLAMN8AENykcMGn08Iz0OLxmXl9gg+tbq zQ_MSAt8ZW?Ifz+5=6CSn+;v4Q>2^?DYOH!0(0cs>|6BjwPLIS|aPFeA{^;-+yq z&iB3S`xnjt>@0#;!FhsX_&LRx z=NWU^fX9N_1&nCJh}O6QPOLPWb5jQ)-J&lK>rv6k#$0E{l~_9ErX+T-RFYV+KtT3J zYgD$_W0K z%?G7jQ|dLzyR=;7H7Fw(a~=A_57QgB_=E8?=ylWnG}f|NZ^&=_!!=s#AD!_wuRyG` z_NRmdNi?-k;}&TUS?O zotn(#Cx;yu14pL()x34MVg`SlqfT1ulc~mNx-o*ssa(=~ z)5M*i|9c_1-UA9pl}u1#-BD$KQR$Nkrxh+Jd4>}FSC#!;Vibo3V!W?!De(}0QTk3i zRO%n0gnla|`Qu7oQu;GW|DMu+qV!)=qA>hSdB4c-lszIA^TT+zlCLQFj*_fvw120h I!MK3`0Rl%Up#T5? delta 973 zcmZ9KO=uHA6vy9gb~l@^CQXB>Xl+P>QDP&O2tf!`X-TP3DjKWQNK>t%m9%Jb(pp0m zT=$@1ibziiIf!~NP(u}k+8l}?1yL}bMG#VoCzT?^_tI(n7})vG|Mxz2W_JqiLdzY` z-U|}cN4P$311p#yp?x`ecxu_BXH~t8__YZuWH$UL*X#h9W4X`ptyasG!2wY1%MbNP zp23sJ{6k-K7Aps+bcddG*h>@E2UM+f`x^^YTeX)KkVtxus!9H@ziPFbR=)8)bA?%i zeS5T@*XQS`=(&KCz5BIx#P8Bh_#MvZ5Sd z^RmP$vP-OpY(@5(POAW2cnCAwsI&`KmQviTUvbn|0h~1@AZ%tuC6K5X0D|}#)(4%O zo&m1w+`xbIx~Ci(&G=x8#-O~jEMfGS;tIeJrde3d*e*XY0z6}{jBfVQI4#VuLuyc- z!74M$sr%&u=Jm06>Zafdt&lr$7xz&kB0xX)k5F&^@hoO4O(LS7DVPCvaqS|N0eVnH z%UV0~BgAo2=Q+Pj9_wzAV*EDe)7(EM#pbi5O#p8xj#v02=T+265pS^#_e>3(sPw`% z?!8=Nr1;`Ek0&`F=6;m>ajtn%%)iUyPsuw0mdKm%%92_ERs}pG1zPc=P@t0(1HGuk Q&v1T~^Lw0^IA7xYH+3t*S^xk5 diff --git a/build/memory_free.o b/build/memory_free.o index 11f8c7c59cbf128d6554cd4894f7c4437282b6c4..52df19780dc2cf698e84b2aa6c463a3eca4994b0 100644 GIT binary patch delta 427 zcmXw#F-rqc49AmqSGjAihf2kQgetAh=LNc>olS3~zW{RW|*-c7QlInw5_P)L0jrQtB zwly6+wu6JCM$xO3wn}BG%S6RQ+&d<|v3Sif%{w&m5YNTAjeRJrt~n*r zE8KLt;Z-TTJiF+gUx&KSz8-QyPdLLJ{l@F|mq}E`@09-FJU{5NTGgIfj65HV!*B13H&&3<_J!9>qg&q&vz6f9_>3E@vRXN=^_%P&dQbN36?EiOq+&YrxGQGN0TM%KwE z7)2NpC*NgM=3K+Vz~BJ1k83g~lRV>$$$?DblO31@z$|qjS;?f%xMcD|CiT$QKvmjc zmq7@SV?j6^N<%~$7{s8yfbn5mL7)ILOb|$e)TK{$Wme`)01AHqif~UZWR_s3p>rBPKEmWYHC* zGAV8O!uZgA=O!5c_}TE3!S`03^DB;oT+IjwW zqG3E_+6-LxO#TardqLxP*0teR;p9y?ZRDZ;>U?uhSbtm{&xZ36X`FA`MgGGa{cga9 zm*oKXHN*t%dkb;Aj}#YcDQG+c)^T0u;JP-1lA=kUK`{2D5w$0Iia{NSrxBlobG{Co zJ>&V7koX2oP3Kdt80#(h{YQ1;zb}Y9?m(`)_M@8hudIBczT4dUG2lJo7=iz)0~0OshCFht zZ>#6SDjSIVdhICHE3EaI9^XPKtEJrxVLhH&JOqW$cJ}R(s_&DTmslj8uVA8Qs%NBYQ3@6{(S-0Pt20{j<>i;8>bd)c z>K2zICTCABWK^F#jZus-V)9x>WzGPgy$(RDIVRs^lxOUjtjHujS%66Z%u)~S0m^6t zF${ow3Bs088YaFS#(>h$&|nY*@|lt3K&B_H-D?Iriv$m@&ki`qcLO{D?fwUG7gJePc0w4_vbQr%C$hJe` v&jhkPfLLI%AZIVU^RLIr_QxU4c;=zLw6e=VXv}hxdG#(;?7TOZTk4h|o zTFJ#Q|A1n=c+smMQb?Pk2T{aJMDXB2XrVm`iW;AHJFO1P{^oh}ydRm_h_3WMaB~Go z-Wv73!xW|fou8<0#2cql?spQ^V549!vr$LQSmM@M67#kg2uZmlh=vi{>-|DB&&)dZqLFn%b@Qa-8dWERKs)Qm4iS%g8k>Ee zvDtf%y^ChniPR-0d~hNNAR%XWkhMlGe4KCr%@#mTsvB&*?bvX%5#j+JVt3&=4(@tx zY+F>xEQIDN*G4K=rY_H2ny#q#W>S4I!)nWni-fY|kiTUk5BWirkx7wPXJp#S8$`Cc zBZr_L$+VbJuVuQHG>Kx|MK2_AA{8}})U1^h%c^NT6Z0zTJ7{^At7d%zmUm;S>B|jr37#;D+RNb1 zJ;f0H2rbob-)4<%Mu6y$<^(7#q5^9Sca=5z&S?Fd878j+`?@;*L;L<{9YbsO?bke} zIj&h@`l&|KeCQ*($&BE+nIWPlOx(s(P~hfYFwyW8$1&Kd)^D_a$GV^BtL8d$57AF1 e@_HcW1@Kb*hx$MxxNrLv42V2W4&K#lY5oPo`H{E) delta 694 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 delta 367 zcmZ3&zKm^xLcIth0~nZqNeu>01~!J!&Zl9)-L4$nu{=9L!p*-K>r^%}wjL;v>pXby zrF`>mF8(Qp__tkByx4i@;4k^_znc#NWlKMGo`{Z%J&aAe7+AZ&MuuG=1HXTUY0wAj zU~qSKwo=dtO)AYRDb@GM%u6iFS1{2t)ictyCG&F1&1c7{JBsq{e*U7C+%A7S!3=9*1JdVj5ndBLHCSPRg7qkcRg@EP@0cjB1 JaB?BDA^=V!U4j4r diff --git a/build/ord_arr.o b/build/ord_arr.o index 69a37a6ba442a5436475ae138c0423ed4ce3e633..59dad3a1614044f341fdacb7b223531fd703762a 100644 GIT binary patch literal 2216 zcma)7O>7%Q6rQ!mWlPL9w60pI0W8=`iKr|iET~B;>N;(jHfmFn08-P0t-Vn~>^R!p zqzSP=s^!9JWQhX@xb(n@0~c)G&0e$4>GOuQyge8CjM)8WH`5Kz zlI~B3{U1u}9aqQ3uYJkc9;CuEd;DAzoh(xRdoJ{OovvHaP3ykfLP!1eno+@252&=; zxYuaR3~kabzcu)t%Pe3t}kj51ZjV7%uYU*Y1<$Z@kAVkqXTqx<&5Dj(_4vKOFl@ zzw^=(XLG-aLw@3BEzRYjui*o8d}w`{a*|j0d`M`5zl-M4aTvAR1*li&pQ;RM$?E*k z)t>{Rt&-46D_n#%-#A0=>W!^_{~|}m32CNaH#?sz+iD^Y$ zI~L~r9o(sQ*gEPS#vYUUBy=1?c!X>zLoWwXM)>Vu%4omEQ%0l|N*nP&pAms!4W12z zY^DtU73Jn24&*ZAfw>_0cP{n#5o8r|7{by<^oqe5ajrnVhrAAXAm`ZqoSg{Yft<#y zJu>$e%~A@2-7~^y90TwT_^3`N;);+d8N27)*Y2-F=a@y_FOZ{@ixq_|0N;f?PX^SI zwcXvSF?TWVS=U+2^_+&DR6EDc#XNh#W3jB|SuA$lby+M^$mi`D*vM;7j!!sN-X`+@ zx1K;4+F|=-IQ`Zn0un&UpCEP&`~COKEUM!SrH%3_4kmUSLO2MaHQB^PSn)lLJ;nc5 z9NjzOBTb9=4mP&+zvLr1CABJ7#O8f+$ffEgft%-e4NaVvHaY_}$D`P*-mqm6IQnQK zm!c-EYLY7gk~oYHWB(9@_~(#>|x{-WRc-PQWvg7}*&5LQz+ zQi8i*S>X`=r!*G5?SnW;6I#7S<(?Gba}f2mDgIU9RS3OT!u0mlqIil` z@0R=m_%w#3w@COlw0duZKLJ*6i10eFdOw6&!O4zWjuXqUA?6Q-!0aA`*Ev6ltOw)NQmn&pg-p;$W*Ag+9voftYy;JUN!9~)9W4C(FOwCx% z;*f1QnaLKCJxu*GuI;pz8YmQ|=Vn_Hd+nU<+5IzFdx6ng4B+BiAdL$(1g+uTd?4|M t5`Rnh5ymEP903ErnNml|j>}o+fu5E4W2xyZ$xp{f`h?VzQqy-J`#+pupKJgC literal 1796 zcma)6-)kI29G}f??6%o9R~t)d3g+R&l(uWpEA~v)>fNP;CT-+;wUBPg=5A_3?r!7k zZrY$x=yDIkaG>C`{RjF`K{P1HH4Vf*o=*V_Dnv}1JXBgF4}tUh-JMPEv}gyueCG50 zIp6Qh?x)$|K}AtWv=kB}PZ%NnvCxtXpr7m@+alKh^Za))qKUjdk5Q?{)vi>d`-^(_ zH+6qiG4FucU+?GUWA1J6xlQ3|!iffUVrPqqF@XU$R8 zwpHu1z1&6 zzk~5MyR!?z+z=iPYU|Vogo$wjY0b%roX*cBf-4Afgog|+N1RquKRSu(UAM2+QwutJ zO?`W%6Li2{D}6vTIEMx-7&i(T>rQ;nHg^F^ZOJ z5o5w}h*7Z1Wm*AU#dfK2>P-HK<64C&Z2pMW*)*f5nkrkRl3gHWT6U=0<}q5b3hgnO zNoU%2Am}oq?Ur}(8=cKjixsZ4C3%W!sNzu8UTWC3r@ZO5zzi)>mkw2m^cop}9y{RS goI~6}$QYmkkLs4>-%9=v`A$MUhq-m^B4kxmQfu{ichX# z6kv@3>KB?kkx^LG637A?&cFmUu>eTxfb`j#0$H3;Q82~Kz`y}yfG{f%vq0H`KpH3o s2XlZd=gAKll{pK5hBg3soRfK(0r0Ti*h3XcUBqnE1e5gK|jZuuzY_cq)GGoqUM@DrpDL%P@Q9v^X zXp1(;MkoNe0)$PWG*p;j`s6|;aZ!*bm|;RddO8rhPUdA&=5zu2q5;U`m~6=;&v;~V dBvZeH8IUgoGOZvpSudF(ATv2AH8-(<0RY0`L686d diff --git a/build/pit.o b/build/pit.o index 14d683f3e5195ccf83d4c7840a656357d3182cad..d756a0415098d4cd9b906d22364001d7c98f2e0d 100644 GIT binary patch delta 367 zcmdnP*1|qPq5cm81eky+4F+xo4u;_7Hxk`GDhj*rm5o`mM}8_-O0efIoX#{o-t!`E~7eY2FN_1tnlPDi~?Yu(By-R z!lJf7VW6c9Odxq6r~zUNkUCpSAd3?u1O+uPQ-ORoAZ7t#kS&5h43vU{EkKt0WI-ln n&MiPgCjfa|lWm#g8C@pFGW7#p_?F3CKpQB^1k|hmqJgRa`~gJM delta 295 zcmZo+-@`UR!R!eG1eky+4F)a-c81W-r@_r{M7n)BcHc1(V(7fF3ncmdW9Q)=W z=gx_NB8DQ-v4?>?cV}lS1&z?8(!7#VeV@#{#G-r!6FpNsBVCJ9u%L-1gwHT>ixpp9 zeo3mHyI-hoaY5Utsr#7`tjLIf9`gMuN@s7MH2a#*4PC4wdqatX6;$6auCWTu6z2swDk z56I8R!T*qe7k`EX4_*XMB3a+->Bcdaq@eoMtFG?)p!@6VwdEiP#7iJmxnm-sBa1d* zR)%FjjxK5^;WQoRH@#lZF2{d0M>? z7bB_}n^;sM&qZY^38UwcPi?13qB{s-ux@?&oW+TDdHx5c5X5mjbitg7tw5#c-0v9*WxedT&&83CLVXV~)*-bYa8EZ_GXPjH-95FeSlGw(UtBW#fz-Ba+W%AhC#k2MJl)k>S=(q?)!jxKXU(m+ZPxeAUYZ&E UE(4UqIaM$m-d#cRh=>{90xGIujQ{`u literal 0 HcmV?d00001 diff --git a/build/stdio.o b/build/stdio.o index 6a6ca227316705910b04bc5f4d0694faadb876e7..42e6c84234eb3359f7ff9fcff8faddef2ffc5167 100644 GIT binary patch literal 1480 zcma)5&rcIk5T0!ptWesDP1K;FCX1;t*^~rHGE}S*C@f>T2KO5IzZR4?{Rla}Gjea(N z{B1NEYxPQm{US6tq;0$_CqFiqpV{%OeF{-|I*!Iq`%X3_o9KL~?;{x02-Poi$ z*Gt2Yf}Rkd>IuKjNym&mtmjx!FT#qR-g>)yP-RYus;7K~US6kPSoEf}-)z+Pc7TuW zE%7)1@+s%1uI9JE?EO3q=7x=(hJS@o3Fa`B!w5gw;ZJw?&pUkF0d)^hpBzzGESY&) zTv{%bMUJLytMI^HCDvTYDii)IuP zs>ApSt_|kZ_~%@bcwOQRApgWsMqe+{gv2cPAkiGKkLV4M^VcN4m$(Jw{11%C|0MA% Tc+UR@keZH&>4^&n!!9u(@2u0KejN-q*>5Tl?W6)8#CY*rgI*^-?VdukvG z3B{Y*cB!WB#beMO1ID>&+@F^fS`S>x1>2*4U|S#Ab8ZwGi4rMAwn!?7m$m zut2w~{${nYc|hZ%jo*56O|_2tS>td0cs;@G>xn?)Yi(m>HaCZlpkyL(V{|N&_sYV% zoGO;hiZdEFCX8$2lU`elpYL!Y!(A*1GtVe09h_HL#eQZ8`-LE*U<#9ryz7!-Ii-?a zX07Z9+eqHajJv|Lo?=`76=&FmYa5hq++E0bsr>crIK{t*WDZ#2i7I252kh`6KPP#R z5i#jo3tX*tk#qPD@?BvMmH;BK9%@x!4&%B+rCShvq3AKzR8LI9cY7Zn`~jan#YH>J zaRx&?u#cGJ{`D^LM3r?Fs;}Y-{d$OgwUiF*e^ucA4&dq(J5|B%?I}Lcy{iaI!+b*6 zH*!z%lZ+~`4?__~@SA)1%pU$^4|ka_@p#1p{m2!CqGMQ8EH5|}k*5c?S-4{_5|6xN zRthQ86=};XTTa357lkQ2w<{%W!6oT_@vga$o-aNYT^9?g!}N2!hZFoA8edlX|IK(o y@~c2T2<$I#nCQO5Ip|R$yd3Qa(Q6>ry_NV*;(H+1e_}-a7m44XbNv>O>vsVbkIZ!d diff --git a/build/storage.o b/build/storage.o index 0523a7eea16e96b8ef536f1809bf97a477772a27..c6c6d5bab5a98224dad86d69745681b743e32d06 100644 GIT binary patch delta 386 zcmey(x`Svu=lQ~aOYK~rNMtoXPVs7eWMn?I` z0*u^~6&OVrohF+yDl=A0Ze$dnT)-#*W~tX#01Xg=ng*gkJ_KP)D9r?Iaa z8CW0`gDH^agt9@D0W$*w2apC~Rv-qc1F;2x7$^k?2Y@VR28PN185KFF04-?%@;N7K bGRZTEFi-Yk>H|9WCX*5;g91>T2`CQ$eS znpaY)?~|FASd_0|q9<&sXQXRU3Klid1PTE86Zf0*<>i;8>bd)c>K2zICTC9;WR#w) zz{oRMi&2a*WU?cpGHVCO9YB`wR1I6fgp55H^LpQ+O5y+j diff --git a/build/str_ops.o b/build/str_ops.o index 5de848bfdc0c0f7950d1c3978f79668f4d0c3eb6..f10f8160bc1c702a18d989944935a993acfd3d54 100644 GIT binary patch literal 1284 zcma)6&r4KM6uxifWiNY-Hi}pdG{KXU;AJH75`s~u+(<;05K1ym6SHvqG4lp8gp3(u zX50pCTDt5Hh!!DD7)A?gl|NRk1Vw5gK?L@F@7=4@st%m_&Ue0h&wcm2^XAF*!5f;U z31ylHiX$e374VgA4?4t2VTi>$mR??)?-6cYY~B(1U!7~!p~bjmKrkytan+4f&J;J@ z7H2&lj`ew&dM~3p>+W8~sDxi1z?{!nqv6GJ`vGc?$O@yD`G!YT%%+mr*jHT5@7G9` z#^M*ZskH8FxRIDg>YR`H{hbD9qv83xr{7rV=f=6Uk?QbJVb{PjH7|}@t#4UzVKd+I zA#Ul6%euAw8&6PP*$J0d%A>fC%q%SD_sZW3?~RfBRWZ=t-xKW^xOulT+HGI4FJWgh zx5Ko@w}m!mXlB~MEu zH3PqVsLgm<2Y3;_1dmJYS)ey$7J~hu=DCoGGpfBIeTABxo6We1aiE*^F|DF(YQlC? zk6d9tNVo}MkLPm2PEKVqsY&FhrqW{%vx!WKh5paZVi{+rPA=!nY|EJ7wI0a(o?t@S zCkX5xbKK8$2E1MJAdnWR9ZYal?*d}3|JORc3zi_#STF2{-Y+%!HHmWcMHiB zGF4A;g|&HI{NTrOXn%k8eBRm<$a(sa1rOh{p9_j(_;2uy^B%@+*jqLG&aX4-@4Sr5`#LN*B$ocREn^;Ke&h=y_wiMJ$9 INGwVG16xD0{Qv*} literal 852 zcma)4y-UMD6o0X?Mhryj;@41dP*I~u3!$sjF2zMMiAWj)iZ(6H1?*&@6)ar^SO1D2 z;!t$zR>$Hjy6WVn?4pUeIIM_kzL~!dX+5(!W8hC=uK6HE{#fM8#(=${ zqXntkFD&D!mej7hTF~A5nYFLp(big^PF||xIHJ|_KX9GQ!q!$Uy=0brm-*|(W7n!x z(iuIgZ>|}BXl9lp4WN7VGP6pEtQO&sV9YsVpdVVy0=?vUpxc#l*>TZxE6mXgJLa0l zEc=9Z{8!ClijFPG({y$hoD;~L&m&SU!Sy{y0V21EhJyW9ZWS{$Zv&f(=Bzf=&N1jy;MUpO-HpL$ucKAUqQmG&d+2aGn!@rOi-?kcN)SyCO}`lNz1C6yQu zs29~DskVtC9kV1hR;%Wh)_iLH_D|Q%^Dxa4%wfby(f?Z)1IjL*VjOib;HX4Ybvdku zuEPGF9h}RV?Kl*W{pL6U{d2kxtigUu>@e*2CX4b1YVgkvp@&86c!!wi);WP#>{tSa zQk!5d--Z%&#a=`Q9D=~v36tL(^C8IkL%-wfm|bzd9VW}16O;Xf3l{Tbx*JFy`0oh@ zFTMd>rk$@U(Qt7&*I)d{NBG?5hBGk9ld2XJ=mY;(44nAbhw-jaZTgm7fc!#G!^ElS m>g^=7nl^MlFn-e6_CveXvwJ47Sc;i={7GYsLrh)+d2mm`w`!XJ diff --git a/build/time.o b/build/time.o index 460f5d660480b264975490152aa8d40928147022..2ede2484da04e8b823263f417db97fcf2e4c08e9 100644 GIT binary patch literal 2692 zcma)7Z){Ul6u+;1-8xpg4hxwww_+Z+Mr^iZA)pvjx52plki89LNEC(w@GxTF7w0F9OR^syhxB74y-s<&`%)&um^5bc zX5QoJr6-qk79Ka3=WFD#CCj?6fX9lC9D0t7{H*a;x$$e6bd?V#hwT1Qea;EpHHvuY zRAcvLqDm9SpElifMt6NpX}vwtc|H%h*1p>GN}p^VCwZ+p-K8|7HDx*PQoQ@WTiWcI zxXcHQ(L7z|y1Wg4#zi~79`W}@ct|Pzf~Qg`J}_|!ii~2&#)yOW8N;A=SDa4ODrE-} zpIxcrzfBBL7Pm>2l?SoQ5AN-n`5xHA#?@)5kmB2)*b|*TafM>@`AJ<&9_Xj^;w69Gm zF}3YCJ6vW|U-vMDp@1Gx>v?4`RWIv{q;!K)p9(tkI;r9Z)FqhLQ>*w=!Tg?(Ql5Iz z39T#@EI?Rkgm0R{2a-ptt!tqsL$=1MGvH3I>IKzXbmSfOcP5k3L$(aRVcaP<#>%9h z__%S~MkQK+5*@(>NT>NY^}+?+i(VL{UKlt)r^udQTz_7|BK_3F&h$gDv-D#!zT8P& zftH{PMa7)E$;YRWum5A3_mju8_9w4-bSPX_M($!u$!lgCOo{^CYj;rmZu&f%Sv%XY z*^@CJ)l+QUY=>!19`*cJI&5GM6;PgU?lE34-`q*j`@IxE+bL(yu$S2uwu^nvzGpXB zu~aEFN@$KnH8oHBDi$@a^!usz`)2Hno> zwxHX!(;jqtcE~}uH|ek)b9?$>`wGtELAQL2u?3)pFeqjh{b2l8T#dWl&Ly`OnI?s^ zIS6?dBVuE$8A$OvY26*PZc?_bbGs1Z#F8>S{t}F%7z5xx3M78gw#qG|4j!l%F^1t2 z=Oo+j7&l?d1Co%2^NUAXO))rXjF~CM=Z6qDH0DyRZ9H-q#QIV zvp7pN<~y)AA=F(YGcXFwS@!b@ln*ea^HMzVoEWn#U8Fc9Ca{x;d{1IdeBpi&uM!-} zkJ6e#JoBC`UD)SACm!)h&Ve^IJ2k)Lqfuv}h#LW~o*b5l{RN@to_7HbS`QnYmtMR$ zZ!zZL44AS?hjrhiKtyUnu_oEqBgt|Y3o)lUP(JD-S~EA_9yqDrgou1X7np08**N`X z-jjd-=cW9)E08Wuoei-w93n^T=85kc?C2KSGYP%ZsW_#N6bRi-G2;C|@rKDCgf8AB z>8qfNH%I#G(1lPPIx)n%Bfkz^ygAZ86=Wds4`Yb;NB(or#oHr&2s+h>_Fc@bXGVbH z4U(T}8>4EVh1ImjHmh+h1TEA~-xZw+O^vdp?J=#jL5<}SvaT$R5w|AX*3!`y*3{Li z`o@NEr)gZIYKvo<8jpqBh{KvTT3VAvs=3A_3fXeP7RJ?09crwlGbc78Y)!3OC+E1& zr$q4;S~#vTbG5ihjW15rw#QV)sU~Q+<2XLyTWCx3&$;-AVkq6v=L!3 z(B@)nCg~3|_JoC17S6S>#=@l*t_M34?o0SkY&@Ro%x?4SHT I3+Gw*4}kYLfB*mh literal 2240 zcma)7e@q*76#rhY{DvK6gTxz#BgCcfl*pYMC` z^WOJ;-@R+!vDH^I3`2Bb2un6KLduLuPq_*uB!^@Y2mMou=Tqk$8d#;l4cV5-MeO-p zBv2qba=A!wyE}1u=^4UBoIBiCkH-iJKWgUsfZ!995)4QxA#Xg(yAop7PA_Br4EGooCkLXIpXsdu*X@VipvxM!r6l$MW7Bj+4pEJ}k+n)pXl!Nm$7?{95(aGB!8zQk%O~x zAd@~XDNLxr2yZy9?$V@TrsQ{sYfk4Pw$V^^283S=HNy6!kjL_BlGb^)ek6C49)lI4{9#hLhw%yrGCMhxbd@`1t$L%4!M#b`0ea zSn3C_YJ`+z5^_$nVLbA{M0UeMT~BdN-+&E8&-VoEk*~Y|i&q95%x8dwg1m>5TlJ~i zD?mdY@=?wM56{pAeYjrGP`6L(1!xB3pqOB#x{!B7^&}rU4^giHJy95|!(hyYJ>C!R zn-2?nmzu94gODY#>7wV;bsbafMsf>(P5+hq{{b+6>Itap-A;zEM4kDRcqk%8SeOE= z8Rc781<HtYjLJ`vp>-r7c* z0IGc66TBcc`A})>@r%5N*nM8Hv!3@pNJv^--EDzxm&hOG`L1?Xk7}&p#X7IZ3tm?@ zW+E+aO>4o!R7&F(3i49Iss;Y70Pk(aYShNw1&%ohFn7Kp}rmF7_h#o9$}(-zXKb(|X#YRAF% zCT*r7TCS4i%Ci)v{oxPNR1gzPXh=g8I<}M>qJhl1UVPpfWm{=Q;Nr z*N(;toap$y&-?M5_q^vT-~RH$-GM+r=oSzmaRUj_af@$hm7-Z}67|A;uW`jlh=>sH zUN4u+=V)4~^ZoE;B+lISA57B8qg@7U@YwlD`kj13GI*EVrC9%?#}-K(FFFbHJc+0O;cPE{YWgkb9_HCb z-bSCuyXZTtIsCfaq1Jui`0rYLJt?1&?$EnYTZ z6b~j^y?CPh8WchAa>`F|vd%4+o!|2(Qj{rAzcum2wPPPvIM1nBp?2i!S4~{$4G2+` zmH#CZIM2DeZRLrex6pC+qO8XyyUzV**|~zBi7(0Ic3zs;=FS^(2bSXVC1Y;k?I6o3 zt$J;xxwwgprOtrwY`ju3&cfLr(u)Mub~t5t&&&mo?_Nm5K6{srAwfMXk4>&&Z+;b(3ZEgrqY|%7 z<;E6K+w`M~sSyt&K1Ebmt|2ZCrlO{o2jqVl}PC7c^AEqzZ&nC zod-(BYAN!ag?EA>8CvYDIZegh2A^Zq*^EIGSc))DoEJ%ySLMOL-2rm*26=`0{+m%Z zYwAs)Hszu5Y1I{RFkw!wI`^hoYf^ZzwO;(s5a0kdF9cHMje z_iFYABLNsmdKQwF)nD{uZB6#JHWMRd7;F}- zbY{dF0vTF$Y)+arv)zWwYIufWmtnh8sW!8D_rAW*nytzElH0)(CmCAcvHc=&Ivlt& zVi>cyj;L>x79sMKsi+w|5j9MFwxUz_Ji6$NhTR~IKaGYvqsAgsybz9{Zw1fSAnEgX zurnH&33Wzeu0ikKXbg%)Se6mBBAVgG8|Pby*`s1+7~_WMjt{uP-B=car<`lH4Bs_$ z@=w#{aq`a?ozb{kmx{K8E(fA#0qP^dw}VGGe7QE@_!zkjeNcSr~IXjeV3Bj?+pCLrHB8+ zap|{DN%FE?g&+PatTfHn4-LODMcIsvLi~XW)$}|L16SAOnHcH<9qYpR>AGyjx1K9L z#U&W47fMrCk4e8C5XF!L|99j#!$fM*0Ne}h`*J!p0f5oY~tz> zi1n=fsF0}IC^Eiwu|u)~zAt}6Vk7?i#yjdZRJgkKoYyDNISTt`@%Qql*Wu5t!(8ub zfBvgkjk|$$BmV((eLr&i${Kk@2#_+TZexP ztnWJd{~TD~bHu*})^{55%fR|BBYqWF-&@3Q0P8!7_%g7*kBG(Ou${~Zyp`%f6en_c z7V{Y~Ycv8t9DE+gL!3OMIg?~W_-j|eoRq5YU@;W5*x&>EC@Z&gR zl)w)vIRMG{EG5Q0Nj>T{LySC&#K`me3ZGMWo*4eWr9}K+sJ~r^jkpA;zk?F<-wjFq zpwfR+>3^c|uN3}3;RwcL+;K|qN^b*^)r>s;qL5BIqbn@Nlx2mo;!%1D7>$ zSp%0fa9IPFHE>x2mo;!%1D7@M|DFbnJN`PT7qUA)ci!h$Dt*O_UgqB3j^}UR&J@pw z-p*7MyNpl_cg<4_8_b457L%zCll>UrV{zvXRFv7I$%;0+jmDYLre={Q4X8TA4Psn& zwBy!jlgK9*pa*y>@whT@7vjDTxM-{ykWZ~KE822@SXQ*{K2uh--5s7Cof&2fi?##P zjHnjS?8}Nay$13W+)v`pAFL?P8)f?Ynf^Yecbl@KQ^KA$M%#cvQZtg8_EEMYxZfSB zD97;ZA}Q zA!}QRfxdi$HsB8iLD+I0ik(Pk9S)FSHTdC-InlX}(aWf=vuA<03+ z%|u)@)8iuUbKoWe7bP$f*9P1K;Kce3@GQ3l`W*>ecjZn%+;xac(s+YVc-?~fWFAX_Zv>wDB0e8@wuyBb{xJgp0_^vZ4{uW z=Qn|i0}f3^T%%P93{uI(jj8v4>J?lI-Y)QA`W0e%P9}c}GE6OS@eTV#EOASEZ%y}Qjztm&9Ky*r&i`E(ObinG~hB3zhktb zRBQ3w*m0)O+0~4hb_3F$McO4jr%f^DbxrF4{Z6F4a*U$P)zVUr7UT4Q9%=6%fo2kD zgwGPXzEjvT)SfYW#G;M*Ea}v5V*6zq1wg8d_M>7 zix6BJaPI>r`ft#X&SF-SkAaI3DW&Z?fIAM{G~$BWtlgLyRAgbdvp}n)E6QQgqAeQ# z5p7~yCY+U zeWn;Uh1e&{`X7#a8X}B0CxqFQKi{@8St@_WjaPNeGPCiK{(3rC~$V* z7P7CS47VDE47An@syI;@_O6DECunrgfVF@}EK6I1K3fGc7LW zZ?eD#1>q=v3~=ediS_{=tHHqmdx4BD%-aRhyaBdniMa+9_Z(+7RbT&;gWG-p1PGX?msf$y#y)LSm%&mca9a$wY| zkLyB3JAoSt+$xP+N!Q;Gmy3sY3q@8c+X?P+^_*Xj|n+ZEy-7uKN`TS z`@A#5e$&10Vtr>K{kyklb_Y8_w-v^qmI!rNc2+<++{s7Y4JRiP9lclrX z9bwlPIwxZNH6l&!t)1)iUEpp34rVSc`UD?vvw^#l7-4_LRr;LK1V+C@9O-yDaK`}m z2jG?w0eZciFV@;Q<;?)i$DsMEM$=i|6yx^J;tD@dhBWgRbl=V$;Ijqs%Mh>YO|(s8 zb)cQFtv?T%y`X`643;fB+I~-$wtft>$3Pq3nYKWmNhSerx&mVy(9FWMFFAl*wfIkKN&w-zfu(Sa>wy6Q#lEwx{u=C&0q<|(BG{-@M z;h5kPtS@jZ4XJivPpgo|hct_|G_qb71oB2TDGz`qZehoo1aVt|8vq>4S6swB58M^N zVOSHu?FTL*B<)AQwINRo^#gQgfIAt2Gxft<0XV(A(8gkbdl$G3Oxa=oRG71)8l|7l z0WIbJSfdTmhw+^dg*ZUB4r$&(n$21osgJt@`e0x47-+6t)Uk#lXx2#*+TqKHpN9C| zv>iwmwo8svnDz+bPTqk&0%5(bZMVs^w2?N%w<4Z=n3n4j4g_t8Bz`0D!cVZsTBeN0 zoeG+4ROB_J!A0CO;N}AtCos~7ECOy7a5oayp~JiMw&wu48Z`HUW@Kj?jKt+i4|zWc zng>8Lm^8T3aPI`}5#Zor1@CVAjHzAQ4bz@Q+W$t{x&JP0R@byhrlj;&lqRIbL+I^h z=#4z50kIo+-M@A#&*H8;X=^n|dkSeY$g@LFP<$s-6Zz}_?GK!VP>-jO zHW8C;QRjdiv)hu>RvflL;E(LqSISN&_w*xKu5ju+6m{_O$@emw>n_OS}4f#^oSxGUCP{EZfY_M1Meemm+Qv z;xH8m)-U?14Z-3HJw5aa_??C5D>YWHIp z(f^?k%h1u|Poxj_U&ck<^naj#7{miLdbhD-eLNR&4ipteu8-D zL;BYL4*1p-pxZ#x02;XXE@h_2%MJ0_tji<}oIgOC=~|i~JH=QV8EK2ttdj+xJqKEU z&vlX#_DT13Lj637^xKNGHVW8*`x)T=3fyXhJIYlQC>M2d5Hx2&GoLgp$ULbNAMm4B z{QJJ&f(l&-8i*a>pJKctz~2FM3TS@&A87c_=mXH)62ym#nEG5N&okJ(!=}`J=*;x= zF(I_m7lzdiQlJ0M(4-37HbzWrUwCzR<-lzU!kOFoE6^jAMOTM!C&9vIByyjMtsgM~$7!x5g zrZj6Q?MQjDciq9JV6?#J1b3@t#Vb*Pg8k?|P_4eVYvqa+D`eS>C|lwIh#&dh<}aAQ-`o9q zwM?tNrIv^Sn3&aXerj*`udaFBHH;Y;u4;52yBPiuVl;UKk&{GIqy*Qp2)#NN_fXSu zt+?5}5)MZ07i#i{3(8J{YGTDM}2?u36a_UA%$F50@*b`1F?dSx*I}%aC z7#Hb;0-6&-=pUrBNJUIgvUmZSYtOkhfI^s2U!b1Kb(Tm;=IH24mmo=t4t)h^)Zw~4 z?mgA&!KSvMO}<#e!6qS^)RMcUTKyKyx#?uA;eGcBYvTJ}(-gl|Pybh>cQ;nM8!dI& zz5F-Iyb|=-pLfb@Ga#+hCs67sev3}G5-~`x8SB5Gd&ESr3TEpZ1awmfhq~-=5Q@r< z(+LGMpbKFH2!#P$x~P?3Kwkk0mZ>hA&PLeaVVzJwdjX;Npp{l>s`jQ%QOAH-n93hX z%=#73uSxu6Ct}l7)HeQ_jv4)nKqtym3c8>&EEQlt(whYskY^G=k+<5ShUqzt)R6)1 zh8A^0<$v;ZS|-Rn}+s)x{bnZ8HJkwJ7O_sy?19nINgV#hBh&IY30Jdklx2pL;iql%10Q zg>;csRi=Ng_1Qy)J)Xhj*<#95)Hkfp4kkZCvu7-k_5JyEL|y)3L#C%cBhvR&y^$r; zS6(4eJ1Ji6VON9ygvS(@7=CuA4V{%qw8=b_%o~;W!OD^n3?QDzcC1wVf`hg`29!vfek~qF;U_HzfnD!slJo=M*6q+e7{{} zB1k>rxAyS*K{D%^UQ?91r?zq3IaP=va^6Ozr;7|W(AYV?@vVScmL+I*pEB(WXO_G~ zhM6LZ3E@oGkz|Za(mX%UGnOJ)pB>8*gpFm|6`nrJ(cpJPs|QYdZ!@T8(3_goqo;RR zfl!aCXHG9%+?*#wu|6BlbhVAnv|W@%C|6c`iz!Qyq58q1R${Nnbnh|BDz`o>G?v~} zb$FjB4dv~S+*gPmbYU}mE!2*_xHqb$nN{!vIW=z;zglH6e++5x+fiBQHb8BzJ-jYD zUD(0K2vw@Lab2Hup^J^-LNU!s9;+49HqWd$yL&^NMOj}lZPe@a7Gu4799(6ud#)+U zIkdKMJy70_VAJ)ej>whP*{EQvYxn`tJ-+#}b z?xRfUO~|rqBFLHEw6WVnQBIL)p=ihGdF-ANG~^9&u_(I3b4B_;@9D3$sizZvGW@IF z9#&_M$OLlFrtcDeG@MkgXu(R2XeAuQu`y6%F&<|e$A9*^oVYMgMEd@Xmik4;_PSW( zwDhJ8XAu)tXNvMfWU3J@*tsCgRC6O4h+KeVgZJgcaU!I6Cer#mBWaLepW9+ob`y_y z%oh~Jn-e!gHO2XMX?@Uu zt`Ci65qS7+PsP-y(Pab75xZ}OfSn`3ED7DZ1~=P(xy&f|oDyUzp3L}8hS7^ER)Zjd7(u4ANNak^+ zUXFVK*X^M^nKg%uwR#Dueh;MxzvPl)zup;#0@y$Pq z*I&=N7hqUZ%*>ib=hfY19IQt#1`%pAs8H;h$1uxh^qMjajfwlcnGuv{8RYRhktsFr%LgR;KI^lh=aPNX zHrb8lD*hR=|AJFy(+iXRUw=l|nP&8qvc8Y->a%hU$cLuoJJrU1C|351Ht5iyrpEbF z=Rjxs;5wzQt-DR45gQ;`cKRo-uiblX99lpXtX&7i{{p>}uK-e$8zP`ff#1&3OxN&o zHaQDbvsCNStu-4UNA-BcT2sM_LW}yJ+00z@7w{BAYul|g8Hf_K?sdi$dQ0H=z@gqW zFeBb+v+izW{zb^YH4=2$#1}g&Gm1A|ld;^Hp0RvW|BMmVn$J+&j0M)(UZ82MCQxXt zy@;oOW`@gJ^BZE;Iq%G>%$H&KY8?yG8YcgFn<0)A~n5YEd2$)1=3EI$~hJ z+#jHT0tT)o#ra;uYd1cBsZslvYD`GVzQ2Ps+A2v`>7-+WNIP@=OyfFHCylC)5dE#U z(uA6_-v16F{NX}(aNR>ioNw28wALg3@SRWvOna6vZQW+jD8tYf3rj<1VX3p^Huo3@ zOX@bV-qd}f`Wz&{J5~3o1UhRD(_xADRea45s;-$>lqrDyE3lhI*9!Myp{|agkB}o^ zkRowHjZN`wM|*vVE2pG*OFm5;+k@aEB=Fq}f|;)4h_)ODOfr!>3}N;DfXY-KR}u+Dq`H-Q+!uW%vYf?!5`Jr{8?)8A$Kl5LdFh z@jjdKVjn=?{Sol2-OBwoDV-nt|`#@W3K|dc@iLk5R%5c|I>URlmsQ(JA0@wm+EErv-Vg&_X9tfW3CiB;bEd-bv%!7b7=?c_*c4 zqr+KH&QdTfbhjBd-2%22t!Zgg6$9qG>D7-^e9+gipUA&g#l ztu~Wu7zIy9xjfkxTKYp%F-dH+KGLXHT$%^VK8W}=3|igi$rkOQo&XFzeV_IIA(CSf z3a|K0sP`1I6oP2xKk_@>E3pOYjp9mRJG@e;tz=NuS3qL#tv1+gO8P&o?(Gm-RGIo? zea>JG#jaykn(tx$zCGXSQ+q@przvD}0R6Lnp}NQYsnt6})Ax)N>+TC!gW!^lw@gEp z3DJYCpd9>!xqWNh{cWf@%p&tOV4m&1WV6<;LNBd;jZCwNzXkXP#ri_(Q1wj4(5h(Q z^NF8GVa8DIU=I<6d;-m=lhFvzYt}MxJqtFslFd2zbd2+oc5e41?>b*7MwJdIiUZ&{ zE<15WIM>ja4jR`TXas4Bb3SslYnEZtEQPx-yYu9>T4eGIWP-uwjT}*o$q_CP1Jau+ zog*Q}e2P&D3gnoAY*MZ6c6fFF6}krU5Z5{jV(Pu49Jyq$>?UalFdfAg{SEZi;%l5B zY%1X;%yNW8AIYa~NRq01J4pw91e6eGL4c*X!o_^DpXnV18IofyrdBeX5ZC(U~E8XSUp-h&7~1MK;lG6*Qa~BGSU^2?oztocaV>+ z{2nG<2IyMFvb(nNfX`bOP_hU@9 z9$4waF-YIZcKjl4Mcu=_`^(UwHD`#(Q9Iz?HUmlvvUC2f60a+`BaHNfej+$g)+xd;5N&;wi3{M2TiNP; zn;5DIA~JG9Q|TLjBN|s}Xwf$zQ*`t=!!LpNPn^Sbku&?LX|KMfsl9${0_)bFR}uZEp~YtUO@ z8XydDntI+l`9hbewbwz9!#LXSDmLC|6`l*vJ*wY~>FZCBpP1c6$0h zHeIRuMB&b#uYV{P_Ecx@4fIAoT5W8LDGcP|eT3@M6)y9SMZPJXMR6Rrrm6e9xj(rt z4zC(R1E%7Nng45Q)AV%%)gu~zwOP+0db;~UyX!=YDH-hLNbCrfD#T!0tc_x{T5qe% zj|;25IMVuXlblQ#n(D9c-hNOlR#ab#tQz1oRazoAXdk^ZzQ{!l3sN^|^-Xi|d?G!W~y%T;K|SkwXk`hFRq9Pr;gc&4*v$y;Y>NnLF!mYo;+Af^)^CGS5uio-k z1-^1S1;>gGGL+pf7J}e9*jjvPz77XG;dDn|Zh8x`Ao>?4&chKg)72W(@ZME{?hQ0Z zlzN2Q;VC^+QrvC*s^U>+7LTd68pe#E=(jcZxdHazdl#hsz>=;OqcUa}V!$wt4F6k( z7cl&U43pG%|CfSBbe6CU`a0k5f%8n!hbq4yt5TT++nPk<6=aoy%t4bvF25z&G)a~a zOg2}LaTrIk?Iar}$;JnhB?z)OjqDkcT|`Sql1{Q21er}Edx2!{NU~0{9X-J!*fp|O zN%o8+>m*x)Ak(|#{UocEWSwMtK#;KqXAyeWfoyR%vK5g`EMkGGoy^j@5$z_yOn=3G zh-6oEBU+3g6KlTU_5sOG!UrSVNwjaiU_m*cqiDxT)-1_7sqKIuOVh|slI$@_)=6#K z1zCnh_8rMwlB|>3HVCpzjqDQ1=5!<5ErKjZBkM)AUDJ(h$%1T}Mke&8bR%0YL6)MC z3B7%QegmcMB-^pisgP8StUoh-4rK0)DbdziF8Es=?}RGx8Kgm%LJf{!g3Xd|Ck@tt z2Jxd9Ux4^?Q&J5sF=EuFz~dP+RmK>d!7+0gGg8KwI>jt!Og|Z8?i5qQhI*k@;zWac3?=@o`3H0t$+zC;LkZ%;;>tXnj z!(_ks2tzCM^H^!h!8DjJxu)T1#&Z^)V!_9CgP4tQH~@48l9AGviGct*qQC;L)_+($ zFtWSgYgZt_oOrS9h-re5bT-;ntO(6QC`N>4BE(q^8@o+lW*}q{A+~JMYjH;$#J`rj zhk&xm6q^mY{xT@dfV0~&<~=}Pp4u3 zKG9eoiuCyb;q}~U9TP9|Cn-31YSMUS-anu=o&&gn1ol)nDsjdSYz(DaOAXZKhyr$oI zV_!S7%_cU~g<)tGl^rf8U8qI{bl7ob&=w+rIgMHnd9&fffoBQ|ol4zQUou$le-_-W zFO2QOn*Y#+1~t}#AhP|Ig0ICkUNl|on6zuT&ol{#^3JD`2mO6JaLAnJ;ZbWzCn-2mQ<$3qsIJ93F z8VcgbFjS4N?<2%-bVbznq4aV9?KP?Orq{j!_g&{Hlxm6d{ZX2vDBD9RvN_0|bu<|8 zayCS1%jqfcCVXe|2LMzH@q!-{#FtfUeC2UfTK8&*G%RUTMDMPmFh6=B~O(4FrNy#E3AVJa>b zVV@g6QYWU3F^K8Q7^9>TDnExeCQ?^H1bo#4V&Qh*L)bT4yjOu|(&pJ{2AS+sb1Y;(*ZKhaW5Z%zCK>d8E)erJdg1BspoRRP;_Ko1p3ddSDJQG+I+O{4u z*MdZO*^H%HsI{%vVSfXX!lGjEe6W(nk2kbLA=Q1I5KT1XF=>2AcuKHY4}%aoggAGbX;bzJ)&ANfBv=30 z^tDaBP-l592T;?=m^%AwQ^{6MdMy)A_lYxVYg4PuecT%P4XCC7R~P%*WIW`K4-A$? z<-0G2Z|dbWy~jl8(vw!~3#WKjVhhu7Jc&km*kABTch4sWP<(dktR`UyLfW@woaMI~ zEzkj-K&!$z4hW%rsC!!BCr`@$EWr0-_q3v;*d0RqZTGa4+xHM?eQQM1NNUDhB-ZzX zOf9zWuyop@?yX+fW5$P|z8Au?`1&HQMo>nAK_u9SK~pybDhVzg1wk>2)D6LQ5_|xH zON{IzrPlM`&&Zb%i8#~NfnszB3alwhaZJh`0w*-<({QO}0>>Kjy$hVr4Pn8+qRAd; zbXpnCFq2y;V!b5PU-Z7hh#MJkad@|~$36&x!6aA(hrv+>h0`yqVQ@8!h}#BaD>TuD zw*u94(#GJQ5JaSf;U^GoF}?OA9>m#T)qg}-+ga>2iF6!!!c57vz1P0*d+{VYDvqb) zP)W=jrbe{yu7N0gCG1T~cJWT-PDksnK)}$j)(5oE@YZ{^(1_M`S}3k{trm)JE!09+ zx8AOWu4&EHLJ6((9^{wU%J112y0&$+7P_vL{*$<*)*)JGWUE~ZCAYFd7<)Zms3=Q^ zL|C_4p9=O5>apCNd5ZXA)tu60;qk zm_4-Nz{9sKPH4#TAaT$b`A}nL<_dEWG&jp;(1qrrq!~s&BYU7RRF(CR5T-mA+9u z(9DoDiKOY%15Li9L0=Z=EV`6^v7|xAsrX)#9ZDCPRgwk`4t3fCO}V5QNt%0lpxGd4 zl1X!04>b2ln(Ik37Bu=q!owH!*(qGiM{kCY3c}IlwI6ifopMd3X@}#)R@@FT^+ihk zqNOXX*TN$)WDpYshK#M;Y|Btst3?Z$T8&yLytNGs7#q=gS_}1R{al31t=w|KxX9MS zA{5nnKsqo&OWWr2{^j-Y4KF5LbiZUxFX;a`UZSLzkpA$2Yf>R zfKM0@@CjE2d_qjXCtMZq2?GN@VNk#)#0GrA;DApU67UH_|D8|Rd|Nj@0nV|z_EZM{ z0Uv=9ddXNG>=Le6Zss+P^~+epO7@+ zqpx?Q~g?}6q8Nh8(;Ts_bTtw4Mz*U-}gZCt)z)2&H5f_E=n3PE9CyK?&LA$3;W?f z&^M|FnrKObgHz!DdZ3AsG<`|a%F%r{zJIu+5o>|3^+1y(Y1oVUw)H@BgQV$CntOVn z$&@q$NOM~cG&3X(4i13->wzX;(!`MFiXLbdOPZ@l^A$ErbyxOPk_KZI#rJv-H06?J z5NZC{1I-3W6HA)SJp{Vy=m4u*H3xACB4-=auzawxS~vC%n9KBJ$fh0s1xcOZ02+e0KhwVMk>I=3`)G z3b3kXVlXs;p|-|4>>wAjV_wSY6Grb@2oAmvp?A#B!)Cg^5`CL^9fA!U-t6`aV^xgr z4GcARoH?=7w+Df`BPW*D4Q|7dmK!fU1T#+PkZ&B8My%DB!m0*io8?u$N0{n6qRo11rZSl+lh4#?K#gA2W*bS|4eSJfiYL;~2wLAD(~5{h7%(hitwAo5=`7 ze#h+He7zsYx%$#^Yt54=2Le@-t1oS|);uAgja7rHFDL$!)ED7UTX+P;qVbr8CYk)t4?Ju^>HdtyM|&O9B04 zt*IA*c2}iX2;On_#M0I(qWU}s)f-xQ)~pO0TbBgFrq(=!x02*3gKL8OjM=?E^9h3f zWE~stK4S}DV|1+5eZ~>M8XJtG8fA=87TTM4ruyO<>;0Sz1m3M>Vm8x|Cp!LyMgENq zR{vcMH~T9aa{c8EG5)m;YyEdN%=NEmNboOfnC4&HaHaqDhJOC}4O9K|8q)o98f^X< z4JrO94G#aLhCBT?Hkke68?N%-(6Giox*^k_+)&`ZwxQ5}b;DBs@P@_yAq`9X0~?C` z0~%KP`!=ldM>j0@M>Wj%M>H(+8ynJ|GC32TGFTrDY-{E_-CH59?|Y2HsxMW!CbWc8 z6N-OyXF7bZe?-Od%UhtU8~itrh@wBS10naZHlaRYTO2Q#;+B%90iG$aV)X_Fu)4l7 zopIcT%#FHc2Dr7^!TToHM`65xGL?*;GVx7ypcJ%N7}m%Az-zrF!z{TI(h#g7=~ zm{Q;@C~*{(mzS20cg!huI+m4|I*SS&RmIL#jy0|lXE70u<)v%NN{S2C%J`Dfg2JM5 zM?z8Z%4EmXdACeTOvXuDs3YG5WQP*)kX+x5=wjhu9jxHLL4m%TzJ@H-csW6eUqFrr z4*-$-fi~#{t;sWuQ$@2U*DOB$!S~#~(+}yEHBCR>0NdcPHkbzgB;HWH1ifRgfk|=R zDECcajgQM(7W9|!J9sTMz?*A1&u>I9dhleL6Az}hmG|=7Cag18_RdaUY^r)w@KCWm zN_>(I87%u0`xhVPvSX;r<;z`@nkzmRHU}brF-egqPNruAmMe4OX2E3+Rof!Z2wDEj zEUmR%8Aqudtdi*%E{Ts79qd{^M}^>tA)QeX8`Yq#V;EHMYgj5T48L(|Hh}~+o7zcI zvn`w9?##;h7IJr5HlI+iZx1+VS*@_CciSPy(7J4X<2Fsrj@cK%qO?pgDT(LRjb<(d zs(9<<#<+w*)oyi)9c@%B0O~>^5<+o7IL&j1{kl7BuY$3X-duUB(62Kpo)U!%f%ahsa4)4I z93;Jz&3@w2KdHDHx)mZZA&p}cMS=*AQUr~v{HWR%Hrb|5wySNOMaV$*xt>MhwLv~A zI0h%N)SN@{YCp8roW|38kG*b>bk8WG0|n&XcoPdh6}|^+v9a#9c55wXN}ic^e18;s z-Ao%lLqf?Haq*WrF}%$LKf{WIC)<8qHg{YlxbKExXNm$trSJ;c?n~%6N&Q%_O9xCQ zy{$4r-G_q4Ou@GA^fOh*)YFhV38R#2pt{%&GeDjR*U_$~1dO2)gI)h%S|BzD#_%oZ zTfnF-L8P83W^YbJo3wwmj3!CREi5eTf{s`0vwR)$xBiQIMv*`y-d}8z+~!j)_QZ?s zi}tDr!+U5mb`A{`XEr~CVl6t;Wd<#oCIv5mVc;*G#ZTfl>NNAddru)qV^;4ygAm+B zBHkZ(pCg5z8#vKI7r71}#76f_eSl7kO?YVOl4VS#LpC(o^BwKcIR{XkWp4nZ9LxrrwY2USU`8PPhEKV8UX_K$>M_71_Y zibugdrG-$OzPiM75FtK=qT%#YoP$LKn$7dH0c%GgT4%Cb&~`+#zT`K*+h0a+E?k9m z_z|n4krUHu>+nYUE3Jnf#?I-RX3^2Y5`6 zV`-^3c57on!E4&-&l5I+ujXgq4P`9qgo7eFBVPhMj%s=w`I!kbUx*-_krN^4HP*eq zms<01}>CpQk$Au!_nZ)Dt3B;hh}OG@TB2&fdl-Ps}c;M8V5^=V*VFCw2=%3D`PE?2G*2 zCo9onN|~jedFNQ|5!ZQq!GA0~a=$-nQu?>9Hv~t_usRNi(ne21@J!>71-oD1eXX_C zVCSnq{%Q+)EZ2C}1Q&Rq-&d*M4;seL%6TFW78CPC_uB^bo2KIy^{2>xM1C82Pz}=zos(9$RGTME^zTmbEe$df zZDkHPZXUt@!L3hPLF-VD;NXJoRH8a~FMk2!)nP3Kq*) zG_<6DSJ9s=gmTcX+!!Hbr~j+U&yt8ehvMz3MU>qcXRkfyw28W|xAd#C*jS<8%evGl z=(vT$LEBBP?_ED2?U3_IzomXwm?5*?9s$Ujb_nOV?Kk+Xa|K~~o9nm;aPTKjy}_%j zdVKOzd)R4Ko9eF0n&G<0!}!FGF!;L^&)~h7V4&twF`_=-ECz(PZvIRR21V=lPxqRJ zY$s8u;-1`%H_YRpDrk?R8jIfc#Y;p}Tn4qc2}B%^a^IHMG^Sfd3(3g!FlN<%*ZbWP z^t<@p!}stSb znJz$n2s0i3F7TppcJ!ODmpJwjd=alU(-zr5(LJ~^d{Hr&V5_H=#W5n{JP0;vNA*PN z*-(`nT8qt?Ko36j2L^0SH%l=;ZN>%;As9~8qN{4&Mvrt|I6DmVJI&kl zz)seqjFre>O0m_Mn^hd=6oa$3XMq`AF%tL}!aJoPq3_veAREup!!}KN^`e%houogK1XAug8?V>db z&!Q>#F-kK-(xAZFtD`e`kB%J33&T9RXrxkn%XAz-;y4oHrZPc?J<7!W5UKda1E*EH zFg|uEa16hurNBNO;oB0jbSOS2eF@^uBaUKX7)9~S@E&gqwiv6(>>GXWVeMl(eG(&r zyOjDD1;d+ImW>Fvgww)|!Y*_HB+h^itsB=m9f@Fh9P_~-5pf~Oj-wR3=d%I37;^o#z7fZKe4+l&2X9e&DzxW=uA5!Ht==a2X!H5lKc zUF@}~m;2&{4UzaDfX)e{8oZQgcefGWCh$8Yekbu^{f{7fRs4p9e}wRM{&@Nv#Bch6 zdm_|6B=Gcqm+(Qr{TaXQ2P|%zr^qS*s#*`eTlL&>P!)!|-+6j(1NK`eG1} zOXXOjN9Fo%kRR-b8ur8Zv}7^9)7a;~<0&Nhf&m8ty@N;_L0Z@Be#7W%Vf0c&zk&c4 z6+bz#6eiP7li2`e`+mirU*HGWbHuJ7qFN%(5^)O=rT7sh=V2?yIBGjh_ujw7~;Aw88*iM&45|fP>$q> zx-UgpAJ#_U!w$*M!!KoFt>dh^AD*e3)OL|N`fu8qir;k*bABrX?{?KuUxnhd4}%{p zsid)s*bIBbA(tD1x-Jt|I^h&*zjB4Yva|x_9kVZ+MN!nd&FX3ky{1^$LixI3ie4#0 zUpW(rkjXN#JLd}DE!a)a*{wFK6`k0z`$iYwkwfDPtdH2xH9aw>!&m7UigPkP(M}a> zN~%Bc(jmX$5+<<1M`Ni?g$dwm6`ZaW?!DXKkEm^2-(USW{p<2~{9IMTTFj4!zVa@b zC^|^FP#5?nlf6C!;g&-S{XN{Fm@J3|#}e3yr(b&Ny%^>o2pQRj=$haNli$u}nH8~&*S_u?;3n$pFYFsNwxxoY~&rpj=S!DHGIWGZCcR5`+%Ye+v-8G}C9)7zVBa5tJf7K0i+ ziP49u{L|H$d|9>QiWAs9g2I|k48yPa#I_v>?J(kLI57;r%86kZKJzRoF@|~RBm9>Q z{lnjH)aD&GoXAFd&g2Zmj0eU&S@6?AzPmTZxxV5Cw6Iuw*|6iM6NMMgvR+YQ_@+}@ z&yUWxC7kb0+PCsIquqJFUcO7=dkehPIF8nf)i7+z{R}4`$YTm`BfMR}PV5q`J5pcG zf7IfSlHqEE>muqFR9}3`ffht=h(LEzdpy zklEJfW9hnIT{g0=%QmvfU_L;HAii2gt&j7@Mnc~fF(W$v9R?8xW$+tl#jY9=XH&V0 zSEKl562dVmrrlC+>Oq|5=8VX!PE%YL6Y=g8(Okc@)SEGskF6hw_lX12K5+HToFp(& z0%J=1zKKuKisCpYl_xr2xMu}CN9;>#U0ofH zKL3mzIh0|-!VbELPeHyp;UJbghP+tu+?SKpGdS%KT%rZ3?Do5(9=hvq8-_gs>Q9?a z_OHWo_s)tPYX+SEl4*OXZ+K0wdreJ3jLqtW#HQVAFf3B{OUpb55qO%UWmmy>SFJ=w zpC%qU)M`LVvv<~S40sJ-`y2Nl*xa9n;V9o$G{XHWJdY{Vp7qsB>icqTf7sQ#`hr2X zJ8yBjp)DO|zTqFQU`bJ7eaq~=SN~~!p(IYO8lm^Fh*Vl%2?ffv+mx)jX(sPf16<;? zx~y>TWJAIc=p`!xD?*OCtX`ra-pr3Ehty?7B3bMT^=DD)ez8ehR11v^+~$aL&jyJ7 z=XUF>HOdf(?aeo~tKT(U8rtL^V)z%TX0L-etp)GviwZj$;(H8c< z$Wmxc**nS5u`tm`*@1D{VE%W2j^lXsp$6mB{)}th#{WSeMi<*f$bHI&#aA(}gA;9+ zuhirK*7S4{rObm~H6mPuavx296zrK4I9#9NcX;RgMWwJ&2Ue;_N*}X)~z@$V5TZ4#j^b z@Mg{%>059DC_Wtw3#Z&FMmL3DVX#Z)UVA3~lR#L15n*f>MGDP}^Uk2W#O%!!w~%=~ zjHn$3(baX#%H@09i9!X=bm95rGW40SaB9chXyy=wW3OqLrC}s!&)(efFhors%tTf1 z2j1d}X?tK$B3w4sd`5YO;6GG|bIr!HfS9{20wZ;gBslD}!R&CRFy6!>YB}q;%Lt_; zF2g-hRG@R(tDula2W_JsJehXL)Q_jdpe?7W+zbSSJg$aGD#dX%@3`@j%i<9t!?Ta| zF9}s#|cNx{D%*}g*K8{p`<1`Ux zD~}YpaT`r3{fO%t3}m)5?6u=7wk;UmP@UVzh;{ohj=~UD=;=dkdb14M#gmS0Gsi+A zOVxq}agk)5NqwpgS&Oo6c|eBJ)Gb>OQn9!)f{Qq9?arA55NL17i7+TH(X_lt5$e}< zcL=f{xI6!2OcY}7s`SG)Z-Yk6)#UGl;6ggRC>kojoA zJivO~e`1{=#XIcm1J(}FXe3+BMWFY>D(^TCy4*%@Y+ci5#<0Oc#_Y~APK%X{UU!Pk zG-ws=hXQXuttsy{`~ZuWoX=+HTG%$xzy*ctJR3?7or6C~t&bLQmcS)*`i|F>Dh z{oiL1gHli>H~r@VBfV^e10zD2tqh?n8F5%(3sC9ZW! z{D}DFN=ou5$HKDmqLEo8WvdGAP_Q{?Zl0sEsJx=MbnSQtXey#el$?^BIxYoiCb^1B z3T1>t8I?AE%((F>=}MMsrDIHrV|2=>QJ`4{8mFUltw@fa0;dQ?DcP>_@*-^JaTc#B z8t(vQeBt=`LhUD+q4>fmC8xlNSZ1B%h_7(O7vcf*jDoeUg7Wpsl%i$jA~3t4eEBLR ztE{}ZM44T%UYX%qTZEsI^%Tcd;Z*X9%A7@OmKBvNbC)|y`J7W)DG@nE%Vl78>Dof1 z&36@5@Of)d;aVBWU*#$ns43;ejL9o-y2?esB~oNn78I8hEGsGECZ#n6YYQvJM=6dQ zwUQ1iW9in#j~MS@Ia5+ZX_v<@ci?~RMn(0(mZT4V#yO#euqOTtw5zKtQci^Nrkei zsH99Obgd~GN0s(4qqI3j&6v+KVb21?5GK;C_awG0(xaZ+sgnJF{jkte~ z`!~3^U#mMt$VTCs9f@tvzn)~qcp`&oH~(^XluZv9=%pNGFu zUyg+7bMoU|i2y`EDJobukw!WUh*F9Qi#4JOJ+Q1yVpde>G4fd`VWcV6 zD33WWv-Pgi|E(a!h=?<7XG-HHdO8^b1IV{&g!yK zAe6aqZ!1bltCUHl@ZS}RZuO;QEQ$ixR9?Cq4I93P##x|ycX(SDo&1UdY)b7!R#CK) z?#O{I1-Y#aaCAZr2Rx4xEnSkJBa)=#jLx)8d^87r|_CB-Y(ioBPvDq6l8o!|0R#cR>LM*DqQeLQF^qs<>(8+ z7q%5YA`(|#DSQG_t#nke5Y$-lvXb?Vs`66c#wSEcU$Y7o?_hH)SnF`DT?H>$0uL2n zhl*CB@=JBW9qUV7DdTYW!EMJq z2={Q@iMUg67vO#f_bS|_xGQnrgS!T|2lsK@J8^%A`&A8Y!SgNL@8U*(l2cyHq0t?V z_!0Ba4LauKX9taCT-V3*&k^q$FaDC_T`U07O(`iYD_hTG)60J*Qk1%!j)n2AHQ*(E zToBEz1;wKGWIwp36uvY$nY~XZKJ$t&b|_vZ`&qbVC;Hhk^kc5;N2P?)&M9?NxXQ{( z%h`3pFd&MfkR_==SBu7gj;Ryx9CQ}TyU>o8brB?IUQy9%7*N;TL-K00N#E)1}m@<*BR}tY+GR#4hGB$bi*x`;bH>9lAf}@g0&sN4H z137LqkRmiHIW<*7j!sTXo9)P&J>4;B`rJGjEpU`zTGlLK4{PBmO4z2R=Hv^}x)7b?$nyJFi~#-Iw2Sx1O_?FN(;(K1f47# z1)dIR*PUrm2r)#I##PRIf42y25%(qBzsEfY_fRcNctlW`aOiyvaMx-0>$`~`6NDQV z6xR7n&~P_t&+HJIsTw>J&$%IS()&CQ<()h zljBBUTf+P)`SaoxWzM8&Q*T?0_}MdVx%yhX+n+goZejxdaraHL#^){pez7@}}}vIG5fxp2!E>Q|JO6tT&O);GIo4cf!xwH$jCVzj-I&Lj$*a#*{L}Ps9EUG|mXsx+fbEaqC;g~sj-kiy^90C%fvniOpB9R!=%N#i)5TiJj zL5A3b!9*0DW$Q9$m7^3c3lVM0d&g`6lkQ1<@^JVf64<;9R&nN*QM1-SUaT_*646mJ6eW(sHb(gcKqvU=Vtaa^(SKnJ1?Fltj+z zwJu|*G6DbjdY$rXx2mo;!%1D7>$Sp%0fa9IPFHSqr% z4RB{vF7B&X;%a_B(D~|$=^TF&??}$z{vP)Q+&|$CtFbA)aQDI84|fdip}4!d9>o7Y z_yg{zaKDQC0Pc5iAI05@I}HCz#fCcx_f*^qaj(Q(jhpXoJb3;J_n&Y-kGsod(62CF zI?(ZqFn7LE0+)tgDz40KE=jOeT-DuNj5l-<=>K~NGmf}CXv6`_5DgCnt2xTGhEFWq zVD1Z(H;*Cj1G=Rk;wBf;(QXDQpG0AGMcIOal9qHapxcTK$2vdKU2FWr8p>}3=rTdi z9lag=-WLDdFqq#+&{gBejksXCuxFzvM=)L5|B`MN==A((_Yhl|nw>q~kuY`6Es2iQ z6dO(*8ri@SwLg~-4LBfizCSQ(mGud z=#oI^9LN}Xv0iv_S&no(O^)ZRZoO7f7TpCvyByl{Mm$MJy(wG4YzJ1@1VDtMIK;1_ zL%I&!=mVcsR5mQRJ7R!KAxF3-iG^-oyoEqg(~LdBEuxX?XD|btgb2 z?(d3HhU3dPW2vJ()sCd=O;N(9!W+0OIYSiJxf^TKz&MB z(>C>nD~z9#@q&JMg$eD8pa%ESa*#Na@=ZHM?2zr7_Mw0~%KJ?_?Lx0p1@v4^rJtAA zH|_XGj0(>3p_$?Ork%^B=jYD*T!4V5h=7!bIn5`WDUkU2rhO@X<8iu-yiCe!1k!?F znhcKv(&O(#fQJO>@GlV1^+m~l3%IYQFT#%lzBUN{6X3=d_4EfFR9NwXPkzbz>xL*i7I0U{r1WpQpM~A>^A@GeM@Z=CUHw3;l z1YQ;bmxjQ1g}^l-FwZm7FY248o#_|hXG7puLg3dz;I~8I4?^HiLf|h#U>=jBU(BD! z=ja#VpvEEUE2^Wh2>6N+_{tD?Xb3zWFi$L(mr2PAiC+`~R{`FV+d+SSNc?udPv&>T zH!vRdo{7g5@CUB~{>WidjsflqiQfXugA#dRw~F#Fz&yxNhrb5=cop8o0YUn6fa#~H zmMh?IqTrI|j7LA9#SZ~IquQp-*5GRZKY6=N$=2X;fFE6JQ$E(X+FfZnx5BQ;E zjN`QUrGR-R_goDw13bLgrqB;io@&4YDzT47gX;jV!+se0tSj*Q3&4LV>5%7lfZtw; zaim87XTbcRr&^=`JK)jyD2{J`$p00?WJ=bA&$w{3XhN74$}!|3l|=Huf24{GuQzcU?<)Bb2@f@BnFE#Kr)=^)?&--Kt1` z9pGgs5BoXt8wLw=5b$nP$|JW!Sw z^REZI75b+iX8i8}HwN*45^x^MgSTlS{sq81OqCbY?*r_Bz9InA{tf`n&cxUoF!{X? zxO55hqrt6!dFU-KroRA~n||>S=?&=OEEBL73kar<27LA1l0V^V06z}?IiM$;4R{Uo z&wh&VZGfwTyH$h{mr0@cl&{_SyuPUr7$u=#K*Ki~Q^wd>Sx6pw`R#Bj7Wz_joOy|EP)w?D8U& z9dJ^DO?h97cK}W-$DT3`9trr#IP5#q;PHTSA-`__vjJDHu_=qS_&mS~Lool*>~%3< z9)QY=`IQ2$n}%~8HTt^%e~I?AOoP3ExqDxi|2KfI%Ie7PX~0>i58Yoh0eWA|N+RN*R=K;RF$n_}TUsv0d<$$U0PXY5FTs{6fz>`rPyu}sqKLY;44cOzX z)kic2FXK>t-QI=*J~Obxzwz87{_`8XeJ24f)BH2@9}75htCXMqZ!+NTkzb^iUmjo; z?VsZq%C`{khZ}5o>m}i0z;$RZx;?H3{71C+Xf3`5Fc0nJ#rz%t%mdSP_;-Mp2Kk5W zfWJ?b`eJ@N0JpEhdwH$A`vFgwZd3lQ!G{3z3{_daaODfYJZxR(?+3gJ`gu&FZzGKS zIIbiAFbu-CqJEiz^}`7k53|?P_XYea%6Gj+KMe4FLHrW{AA~=3Yw;zs!*0O*Mja0!UmXH%LH_@jfO*ihPQM*+ zpB4BAWLkNj2h49orG9YY0$>yRE0~dx=Oe)O)i|3=qdy7w6#RqkZ@vZmUub{VX!Hgc z#xdB3p56x7g!0B}@k0SWn1qsO?d>|iTVQW1wD=nUx7{WEHT5wAFc0D8#q!?{_#Egl zr4{lO0p0R? z|Hg-63i?BUr?0{uSq(l8_>2qwPlHbbei?A82LA-uG8=n*G&m9ysWUUMw@%Ziof9jx zKk}!2jR3p@@}AY`QvoMIUXoGX*$7;$?(hfm0rMXo@M5VK0p@}2I$Q$yp5fTz2L#h^ z25j1@=NGPc0W*I|AE7)1cyEyY9tV6OlV`KZ^nU@&gPkS4NqHIYr-JyTK#ZYkN+%!7p1-r zF#idK4nF{x^HW{EM*+W#{5amAKK=~&AoO)V3QYL#fcarI*o*o;0GJ2A>-;_h-2YCS zGDA!MDd6+pXAz8B?DfuKGb0rMYi=-94S@cE@3{(CXt(^G89Z#DZU z1W)liZ%E#!2hSNa|w~`D&zPeW}=9J4!8*@%n$`p=26v| zS9~Nr)vt28ri-bXgv5kvb=B>uO4n;{RnLnMCb)571aTCDf}vl_P+rCra<5C z!P=uG#?L>2^%4gEyt~~S;FrixJ{j)+H@Jj;HUk!;Z(rhn3IX2-{_}UpS1|zT<9_h% zLjNBJ_sH)KhW3OCr_KNM5fzxa`#R(GPPqO#yQJ(^*ZF%F_z?CV?TJHYyLEA0`qsZT zO2lj3Ci(Dh3#XR?=%fB$;PCZ_^ZC>Fz`w=5KN8yi6nyMzF0WU>w@xp)BwYUs_&(al z{QoWR{p3g0aQ#1E?VaT9{~mW2r0a!AN5b`c!E5Lz-hU9h%KWAhu0I6U%SQAOy`Kdi z41cc^u7lr;KXgO;F4*4S3l{%Zz$%N6`us9jFGA8sXK#YFLsh)~ZSXCG_$jVSUOxdp z^;|w4ybRvNU*r7h*WjDbALmnl1pf+o@@4nG#(`eUqK}^PCOH1RRrsIazcGGeM%Mma zu!`!Vf8B$l|BUA?hwJx(-yuJW@$^IB|2~q(>ra56IkV)Nq5Wy_^}_S3;OCc-7YY%7 zO>mp|9P`ON@L!qVt%UopgU@muH@EgTz#qm)ZwCB4_?=N655Eh3mht}0(EswRh3=2P^(3x4kLd_J(mADr)IKK9Mf{$t=b z4lTK_2D}2+%a-)f^EbhI(No0R;4d)WzQGCg|0MX+jL*>?_rNExhZry2SzA(jG%S#8 zO$Lstp$l7UD_hl#bFQ{ltDalmc8^w9*S76weQRZ-;c6=z)rzZZu2s%9F4SC2d(5Aq zh%x-9rqNvCLiLF?w@E=tnr*iFyM@CeJ5)VdQ9@&yu?W&1S4RC2MUz>ty?3!Qb>Syr zL91i^E|ocL7QpTuX}k7dG|`t|I(&GiHAxGwH!J`uLvrMgRN0V>#@2%>F?Du&ZLBUj zgO+~#x)hFlc?Sp3!f$GB_}#PPUUo^xlT7{0*7UdCpk>cz3F+Z(+8T3FhhZIa0IaF? z=K~pjy=h{rhy4X=Sos$hHHCJEkd~nq5fzYJQw=HK!~H?%YLrovnPr?C_uBSb?R1r*0r-@!WI{Ahc;e-t?!#zc&6ybjWmlk{%&l`6lT-MDGRUYV<)f2ZjFgr-b zzUf9fU022FtRq&!yL}YiPlqm4P=&?6j$#{E!8ah1S}GCWq@>s-RQjkGFPXGkL#xm8 z6;zFMI7#7B1$UJ9!K&8s8V|=@6%B-bBk7T{mc%D7ilUOFyslS!DjvpOMLe-!j3}s> zO<9CIoOZV$S@b=o>ZJwUJUC-8JoOCaz3?q|XXJK*WEbu&ExU_jw>oISxaT1}-A5zN z?vEF4S$2c*N|sTHUQrCFAs+m}HSqx?ZbBKh`V<&n+E0h=YoYVCs|btpb=sa!FH&(U zjTLO;d^%2B)AOv-SC|;PBoHjE6X>RVQ<^T#M4bguZtb+1qe>UUvf?b9!s23Ys6w-y zXi?i%R?gFjnUErSb)qdPf=v~;4w^3n z-OcoB)Jt|LMrm^^b0hClep?7%Z{q4bv5hODwlt|+y@ zoO!0Wr<=%q-W_HTtP4w8)HGw0=azj-C=5TBUSVSg)rxz8i~mGxcuWu8qw*jCLko7X zd`wrZ;B>v;8;g9mhsJxu+#O8Ia%8v8!>~ z?(JTiQNa-1==OFcToZ=H%Yra0t&a)Q#dMlXwdaOTxWqDVA7jc33TE@01(r?*0`hWg zFTWG&Alh*>3b8+7d_dUsuFQlqEhuBY+w#eU=aiSFN<~>~-yBuV>H|k!9UD}V=K>gY zdb>TP0zAxTJ;Q0%YEPqg&T7T{a9STtC>~?`far6gvuKU*!qXSX^20*uK`*V6d$iX{ zNA)RVlqVKvV}9B7p$!kLgUMm?)4zG}&ZV{TT6GB(~y#*dQ016Xk_5>-W-4QkW~s6v;+MS%qCB zCQ6~a`nbzfk+Vt|YL5Il`uBsc*RFZh!Z{n3jk6kK!C-$d(?F!eTW-jJ$X29TRp zWL@DeW86VQzR%XxxjyI33xyShzP&$HO6L+=v>0TAs7d0Yq%3&P*~4nuXBPo)hTdjs z+Q~q)-JzH|Gv$8jbcaRiAt`c#~ec zt9(0`$Gi}Z>u(gYh!EQuDH}>Zn1F4PPsB)&U0P>~R2*V=;~XRDUN_f{Q)&g0IV)&j zj_q#DYjZ+yMNJ0lz4rN3vy177{VDFqh|2_9Q+Vz!3_mu)XErTXYGf(-EFDJ$wL${! zEzcrHc4FO!E%W(Vg`hz&yisU5j9?AR4tBi5|R;=XlJE_(rf;pz&vlhYqr>8*km*xvGt9T g=4JnNEKcXwE^85TAOJa7E?Km$Grb}8!a<||19lJt&j0`b literal 48534 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 diff --git a/scripts/version.txt b/scripts/version.txt index 29ba0df..5f476b6 100644 --- a/scripts/version.txt +++ b/scripts/version.txt @@ -1 +1 @@ -450 +470