From 1b0f4ee72a2c7b11f720950b9e265510df883ebb Mon Sep 17 00:00:00 2001 From: adamyg Date: Fri, 17 Jun 2022 23:52:41 +0800 Subject: [PATCH 01/39] doc --- mcwin32/libw32/sys/socket.h | 11 ++++++----- mcwin32/libw32/w32_socket.c | 7 ++++++- mcwin32/libw32/w32_socket2.c | 7 ++++++- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/mcwin32/libw32/sys/socket.h b/mcwin32/libw32/sys/socket.h index edf298b1..9516a9ec 100644 --- a/mcwin32/libw32/sys/socket.h +++ b/mcwin32/libw32/sys/socket.h @@ -1,7 +1,7 @@ #ifndef LIBW32_SYS_SOCKET_H_INCLUDED #define LIBW32_SYS_SOCKET_H_INCLUDED #include -__CIDENT_RCSID(gr_libw32_sys_socket_h,"$Id: socket.h,v 1.12 2022/06/08 09:51:45 cvsuser Exp $") +__CIDENT_RCSID(gr_libw32_sys_socket_h,"$Id: socket.h,v 1.13 2022/06/17 15:40:45 cvsuser Exp $") __CPRAGMA_ONCE /* -*- mode: c; indent-width: 4; -*- */ @@ -190,7 +190,7 @@ LIBW32_API int w32_poll_native(struct pollfd *fds, int cnt, int timeout #define accept(a,b,c) w32_accept_fd(a,b,c) #define poll(a,b,c) w32_poll_fd(a,b,c) #define send(a,b,c,d) w32_send_fd(a,b,c,d) -#define sendto(a,b,c,d,e,f w32_sendto_fd(a,b,c,d,e,f) +#define sendto(a,b,c,d,e,f) w32_sendto_fd(a,b,c,d,e,f) #define sendmsg(a,b,c) w32_sendmsg_fd(a,b,c) #define recv(a,b,c,d) w32_recv_fd(a,b,c,d) #define recvfrom(a,b,c,d,e,f) w32_recvfrom_fd(a,b,c,d,e,f) @@ -241,11 +241,11 @@ LIBW32_API int w32_poll_native(struct pollfd *fds, int cnt, int timeout #define socketpair(a,b,c,d) w32_socketpair_native(a,b,c,d) #endif /*WIN32_SOCKET_MAP_FD|NATIVE*/ - + LIBW32_API int w32_select(int, fd_set *, fd_set *, fd_set *, const struct timeval *timeout); - + __END_DECLS - + /* missing definitions */ #if defined(_MSC_VER) || \ @@ -283,3 +283,4 @@ ULONG WINAPI if_nametoindex(PCSTR InterfaceName); #endif #endif /*LIBW32_SYS_SOCKET_H_INCLUDED*/ + diff --git a/mcwin32/libw32/w32_socket.c b/mcwin32/libw32/w32_socket.c index a76bfed1..2426d84e 100644 --- a/mcwin32/libw32/w32_socket.c +++ b/mcwin32/libw32/w32_socket.c @@ -1,5 +1,5 @@ #include -__CIDENT_RCSID(gr_w32_socket_c,"$Id: w32_socket.c,v 1.15 2022/06/14 02:19:59 cvsuser Exp $") +__CIDENT_RCSID(gr_w32_socket_c,"$Id: w32_socket.c,v 1.16 2022/06/17 15:41:40 cvsuser Exp $") /* -*- mode: c; indent-width: 4; -*- */ /* @@ -377,6 +377,11 @@ w32_socknonblockingio_fd(int fd, int enabled) if ((osf = w32_sockhandle(fd)) == (SOCKET)INVALID_SOCKET) { ret = -1; } else { + /* FIONBIO --- + * enables or disables the blocking mode for the socket based on the numerical value of iMode. + * If mode = 0, blocking is enabled; + * If mode != 0, non-blocking mode is enabled. + */ u_long mode = (long)enabled; if ((ret = ioctlsocket(osf, FIONBIO, &mode)) == -1 /*SOCKET_ERROR*/) { w32_sockerror(); diff --git a/mcwin32/libw32/w32_socket2.c b/mcwin32/libw32/w32_socket2.c index b196c1ba..31c5af9f 100644 --- a/mcwin32/libw32/w32_socket2.c +++ b/mcwin32/libw32/w32_socket2.c @@ -1,5 +1,5 @@ #include -__CIDENT_RCSID(gr_w32_socket2_c,"$Id: w32_socket2.c,v 1.11 2022/06/08 09:51:44 cvsuser Exp $") +__CIDENT_RCSID(gr_w32_socket2_c,"$Id: w32_socket2.c,v 1.12 2022/06/17 15:41:40 cvsuser Exp $") /* * win32 socket () system calls @@ -438,6 +438,11 @@ w32_socknonblockingio_native(int fd, int enabled) if ((osf = nativehandle(fd)) == (SOCKET)INVALID_SOCKET) { ret = -1; } else { + /* FIONBIO --- + * enables or disables the blocking mode for the socket based on the numerical value of iMode. + * If mode = 0, blocking is enabled; + * If mode != 0, non-blocking mode is enabled. + */ u_long mode = (long)enabled; if ((ret = ioctlsocket(osf, FIONBIO, &mode)) == -1 /*SOCKET_ERROR*/) { w32_sockerror(); From 3deec7481832d416ec1f86d5a8349465a04036cf Mon Sep 17 00:00:00 2001 From: adamyg Date: Fri, 17 Jun 2022 23:52:55 +0800 Subject: [PATCH 02/39] ignore --- mcwin32/libmagic/.cvsignore | 2 +- mcwin32/msvc2015/.cvsignore | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mcwin32/libmagic/.cvsignore b/mcwin32/libmagic/.cvsignore index 4ee0f0b6..f6a59eb7 100644 --- a/mcwin32/libmagic/.cvsignore +++ b/mcwin32/libmagic/.cvsignore @@ -1,4 +1,4 @@ -file-5.29 +file-5.29.gr file-5.41 .unpacked.* Makefile diff --git a/mcwin32/msvc2015/.cvsignore b/mcwin32/msvc2015/.cvsignore index aa5934ff..4c71a6a5 100644 --- a/mcwin32/msvc2015/.cvsignore +++ b/mcwin32/msvc2015/.cvsignore @@ -1,6 +1,6 @@ *.opendb *.db -.vs/ -debug/ -release/ +.vs +Debug +Release From a32b4d6d5d292ce60f5a9e9ad324cbd6dfdc157f Mon Sep 17 00:00:00 2001 From: adamyg Date: Fri, 17 Jun 2022 23:53:02 +0800 Subject: [PATCH 03/39] doc --- mcwin32/doc/README.win32 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mcwin32/doc/README.win32 b/mcwin32/doc/README.win32 index ce92fa2f..67401f64 100644 --- a/mcwin32/doc/README.win32 +++ b/mcwin32/doc/README.win32 @@ -8,7 +8,9 @@ the current 4.8.x development stream. Version Latest Build - 4.8.27 226 (#21 - FISH enabled). + 4.8.28 227 (mc merge) + + 4.8.27 226 (#21 - FISH enabled) FISH requires either an external SSH and/or RSH client, possible solutions include: @@ -121,7 +123,7 @@ Window native port for GNU Midnight Commander, the latest builds can be found at the links: https://github.com/adamyg/mcwin32/ (master) - + https://sourceforge.net/projects/mcwin32/ (mirror) @@ -143,7 +145,6 @@ Older information is available at www.gnu.org/software/mc - Status ------ @@ -153,7 +154,7 @@ quickly. Please feel free to raise tickets on SourceForge when issues are encountered. adamy -Mar/2022 +June/2022 Other Resources From 131daf54c8821c909316d60865b84e5afbd23e7a Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 22 Jun 2022 21:47:26 +0800 Subject: [PATCH 04/39] doc updates --- mcwin32/ChangeLog.txt | 4 ++++ mcwin32/TODO.txt | 4 ++++ mcwin32/doc/README.win32 | 2 +- mcwin32/releases/README.txt | 15 ++++++++------- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/mcwin32/ChangeLog.txt b/mcwin32/ChangeLog.txt index af3f32e5..b1d9f397 100644 --- a/mcwin32/ChangeLog.txt +++ b/mcwin32/ChangeLog.txt @@ -1,3 +1,7 @@ +Sun Jun 19 15:11:13 2022 adamy + + * build-227 + Wed Jun 8 19:37:49 2022 adamy * 4.8.28 merge diff --git a/mcwin32/TODO.txt b/mcwin32/TODO.txt index c461726f..479586de 100644 --- a/mcwin32/TODO.txt +++ b/mcwin32/TODO.txt @@ -1,3 +1,7 @@ +Sun Jun 19 15:11:24 2022 adamy + + * Review doc.sh and application bindings for win32. + Tue Jun 9 13:22:00 2020 adamy * Mirror MC configuration during builds, example diff --git a/mcwin32/doc/README.win32 b/mcwin32/doc/README.win32 index 67401f64..b41eafed 100644 --- a/mcwin32/doc/README.win32 +++ b/mcwin32/doc/README.win32 @@ -9,7 +9,7 @@ the current 4.8.x development stream. Version Latest Build 4.8.28 227 (mc merge) - + 4.8.27 226 (#21 - FISH enabled) FISH requires either an external SSH and/or RSH client, possible solutions include: diff --git a/mcwin32/releases/README.txt b/mcwin32/releases/README.txt index 509cc7f8..b41eafed 100644 --- a/mcwin32/releases/README.txt +++ b/mcwin32/releases/README.txt @@ -8,13 +8,15 @@ the current 4.8.x development stream. Version Latest Build - 4.8.27 226 (#21 - FISH enabled), requires "OpenSSH for Windows" to be enabled/installed. - + 4.8.28 227 (mc merge) + + 4.8.27 226 (#21 - FISH enabled) + FISH requires either an external SSH and/or RSH client, possible solutions include: - + o Windows portable OpenSSH [[ https://github.com/PowerShell/openssh-portable ]]. o WinXSH [[ https://github.com/adamyg/winxsh ]]. - + 4.8.27 225 (enhancements #16 and #17). 4.8.27 224 (mc merge, libaspell - beta) See [https://github.com/adamyg/aspell-win32] for distributions. @@ -121,7 +123,7 @@ Window native port for GNU Midnight Commander, the latest builds can be found at the links: https://github.com/adamyg/mcwin32/ (master) - + https://sourceforge.net/projects/mcwin32/ (mirror) @@ -143,7 +145,6 @@ Older information is available at www.gnu.org/software/mc - Status ------ @@ -153,7 +154,7 @@ quickly. Please feel free to raise tickets on SourceForge when issues are encountered. adamy -Mar/2022 +June/2022 Other Resources From 1c6bb3df6c39dcbfb198be0ab6fd99c5a4908f09 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sat, 25 Jun 2022 01:11:20 +0800 Subject: [PATCH 05/39] 2022 --- mcwin32/autoupdater/updater.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcwin32/autoupdater/updater.rc b/mcwin32/autoupdater/updater.rc index 43521cbe..8a49ec92 100644 --- a/mcwin32/autoupdater/updater.rc +++ b/mcwin32/autoupdater/updater.rc @@ -92,7 +92,7 @@ VS_VERSION_INFO VERSIONINFO VALUE "InternalName", "WIN32 Midnight Commander" VALUE "Copyright", - "Copyright (C) 2012-2021, Adam Young. All rights reserved. \n" + "Copyright (C) 2012-2022, Adam Young. All rights reserved. \n" "Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. \n" "Copyright (c) 2001-2019 Expat maintainers. \n" "This is free software; see the source for copying conditions. \n" From 25e528faf3ef34246fc9c9cdfc06936f09730464 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sat, 25 Jun 2022 01:14:57 +0800 Subject: [PATCH 06/39] appname, match installer --- mcwin32/autoupdater/mcupdater.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mcwin32/autoupdater/mcupdater.cpp b/mcwin32/autoupdater/mcupdater.cpp index 2d7ac14e..3b37b095 100644 --- a/mcwin32/autoupdater/mcupdater.cpp +++ b/mcwin32/autoupdater/mcupdater.cpp @@ -115,6 +115,7 @@ main(int argc, char *argv[]) if (mode >= 1) { autoupdate_appversion_set(version); autoupdate_hosturl_set(hosturl); + autoupdate_appname_set("Midnight Commander"); // match installer } return autoupdate_execute(mode, interactive); @@ -135,7 +136,7 @@ Usage() { std::cerr << "\n"\ - "Midnight Commander updater version 1.01\n"\ + "Midnight Commander updater version 1.02\n"\ "\n"\ " mcupdater [options] mode\n"\ "\n"\ From dbe9037da04b052f2f85d67f506918c831c1d02f Mon Sep 17 00:00:00 2001 From: adamyg Date: Sat, 25 Jun 2022 01:15:58 +0800 Subject: [PATCH 07/39] ci: whitespace --- mcwin32/autoupdater/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcwin32/autoupdater/Makefile.in b/mcwin32/autoupdater/Makefile.in index 503dd27c..683287e2 100644 --- a/mcwin32/autoupdater/Makefile.in +++ b/mcwin32/autoupdater/Makefile.in @@ -234,5 +234,5 @@ $(D_OBJ)/%.res: %.rc $(D_OBJ)/%_res.o: %.rc $(RC) -o $@ -I./libappupdater/src $(RCDEFS) $< - + #end From c108ce4d3eb23942a303d9e382f89e52f59542f4 Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 25 Jan 2023 19:57:04 +0800 Subject: [PATCH 08/39] stat/statvfs fsblkcnt_t and fsblkcnt_t --- mcwin32/libw32/sys/statfs.h | 21 ++++++++++----------- mcwin32/libw32/sys/statvfs.h | 17 +++++++++-------- mcwin32/libw32/sys/utypes.h | 13 +++++++++++++ 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/mcwin32/libw32/sys/statfs.h b/mcwin32/libw32/sys/statfs.h index 0e103ce0..2b2b0db3 100644 --- a/mcwin32/libw32/sys/statfs.h +++ b/mcwin32/libw32/sys/statfs.h @@ -8,7 +8,7 @@ __CPRAGMA_ONCE /* * win32 [f]statfs implementation * - * Copyright (c) 2012 - 2022, Adam Young. + * Copyright (c) 2012 - 2023, Adam Young. * All rights reserved. * * This file is part of the Midnight Commander. @@ -28,8 +28,8 @@ __CPRAGMA_ONCE * ==end== */ -#include -#include +#include /* __BEGIN/__END/.. */ +#include /* fsblkcnt_t and fsfilcnt_t */ #include #include @@ -43,14 +43,13 @@ typedef struct fsid { /* file system id type */ } fsid_t; struct statfs { - long f_spare2; /* placeholder */ - long f_bsize; /* fundamental file system block size */ - long f_iosize; /* optimal transfer block size */ - long f_blocks; /* total data blocks in file system */ - long f_bfree; /* free blocks in fs */ - long f_bavail; /* free blocks avail to non-superuser */ - long f_files; /* total file nodes in file system */ - long f_ffree; /* free file nodes in fs */ + unsigned long f_bsize; /* fundamental file system block size */ + unsigned long f_iosize; /* optimal transfer block size */ + fsblkcnt_t f_blocks; /* total data blocks in file system */ + fsblkcnt_t f_bfree; /* free blocks in fs */ + fsblkcnt_t f_bavail; /* free blocks avail to non-superuser */ + fsfilcnt_t f_files; /* total file nodes in file system */ + fsfilcnt_t f_ffree; /* free file nodes in fs */ fsid_t f_fsid; /* file system id */ uid_t f_owner; /* user that mounted the filesystem */ int f_type; /* type of filesystem (see below) */ diff --git a/mcwin32/libw32/sys/statvfs.h b/mcwin32/libw32/sys/statvfs.h index 257d5c76..9a107d34 100644 --- a/mcwin32/libw32/sys/statvfs.h +++ b/mcwin32/libw32/sys/statvfs.h @@ -8,7 +8,7 @@ __CPRAGMA_ONCE /* * win32 [f]statvfs implementation * - * Copyright (c) 2012 - 2022, Adam Young. + * Copyright (c) 2012 - 2023, Adam Young. * All rights reserved. * * This file is part of the Midnight Commander. @@ -111,19 +111,20 @@ __CPRAGMA_ONCE // */ -#include +#include /* __BEGIN/__END/.. */ +#include /* fsblkcnt_t and fsfilcnt_t */ #define FSTYPSZ 16 struct statvfs { unsigned long f_bsize; /* File system block size. */ unsigned long f_frsize; /* Fundamental file system block size. */ - unsigned long f_blocks; /* Total number of blocks on file system in units of f_frsize. */ - unsigned long f_bfree; /* Total number of free blocks. */ - unsigned long f_bavail; /* Number of free blocks available to non-privileged process. */ - unsigned long f_files; /* Total number of file serial numbers. */ - unsigned long f_ffree; /* Total number of free file serial numbers. */ - unsigned long f_favail; /* Number of file serial numbers available to non-privileged process. */ + fsblkcnt_t f_blocks; /* Total number of blocks on file system in units of f_frsize. */ + fsblkcnt_t f_bfree; /* Total number of free blocks. */ + fsblkcnt_t f_bavail; /* Number of free blocks available to non-privileged process. */ + fsfilcnt_t f_files; /* Total number of file serial numbers. */ + fsfilcnt_t f_ffree; /* Total number of free file serial numbers. */ + fsfilcnt_t f_favail; /* Number of file serial numbers available to non-privileged process. */ unsigned long f_fsid; /* File system ID. */ unsigned long f_flag; /* Bit mask of f_flag values. */ #define ST_RDONLY 0x01 /* read-only file system. */ diff --git a/mcwin32/libw32/sys/utypes.h b/mcwin32/libw32/sys/utypes.h index db2aac92..c3de9f32 100644 --- a/mcwin32/libw32/sys/utypes.h +++ b/mcwin32/libw32/sys/utypes.h @@ -174,6 +174,19 @@ typedef unsigned short mode_t; #define mode_t mode_t #endif +#if !defined(_FSBLKCNT_T_DEFINED) +#define _FSBLKCNT_T_DEFINED +#if !defined(fsblkcnt_t) +typedef unsigned long fsblkcnt_t; +#endif +#endif +#if !defined(_FSFILCNT_T_DEFINED) +#define _FSFILCNT_T_DEFINED +#if !defined(fsfilcnt_t) +typedef unsigned long fsfilcnt_t; +#endif +#endif + #elif defined(__MINGW32__) #if !defined(uid_t) && !defined(gid_t) typedef int uid_t; From 07468a32d716fabf5383ee43d3cefcc5bce154eb Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 25 Jan 2023 19:58:03 +0800 Subject: [PATCH 09/39] mcedit publish mc.exe as mcedit.exe (emulate symlink) --- mcwin32/releases/mc-inno-setup.iss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mcwin32/releases/mc-inno-setup.iss b/mcwin32/releases/mc-inno-setup.iss index bf5885f3..93c7178d 100644 --- a/mcwin32/releases/mc-inno-setup.iss +++ b/mcwin32/releases/mc-inno-setup.iss @@ -1,7 +1,7 @@ ; ; Midnight Commander - Inno Setup ; -; Adam Young, 2012 - 2022 +; Adam Young, 2012 - 2023 ; ; This file is part of the Midnight Commander. ; @@ -98,6 +98,7 @@ Root: HKLM; Subkey: "Software\Midnight-Commander"; ValueType: dword; ValueName: Source: "..\{#BinDir}\README.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\ChangeLog.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\mc.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\{#BinDir}\mc.exe"; DestDir: "{app}"; DestName: "mcedit.exe" Flags: ignoreversion Source: "..\{#BinDir}\mc.map"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\mcupdater.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\busybox.exe"; DestDir: "{app}"; Flags: ignoreversion From ca73a8d45fd13825329375f38a6af3f939262bbe Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 1 Feb 2023 01:18:32 +0800 Subject: [PATCH 10/39] merge 4.8.29 --- README.md | 6 +- mcsrc/.gitignore | 3 +- mcsrc/configure.ac | 31 +- mcsrc/contrib/README.xterm | 2 +- mcsrc/contrib/dist/Makefile.am | 11 - mcsrc/contrib/dist/gentoo/Makefile.am | 1 - mcsrc/contrib/dist/gentoo/README | 39 - mcsrc/contrib/dist/pkginfo.in | 9 - mcsrc/contrib/dist/prototype.in | 130 - mcsrc/contrib/dist/redhat/Makefile.am | 3 - mcsrc/contrib/dist/redhat/mc.spec.in | 357 --- mcsrc/doc/FAQ | 32 +- mcsrc/doc/HACKING | 4 +- mcsrc/doc/INSTALL | 14 +- mcsrc/doc/MAINTAINERS | 2 +- mcsrc/doc/NEWS | 58 + mcsrc/doc/README | 10 +- mcsrc/doc/hints/l10n/README.txt | 2 +- mcsrc/doc/hints/l10n/mc.hint.be | 12 +- mcsrc/doc/hints/l10n/mc.hint.bg | 86 +- mcsrc/doc/hints/l10n/mc.hint.ca | 6 +- mcsrc/doc/hints/l10n/mc.hint.cs | 8 +- mcsrc/doc/hints/l10n/mc.hint.da | 10 +- mcsrc/doc/hints/l10n/mc.hint.de | 4 +- mcsrc/doc/hints/l10n/mc.hint.de_CH | 87 - mcsrc/doc/hints/l10n/mc.hint.el | 8 +- mcsrc/doc/hints/l10n/mc.hint.en_GB | 8 +- mcsrc/doc/hints/l10n/mc.hint.eo | 10 +- mcsrc/doc/hints/l10n/mc.hint.es | 6 +- mcsrc/doc/hints/l10n/mc.hint.et | 10 +- mcsrc/doc/hints/l10n/mc.hint.eu | 6 +- mcsrc/doc/hints/l10n/mc.hint.fa | 6 +- mcsrc/doc/hints/l10n/mc.hint.fr | 4 +- mcsrc/doc/hints/l10n/mc.hint.fr_CA | 87 - mcsrc/doc/hints/l10n/mc.hint.ga | 8 +- mcsrc/doc/hints/l10n/mc.hint.gl | 10 +- mcsrc/doc/hints/l10n/mc.hint.hu | 10 +- mcsrc/doc/hints/l10n/mc.hint.id | 12 +- mcsrc/doc/hints/l10n/mc.hint.it | 6 +- mcsrc/doc/hints/l10n/mc.hint.it_IT | 87 - mcsrc/doc/hints/l10n/mc.hint.ja | 8 +- mcsrc/doc/hints/l10n/mc.hint.ko | 18 +- mcsrc/doc/hints/l10n/mc.hint.lt | 8 +- mcsrc/doc/hints/l10n/mc.hint.nb | 6 +- mcsrc/doc/hints/l10n/mc.hint.nl | 16 +- mcsrc/doc/hints/l10n/mc.hint.pl | 50 +- mcsrc/doc/hints/l10n/mc.hint.pt | 14 +- mcsrc/doc/hints/l10n/mc.hint.pt_BR | 86 +- mcsrc/doc/hints/l10n/mc.hint.ro | 12 +- mcsrc/doc/hints/l10n/mc.hint.ru | 14 +- mcsrc/doc/hints/l10n/mc.hint.sk | 12 +- mcsrc/doc/hints/l10n/mc.hint.sr | 14 +- mcsrc/doc/hints/l10n/mc.hint.sv | 16 +- mcsrc/doc/hints/l10n/mc.hint.sv_SE | 87 - mcsrc/doc/hints/l10n/mc.hint.tr | 12 +- mcsrc/doc/hints/l10n/mc.hint.uk | 20 +- mcsrc/doc/hints/l10n/mc.hint.zh | 89 - mcsrc/doc/hints/l10n/mc.hint.zh_CN | 12 +- mcsrc/doc/hints/l10n/mc.hint.zh_TW | 12 +- mcsrc/doc/hints/mc.hint | 7 +- mcsrc/doc/man/date-of-man-include.am | 7 +- mcsrc/doc/man/es/mc.1.in | 97 +- mcsrc/doc/man/hu/mc.1.in | 82 +- mcsrc/doc/man/it/mc.1.in | 77 +- mcsrc/doc/man/mc.1.in | 127 +- mcsrc/doc/man/mcedit.1.in | 10 +- mcsrc/doc/man/mcview.1.in | 2 +- mcsrc/doc/man/pl/mc.1.in | 84 +- mcsrc/doc/man/ru/mc.1.in | 126 +- mcsrc/doc/man/sr/mc.1.in | 100 +- mcsrc/lib/fileloc.h | 7 +- mcsrc/lib/global.h | 1 - mcsrc/lib/lock.c | 2 +- mcsrc/lib/mcconfig/common.c | 12 +- mcsrc/lib/mcconfig/get.c | 14 +- mcsrc/lib/mcconfig/paths.c | 5 +- mcsrc/lib/search.h | 43 +- mcsrc/lib/search/internal.h | 12 +- mcsrc/lib/search/lib.c | 197 +- mcsrc/lib/search/normal.c | 30 +- mcsrc/lib/search/regex.c | 52 +- mcsrc/lib/search/search.c | 75 +- mcsrc/lib/strutil.h | 2 + mcsrc/lib/strutil/filevercmp.c | 20 +- mcsrc/lib/tty/key.c | 3 +- mcsrc/lib/tty/tty.c | 6 +- mcsrc/lib/util.c | 16 +- mcsrc/lib/util.h | 23 +- mcsrc/lib/utilunix.c | 38 +- mcsrc/lib/vfs/direntry.c | 25 +- mcsrc/lib/vfs/interface.c | 41 +- mcsrc/lib/vfs/parse_ls_vga.c | 8 +- mcsrc/lib/vfs/path.c | 27 +- mcsrc/lib/vfs/vfs.c | 9 +- mcsrc/lib/vfs/vfs.h | 6 - mcsrc/lib/vfs/xdirentry.h | 7 +- mcsrc/lib/widget/background.c | 14 +- mcsrc/lib/widget/button.c | 9 +- mcsrc/lib/widget/buttonbar.c | 7 +- mcsrc/lib/widget/check.c | 10 +- mcsrc/lib/widget/dialog-switch.c | 4 +- mcsrc/lib/widget/dialog.c | 10 +- mcsrc/lib/widget/frame.c | 19 +- mcsrc/lib/widget/gauge.c | 9 +- mcsrc/lib/widget/group.c | 45 +- mcsrc/lib/widget/group.h | 2 +- mcsrc/lib/widget/groupbox.c | 7 +- mcsrc/lib/widget/history.c | 6 +- mcsrc/lib/widget/hline.c | 23 +- mcsrc/lib/widget/input.c | 374 ++- mcsrc/lib/widget/input.h | 53 +- mcsrc/lib/widget/input_complete.c | 83 +- mcsrc/lib/widget/label.c | 22 +- mcsrc/lib/widget/listbox.c | 30 +- mcsrc/lib/widget/menu.c | 37 +- mcsrc/lib/widget/mouse.c | 4 +- mcsrc/lib/widget/quick.c | 122 +- mcsrc/lib/widget/quick.h | 25 +- mcsrc/lib/widget/radio.c | 8 +- mcsrc/lib/widget/rect.c | 26 +- mcsrc/lib/widget/rect.h | 1 + mcsrc/lib/widget/widget-common.c | 100 +- mcsrc/lib/widget/widget-common.h | 37 +- mcsrc/lib/widget/wtools.c | 36 +- mcsrc/m4.include/mc-vfs.m4 | 3 +- mcsrc/maint/docs/RELEASE_PROCEDURE | 2 +- mcsrc/maint/utils/sync-transifex/README.md | 42 + mcsrc/maint/utils/sync-transifex/README.txt | 29 - .../sync-transifex/config.d/mc.hint/po4a.cfg | 7 +- .../sync-transifex/config.d/mc.hint/tx.config | 5 +- .../sync-transifex/config.d/mc.pot/tx.config | 8 + mcsrc/maint/utils/sync-transifex/functions | 161 -- .../sync-transifex/hints-from-transifex.py | 31 + .../sync-transifex/hints-to-transifex.py | 19 + .../sync-transifex/mc.hint-fromTransifex.sh | 61 - .../sync-transifex/mc.hint-toTransifex.sh | 43 - .../utils/sync-transifex/po-from-transifex.py | 41 + .../utils/sync-transifex/po-fromTransifex.sh | 67 - .../utils/sync-transifex/po-to-transifex.py | 18 + .../utils/sync-transifex/po-toTransifex.sh | 50 - .../utils/sync-transifex/translation_utils.py | 33 + mcsrc/maint/utils/version.sh | 79 - mcsrc/merge4_8_29.txt | 17 + mcsrc/misc/Makefile.am | 2 +- mcsrc/misc/ext.d/misc.sh.in | 2 +- mcsrc/misc/filehighlight.ini | 4 +- mcsrc/misc/mc.default.keymap | 1 + mcsrc/misc/mc.emacs.keymap | 1 + mcsrc/misc/mc.ext.in | 848 ------- mcsrc/misc/mc.ext.ini.in | 1126 +++++++++ mcsrc/misc/skins/seasons-autumn16M.ini | 2 +- mcsrc/misc/skins/seasons-spring16M.ini | 2 +- mcsrc/misc/skins/seasons-summer16M.ini | 2 +- mcsrc/misc/skins/seasons-winter16M.ini | 2 +- mcsrc/misc/syntax/Makefile.am | 2 + mcsrc/misc/syntax/Syntax.in | 20 + mcsrc/misc/syntax/privoxy.syntax | 155 ++ mcsrc/misc/syntax/toml.syntax | 22 + mcsrc/misc/syntax/yaml.syntax | 5 +- mcsrc/po/Makevars | 2 +- mcsrc/po/af.po | 76 +- mcsrc/po/ar.po | 76 +- mcsrc/po/az.po | 77 +- mcsrc/po/be.po | 216 +- mcsrc/po/bg.po | 1699 ++++++------- mcsrc/po/br.po | 84 +- mcsrc/po/ca.po | 296 +-- mcsrc/po/cs.po | 106 +- mcsrc/po/da.po | 89 +- mcsrc/po/de.po | 107 +- mcsrc/po/de_CH.po | 76 +- mcsrc/po/el.po | 89 +- mcsrc/po/en_GB.po | 144 +- mcsrc/po/eo.po | 95 +- mcsrc/po/es.po | 106 +- mcsrc/po/et.po | 89 +- mcsrc/po/eu.po | 91 +- mcsrc/po/fa.po | 76 +- mcsrc/po/fi.po | 80 +- mcsrc/po/fr.po | 303 ++- mcsrc/po/fr_CA.po | 76 +- mcsrc/po/ga.po | 76 +- mcsrc/po/gl.po | 90 +- mcsrc/po/he.po | 76 +- mcsrc/po/hr.po | 80 +- mcsrc/po/hu.po | 90 +- mcsrc/po/ia.po | 77 +- mcsrc/po/id.po | 76 +- mcsrc/po/ie.po | 76 +- mcsrc/po/it.po | 146 +- mcsrc/po/ja.po | 79 +- mcsrc/po/ka.po | 971 ++++---- mcsrc/po/kk.po | 76 +- mcsrc/po/ko.po | 135 +- mcsrc/po/kw.po | 96 +- mcsrc/po/lt.po | 79 +- mcsrc/po/lv.po | 77 +- mcsrc/po/mc.pot | 1433 +++++------ mcsrc/po/mn.po | 77 +- mcsrc/po/nb.po | 94 +- mcsrc/po/nl.po | 91 +- mcsrc/po/nl_BE.po | 76 +- mcsrc/po/pl.po | 96 +- mcsrc/po/pt.po | 109 +- mcsrc/po/pt_BR.po | 2123 +++++++++-------- mcsrc/po/ro.po | 107 +- mcsrc/po/ru.po | 201 +- mcsrc/po/sk.po | 90 +- mcsrc/po/sl.po | 81 +- mcsrc/po/sr.po | 93 +- mcsrc/po/sv.po | 90 +- mcsrc/po/szl.po | 76 +- mcsrc/po/ta.po | 76 +- mcsrc/po/te.po | 76 +- mcsrc/po/tr.po | 88 +- mcsrc/po/uk.po | 107 +- mcsrc/po/uz.po | 76 +- mcsrc/po/vi.po | 77 +- mcsrc/po/wa.po | 76 +- mcsrc/po/zh_CN.po | 89 +- mcsrc/po/zh_TW.po | 81 +- mcsrc/src/diffviewer/search.c | 13 +- mcsrc/src/diffviewer/ydiff.c | 23 +- mcsrc/src/editor/edit-impl.h | 7 +- mcsrc/src/editor/edit.c | 37 +- mcsrc/src/editor/editcmd.c | 88 +- mcsrc/src/editor/editcomplete.c | 4 +- mcsrc/src/editor/editdraw.c | 85 +- mcsrc/src/editor/editmacros.c | 3 +- mcsrc/src/editor/editoptions.c | 15 +- mcsrc/src/editor/editsearch.c | 58 +- mcsrc/src/editor/editwidget.c | 99 +- mcsrc/src/editor/etags.c | 11 +- mcsrc/src/editor/syntax.c | 16 +- mcsrc/src/file_history.c | 4 +- mcsrc/src/filemanager/achown.c | 21 +- mcsrc/src/filemanager/boxes.c | 223 +- mcsrc/src/filemanager/chattr.c | 104 +- mcsrc/src/filemanager/chmod.c | 12 +- mcsrc/src/filemanager/chown.c | 4 +- mcsrc/src/filemanager/cmd.c | 89 +- mcsrc/src/filemanager/cmd.h | 1 - mcsrc/src/filemanager/command.c | 6 +- mcsrc/src/filemanager/dir.c | 77 +- mcsrc/src/filemanager/dir.h | 25 +- mcsrc/src/filemanager/ext.c | 503 ++-- mcsrc/src/filemanager/file.c | 151 +- mcsrc/src/filemanager/filegui.c | 70 +- mcsrc/src/filemanager/filemanager.c | 20 +- mcsrc/src/filemanager/fileopctx.c | 2 +- mcsrc/src/filemanager/find.c | 62 +- mcsrc/src/filemanager/hotlist.c | 47 +- mcsrc/src/filemanager/info.c | 23 +- mcsrc/src/filemanager/layout.c | 120 +- mcsrc/src/filemanager/panel.c | 313 ++- mcsrc/src/filemanager/panel.h | 13 +- mcsrc/src/filemanager/panelize.c | 8 +- mcsrc/src/filemanager/tree.c | 31 +- mcsrc/src/help.c | 24 +- mcsrc/src/history.h | 2 + mcsrc/src/man2hlp/man2hlp.in | 2 +- mcsrc/src/setup.c | 14 + mcsrc/src/setup.h | 4 +- mcsrc/src/subshell/common.c | 58 +- mcsrc/src/vfs/extfs/extfs.c | 44 +- mcsrc/src/vfs/extfs/helpers/iso9660.in | 12 +- mcsrc/src/vfs/fish/fish.c | 345 +-- mcsrc/src/vfs/ftpfs/ftpfs.c | 145 +- mcsrc/src/vfs/ftpfs/ftpfs_parse_ls.c | 4 +- mcsrc/src/vfs/sfs/sfs.c | 2 + mcsrc/src/vfs/sftpfs/sftpfs.c | 4 +- mcsrc/src/viewer/actions_cmd.c | 12 +- mcsrc/src/viewer/ascii.c | 54 +- mcsrc/src/viewer/coord_cache.c | 140 +- mcsrc/src/viewer/dialogs.c | 20 +- mcsrc/src/viewer/display.c | 93 +- mcsrc/src/viewer/growbuf.c | 10 + mcsrc/src/viewer/hex.c | 44 +- mcsrc/src/viewer/internal.h | 42 +- mcsrc/src/viewer/lib.c | 10 +- mcsrc/src/viewer/mcviewer.c | 27 +- mcsrc/src/viewer/move.c | 84 +- mcsrc/src/viewer/search.c | 23 +- mcsrc/tests/lib/mcconfig/user_configs_path.c | 6 +- mcsrc/tests/lib/strutil/filevercmp.c | 18 +- mcsrc/tests/lib/widget/complete_engine.c | 4 +- mcsrc/tests/lib/widget/group_init_destroy.c | 27 +- mcsrc/tests/lib/widget/widget_find_by_id.c | 27 +- .../lib/widget/widget_make_global_local.c | 61 +- .../tests/src/editor/edit_complete_word_cmd.c | 7 +- .../editor/editcmd__edit_complete_word_cmd.c | 400 ---- .../vfs/extfs/helpers-list/data/lslR.README | 2 +- .../extfs/helpers-list/data/urar.v5.env_vars | 1 - .../vfs/extfs/helpers-list/data/urar.v5.input | 102 - .../extfs/helpers-list/data/urar.v5.output | 9 - .../vfs/extfs/helpers-list/data/uzoo.README | 2 +- mcwin32/Makefile.in | 6 +- mcwin32/autoupdater/Makefile.in | 2 +- mcwin32/autoupdater/mcupdater.cpp | 2 +- mcwin32/autoupdater/updater.rc | 2 +- mcwin32/buildinfo.pl | 4 +- mcwin32/doc/README.win32 | 2 + mcwin32/libmbedtls/.cvsignore | 1 + mcwin32/libmbedtls/.gitignore | 1 + mcwin32/libw32/sys/statfs.h | 2 +- mcwin32/libw32/sys/statvfs.h | 2 +- mcwin32/libw32/sys/utypes.h | 25 +- mcwin32/libw32/sysexit.h | 107 + mcwin32/makelib.in | 4 +- mcwin32/makelib.pl | 4 +- mcwin32/mc.rc | 4 +- mcwin32/src/win32_glib.c | 2 +- mcwin32/src/win32_key.c | 14 +- mcwin32/src/win32_pipe.c | 2 +- mcwin32/src/win32_tty.c | 6 +- mcwin32/src/win32_utl.c | 14 +- mcwin32/src/win32_win.c | 2 +- 317 files changed, 12322 insertions(+), 11241 deletions(-) delete mode 100644 mcsrc/contrib/dist/Makefile.am delete mode 100644 mcsrc/contrib/dist/gentoo/Makefile.am delete mode 100644 mcsrc/contrib/dist/gentoo/README delete mode 100644 mcsrc/contrib/dist/pkginfo.in delete mode 100644 mcsrc/contrib/dist/prototype.in delete mode 100644 mcsrc/contrib/dist/redhat/Makefile.am delete mode 100644 mcsrc/contrib/dist/redhat/mc.spec.in delete mode 100644 mcsrc/doc/hints/l10n/mc.hint.de_CH delete mode 100644 mcsrc/doc/hints/l10n/mc.hint.fr_CA delete mode 100644 mcsrc/doc/hints/l10n/mc.hint.it_IT delete mode 100644 mcsrc/doc/hints/l10n/mc.hint.sv_SE delete mode 100644 mcsrc/doc/hints/l10n/mc.hint.zh create mode 100644 mcsrc/maint/utils/sync-transifex/README.md delete mode 100644 mcsrc/maint/utils/sync-transifex/README.txt create mode 100644 mcsrc/maint/utils/sync-transifex/config.d/mc.pot/tx.config delete mode 100644 mcsrc/maint/utils/sync-transifex/functions create mode 100644 mcsrc/maint/utils/sync-transifex/hints-from-transifex.py create mode 100644 mcsrc/maint/utils/sync-transifex/hints-to-transifex.py delete mode 100644 mcsrc/maint/utils/sync-transifex/mc.hint-fromTransifex.sh delete mode 100644 mcsrc/maint/utils/sync-transifex/mc.hint-toTransifex.sh create mode 100644 mcsrc/maint/utils/sync-transifex/po-from-transifex.py delete mode 100644 mcsrc/maint/utils/sync-transifex/po-fromTransifex.sh create mode 100644 mcsrc/maint/utils/sync-transifex/po-to-transifex.py delete mode 100644 mcsrc/maint/utils/sync-transifex/po-toTransifex.sh create mode 100644 mcsrc/maint/utils/sync-transifex/translation_utils.py delete mode 100644 mcsrc/maint/utils/version.sh create mode 100644 mcsrc/merge4_8_29.txt delete mode 100644 mcsrc/misc/mc.ext.in create mode 100644 mcsrc/misc/mc.ext.ini.in create mode 100644 mcsrc/misc/syntax/privoxy.syntax create mode 100644 mcsrc/misc/syntax/toml.syntax delete mode 100644 mcsrc/tests/src/editor/editcmd__edit_complete_word_cmd.c delete mode 100644 mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.env_vars delete mode 100644 mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.input delete mode 100644 mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.output create mode 100644 mcwin32/libw32/sysexit.h diff --git a/README.md b/README.md index d5b1e4f4..5f0c5ba6 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ # Midnight Commander for Windows -## Native Midnight Commander 4.8.28 for Windows/Win32 +## Native Midnight Commander 4.8.29 for Windows/Win32 -Windows XP+/32 bit native port of GNU Midnight Commander, based on the current 4.8.27 development stream. +Windows XP+/32 bit native port of GNU Midnight Commander, based on the current 4.8.29 development stream. Supports both the recent Windows 10 plus the prior legacy console, 16 and 256 colour modes are available within either. @@ -43,7 +43,7 @@ mcupdater force Updating older distribution shall require you download from one of the sites listed below or alternatively winget and then update if requried. ``` -winget install --id=GNU.MidnightCommander -e +winget install --id=GNU.MidnightCommander -e ``` To utilise *Files transferred over Shell protocol* **(FISH)** over SSH, an ssh client is required, you can either install [Win32-OpenSSH](https://github.com/powershell/Win32-OpenSSH) or [WinXSH](https://github.com/adamyg/winxsh). For legacy RSH based connections [WinXSH](https://github.com/adamyg/winxsh) is needed. diff --git a/mcsrc/.gitignore b/mcsrc/.gitignore index 2add7808..dceb0fbd 100644 --- a/mcsrc/.gitignore +++ b/mcsrc/.gitignore @@ -5,7 +5,6 @@ *~ *.cache *.tar.gz -*.orig ABOUT-NLS Make.common Makefile @@ -50,4 +49,4 @@ tests/src/editor/test-data.txt tests/src/vfs/extfs/helpers-list/data/config.sh mc-version.h *.old - +*.orig diff --git a/mcsrc/configure.ac b/mcsrc/configure.ac index 044f04d5..5b58fba6 100644 --- a/mcsrc/configure.ac +++ b/mcsrc/configure.ac @@ -126,7 +126,7 @@ fi AC_SUBST(MANDOC) AC_SUBST(MAN_FLAGS) -dnl Check for -z, -L, and -S options to file +dnl Check for -z, -b, -L, and -S options to file AC_CHECK_PROG(HAVE_FILECMD, file, true, false) if $HAVE_FILECMD; then dnl Don't use the file command if it doesn't accept the -z option @@ -148,7 +148,22 @@ if $HAVE_FILECMD; then fi if test x$mc_cv_file_z = xyes; then - dnl file is used; check -L and -S options + dnl file is used; check -b, -L and -S options + + AC_MSG_CHECKING([for -b option to file command]) + AC_CACHE_VAL(mc_cv_file_b, [ + file -b . > /dev/null 2>&1 + if test $? = 0; then + mc_cv_file_b=yes + else + mc_cv_file_b=no + fi + ]) + AC_MSG_RESULT([$mc_cv_file_b]) + + if test x$mc_cv_file_b = xyes; then + AC_DEFINE(FILE_B, "-b ", [Define if the file command accepts the -b option]) + fi AC_MSG_CHECKING([for -L option to file command]) AC_CACHE_VAL(mc_cv_file_L, [ @@ -332,11 +347,13 @@ dnl ############################################################################ case $host_os in *os400) AC_PATH_PROG([PERL], [perl], [/QOpenSys/pkgs/bin/perl]) + AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/QOpenSys/pkgs/bin/perl]) AC_PATH_PROG([PYTHON], [python], [/QOpenSys/pkgs/bin/python2]) AC_PATH_PROG([RUBY], [ruby], [/QOpenSys/pkgs/bin/ruby]) ;; *) AC_PATH_PROG([PERL], [perl], [/usr/bin/perl]) + AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/usr/bin/perl]) AC_PATH_PROG([PYTHON], [python], [/usr/bin/python]) AC_PATH_PROG([RUBY], [ruby], [/usr/bin/ruby]) esac @@ -557,7 +574,7 @@ AM_CONDITIONAL([HAVE_GMODULE], [test -n "$g_module_supported" && \ test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"]) AC_ARG_ENABLE([configure-args], - AS_HELP_STRING([--enable-configure-args], [Handle all compiler warnings as errors])) + AS_HELP_STRING([--enable-configure-args], [Embed ./configure arguments into binaries])) if test "x$enable_configure_args" != xno; then AC_DEFINE([ENABLE_CONFIGURE_ARGS], 1, [Define to enable showing configure arguments in help]) AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments]) @@ -588,7 +605,7 @@ misc/ext.d/misc.sh misc/ext.d/text.sh misc/ext.d/web.sh misc/macros.d/Makefile -misc/mc.ext +misc/mc.ext.ini src/Makefile src/consaver/Makefile @@ -663,7 +680,6 @@ lib/vfs/Makefile lib/widget/Makefile misc/syntax/Makefile -misc/syntax/Syntax doc/Makefile @@ -689,6 +705,11 @@ doc/hlp/sr/Makefile po/Makefile.in ]) +dnl https://stackoverflow.com/questions/30897170/ac-subst-does-not-expand-variable/30932102#30932102 +AC_CONFIG_FILES( +[misc/syntax/Syntax], [sed -i -e "s%\${prefix}%$PREFIX%" misc/syntax/Syntax], [export PREFIX=$prefix] +) + AC_CONFIG_FILES([ tests/Makefile tests/lib/Makefile diff --git a/mcsrc/contrib/README.xterm b/mcsrc/contrib/README.xterm index e6490b20..433890af 100644 --- a/mcsrc/contrib/README.xterm +++ b/mcsrc/contrib/README.xterm @@ -102,7 +102,7 @@ complete reference, see xterm(1) and X Toolkit Intrinsics manual Appendix B. Please, if you find any problems or errors in this stuff, let me know by e-mail to -mc-devel@gnome.org. +mc-devel@lists.midnight-commander.org. diff --git a/mcsrc/contrib/dist/Makefile.am b/mcsrc/contrib/dist/Makefile.am deleted file mode 100644 index d521b0c3..00000000 --- a/mcsrc/contrib/dist/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -SUBDIRS = gentoo redhat - - -AUTOMAKE_OPTIONS = 1.5 - -EXTRA_DIST = pkginfo.in prototype.in - -noinst_DATA = pkginfo prototype - -ACLOCAL_AMFLAGS = -I m4 - diff --git a/mcsrc/contrib/dist/gentoo/Makefile.am b/mcsrc/contrib/dist/gentoo/Makefile.am deleted file mode 100644 index 8eb09509..00000000 --- a/mcsrc/contrib/dist/gentoo/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -noinst_DATA = README diff --git a/mcsrc/contrib/dist/gentoo/README b/mcsrc/contrib/dist/gentoo/README deleted file mode 100644 index 53239fc8..00000000 --- a/mcsrc/contrib/dist/gentoo/README +++ /dev/null @@ -1,39 +0,0 @@ -Hi! Currently bleeding-edge mc-9999.ebuild (git) -hosts on repo.or.cz in overlay format: - - git://repo.or.cz/slyfox-gentoo.git - -In order to use it you need to perform some steps: - -1. fetch overlay somewhere: - $ cd ~/portage/ - $ git clone git://repo.or.cz/slyfox-gentoo.git - -2. add overlay to your PM: - * portage: - $ cat /etc/make.conf | grep PORTDIR_OVERLAY - PORTDIR_OVERLAY="/home/slyfox/portage/slyfox-gentoo" - * paludis: - $ cat /etc/paludis/repositories/slyfox-gentoo.conf - location = ${ROOT}/home/slyfox/portage/slyfox-gentoo - master_repository = gentoo - format = ebuild - -3. unmask unkeyworded ebuild: - * portage: - $ ACCEPT_KEYWORDS="~amd64 **" emerge -pv mc - or - $ cat /etc/portage/package.keywords | grep app-misc/mc - =app-misc/mc-9999 ~amd64 ** - * paludis: - $ cat /etc/paludis/keywords.conf.d/mc.conf - =app-misc/mc-9999::slyfox-gentoo ~amd64 * - -4. install ebuild the way you usually do it - -5. update an overlay time to time: - $ cd ~/portage/slyfox-gentoo - $ git pull - -Bugs/feature requests/patches are welcome: http://midnight-commander.org/ -Have fun! \ No newline at end of file diff --git a/mcsrc/contrib/dist/pkginfo.in b/mcsrc/contrib/dist/pkginfo.in deleted file mode 100644 index 4f5d5115..00000000 --- a/mcsrc/contrib/dist/pkginfo.in +++ /dev/null @@ -1,9 +0,0 @@ -PKG=GNUmc -NAME=Midnight Commander visual shell -DESC=Midnight Commander visual shell -VENDOR=Free Software Foundation -VERSION=@VERSION@ -CLASSES=none -CATEGORY=application -EMAIL=mc-devel@gnome.org -PSTAMP=20030205 diff --git a/mcsrc/contrib/dist/prototype.in b/mcsrc/contrib/dist/prototype.in deleted file mode 100644 index fd28caee..00000000 --- a/mcsrc/contrib/dist/prototype.in +++ /dev/null @@ -1,130 +0,0 @@ -#! /usr/bin/pkgmk -f -# Sun Solaris prototype file for pkgmk(1) -# -!prefix=@prefix@ -!bindir=$prefix/bin -!libdir=$prefix/lib -!datadir=$prefix/share -!mandir=$prefix/man -!docdir=$prefix/doc -!search . $bindir $libdir $datadir $datadir/mc -i pkginfo=pkginfo -!default 755 root bin -l none $bindir/mcedit=mc -f none $bindir/mc -d none $libdir/mc -d none $datadir/mc -d none $datadir/mc/bin -d none $datadir/mc/extfs -d none $datadir/mc/syntax -d none $docdir/mc -# -!default 644 root bin -f none $datadir/mc/cedit.menu -f none $datadir/mc/edit.indent.rc -f none $datadir/mc/edit.spell.rc -f none $datadir/mc/mc.ext -f none $datadir/mc/mc.hint -f none $datadir/mc/mc.hint.cs -f none $datadir/mc/mc.hint.es -f none $datadir/mc/mc.hint.hu -f none $datadir/mc/mc.hint.it -f none $datadir/mc/mc.hint.nl -f none $datadir/mc/mc.hint.pl -f none $datadir/mc/mc.hint.ru -f none $datadir/mc/mc.hint.uk -f none $datadir/mc/mc.hint.zh -f none $datadir/mc/mc.hlp -f none $datadir/mc/mc.hlp.es -f none $datadir/mc/mc.hlp.hu -f none $datadir/mc/mc.hlp.it -f none $datadir/mc/mc.hlp.pl -f none $datadir/mc/mc.hlp.ru -f none $datadir/mc/mc.lib -f none $datadir/mc/mc.menu -# -!search $datadir/mc/bin -# -f none $datadir/mc/bin/mc.csh -f none $datadir/mc/bin/mc.sh -f none $datadir/mc/bin/mc-wrapper.csh -f none $datadir/mc/bin/mc-wrapper.sh -# -!search $datadir/mc/extfs -# -f none $datadir/mc/extfs/a -f none $datadir/mc/extfs/apt -f none $datadir/mc/extfs/audio -f none $datadir/mc/extfs/bpp -f none $datadir/mc/extfs/deb -f none $datadir/mc/extfs/deba -f none $datadir/mc/extfs/debd -f none $datadir/mc/extfs/dpkg -f none $datadir/mc/extfs/extfs.ini -f none $datadir/mc/extfs/hp48 -f none $datadir/mc/extfs/lslR -f none $datadir/mc/extfs/mailfs -f none $datadir/mc/extfs/patchfs -f none $datadir/mc/extfs/README -f none $datadir/mc/extfs/rpm -f none $datadir/mc/extfs/rpms -f none $datadir/mc/extfs/sfs.ini -f none $datadir/mc/extfs/trpm -f none $datadir/mc/extfs/uar -f none $datadir/mc/extfs/uarj -f none $datadir/mc/extfs/uha -f none $datadir/mc/extfs/ulha -f none $datadir/mc/extfs/urar -f none $datadir/mc/extfs/uzip -f none $datadir/mc/extfs/uzoo -# -!search $datadir/mc/syntax -# -f none $datadir/mc/syntax/ada95.syntax -f none $datadir/mc/syntax/changelog.syntax -f none $datadir/mc/syntax/c.syntax -f none $datadir/mc/syntax/diff.syntax -f none $datadir/mc/syntax/dos.syntax -f none $datadir/mc/syntax/fortran.syntax -f none $datadir/mc/syntax/html.syntax -f none $datadir/mc/syntax/java.syntax -f none $datadir/mc/syntax/js.syntax -f none $datadir/mc/syntax/latex.syntax -f none $datadir/mc/syntax/lisp.syntax -f none $datadir/mc/syntax/lsm.syntax -f none $datadir/mc/syntax/m4.syntax -f none $datadir/mc/syntax/mail.syntax -f none $datadir/mc/syntax/makefile.syntax -f none $datadir/mc/syntax/ml.syntax -f none $datadir/mc/syntax/nroff.syntax -f none $datadir/mc/syntax/octave.syntax -f none $datadir/mc/syntax/pascal.syntax -f none $datadir/mc/syntax/perl.syntax -f none $datadir/mc/syntax/php.syntax -f none $datadir/mc/syntax/po.syntax -f none $datadir/mc/syntax/python.syntax -f none $datadir/mc/syntax/sh.syntax -f none $datadir/mc/syntax/slang.syntax -f none $datadir/mc/syntax/smalltalk.syntax -f none $datadir/mc/syntax/spec.syntax -f none $datadir/mc/syntax/sql.syntax -f none $datadir/mc/syntax/swig.syntax -f none $datadir/mc/syntax/Syntax -f none $datadir/mc/syntax/syntax.syntax -f none $datadir/mc/syntax/tcl.syntax -f none $datadir/mc/syntax/texinfo.syntax -f none $datadir/mc/syntax/unknown.syntax -f none $datadir/mc/syntax/xml.syntax -!search $docdir/mc -f none $docdir/mc/ABOUT-NLS -f none $docdir/mc/AUTHORS -f none $docdir/mc/ChangeLog -f none $docdir/mc/COPYING -f none $docdir/mc/FAQ -f none $docdir/mc/INSTALL -f none $docdir/mc/INSTALL.FAST -f none $docdir/mc/MAINTAINERS -f none $docdir/mc/NEWS -f none $docdir/mc/README -f none $docdir/mc/README.PC -f none $docdir/mc/README.QNX diff --git a/mcsrc/contrib/dist/redhat/Makefile.am b/mcsrc/contrib/dist/redhat/Makefile.am deleted file mode 100644 index d4426f3e..00000000 --- a/mcsrc/contrib/dist/redhat/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -EXTRA_DIST = mc.spec.in - -noinst_DATA = mc.spec diff --git a/mcsrc/contrib/dist/redhat/mc.spec.in b/mcsrc/contrib/dist/redhat/mc.spec.in deleted file mode 100644 index b017787b..00000000 --- a/mcsrc/contrib/dist/redhat/mc.spec.in +++ /dev/null @@ -1,357 +0,0 @@ -# Note that this is NOT a relocatable package - -%define legacy_rhel 0%{?el4}%{?el3} - -%if %{legacy_rhel} - %define _with_screen --with-screen=ncurses - %define _with_glib_static --with-glib-static - %define glib_version 2.12 - %define glib_stepping .3 -%else - %define _with_screen --with-screen=slang -%endif - -%define mc_version @DISTR_VERSION@ -%define mc_release @DISTR_RELEASE@ -%define mc_tarball @VERSION@ - -Summary: User-friendly text console file manager and visual shell -Name: mc -Version: %{mc_version} -Release: %{mc_release}%{?dist} -Epoch: 3 -License: GPL3+ -Group: System Environment/Shells -Source0: %{name}-%{mc_tarball}.tar.gz - -%if %{legacy_rhel} -Source1: http://ftp.gnome.org/pub/gnome/sources/glib/%{glib_version}/glib-%{glib_version}%{?glib_stepping}.tar.bz2 -Patch0: glib2-CVE-2008-4316.patch -%endif - -URL: http://www.midnight-commander.org/ -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: e2fsprogs-devel gpm-devel perl - -%if %{legacy_rhel}%{?el5} -BuildRequires: pcre-devel -%endif - -%if %{legacy_rhel} - -BuildRequires: ncurses-devel - -# From Glib -BuildRequires: pkgconfig gettext - -%else -BuildRequires: glib2-devel slang-devel -%endif - -%description -GNU Midnight Commander is a visual file manager. It's a feature rich -full-screen text mode application that allows you to copy, move and -delete files and whole directory trees, search for files and run -commands in the subshell. Internal viewer and editor are included. Mouse -is supported on Linux console. VFS (Virtual Filesystem) allows you to -view archives and files on remote servers (via SAMBA, FTP or SSH). - -%prep - -%setup -q -n %{name}-%{mc_tarball} - -%if %{legacy_rhel} - -%setup -q -T -D -a 1 -n %{name}-%{mc_tarball} - -cd glib-%{glib_version}%{?glib_stepping} -%patch0 -p1 -b .CVE-2008-4316 - -%endif - -%build - -%if %{legacy_rhel} - -pushd glib-%{glib_version}%{?glib_stepping} -RESULT_DIR=`pwd`/result - -./configure \ - --disable-gtk-doc \ - --disable-shared \ - --enable-static \ - --prefix="$RESULT_DIR" \ - --exec-prefix="$RESULT_DIR" \ - --libdir="$RESULT_DIR/usr/%{_lib}" - -%{__make} %{?_smp_mflags} CFLAGS="%{optflags} -fno-strict-aliasing" install -popd - -PKG_CONFIG_PATH="$RESULT_DIR/usr/%{_lib}/pkgconfig:$PKG_CONFIG_PATH" ; export PKG_CONFIG_PATH ; -%endif - -%configure \ - %{_with_screen} \ - %{?_with_glib_static} \ - --enable-charset \ - --enable-vfs-smb \ - --without-x \ - --with-gpm-mouse \ - --disable-doxygen-doc - -%{__make} %{?_smp_mflags} CFLAGS="%{optflags}" - -%install -rm -rf $RPM_BUILD_ROOT - -make install DESTDIR="$RPM_BUILD_ROOT" - -install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/profile.d -install contrib/{mc.sh,mc.csh} $RPM_BUILD_ROOT%{_sysconfdir}/profile.d - -%find_lang %{name} - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -f %{name}.lang -%defattr(-, root, root) - -%doc doc/FAQ doc/COPYING doc/NEWS doc/README -%{_bindir}/mc -%{_bindir}/mcedit -%{_bindir}/mcview -%{_bindir}/mcdiff - -%dir %{_libexecdir}/mc -%dir %{_libexecdir}/mc/extfs.d -%dir %{_libexecdir}/mc/fish -%attr(4511, vcsa, tty) %{_libexecdir}/mc/cons.saver -%{_libexecdir}/mc/mc*sh -%{_libexecdir}/mc/extfs.d/* -%{_libexecdir}/mc/fish/* - -%{_mandir}/man1/* -%lang(es) %{_mandir}/es/man1/mc.1* -%lang(hu) %{_mandir}/hu/man1/mc.1* -%lang(it) %{_mandir}/it/man1/mc.1* -%lang(pl) %{_mandir}/pl/man1/mc.1* -%lang(ru) %{_mandir}/ru/man1/mc.1* -%lang(sr) %{_mandir}/sr/man1/mc.1* - -%{_sysconfdir}/profile.d/* - -%config(noreplace) %{_sysconfdir}/mc/filehighlight.ini -%config(noreplace) %{_sysconfdir}/mc/*edit* -%config(noreplace) %{_sysconfdir}/mc/mc.ext -%config(noreplace) %{_sysconfdir}/mc/mc.menu -%config(noreplace) %{_sysconfdir}/mc/mc.menu.* -%config(noreplace) %{_sysconfdir}/mc/sfs.ini -%config(noreplace) %{_sysconfdir}/mc/mc.keymap -%config(noreplace) %{_sysconfdir}/mc/mc.keymap.* - -%dir %{_datadir}/mc -%{_datadir}/mc/* - -%changelog - -* Fri Oct 14 2011 Slava Zanko -- Changed License version - -* Thu Jul 14 2011 Slava Zanko -- Added %{_libexecdir}/mc/fish directory to spec file - -* Thu Sep 16 2010 Andrew Borodin -- Some files are installed now into %%{_datadir}/mc instead of %%{_sysconfdir}/mc. - -* Wed Apr 28 2010 Yury V. Zaytsev -- Added mcdiff to the list of packaged files. - -* Tue Feb 09 2010 Andrew Borodin -- Fixed file list because of EXTFS VFS reorganizing. - -* Wed Dec 30 2009 Yury V. Zaytsev -- Bumped the epoch again and changed the versioning scheme. -- Thanks to Slava Zanko for all his hard work on m4 vodoo! - -* Fri Dec 25 2009 Yury V. Zaytsev -- Had to bump the epoch because of the braindead versioning scheme used. - -* Fri Nov 27 2009 Yury V. Zaytsev -- Fixed debug info generation for legacy distros. -- Rewritten and simplified static build procedure. - -* Mon Oct 26 2009 Andrew Borodin -- Added new %%{_sysconfdir}/mc/mc.keymap.* files. - -* Fri Sep 04 2009 Slava Zanko -- Add new file %%{_sysconfdir}/mc/filehighlight.ini. - -* Sat Aug 01 2009 Yury V. Zaytsev -- Fixed EL4 (and supposedly EL3) builds. -- Fixed some of the rpmlint warnings. - -* Sat Jul 04 2009 Yury V. Zaytsev -- Fix the issue when wrappers were left unpackaged. - -* Thu May 21 2009 Slava Zanko -- Fix install patches: use %%{_sysconfdir}/mc directory. - -* Fri May 8 2009 Slava Zanko -- Reviewed spec-file to build on the current distributions. -- Changed build rules. -- Fixed install paths. - -* Fri Jun 22 2007 Pavel Roskin -- Made cons.saver suid vcsa, it's needed for Fedora 7. - -* Thu Dec 21 2006 Pavel Roskin -- Don't rely on brace expansion, it may be disabled. - -* Mon Jan 30 2006 Pavel Roskin -- Avoid using %%{_prefix} where more specialized macros are available. - -* Tue Aug 02 2005 Pavel Roskin -- Replace obsolete "Copyright" with "License". - -* Thu Mar 31 2005 Pavel Roskin -- Comment out build dependencies - they are too distribution specific. - -* Tue Sep 23 2003 Pavel Roskin -- Remove term directory, it's obsolete and irrelevant on modern systems. -- Include translated menu files. - -* Sun Feb 16 2003 Pavel Roskin -- Remove obsolete dependency on /sbin/chkconfig. - -* Tue Dec 24 2002 Pavel Roskin -- Work around bug in rpm 4.1 that expands defines in comments. -- Handle --without-x. - -* Mon Nov 04 2002 Andrew V. Samoilov -- Handle --with ext2undel. - -* Fri Nov 01 2002 Pavel Roskin -- Add wrappers to support setting last directory on exit. Keep all - scripts in their original directory, just copy them. - -* Tue Oct 22 2002 Pavel Roskin -- Don't use the included S-Lang, there is a workaround for Red Hat 8.0 - S-Lang, and binary compatibility with Red Hat 7.x doesn't work anyway. - -* Tue Oct 08 2002 Pavel Roskin -- Use the included S-Lang again, since we include a better version now. - This should avoid incompatibility with Red Hat 7.x. -- Add _with_glib2 option. - -* Mon Oct 07 2002 Pavel Roskin -- Remove installed mc.sh and mc.csh from %%{_prefix}/share/mc/bin to - suppress a warning about installed but unpackaged files. - -* Mon Sep 30 2002 Andrew V. Samoilov -- Don't require slang-devel if _with_ncurses. -- Handle --with samba. - -* Sun Sep 29 2002 Pavel Roskin -- Use --with-screen instead of --with-ncurses and --with-included-slang. - -* Mon Sep 23 2002 Andrew V. Samoilov -- Restore %%config for %%{_prefix}/share/mc/mc.charsets. -- Restore %%{_prefix}/share/mc/edit.spell.rc. - -* Sat Sep 21 2002 Pavel Roskin -- Use FHS-compliant paths. -- Drop %%config from files under /usr/share - users are not supposed to - edit them. Local copies under ~/.mc should be used for that. - -* Wed Aug 21 2002 Pavel Roskin -- Change description, update URLs, allow dash in the version. - -* Tue Aug 20 2002 Pavel Roskin -- Support conditional builds. - -* Tue Aug 20 2002 Andrew V. Samoilov -- Add /usr/lib/mc/mc.charsets. -- Add %%{_mandir}/*/man1/*. - -* Fri Aug 16 2002 Pavel Roskin -- Remove mc.global. - -* Mon Jan 21 2002 Pavel Roskin -- Remove --with-gnome and --with-included-slang from configure options. -- Add BuildPrereq. - -* Fri Aug 24 2001 Pavel Roskin -- Remove gmc. Reunite mc and mc-common. - -* Sun Aug 05 2001 Pavel Roskin -- Set epoch. - -* Sun Jul 15 2001 Pavel Roskin -- Remove /usr/lib/mc/layout. - -* Sat Jun 09 2001 Pavel Roskin -- Use %%{_prefix} and %%{_mandir}. Specify --mandir to configure. - -* Fri May 25 2001 Pavel Roskin -- Change groups. Don't include locale directories. More config files. - -* Sun May 20 2001 Pavel Roskin -- Don't require stylesheets, since HTML files are now in the tarball. - -* Thu Apr 19 2001 Pavel Roskin -- Remove package mcserv. Drop dependency on PAM. - -* Mon Feb 26 2001 Pavel Roskin -- Remove mc-gnome.ext. - -* Thu Jan 11 2001 Pavel Roskin -- Include mcview. - -* Mon Oct 23 2000 Pavel Roskin -- Allow mcserv.8 to be gzipped. - -* Sat Sep 30 2000 Pavel Roskin -- New package mc-common. -- Use DESTDIR instead of misusing prefix. -- Don't install old icons - they don't exist - -* Sat Sep 23 2000 Pavel Roskin -- Include translations with mc, not gmc. -- chkconfig --del in %%preun, not %%postun. -- --without-debug not needed. -- /etc/X11/wmconfig not needed. -- /etc/pam.d/mcserv shouldn't be executable. -- New files in %%{prefix}/lib/mc/ - translated hints, editor files. - -* Thu Sep 09 1999 Elliot Lee -- Include .idl files in the package. - -* Sat Sep 04 1999 Gregory McLean -- Added a build prereq so that rpms get built with documentation ;) - -* Mon Jul 12 1999 Kjartan Maraas -- Added help and locale files to %%files. - -* Tue Jun 22 1999 Vladimir Kondratiev -- Added syntax files to %%files. - -* Wed May 26 1999 Cody Russell -- Chmod cons.saver at $RPM_BUILD_ROOT%%{prefix}/lib rather than at - $RPM_BUILD_ROOT/usr/lib. We can now install to somewhere other than /usr. - -* Sun Apr 18 1999 Gregory McLean -- Updated the specfile, removed some kludges. - -* Thu Aug 20 1998 Michael Fulbright -- Rebuilt against gnome-libs 0.27 and gtk+-1.1. - -* Thu Jul 09 1998 Michael Fulbright -- Made cons.saver not setuid. - -* Sun Apr 19 1998 Marc Ewing -- Removed tkmc. - -* Wed Apr 8 1998 Marc Ewing -- Add /usr/lib/mc/layout to gmc. - diff --git a/mcsrc/doc/FAQ b/mcsrc/doc/FAQ index 274000ef..47450f62 100644 --- a/mcsrc/doc/FAQ +++ b/mcsrc/doc/FAQ @@ -2,7 +2,7 @@ GNU Midnight Commander Frequently Asked Questions The newest version of this document is available at - http://www.midnight-commander.org/browser/doc/FAQ + https://www.midnight-commander.org/browser/doc/FAQ * 1 Getting started + 1.1 What is Midnight Commander? @@ -177,7 +177,7 @@ Frequently Asked Questions 1.6 Where can I get GNU Midnight Commander? - The main site is http://www.midnight-commander.org + The main site is https://www.midnight-commander.org 1.7 I cannot compile MC. What should I do? @@ -784,16 +784,16 @@ indenting increases with each line! * Adam Tla/lka Current list of active developers can be found here: - http://www.midnight-commander.org/wiki/McDevelopers + https://www.midnight-commander.org/wiki/McDevelopers This page lists everbody who has provided a patch or has written code for the Midnight Commander in the past: - http://www.midnight-commander.org/wiki/McContributors + https://www.midnight-commander.org/wiki/McContributors 10.2 Do I dare to use a development version? Yes, of course. Feel free to test: - http://www.midnight-commander.org/wiki#Download + https://www.midnight-commander.org/wiki#Download As we do our development in git, please do a git checkout of the master branch and build it @@ -808,10 +808,10 @@ indenting increases with each line! the bug is fixed or the feature is added already. If this is not the case, feel free to add a ticket in our ticket system, - which is located here: http://www.midnight-commander.org/newticket + which is located here: https://www.midnight-commander.org/newticket - If you want to send an email instead write your report to mc-devel@gnome.org - or mc@gnome.org. + If you want to send an email instead write your report to + mc-devel@lists.midnight-commander.org or mc@lists.midnight-commander.org. These mailing lists are the most certain way to contact the developers. Remember to mention if you are not on the mailing list @@ -841,7 +841,7 @@ indenting increases with each line! 10.4 How can I join the development? To join the development just code the feature you want to add and - send your patch for inclusion. Email address is mc-devel@gnome.org. + send your patch for inclusion. Email address is mc-devel@lists.midnight-commander.org. Before you start coding check the latest development version. It might be that your feature has already been implemented. @@ -863,21 +863,21 @@ an answer? fixed in the new versions. If you still can't find an answer, post your question to the Midnight - Commander mailing list. Its address is mc@gnome.org. + Commander mailing list. Its address is mc@lists.midnight-commander.org. 11.2 What mailing lists are there for Midnight Commander? Following mailing lists discuss about Midnight Commander: - mc@gnome.org + mc@lists.midnight-commander.org General discussion of GNU Midnight Commander To subscribe visit - http://mail.gnome.org/mailman/listinfo/mc/ + https://lists.midnight-commander.org/mailman/listinfo/mc/ - mc-devel@gnome.org + mc-devel@lists.midnight-commander.org Technical development discussion To subscribe visit - http://mail.gnome.org/mailman/listinfo/mc-devel/ + https://lists.midnight-commander.org/mailman/listinfo/mc-devel/ mc-commits@googlegroups.com mailing list only for applyed commits into master/stable branches @@ -893,7 +893,7 @@ an answer? There is a WWW page for Midnight Commander. The URL is: - http://www.midnight-commander.org/ + https://www.midnight-commander.org/ 11.4 Are the mailing lists archived anywhere? @@ -912,7 +912,7 @@ an answer? 12.2 Feedback is invited Send your comments about this document and GNU Midnight Commander to - mc@gnome.org + mc@lists.midnight-commander.org 12.3 Disclaimer and copyright diff --git a/mcsrc/doc/HACKING b/mcsrc/doc/HACKING index ef496847..15cc1de6 100644 --- a/mcsrc/doc/HACKING +++ b/mcsrc/doc/HACKING @@ -22,7 +22,7 @@ Gettext 0.18.2 and above Glib 2.30 and above Full list of requirements you can see at: -http://www.midnight-commander.org/wiki/doc/buildAndInstall/req +https://www.midnight-commander.org/wiki/doc/buildAndInstall/req It is recommended that all those tools are installed with the same prefix. Make sure that the tools with the right version are first in @@ -274,7 +274,7 @@ Where to Find Bug Reports and Patches The official place for bug reports is: - http://www.midnight-commander.org/ + https://www.midnight-commander.org/ There are various unofficial sources where bug reports and patches can diff --git a/mcsrc/doc/INSTALL b/mcsrc/doc/INSTALL index 4cafde5b..749c4165 100644 --- a/mcsrc/doc/INSTALL +++ b/mcsrc/doc/INSTALL @@ -288,13 +288,13 @@ Where to get more information on GNU Midnight Commander There are two mailing lists for the program: -mc@gnome.org: Discussion on GNU Midnight Commander file manager. -mc-devel@gnome.org: Discussion between the developers of the program. +mc@lists.midnight-commander.org: Discussion on GNU Midnight Commander file manager. +mc-devel@lists.midnight-commander.org: Discussion between the developers of the program. To subscribe to the mailing lists, visit their respective pages: -http://mail.gnome.org/mailman/listinfo/mc/ -http://mail.gnome.org/mailman/listinfo/mc-devel/ +https://lists.midnight-commander.org/mailman/listinfo/mc/ +https://lists.midnight-commander.org/mailman/listinfo/mc-devel/ Notes about GNU Midnight Commander installation @@ -351,9 +351,9 @@ sure which ones must go first. If you would like to point us in the Right Direction we will be glad to hear from you. If you happen to find a feature that doesn't do what you expect, please -write to mc@gnome.org telling as much as you can about the problem -you're experiencing. Please don't send personal messages to the -maintainers. +write to mc@lists.midnight-commander.org telling as much as you can +about the problem you're experiencing. Please don't send personal +messages to the maintainers. Obtaining related software diff --git a/mcsrc/doc/MAINTAINERS b/mcsrc/doc/MAINTAINERS index 9cfdd51d..1c2ab669 100644 --- a/mcsrc/doc/MAINTAINERS +++ b/mcsrc/doc/MAINTAINERS @@ -1 +1 @@ -Email: mc-devel@gnome.org +Email: mc-devel@lists.midnight-commander.org diff --git a/mcsrc/doc/NEWS b/mcsrc/doc/NEWS index f476d033..c62ea7ac 100644 --- a/mcsrc/doc/NEWS +++ b/mcsrc/doc/NEWS @@ -1,3 +1,61 @@ +Version 4.8.29 + +- Core + + * Add more options for panel filter (#1373): + * "Files only" (#4209) + * "Case sensitive" (#4334) + * "Using shell patterns" + * Continue copy after interrupt (#4409) + * Restore menu accelerator for "Sort order": back to "S"; change menu accelerator for "SFTP link" to "N" (#4373) + * Add support for cross-compilation with PERL path different between --build and --host (#4399) + * Bootstrap with autotools providing direct support for Apple M1 + * Port mc.ext to INI format and rename to mc.ext.ini (#4141, #3742, #3191) + * Implement compound (AND) conditions (Type/Shell and Type/Regex pairs) to disambiguate overloaded extensions + * There is no fallback to previous mc.ext format + +- Editor + + * Change location of all user's syntax related stuff to ~/.local/share/mc/syntax/ directory (#4413) + * syntax/Syntax: document location of syntax files (#4320) + * Improvements of syntax highlighting: + * YAML: improve multiline blocks highliting (#4059) + * New syntax highlighting: + * Privoxy (https://www.privoxy.org) actions files (#4384) + * TOML (Tom's Obvious Minimal Language) (#4412) + +- Misc + + * Code cleanup (#4357, #4397, #4425) + * sqlite3 view: use 'immutable=1' URI parameter to prevent leaving wal/shm files after viewing sqlite database (#4369) + * Support of contour terminal emulator (https://github.com/contour-terminal/contour) (#4396) + * mc.ext.ini: clarify regex for makefiles (#4419) + * Remove empty hints translations by setting 5% threshold (#3608) + +- Fixes + + * Fail to build with only SFTP network VFS is enabled (#4420) + * Crash on quick view of archives (#4398) + * Wrong description of --enable-configure-args option (#4400) + * Wrong version sort (#4374) + * No subshell if subshell is initializing more than 1 second (#3121) + * Filter keyboard shortcut only affects left panel (#4383) + * File type check does not work with special character in filename (#4377) + * Select files keeping the right mouse button pressed doesn't select all files (#4381) + * Cannot scroll panel listing upwards using mouse (#4119) + * "Directory Compare" doesn't correct work with panelization (#3220) + * Wrong decompressing of zip files in quick view panel (#4404) + * mc.ext: 'include' keyword (for command class def) have no effect if it was defined before 'Include' keyword (for command def) (#2773) + * mcedit: infinite loop when deleting a macro (#4391) + * mcviewer: segfault when switching from raw to parsed mode and back (#4401) + * Broken handling of zip archives (#4368) + * FISH subshell: commands don't work after window resize (#4372) + * FTP VFS: doesn't reconnect to server after timeout (#3670) + * FISH VFS: cannot remove non-empty directory (#4364) + * EXTFS VFS: segfault if archive contains file(s) in the parent directory (#4422, #4427) + * Tests: variable redeclaration in filevercmp_test5 (#4358) + + Version 4.8.28 - VFS diff --git a/mcsrc/doc/README b/mcsrc/doc/README index ab41284f..71d69d8c 100644 --- a/mcsrc/doc/README +++ b/mcsrc/doc/README @@ -160,9 +160,13 @@ https://www.midnight-commander.org/wiki/doc/reportDefects Also you can use mc mailing lists to discuss problems. -There are two mailing lists, mc@gnome.org and mc-devel@gnome.org. Use -mc-devel@gnome.org if you are prepared for a more technical discussion -with the developers of the package, otherwise use mc@gnome.org. +There are two mailing lists: + + - mc@lists.midnight-commander.org + - mc-devel@lists.midnight-commander.org + +Use mc-devel@ if you are prepared for a more technical discussion +with the developers of the package, otherwise use mc@. Please don't sent HTML e-mail to either of those mailing lists. diff --git a/mcsrc/doc/hints/l10n/README.txt b/mcsrc/doc/hints/l10n/README.txt index f015e62d..71098e69 100644 --- a/mcsrc/doc/hints/l10n/README.txt +++ b/mcsrc/doc/hints/l10n/README.txt @@ -1,4 +1,4 @@ ATTENTION! Don't edit hint-files in this directory! Remember that all these files is a TARGET for files originally placed on Transifex: -https://www.transifex.com/projects/p/mc/resource/mc_hint/ +https://www.transifex.com/mc/mc/mc-hint--master/ diff --git a/mcsrc/doc/hints/l10n/mc.hint.be b/mcsrc/doc/hints/l10n/mc.hint.be index cfab1d7b..353c8e97 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.be +++ b/mcsrc/doc/hints/l10n/mc.hint.be @@ -14,9 +14,9 @@ Ðамінка. Калі Ñ‚Ñрмінал Ð½Ñ Ð¼Ð°Ðµ функцыÑнальных клÑвішаў, ужывайце «ESC+лічба». -Ðамінка. Бачына «Міднайт КамандÑра» — http://www.midnight-commander.org/. +Ðамінка. Бачына «Міднайт КамандÑра» — https://www.midnight-commander.org. -Ðамінка. Пра хібы паведамлÑйце на mc-devel@gnome.org. +Ðамінка. Пра хібы паведамлÑйце на mc-devel@lists.midnight-commander.org. Ðамінка. «Tab» зьмÑнÑе дзейную панÑль. @@ -24,7 +24,7 @@ Ðамінка. У Ð½Ð°Ñ Ñ‘Ñьць добрае правадніцтва. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Ðамінка. Хочаце пераÑоўвацца, Ñк у «Lynx»? Вызначце гÑта Ñž «ÐаÑтаўленьнÑх». Ðамінка. МакраÑÑ‹ «%» працуюць нават у загадным радку. @@ -52,7 +52,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Ðамінка. Каб хутка зьмÑніць каталёґ, калі набіраеце загад, ціÑьніце «M-c». -Уважце: загады абалонкі могуць не працаваць на немÑÑцовых файлавых ÑÑ‹ÑÑ‚Ñмах. +Ðамінка: загады абалонкі могуць не працаваць на немÑÑцовых файлавых ÑÑ‹ÑÑ‚Ñмах. Ðамінка. «C-y» вÑртае Ñтрачаны Ñ‚ÑкÑÑ‚. @@ -68,7 +68,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Ðамінка. Забараніць пытацца пацьвÑрджаць можна Ñž «Ðаладах» → «ПацьвÑрджаць». -Hint: Leap to frequently used directories in a single bound with C-\. +Ðамінка. Да каталёґаў, ÑÐºÑ–Ñ Ñ‡Ð°Ñта ўжываюцца, можна перайÑьці па «C-\». Ðамінка. Можна ўвайÑьці FTP безыменным, набраўшы «cd ftp://machine.edu» @@ -84,4 +84,4 @@ Hint: Leap to frequently used directories in a single bound with C-\. Ðамінка. Каб выразаць Ñ– ÑžÑтаўлÑць мышкаю, можа ÑпатрÑбіцца трымаць «Shift». -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Ðамінка. Захавайце Ñайты FTP, ÑÐºÑ–Ñ Ñ‡Ð°Ñта наведваеце: націÑьніце «C-\». diff --git a/mcsrc/doc/hints/l10n/mc.hint.bg b/mcsrc/doc/hints/l10n/mc.hint.bg index 2fde4856..f67f969a 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.bg +++ b/mcsrc/doc/hints/l10n/mc.hint.bg @@ -1,87 +1,87 @@ -ПодÑказка: Използвайте C-x за копиране на файлови имена Ñ Ñ‚Ð°Ð³Ð¾Ð²Ðµ на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. +ПодÑказка: Използвайте C-x за копиране на имената на избраните файлове на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. -ПодÑказка: Използвайте C-x p за копиране на ÑÐµÐ³Ð°ÑˆÐ½Ð¸Ñ Ð¿ÑŠÑ‚ на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. +ПодÑказка: Използвайте C-x за копиране на имената на избраните файлове на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. -ПодÑказка: Довършване: използвайте M-Tab (или Esc+Tab). ÐатиÑнете го повторно за получаване на ÑпиÑък. +ПодÑказка: ДопиÑване: използвайте M-Tab (или Esc+Tab). ÐатиÑнете го повторно за ÑпиÑък. -ПодÑказка: Използвайте M-p и M-n за доÑтъп до командната иÑториÑ. +ПодÑказка: Използвайте M-p и M-n за доÑтъп до иÑториÑта на командите. -ПодÑказка: Ðуждаете Ñе да използвате Ñимвол буквално? Използвайте Control-q и Ñимвола. +ПодÑказка: Ðко иÑкате да ползвате знак буквално, ползвайте Control-q и знака. -ПодÑказка: Уморените Ñте от тези ÑъобщениÑ? Изключете ги от меню ÐаÑтройки/Подредба. +ПодÑказка: Ðко не иÑкате тези ÑъобщениÑ, ги изключете от ÐаÑтройки → Разположение. -ПодÑказка: Избиране на директории: добавете наклонена черта на ÐºÑ€Ð°Ñ Ð½Ð° поредицата от метаÑимволи. +ПодÑказка: Изберете директории като добавите наклонена черта на ÐºÑ€Ð°Ñ Ð½Ð° поредицата от метаÑимволи. -ПодÑказка: Ðко Ð²Ð°ÑˆÐ¸Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð» нÑма Ñ„-ве, използвайте поÑледователноÑтта ESC+чиÑло. +ПодÑказка: Ðко терминалът нÑма функционални клавиши, използвайте поÑледователноÑтта ESC+чиÑло. -ПодÑказка: Главната Ñтраница на GNU Midnight Commander: http://www.midnight-commander.org/ +ПодÑказка: Главната Ñтраница на GNU Midnight Commander е https://www.midnight-commander.org -ПодÑказка: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð¿Ñ€Ð°Ñ‰Ð°Ð¹Ñ‚Ðµ вÑÑкакви доклади за бъгове на mc-devel@gnome.org +ПодÑказка: Молим, изпращайте вÑÑкакви доклади за грешки на mc-devel@lists.midnight-commander.org -ПодÑказка: Tab-а Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ ÑÐµÐ³Ð°ÑˆÐ½Ð¸Ñ Ð²Ð¸ панел. +ПодÑказка: Tab преминава към Ð´Ñ€ÑƒÐ³Ð¸Ñ Ð¿Ð°Ð½ÐµÐ». -ПодÑказка: ВФС ÑкоÑÑ‚: наÑтинете enter на tar файл, за да разгледате Ñъдържанието му. +ПодÑказка: УдобÑтва при виртуалните ФС: наÑтинете ENTER върху архив tar, за да разгледате Ñъдържанието му. -ПодÑказка: Също така имаме приÑтно ръководÑтво на потребителÑ. +ПодÑказка: Страницата на MC в ръководÑтвото на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ðµ много полезна, вижте Ñ. -ПодÑказка: ИÑкате ли Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð² Ñтил lynx? Задайте Ñ Ð² ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³. +ПодÑказка: Ðко иÑкате Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ ÐºÐ°Ñ‚Ð¾ в Lynx, задайте това в ÐаÑтройки…. -ПодÑказка: % макроÑи работÑÑ‚ дори и на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. +ПодÑказка: МакроÑите Ñ % работÑÑ‚ дори и на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. -ПодÑказка: M-! ще ви позволи да изпълните програми и да видите изходната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð²ÑŠÐ² визуализатора. +ПодÑказка: M-! позволÑва да изпълните команда и да видите изхода във визуализатора. -ПодÑказка: Формата за показване на файлове може да Ñе променÑ; изпълнете "man mc" за детайли. +ПодÑказка: Форматът за показване на файлове може да Ñе наÑтрои. За подробноÑти: „man mc“. -ПодÑказка: %D/%T Ñе Ð·Ð°Ð¼ÐµÐ½Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ Ñ Ñ‚Ð°Ð³Ð¾Ð²Ðµ в обратната директориÑ. +ПодÑказка: %D/%T Ñе Ð·Ð°Ð¼ÐµÐ½Ñ Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ‚Ðµ файлове от отÑрещната директориÑ. -ПодÑказка: ИÑкате чиÑта shell? ÐатиÑнете C-o, и Ñе отново върнете обратно в MC Ñ C-o . +ПодÑказка: За да работите Ñ Ð¾Ð±Ð²Ð¸Ð²ÐºÐ°, натиÑнете C-o, и Ñе отново върнете обратно в Midnight Commander пак Ñ C-o . -ПодÑказка: Задаването на променливата CDPATH може да ви ÑпеÑти клавишни натиÑÐºÐ°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ cd командите. +ПодÑказка: Задаването на променливата CDPATH ÑпеÑÑ‚Ñва време при командите за ÑмÑна на директориÑ. -ПодÑказка: Ðко иÑкате да виждате вашите .* файлове, кажете така в ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³. +ПодÑказка: Ðко иÑкате да виждате Ñкритите (.*) файлове в панела, задайте това в ÐаÑтройки на панел…. -ПодÑказка: ИÑкате да виждате вашите *~ резервни файлове? Задайте ги в ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³. +ПодÑказка: Ðко иÑкате да виждате резервните (*~) файлове в панела, задайте това в ÐаÑтройки на панел…. -ПодÑказка: Довършването работи върху вÑички входÑщи файлове във вÑички диалози. ПроÑто натиÑнете +ПодÑказка: ДопиÑването работи Ñ Ð²Ñички входни полета във вÑички диалози. ПроÑто натиÑнете M-Tab. -ПодÑказка: Ðа бавни терминали флага -s може да помогне. +ПодÑказка: Ðа бавни терминали опциÑта -s може да помогне. -ПодÑказка: Ðамиране на файл: можете да работите върху намерените файлове, използвайки бутона ПанелизациÑ. +ПодÑказка: ТърÑене на файл: може да оперирате върху намерените файлове Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° за Външен панел. -ПодÑказка: ИÑкате Ñложни Ñ‚ÑŠÑ€ÑениÑ? Използвайте командата за Външна ПанелизациÑ. +ПодÑказка: ИÑкате Ñложни Ñ‚ÑŠÑ€ÑениÑ? Използвайте командата за Външен панел. -ПодÑказка: За промÑна на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ð¾ време на пиÑане чрез команда, използвайте M-c (бързо Ñ‚ÑŠÑ€Ñене). +ПодÑказка: За промÑна на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ð¾ време на пиÑане на команда, ползвайте M-c (Бърза ÑмÑна — cd). -Забележка: Командите на shell-а нÑма да работÑÑ‚, когато Ñте на не-локална файлова ÑиÑтема. +ПодÑказка: Командите на обвивката не работÑÑ‚, когато не Ñте в локална файлова ÑиÑтема. -ПодÑказка: Съживете текÑÑ‚ Ñ C-y. +ПодÑказка: Може да възÑтановите текÑÑ‚ Ñ C-y. -ПодÑказка: Ðе работÑÑ‚ ли нÑкои от клавишите ви? Погледнете в ÐаÑтройки/Изучаване на клавиши. +ПодÑказка: Ðко нÑкои от клавишите не работÑÑ‚, погледнете в ÐаÑтройки → Задаване на клавиши…. -ПодÑказка: За да разглеждате изходната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° команда във визуализатор, използвайте M-! +ПодÑказка: За да разглеждате изходната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° команда във визуализатора, използвайте M-!. -ПодÑказка: F13 (или Shift-F3) Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð° в raw режим. +ПодÑказка: F13 (или Shift-F3) Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð° в режим без обработка. -ПодÑказка: Можете да зададете редактор чрез F4 ÑÑŠÑ Ñпециалната променлива на shell-а EDITOR. +ПодÑказка: Може да зададете редактор чрез F4 Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð»Ð¸Ð²Ð°Ñ‚Ð° на обвивката EDITOR. -ПодÑказка: Можете да зададете външен визуализатор Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð»Ð¸Ð²Ð¸Ñ‚Ðµ на shell-а VIEWER и PAGER. +ПодÑказка: Може да зададете външен визуализатор Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð»Ð¸Ð²Ð¸Ñ‚Ðµ на обвивката VIEWER и PAGER. -ПодÑказка: Можете да деактивирате вÑички Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ Ð·Ð° потвърждение чрез ÐаÑтройки/Потвърждаване. +ПодÑказка: Може да изключите вÑички Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ Ð·Ð° потвърждение чрез ÐаÑтройки → ПотвърждениÑ…. ПодÑказка: Преминавайте в чеÑто използваните директории Ñ C-\. -ПодÑказка: Можете да извършвате анонимно FTP Ñ mc чрез напиÑването на 'cd ftp://machine.edu' +ПодÑказка: За да уÑтановите връзка по FTP, ползвайте Ð°Ð´Ñ€ÐµÑ ÐºÐ°Ñ‚Ð¾: „cd ftp://machine.edu“. -ПодÑказка: FTP е вграден в Midnight Commander-а, проверете менюто Файл/FTP връзка. +ПодÑказка: FTP (и др.) Ñа вграден в Midnight Commander, погледнете менюто ВлÑво/ВдÑÑно → FTP. -ПодÑказка: M-t Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð±ÑŠÑ€Ð·Ð¾ режима на показване на ÑпиÑъка. +ПодÑказка: M-t Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° на показване на ÑпиÑъка Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ. -ПодÑказка: Можете да зададете потребителÑкото име, когато направите ftps: 'cd ftp://user@machine.edu' +ПодÑказка: За да укажете потребителÑко име при връзка по FTP, ползвайте Ð°Ð´Ñ€ÐµÑ ÐºÐ°Ñ‚Ð¾: „cd ftp://ПОТРЕБИТЕЛ@machine.edu“. -ПодÑказка: Можете на разглеждате RPM файлове чрез натиÑкане на enter върху rpm файл. +ПодÑказка: Разглеждайте Ñъдържанието на файлове във формат RPM като натиÑнете ENTER върху Ñ‚ÑÑ…. -ПодÑказка: Може да маркирате директории на диалога за ÑелекциÑ, добавете наклонена черта. +ПодÑказка: За да изберете директории в диалога за избор, добавете наклонена черта. -ПодÑказка: За използването мишката за отрежи и поÑтави може да е нужно да задържите клавиша shift. +ПодÑказка: За изрÑзване и поÑтавÑне Ñ Ð¼Ð¸ÑˆÐºÐ°Ñ‚Ð° Ñ‚Ñ€Ñбва да задържите клавиша SHIFT. -ПодÑказка: Клавиш за чеÑто използваните ftp Ñайтове в Ð³Ð¾Ñ€ÐµÑ‰Ð¸Ñ ÑпиÑък: натиÑнете C-\. +ПодÑказка: Клавиш за чеÑто използваните ftp Ñайтове: натиÑнете C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.ca b/mcsrc/doc/hints/l10n/mc.hint.ca index 8b99c761..811a8816 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.ca +++ b/mcsrc/doc/hints/l10n/mc.hint.ca @@ -14,9 +14,9 @@ Consell: Seleccionar directoris: afegiu «/» al final del patró de coincidènc Consell: Si no funcionen les tecles de funció, empreu la seqüència «ESC+número». -Consell: La pàgina inicial del Midnight Commander de GNU és http://www.midnight-commander.org/ +Consell: La pàgina inicial del Midnight Commander de GNU és https://www.midnight-commander.org -Consell: Si us plau, envieu qualsevol informe d'error a «mc-devel@gnome.org». +Consell: Si us plau, envieu qualsevol informe d'error a «mc-devel@lists.midnight-commander.org». Consell: El tabulador canvia de plafó. @@ -52,7 +52,7 @@ Consell: Voleu fer cerques complexes? Empreu l'ordre «Quadre de cerca externa» Consell: Canvieu a meitat de camí del directori escrivint una ordre, empreu «M-c» («cd» ràpid). -Nota: Les ordres de l'intèrpret d'ordres no funcionaran quan s'està en un sistema de fitxers no local. +Сonsell: Les ordres de l'intèrpret d'ordres no funcionaran quan s'està en un sistema de fitxers no local. Consell: Recupereu el text esborrat amb «Ctrl-y». diff --git a/mcsrc/doc/hints/l10n/mc.hint.cs b/mcsrc/doc/hints/l10n/mc.hint.cs index 41ae06c1..4b2ae607 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.cs +++ b/mcsrc/doc/hints/l10n/mc.hint.cs @@ -14,9 +14,9 @@ Tip: Pokud váš terminál nezná nebo nemá funkÄní (F1-12) klávesy, použijte Esc+Äíslo. -Tip: Domovská stránka GNU Midnight Commander je: http://www.midnight-commander.org/ +Tip: Domovská stránka GNU Midnight Commander je: https://www.midnight-commander.org -Tip: Chyby hlaste na mc-devel@gnome.org (v angliÄtinÄ›). +Tip: Chyby hlaste na mc-devel@lists.midnight-commander.org (v angliÄtinÄ›). Tip: Pomocí klávesy Tab pÅ™ejdete na další panel. @@ -24,7 +24,7 @@ Tip: Existuje také manuálová stránka [mc(1)]. -Tip: PÅ™ejete si klávesy stejnÄ› jako v prohlížeÄi lynx? PÅ™epnÄ›te si to v Nastavení. +Tip: PÅ™ejete si klávesy stejnÄ› jako v prohlížeÄi Lynx? PÅ™epnÄ›te si to v Nastavení. Tip: Makra uvozená % fungují i na příkazovém řádku. @@ -52,7 +52,7 @@ Tip: Pokud chcete zmÄ›nit složku pÅ™i práci na příkazovém řádku, zkuste Meta-c. -Pozn.: Příkazy shellu nefungují, pokud nepracujete na lokálním systému souborů. +Tip: Příkazy shellu nefungují, pokud nepracujete na lokálním systému souborů. Tip: Smazaný text obnovíte Ctrl-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.da b/mcsrc/doc/hints/l10n/mc.hint.da index 67ed617a..44f2755a 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.da +++ b/mcsrc/doc/hints/l10n/mc.hint.da @@ -14,9 +14,9 @@ Fif: Valg af mapper: tilføj en skrÃ¥streg til slutningen af det matchende møns Fif: Hvis din terminal mangler funktionstaster, sÃ¥ rug ESC+talsekvensen. -Fif: Hjemmesiden for GNU Midnight Commander: http://www.midnight-commander.org/ +Fif: Hjemmesiden for GNU Midnight Commander: https://www.midnight-commander.org -Fif: Send venligst eventuelle fejlrappporter til mc-devel@gnome.org +Fif: Send venligst eventuelle fejlrappporter til mc-devel@lists.midnight-commander.org Fif: Tabulator skifter dit nuværende panel. @@ -24,7 +24,7 @@ Fif: Cool VFS: tryk pÃ¥ enter pÃ¥ en tar-fil for at undersøge dens indhold. Fif: Vi har ogsÃ¥ en fin manualside. -Fif: Vil du have navigation i lynx-stil? Sæt det i konfigurationsdialogen. +Fif: Vil du have navigation i Lynx-stil? Sæt det i konfigurationsdialogen. Fif: %-makroer virker ogsÃ¥ pÃ¥ kommandolinjen. @@ -44,7 +44,7 @@ Fif: Vil du se dine *~-backupfiler? Sæt det i konfigurationsdialogen. Fif: Fuldførelse virker pÃ¥ alle inputlinjer i alle dialoger. Tryk blot pÃ¥ M-Tab. -Hint: PÃ¥ langsomme maskiner kan flaget -s hjælpe. +Fif: PÃ¥ langsomme maskiner kan flaget -s hjælpe. Fif: Find fil: du kan arbejde pÃ¥ de fundne filer med Panelisér-knappen. @@ -52,7 +52,7 @@ Fif: Vil du foretage komplekse søgninger? Brug Ekstern panelisering-kommandoen. Fif: Brug M-c (hurtig cd), til at skifte mappe halvvejs gennem indtastningen af en kommando. -Bemærk: Skalkommandoer virker ikke nÃ¥r du er pÃ¥ et ikke-lokalt filsystem. +Fif: Skalkommandoer virker ikke nÃ¥r du er pÃ¥ et ikke-lokalt filsystem. Fif: Bring tekst tilbage fra de døde med C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.de b/mcsrc/doc/hints/l10n/mc.hint.de index 878cd236..1b51509d 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.de +++ b/mcsrc/doc/hints/l10n/mc.hint.de @@ -14,9 +14,9 @@ Hinweis: Verzeichnisse auswählen: Füge am Ende des Mustervergleichs einen Schr Hinweis: Wenn dein Terminal keine Funktionstasten unterstützt, benutze die Kombination Esc+Nummer. -Hinweis: Die Homepage von GNU Midnight Commander: http://www.midnight-commander.org/ +Hinweis: Die Homepage von GNU Midnight Commander: https://www.midnight-commander.org -Hinweis: Bitte sende alle Fehlerberichte an mc-devel@gnome.org +Hinweis: Bitte sende alle Fehlerberichte an mc-devel@lists.midnight-commander.org Hinweis: Tabulator wechselt das aktuelle Panel. diff --git a/mcsrc/doc/hints/l10n/mc.hint.de_CH b/mcsrc/doc/hints/l10n/mc.hint.de_CH deleted file mode 100644 index dbe114a4..00000000 --- a/mcsrc/doc/hints/l10n/mc.hint.de_CH +++ /dev/null @@ -1,87 +0,0 @@ -Hint: Use C-x t to copy tagged file names to the command line. - -Hint: Use C-x p to copy the current pathname to the command line. - -Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. - -Hint: Use M-p and M-n to access the command history. - -Hint: Need to quote a character? Use Control-q and the character. - -Hint: Tired of these messages? Turn them off from the Options/Layout menu. - -Hint: Selecting directories: add a slash to the end of the matching pattern. - -Hint: If your terminal lacks functions keys, use the ESC+number sequence. - -Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/ - -Hint: Please send any bug reports to mc-devel@gnome.org - -Hint: Tab changes your current panel. - -Hint: VFS coolness: tap enter on a tar file to examine its contents. - -Hint: We also have a nice manual page. - -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. - -Hint: % macros work even on the command line. - -Hint: M-! will allow you to execute programs and see the output in the viewer. - -Hint: The file listing format can be customized; do "man mc" for details. - -Hint: %D/%T expands to the tagged files in the opposite directory. - -Hint: Want your plain shell? Press C-o, and get back to MC with C-o again. - -Hint: Setting the CDPATH variable can save you keystrokes in cd commands. - -Hint: If you want to see your .* files, say so in the Configuration dialog. - -Hint: Want to see your *~ backup files? Set it in the Configuration dialog. - -Hint: Completion works on all input lines in all dialogs. Just press M-Tab. - -Hint: On slow terminals the -s flag may help. - -Hint: Find File: you can work on the files found using the Panelize button. - -Hint: Want to do complex searches? Use the External Panelize command. - -Hint: To change directory halfway through typing a command, use M-c (quick cd). - -Note: Shell commands will not work when you are on a non-local file system. - -Hint: Bring text back from the dead with C-y. - -Hint: Are some of your keys not working? Look at Options/Learn keys. - -Hint: To look at the output of a command in the viewer, use M-! - -Hint: F13 (or Shift-F3) invokes the viewer in raw mode. - -Hint: You may specify the editor for F4 with the shell variable EDITOR. - -Hint: You may specify the external viewer with the shell vars VIEWER or PAGER. - -Hint: You can disable all requests for confirmation in Options/Confirmation. - -Hint: Leap to frequently used directories in a single bound with C-\. - -Hint: You can do anonymous FTP with mc by typing 'cd ftp://machine.edu' - -Hint: FTP is built in the Midnight Commander, check the File/FTP link menu. - -Hint: M-t changes quickly the listing mode. - -Hint: You can specify the username when doing ftps: 'cd ftp://user@machine.edu' - -Hint: You can browse RPM files by tapping enter on top of an rpm file. - -Hint: To mark directories on the select dialog box, append a slash. - -Hint: To use the mouse cut and paste may require holding the shift key - -Hint: Key frequently visited ftp sites in the hotlist: type C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.el b/mcsrc/doc/hints/l10n/mc.hint.el index c53343c8..b931ebe4 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.el +++ b/mcsrc/doc/hints/l10n/mc.hint.el @@ -14,9 +14,9 @@ Hint: Selecting directories: add a slash to the end of the matching pattern. Hint: If your terminal lacks functions keys, use the ESC+number sequence. -Συμβουλή: Η ιστοσελίδα του GNU Midnight Commander: http://www.midnight-commander.org/ +Συμβουλή: Η ιστοσελίδα του GNU Midnight Commander: https://www.midnight-commander.org -Συμβουλή: ΠαÏακαλοÏμε στείλτε μας αναφοÏές σφαλμάτων στο mc-devel@gnome.org +Συμβουλή: ΠαÏακαλοÏμε στείλτε μας αναφοÏές σφαλμάτων στο mc-devel@lists.midnight-commander.org Hint: Tab changes your current panel. @@ -24,7 +24,7 @@ Hint: VFS coolness: tap enter on a tar file to examine its contents. Hint: We also have a nice manual page. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Συμβουλή: Θέλετε πεÏιήγηση στο στυλ του Lynx; Ρυθμίστε το στο διάλογο Ρυθμίσεις. Hint: % macros work even on the command line. @@ -52,7 +52,7 @@ Hint: Want to do complex searches? Use the External Panelize command. Συμβουλή: Για να αλλάξετε κατάλογο ενώ έχετε ήδη ξεκινήσει να πληκτÏολογείτε μία εντολή, χÏησιμοποιήστε το M-c (γÏήγοÏο cd). -Σημείωση: Οι εντολές κελÏφους δε θα λειτουÏγήσουν όταν βÏίσκεστε σε ένα μη τοπικό σÏστημα αÏχείων. +Συμβουλή: Οι εντολές κελÏφους δε θα λειτουÏγήσουν όταν βÏίσκεστε σε ένα μη τοπικό σÏστημα αÏχείων. Hint: Bring text back from the dead with C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.en_GB b/mcsrc/doc/hints/l10n/mc.hint.en_GB index 3c01ab19..6b9bc8ab 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.en_GB +++ b/mcsrc/doc/hints/l10n/mc.hint.en_GB @@ -2,7 +2,7 @@ Hint: Use C-x t to copy tagged file names to the command line. Hint: Use C-x p to copy the current pathname to the command line. -Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. +Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. Hint: Use M-p and M-n to access the command history. @@ -14,9 +14,9 @@ Hint: Selecting directories: add a slash to the end of the matching pattern. Hint: If your terminal lacks functions keys, use the ESC+number sequence. -Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/ +Hint: The homepage of GNU Midnight Commander: https://www.midnight-commander.org -Hint: Please send any bug reports to mc-devel@gnome.org +Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org Hint: Tab changes your current panel. @@ -52,7 +52,7 @@ Hint: Want to do complex searches? Use the External Panelise command. Hint: To change directory halfway through typing a command, use M-c (quick cd). -Note: Shell commands will not work when you are on a non-local file system. +Hint: Shell commands will not work when you are on a non-local file system. Hint: Bring text back from the dead with C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.eo b/mcsrc/doc/hints/l10n/mc.hint.eo index 061dce09..6d10e18d 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.eo +++ b/mcsrc/doc/hints/l10n/mc.hint.eo @@ -14,9 +14,9 @@ Konsilo: Aldoni oblikvon al la fino de Åablono por elekti dosierujon. Konsilo: Se via terminalo malhavas funkciajn klavojn, uzu la kombinon Esk+numero. -Konsilo: La ĉefpaÄo de Midnight Commander: http://www.midnight-commander.org/ +Konsilo: La ĉefpaÄo de Midnight Commander: https://www.midnight-commander.org -Konsilo: Sendi raportojn pri eraroj (anglalingve) al mc-devel@gnome.org +Konsilo: Sendi raportojn pri eraroj (anglalingve) al mc-devel@lists.midnight-commander.org Konsilo: Tabo ÅanÄas la nunan flankon. @@ -52,7 +52,7 @@ Konsilo: Ĉu vi volas fari malsimplajn serĉojn? "Eksterigi Flankojn" uzeblas. Konsilo: Reg-c por ÅanÄi dosierujon dum tajpi komandon. -Noto: Åœelaj komandoj ne funkcias ĉe foraj dosiersistemoj. +Konsilo: Åœelaj komandoj ne funkcias ĉe foraj dosiersistemoj. Konsilo: Stir-y por revivigi tekston. @@ -82,6 +82,6 @@ Konsilo: Klavi la enen-klavon super RPM-dosieron por rigardi Äian enhavon. Konsilo: Por marki dosierujojn ĉe elektiloj almetu oblikvon. -Konsilo: Eble vi devas premadi la registrumon por kopii kaj alglui per la muso. +Konsilo: Eble vi devas premadi la registrumon por kopii kaj alglui per la muso -Konsileto: Stir-\ por la plej ofte vizitaj FTP-serviloj. +Konsilo: Stir-\ por memori oftajn FTP-servilojn. diff --git a/mcsrc/doc/hints/l10n/mc.hint.es b/mcsrc/doc/hints/l10n/mc.hint.es index c6cc4885..b7060f9f 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.es +++ b/mcsrc/doc/hints/l10n/mc.hint.es @@ -14,9 +14,9 @@ Consejo: Para seleccionar directorios añadir «/» tras el patrón a buscar. Consejo: Si no funcionan las teclas de función, ESC+número sirve. -Consejo: El sitio oficial del Midnight Commander es http://www.midnight-commander.org/ +Consejo: El sitio oficial del Midnight Commander es https://www.midnight-commander.org -Consejo: Comunique cualquier defecto a mc-devel@gnome.org +Consejo: Comunique cualquier defecto a mc-devel@lists.midnight-commander.org Consejo: El tabulador cambia de panel. @@ -52,7 +52,7 @@ Consejo: Puede hacer y guardar búsquedas complejas con «Búsquedas externas». Consejo: Con M-c cambiar de directorio es un poco más cómodo. -Nota: Las instrucciones de la Shell no funcionan fuera del sistema local. +Consejo: Las instrucciones de la Shell no funcionan fuera del sistema local. Consejo: Con C-y puede recuperar texto eliminado. diff --git a/mcsrc/doc/hints/l10n/mc.hint.et b/mcsrc/doc/hints/l10n/mc.hint.et index cc029ed6..e7c19b8c 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.et +++ b/mcsrc/doc/hints/l10n/mc.hint.et @@ -2,7 +2,7 @@ Vihje: Kasuta C-x, et kopeerida märgitud failide nimed käsureale. Vihje: Kasuta C-x p, et kopeerida aktiivne otsingurada käsureale. -Vihje: Lõpetamiseks kasuta M-Tab (või Esc-Tab). Topeltsisestus kuvab listi. +Vihje: Lõpetamiseks kasuta M-Tab (või Esc-Tab). Topeltsisestus kuvab listi. Vihje: Käskude ajaloo kasutamiseks kasuta M-p ja M-n. @@ -14,9 +14,9 @@ Vihje: Kataloogide valimiseks lisa sobiva mustri lõppu kaldkriips. Vihje: Kui terminalil puuduvad funktsiooniklahvid, siis kasuta ESC+number jadasid. -Vihje: GNU Midnight Commanderi koduleht: http://www.midnight-commander.org/ +Vihje: GNU Midnight Commanderi koduleht: https://www.midnight-commander.org -Vihje: Palun saada vearaportid aadressile mc-devel@gnome.org +Vihje: Palun saada vearaportid aadressile mc-devel@lists.midnight-commander.org Vihje: TAB vahetab aktiivset paneeli. @@ -24,7 +24,7 @@ Vihje: VFS võimalused: tar-faili sisuga tutvumiseks vajuta ta peal ENTER. Vihje: Olemas on ka meeldiv manuaal. -Vihje: Soovid lynxi stiilis navigeerimist? Luba see konfiguratsiooni dialoogist. +Vihje: Soovid Lynxi stiilis navigeerimist? Luba see konfiguratsiooni dialoogist. Vihje: %-makrod töötavad ka käsureal. @@ -52,7 +52,7 @@ Vihje: Soovid teha keerulisi otsinguid? Kasuta käsku Väline paneelile. Vihje: Kataloogi kiirvahetuseks käsu sisestamise ajal kasuta M-c (quick cd). -NB! Kesta käsud töötavad ainult kohalikus failisüsteemis. +Vihje: Kesta käsud töötavad ainult kohalikus failisüsteemis. Vihje: C-y taastab kustutatud teksti. diff --git a/mcsrc/doc/hints/l10n/mc.hint.eu b/mcsrc/doc/hints/l10n/mc.hint.eu index ed8a7b7f..5c389d2b 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.eu +++ b/mcsrc/doc/hints/l10n/mc.hint.eu @@ -14,9 +14,9 @@ Aholkua: Direktorioak hautatzea: erantsi «/» barra zeiharra bilaketa ereduaren Aholkua: Zure terminalari funtzio teklak falta bazaizkio, erabili Ihes+zenbakia sekuentzia. -Aholkua: GNU Midnight Commander-ren atariko orria: http://www.midnight-commander.org/ +Aholkua: GNU Midnight Commander-ren atariko orria: https://www.midnight-commander.org -Aholkua: Mesedez bidali akats txosten oro hona: mc-devel@gnome.org +Aholkua: Mesedez bidali akats txosten oro hona: mc-devel@lists.midnight-commander.org Aholkua: Tab teklak zure uneko panela aldatzen du. @@ -52,7 +52,7 @@ Aholkua: Bilaketa konplexuak egin nahi? Erabili Kanpora Paneleratu komandoa. Aholkua: Direktorioz aldatzeko komando bat tekleatzen erdibidean zaudela, erabili M-c (cd azkarra). -Oharra: Shell komandoak ez dira ibiliko bertakoa ez den fitxategi-sisteman zaudenean. +Aholkua: Shell komandoak ez dira ibiliko bertakoa ez den fitxategi-sisteman zaudenean. Aholkua: Ekarri atzera testua heriotzatik Ktrl-y erabilita. diff --git a/mcsrc/doc/hints/l10n/mc.hint.fa b/mcsrc/doc/hints/l10n/mc.hint.fa index d6121048..a2cb9195 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.fa +++ b/mcsrc/doc/hints/l10n/mc.hint.fa @@ -14,9 +14,9 @@ Hint: Need to quote a character? Use Control-q and the character. راهنمایی: اگر ترمینال شما از کلید‌های Ùانکشن پشتیبانی نمی‌کند، از Esc+عدد استÙاده کنید. -راهنمایی: نشانی وبگاه Ùرماندار نیمه‌شب: http://www.midnight-commander.org/ +راهنمایی: نشانی وبگاه Ùرماندار نیمهشب: https://www.midnight-commander.org -راهنمایی: لطÙا هرگونه باگ را به mc-devel@gnome.org گزارش دهید. +راهنمایی: لطÙا هرگونه باگ را به mc-devel@lists.midnight-commander.org گزارش دهید. راهنمایی: Tab قاب Ùعلی را عوض می‌کند. @@ -52,7 +52,7 @@ Hint: Want to do complex searches? Use the External Panelize command. راهنمایی: اگر خواستید در حین تایپ یک دستور پوشه را عوض کنید از ترکیب M-c استÙاده کنید (quick cd). -راهنمایی: زمانی Ú©Ù‡ در یک Ùایل سیستم غیر محلی باشید دستورات شل کار نمی‌کنند. +Hint: Shell commands will not work when you are on a non-local file system. Hint: Bring text back from the dead with C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.fr b/mcsrc/doc/hints/l10n/mc.hint.fr index 505f0eb5..a638820a 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.fr +++ b/mcsrc/doc/hints/l10n/mc.hint.fr @@ -14,9 +14,9 @@ Astuce: Sélection de répertoires: ajouter une barre oblique à la fin de motif Astuce: Si votre clavier n'a pas de touche de fonction, utilisez la combinaison ESC+nombre. -Astuce: Site officiel de GNU Midnight Commander: http://www.midnight-commander.org/ +Astuce: Site officiel de GNU Midnight Commander: https://www.midnight-commander.org -Astuce: Envoyez vos rapports de bogues à l'adresse mc-devel@gnome.org +Astuce: Envoyez vos rapports de bogues à l'adresse mc-devel@lists.midnight-commander.org Astuce: La touche Tab permute le panneau courant. diff --git a/mcsrc/doc/hints/l10n/mc.hint.fr_CA b/mcsrc/doc/hints/l10n/mc.hint.fr_CA deleted file mode 100644 index dbe114a4..00000000 --- a/mcsrc/doc/hints/l10n/mc.hint.fr_CA +++ /dev/null @@ -1,87 +0,0 @@ -Hint: Use C-x t to copy tagged file names to the command line. - -Hint: Use C-x p to copy the current pathname to the command line. - -Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. - -Hint: Use M-p and M-n to access the command history. - -Hint: Need to quote a character? Use Control-q and the character. - -Hint: Tired of these messages? Turn them off from the Options/Layout menu. - -Hint: Selecting directories: add a slash to the end of the matching pattern. - -Hint: If your terminal lacks functions keys, use the ESC+number sequence. - -Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/ - -Hint: Please send any bug reports to mc-devel@gnome.org - -Hint: Tab changes your current panel. - -Hint: VFS coolness: tap enter on a tar file to examine its contents. - -Hint: We also have a nice manual page. - -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. - -Hint: % macros work even on the command line. - -Hint: M-! will allow you to execute programs and see the output in the viewer. - -Hint: The file listing format can be customized; do "man mc" for details. - -Hint: %D/%T expands to the tagged files in the opposite directory. - -Hint: Want your plain shell? Press C-o, and get back to MC with C-o again. - -Hint: Setting the CDPATH variable can save you keystrokes in cd commands. - -Hint: If you want to see your .* files, say so in the Configuration dialog. - -Hint: Want to see your *~ backup files? Set it in the Configuration dialog. - -Hint: Completion works on all input lines in all dialogs. Just press M-Tab. - -Hint: On slow terminals the -s flag may help. - -Hint: Find File: you can work on the files found using the Panelize button. - -Hint: Want to do complex searches? Use the External Panelize command. - -Hint: To change directory halfway through typing a command, use M-c (quick cd). - -Note: Shell commands will not work when you are on a non-local file system. - -Hint: Bring text back from the dead with C-y. - -Hint: Are some of your keys not working? Look at Options/Learn keys. - -Hint: To look at the output of a command in the viewer, use M-! - -Hint: F13 (or Shift-F3) invokes the viewer in raw mode. - -Hint: You may specify the editor for F4 with the shell variable EDITOR. - -Hint: You may specify the external viewer with the shell vars VIEWER or PAGER. - -Hint: You can disable all requests for confirmation in Options/Confirmation. - -Hint: Leap to frequently used directories in a single bound with C-\. - -Hint: You can do anonymous FTP with mc by typing 'cd ftp://machine.edu' - -Hint: FTP is built in the Midnight Commander, check the File/FTP link menu. - -Hint: M-t changes quickly the listing mode. - -Hint: You can specify the username when doing ftps: 'cd ftp://user@machine.edu' - -Hint: You can browse RPM files by tapping enter on top of an rpm file. - -Hint: To mark directories on the select dialog box, append a slash. - -Hint: To use the mouse cut and paste may require holding the shift key - -Hint: Key frequently visited ftp sites in the hotlist: type C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.ga b/mcsrc/doc/hints/l10n/mc.hint.ga index 6949e802..9201d650 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.ga +++ b/mcsrc/doc/hints/l10n/mc.hint.ga @@ -14,9 +14,9 @@ Leid: Eolairí a roghnú: cuir slais isteach go dtí deireadh an patrún meaitse Leid: Má níl do críochfort eochracha feidhmeanna, bain úsáid as an ESC + seicheamh uimhir -Leid: Leathanach baile GNU Midnight Commander: http://www.midnight-commander.org/ +Leid: Leathanach baile GNU Midnight Commander: https://www.midnight-commander.org -Leid: Seol tuairiscí ar bith chuig mc-devel@gnome.org +Leid: Seol tuairiscí ar bith chuig mc-devel@lists.midnight-commander.org Leid: Athraíonn an tábla do phainéal reatha. @@ -24,7 +24,7 @@ Leid: VFS coolness: tap a chur isteach ar chomhad tarra chun scrúdú a dhéanam Leid: Tá leathanach láimhe deas againn freisin. -Leid: An bhfuil tú ag iarraidh loingseoireacht stíl lynx? Socraigh é sa dialóg Cumraíochta. +Leid: An bhfuil tú ag iarraidh loingseoireacht stíl Lynx? Socraigh é sa dialóg Cumraíochta. Leid: % Macraí ag obair fiú ar na n-orduithe. @@ -52,7 +52,7 @@ Leid: An bhfuil tú ag iarraidh cuardach casta a dhéanamh? Bain úsáid as an o Leid: A athrú leathbhealach eolaire trí clóscríobh a dtoil, a úsáid M-c (cd tapaidh). -Nóta: Ní oibreoidh orduithe Shell nuair a bhíonn tú ar chóras comhaid neamh-áitiúil. +Leid: Ní oibreoidh orduithe Shell nuair a bhíonn tú ar chóras comhaid neamh-áitiúil. Leid: Cuir téacs ar ais ó na marbh le C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.gl b/mcsrc/doc/hints/l10n/mc.hint.gl index 19313259..6d683dd1 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.gl +++ b/mcsrc/doc/hints/l10n/mc.hint.gl @@ -2,7 +2,7 @@ Consello: Use C-x t para copiar os nomes dos ficheiros marcados na liña de orde Consello: C-x p copia a ruta actual na liña de ordes. -Consello: M-Tab (ou ESC+Tab) completa ordes/nomes Dúas veces devolve unha lista. +Consello: M-Tab (ou ESC+Tab) completa ordes/nomes Dúas veces devolve unha lista. Consello: Use M-p e M-n para acceder ao historial de ordes. @@ -14,15 +14,15 @@ Consello: para seleccionar directorios: engada unha barra «/» na fin do patró Consello: se o seu terminal non ten teclas de función, use ESC+número. -Consello: a páxina principal de GNU Midnight Commander é: http://www.midnight-commander.org/ +Consello: a páxina principal de GNU Midnight Commander é: https://www.midnight-commander.org -Consello: informe de calquera erro a mc-devel@gnome.org +Consello: informe de calquera erro a mc-devel@lists.midnight-commander.org Consello: a tecla Tab cambia o seu panel actual. Consello: o mellor VFS! Prema Intro nun arquivo «tar» para examinar o seu contido. -Suxestión: temos tamén unha páxina de manual: «man mc» +Consello: temos tamén unha páxina de manual: «man mc» Consello: quere navegar ao estilo «Lynx» coas frechas? axústeo no cadro de diálogo de configuración. @@ -52,7 +52,7 @@ Consello: pode facer e gardar buscas complexas con «Buscas externas». Consello: escribindo M-c cambiar de directorio é un chisco máis doado. -Nota: as ordes da consola non funcionan fora do sistema local. +Consello: as ordes da consola non funcionan fora do sistema local. Consello: Con C-y pode recuperar texto eliminado. diff --git a/mcsrc/doc/hints/l10n/mc.hint.hu b/mcsrc/doc/hints/l10n/mc.hint.hu index 06919885..1bb31089 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.hu +++ b/mcsrc/doc/hints/l10n/mc.hint.hu @@ -6,17 +6,17 @@ Tipp: Kiegészítés: M-Tab (vagy Esc Tab). Kétszer lenyomva listát ad. Tipp: Korábbi parancsok elÅ‘hozása: M-p illetve M-n -Tipp: Speciális karakter beírásához használja ezt: Control-q +Tipp: Speciális karakter beírásához használja ezt: Control-q EkarakterE Tipp: Az itt megjelenÅ‘ üzenetek kikapcsolhatók a "Beállítások/Megjelenés"-nél. Tipp: Könyvtárak kijelölése a minta végére / jelet írva lehetséges. -Tipp: Ha a terminálon nincsenek funkcióbillentyűk, használja ezt: Esc +Tipp: Ha a terminálon nincsenek funkcióbillentyűk, használja ezt: Esc EszámE -Tipp: A Midnight Commander honlapja: http://www.midnight-commander.org/ +Tipp: A Midnight Commander honlapja: https://www.midnight-commander.org -Tipp: Hibabejelentéseket a következÅ‘ címre lehet küldeni: mc-devel@gnome.org +Tipp: Hibabejelentéseket a következÅ‘ címre lehet küldeni: mc-devel@lists.midnight-commander.org Tipp: A Tab billentyűvel lehet panelt váltani. @@ -52,7 +52,7 @@ Tipp: Komplex keresések végzéséhez a "KülsÅ‘ panel-parancs" funkció javaso Tipp: Könyvtárváltás egy parancs begépelése közben: M-c (gyors könyvtárváltás). -Megjegyzés: A shell-parancsok távoli fájlrendszereken nem használhatók. +Tipp: A shell-parancsok távoli fájlrendszereken nem használhatók. Tipp: A pufferben levÅ‘ (például "C-k"-val oda tett) szöveg visszahozása: C-y diff --git a/mcsrc/doc/hints/l10n/mc.hint.id b/mcsrc/doc/hints/l10n/mc.hint.id index 9ebc9c2b..5a8f48ed 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.id +++ b/mcsrc/doc/hints/l10n/mc.hint.id @@ -14,9 +14,9 @@ Petunjuk: Memilih direktori: tambahkan garis miring di akhir pola yang cocok. Petunjuk: Bila terminal Anda tak punya tombol fungsi, gunakan urutan ESC+angka. -Petunjuk: Laman web GNU Midnight Commander: http://www.midnight-commander.org/ +Petunjuk: Laman web GNU Midnight Commander: https://www.midnight-commander.org -Petunjuk: Harap kirim laporan bug ke mc-devel@gnome.org +Petunjuk: Harap kirim laporan bug ke mc-devel@lists.midnight-commander.org Petunjuk: Tab mengubah panel Anda saat ini. @@ -24,7 +24,7 @@ Petunjuk: VFS itu keren: ketuk enter pada suatu file tar untuk memeriksa isinya. Petunjuk: Kami juga memiliki halaman manual yang bagus. -Petunjuk: Apakah Anda ingin navigasi gaya lynx? Atur itu dalam dialog Konfigurasi. +Petunjuk: Apakah Anda ingin navigasi gaya Lynx? Atur itu dalam dialog Konfigurasi. Petunjuk: makro bekerja bahkan pada command line. @@ -38,7 +38,7 @@ Petunjuk: Ingin shell polos? Tekan C-o, dan kembali lagi ke MC dengan C-o lagi. Petunjuk: Menata variabel CDPATH dapat menghemat ketukan tombol dalam perintah cd. -Petunjtuk: Bila Anda ingin melihat file .*, nyatakan saja dalam dialog Konfigurasi. +Petunjuk: Bila Anda ingin melihat file .*, nyatakan saja dalam dialog Konfigurasi. Petunjuk: Ingin melihat file cadangan *~? Atur itu dalam dialog Konfigurasi. @@ -50,9 +50,9 @@ Petunjuk: Cari File: Anda dapat bekerja pada file yang ditemukan memakai tombol Petunjuk: Ingin melakukan pencarian rumit? Pakai perintah Panelkan Eksternal. -Petunjul: Untuk pindah direktori saat tengah mengetikkan suatu perintah, gunakan M-c (cd cepat). +Petunjuk: Untuk pindah direktori saat tengah mengetikkan suatu perintah, gunakan M-c (cd cepat). -Catatan: Perintah shell tak akan bekerja bila Anda berada pada sistem file bukan lokal. +Petunjuk: Perintah shell tak akan bekerja bila Anda berada pada sistem file bukan lokal. Petunjuk: Panggil kembali teks dari kematian dengan C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.it b/mcsrc/doc/hints/l10n/mc.hint.it index f0a0d3b2..0a09fc97 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.it +++ b/mcsrc/doc/hints/l10n/mc.hint.it @@ -14,9 +14,9 @@ Suggerimento: Selezionare cartelle: aggiungere una barra dopo i caratteri di con Suggerimento: Se nel terminale mancano i tasti di funzione, utilizzare la sequenza ESC+numero. -Suggerimento: La pagina principale su Internet di GNU Midnight Commander é: http://www.midnight-commander.org/ +Suggerimento: La pagina principale su Internet di GNU Midnight Commander é: https://www.midnight-commander.org -Suggerimento: Inviare i rapporti d'errore a mc-devel@gnome.org +Suggerimento: Inviare i rapporti d'errore a mc-devel@lists.midnight-commander.org Suggerimento: Tab modifica il pannello corrente. @@ -52,7 +52,7 @@ Suggerimento: Si vogliono eseguire ricerche complicate? Usare il comando Pannell Suggerimento: Per cambiare la cartella attuale mentre si sta componendo un comando: M-c (cd rapido). -Nota: I comandi della shell non sono disponibili in un file-system non locale. +Suggerimento: I comandi della shell non sono disponibili in un file-system non locale. Suggerimento: Riprendere del testo con Ctrl-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.it_IT b/mcsrc/doc/hints/l10n/mc.hint.it_IT deleted file mode 100644 index ff24d17b..00000000 --- a/mcsrc/doc/hints/l10n/mc.hint.it_IT +++ /dev/null @@ -1,87 +0,0 @@ -Dritta: usa C-x t per copiare i file selezionati sulla linea di comando. - -Dritta: usa C-x p per copiare il percorso corrente sulla linea di comando. - -Dritta: completamento: usa M-Tab (o Esc+Tab). Due volte per la lista. - -Dritta: usa M-p e M-n per accedere alla storia dei comandi. - -Dritta: devi inserire un carattere speciale? Usa C-q e il carattere. - -Dritta: stanco di questi messaggi? Disattivali dal menu Opzioni/Aspetto. - -Dritta: selezione directory: inserisci uno slash alla fine della selezione. - -Dritta: se al tuo terminale mancano i tasti funzione usa ESC+numero tasto. - -Dritta: la home page del Midnight Commander: http://www.midnight-commander.org/ - -Dritta: prego spedire i bug report a mc-devel@gnome.org - -Dritta: tab cambia il pannello corrente. - -Dritta: magico VFS; premi invio su un file tar per esaminarne il contenuto. - -Dritta: c'è anche un bel manuale. - -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. - -Dritta: le macro % funzionano anche sulla linea di comando! - -Dritta: M-! permette di eseguire programmi e vedere il risultato nel viewer. - -Dritta: il formato della lista file è impostabile; "man mc" per i dettagli. - -Dritta: %D/%T espande i file selezionati nella directory opposta. - -Dritta: vuoi la tua shell? Premi C-o e torna nuovamente a MC con C-o. - -Dritta: impostare la variabile CDPATH può far risparmiare tasti nei comandi cd. - -Dritta: se vuoi vedere i tuoi file .* impostalo nella Configurazione. - -Dritta: vuoi vedere i tuoi *~ file di backup? Impostalo nella Configurazione. - -Dritta: il completamento funziona su tutti gli input. Basta premere M-Tab. - -Dritta: con terminali lenti può aiutare la flag -s. - -Dritta: trova file: puoi elaborare i file trovati usando il bottone Pannellizza. - -Dritta: vuoi fare ricerche complesse? Usa il comando Pannellizza. - -Dritta: per cambiare directory mentre batti un comando, usa M-c (cd rapido). - -Nota: i comandi di shell non funzionano se non sei in un file system locale. - -Dritta: riesuma il testo nell'editor integrato con C-u. - -Dritta: non ti funzionano alcuni tasti? Guarda in Opzioni/Impara tasti. - -Dritta: per vedere il risultato di un comando nel visualizzatore, usa M-! - -Dritta: F13 (o Shift-F3) invoca il visualizzatore in modo 'raw'. - -Dritta: puoi specificare l'editor per F4 con la variabile shell EDITOR. - -Dritta: puoi specificare il visualizzatore esterno con la variabile shell PAGER. - -Dritta: puoi disabilitare tutte le richieste di conferma in Opzioni/Conferme. - -Hint: Leap to frequently used directories in a single bound with C-\. - -Dritta: puoi fare FTP anonimo con mc battendo 'cd ftp://macchina.edu' - -Dritta: l'FTP è integrato nel Midnight Commander, controlla il menu FTP. - -Dritta: M-t cambia velocemente il modo listato. - -Dritta: puoi dare il nome utente facendo ftp: 'cd ftp://utente@macchina.edu' - -Dritta: puoi navigare attraverso i file RPM battendo invio su di essi. - -Dritta: per selezionare directory in Seleziona, aggiungere uno slash in fondo. - -Dritta: per usare il taglia incolla del mouse devi tener premuto il tasto shift. - -Hint: Key frequently visited ftp sites in the hotlist: type C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.ja b/mcsrc/doc/hints/l10n/mc.hint.ja index e9fff6cb..cd618685 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.ja +++ b/mcsrc/doc/hints/l10n/mc.hint.ja @@ -2,7 +2,7 @@ ヒント:C-x p ã§ã€ç¾åœ¨ã®ãƒ‘スåをコマンドラインã«ã‚³ãƒ”ーã§ãã¾ã™ã€‚ -Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. +Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. Hint: Use M-p and M-n to access the command history. @@ -14,9 +14,9 @@ Hint: Selecting directories: add a slash to the end of the matching pattern. Hint: If your terminal lacks functions keys, use the ESC+number sequence. -Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/ +Hint: The homepage of GNU Midnight Commander: https://www.midnight-commander.org -Hint: Please send any bug reports to mc-devel@gnome.org +Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org Hint: Tab changes your current panel. @@ -52,7 +52,7 @@ Hint: Want to do complex searches? Use the External Panelize command. Hint: To change directory halfway through typing a command, use M-c (quick cd). -Note: Shell commands will not work when you are on a non-local file system. +Hint: Shell commands will not work when you are on a non-local file system. Hint: Bring text back from the dead with C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.ko b/mcsrc/doc/hints/l10n/mc.hint.ko index 297117bc..1c8906a9 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.ko +++ b/mcsrc/doc/hints/l10n/mc.hint.ko @@ -2,11 +2,11 @@ 힌트: C-x p를 사용하여 현재 경로 ì´ë¦„ì„ ëª…ë ¹ì¤„ì— ë³µì‚¬í•©ë‹ˆë‹¤. -힌트: 완료: M-Tab(ë˜ëŠ” Esc+Tab)ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 목ë¡ì„ 가져오려면 ì´ í•­ëª©ì„ ë‘ ë²ˆ 입력합니다. +힌트: 완성: M-Tab(ë˜ëŠ” Esc+Tab)ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 목ë¡ì„ 가져오려면 ì´ í•­ëª©ì„ ë‘ ë²ˆ 입력합니다. 힌트: M-p ë° M-nì„ ì‚¬ìš©í•˜ì—¬ 명령 기ë¡ì— 액세스합니다. -힌트: 문ìžë¥¼ ì¸ìš©í•´ì•¼ 합니까? Control-q와 문ìžë¥¼ 사용합니다. +힌트: 문ìžë¥¼ ì¸ìš©í•´ì•¼ 합니까? Control-q와 문ìžë¥¼ 사용합니다. 힌트: ì´ ë©”ì‹œì§€ë“¤ì— ì§€ì³¤ë‚˜ìš”? Options/Layout 메뉴ì—ì„œ 해당 ê¸°ëŠ¥ì„ ë•ë‹ˆë‹¤. @@ -14,9 +14,9 @@ 힌트: 터미ë„ì— ê¸°ëŠ¥ 키가 없는 경우 ESC+ìˆ«ìž ì‹œí€€ìŠ¤ë¥¼ 사용합니다. -힌트: GNU 미드나잇 ì»¤ë§¨ë” í™ˆíŽ˜ì´ì§€: http://www.midnight-commander.org/ +힌트: GNU 미드나잇 ì»¤ë§¨ë” í™ˆíŽ˜ì´ì§€: https://www.midnight-commander.org -힌트: mc-devel@gnome.org으로 버그 보고서를 보내주십시오. +힌트: mc-devel@lists.midnight-commander.org 으로 버그 보고서를 보내주십시오. 힌트: íƒ­ì´ í˜„ìž¬ 패ë„ì„ ë³€ê²½í•©ë‹ˆë‹¤. @@ -24,7 +24,7 @@ 힌트 : 우리는 ë˜í•œ 멋진 매뉴얼 페ì´ì§€ë¥¼ 가지고 있습니다. -힌트 : lynx ìŠ¤íƒ€ì¼ íƒìƒ‰ì„ ì›í•˜ì‹­ë‹ˆê¹Œ? 구성 대화 ìƒìžì—ì„œ 설정하십시오. +힌트 : Lynx ìŠ¤íƒ€ì¼ íƒìƒ‰ì„ ì›í•˜ì‹­ë‹ˆê¹Œ? 구성 대화 ìƒìžì—ì„œ 설정하십시오. 힌트: % 매í¬ë¡œëŠ” 명령줄ì—ì„œë„ ìž‘ë™í•©ë‹ˆë‹¤. @@ -42,7 +42,7 @@ 힌트: *~ 백업 파ì¼ì„ ë³´ê³  싶습니까? 환경설정 대화 ìƒìžì—ì„œ 설정합니다. -힌트: 모든 대화ìƒìžì˜ 모든 ìž…ë ¥ ë¼ì¸ì— 대해 완료가 ìž‘ë™í•©ë‹ˆë‹¤. 그냥 M-Tabì„ ëˆ„ë¥´ì„¸ìš”. +힌트: ì™„ì„±ì€ ëª¨ë“  대화 ìƒìžì˜ 모든 ìž…ë ¥ ë¼ì¸ì—ì„œ ìž‘ë™í•©ë‹ˆë‹¤. M-Tabì„ ëˆ„ë¥´ë©´ ë©ë‹ˆë‹¤. 힌트: ëŠë¦° 터미ë„ì—ì„œ -s 플래그가 ë„ì›€ì´ ë  ìˆ˜ 있습니다. @@ -52,7 +52,7 @@ 힌트: 명령 ìž…ë ¥ì„ ì¤‘ê°„ì— ìˆ˜í–‰í•˜ë ¤ë©´ M-c(빠른 cd)를 사용합니다. -참고: ë¡œì»¬ì´ ì•„ë‹Œ íŒŒì¼ ì‹œìŠ¤í…œì— ìžˆëŠ” 경우 ì…¸ ëª…ë ¹ì´ ìž‘ë™í•˜ì§€ 않습니다. +힌트: ë¡œì»¬ì´ ì•„ë‹Œ íŒŒì¼ ì‹œìŠ¤í…œì— ìžˆëŠ” 경우 ì…¸ ëª…ë ¹ì´ ìž‘ë™í•˜ì§€ 않습니다. 힌트: C-y와 함께 ì£½ì€ ê²ƒë“¤ë¡œë¶€í„° 문ìžë¥¼ 가져옵니다. @@ -76,11 +76,11 @@ 힌트: M-t는 ëª©ë¡ ëª¨ë“œë¥¼ 빠르게 변경합니다. -힌트: 'cd ftp://user@machine.edu'를 수행할 ë•Œ ì‚¬ìš©ìž ì´ë¦„ì„ ì§€ì •í•  수 있습니다. +힌트: ftps를 실행할 ë•Œ ì‚¬ìš©ìž ì´ë¦„ì„ ì§€ì •í•  수 있습니다: 'cd ftp://user@machine.edu' 힌트 : rpm 파ì¼ì˜ 맨 위ì—ì„œ Enter를 눌러 RPM 파ì¼ì„ íƒìƒ‰ í•  수 있습니다. -힌트: ì„ íƒ ëŒ€í™” ìƒìžì— 디렉터리를 표시하려면 슬래시를 추가합니다. +힌트: ì„ íƒ ëŒ€í™”ìƒìžì—ì„œ 디렉터리를 표시하려면 슬래시를 추가합니다 힌트: 마우스 잘ë¼ë‚´ê¸° ë° ë¶™ì—¬ë„£ê¸°ë¥¼ 사용하려면 Shift 키를 누르고 있어야 í•  수 있습니다. diff --git a/mcsrc/doc/hints/l10n/mc.hint.lt b/mcsrc/doc/hints/l10n/mc.hint.lt index fd89af11..ca3775db 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.lt +++ b/mcsrc/doc/hints/l10n/mc.hint.lt @@ -2,7 +2,7 @@ Hint: Use C-x t to copy tagged file names to the command line. Hint: Use C-x p to copy the current pathname to the command line. -Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. +Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. Hint: Use M-p and M-n to access the command history. @@ -14,9 +14,9 @@ Hint: Selecting directories: add a slash to the end of the matching pattern. Hint: If your terminal lacks functions keys, use the ESC+number sequence. -Patarimas: GNU Midnight Commander internetinÄ— svetainÄ—: http://www.midnight-commander.org/ +Patarimas: GNU Midnight Commander internetinÄ— svetainÄ—: https://www.midnight-commander.org -Hint: Please send any bug reports to mc-devel@gnome.org +Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org Patarimas: Tab klaviÅ¡as pakeiÄia esamÄ… panelÄ™. @@ -52,7 +52,7 @@ Hint: Want to do complex searches? Use the External Panelize command. Hint: To change directory halfway through typing a command, use M-c (quick cd). -Note: Shell commands will not work when you are on a non-local file system. +Hint: Shell commands will not work when you are on a non-local file system. Hint: Bring text back from the dead with C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.nb b/mcsrc/doc/hints/l10n/mc.hint.nb index ca1d3f99..7d1a0c6c 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.nb +++ b/mcsrc/doc/hints/l10n/mc.hint.nb @@ -14,9 +14,9 @@ Hint: For Ã¥ velge mapper kan du legge til en skrÃ¥strek til slutt i søkemønst Hint: Hvis terminalen mangler funksjonstaster sÃ¥ kan du bruke ESC + tallet. -Hint: Hjemmesiden til GNU Midnight Commander er http://www.midnight-commander.org/ +Hint: Hjemmesiden til GNU Midnight Commander er https://www.midnight-commander.org -Hint: Du kan sende feilrapporter til mc-devel@gnome.org +Hint: Du kan sende feilrapporter til mc-devel@lists.midnight-commander.org Hint: Tabulatoren endrer det aktive panelet. @@ -52,7 +52,7 @@ Hint: Du kan bruke «Legg til eksternt i panel» for Ã¥ utføre komplekse søk. Hint: Du kan skifte mappe mens du holder pÃ¥ Ã¥ skrive en kommando med hurtigtasten M-c -Merk: Skallkommandoer vil ikke virke i eksterne filsystemer. +Hint: Skallkommandoer vil ikke virke i eksterne filsystemer. Hint: Du kan hente tilbake tekst med C-y. diff --git a/mcsrc/doc/hints/l10n/mc.hint.nl b/mcsrc/doc/hints/l10n/mc.hint.nl index 7c29cbdf..fcd8bf87 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.nl +++ b/mcsrc/doc/hints/l10n/mc.hint.nl @@ -6,17 +6,17 @@ Hint: Completeren: gebruik M-Tab (of Esc+Tab). Herhaal voor een lijst. Hint: Gebruik M-p en M-n voor de commando lijn historie. -Hint: Een character quoten? Gebruik Control-q en dan het character. +Hint: Een character quoten? Gebruik Control-q en dan het character. -Hint: Moe van deze hints? Zet ze uit in Opties/Vormgeving. +Hint: Moe van deze hints? Zet ze uit in Opties/Vormgeving. Hint: Directories selecteren: zet een slash aan het eind van het zoekpatroon. Hint: Als je terminal geen functietoetsen ondersteunt, gebruik dan ESC+nummer. -Hint: Midnight Commander home page: http://www.midnight-commander.org/ +Hint: Midnight Commander home page: https://www.midnight-commander.org -Hint: Stuur bug rapporten naar mc-devel@gnome.org +Hint: Stuur bug rapporten naar mc-devel@lists.midnight-commander.org Hint: Tab verandert focus huidig paneel (links/rechts). @@ -24,7 +24,7 @@ Hint: VFS-coolheid: druk op 'enter' op een tar file om de inhoud ervan te zien. Hint: We hebben ook een aardige handleiding. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Hint: Wil je Lynx-achtige navigatie? Stel het in bij Configuratie. Hint: % macros werken zelf op de commando lijn. @@ -52,7 +52,7 @@ Hint: Wil je complexe zoekopdrachten? Gebruik het commando Externe Venster. Hint: M-c (snelle cd) is om middenin een commando van directorie te wisselen. -NB: Shell-commandos werken niet in niet-locale bestandssystemen. +Hint: Shell-commandos werken niet in niet-locale bestandssystemen. Hint: Laat tekst herleven met C-y. @@ -68,7 +68,7 @@ Hint: Je kunt een externe viewer specificeren met de shell variabele PAGER. Hint: Je kunt alle aanvragen voor bevestiging instellen in Opties/Bevestiging. -Hint: Leap to frequently used directories in a single bound with C-\. +Hint: Spring naar veel gebruikte directories in een keer met C-\. Hint: Je kunt anonieme FTP draaien met mc door middel van 'cd ftp://machine.edu' @@ -84,4 +84,4 @@ Hint: Om directories toe te voegen aan de selectie, moet je een slash toevoegen. Hint: Voor de normale cut-and-paste muisfuncties moet je de shift key inhouden. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Hint: Voer frequent bezochte ftp-sites toe aan je hotlist: type C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.pl b/mcsrc/doc/hints/l10n/mc.hint.pl index fb0764c6..a3bfeff3 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.pl +++ b/mcsrc/doc/hints/l10n/mc.hint.pl @@ -4,19 +4,19 @@ Porada: uzupeÅ‚nianie: M-Tab (lub Esc+Tab). Dwukrotne naciÅ›niÄ™cie wywoÅ‚uje listÄ™. -Porada: M-p i M-n udostÄ™pni historiÄ™ poleceÅ„. +Porada: M-p i M-n udostÄ™pni historiÄ™ poleceÅ„. -Porada: cytowanie znaku można uzyskać przez Ctrl-q i odpowiedni znak. +Porada: cytowanie znaku można uzyskać przez Ctrl-q i odpowiedni znak. -Porada: te komunikaty można wyÅ‚Ä…czyć w menu Opcje/UkÅ‚ad. +Porada: te komunikaty można wyÅ‚Ä…czyć w menu Opcje/UkÅ‚ad. Porada: zaznaczanie katalogów: należy dodać ukoÅ›nik na koÅ„cu wzorca dopasowania. -Porada: jeÅ›li w terminalu nie ma klawiszy funkcyjnych, można użyć Esc+numer. +Porada: jeÅ›li w terminalu nie ma klawiszy funkcyjnych, można użyć Esc+numer. -Porada: witryna programu GNU Midnight Commander: http://www.midnight-commander.org +Porada: witryna programu GNU Midnight Commander: https://www.midnight-commander.org -Porada: raporty bÅ‚Ä™dów (w jÄ™zyku angielskim) proszÄ™ wysÅ‚ać na mc-devel@gnome.org +Porada: raporty bÅ‚Ä™dów (w jÄ™zyku angielskim) proszÄ™ wysÅ‚ać na mc-devel@lists.midnight-commander.org Porada: klawisz Tab zmienia bieżący panel. @@ -24,23 +24,23 @@ Porada: warto zajrzeć także na stronÄ™ podrÄ™cznika. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Porada: nawigacjÄ™ w stylu programu Lynx można ustawić w oknie konfiguracji. -Porada: makra % dziaÅ‚ajÄ… także w wierszu poleceÅ„. +Porada: makra % dziaÅ‚ajÄ… także w wierszu poleceÅ„. -Porada: M-! umożliwia wyÅ›wietlenie wyjÅ›cia wykonywanych programów w podglÄ…dzie. +Porada: M-! umożliwia wyÅ›wietlenie wyjÅ›cia wykonywanych programów w podglÄ…dzie. -Porada: format wyÅ›wietlania listy plików można dostosować (wiÄ™cej w „man mcâ€). +Porada: format wyÅ›wietlania listy plików można dostosować (wiÄ™cej w „man mcâ€). -Porada: %D/%T oznacza zaznaczone pliki w drugim panelu. +Porada: %D/%T oznacza zaznaczone pliki w drugim panelu. -Porada: dostÄ™p do zwykÅ‚ej powÅ‚oki można uzyskać przez C-o, a powrót tak samo. +Porada: dostÄ™p do zwykÅ‚ej powÅ‚oki można uzyskać przez C-o, a powrót tak samo. Porada: ustawienie zmiennej CDPATH może zaoszczÄ™dzić pisania przy cd. -Porada: wyÅ›wietlanie plików .* można wybrać w oknie konfiguracji. +Porada: wyÅ›wietlanie plików .* można wybrać w oknie konfiguracji. -Porada: wyÅ›wietlanie plików zapasowych *~ można ustawić w oknie konfiguracji. +Porada: wyÅ›wietlanie plików zapasowych *~ można ustawić w oknie konfiguracji. Porada: uzupeÅ‚nianie dziaÅ‚a wszÄ™dzie. Wystarczy nacisnąć M-Tab. @@ -50,29 +50,29 @@ Porada: zÅ‚ożone wyszukiwanie można wykonać za pomocÄ… polecenia Filtr zewnÄ™trzny. -Porada: można zmienić katalog w poÅ‚owie podawania polecenia za pomocÄ… M-c. +Porada: można zmienić katalog w poÅ‚owie podawania polecenia za pomocÄ… M-c. -Uwaga: polecenia powÅ‚oki dziaÅ‚ajÄ… tylko na lokalnych systemach plików. +Porada: polecenia powÅ‚oki dziaÅ‚ajÄ… tylko na lokalnych systemach plików. Porada: można przywrócić usuniÄ™ty tekst za pomocÄ… C-y. Porada: jeÅ›li jakiÅ› klawisz nie dziaÅ‚a, należy zobaczyć Opcje/OkreÅ›l klawisze. -Porada: aby zobaczyć wyjÅ›cie polecenia w podglÄ…dzie, należy użyć M-!. +Porada: aby zobaczyć wyjÅ›cie polecenia w podglÄ…dzie, należy użyć M-!. -Porada: F13 (lub Shift-F3) wywoÅ‚uje podglÄ…d w trybie oryginalnym. +Porada: F13 (lub Shift-F3) wywoÅ‚uje podglÄ…d w trybie oryginalnym. Porada: można okreÅ›lić edytor dla klawisza F4 za pomocÄ… zmiennej powÅ‚oki EDITOR. Porada: można okreÅ›lić zewnÄ™trzny podglÄ…d za pomocÄ… zmiennych VIEWER lub PAGER. -Porada: można wyÅ‚Ä…czyć wszystkie żądania potwierdzenia w Opcje/Potwierdzenia. +Porada: można wyÅ‚Ä…czyć wszystkie żądania potwierdzenia w Opcje/Potwierdzenia. -Hint: Leap to frequently used directories in a single bound with C-\. +Porada: do listy czÄ™sto używanych katalogów można przejść za pomocÄ… C-\. -Porada: można poÅ‚Ä…czyć siÄ™ z anonimowym FTP wpisujÄ…c „cd ftp://komputer.eduâ€. +Porada: można poÅ‚Ä…czyć siÄ™ z anonimowym FTP wpisujÄ…c „cd ftp://komputer.eduâ€. -Porada: FTP jest wbudowane w mc, proszÄ™ zobaczyć menu Plik/PoÅ‚Ä…czenie FTP. +Porada: FTP jest wbudowane w mc, proszÄ™ zobaczyć menu Plik/PoÅ‚Ä…czenie FTP. Porada: M-t szybko zmienia tryb wyÅ›wietlania. @@ -80,8 +80,8 @@ Porada: można przeglÄ…dać pakiety RPM naciskajÄ…c na nich klawisz Enter. -Porada: aby zaznaczyć katalogi w oknie zaznaczania, należy dodać ukoÅ›nik. +Porada: aby zaznaczyć katalogi w oknie zaznaczania, należy dodać ukoÅ›nik. -Porada: użycie wycinania i wklejania za pomocÄ… myszy wymaga klawisza Shift. +Porada: użycie wycinania i wklejania za pomocÄ… myszy wymaga klawisza Shift. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Porada: wpisujÄ…c C-\ można dodać czÄ™sto używane zasoby FTP do listy podrÄ™cznej. diff --git a/mcsrc/doc/hints/l10n/mc.hint.pt b/mcsrc/doc/hints/l10n/mc.hint.pt index 928680e3..7adb4cf3 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.pt +++ b/mcsrc/doc/hints/l10n/mc.hint.pt @@ -2,7 +2,7 @@ Dica: Use C-x t para copiar nomes de ficheiro etiquetados para a linha de comand Dica: Use C-x p para copiar o caminho atual para a linha de comandos. -Dica: Preenchimento: use M-Tab (ou Esc+Tab). Duas vezes para obter a lista. +Dica: Preenchimento: use M-Tab (ou Esc+Tab). Duas vezes para obter a lista. Dica: Use M-p e M-n para aceder ao histórico de comandos. @@ -14,9 +14,9 @@ Dica: Seleção de diretórios: adicione uma barra no fim do padrão corresponde Dica: Se o seu terminal não tem algumas teclas de função, use a sequência ESC+número. -Dica: A página do GNU Midnight Commander: http://www.midnight-commander.org/ +Dica: A página do GNU Midnight Commander: https://www.midnight-commander.org -Dica: Por favor envie relatórios de bugs para mc-devel@gnome.org +Dica: Por favor envie relatórios de bugs para mc-devel@lists.midnight-commander.org Dica: O tab altera o painel atual. @@ -24,7 +24,7 @@ Dica: VFS coolness: pressione enter num ficheiro tar para examinar o seu conteú Dica: Também temos uma página manual interessante. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Dica: Deseja navegação tipo Lynx? Ative-a no diálogo de Configuração. Dica: % macros funcionam mesmo na linha de comandos. @@ -52,7 +52,7 @@ Dica: Deseja efetuar procuras complexas? Use o comando Externo Panelize. Dica: Para mudar de diretório a meio de um comando, use M-c (cd rápido). -Note: Comandos shell não funcionarão quando estiver num sistema de ficheiros não local. +Dica: Comandos shell não funcionarão quando estiver num sistema de ficheiros não local. Dica: Traga de volta o texto dos mortos com C-y. @@ -68,7 +68,7 @@ Dica: Pode especificar o visualizador externo com as vars de shell VIEWER ou PAG Dica: Pode desabilitar todos os pedidos de confirmação em Opções/Confirmação. -Hint: Leap to frequently used directories in a single bound with C-\. +Dica: Salte para diretórios frequentemente usados de uma só vez através de C-\. Dica: Pode efetuar FTP anónimo com o mc digitando 'cd ftp://machine.edu' @@ -84,4 +84,4 @@ Dica: Para marcar diretórios na caixa de diálogo de seleção, acrescente uma Dica: Para usar o rato cortar e colar pode ser necessário prender a tecla shift -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Dica: Sites ftp chave frequentemente visitados na hotlist: digite C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.pt_BR b/mcsrc/doc/hints/l10n/mc.hint.pt_BR index eb9d7502..bde8215b 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.pt_BR +++ b/mcsrc/doc/hints/l10n/mc.hint.pt_BR @@ -1,87 +1,87 @@ -Dica: Use C-x para copiar nome de arquivos marcados para linha de comando. +Dica: Pressione a tecla Ctrl junto com a tecla X, em seguida, pressione a tecla T para copiar o nome dos arquivos marcados para a linha de comando. -Dica: Use C-x para copiar o nome de caminho atual para a linha de comando. +Dica: Pressione a tecla Ctrl junto com a tecla X, em seguida, pressione a tecla P para copiar o nome do caminho atual para a linha de comando. -Dica: Completion: use M-Tab (ou Esc+Tab). Pressione duas vezes para ter uma lista. +Dica: Para concluir: Pressione a tecla M junto com a tecla Tab (ou a tecla Esc junto com a tecla Tab). Pressione duas vezes para obter uma lista. -Dica: Use M-p e M-n para acessar o histórico de comandos. +Dica: Pressione a tecla M junto com a tecla P ou a tecla M junto com a tecla N para acessar o histórico de comandos. -Dica: Para inserir um caractere especial, use Control-q e o caractere, +Dica: Para inserir um caractere especial, pressione a tecla Ctrl junto com a tecla Q e o caractere desejado. -Dica: Cansado dessas mensagens? Desabilite-as no menu Opções/Layout. +Dica: Para não exibir as mensagens das dicas de ferramentas, desative-as no menu Opções, Leiaute. -Dica: Selecionando diretórios: adicione uma barra ao final do padrão correspondente. +Dica: Selecionando diretórios: Adicione uma barra ao final do padrão correspondente. -Dica: Se seu terminal falha teclas de função, use sequências com ESC+número. +Dica: Se o seu terminal não for compatível com as teclas de função, utilize a sequência com a tecla Esc junto com a tecla do número. -Dica: A página web do GNU Midnight Commander: http://www.midnight-commander.org/ +Dica: A página eletrônica do Midnight Commander do GNU é https://www.midnight-commander.org -Dica: Favor enviar quaisquer relatórios de bug para mc-devel@gnome.org +Dica: Por favor, envie os relatórios de erros ou falhas para o endereço mc-devel@lists.midnight-commander.org -Dica: Tab altera seu painel atual. +Dica: A tecla Tab altera o seu painel atual. -Dica: Coisas legais do VFS: pressione enter em um arquivo tar para examinar seu conteúdo. +Dica: Coisas legais do VFS: Pressione a tecla Enter em um arquivo com a extensão .tar para examinar o seu conteúdo. -Dica: Nós também temos uma ótima página man. +Dica: Nós também temos um ótimo manual na página do Midnight Commander. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Dica: Você deseja uma navegação do tipo Lynx? Ative-a na caixa de diálogo das Configurações. -Dica: macros % funcionam mesmo na linha de comando. +Dica: Os macros % funcionam mesmo na linha de comando. -Dica: M-! vai permitir que você execute programas e veja a saída no visualizador. +Dica: Pressione a tecla M junto com a tecla ! para executar os programas aplicativos e exibir a saída no visualizador. -Dica: O formato de listagem de arquivos pode ser personalizada; execute "man mc" para mais detalhes. +Dica: O formato da listagem de arquivos pode ser personalizada; execute o comando "man mc" para obter mais informações. Dica: %D/%T expande para os arquivos marcados no diretório oposto. -Dica: Quer sua shell básica? Pressione C-o e volte para o MC com C-o novamente. +Dica: Para ter o Shell básico, pressione a tecla Ctrl junto com a tecla O e volte novamente para o Midnight Commander pressionando a tecla C junto com a tecla O. -Dica: Ao definir a variável CDPATH você economizará digitações nos comandos cd. +Dica: Ao definir a variável CDPATH, você economizará digitações dos comandos cd. -Dica: Se você quer ver seus .* arquivos, avise isso no diálogo de Configurações. +Dica: Para exibir os seus arquivos .*, defina esta opção na caixa de diálogo das Configurações. -Dica: Quer ver seus arquivos backup *~ ? Defina isso no diálogo de Configuração. +Dica: Para exibir os seus arquivos de cópia de segurança (backup) *~, defina esta opção na caixa de diálogo nas Configurações. -Dica: Completion funciona em todas as linhas de entrada em todos diálogos. Basta pressionar M-Tab. +Dica: A conclusão funciona em todas as linhas de entrada em todas as caixas de diálogos, pressione as teclas M+Tab. -Dica: Em terminais lentos a opção -s pode ajudar. +Dica: Em emuladores de terminais lentos, a opção -s pode ajudar. -Dica: Encontrar Arquivo: você pode trabalhar em arquivos encontrados usando o botão de Painelização. +Dica: Encontrar um Arquivo: você pode trabalhar em arquivos encontrados utilizando o botão de Painelização. -Dica: Você faz pesquisas complexas? Use o comando de Panelização Externa. +Dica: Para fazer pesquisas complexas, pressione o comando de Painelização Externo. -Dica: Para alterar o diretório por meio de um comando, use M-c (cd rápido). +Dica: Para alterar o diretório por meio de um comando, pressione a tecla M junto com a tecla C (equivale ao preenchimento rápido do comando cd). -Nota: Comandos de shell não vão funcionar quando você está em um sistema de arquivos não-local. +Dica: Comandos shell não funcionarão quando estiver num sistema de ficheiros não local. -Dica: Traga texto de volta dos mortos com C-y +Dica: Para recuperar o texto de volta, pressione a tecla Ctrl junto com a tecla Y. -Dica: Algumas de suas teclas não estão funcionando? Dê uma olhada em Opções/Aprender teclas. +Dica: Se algumas das suas teclas não estão funcionando, verifique no menu Opções, Aprender as Teclas. -Dica: Para ver a saída de um comando no visualizador, use M-! +Dica: Para exibir a saída de um comando no visualizador, pressione a tecla M junto com a tecla !. -Dica: F13 (ou Shift-F3) chama o visualizador no modo crú. +Dica: Pressione a tecla F13 (ou Shift junto com F3) para invocar o visualizador no modo bruto. -Dica: você pode especificar o editor para F4 com a variável shell EDITOR. +Dica: Para especificar o editor, pressione com a tecla F4 com a variável EDITOR do Shell. -Dica: Você pode especificar o visualizador externo com as variáveis shell VIEWER ou PAGER. +Dica: Para especificar o visualizador externo, utilize as variáveis VIEWER ou PAGER do Shell. -Dica: você pode disabilitar todas requisições por confirmação em Opções/Confirmação. +Dica: Para desativar todas as solicitações de confirmação, defina esta opção no menu Opções, Confirmações. -Hint: Leap to frequently used directories in a single bound with C-\. +Dica: Para pular para os diretórios utilizados com mais frequência, pressione a tecla Ctrl junto com a tecla \. -Dica: Você pode usar FTP anonimamente com mc digitando 'cd ftp://maquina.edu' +Dica: Para utilizar o FTP anonimamente com o Midnight Commander, insira o endereço 'cd ftp://maquina.edu'. -Dica: FTP está embutido no Midight Commander, verifique o menu Arquivo/FTP +Dica: O FTP está embutido no Midnight Commander, verifique o menu Arquivo, FTP. -Dica: M-t altera rapidamente o modo de listagem. +Dica: Para alterar rapidamente para o modo de listagem ou de lista, pressione a tecla M junto com a tecla T. -Dica: Você pode especificar o nome de usuário quando utilizando ftps: 'cd ftp://usuario@maquina.edu' +Dica: Para especificar o nome de usuário quando for utilizar o ftps: 'cd ftp://user@machine.edu'. -Dica: Você pode acessar arquivos RPM digitando enter em cima de um arquivo rpm. +Dica: Para acessar os arquivos com a extensão .RPM, pressione a tecla Enter após selecionar um arquivo .rpm. -Dica: Para marcar diretórios na caixa de diálogo selecionada, adicione ao final uma barra. +Dica: Para marcar diretórios na caixa de diálogo selecionada, adicione ao final uma barra. -Dica: Para usar o recortar e colar com mouse, pode ser necessário estar segurando a tecla shift +Dica: Para utilizar os comandos "recortar" e "colar" com o cursor, pode ser necessário segurar a tecla Shift. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Dica: Para definir a tecla de atalho para os endereços de FTP que são visitados com mais frequência no 'hotlist', pressione a tecla Ctrl junto com a tecla \. diff --git a/mcsrc/doc/hints/l10n/mc.hint.ro b/mcsrc/doc/hints/l10n/mc.hint.ro index 92aad596..e72cefcb 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.ro +++ b/mcsrc/doc/hints/l10n/mc.hint.ro @@ -14,9 +14,9 @@ Sfat: Selectarea dosarelor: adăugaÈ›i slash la sfârÈ™itul criteriului de selec Sfat: Dacă terminalul nu dispune de taste funcÈ›ionale, folosiÈ›i ESC+ numărul de ordine. -Sfat: Pagină de start pentru GNU Midnight Commander: http://www.midnight-commander.org/ +Sfat: Pagină de start pentru GNU Midnight Commander: https://www.midnight-commander.org -Sfat: Vă rugăm semnalaÈ›i orice bug la adresa mc-devel@gnome.org +Sfat: Vă rugăm semnalaÈ›i orice bug la adresa mc-devel@lists.midnight-commander.org Sfat: Tasta Tab schimbă panoul curent. @@ -24,7 +24,7 @@ Sfat: facilități VFS: ApăsaÈ›i ENTER pe un fiÈ™ier tar pentru a examina conÈ› Sfat: Avem de asemenea È™i o pagină de manual. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Sfat: DoreÈ™ti navigare în stilul Lynx? PoÈ›i seta în dialogul Configurare. Sfat: macro-urile funcÈ›ionează È™i în linia de comandă. @@ -52,7 +52,7 @@ Sfat: DoriÈ›i căutări complexe? FolosiÈ›i comanda de panelizare externă. Sfat: Pentru a schimba dosarul curent în timpul tastării unei comenzi, folosiÈ›i M-c (cd rapid). -Nota: Comenzile shell nu funcÈ›ionează în sisteme de fiÈ™iere care nu sunt locale. +Sfat: Comenzile shell nu funcÈ›ionează în sisteme de fiÈ™iere care nu sunt locale. Sfat: PuteÈ›i recupera textul È™ters cu C-y. @@ -68,7 +68,7 @@ Sfat: PuteÈ›i specifica vizualizatorul extern cu ajutorul variabilelor de shell Sfat: PuteÈ›i dezactiva toate cererile de confirmare în meniul OpÈ›iuni/Confirmări. -Hint: Leap to frequently used directories in a single bound with C-\. +Sfat: SăriÈ›i la dosarele utilizate frecvent într-un singur pas cu C-\. Sfat: PuteÈ›i să vă conectaÈ›i la FTP în mod anonim din MC tastând 'cd ftp://machine.edu' @@ -84,4 +84,4 @@ Sfat: Pentru a marca dosarele în dialogul de selecÈ›ie, adăugaÈ›i slash. Sfat: Pentru a folosi mouse-ul pentru a decupa È™i insera, trebuie să È›ineÈ›i tasta Shift apăsată. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Sfat: Pentru a păstra în lista rapida site-urile ftp vizitate frecvent: tastaÈ›i C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.ru b/mcsrc/doc/hints/l10n/mc.hint.ru index fbf07896..74ccd059 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.ru +++ b/mcsrc/doc/hints/l10n/mc.hint.ru @@ -14,9 +14,9 @@ Совет: ЕÑли ваш терминал без функц. клавиш, вам поможет ESC+цифра. -Совет: ДомашнÑÑ Ñтраница Midnight Commander: http://www.midnight-commander.org/ +Совет: ДомашнÑÑ Ñтраница Midnight Commander: https://www.midnight-commander.org -Совет: ПожалуйÑта, шлите любые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках на mc-devel@gnome.org +Совет: ПожалуйÑта, шлите любые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках на mc-devel@lists.midnight-commander.org Совет: Tab менÑет текущую панель. @@ -24,7 +24,7 @@ Совет: У Ð½Ð°Ñ Ñ‚Ð°ÐºÐ¶Ðµ имеетÑÑ Ñ‚Ð¾Ð»ÐºÐ¾Ð²Ð°Ñ Ñтраница руководÑтва. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Совет: Ð’Ñ‹ хотите навигацию в Ñтиле Lynx? УÑтановите Ñто в диалоге КонфигурациÑ. Совет: МакроÑÑ‹ % работают даже в командной Ñтроке. @@ -32,7 +32,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Совет: Формат ÑпиÑка файлов может быть изменен; наберите "man mc" Ð´Ð»Ñ Ð´ÐµÑ‚Ð°Ð»ÐµÐ¹. -ПодÑказка: %D/%T раÑпроÑтранÑетÑÑ Ð½Ð° отмеченные файлы в противоположном каталоге. +Совет: %D/%T раÑпроÑтранÑетÑÑ Ð½Ð° отмеченные файлы в противоположном каталоге. Совет: Хотите проÑтую оболочку? Ðажмите C-o, и Ñнова C-o Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° в МС. @@ -52,7 +52,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Совет: Ð”Ð»Ñ Ñмены каталога во Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° команды нажмите M-c (быÑÑ‚Ñ€Ð°Ñ Ñмена). -Заметка: Команды оболочки не выполнÑÑŽÑ‚ÑÑ, еÑли вы не в локальной файл. ÑиÑтеме. +Совет: Команды оболочки не выполнÑÑŽÑ‚ÑÑ, еÑли вы не в локальной файл. ÑиÑтеме. Совет: Удаленный текÑÑ‚ можно вернуть Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ C-y. @@ -68,7 +68,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Совет: Ð’Ñ‹ можете отменить запроÑÑ‹ на подтверждение в ÐаÑтройки/Подтверждение. -Hint: Leap to frequently used directories in a single bound with C-\. +Совет: Переходите к чаÑто иÑпользуемым каталогам из Ñправочника, набрав C-\. Совет: Ð’Ñ‹ можете иÑпользовать анонимный FTP Ñ mc, набрав 'cd ftp://machine.edu' @@ -84,4 +84,4 @@ Hint: Leap to frequently used directories in a single bound with C-\. Совет: Вырезание и вÑтавка Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ мыши может требовать ÑƒÐ´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ Shift. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Совет: Храните ÑпиÑок чаÑто поÑещаемых FTP в Ñправочнике каталогов: нажмите C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.sk b/mcsrc/doc/hints/l10n/mc.hint.sk index 38061fbb..e794380e 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.sk +++ b/mcsrc/doc/hints/l10n/mc.hint.sk @@ -2,7 +2,7 @@ Tip: Pomocou C-x t skopírujete oznaÄené názvy súborov do príkazového riad Tip: Pomocou C-x p skopírujete aktuálnu cestu do príkazového riadka. -Rada: Dopĺňanie pomocou M-Tab (alebo Esc+Tab). Ak ho napíšete dvakrát, zobrazí sa zoznam. +Tip: Dopĺňanie pomocou M-Tab (alebo Esc+Tab). Ak ho napíšete dvakrát, zobrazí sa zoznam. Tip: Pomocou M-p a M-n zobrazíte históriu príkazov. @@ -14,9 +14,9 @@ Tip: Výber adresárov: pridajte lomku na koniec vyhľadávacieho vzoru. Tip: Ak váš terminál nemá funkÄné klávesy, použite ESC+Äíselnú postupnosÅ¥. -Tip: Domovská stránka GNU Midnight Commander: http://www.midnight-commander.org/ +Tip: Domovská stránka GNU Midnight Commander: https://www.midnight-commander.org -Tip: Hlásenia chýb posielajte na mc-devel@gnome.org +Tip: Hlásenia chýb posielajte na mc-devel@lists.midnight-commander.org Tip: Tabulátor mení váš aktuálny panel. @@ -24,7 +24,7 @@ Tip: VFS: stlaÄením Enter na súbore .tar preskúmate jeho obsah. Tip: Máme aj peknú manuálovú stránku. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Tip: Chcete navigáciu v Å¡týle Lynx? Nastavte si ju v dialógu Konfigurácia. Tip: Makrá % fungujú aj na príkazovom riadku. @@ -68,7 +68,7 @@ Tip: Premennými prostredia VIEWER alebo PAGER môžete urÄiÅ¥ externý prehlia Tip: Môžete zakázaÅ¥ vÅ¡etky žiadosti o potvrdenie pomocou Možnosti/Konfigurácia. -Hint: Leap to frequently used directories in a single bound with C-\. +Tip: Do Äasto používaných adresárov môžete skákaÅ¥ pomocou C-\. Tip: Prístup k anonymnému FTP z mc získate napísaním „cd ftp://machine.edu“ @@ -84,4 +84,4 @@ Tip: Adresáre v dialógovom okne výberu môžete oznaÄiÅ¥ pridaním lomky. Tip: Na kopírovanie a vkladanie pomocou myÅ¡i môže byÅ¥ potrebné podržaÅ¥ Shift. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Tip: Uložte si Äasto navÅ¡tevované servery FTP do hotlistu: C-\ diff --git a/mcsrc/doc/hints/l10n/mc.hint.sr b/mcsrc/doc/hints/l10n/mc.hint.sr index 5df6fab5..c9da447b 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.sr +++ b/mcsrc/doc/hints/l10n/mc.hint.sr @@ -2,7 +2,7 @@ Савет: КориÑтите „C-x p“ да умножите назив текуће путање у линији наредби. -Савет: Довршавање: кориÑтите „M-Tab“ (или „Esc+Tab“). Укуцајте га два пута да добавите ÑпиÑак. +Савет: Довршавање: кориÑтите „M-Tab“ (или „Esc+Tab“). Укуцајте га два пута да добавите ÑпиÑак. Савет: КориÑтите „M-p“ и „M-n“ да приÑтупите иÑторијату наредби. @@ -14,9 +14,9 @@ Савет: Ðко вашем терминалу недоÑтају функцијÑки таÑтери, кориÑтите низ „ЕСЦ+број“. -Савет: Матична Ñтраница Гнуовог Поноћног наредника: http://www.midnight-commander.org/ +Савет: Матична Ñтраница Гнуовог Поноћног наредника: https://www.midnight-commander.org -Савет: Све извештаје о грешкама пошаљите на „mc-devel@gnome.org“ +Савет: Све извештаје о грешкама пошаљите на „mc-devel@lists.midnight-commander.org“ Савет: Табулатор мења ваш текући панел. @@ -24,7 +24,7 @@ Савет: Такође имамо и лепу Ñтраницу упутÑтва. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Савет: Да ли желите кретање у Ñтилу Lynx? ПоÑтавите га у прозорчету подешавања. Савет: % макрои раде чак и на линији наредби. @@ -52,7 +52,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Савет: Да промените директоријум на пола пута куцајући наредбу, кориÑтите „M-c“ (брза промена директоријума). -Ðапомена: Ðаредбе љуÑке неће радити када ниÑте на меÑном ÑиÑтему датотека. +Савет: Ðаредбе љуÑке неће радити када ниÑте на меÑном ÑиÑтему датотека. Савет: Вратите текÑÑ‚ у живот Ñа „C-y“. @@ -68,7 +68,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Савет: Можете да иÑкључите Ñве захтеве за потврђивањем у изборнику „Опције/Потврђивање“. -Hint: Leap to frequently used directories in a single bound with C-\. +Савет: Скокните до чеÑто коришћених директоријума кориÑтећи „C-\“. Савет: Можете да одрадите безимени протокол преноÑа датотека Ñа „cd ftp://machine.edu“ @@ -84,4 +84,4 @@ Hint: Leap to frequently used directories in a single bound with C-\. Савет: ИÑецање и убацивање мишем може да захтева држање таÑтера помака -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Савет: За чеÑто поÑећиване фтп Ñтранице у врућем ÑпиÑку: укуцајте „C-\“. diff --git a/mcsrc/doc/hints/l10n/mc.hint.sv b/mcsrc/doc/hints/l10n/mc.hint.sv index 77d812f0..f70c882c 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.sv +++ b/mcsrc/doc/hints/l10n/mc.hint.sv @@ -8,15 +8,15 @@ Tips: Använd M-p och M-n för att komma Ã¥t kommandohistoriken. Tips: Behöver du skriva ett kontrolltecken? Använd Control-q och tecknet. -Är du trött pÃ¥ dessa meddelanden? Stäng av dem frÃ¥n Alternativ/Layout-menyn. +Tips: Är du trött pÃ¥ dessa meddelanden? Stäng av dem frÃ¥n Alternativ/Layout-menyn. Tips: Välja kataloger: Lägg till snedstreck i slutet av det matchande mönstret. Tips: Om din terminal saknar funktionstangenter, använd ESC+siffersekvens. -Tips: Hemsidan för GNU Midnight Commander: http://www.midnight-commander.org/ +Tips: Hemsidan för GNU Midnight Commander: https://www.midnight-commander.org -Tips: Skicka felrapporter till mc-devel@gnome.org +Tips: Skicka felrapporter till mc-devel@lists.midnight-commander.org Tips: Tab ändrar din nuvarande panel. @@ -24,13 +24,13 @@ Tips: VFS användbarhet: tryck enter pÃ¥ en tar-fil för att se dess innehÃ¥ll. Tips: Vi har ocksÃ¥ en trevlig manualsida. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Tips: Vill du ha navigation i Lynx-stil? Ställ in det i konfigurationsdialogen. Tips: %-makron fungerar även pÃ¥ kommandoraden. Tips: M-! tillÃ¥ter dig att exekvera program och se utskriften i filvisaren. -Fillistningsformatet kan anpassas; kör "man mc" för detaljer. +Tips: Fillistningsformatet kan anpassas; kör "man mc" för detaljer. Tips: %D/%T expanderar till de markerade filerna i katalogen mitt emot. @@ -52,7 +52,7 @@ Tips: Vill du göra komplexa sökningar? Använd kommandot Extern panelisering. Tips: För att ändra katalog under kommandoinmatning, använd M-c (snabb-cd). -Notera: Skalkommandon funkar inte när du är pÃ¥ ett icke-lokalt filsystem. +Tips: Skalkommandon funkar inte när du är pÃ¥ ett icke-lokalt filsystem. Tips: Ta tillbaks text frÃ¥n de döda med C-y. @@ -68,7 +68,7 @@ Tips: Du kan välja den externa filvisaren med skalvariabeln VIEWER eller PAGER. Tips: Du kan slÃ¥ av alla är-du-säker-frÃ¥gor i Alternativ/Konfirmation. -Hint: Leap to frequently used directories in a single bound with C-\. +Tips: Hoppa till ofta använda kataloger i ett steg med C-\. Tips: Du kan använda anonym FTP i mc genom att skriva 'cd ftp://dator.se' @@ -84,4 +84,4 @@ Tips: För att markera kataloger i markera-dialogrutan, lägg till snedstreck. Tips: Skift kan behöva hÃ¥llas ned för att använda klipp och klistra med musen. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Tips: Mata in ofta använda ftp-sajter i favoriter: tryck C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.sv_SE b/mcsrc/doc/hints/l10n/mc.hint.sv_SE deleted file mode 100644 index cabf8e6b..00000000 --- a/mcsrc/doc/hints/l10n/mc.hint.sv_SE +++ /dev/null @@ -1,87 +0,0 @@ -Hint: Use C-x t to copy tagged file names to the command line. - -Hint: Use C-x p to copy the current pathname to the command line. - -Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list. - -Hint: Use M-p and M-n to access the command history. - -Hint: Need to quote a character? Use Control-q and the character. - -Hint: Tired of these messages? Turn them off from the Options/Layout menu. - -Hint: Selecting directories: add a slash to the end of the matching pattern. - -Hint: If your terminal lacks functions keys, use the ESC+number sequence. - -Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/ - -Hint: Please send any bug reports to mc-devel@gnome.org - -Hint: Tab changes your current panel. - -Hint: VFS coolness: tap enter on a tar file to examine its contents. - -Hint: We also have a nice manual page. - -Hint: Do you want lynx-style navigation? Set it in the Configuration dialog. - -Hint: % macros work even on the command line. - -Hint: M-! will allow you to execute programs and see the output in the viewer. - -Hint: The file listing format can be customized; do "man mc" for details. - -Hint: %D/%T expands to the tagged files in the opposite directory. - -Hint: Want your plain shell? Press C-o, and get back to MC with C-o again. - -Hint: Setting the CDPATH variable can save you keystrokes in cd commands. - -Hint: If you want to see your .* files, say so in the Configuration dialog. - -Hint: Want to see your *~ backup files? Set it in the Configuration dialog. - -Hint: Completion works on all input lines in all dialogs. Just press M-Tab. - -Hint: On slow terminals the -s flag may help. - -Hint: Find File: you can work on the files found using the Panelize button. - -Hint: Want to do complex searches? Use the External Panelize command. - -Hint: To change directory halfway through typing a command, use M-c (quick cd). - -Note: Shell commands will not work when you are on a non-local file system. - -Hint: Bring text back from the dead with C-y. - -Hint: Are some of your keys not working? Look at Options/Learn keys. - -Hint: To look at the output of a command in the viewer, use M-! - -Hint: F13 (or Shift-F3) invokes the viewer in raw mode. - -Hint: You may specify the editor for F4 with the shell variable EDITOR. - -Hint: You may specify the external viewer with the shell vars VIEWER or PAGER. - -Hint: You can disable all requests for confirmation in Options/Confirmation. - -Hint: Leap to frequently used directories in a single bound with C-\. - -Hint: You can do anonymous FTP with mc by typing 'cd ftp://machine.edu' - -Hint: FTP is built in the Midnight Commander, check the File/FTP link menu. - -Hint: M-t changes quickly the listing mode. - -Hint: You can specify the username when doing ftps: 'cd ftp://user@machine.edu' - -Hint: You can browse RPM files by tapping enter on top of an rpm file. - -Hint: To mark directories on the select dialog box, append a slash. - -Hint: To use the mouse cut and paste may require holding the shift key - -Hint: Key frequently visited ftp sites in the hotlist: type C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.tr b/mcsrc/doc/hints/l10n/mc.hint.tr index 45b3fca0..a8dfa327 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.tr +++ b/mcsrc/doc/hints/l10n/mc.hint.tr @@ -14,9 +14,9 @@ Ä°pucu: EÄŸer klavyenizde fonksiyon tuÅŸları yoksa, ESC+numara kombinasyonunu kullanabilirsiniz. -Ä°pucu: GNU Midnight Commander web adresi: http://www.midnight-commander.org/ +Ä°pucu: GNU Midnight Commander web adresi: https://www.midnight-commander.org -Ä°pucu: Tüm hata raporlarını mc-devel@gnome.org adresine gönderebilirsiniz. +Ä°pucu: Tüm hata raporlarını mc-devel@lists.midnight-commander.org adresine gönderebilirsiniz. Ä°pucu: Tab aktif paneli deÄŸiÅŸtirir. @@ -24,7 +24,7 @@ Ä°pucu: Aynı zamanda güzel bir kullanım kılavuzumuz da var. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Ä°pucu: Lynx-tarzı dolaşım ister misiniz? Yapılandırma diyaloÄŸundan ayarlayabilirsiniz. Ä°pucu: % makroları komut satırında bile çalışır. @@ -52,7 +52,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Ä°pucu: Komut yazarken arada klasör deÄŸiÅŸtirmek için M-c (çabuk cd) kullanın. -Not: Yerel olmayan bir dosya sistemindeyseniz, kabuk komutları çalışmayacaktır. +Ä°pucu: Yerel olmayan bir dosya sistemindeyseniz, kabuk komutları çalışmayacaktır. Ä°pucu: C-y ile metni kurtarabilirsiniz. @@ -68,7 +68,7 @@ Not: Yerel olmayan bir dosya sistemindeyseniz, kabuk komutları çalışmayacakt Ä°pucu: Seçenekler/Onaylar menüsünden tüm onay isteklerini devre dışı bırakabilirsiniz. -Hint: Leap to frequently used directories in a single bound with C-\. +Ä°pucu: Sık kullanılan dizinlere tek hareketle geçmek için C-\ kullanabilirsiniz. Ä°pucu: mc ile anonim FTP baÄŸlantısı kurabilirsiniz. Örn: 'cd ftp://sunucu.edu.tr' @@ -84,4 +84,4 @@ Hint: Leap to frequently used directories in a single bound with C-\. Ä°pucu: Fare ile kopyalamak/yapıştırmak için Shift tuÅŸunu basılı tutmanız gerekebilir. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Ä°pucu: Sıklıklar ziyaret edilen FTP sitelerini kısayollara eklemek için C-\ kullanın. diff --git a/mcsrc/doc/hints/l10n/mc.hint.uk b/mcsrc/doc/hints/l10n/mc.hint.uk index 089bd700..d561e867 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.uk +++ b/mcsrc/doc/hints/l10n/mc.hint.uk @@ -1,12 +1,12 @@ -Підказка: ÐатиÑніть C-x t, щоб Ñкопіювати позначені файли в командний Ñ€Ñдок. +Підказка. ÐатиÑніть C-x t, щоб Ñкопіювати позначені файли в командний Ñ€Ñдок. -Підказка: ÐатиÑніть C-x p, щоб Ñкопіювати поточний шлÑÑ… у командний Ñ€Ñдок. +Підказка. ÐатиÑніть C-x p, щоб Ñкопіювати поточний шлÑÑ… у командний Ñ€Ñдок. -Підказка: ÐвтодоповненнÑ: натиÑніть M-Tab (Esc+Tab). Щоб отримати ÑпиÑок, натиÑніть двічі. +Підказка. ÐвтодоповненнÑ: натиÑніть M-Tab (Esc+Tab). Щоб отримати ÑпиÑок, натиÑніть двічі. -Підказка: ÐатиÑніть M-p Ñ– M-n, щоб отримати доÑтуп до Ñ–Ñторії команд. +Підказка. ÐатиÑніть M-p Ñ– M-n, щоб отримати доÑтуп до Ñ–Ñторії команд. -Підказка: Потрібно вÑтавити літерал? ÐатиÑніть Control+q, а потім літерал. +Підказка. Потрібно вÑтавити літерал? ÐатиÑніть Control+q, а потім літерал. Підказка. Ðабридли ці підказки? Вимкніть Ñ—Ñ… у вікні Параметри|Зовнішній виглÑд. @@ -14,9 +14,9 @@ Підказка. Якщо термінал не має функціональних клавіш, викориÑтовуйте комбінацію клавіш Esc+цифра. -Підказка. Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка Midnight Commander: http://www.midnight-commander.org/ +Підказка. Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка Midnight Commander: https://www.midnight-commander.org -Підказка. ÐадÑилайте Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки на адреÑу mc-devel@gnome.org +Підказка. ÐадÑилайте Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки на адреÑу mc-devel@lists.midnight-commander.org Підказка. Клавіша Tab змінює поточну панель. @@ -24,7 +24,7 @@ Підказка. Можна прочитати непогану Ñторінку поÑібника. -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +Підказка. Щоб увімкнути навігацію у Ñтилі Lynx, виберіть параметр у вікні Параметри|КонфігураціÑ. Підказка. МакроÑи % працюють навіть у командному Ñ€Ñдку. @@ -68,7 +68,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. Підказка. Можна вимкнути запити на Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ñ–Ð¹ у вікні Параметри|ПідтвердженнÑ. -Hint: Leap to frequently used directories in a single bound with C-\. +Підказка. Щоб перейти до чаÑто викориÑтовуваних каталогів, натиÑніть C-\. Підказка. Щоб відкрити анонімний FTP, введіть команду «cd ftp://machine.edu». @@ -84,4 +84,4 @@ Hint: Leap to frequently used directories in a single bound with C-\. Підказка. Щоб вирізати або вÑтавити за допомогою мишки, утримуйте клавішу Shift. -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +Підказка. Щоб зберегти чаÑто відвідувані FTP у ÑпиÑку каталогів, натиÑніть C-\. diff --git a/mcsrc/doc/hints/l10n/mc.hint.zh b/mcsrc/doc/hints/l10n/mc.hint.zh deleted file mode 100644 index ae7093c8..00000000 --- a/mcsrc/doc/hints/l10n/mc.hint.zh +++ /dev/null @@ -1,89 +0,0 @@ -æ示:使用 C-x t 來複製已é¸æ“‡çš„檔案å稱到指令列。 - -æ示:使用 C-x p 來將目å‰çš„路徑å稱複製到指令列。 - -æ示:補齊:使用 M-Tab(或 Esc+Tab)。按兩次看整個列表。 - -æ示:使用 M-p å’Œ M-n 來存å–指令使用紀錄。 - -æ示:è¦ä½¿ç”¨è·³å‡ºå­—元(escape cahracter)?å¯ä½¿ç”¨ Control-q å†åŠ ä¸Šè¦è¼¸å…¥çš„字元。 - -æ示:是å¦å°é€™äº›è¨Šæ¯åŽ­å€¦äº†ï¼Ÿå¯åœ¨ã€Œé¸é …/é…ç½®ã€é¸å–®ä¸­é—œé–‰å®ƒã€‚ - -æ示:é¸æ“‡ç›®éŒ„:在è¦æ‰¾å°‹çš„樣å¼å¾ŒåŠ å…¥ "/"。 - -æ示:如果你的終端機沒有功能éµï¼Œå¯ä»¥ä½¿ç”¨ ESC + 數字按éµã€‚ - -æ示:Midnight Commander URL:http://www.midnight-commander.org/ - -æ示:Midnight Commander 網é ï¼šhttp://www.midnight-commander.org/ - -æ示:請é€å‡ºéŒ¯èª¤å ±å‘Šåˆ° mc-devel@gnome.org - -æ示:Tab 會切æ›ä½¿ç”¨ä¸­çš„é¢æ¿ã€‚ - -æ示:VFS 的好處:在 tar 檔案上按 enter å¯æŸ¥çœ‹å®ƒçš„內容。 - -æ示:我們有一個ä¸éŒ¯çš„手冊é ã€‚ - -æ示:你是å¦æƒ³ä½¿ç”¨ lynx çš„ç€è¦½æ–¹å¼ï¼Ÿè«‹åˆ°è¨­å®šå°è©±çª—中設定。 - -æ示:% 巨集在指令列也å¯ä½¿ç”¨ã€‚ - -æ示:M-! å¯è®“你執行指令並在檢視器看到它的輸出。 - -æ示:你å¯è‡ªè¨‚檔案列表的格å¼ï¼›è¼¸å…¥ "man mc" å¯ç²å¾—更多細節。 - -æ示:%D/%T 會擴展æˆå¦ä¸€é‚Šé¢æ¿ä¸­å·²æ¨™è¨˜çš„檔案。 - -æ示:想使用平常的命令殼?å¯æŒ‰ C-o,å†æŒ‰ä¸€æ¬¡å°±æœƒè¿”回 MC。 - -æ示:設定 CDPATH 環境變數å¯ä»¥ä»¤ä½¿ç”¨ cd 指令時çœå»ä¸€é»žæŒ‰éµã€‚ - -æ示:若想看你的 .* 檔案,請到設定å°è©±çª—中設定。 - -æ示:想看你的 *~ 備份檔?請到設定å°è©±çª—中設定。 - -æ示:補齊å¯åœ¨ä»»ä½•å°è©±çª—中的任何輸入欄ä½ä¸­ä½¿ç”¨ã€‚åªè¦æŒ‰ä¸‹ M-Tab å°±å¯ä»¥äº†ã€‚ - -æ示:在緩慢的終端機裡使用 -s é¸é …或會有幫助。 - -æ示:æœå°‹æª”案:你å¯ä»¥ä½¿ç”¨ã€Œé¢æ¿åŒ–ã€é¸é …來處ç†æœå°‹åˆ°çš„檔案。 - -æ示:想處ç†è¼ƒè¤‡é›œçš„檔案æœå°‹ï¼Ÿå¯ä½¿ç”¨ã€Œå¤–部é¢æ¿åŒ–ã€æŒ‡ä»¤ã€‚ - -æ示:è¦åœ¨è¼¸å…¥æŒ‡ä»¤é€”早改變目錄,å¯ä½¿ç”¨ M-c(快速切æ›ç›®éŒ„)。 - -注æ„:在éžæœ¬æ©Ÿçš„檔案系統裡無法使用命令殼指令。 - -æ示:å¯ç”¨ C-y 將已刪除的文字é‡æ–°é¡¯ç¤ºå‡ºä¾†ã€‚ - -æ示:是å¦æœ‰äº›æŒ‰éµç„¡æ³•ä½¿ç”¨ï¼Ÿå¯çœ‹çœ‹ã€Œé¸é …/èªè­˜æŒ‰éµã€ä¸­çš„按éµã€‚ - -æ示:è¦åœ¨æª¢è¦–器裡看到指令的輸出,使用 M-! - -æ示:F13(或 Shift-F3)會使用原始模å¼é–‹å•Ÿæª¢è¦–器。 - -æ示:你å¯ä»¥ä½¿ç”¨ç’°å¢ƒè®Šæ•¸ EDITOR 來指定按下 F4 後開啟的編輯器。 - -æ示:你å¯ä»¥ä½¿ç”¨ç’°å¢ƒè®Šæ•¸ PAGER 來指定外部的檢視器。 - -æ示:你å¯ä»¥åœ¨ã€Œé¸é …/確èªã€è£¡é—œé–‰æ‰€æœ‰ç¢ºèªçš„è¦æ±‚。 - -æ示:使用 C-\ å¯ä»¥å³æ™‚跳到經常使用的目錄。 - -æ示:你å¯ä»¥åœ¨ mc 使用無åæ°æ¨¡å¼ FTP,方法是輸入 'cd ftp://machine.edu' - -æ示:FTP 是 Midnight Commander 的內建功能,請檢查「檔案/FTP 連線ã€é¸å–®ã€‚ - -æ示:M-t å¯å¿«é€Ÿåœ°åˆ‡æ›åˆ—表模å¼ã€‚ - -æ示:你å¯ä»¥åœ¨ä½¿ç”¨ ftp 時指定使用者å稱,例如:'cd ftp://user@machine.edu' - -æ示:你å¯ä»¥åœ¨ rpm 檔上按 enter 來ç€è¦½ rpm 裡的檔案。 - -æ示:在é¸æ“‡å°è©±ç›’中é¸å–目錄時,è¦åœ¨å¾Œé¢åŠ ä¸€ "/"。 - -æ示:è¦ä½¿ç”¨æ»‘鼠剪貼功能需è¦ä½ æŒ‰ä¸‹ shift éµ - -æ示:è¦å°‡å¸¸åˆ°çš„網站輸入常用列表裡:éµå…¥ C-\。 diff --git a/mcsrc/doc/hints/l10n/mc.hint.zh_CN b/mcsrc/doc/hints/l10n/mc.hint.zh_CN index 2190261f..63ed69e0 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.zh_CN +++ b/mcsrc/doc/hints/l10n/mc.hint.zh_CN @@ -14,9 +14,9 @@ æ示:如果你的终端机没有功能键,å¯ä»¥ä½¿ç”¨ ESC + 数字按键。 -æ示:Midnight Commander 网页:http://www.midnight-commander.org/ +æ示:Midnight Commander 网页:https://www.midnight-commander.org -æ示:请å‘é€é”™è¯¯æŠ¥å‘Šåˆ° mc-devel@gnome.org +æ示:请å‘é€é”™è¯¯æŠ¥å‘Šåˆ° mc-devel@lists.midnight-commander.org æ示:Tab 会切æ¢ä½¿ç”¨ä¸­çš„é¢æ¿ã€‚ @@ -24,7 +24,7 @@ æ示:我们有一个ä¸é”™çš„手册页。 -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +æ示:你是å¦æƒ³ä½¿ç”¨ Lynx çš„æµè§ˆæ–¹å¼ï¼Ÿè¯·åˆ°è®¾ç½®å¯¹è¯çª—中设置。 æ示:% å®åœ¨å‘½ä»¤è¡Œä¹Ÿå¯ä½¿ç”¨ã€‚ @@ -52,7 +52,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. æ示:è¦åœ¨è¾“入命令时改å˜ç›®å½•ï¼Œå¯ä½¿ç”¨ M-c(快速切æ¢ç›®å½•ï¼‰ã€‚ -注æ„:在éžæœ¬æœºçš„文件系统里无法使用 Shell 指令。 +æ示:在éžæœ¬æœºçš„文件系统里无法使用 Shell 指令。 æ示:å¯ç”¨ C-y 将已删除的文本é‡æ–°æ˜¾ç¤ºå‡ºæ¥ã€‚ @@ -68,7 +68,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. æ示:你å¯ä»¥åœ¨ã€Œé€‰é¡¹/确认ã€é‡Œå…³é—­æ‰€æœ‰ç¡®è®¤çš„è¦æ±‚。 -Hint: Leap to frequently used directories in a single bound with C-\. +æ示:使用 C-\ å¯ä»¥å³æ—¶è·³åˆ°ç»å¸¸ä½¿ç”¨çš„目录。 æ示:你å¯ä»¥åœ¨ mc 使用匿å模å¼çš„ FTP,方法是输入 'cd ftp://machine.edu' @@ -84,4 +84,4 @@ Hint: Leap to frequently used directories in a single bound with C-\. æ示:è¦ä½¿ç”¨é¼ æ ‡å‰ªè´´åŠŸèƒ½éœ€è¦ä½ æŒ‰ä¸‹ shift é”® -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +æ示:è¦å°†å¸¸åˆ°çš„网站输入常用列表里:键入 C-\。 diff --git a/mcsrc/doc/hints/l10n/mc.hint.zh_TW b/mcsrc/doc/hints/l10n/mc.hint.zh_TW index 02cba1c0..305ab28d 100644 --- a/mcsrc/doc/hints/l10n/mc.hint.zh_TW +++ b/mcsrc/doc/hints/l10n/mc.hint.zh_TW @@ -14,9 +14,9 @@ æ示: 若您的終端機沒有功能éµï¼Œå¯ä½¿ç”¨ã€ESC+數字éµã€‘來代替。 -æ示: GNU Midnight Commander 的網é : http://www.midnight-commander.org/ +æ示:Midnight Commander 网页:https://www.midnight-commander.org -æ示: 任何錯誤報告請傳é€è‡³ mc-devel@gnome.org +æ示:请å‘é€é”™è¯¯æŠ¥å‘Šåˆ° mc-devel@lists.midnight-commander.org æ示: Tab å¯åˆ‡æ›ä½¿ç”¨ä¸­çš„é¢æ¿ã€‚ @@ -24,7 +24,7 @@ æ示: 我們有一個很棒的手冊é ã€‚ -Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. +æ示:你是å¦æƒ³ä½¿ç”¨ Lynx çš„æµè§ˆæ–¹å¼ï¼Ÿè¯·åˆ°è®¾ç½®å¯¹è¯çª—中设置。 æ示: % 巨集也å¯åœ¨å‘½ä»¤åˆ—中使用。 @@ -52,7 +52,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. æ示: è¦åœ¨è¼¸å…¥æŒ‡ä»¤æ™‚中途改變目錄,å¯ä½¿ç”¨ M-c 指令 (快速的 cd) -注æ„: 無法在éžæœ¬åœ°ç«¯çš„檔案系統中使用 Shell 指令。 +æ示:在éžæœ¬æœºçš„文件系统里无法使用 Shell 指令。 æ示: å¯ä½¿ç”¨ C-y 將已刪除的文字é‡æ–°é¡¯ç¤ºå‡ºä¾†ã€‚ @@ -68,7 +68,7 @@ Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog. æ示: 您å¯ä»¥åœ¨ã€é¸é …/確èªã€‘中關閉所有的確èªè«‹æ±‚。 -Hint: Leap to frequently used directories in a single bound with C-\. +æ示: å¯ä½¿ç”¨ C-\ 跳轉到常用的目錄。 æ示: 您å¯ä»¥åœ¨ mc 中使用匿å模å¼çš„ FTP,方法是輸入 'cd ftp://machine.edu' @@ -84,4 +84,4 @@ Hint: Leap to frequently used directories in a single bound with C-\. æ示: è¦ä½¿ç”¨æ»‘鼠來剪下和貼上需åŒæ™‚æŒ‰ä½ Shift éµã€‚ -Hint: Key frequently visited ftp sites in the hotlist: type C-\. +æ示: è‹¥è¦å°‡å¸¸ç”¨çš„ ftp 站點加入至常用列表中請按 C-\ diff --git a/mcsrc/doc/hints/mc.hint b/mcsrc/doc/hints/mc.hint index bc59c57b..7a655801 100644 --- a/mcsrc/doc/hints/mc.hint +++ b/mcsrc/doc/hints/mc.hint @@ -14,9 +14,9 @@ Hint: Selecting directories: add a slash to the end of the matching pattern. Hint: If your terminal lacks functions keys, use the ESC+number sequence. -Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/ +Hint: The homepage of GNU Midnight Commander: https://www.midnight-commander.org -Hint: Please send any bug reports to mc-devel@gnome.org +Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org Hint: Tab changes your current panel. @@ -52,7 +52,7 @@ Hint: Want to do complex searches? Use the External Panelize command. Hint: To change directory halfway through typing a command, use M-c (quick cd). -Note: Shell commands will not work when you are on a non-local file system. +Hint: Shell commands will not work when you are on a non-local file system. Hint: Bring text back from the dead with C-y. @@ -85,4 +85,3 @@ Hint: To mark directories on the select dialog box, append a slash. Hint: To use the mouse cut and paste may require holding the shift key Hint: Key frequently visited ftp sites in the hotlist: type C-\. - diff --git a/mcsrc/doc/man/date-of-man-include.am b/mcsrc/doc/man/date-of-man-include.am index 3a4e5996..c6b1e692 100644 --- a/mcsrc/doc/man/date-of-man-include.am +++ b/mcsrc/doc/man/date-of-man-include.am @@ -1,12 +1,13 @@ SED_PARAMETERS = \ -e "s/%DATE_OF_MAN_PAGE%/$${MAN_DATE}/g" \ -e "s/%MAN_VERSION%/@MAN_VERSION@/g" \ - -e "s{%prefix%{@prefix@{g" \ -e "s{%sysconfdir%{@sysconfdir@{g" \ - -e "s{%libexecdir%{@libexecdir@{g" + -e "s{%libexecdir%{@libexecdir@{g" \ + -e "s{%pkglibexecdir%{$(libexecdir)/@PACKAGE@{g" \ + -e "s{%pkgdatadir%{$(datadir)/@PACKAGE@{g" MAN_DATE_CMD = \ - LC_ALL=$(DATE_LANG) @PERL@ -CS -MPOSIX -e '\ + LC_ALL=$(DATE_LANG) @PERL_FOR_BUILD@ -CS -MPOSIX -e '\ @fi=lstat("'$${MAN_FILE}'"); \ print POSIX::strftime("$(DATE_FORMAT)", localtime($$fi[9]));' 2>/dev/null diff --git a/mcsrc/doc/man/es/mc.1.in b/mcsrc/doc/man/es/mc.1.in index 3a7e72e7..b2c3db7e 100644 --- a/mcsrc/doc/man/es/mc.1.in +++ b/mcsrc/doc/man/es/mc.1.in @@ -1509,80 +1509,15 @@ comando cd interno\&. .\"NODE " Edit Extension File" .SH " Editar el Archivo de Extensiones" Abre el archivo -.I ~/.config/mc/mc.ext -en nuestro editor. El administrador puede optar por editar, en su lugar, -el archivo de extensiones del sistema -.IR %pkgdatadir%/mc.ext . -El formato del archivo es como sigue: -.PP -Todas las líneas que empiecen con # o estén vacías serán ignoradas. -.PP -Las líneas que comiencen en la primera columna deberán tener el siguiente formato: -.PP -.IR PalabraClave/descripción , -i. e. todo lo que vaya tras la «/» hasta el fin de línea será la -.IR descripción . -.PP -Las palabras clave son: -.TP -.I shell -\- -.I Descripción -será una extensión (sin comodines). Un archivo coincide si su nombre acaba en -.IR Descripción . -Por ejemplo: -.I shell/.tar -corresponde a -.IR *.tar . -.TP -.I regex -\- -.I Descripción -es una expresión regular. Un archivo coincide si la salida de -.I file %f -encaja con la expresión regular -.I Descripción -(quitando la parte inicial «nombre de archivo:») -.TP -.I default -\- Coincide para cualquier archivo. Se ignora la -.IR descripción . -.TP -.I include -\- Incorpora una sección común. -.I Descripción -es el nombre de la sección. -.PP -El resto de líneas deben comenzar con un espacio o tabulador y usar el -siguiente formato: -.I PalabraClave=comando -(sin espacios alrededor de «=»), donde -.I PalabraClave -debe ser: -.I Open -(si el usuario pulsa -.I Intro -o dos veces el ratón), -.I View -(F3), -.I Edit -(F4) o -.I Include -(para agregar reglas de la sección común). -.I Comando -es cualquier comando en línea del shell, con -.\"LINK2" -sustitución de macro -.\"Macro Substitution" -simple. -.PP -Las reglas se aplican en estricto orden. Aunque se produzca una -coincidencia, si la acción solicitada no está disponible, se ignora y la -búsqueda continúa (por ejemplo, si un archivo encaja con dos entradas, -pero la acción Ver no está definida en la primera, al pulsar F3, se -ejecuta la acción Ver de la segunda). Por eso, como último recurso -.I default -sí debe incluir todas las acciones. +.I ~/.config/mc/mc.ext.ini +en nuestro editor. +If this file does not exist and you are not root, it will be copied from +.IR %sysconfdir%/mc/mc.ext.ini . +If you are root, you can choose the file to edit: user's +.I ~/.config/mc/mc.ext.ini +or system\-wide +.IR %sysconfdir%/mc/mc.ext.ini . +The format of this file is described in detail in it. .\"NODE " Background jobs" .SH " Trabajos en Segundo Plano" Nos permite controlar el estado de cualquier proceso de Midnight Commander @@ -2900,7 +2835,7 @@ Buscar la próxima coincidencia. .PP .B F8 Intercambia entre el modo crudo y procesado: esto mostrará el archivo como se encuentra en disco -o si se ha especificado un filtro de visualización en el archivo mc.ext, entonces +o si se ha especificado un filtro de visualización en el archivo mc.ext.ini, entonces la salida filtrada. El modo actual es siempre el contrario al mostrado en la etiqueta del botón, en tanto que el botón muestra el modo en el que entraremos con la pulsación de esa tecla. @@ -3122,7 +3057,7 @@ de directorio empleando la siguiente sintaxis: .PP .I /archivo.tar/utar://[directorio\-dentro\-tar] .PP -El archivo mc.ext también ofrece un atajo para los archivos tar, esto quiere decir +El archivo mc.ext.ini también ofrece un atajo para los archivos tar, esto quiere decir que normalmente basta con apuntar a un archivo tar y pulsar Intro para entrar en el archivo tar. Véase la sección .\"LINK2" @@ -4009,7 +3944,7 @@ ya estemos ahí, en cuyo caso moverá la selección al último nombre de archivo Si esta variable está activada (por defecto lo está) se recurrirá al comando «file» para reconocer los tipos de archivo referidos en el archivo .\"LINK2" -mc.ext\&. +mc.ext.ini\&. .\"Edit Extension File" .TP .I xtree_mode @@ -4163,11 +4098,11 @@ que de estar definida se emplearía en vez de %pkgdatadir%. .IP Archivo de ayuda. .PP -.I %pkgdatadir%/mc.ext +.I %pkgdatadir%/mc.ext.ini .IP Archivo de extensiones por defecto del sistema. .PP -.I ~/.config/mc/mc.ext +.I ~/.config/mc/mc.ext.ini .IP Archivo de usuario de extensiones y configuración de visor y editor. Si está presente prevalece sobre el contenido de los archivos del sistema. @@ -4242,7 +4177,7 @@ terminfo(1), gpm(1). .PP .nf La página web de Midnight Commander está en: - http://www.midnight\-commander.org/ + https://www.midnight\-commander.org/ .fi .PP La presente documentación recoge información relativa a la versión 4.8 @@ -4263,7 +4198,7 @@ distribución. Véase el archivo "TODO" en la distribución para saber qué falta por hacer. .PP Para informar de problemas con el programa, introducir una nueva incidencia -en http://www.midnight\-commander.org/. +en https://www.midnight\-commander.org/. .PP Se debe proporcionar una descripción detallada del problema, la versión del programa (que se obtiene con diff --git a/mcsrc/doc/man/hu/mc.1.in b/mcsrc/doc/man/hu/mc.1.in index cceb7372..5f26f622 100644 --- a/mcsrc/doc/man/hu/mc.1.in +++ b/mcsrc/doc/man/hu/mc.1.in @@ -1299,66 +1299,16 @@ A cd belsÅ‘ parancs leírásánál. .\"NODE " Edit Extension File" .SH " Társítások" -Ez az ~/.config/mc/mc.ext szerkesztéséhez segítségül fogja hívni a -szövegszerkesztÅ‘det. A fájl formátuma a következÅ‘ (a formátum a 3.0\-ás -verzióval megváltozott): -.PP -Minden # jellel kezdÅ‘dÅ‘ sor, vagy üres sor kommentárnak tekinthetÅ‘. -.PP -A sorok az elsÅ‘ rovatban látható formátumnak megfelelÅ‘en kezdÅ‘dnek: -.PP -.IR kulcsszó/desc , -pl. akármi a -.I kulcsszó/ -után úgy, hogy a sor vége karakter elÅ‘tt a -.I desc -áll kulcsszó lehet: -.PP -.I shell -.IP -bármely kiterjesztés esetén, amely ponttal kezdÅ‘dik (nem szükséges a -helyettesítÅ‘ karaktert beírni, például: .tar az *.tar párja) -.PP -.I regex -.IP -(szabványos kifejezés; regular expression esetén) -.PP -.I type -.IP -(azokra a fájlokra illeszkedik, amelyek tartalmazzák a `file %f` -szöveget. A fájlnév a `file %f` résztÅ‘l törlÅ‘dik) -.PP -.I default -.IP -(illeszkedik bármely fájlra, kiterjesztésétÅ‘l függetlenül) -.PP -A többi sor kezdÅ‘dhet szóközzel, vagy tabulátorral, a formátumuk pedig a -következÅ‘: -.PP -.I keyword=command -(szóközt nem szabad az egyenlÅ‘ségjel mellé írni), ahol a -.I kulcsszó -lehet: -.PP -.I Open -(ha a felhasználó lenyomja az Enter\-t, vagy duplán kattint), -.I View -(F3) és -.I Edit -(F4). -.PP -.I command -ez bármely egysoros shell parancs lehet, az egyszerű -.\"LINK2" -Macro HelyettesítÅ‘vel\&. -.\"Macro Substitution" -.PP -A feladatokatokat fentrÅ‘l lefelé értékeljük ki (tehát a sorrend nagyon -fontos). Ha néhány műveletet keresünk, a keresés úgy folytatódik, -mintha ez a cél nem létezne (pl. ha a fájl tartalmazza az elsÅ‘ és a -második bejegyzést és a Nézet művelet hiányzik az elsÅ‘bÅ‘l, akkor az F3 -lenyomására a Nézet művelet a második bejegyzést fogja használni. -Alapértelmezésben végrehajt minden műveletet. +Ez az +.I ~/.config/mc/mc.ext.ini +szerkesztéséhez segítségül fogja hívni a szövegszerkesztÅ‘det. +If this file does not exist and you are not root, it will be copied from +.IR %sysconfdir%/mc/mc.ext.ini . +If you are root, you can choose the file to edit: user's +.I ~/.config/mc/mc.ext.ini +or system\-wide +.IR %sysconfdir%/mc/mc.ext.ini . +The format of this file is described in detail in it. .\"NODE " Background jobs" .SH " Háttérmunkák" Ezzel szabályozhatod néhány Commander háttérfolyamat állapotát (csak a @@ -2393,7 +2343,7 @@ A következÅ‘ egyezÅ‘t keresi. .PP .B F8 Vált a Nyers és Feldolgozott mód között: ez a fájlt, úgy mutatja meg, -ahogy megtalálta, vagy, ha folyamatszűrÅ‘ meg van adva az mc.ext fájlban, +ahogy megtalálta, vagy, ha folyamatszűrÅ‘ meg van adva az mc.ext.ini fájlban, akkor a szűrÅ‘ kimenetét. A Jelenlegi mód mindig a másik, mit amit a gomb felirata mutat. .PP @@ -2663,7 +2613,7 @@ következÅ‘ szintaktikájú parancs segítségével tudod átváltani könyvtár .PP .I /filename.tar:utar/[dir\-inside\-tar] .PP -Az mc.ext fájl már tartalmaz gyorsbillentyűket a tar fájlokhoz, ezért +Az mc.ext.ini fájl már tartalmaz gyorsbillentyűket a tar fájlokhoz, ezért csak rá kell mutatnod a tar fájlra és le kell nyomnod az entert ahhoz, hogy beléphess a tar fájlba, ehhez nézd meg a .\"LINK2" @@ -3153,11 +3103,11 @@ ez vissza fog állítódni a /usr könyvtárra. .IP A program súgó fájlja. .PP -.I %pkgdatadir%/mc.ext +.I %pkgdatadir%/mc.ext.ini .IP Az alapértelmezett rendszerszintű kiterjesztés fájl. .PP -.I ~/.config/mc/mc.ext +.I ~/.config/mc/mc.ext.ini .IP A felhasználó saját kiterjesztései, nézet beállítások és szerkesztési beállítások. Ezek felülbírálják a rendszerszintű fájl bejegyzéseit, ha @@ -3230,7 +3180,7 @@ zsh(1). .nf A Midnight Commander World Wide Web oldalának címe a következÅ‘: - http://www.midnight\-commander.org/ + https://www.midnight\-commander.org/ .fi .\"NODE "AUTHORS" .SH "SzerzÅ‘k" @@ -3268,7 +3218,7 @@ Nézd meg a disztribúció TODO fájlát, hogy megtudhasd, milyen teendÅ‘k vannak még vissza. .PP Ha a programmal kapcsolatos problémád van, akkor azt küld el az alábbi -levélcímre: mc\-devel@gnome.org. +levélcímre: mc\-devel@lists.midnight-commander.org. .PP Gondoskodj arról, hogy tartalmazza a hiba minél pontosabb meghatározását, a futtatott program verziószámát (az mc \-V parancs meg diff --git a/mcsrc/doc/man/it/mc.1.in b/mcsrc/doc/man/it/mc.1.in index 03b620fe..3a458934 100644 --- a/mcsrc/doc/man/it/mc.1.in +++ b/mcsrc/doc/man/it/mc.1.in @@ -1314,60 +1314,14 @@ comando cd interno\&. .\"NODE " Edit Extension File" .SH " Modifica file estensioni" Questo comando invocherà l'editor sul file -.IR ~/.config/mc/mc.ext . -Il fomato di questo file è il seguente (il formato è cambiato dalla -versione 3.0): -.PP -Tutte le righe che iniziano per # vengono ignorate. -.PP -Le righe che cominciano dalla prima colonna devono avere il seguente formato: -.PP -.IR parolachiave/descrizione , -i.e. qualsiasi cosa dopo -.I parolachiave/ -fino al fine riga è -.I descrizione -.PP -parolachiave può essere: -.TP -.I shell -(allora descrizione è qualsiasi estensione (no caratteri jolly), -cioè corrisponde a tutti i file *descrizione. Esempio: .tar corrisponde a *.tar) -.TP -.I regex -(descrizione è un'espressione regolare) -.TP -.I type -(file corrisponde se `file %f` corrisponde all'espressione regolare descrizione -(nome del file: a partire da `file %f` viene rimosso)) -.TP -.I default -(corrisponde a qualsiasi file indipendentemente dalla descrizione) -.PP -Le altre linee devono cominciare con uno spazio o una tabulazione e devono essere nel formato: -.I parolachiave=comando -(senza spazi intorno a =), dove -.I parolachiave -deve essere: -.I Open -(se l'utente preme Invio o fa doppio clic), -.I View -(F3), -.I Edit -(F4). -.I command -è qualsiasi comando shell di una riga, con la semplice -.\"LINK2" -sostituzione macro\&. -.\"Macro Substitution" -.PP -Gli obiettivi sono valutati dalla cima al fondo, perciò l'ordine è -importante. Se alcune azioni mancano, la ricerca continua come se -la regola non corrispondesse, cioè se un file corrisponde alla prima e -alla seconda voce e manca la voce View in cima, allora premendo F3 verrà -usata l'azione View della seconda voce. -.I Normalmente -dovrebbero corrispondere tutte le azioni. +.IR ~/.config/mc/mc.ext.ini . +If this file does not exist and you are not root, it will be copied from +.IR %sysconfdir%/mc/mc.ext.ini . +If you are root, you can choose the file to edit: user's +.I ~/.config/mc/mc.ext.ini +or system\-wide +.IR %sysconfdir%/mc/mc.ext.ini . +The format of this file is described in detail in it. .\"NODE " Background jobs" .SH " Processi in background" Questo comando permette di controllare lo stato di ogni processo @@ -2425,7 +2379,7 @@ un'espressione di ricerca, altrimenti trova la prossima occorrenza. .PP .B F8 Cambia tra modalità Normale/Filtrata: questo mostrerà il file come si -trova su disco o se è stato specificato un filtro nel file mc.ext, come +trova su disco o se è stato specificato un filtro nel file mc.ext.ini, come esce dal filtro. La modalità corrente è sempre quella diversa da quella mostrata dall'etichetta del tasto, dato che il bottone rappresenta la modalità nella quale si entra premendolo. @@ -2672,7 +2626,7 @@ al file tar usare la seguente sintassi: .PP .I /nomefile.tar/utar://[dir\-dentro\-tar] .PP -Il file mc.ext già fornisce un collegamento per il file tar; ciò +Il file mc.ext.ini già fornisce un collegamento per il file tar; ciò significa che normalmente basta selezionare un file tar e premere invio per entrare nel file tar, vedere la sezione .\"LINK2" @@ -3082,7 +3036,7 @@ pannello. Se questa variabile è abilitata (valore predefinito) userà il comando file per trovare delle corrispondenze sui tipi di file elencati nel .\"LINK2" -file mc.ext\&. +file mc.ext.ini\&. .\"Edit Extension File" .TP .I xtree_mode @@ -3146,11 +3100,11 @@ e se la variabile non è impostata, passerà alla directory %pkgdatadir% . .IP Il file di aiuto per il programma. .PP -.I %pkgdatadir%/mc.ext +.I %pkgdatadir%/mc.ext.ini .IP Il file delle estensioni di sistema predefinito. .PP -.I ~/.config/mc/mc.ext +.I ~/.config/mc/mc.ext.ini .IP Le estensioni dell'utente, la configurazione del visualizzatore e dell'editor di file. Se presenti, questi file si sovrappongono ai file di @@ -3219,7 +3173,7 @@ tcsh(1), zsh(1). .PP .nf La pagina Web del Midnight Commander: - http://www.midnight\-commander.org/ + https://www.midnight\-commander.org/ .fi .\"NODE "AUTHORS" .SH "AUTORI" @@ -3260,7 +3214,8 @@ Vedere il file TODO nella distribuzione per informazioni su quello che rimane ancora da fare. .PP Se si vuole fare un rapporto di un problema nel programma, si prega di -spedire un messaggio di posta a questo indirizzo: mc\-devel@gnome.org. +spedire un messaggio di posta a questo indirizzo: +mc\-devel@lists.midnight-commander.org. .PP Nel rapporto è necessario fornire una descrizione dettagliata del baco, la versione del programma (mc \-v mostra quest'informazione), il sistema diff --git a/mcsrc/doc/man/mc.1.in b/mcsrc/doc/man/mc.1.in index 177934a3..e6aad0e2 100644 --- a/mcsrc/doc/man/mc.1.in +++ b/mcsrc/doc/man/mc.1.in @@ -945,9 +945,27 @@ menu (option .SH " Filter..." The filter command allows you to specify a shell pattern (for example .BR "*.tar.gz" ) -which the files must match to be shown. Regardless -of the filter pattern, the directories and the links to directories -are always shown in the directory panel. +which the files and directories must match to be shown. +The +.\"LINK2" +input line +.\"Input Line Keys" +allow enter the pattern of file/directory names that will be shown +in the panel. +.PP +When +.I Files only +checkbox is on, only files will be matched to the filter, and all +directories will be shown. Otherwise, as files as directories will +be filtered. When +.I Shell Patterns +checkbox is on, the regular expression is much like the filename globbing +in the shell (* standing for zero or more characters and ? standing +for one character). Otherwise, the matching of files/directoris is done +with normal regular expressions (see ed(1)). When +.I Case sensitive +checkbox is on, the filtering will be case sensitive characters. Otherwise, +the case will be ignored. .\"NODE " Reread" .SH " Reread" The reread command reload the list of files in the directory. It is @@ -1465,87 +1483,14 @@ description. .\"NODE " Edit Extension File" .SH " Edit Extension File" This will invoke your editor on the file -.IR ~/.config/mc/mc.ext . -The format of this file following: -.PP -All lines starting with # or empty lines are thrown away. -.PP -Lines starting in the first column should have following format: -.PP -.IR keyword/expr , -i.e. everything after the slash until new line is -.IR expr . -.PP -.I keyword -can be: -.TP -.I shell -\- -.I expr -is an extension (no wildcards). File matches it its name ends -with -.IR expr . -Example: -.I shell/.tar -matches -.IR *.tar . -.TP -.I regex -\- -.I expr -is a regular expression. File matches if its name matches the regular -expression. -.TP -.I directory -\- -.I expr -is a regular expression. File matches if it is a directory and its name -matches the regular expression. -.TP -.I type -\- -.I expr -is a regular expression. File matches if the output of -.I file %f -without the initial "filename:" part matches regular expression -.IR expr . -.TP -.I default -\- matches any file. -.I expr -is ignored. -.TP -.I include -\- denotes a common section. -.I expr -is the name of the section. -.PP -Other lines should start with a space or tab and should be of the format: -.I keyword=command -(with no spaces around =), where -.I keyword -should be: -.I Open -(invoked on Enter or double click), -.I View -(F3), -.I Edit -(F4) or -.I Include -(to add rules from the common section). -.I command -is any one\-line shell command, with the simple -.\"LINK2" -macro substitution\&. -.\"Macro Substitution" -.PP -Rules are matched from top to bottom, thus the order is important. If -the appropriate action is missing, search continues as if this rule -didn't match (i.e. if a file matches the first and second entry and View -action is missing in the first one, then on pressing F3 the View action -from the second entry will be used). -.I default -should match all the actions. +.IR ~/.config/mc/mc.ext.ini . +If this file does not exist and you are not root, it will be copied from +.IR %sysconfdir%/mc/mc.ext.ini . +If you are root, you can choose the file to edit: user's +.I ~/.config/mc/mc.ext.ini +or system\-wide +.IR %sysconfdir%/mc/mc.ext.ini . +The format of this file is described in detail in it. .\"NODE " Background jobs" .SH " Background Jobs" This lets you control the state of any background Midnight Commander @@ -2957,7 +2902,7 @@ and vice versa. .TP .B F8 Toggle Raw/Parsed mode: This will show the file as found on disk or if -a processing filter has been specified in the mc.ext file, then the +a processing filter has been specified in the mc.ext.ini file, then the output from the filter. Current mode is always the other than written on the button label, since on the button is the mode which you enter by that key. @@ -3262,7 +3207,7 @@ tar file by using the following syntax: .PP .I /filename.tar/utar://[dir\-inside\-tar] .PP -The mc.ext file already provides a shortcut for tar files, this means +The mc.ext.ini file already provides a shortcut for tar files, this means that usually you just point to a tar file and press return to enter into the tar file, see the .\"LINK2" @@ -4142,7 +4087,7 @@ the panel. If this variable is on (the default) it will spawn the file command to match the file types listed on the .\"LINK2" -mc.ext file\&. +mc.ext.ini file\&. .\"Edit Extension File" .TP .I xtree_mode @@ -4290,11 +4235,11 @@ environment variable. If it's set, its value is used instead of .IP The help file for the program. .PP -.I %pkgdatadir%/mc.ext +.I %pkgdatadir%/mc.ext.ini .IP The default system\-wide extensions file. .PP -.I ~/.config/mc/mc.ext +.I ~/.config/mc/mc.ext.ini .IP User's own extension, view configuration and edit configuration file. They override the contents of the system wide files if present. @@ -4365,7 +4310,7 @@ tcsh(1), zsh(1). .PP .nf Midnight Commander's page on the World Wide Web: - http://www.midnight\-commander.org/ + https://www.midnight\-commander.org/ .fi .\"NODE "AUTHORS" .SH "AUTHORS" @@ -4377,7 +4322,7 @@ See the file TODO in the distribution for information on what remains to be done. .PP If you want to report a problem with the program, please create bugreport -at http://www.midnight\-commander.org/. +at https://www.midnight\-commander.org/. .PP Provide a detailed description of the bug, the version of the program you are running diff --git a/mcsrc/doc/man/mcedit.1.in b/mcsrc/doc/man/mcedit.1.in index 470481c1..2869af70 100644 --- a/mcsrc/doc/man/mcedit.1.in +++ b/mcsrc/doc/man/mcedit.1.in @@ -237,12 +237,12 @@ where equal is symbol "=" goes to next function in navigation list supports syntax highlighting. This means that keywords and contexts (like C comments, string constants, etc) are highlighted in different colors. The following section explains the format of the file -.BR ~/.config/mc/mcedit/Syntax . +.BR ~/.local/share/mc/syntax/Syntax . If this file is missing, system\-wide .B %pkgdatadir%/syntax/Syntax is used. The file -.B ~/.config/mc/mcedit/Syntax +.B ~/.local/share/mc/syntax/Syntax is rescanned on opening of every new editor file. The file contains rules for highlighting, each of which is given on a separate line, and define which keywords will be highlighted with what color. @@ -631,7 +631,9 @@ affect all users, whether they have ~/.config/mc/ini or not. .I %pkgdatadir%/syntax/* .IP The default system\-wide syntax files for mcedit, used only if -the corresponding user's own ~/.local/share/mc/mcedit/ file is missing. +the corresponding user's own file in +.B ~/.local/share/mc/syntax/ +is missing. .PP .I ~/.config/mc/ini .IP @@ -656,4 +658,4 @@ cooledit(1), mc(1), gpm(1), terminfo(1), scanf(3). Paul Sheer (psheer@obsidian.co.za) is the original author of Midnight Commander's internal editor. .SH BUGS -Bugs should be reported to http://www.midnight\-commander.org/. +Bugs should be reported to https://www.midnight\-commander.org/. diff --git a/mcsrc/doc/man/mcview.1.in b/mcsrc/doc/man/mcview.1.in index f94c9cb4..89dc7fa3 100644 --- a/mcsrc/doc/man/mcview.1.in +++ b/mcsrc/doc/man/mcview.1.in @@ -92,4 +92,4 @@ http://ftp.midnight\-commander.org/. mc(1), mcedit(1) .PP .SH BUGS -Bugs should be reported to http://www.midnight\-commander.org/. +Bugs should be reported to https://www.midnight\-commander.org/. diff --git a/mcsrc/doc/man/pl/mc.1.in b/mcsrc/doc/man/pl/mc.1.in index da8db3ca..344c4b26 100644 --- a/mcsrc/doc/man/pl/mc.1.in +++ b/mcsrc/doc/man/pl/mc.1.in @@ -1095,65 +1095,16 @@ przemieszczanie. .PP .\"NODE " Edit Extension File" .SH " Edycja rozszerzeÅ„ pliów (Edit Extension File)" -Ta komenda wywoÅ‚a twój edytor na plik ~/.config/mc/mc.ext. Format tego pliku jest -nastÄ™pujÄ…cy (zmieniÅ‚ siÄ™ on poczÄ…wszy od wersji 3.0): -.PP -Wszystkie linie zaczynajÄ…ce siÄ™ od #, lub puste, nie sÄ… brane pod uwagÄ™. -.PP -Linie zaczynajÄ…ce siÄ™ od pierwszej kolumny powinny mieć nastÄ™pujÄ…cy format: -.PP -.IR "sÅ‚owo kluczowe/wzorzec" , -tj. wszystko po -.I sÅ‚owie kluczowym/ -dopóki nowÄ… liniÄ… nie jest -.I wzorzec -.PP -sÅ‚owami kluczowymi mogÄ… być: -.PP -.I shell -.IP -(wzorzec jest wtedy wyrażeniem (bez jokerów), tj. pasujÄ… wszystkie pliki -*wzorzec. Np.: .tar znaczy *.tar) -.PP -.I regex -.IP -(wzorzec jest normalnym wyrażeniem) -.PP -.I type -.IP -(plik speÅ‚nia wymagania jeÅ›li `file %f` zgadza siÄ™ z wyrażeniem wzorca -(nazwa: część z `file %f` jest usuwana)) -.PP -.I default -.IP -(wszystkie pliki speÅ‚niajÄ…, nie ważne jaki jest wzorzec) -.PP -Inne linie powinny zaczynać siÄ™ od spacji lub tabulacji i powinny -mieć one nastÄ™pujÄ…cy format: -.PP -.I sÅ‚owo kluczowe=komenda -(bez spacji przy znaku =), gdzie -.I sÅ‚owem kluczowym -powinno być: -.PP -.I Open (Otwórz) -(jeÅ›li użytkownik naciÅ›nie Enter lub kliknie dwukrotnie), -.I View (PodglÄ…d) -(F3), -.I Edit (Edytuj) -(F4). -.PP -.I command -jest jakÄ…kolwiek jednÄ… liniÄ… powÅ‚oki, z zastosowaniem -prostego makra. -.PP -Cele sÄ… przeliczane od góry do doÅ‚u (porzÄ…dek jest tu istotny). JeÅ›li -jakiejÅ› akcji brakuje, poszukiwanie kontynuuje siÄ™ tak jakby wczeÅ›niej -nie nastÄ…piÅ‚a żadna zgodność (tj. jeÅ›li zgadza siÄ™ z wzorcem pierwszym -i trzecim i brakuje w pierwszym akcji View, to naciskajÄ…c F3 użyta bÄ™dzie -akcja z trzeciego wzorca). Opcja default powinna wychwycić wszystkie możliwe -akcje. -.PP +Ta komenda wywoÅ‚a twój edytor na plik +.IR ~/.config/mc/mc.ext.ini . +If this file does not exist and you are not root, it will be copied from +.IR %sysconfdir%/mc/mc.ext.ini . +If you are root, you can choose the file to edit: user's +.I ~/.config/mc/mc.ext.ini +or system\-wide +.IR %sysconfdir%/mc/mc.ext.ini . +The format of this file is described in detail in it. +PP .\"NODE " Background Jobs" .SH " Prace w tle (Background jobs)" PozwalajÄ… ci one kontrolować status jakichkolwiek procesów wykonywanych @@ -2052,7 +2003,7 @@ Szuka nastÄ™pnego wystÄ…pienia. .B F8 PrzeÅ‚Ä…cza tryby Raw i Parsed. Pokaże to plik w postaci takiej w jakiej zostaÅ‚ znaleziony na dysku, lub jeÅ›li zostaÅ‚ wybrany jakiÅ› filtr, bÄ…dź -też plik speÅ‚nia wymagania w pliku mc.ext, wyÅ›wietlane jest to co +też plik speÅ‚nia wymagania w pliku mc.ext.ini, wyÅ›wietlane jest to co przekazuje filtr. Aktualne ustawienie jest zawsze przeciwne niż to napisane na przycisku, przycisk wskazuje zawsze to co siÄ™ stanie po jego naciÅ›niÄ™ciu. @@ -2300,7 +2251,7 @@ nastÄ™pujÄ…cej konstrukcji: .PP .I /nazwa_pliku.tar:utar/[katalogu\-wewnÄ…trza\-archiwum] .PP -Plik mc.ext pozwala już na tworzenie skrótów do plików tar, oznacza to, że +Plik mc.ext.ini pozwala już na tworzenie skrótów do plików tar, oznacza to, że możesz wybrać jakiÅ› plik tar i nacisnąć enter aby do niego wejść, zobacz sekcjÄ™ Edycja pliku rozszerzeÅ„ po wiÄ™cej szczegółów na temat tego jak zostaÅ‚o to pomyÅ›lane. @@ -2791,7 +2742,7 @@ PodÅ›wietlenie uprawnieÅ„ również pracuje w tym trybie. .I use_file_to_guess_type .IP JeÅ›li ta zmienna jest ustawiona (standardowo) próbuje siÄ™ dostosować -rozszerzenie pliku do tego wybranego w pliku mc.ext. +rozszerzenie pliku do tego wybranego w pliku mc.ext.ini. .PP .I xtree_mode .IP @@ -2854,11 +2805,11 @@ jeÅ›li jest ona nie ustawiona to znowu przetwarzany jest katalog /usr. .IP Plik pomocy dla programu. .PP -%pkgdatadir%/mc.ext +%pkgdatadir%/mc.ext.ini .IP Standardowy plik rozszerzeÅ„ plików. .PP -~/.config/mc/mc.ext +~/.config/mc/mc.ext.ini .IP WÅ‚asny plik użytkownika, konfiguruje podglÄ…d i edycje plików. Ma wyższy priorytet niż plik systemowy. @@ -2928,7 +2879,7 @@ tcsh(1), zsh(1). .PP .nf Strona Midnight Commander w sieci World Wide Web: - http://www.midnight\-commander.org/ + https://www.midnight\-commander.org/ .fi .PP .\"NODE "AUTHORS" @@ -2972,7 +2923,8 @@ W pliku TODO dystrybucji znajdziesz informacje na temat tego, co pozostaÅ‚o jeszcze do zrobienia. .PP JeÅ›li chcesz zgÅ‚osić kÅ‚opoty z programem [bÅ‚Ä™dy w nim], -wyÅ›lij e\-mail [po angielsku], na adres mc\-devel@gnome.org. +wyÅ›lij e\-mail [po angielsku], na adres +mc\-devel@lists.midnight-commander.org. .PP Do zgÅ‚oszenia bÅ‚Ä™du doÅ‚Ä…cz opis problemu, versjÄ™ programu, którego używasz (wyÅ›wietla jÄ… mc \-V), system operacyjny, na którym pracujesz i jeÅ›li program diff --git a/mcsrc/doc/man/ru/mc.1.in b/mcsrc/doc/man/ru/mc.1.in index 332747c1..cc01e249 100644 --- a/mcsrc/doc/man/ru/mc.1.in +++ b/mcsrc/doc/man/ru/mc.1.in @@ -1016,10 +1016,27 @@ half name | size:7 | type mode:3 .\"NODE " Filter..." .SH " Фильтр..." Пункт меню "Фильтр" позволÑет задать шаблон, которому должны -ÑоответÑтвовать имена файлов, отображаемых в панели (например, +ÑоответÑтвовать имена файлов и каталогов, отображаемых в панели +(например, .BR "*.tar.gz" ). -Имена каталогов и ÑÑылки на каталоги отображаютÑÑ Ð²Ñегда, незавиÑимо от -шаблона. +.PP +Строка ввода +.\"Input Line Keys" +предназначена Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° регулÑрного Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ (маÑки) Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° файлов. +ЕÑли включена Ð¾Ð¿Ñ†Ð¸Ñ +.IR "Только файлы" , +то фильтроватьÑÑ Ð±ÑƒÐ´ÑƒÑ‚ только файлы, а вÑе каталоги будут отбражатьÑÑ +незавиÑимо от того, ÑоответÑтвуют они фильтру или нет. Ð’ противном Ñлучае +фильтроватьÑÑ Ð±ÑƒÐ´ÑƒÑ‚ как файлы, так и каталоги. ЕÑли включена Ð¾Ð¿Ñ†Ð¸Ñ +.IR "Образцы в Ñтиле shell" , +регулÑрные выражение ÑтроÑÑ‚ÑÑ Ð¿Ð¾ тем же правилам, которые дейÑтвуют в +оболочке shell ('*' означает ноль или большее чиÑло любых Ñимволов, а '?' +заменÑет один произвольный Ñимвол). Ð’ противном Ñлучае ÑоответÑтвие +файлов/каталогов фильтру определÑетÑÑ Ð¿Ð¾ правилам обработки нормальных +регулÑрных выражений (Ñмотрите ed(1)). ЕÑли включена Ð¾Ð¿Ñ†Ð¸Ñ +.I "С учётом региÑтра" , +то Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² и каталогов будет производитьÑÑ Ñ ÑƒÑ‡Ñ‘Ñ‚Ð¾Ð¼ региÑтра +Ñимволов имён. Ð’ противном Ñлучае региÑÑ‚Ñ€ Ñимволов учитыватьÑÑ Ð½Ðµ будет. .\"NODE " Reread" .SH " Перечитать" Команда "Перечитать" обновлÑет ÑпиÑок, отображаемый на панели. Это @@ -1395,7 +1412,7 @@ Midnight Commander за Ñчет Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² личное меню .PP ПоÑле выбора пункта меню .\"LINK2" -.I "Файл раÑширений" +.I "Редактировать файл раÑширений" .\"Edit Extension File" вы можете ÑвÑзать Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¼ раÑширением файла (окончанием имени поÑле поÑледней точки) программу, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ запуÑкатьÑÑ Ð´Ð»Ñ @@ -1653,86 +1670,17 @@ CDPATH (Ñмотрите опиÑание вÑтроенной команды cd\&. .\"The cd internal command" .\"NODE " Edit Extension File" -.SH " Файл раÑширений" +.SH " Редактировать файл раÑширений" Этот пункт меню "Команда" Ñлужит Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° редактора и Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° -.BR ~/.config/mc/mc.ext . -Этот файл имеет Ñледующий формат (формат был изменен в верÑии 3.0): -.PP -Ð’Ñе Ñтроки, начинающиеÑÑ Ñ #, или пуÑтые Ñтроки игнорируютÑÑ. -.PP -Строки, начинающиеÑÑ Ñ Ð¿ÐµÑ€Ð²Ð¾Ð¹ колонки (будем говорить, что Ñ Ñ‚Ð°ÐºÐ¸Ñ… Ñтрок -начинаютÑÑ Ñекции файла раÑширений), должны иметь Ñледующий формат: -.PP -.IR keyword/desc , -то еÑÑ‚ÑŒ вÑÑ‘, что Ñтоит поÑле -.I keyword/ -и до конца Ñтроки, интерпретируетÑÑ ÐºÐ°Ðº -.IR desc . -.PP -Ð’ качеÑтве keyword может ÑтоÑÑ‚ÑŒ одно из Ñледующих Ñлов: -.TP -.I shell -еÑли desc начинаетÑÑ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ (мета\-Ñимволы не допуÑкаютÑÑ), то desc \- -Ñто раÑширение имени файла, то еÑÑ‚ÑŒ шаблону ÑоответÑтвуют вÑе файлы, -оканчивающиеÑÑ Ð½Ð° desc. Пример: .tar будет означать *.tar. ЕÑли desc -не начинаетÑÑ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸, то desc трактуетÑÑ ÐºÐ°Ðº полное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°. -.TP -.I regex -desc \- регулÑрное выражение. Обратите внимание на то, что иÑпользуетÑÑ -библиотека GNU regex, в Ñилу чего "\\|" ÑоответÑтвует проÑто Ñимволу -"|", а "|" имеет Ñпециальное значение (логичеÑкое ИЛИ). Ðналогично, -вмеÑто Ñкобок "(" и ")" надо иÑпользовать "\\(" и "\\)". -.TP -.I directory -Файл ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼, и его Ð¸Ð¼Ñ ÑоответÑтвует регулÑрному выражению desc. -.TP -.I type -в Ñтом Ñлучае выбираютÑÑ Ñ‚Ð°ÐºÐ¸Ðµ файлы, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… `file %f` -ÑоответÑтвует регулÑрному выражению desc (чаÑÑ‚ÑŒ filename: из `file %f` -удалена). -.TP -.I default -подходит любой файл, незавиÑимо от того, какое значение принимает desc. -.TP -.I include -\- означает общую Ñекцию. -.PP -Ð’Ñе Ñтроки в Ñекции, кроме первой, должны начинатьÑÑ Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð° или -Ñимвола табулÑции и иметь Ñледующий формат: -.PP -.I keyword=command -(без пробелов возле "="), где -.I keyword -должно быть: -.PP -.I Open -(Ñтрока задаёт дейÑтвиÑ, выполнÑемые в том Ñлучае, когда пользователь -нажимает Enter или дважды щёлкает мышкой по имени файла), -.I View -(F3), -.I Edit -(F4) или -.I Include -(Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» из общей Ñекции). -.PP -.I command -\- Ð»ÑŽÐ±Ð°Ñ Ð¾Ð´Ð½Ð¾ÑÑ‚Ñ€Ð¾Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° оболочки, в которой допуÑкаютÑÑ Ð¿Ñ€Ð¾Ñтые -.\"LINK2" -макроподÑтановки\&. -.\"Macro Substitution" -.PP -ДейÑтвие вычиÑлÑетÑÑ Ñверху вниз (таким образом порÑдок ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ -важен). ЕÑли некоторое дейÑтвие пропущено, поиÑк продолжаетÑÑ ÐºÐ°Ðº в -Ñлучае, еÑли Ñто дейÑтвие не ÑоответÑтвует уÑловию. Другими Ñловами еÑли -файл ÑоответÑтвует первой и второй Ñекции, но дейÑтвие View пропущено в -первой Ñекции, то при нажатии клавиши -.B F3 -будет иÑпользовано дейÑтвие -.I View -из второй Ñекции. -.B default -должно опиÑывать вÑе дейÑтвиÑ. +.BR ~/.config/mc/mc.ext.ini . +ЕÑли Ñтот файл не ÑущеÑтвует и вы не root, Ñтот файл будет Ñкопирован Ñ +.IR %sysconfdir%/mc/mc.ext.ini . +ЕÑли вы root, вы можете выбрать, какой из файлов редактировать: пользовательÑкий +.I ~/.config/mc/mc.ext.ini +или ÑиÑтемный +.IR %sysconfdir%/mc/mc.ext.ini . +Формат Ñтого файла подробно опиÑан в нём Ñамом. .\"NODE " Background Jobs" .SH " Фоновые заданиÑ" Этот пункт меню позволÑет вам управлÑÑ‚ÑŒ фоновыми заданиÑми, запущенными @@ -3377,7 +3325,7 @@ ASCII и шеÑтнадцатеричный (hex). Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸ .B F8 Переключение между режимами Raw/Parsed: файл отображаетÑÑ Ð»Ð¸Ð±Ð¾ в том виде, как он запиÑан на диÑке, либо пропущенным через фильтр, который -задан Ð´Ð»Ñ Ñтого типа файлов в mc.ext. Текущий режим Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ñегда +задан Ð´Ð»Ñ Ñтого типа файлов в mc.ext.ini. Текущий режим Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ñегда обратный по отношению к тому, который указан на Ñкранной кнопке .BR F8 , поÑкольку на кнопке указываетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼, к которому оÑущеÑтвлÑетÑÑ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ @@ -3760,7 +3708,7 @@ tar\-файлам, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ chdir. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾ .PP .I cd ./filename.tar/utar://[dir\-inside\-tar] .PP -Файл mc.ext по умолчанию Ñодержит команды Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра +Файл mc.ext.ini по умолчанию Ñодержит команды Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра tar\-файлов, то еÑÑ‚ÑŒ обычно Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑпиÑка файлов tar\-архива доÑтаточно проÑто перемеÑтить указатель на Ð¸Ð¼Ñ tar\-файла и нажать .BR Enter . @@ -4671,7 +4619,7 @@ subshell. ЕÑли она уÑтановлена, то при нажатии .B file Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° файла в ÑоответÑтвии Ñ Ñ‚Ð¸Ð¿Ð°Ð¼Ð¸ файлов, указанными в файле .\"LINK2" -mc.ext\&. +mc.ext.ini\&. .\"Edit Extension File" .PP .I xtree_mode @@ -4820,11 +4768,11 @@ insert=\\e[Op .IP Файл подÑказки Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹. .PP -.I %pkgdatadir%/mc.ext +.I %pkgdatadir%/mc.ext.ini .IP ИÑпользуемый по умолчанию общеÑиÑтемный файл раÑширений. .PP -.I ~/.config/mc/mc.ext +.I ~/.config/mc/mc.ext.ini .IP Файл раÑширений пользователÑ. ЕÑли Ñтот файл ÑущеÑтвует, он иÑпользуетÑÑ Ð²Ð¼ÐµÑто общеÑиÑтемного файла раÑширений. @@ -4916,7 +4864,7 @@ zsh(1), mcedit(1). .PP .nf Страница, поÑвÑÑ‰ÐµÐ½Ð½Ð°Ñ Midnight Commander, в World Wide Web: - http://www.midnight\-commander.org/ + https://www.midnight\-commander.org/ .fi .PP Ð”Ð°Ð½Ð½Ð°Ñ Ñтраница оперативного руководÑтва Ñодержит информацию, актуальную @@ -4969,7 +4917,7 @@ and Wim Osterholt (wim@djo.wtm.tudelft.nl). .PP ЕÑли вы обнаружили в программе какие\-то недоÑтатки или недоработки, оформите, пожалуйÑта, ваши Ð·Ð°Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¿Ð¾ адреÑу -.IR http://www.midnight\-commander.org/ . +.IR https://www.midnight\-commander.org/ . .PP Дайте подробное опиÑание обнаруженных недоÑтатков (и/или ваших предложений по уÑовершенÑтвованию программы), Ñообщите верÑию программы diff --git a/mcsrc/doc/man/sr/mc.1.in b/mcsrc/doc/man/sr/mc.1.in index 1cb98b3c..dd04dec1 100644 --- a/mcsrc/doc/man/sr/mc.1.in +++ b/mcsrc/doc/man/sr/mc.1.in @@ -1282,84 +1282,14 @@ awk '$9 ~! /incoming/ { print $9 }' < /var/log/xferlog .\"NODE " Edit Extension File" .SH " Уреди датотеку врÑта" Ово покреће ваш уређивач над датотеком -.IR ~/.config/mc/mc.ext . -Формат ове датотеке је Ñледећи: -.PP -Сви редови који почињу на # или празни редови Ñе одбацују. -.PP -Редови који почињу у првој колони би требало да Ñу у Ñледећем формату: -.PP -.IR кључна_реч/израз , -тј. Ñве од коÑе црте до знака за нови ред је -.IR израз . -.PP -.I кључна_реч -може да буде: -.TP -.I shell -\- -.I израз -је врÑта (без џокерÑких знакова). Датотека задовољава уÑлов ако Ñе -њено име завршава на -.IR израз . -Ðа пример, израз: -.I shell/.tar -задовољава -.IR *.tar . -.TP -.I regex -\- -.I израз -је регуларни израз. Датотека задовољава уÑлов ако њен назив задовољава -регуларни израз. -.TP -.I type -\- -.I израз -је регуларни израз. Датотека задовољава уÑлов ако излаз наредбе -.I file %f -без почетног дела `назив_датотеке:' задовољава регуларни израз -.IR израз . -.TP -.I default -\- (подразумевано) задовољава било која датотека. -.I израз -Ñе занемарује. -.TP -.I include -\- означава општи одељак. -.I израз -је назив одељка. -.PP -Други редови би требало да почињу размаком или табулатором и требало -би да Ñу у формату: -.I кључна_реч=наредба -(без размака око знака =), где би -.I кључна_реч -требало да буде: -.I Open -(покретање при притиÑку на таÑтер `Enter' или двоÑтруком притиÑку -дугмета миша), -.I View -(преглед Ñа F3), -.I Edit -(уређивање Ñа F4) или -.I Include -(за додавање правила из општег одељка). -.I наредба -је било која наредба љуÑке од једног реда, уз једноÑтавну -.\"LINK2" -замену макроа\&. -.\"Macro Substitution" -.PP -Правила Ñе задовољавају од врха до дна, па је Ñтога редоÑлед битан. -Ðко одговарајућа радња не поÑтоји, претрага Ñе наÑтавља, као да -правило није ни поÑтојало (нпр. ако датотека задовољава први и други -ÑƒÐ½Ð¾Ñ Ð° радња под `View' (Преглед) недоÑтаје у првом уноÑу, онда ће Ñе -при притиÑку на F3 кориÑтити радња под `View' из другог уноÑа). -Правило -.I default -(подразумевано) би требало да задовољи Ñве радње. +.IR ~/.config/mc/mc.ext.ini . +If this file does not exist and you are not root, it will be copied from +.IR %sysconfdir%/mc/mc.ext.ini . +If you are root, you can choose the file to edit: user's +.I ~/.config/mc/mc.ext.ini +or system\-wide +.IR %sysconfdir%/mc/mc.ext.ini . +The format of this file is described in detail in it. .\"NODE " Background jobs" .SH " ПозадинÑки поÑлови" Ово вам омогућава да управљате Ñтањем било ког позадинÑког процеÑа @@ -2416,7 +2346,7 @@ linux би Ð²Ð°Ñ Ð¾Ð´Ð²ÐµÐ»Ð¾ у /usr/src/linux). .PP .B F8 Смењује Ñирови/рашчлањени режим: ово ће приказати датотеку онако каква -је она на диÑку или, у Ñлучају да је у датотеци mc.ext задан филтар за +је она на диÑку или, у Ñлучају да је у датотеци mc.ext.ini задан филтар за обраду, као излаз филтра. Текући режим је увек онај други од оног који Ñтоји на натпиÑу дугмета, пошто Ñе на дугмету налази режим који укључујете тим таÑтером. @@ -2677,7 +2607,7 @@ if the .PP .I /datoteka.tar/utar://[дир\-унутар\-дат] .PP -Датотека `mc.ext' већ Ñадржи пречицу за датотеке врÑте `tar', што +Датотека `mc.ext.ini' већ Ñадржи пречицу за датотеке врÑте `tar', што значи да можете Ñамо показати на датотеку врÑте `tar' и притиÑнути `Return' или `Enter' да биÑте ушли у њу; погледајте одељак .\"LINK2" @@ -3089,7 +3019,7 @@ base_color=normal=white,default:marked=magenta,default Уколико је ова променљива укључена (подразумевано), ПРће покренути наредбу `file' за одређивање врÑте датотека које Ñу задане у .\"LINK2" -датотеци `mc.ext'\&. +датотеци `mc.ext.ini'\&. .\"Edit Extension File" .TP .I xtree_mode @@ -3151,11 +3081,11 @@ insert=\\e[Op .IP Датотека помоћи за програм. .PP -.I %pkgdatadir%/mc.ext +.I %pkgdatadir%/mc.ext.ini .IP Подразумевана ÑиÑтемÑка датотека врÑта. .PP -.I ~/.config/mc/mc.ext +.I ~/.config/mc/mc.ext.ini .IP КориÑничке датотеке врÑта, подешавања прегледача и уређивача. Уколико поÑтоје, оне заобилазе ÑиÑтемÑке датотеке. @@ -3218,7 +3148,7 @@ tcsh(1), zsh(1). .PP .nf Страница Поноћног наредника на Међународној мрежи: - http://www.midnight\-commander.org/ + https://www.midnight\-commander.org/ .fi .\"NODE "AUTHORS" .SH "ÐУТОРИ" @@ -3230,7 +3160,7 @@ tcsh(1), zsh(1). оÑтаје да Ñе уради. .PP Ðко желите да пријавите проблем у вези Ñа програмом, молим да пошаљете -епиÑмо на Ñледећу адреÑу: mc\-devel@gnome.org. +епиÑмо на Ñледећу адреÑу: mc\-devel@lists.midnight-commander.org. .PP ДоÑтавите детаљан Ð¾Ð¿Ð¸Ñ Ð³Ñ€ÐµÑˆÐºÐµ, верзију програма коју кориÑтите .RI ( "mc \-V" diff --git a/mcsrc/lib/fileloc.h b/mcsrc/lib/fileloc.h index b88924d8..ebcfe9d1 100644 --- a/mcsrc/lib/fileloc.h +++ b/mcsrc/lib/fileloc.h @@ -28,7 +28,6 @@ #define MC_HELP "help" PATH_SEP_STR "mc.hlp" #define GLOBAL_KEYMAP_FILE "mc.keymap" #define CHARSETS_LIST "mc.charsets" -#define MC_LIB_EXT "mc.ext" #define MC_MACRO_FILE "mc.macros" #define FISH_PREFIX "fish" @@ -56,7 +55,8 @@ #define MC_ASHRC_FILE "ashrc" #define MC_INPUTRC_FILE "inputrc" #define MC_CONFIG_FILE "ini" -#define MC_FILEBIND_FILE "mc.ext" +#define MC_EXT_FILE "mc.ext.ini" +#define MC_EXT_OLD_FILE "mc.ext" #define MC_FILEPOS_FILE "filepos" #define MC_HISTORY_FILE "history" #define MC_HOTLIST_FILE "hotlist" @@ -72,10 +72,11 @@ /* file names */ #define EDIT_HOME_MACRO_FILE EDIT_HOME_DIR PATH_SEP_STR "macros.d" PATH_SEP_STR "macro" -#define EDIT_HOME_SYNTAX_FILE EDIT_HOME_DIR PATH_SEP_STR "Syntax" #define EDIT_HOME_CLIP_FILE EDIT_HOME_DIR PATH_SEP_STR "mcedit.clip" #define EDIT_HOME_BLOCK_FILE EDIT_HOME_DIR PATH_SEP_STR "mcedit.block" #define EDIT_HOME_TEMP_FILE EDIT_HOME_DIR PATH_SEP_STR "mcedit.temp" +#define EDIT_SYNTAX_DIR "syntax" +#define EDIT_SYNTAX_FILE EDIT_SYNTAX_DIR PATH_SEP_STR "Syntax" #define EDIT_GLOBAL_MENU "mcedit.menu" #define EDIT_LOCAL_MENU ".cedit.menu" diff --git a/mcsrc/lib/global.h b/mcsrc/lib/global.h index 1a95a88b..9019c508 100644 --- a/mcsrc/lib/global.h +++ b/mcsrc/lib/global.h @@ -195,7 +195,6 @@ typedef struct mc_run_mode_t mc_run_mode; gboolean run_from_parent_mc; - /* Used so that widgets know if they are being destroyed or shut down */ gboolean midnight_shutdown; diff --git a/mcsrc/lib/lock.c b/mcsrc/lib/lock.c index 1b2e814d..0fbf6bdd 100644 --- a/mcsrc/lib/lock.c +++ b/mcsrc/lib/lock.c @@ -45,7 +45,7 @@ #include /* kill() */ #include #include -#include +#include //WIN32, defs #include #include #include diff --git a/mcsrc/lib/mcconfig/common.c b/mcsrc/lib/mcconfig/common.c index 1901adb3..288a7388 100644 --- a/mcsrc/lib/mcconfig/common.c +++ b/mcsrc/lib/mcconfig/common.c @@ -161,10 +161,16 @@ mc_config_deinit (mc_config_t * mc_config) gboolean mc_config_has_param (const mc_config_t * mc_config, const char *group, const gchar * param) { - if (mc_config == NULL || group == NULL || param == NULL) - return FALSE; + char *value; + gboolean ret; + + g_return_val_if_fail (mc_config != NULL, FALSE); + + value = g_key_file_get_value (mc_config->handle, group, param, NULL); + ret = value != NULL; + g_free (value); - return g_key_file_has_key (mc_config->handle, group, param, NULL); + return ret; } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/lib/mcconfig/get.c b/mcsrc/lib/mcconfig/get.c index e3018591..c2703d3f 100644 --- a/mcsrc/lib/mcconfig/get.c +++ b/mcsrc/lib/mcconfig/get.c @@ -94,19 +94,7 @@ mc_config_get_string (mc_config_t * mc_config, const gchar * group, gchar *ret; estr_t conv_res; - if (mc_config == NULL || group == NULL || param == NULL) - return g_strdup (def); - - if (!mc_config_has_param (mc_config, group, param)) - { - if (def != NULL) - mc_config_set_string (mc_config, group, param, def); - return g_strdup (def); - } - - ret = g_key_file_get_string (mc_config->handle, group, param, NULL); - if (ret == NULL) - ret = g_strdup (def); + ret = mc_config_get_string_raw (mc_config, group, param, def); if (mc_global.utf8_display) return ret; diff --git a/mcsrc/lib/mcconfig/paths.c b/mcsrc/lib/mcconfig/paths.c index 04c9deab..1f9efb84 100644 --- a/mcsrc/lib/mcconfig/paths.c +++ b/mcsrc/lib/mcconfig/paths.c @@ -64,12 +64,12 @@ static const struct { &mc_config_str, MC_HOTLIST_FILE }, { &mc_config_str, GLOBAL_KEYMAP_FILE }, { &mc_config_str, MC_USERMENU_FILE }, - { &mc_config_str, EDIT_HOME_SYNTAX_FILE }, { &mc_config_str, EDIT_HOME_MENU }, { &mc_config_str, MC_PANELS_FILE }, /* User should move this file with applying some changes in file */ - { &mc_config_str, MC_FILEBIND_FILE }, + { &mc_config_str, MC_EXT_FILE }, + { &mc_config_str, MC_EXT_OLD_FILE }, /* data */ { &mc_data_str, MC_SKINS_DIR }, @@ -81,6 +81,7 @@ static const struct { &mc_data_str, MC_EXTFS_DIR }, { &mc_data_str, MC_HISTORY_FILE }, { &mc_data_str, MC_FILEPOS_FILE }, + { &mc_data_str, EDIT_SYNTAX_FILE }, { &mc_data_str, EDIT_HOME_CLIP_FILE }, { &mc_data_str, MC_MACRO_FILE }, diff --git a/mcsrc/lib/search.h b/mcsrc/lib/search.h index 56a9a737..39d5458e 100644 --- a/mcsrc/lib/search.h +++ b/mcsrc/lib/search.h @@ -13,19 +13,6 @@ /*** typedefs(not structures) and defined constants **********************************************/ -typedef enum mc_search_cbret_t -{ - MC_SEARCH_CB_OK = 0, - MC_SEARCH_CB_INVALID = -1, - MC_SEARCH_CB_ABORT = -2, - MC_SEARCH_CB_SKIP = -3, - MC_SEARCH_CB_NOTFOUND = -4 -} mc_search_cbret_t; - -typedef mc_search_cbret_t (*mc_search_fn) (const void *user_data, gsize char_offset, - int *current_char); -typedef mc_search_cbret_t (*mc_update_fn) (const void *user_data, gsize char_offset); - #define MC_SEARCH__NUM_REPLACE_ARGS 64 #ifdef SEARCH_TYPE_GLIB @@ -56,6 +43,21 @@ typedef enum MC_SEARCH_T_GLOB } mc_search_type_t; +enum mc_search_cbret_t +{ + MC_SEARCH_CB_OK = 0, + MC_SEARCH_CB_INVALID = -1, + MC_SEARCH_CB_ABORT = -2, + MC_SEARCH_CB_SKIP = -3, + MC_SEARCH_CB_NOTFOUND = -4 +}; + +typedef enum mc_search_cbret_t mc_search_cbret_t; + +typedef mc_search_cbret_t (*mc_search_fn) (const void *user_data, gsize char_offset, + int *current_char); +typedef mc_search_cbret_t (*mc_update_fn) (const void *user_data, gsize char_offset); + /*** structures declarations (and typedefs of structures)*****************************************/ typedef struct mc_search_struct @@ -105,15 +107,20 @@ typedef struct mc_search_struct /* private data */ - /* prepared conditions */ - GPtrArray *conditions; + struct + { + GPtrArray *conditions; + gboolean result; + } prepared; /* original search string */ - gchar *original; - gsize original_len; + struct + { + GString *str; #ifdef HAVE_CHARSET - gchar *original_charset; + gchar *charset; #endif + } original; /* error code after search */ mc_search_error_t error; diff --git a/mcsrc/lib/search/internal.h b/mcsrc/lib/search/internal.h index 512c9d73..d7b015ce 100644 --- a/mcsrc/lib/search/internal.h +++ b/mcsrc/lib/search/internal.h @@ -38,12 +38,12 @@ typedef struct mc_search_cond_struct /* search/lib.c : */ -gchar *mc_search__recode_str (const char *str, gsize str_len, const char *charset_from, - const char *charset_to, gsize * bytes_written); -gchar *mc_search__get_one_symbol (const char *charset, const char *str, gsize str_len, - gboolean * just_letters); -GString *mc_search__tolower_case_str (const char *charset, const char *str, gsize str_len); -GString *mc_search__toupper_case_str (const char *charset, const char *str, gsize str_len); +GString *mc_search__recode_str (const char *str, gsize str_len, const char *charset_from, + const char *charset_to); +GString *mc_search__get_one_symbol (const char *charset, const char *str, gsize str_len, + gboolean * just_letters); +GString *mc_search__tolower_case_str (const char *charset, const GString * str); +GString *mc_search__toupper_case_str (const char *charset, const GString * str); /* search/regex.c : */ diff --git a/mcsrc/lib/search/lib.c b/mcsrc/lib/search/lib.c index f46524f8..6ec5630a 100644 --- a/mcsrc/lib/search/lib.c +++ b/mcsrc/lib/search/lib.c @@ -51,17 +51,69 @@ const char *STR_E_RPL_INVALID_TOKEN = N_("Invalid token number %d"); /*** file scope type declarations ****************************************************************/ +typedef gboolean (*case_conv_fn) (const char *ch, char **out, size_t * remain); + /*** file scope variables ************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ /*** file scope functions ************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ + +static GString * +mc_search__change_case_str (const char *charset, const GString * str, case_conv_fn case_conv) +{ + GString *ret; + const char *src_ptr; + gchar *dst_str; + gchar *dst_ptr; + gsize dst_len; +#ifdef HAVE_CHARSET + GString *converted_str; + + if (charset == NULL) + charset = cp_source; + + converted_str = mc_search__recode_str (str->str, str->len, charset, cp_display); + + dst_len = converted_str->len + 1; /* +1 is required for str_toupper/str_tolower */ + dst_str = g_malloc (dst_len); + + for (src_ptr = converted_str->str, dst_ptr = dst_str; + case_conv (src_ptr, &dst_ptr, &dst_len); src_ptr += str_length_char (src_ptr)) + ; + *dst_ptr = '\0'; + + dst_len = converted_str->len; + g_string_free (converted_str, TRUE); + + ret = mc_search__recode_str (dst_str, dst_len, cp_display, charset); + g_free (dst_str); +#else + (void) charset; + + dst_len = str->len + 1; /* +1 is required for str_toupper/str_tolower */ + dst_str = g_malloc (dst_len); + + for (src_ptr = str->str, dst_ptr = dst_str; + case_conv (src_ptr, &dst_ptr, &dst_len); src_ptr += str_length_char (src_ptr)) + ; + *dst_ptr = '\0'; + ret = g_string_new_len (dst_str, dst_len); + g_free (dst_str); +#endif + return ret; +} + +/* --------------------------------------------------------------------------------------------- */ /*** public functions ****************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ -gchar * -mc_search__recode_str (const char *str, gsize str_len, - const char *charset_from, const char *charset_to, gsize * bytes_written) +GString * +mc_search__recode_str (const char *str, gsize str_len, const char *charset_from, + const char *charset_to) { - gchar *ret = NULL; + GString *ret = NULL; if (charset_from != NULL && charset_to != NULL && g_ascii_strcasecmp (charset_to, charset_from) != 0) @@ -71,60 +123,61 @@ mc_search__recode_str (const char *str, gsize str_len, conv = g_iconv_open (charset_to, charset_from); if (conv != INVALID_CONV) { - gsize bytes_read; + gchar *val; + gsize bytes_read = 0; + gsize bytes_written = 0; + + val = g_convert_with_iconv (str, str_len, conv, &bytes_read, &bytes_written, NULL); - ret = g_convert_with_iconv (str, str_len, conv, &bytes_read, bytes_written, NULL); g_iconv_close (conv); + + if (val != NULL) + { + ret = g_string_new_len (val, bytes_written); + g_free (val); + } } } if (ret == NULL) - { - *bytes_written = str_len; - ret = g_strndup (str, str_len); - } + ret = g_string_new_len (str, str_len); return ret; } /* --------------------------------------------------------------------------------------------- */ -gchar * +GString * mc_search__get_one_symbol (const char *charset, const char *str, gsize str_len, gboolean * just_letters) { - gchar *converted_str; + GString *converted_str; const gchar *next_char; - gsize tmp_len; #ifdef HAVE_CHARSET - gsize converted_str_len; - gchar *converted_str2; + GString *converted_str2; if (charset == NULL) charset = cp_source; - converted_str = mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len); + converted_str = mc_search__recode_str (str, str_len, charset, cp_display); #else (void) charset; - converted_str = g_strndup (str, str_len); + converted_str = g_string_new_len (str, str_len); #endif - next_char = str_cget_next_char (converted_str); - - tmp_len = next_char - converted_str; - - converted_str[tmp_len] = '\0'; + next_char = str_cget_next_char (converted_str->str); + g_string_set_size (converted_str, (gsize) (next_char - converted_str->str)); #ifdef HAVE_CHARSET converted_str2 = - mc_search__recode_str (converted_str, tmp_len, cp_display, charset, &converted_str_len); + mc_search__recode_str (converted_str->str, converted_str->len, cp_display, charset); #endif if (just_letters != NULL) - *just_letters = str_isalnum (converted_str) && !str_isdigit (converted_str); + *just_letters = str_isalnum (converted_str->str) && !str_isdigit (converted_str->str); #ifdef HAVE_CHARSET - g_free (converted_str); + g_string_free (converted_str, TRUE); return converted_str2; #else return converted_str; @@ -134,103 +187,17 @@ mc_search__get_one_symbol (const char *charset, const char *str, gsize str_len, /* --------------------------------------------------------------------------------------------- */ GString * -mc_search__tolower_case_str (const char *charset, const char *str, gsize str_len) +mc_search__tolower_case_str (const char *charset, const GString * str) { - GString *ret; -#ifdef HAVE_CHARSET - gchar *converted_str, *tmp_str1, *tmp_str2, *tmp_str3; - gsize converted_str_len; - gsize tmp_len; - - if (charset == NULL) - charset = cp_source; - - tmp_str2 = converted_str = - mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len); - - tmp_len = converted_str_len + 1; - - tmp_str3 = tmp_str1 = g_strdup (converted_str); - - while (str_tolower (tmp_str1, &tmp_str2, &tmp_len)) - tmp_str1 += str_length_char (tmp_str1); - - g_free (tmp_str3); - tmp_str2 = - mc_search__recode_str (converted_str, converted_str_len, cp_display, charset, &tmp_len); - g_free (converted_str); - - ret = g_string_new_len (tmp_str2, tmp_len); - g_free (tmp_str2); - return ret; -#else - const gchar *tmp_str1 = str; - gchar *converted_str, *tmp_str2; - gsize converted_str_len = str_len + 1; - - (void) charset; - - tmp_str2 = converted_str = g_strndup (str, str_len); - - while (str_tolower (tmp_str1, &tmp_str2, &converted_str_len)) - tmp_str1 += str_length_char (tmp_str1); - - ret = g_string_new_len (converted_str, str_len); - g_free (converted_str); - return ret; -#endif + return mc_search__change_case_str (charset, str, str_tolower); } /* --------------------------------------------------------------------------------------------- */ GString * -mc_search__toupper_case_str (const char *charset, const char *str, gsize str_len) +mc_search__toupper_case_str (const char *charset, const GString * str) { - GString *ret; -#ifdef HAVE_CHARSET - gchar *converted_str, *tmp_str1, *tmp_str2, *tmp_str3; - gsize converted_str_len; - gsize tmp_len; - - if (charset == NULL) - charset = cp_source; - - tmp_str2 = converted_str = - mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len); - - tmp_len = converted_str_len + 1; - - tmp_str3 = tmp_str1 = g_strdup (converted_str); - - while (str_toupper (tmp_str1, &tmp_str2, &tmp_len)) - tmp_str1 += str_length_char (tmp_str1); - - g_free (tmp_str3); - - tmp_str2 = - mc_search__recode_str (converted_str, converted_str_len, cp_display, charset, &tmp_len); - g_free (converted_str); - - ret = g_string_new_len (tmp_str2, tmp_len); - g_free (tmp_str2); - return ret; -#else - - const gchar *tmp_str1 = str; - gchar *converted_str, *tmp_str2; - gsize converted_str_len = str_len + 1; - - (void) charset; - - tmp_str2 = converted_str = g_strndup (str, str_len); - - while (str_toupper (tmp_str1, &tmp_str2, &converted_str_len)) - tmp_str1 += str_length_char (tmp_str1); - - ret = g_string_new_len (converted_str, str_len); - g_free (converted_str); - return ret; -#endif + return mc_search__change_case_str (charset, str, str_toupper); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/lib/search/normal.c b/mcsrc/lib/search/normal.c index 0722a1be..483e4a4d 100644 --- a/mcsrc/lib/search/normal.c +++ b/mcsrc/lib/search/normal.c @@ -40,19 +40,17 @@ /*** file scope variables ************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ /*** file scope functions ************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ -static GString * -mc_search__normal_translate_to_regex (const GString * astr) +static void +mc_search__normal_translate_to_regex (GString * str) { - const char *str = astr->str; - GString *buff; gsize loop; - buff = g_string_sized_new (32); - - for (loop = 0; loop < astr->len; loop++) - switch (str[loop]) + for (loop = 0; loop < str->len; loop++) + switch (str->str[loop]) { case '*': case '?': @@ -70,28 +68,22 @@ mc_search__normal_translate_to_regex (const GString * astr) case '^': case '-': case '|': - g_string_append_c (buff, '\\'); - MC_FALLTHROUGH; + g_string_insert_c (str, loop, '\\'); + loop++; default: - g_string_append_c (buff, str[loop]); break; } - - return buff; } +/* --------------------------------------------------------------------------------------------- */ /*** public functions ****************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ void mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc_search, mc_search_cond_t * mc_search_cond) { - GString *tmp; - - tmp = mc_search__normal_translate_to_regex (mc_search_cond->str); - g_string_free (mc_search_cond->str, TRUE); - - mc_search_cond->str = tmp; + mc_search__normal_translate_to_regex (mc_search_cond->str); mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond); } diff --git a/mcsrc/lib/search/regex.c b/mcsrc/lib/search/regex.c index edd65fad..07b68331 100644 --- a/mcsrc/lib/search/regex.c +++ b/mcsrc/lib/search/regex.c @@ -122,13 +122,13 @@ mc_search__regex_str_append_if_special (GString * copy_to, const GString * regex static void mc_search__cond_struct_new_regex_hex_add (const char *charset, GString * str_to, - const char *one_char, gsize str_len) + const GString * one_char) { GString *upp, *low; gsize loop; - upp = mc_search__toupper_case_str (charset, one_char, str_len); - low = mc_search__tolower_case_str (charset, one_char, str_len); + upp = mc_search__toupper_case_str (charset, one_char); + low = mc_search__tolower_case_str (charset, one_char); for (loop = 0; loop < upp->len; loop++) { @@ -163,29 +163,26 @@ mc_search__cond_struct_new_regex_accum_append (const char *charset, GString * st while (loop < str_from->len) { - gchar *one_char; - gsize one_char_len; + GString *one_char; gboolean just_letters; one_char = - mc_search__get_one_symbol (charset, &(str_from->str[loop]), + mc_search__get_one_symbol (charset, str_from->str + loop, MIN (str_from->len - loop, 6), &just_letters); - one_char_len = strlen (one_char); - if (one_char_len == 0) + if (one_char->len == 0) loop++; else { - loop += one_char_len; + loop += one_char->len; if (just_letters) - mc_search__cond_struct_new_regex_hex_add (charset, recoded_part, one_char, - one_char_len); + mc_search__cond_struct_new_regex_hex_add (charset, recoded_part, one_char); else - g_string_append_len (recoded_part, one_char, one_char_len); + g_string_append_len (recoded_part, one_char->str, one_char->len); } - g_free (one_char); + g_string_free (one_char, TRUE); } g_string_append_len (str_to, recoded_part->str, recoded_part->len); @@ -219,7 +216,7 @@ mc_search__cond_struct_new_regex_ci_str (const char *charset, const GString * as spec_char = g_string_sized_new (64); loop = 0; - while (loop <= astr->len) + while (loop < astr->len) { if (mc_search__regex_str_append_if_special (spec_char, astr, &loop)) { @@ -364,12 +361,13 @@ mc_search__regex_found_cond (mc_search_t * lc_mc_search, GString * search_str) { gsize loop1; - for (loop1 = 0; loop1 < lc_mc_search->conditions->len; loop1++) + for (loop1 = 0; loop1 < lc_mc_search->prepared.conditions->len; loop1++) { mc_search_cond_t *mc_search_cond; mc_search__found_cond_t ret; - mc_search_cond = (mc_search_cond_t *) g_ptr_array_index (lc_mc_search->conditions, loop1); + mc_search_cond = + (mc_search_cond_t *) g_ptr_array_index (lc_mc_search->prepared.conditions, loop1); if (!mc_search_cond->regex_handle) continue; @@ -643,39 +641,37 @@ mc_search_regex__process_append_str (GString * dest_str, const char *from, gsize for (loop = 0; loop < len; loop += char_len) { GString *tmp_string = NULL; - char *tmp_str; + GString *s; - tmp_str = mc_search__get_one_symbol (NULL, from + loop, len - loop, NULL); - char_len = strlen (tmp_str); + s = mc_search__get_one_symbol (NULL, from + loop, len - loop, NULL); + char_len = s->len; if ((*replace_flags & REPLACE_T_UPP_TRANSFORM_CHAR) != 0) { *replace_flags &= ~REPLACE_T_UPP_TRANSFORM_CHAR; - tmp_string = mc_search__toupper_case_str (NULL, tmp_str, char_len); + tmp_string = mc_search__toupper_case_str (NULL, s); g_string_append_len (dest_str, tmp_string->str, tmp_string->len); - g_string_free (tmp_string, TRUE); } else if ((*replace_flags & REPLACE_T_LOW_TRANSFORM_CHAR) != 0) { *replace_flags &= ~REPLACE_T_LOW_TRANSFORM_CHAR; - tmp_string = mc_search__tolower_case_str (NULL, tmp_str, char_len); + tmp_string = mc_search__tolower_case_str (NULL, s); g_string_append_len (dest_str, tmp_string->str, tmp_string->len); - g_string_free (tmp_string, TRUE); } else if ((*replace_flags & REPLACE_T_UPP_TRANSFORM) != 0) { - tmp_string = mc_search__toupper_case_str (NULL, tmp_str, char_len); + tmp_string = mc_search__toupper_case_str (NULL, s); g_string_append_len (dest_str, tmp_string->str, tmp_string->len); - g_string_free (tmp_string, TRUE); } else if ((*replace_flags & REPLACE_T_LOW_TRANSFORM) != 0) { - tmp_string = mc_search__tolower_case_str (NULL, tmp_str, char_len); + tmp_string = mc_search__tolower_case_str (NULL, s); g_string_append_len (dest_str, tmp_string->str, tmp_string->len); - g_string_free (tmp_string, TRUE); } - g_free (tmp_str); + g_string_free (s, TRUE); + if (tmp_string != NULL) + g_string_free (tmp_string, TRUE); } } diff --git a/mcsrc/lib/search/search.c b/mcsrc/lib/search/search.c index a4e59465..3fdbc260 100644 --- a/mcsrc/lib/search/search.c +++ b/mcsrc/lib/search/search.c @@ -60,13 +60,12 @@ static const mc_search_type_str_t mc_search__list_types[] = { /*** file scope functions ************************************************************************/ static mc_search_cond_t * -mc_search__cond_struct_new (mc_search_t * lc_mc_search, const char *str, - gsize str_len, const char *charset) +mc_search__cond_struct_new (mc_search_t * lc_mc_search, const GString * str, const char *charset) { mc_search_cond_t *mc_search_cond; mc_search_cond = g_malloc0 (sizeof (mc_search_cond_t)); - mc_search_cond->str = g_string_new_len (str, str_len); + mc_search_cond->str = mc_g_string_dup (str); mc_search_cond->charset = g_strdup (charset); switch (lc_mc_search->search_type) @@ -161,10 +160,9 @@ mc_search_new_len (const gchar * original, gsize original_len, const gchar * ori return NULL; lc_mc_search = g_new0 (mc_search_t, 1); - lc_mc_search->original = g_strndup (original, original_len); - lc_mc_search->original_len = original_len; + lc_mc_search->original.str = g_string_new_len (original, original_len); #ifdef HAVE_CHARSET - lc_mc_search->original_charset = + lc_mc_search->original.charset = g_strdup (original_charset != NULL && *original_charset != '\0' ? original_charset : cp_display); #else @@ -182,14 +180,14 @@ mc_search_free (mc_search_t * lc_mc_search) if (lc_mc_search == NULL) return; - g_free (lc_mc_search->original); + g_string_free (lc_mc_search->original.str, TRUE); #ifdef HAVE_CHARSET - g_free (lc_mc_search->original_charset); + g_free (lc_mc_search->original.charset); #endif g_free (lc_mc_search->error_str); - if (lc_mc_search->conditions != NULL) - mc_search__conditions_free (lc_mc_search->conditions); + if (lc_mc_search->prepared.conditions != NULL) + mc_search__conditions_free (lc_mc_search->prepared.conditions); #ifdef SEARCH_TYPE_GLIB if (lc_mc_search->regex_match_info != NULL) @@ -211,54 +209,51 @@ mc_search_prepare (mc_search_t * lc_mc_search) { GPtrArray *ret; + if (lc_mc_search->prepared.conditions != NULL) + return lc_mc_search->prepared.result; + ret = g_ptr_array_new (); #ifdef HAVE_CHARSET - if (lc_mc_search->is_all_charsets) + if (!lc_mc_search->is_all_charsets) + g_ptr_array_add (ret, + mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original.str, + lc_mc_search->original.charset)); + else { gsize loop1; for (loop1 = 0; loop1 < codepages->len; loop1++) { const char *id; - gsize recoded_str_len; - gchar *buffer; id = ((codepage_desc *) g_ptr_array_index (codepages, loop1))->id; - if (g_ascii_strcasecmp (id, lc_mc_search->original_charset) == 0) - { + if (g_ascii_strcasecmp (id, lc_mc_search->original.charset) == 0) g_ptr_array_add (ret, - mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original, - lc_mc_search->original_len, - lc_mc_search->original_charset)); - continue; + mc_search__cond_struct_new (lc_mc_search, + lc_mc_search->original.str, + lc_mc_search->original.charset)); + else + { + GString *buffer; + + buffer = + mc_search__recode_str (lc_mc_search->original.str->str, + lc_mc_search->original.str->len, + lc_mc_search->original.charset, id); + g_ptr_array_add (ret, mc_search__cond_struct_new (lc_mc_search, buffer, id)); + g_string_free (buffer, TRUE); } - - buffer = - mc_search__recode_str (lc_mc_search->original, lc_mc_search->original_len, - lc_mc_search->original_charset, id, &recoded_str_len); - - g_ptr_array_add (ret, - mc_search__cond_struct_new (lc_mc_search, buffer, - recoded_str_len, id)); - g_free (buffer); } } - else - { - g_ptr_array_add (ret, - mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original, - lc_mc_search->original_len, - lc_mc_search->original_charset)); - } #else g_ptr_array_add (ret, - mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original, - lc_mc_search->original_len, + mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original.str, str_detect_termencoding ())); #endif - lc_mc_search->conditions = ret; + lc_mc_search->prepared.conditions = ret; + lc_mc_search->prepared.result = (lc_mc_search->error == MC_SEARCH_E_OK); - return (lc_mc_search->error == MC_SEARCH_E_OK); + return lc_mc_search->prepared.result; } /* --------------------------------------------------------------------------------------------- */ @@ -299,7 +294,7 @@ mc_search_run (mc_search_t * lc_mc_search, const void *user_data, mc_search_set_error (lc_mc_search, MC_SEARCH_E_OK, NULL); - if ((lc_mc_search->conditions == NULL) && !mc_search_prepare (lc_mc_search)) + if (!mc_search_prepare (lc_mc_search)) return FALSE; switch (lc_mc_search->search_type) diff --git a/mcsrc/lib/strutil.h b/mcsrc/lib/strutil.h index fe947dea..e1ac193e 100644 --- a/mcsrc/lib/strutil.h +++ b/mcsrc/lib/strutil.h @@ -577,6 +577,8 @@ int str_verscmp (const char *s1, const char *s2); (\.[A-Za-z~][A-Za-z0-9~]*)*$ are removed and the strings compared without them, using version sort without special priority; if they do not compare equal, this comparison result is used and the suffixes are effectively ignored. Otherwise, the entire strings are compared using version sort. + When removing a suffix from a nonempty string, remove the maximal-length suffix such that + the remaining string is nonempty. */ int filevercmp (const char *a, const char *b); diff --git a/mcsrc/lib/strutil/filevercmp.c b/mcsrc/lib/strutil/filevercmp.c index 26a58a7a..7086f527 100644 --- a/mcsrc/lib/strutil/filevercmp.c +++ b/mcsrc/lib/strutil/filevercmp.c @@ -41,6 +41,9 @@ /* Return the length of a prefix of @s that corresponds to the suffix defined by this extended * regular expression in the C locale: (\.[A-Za-z~][A-Za-z0-9~]*)*$ * + * Use the longest suffix matching this regular expression, except do not use all of s as a suffix + * if s is nonempty. + * * If *len is -1, s is a string; set *lem to s's length. * Otherwise, *len should be nonnegative, s is a char array, and *len does not change. */ @@ -48,17 +51,13 @@ static ssize_t file_prefixlen (const char *s, ssize_t * len) { size_t n = (size_t) (*len); /* SIZE_MAX if N == -1 */ - size_t i; + size_t i = 0; + size_t prefixlen = 0; - for (i = 0;; i++) + while (TRUE) { - size_t prefixlen = i; gboolean done; - while (i + 1 < n && s[i] == '.' && (g_ascii_isalpha (s[i + 1]) || s[i + 1] == '~')) - for (i += 2; i < n && (g_ascii_isalnum (s[i]) || s[i] == '~'); i++) - ; - if (*len < 0) done = s[i] == '\0'; else @@ -69,6 +68,13 @@ file_prefixlen (const char *s, ssize_t * len) *len = (ssize_t) i; return (ssize_t) prefixlen; } + + i++; + prefixlen = i; + + while (i + 1 < n && s[i] == '.' && (g_ascii_isalpha (s[i + 1]) || s[i + 1] == '~')) + for (i += 2; i < n && (g_ascii_isalnum (s[i]) || s[i] == '~'); i++) + ; } } diff --git a/mcsrc/lib/tty/key.c b/mcsrc/lib/tty/key.c index aa046f02..50cf77d4 100644 --- a/mcsrc/lib/tty/key.c +++ b/mcsrc/lib/tty/key.c @@ -94,7 +94,6 @@ int double_click_speed = 250; /* ms */ gboolean old_esc_mode = TRUE; /* timeout for old_esc_mode in usec */ int old_esc_mode_timeout = G_USEC_PER_SEC; /* us, settable via env */ -int old_esc_mode_timeout = 1000000; /* settable via env */ gboolean use_8th_bit_as_meta = FALSE; gboolean bracketed_pasting_in_progress = FALSE; @@ -166,7 +165,7 @@ const key_code_name_t key_name_conv_tab[] = { /* Alternative label */ {ESC_CHAR, "esc", N_("Escape"), "Esc"}, - {KEY_BACKSPACE, "bs", N_("Backspace"), "Backspace"}, + {KEY_BACKSPACE, "bs", N_("Backspace"), "Backspace"}, //WIN32, typo {KEY_IC, "ins", N_("Insert"), "Ins"}, {KEY_DC, "del", N_("Delete"), "Del"}, {(int) '*', "asterisk", N_("Asterisk"), "*"}, diff --git a/mcsrc/lib/tty/tty.c b/mcsrc/lib/tty/tty.c index 7323099f..d38875ed 100644 --- a/mcsrc/lib/tty/tty.c +++ b/mcsrc/lib/tty/tty.c @@ -84,7 +84,7 @@ sigintr_handler (int signo) got_interrupt = 1; } -#if defined(_WIN32) +#if defined(WIN32) void sigintr_set(int state) { @@ -112,6 +112,7 @@ sigintr_set(int state) * foot* * screen* * tmux* + * contour* */ gboolean tty_check_term (gboolean force_xterm) @@ -135,7 +136,8 @@ tty_check_term (gboolean force_xterm) || strncmp (termvalue, "alacritty", 9) == 0 || strncmp (termvalue, "foot", 4) == 0 || strncmp (termvalue, "screen", 6) == 0 - || strncmp (termvalue, "tmux", 4) == 0; + || strncmp (termvalue, "tmux", 4) == 0 + || strncmp (termvalue, "contour", 7) == 0; /* *INDENT-ON* */ } diff --git a/mcsrc/lib/util.c b/mcsrc/lib/util.c index f253c23c..56e8342b 100644 --- a/mcsrc/lib/util.c +++ b/mcsrc/lib/util.c @@ -41,7 +41,7 @@ #include #include #include -#include +#include //WIN32, defs #include #include #include @@ -834,27 +834,25 @@ get_compression_type (int fd, const char *name) return COMPRESSION_NONE; /* GZIP_MAGIC and OLD_GZIP_MAGIC */ - if (magic[0] == 037 && (magic[1] == 0213 || magic[1] == 0236)) + if (magic[0] == 0x1F && (magic[1] == 0x8B || magic[1] == 0x9E)) return COMPRESSION_GZIP; /* PKZIP_MAGIC */ - if (magic[0] == 0120 && magic[1] == 0113 && magic[2] == 003 && magic[3] == 004) + if (magic[0] == 'P' && magic[1] == 'K' && magic[2] == 0x03 && magic[3] == 0x04) { /* Read compression type */ mc_lseek (fd, 8, SEEK_SET); if (mc_read (fd, (char *) magic, 2) != 2) return COMPRESSION_NONE; - /* Gzip can handle only deflated (8) or stored (0) files */ if ((magic[0] != 8 && magic[0] != 0) || magic[1] != 0) return COMPRESSION_NONE; - /* Compatible with gzip */ - return COMPRESSION_GZIP; + return COMPRESSION_ZIP; } /* PACK_MAGIC and LZH_MAGIC and compress magic */ - if (magic[0] == 037 && (magic[1] == 036 || magic[1] == 0240 || magic[1] == 0235)) + if (magic[0] == 0x1F && (magic[1] == 0x1E || magic[1] == 0xA0 || magic[1] == 0x9D)) /* Compatible with gzip */ return COMPRESSION_GZIP; @@ -915,6 +913,8 @@ decompress_extension (int type) { switch (type) { + case COMPRESSION_ZIP: + return "/uz" VFS_PATH_URL_DELIMITER; case COMPRESSION_GZIP: return "/ugz" VFS_PATH_URL_DELIMITER; case COMPRESSION_BZIP: @@ -1432,7 +1432,7 @@ guess_message_value (void) } #if defined(WIN32) //WIN32, config - if (NULL == locale) { + if (NULL == locale || !*locale) { const char *lang = mc_get_locale(); if (lang && *lang) { return g_strdup(lang); diff --git a/mcsrc/lib/util.h b/mcsrc/lib/util.h index 871b2bbe..a2541c5e 100644 --- a/mcsrc/lib/util.h +++ b/mcsrc/lib/util.h @@ -54,25 +54,30 @@ */ #define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) -/* Difference of zero */ +/* Difference or zero */ #define DOZ(a, b) ((a) > (b) ? (a) - (b) : 0) /*** enums ***************************************************************************************/ /* Pathname canonicalization */ +/* *INDENT-OFF* */ typedef enum { - CANON_PATH_JOINSLASHES = 1L << 0, /* Multiple '/'s are collapsed to a single '/'. */ - CANON_PATH_REMSLASHDOTS = 1L << 1, /* Leading './'s, '/'s and trailing '/.'s are removed. */ - CANON_PATH_REMDOUBLEDOTS = 1L << 3, /* Non-leading '../'s and trailing '..'s are handled by removing */ - CANON_PATH_GUARDUNC = 1L << 4, /* Detect and preserve UNC paths: //server/... */ - CANON_PATH_ALL = CANON_PATH_JOINSLASHES - | CANON_PATH_REMSLASHDOTS | CANON_PATH_REMDOUBLEDOTS | CANON_PATH_GUARDUNC -} CANON_PATH_FLAGS; + CANON_PATH_NOCHANGE = 0, + CANON_PATH_JOINSLASHES = 1L << 0, /**< Multiple '/'s are collapsed to a single '/' */ + CANON_PATH_REMSLASHDOTS = 1L << 1, /**< Leading './'s, '/'s and trailing '/.'s are removed */ + CANON_PATH_REMDOUBLEDOTS = 1L << 3, /**< Non-leading '../'s and trailing '..'s are handled by removing + portions of the path */ + CANON_PATH_GUARDUNC = 1L << 4, /**< Detect and preserve UNC paths: //server/... */ + CANON_PATH_ALL = CANON_PATH_JOINSLASHES | CANON_PATH_REMSLASHDOTS + | CANON_PATH_REMDOUBLEDOTS | CANON_PATH_GUARDUNC /**< All flags */ +} canon_path_flags_t; +/* *INDENT-ON* */ enum compression_type { COMPRESSION_NONE, + COMPRESSION_ZIP, COMPRESSION_GZIP, COMPRESSION_BZIP, COMPRESSION_BZIP2, @@ -231,7 +236,7 @@ void save_stop_handler (void); /* Tilde expansion */ char *tilde_expand (const char *directory); -void custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags); +void canonicalize_pathname_custom (char *path, canon_path_flags_t flags); void canonicalize_pathname (char *path); char *mc_realpath (const char *path, char *resolved_path); diff --git a/mcsrc/lib/utilunix.c b/mcsrc/lib/utilunix.c index 8ada8967..f580591e 100644 --- a/mcsrc/lib/utilunix.c +++ b/mcsrc/lib/utilunix.c @@ -10,6 +10,7 @@ Dugan Porter, 1994, 1995, 1996 Jakub Jelinek, 1994, 1995, 1996 Mauricio Plaza, 1994, 1995, 1996 + Andrew Borodin 2010-2022 The mc_realpath routine is mostly from uClibc package, written by Rick Sladkey @@ -674,6 +675,13 @@ mc_pclose (mc_pipe_t * p, GError ** error) { int res; + if (p == NULL) + { + mc_replace_error (error, MC_PIPE_ERROR_READ, "%s", + _("Cannot close pipe descriptor (p == NULL)")); + return; + } + if (p->out.fd >= 0) res = close (p->out.fd); if (p->err.fd >= 0) @@ -746,18 +754,19 @@ tilde_expand (const char *directory) /* --------------------------------------------------------------------------------------------- */ /** - * Canonicalize path, and return a new path. Do everything in place. - * The new path differs from path in: - * Multiple '/'s are collapsed to a single '/'. - * Leading './'s and trailing '/.'s are removed. - * Trailing '/'s are removed. - * Non-leading '../'s and trailing '..'s are handled by removing - * portions of the path. + * Canonicalize path. + * + * @param path path to file + * @param flags canonicalization flags + * + * @return a new path + * + * All modifications of @path are made in place. * Well formed UNC paths are modified only in the local part. */ void -custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags) +canonicalize_pathname_custom (char *path, canon_path_flags_t flags) { char *p, *s; char *lpath = path; /* path without leading UNC part */ @@ -978,11 +987,22 @@ custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags) } /* --------------------------------------------------------------------------------------------- */ +/** + * Canonicalize path with CANON_PATH_ALL. + * + * @param path path to file + * @param flags canonicalization flags + * + * @return a new path + * + * All modifications of @path are made in place. + * Well formed UNC paths are modified only in the local part. + */ void canonicalize_pathname (char *path) { - custom_canonicalize_pathname (path, CANON_PATH_ALL); + canonicalize_pathname_custom (path, CANON_PATH_ALL); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/lib/vfs/direntry.c b/mcsrc/lib/vfs/direntry.c index eb009cce..4ea5d110 100644 --- a/mcsrc/lib/vfs/direntry.c +++ b/mcsrc/lib/vfs/direntry.c @@ -6,7 +6,8 @@ Written by: Pavel Machek , 1998 - Slava Zanko , 2013 + Slava Zanko , 2010-2013 + Andrew Borodin 2010-2022 This file is part of the Midnight Commander. @@ -69,7 +70,7 @@ #include "lib/global.h" #include "lib/tty/tty.h" /* enable/disable interrupt key */ -#include "lib/util.h" /* custom_canonicalize_pathname() */ +#include "lib/util.h" /* canonicalize_pathname_custom() */ #if 0 #include "lib/widget.h" /* message() */ #endif @@ -181,7 +182,7 @@ vfs_s_find_entry_tree (struct vfs_class *me, struct vfs_s_inode *root, char *path = pathref; /* canonicalize as well, but don't remove '../' from path */ - custom_canonicalize_pathname (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS)); + canonicalize_pathname_custom (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS)); while (root != NULL) { @@ -245,7 +246,7 @@ vfs_s_find_entry_linear (struct vfs_class *me, struct vfs_s_inode *root, vfs_die ("We have to use _real_ root. Always. Sorry."); /* canonicalize as well, but don't remove '../' from path */ - custom_canonicalize_pathname (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS)); + canonicalize_pathname_custom (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS)); if ((flags & FL_DIR) == 0) { @@ -1326,15 +1327,12 @@ vfs_s_open (const vfs_path_t * vpath, int flags, mode_t mode) return NULL; dirname = g_path_get_dirname (q); - name = g_path_get_basename (q); dir = vfs_s_find_inode (path_element->class, super, dirname, LINK_FOLLOW, FL_DIR); + g_free (dirname); if (dir == NULL) - { - g_free (dirname); - g_free (name); return NULL; - } + name = g_path_get_basename (q); ent = vfs_s_generate_entry (path_element->class, name, dir, 0755); ino = ent->ino; vfs_s_insert_entry (path_element->class, dir, ent); @@ -1347,14 +1345,13 @@ vfs_s_open (const vfs_path_t * vpath, int flags, mode_t mode) ino->localname = vfs_path_free (tmp_vpath, FALSE); if (tmp_handle == -1) { - g_free (dirname); g_free (name); return NULL; } close (tmp_handle); } - g_free (dirname); + g_free (name); was_changed = TRUE; } @@ -1723,18 +1720,18 @@ vfs_s_normalize_filename_leading_spaces (struct vfs_s_inode *root_inode, size_t { struct vfs_s_entry *entry = VFS_ENTRY (iter->data); - if ((size_t) entry->ino->data_offset > final_num_spaces) + if ((size_t) entry->leading_spaces > final_num_spaces) { char *source_name, *spacer; source_name = entry->name; - spacer = g_strnfill (entry->ino->data_offset - final_num_spaces, ' '); + spacer = g_strnfill ((size_t) entry->leading_spaces - final_num_spaces, ' '); entry->name = g_strconcat (spacer, source_name, (char *) NULL); g_free (spacer); g_free (source_name); } - entry->ino->data_offset = -1; + entry->leading_spaces = -1; } } diff --git a/mcsrc/lib/vfs/interface.c b/mcsrc/lib/vfs/interface.c index 5fa066e5..6f2b7c82 100644 --- a/mcsrc/lib/vfs/interface.c +++ b/mcsrc/lib/vfs/interface.c @@ -6,6 +6,7 @@ Written by: Slava Zanko , 2011, 2013 + Andrew Borodin , 2011-2022 This file is part of the Midnight Commander. @@ -259,7 +260,7 @@ mc_open (const vfs_path_t * vpath, int flags, ...) result = vfs_new_handle (path_element->class, info); } else - errno = -EOPNOTSUPP; + errno = ENOTSUP; return result; } @@ -283,7 +284,7 @@ int mc_##name inarg \ \ result = path_element->class->name != NULL ? path_element->class->name callarg : -1; \ if (result == -1) \ - errno = path_element->class->name != NULL ? vfs_ferrno (path_element->class) : E_NOTSUPP; \ + errno = path_element->class->name != NULL ? vfs_ferrno (path_element->class) : ENOTSUP; \ return result; \ } @@ -319,7 +320,7 @@ mc_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2) if (result == -1) errno = path_element->class->symlink != NULL ? - vfs_ferrno (path_element->class) : E_NOTSUPP; + vfs_ferrno (path_element->class) : ENOTSUP; } } return result; @@ -345,7 +346,7 @@ ssize_t mc_##name (int handle, C void *buf, size_t count) \ \ result = vfs->name != NULL ? vfs->name (fsinfo, buf, count) : -1; \ if (result == -1) \ - errno = vfs->name != NULL ? vfs_ferrno (vfs) : E_NOTSUPP; \ + errno = vfs->name != NULL ? vfs_ferrno (vfs) : ENOTSUP; \ return result; \ } @@ -381,7 +382,7 @@ int mc_##name (const vfs_path_t *vpath1, const vfs_path_t *vpath2) \ result = path_element1->class->name != NULL \ ? path_element1->class->name (vpath1, vpath2) : -1; \ if (result == -1) \ - errno = path_element1->class->name != NULL ? vfs_ferrno (path_element1->class) : E_NOTSUPP; \ + errno = path_element1->class->name != NULL ? vfs_ferrno (path_element1->class) : ENOTSUP; \ return result; \ } @@ -467,14 +468,14 @@ mc_opendir (const vfs_path_t * vpath) path_element = (vfs_path_element_t *) vfs_path_get_by_index (vpath, -1); if (!vfs_path_element_valid (path_element)) { - errno = E_NOTSUPP; + errno = ENOTSUP; return NULL; } info = path_element->class->opendir ? path_element->class->opendir (vpath) : NULL; if (info == NULL) { - errno = path_element->class->opendir ? vfs_ferrno (path_element->class) : E_NOTSUPP; + errno = path_element->class->opendir ? vfs_ferrno (path_element->class) : ENOTSUP; return NULL; } @@ -534,7 +535,7 @@ mc_readdir (DIR * dirp) vfs_dirent_free (entry); } if (entry == NULL) - errno = vfs->readdir ? vfs_ferrno (vfs) : E_NOTSUPP; + errno = vfs->readdir ? vfs_ferrno (vfs) : ENOTSUP; return (entry != NULL) ? mc_readdir_result : NULL; } @@ -590,7 +591,7 @@ mc_stat (const vfs_path_t * vpath, struct stat *buf) { result = path_element->class->stat ? path_element->class->stat (vpath, buf) : -1; if (result == -1) - errno = path_element->class->name ? vfs_ferrno (path_element->class) : E_NOTSUPP; + errno = path_element->class->name ? vfs_ferrno (path_element->class) : ENOTSUP; } return result; @@ -612,7 +613,7 @@ mc_lstat (const vfs_path_t * vpath, struct stat *buf) { result = path_element->class->lstat ? path_element->class->lstat (vpath, buf) : -1; if (result == -1) - errno = path_element->class->name ? vfs_ferrno (path_element->class) : E_NOTSUPP; + errno = path_element->class->name ? vfs_ferrno (path_element->class) : ENOTSUP; } return result; @@ -636,7 +637,7 @@ mc_fstat (int handle, struct stat *buf) result = vfs->fstat ? vfs->fstat (fsinfo, buf) : -1; if (result == -1) - errno = vfs->fstat ? vfs_ferrno (vfs) : E_NOTSUPP; + errno = vfs->fstat ? vfs_ferrno (vfs) : ENOTSUP; return result; } @@ -688,7 +689,8 @@ mc_ungetlocalcopy (const vfs_path_t * pathname_vpath, const vfs_path_t * local_v /** * VFS chdir. * - * @param vpath VFS-path + * @param vpath VFS path. + * May be NULL. In this case NULL is returned and errno set to 0. * * @return 0 on success, -1 on failure. */ @@ -703,7 +705,10 @@ mc_chdir (const vfs_path_t * vpath) vfs_path_t *cd_vpath; if (vpath == NULL) + { + errno = 0; return (-1); + } if (vpath->relative) cd_vpath = vfs_path_to_absolute (vpath); @@ -711,9 +716,17 @@ mc_chdir (const vfs_path_t * vpath) cd_vpath = vfs_path_clone (vpath); path_element = vfs_path_get_by_index (cd_vpath, -1); - if (!vfs_path_element_valid (path_element) || path_element->class->chdir == NULL) + if (!vfs_path_element_valid (path_element)) + { + errno = EINVAL; goto error_end; + } + if (path_element->class->chdir == NULL) + { + errno = ENOTSUP; + goto error_end; + } result = path_element->class->chdir (cd_vpath); if (result == -1) @@ -785,7 +798,7 @@ mc_lseek (int fd, off_t offset, int whence) result = vfs->lseek ? vfs->lseek (fsinfo, offset, whence) : -1; if (result == -1) - errno = vfs->lseek ? vfs_ferrno (vfs) : E_NOTSUPP; + errno = vfs->lseek ? vfs_ferrno (vfs) : ENOTSUP; return result; } diff --git a/mcsrc/lib/vfs/parse_ls_vga.c b/mcsrc/lib/vfs/parse_ls_vga.c index fdc1f12d..4d023857 100644 --- a/mcsrc/lib/vfs/parse_ls_vga.c +++ b/mcsrc/lib/vfs/parse_ls_vga.c @@ -686,15 +686,15 @@ vfs_parse_ls_lga (const char *p, struct stat * s, char **filename, char **linkna char *t = NULL; const char *line = p; size_t skipped; - mode_t mode; + mode_t st_mode; if (strncmp (p, "total", 5) == 0) return FALSE; - mode = s->st_mode; /* WIN32, st_mode type may not be mode_t */ - if (!vfs_parse_filetype (p, &skipped, &mode)) + st_mode = s->st_mode; /* WIN32, st_mode type may not be mode_t */ + if (!vfs_parse_filetype (p, &skipped, &st_mode)) goto error; - s->st_mode = mode; + s->st_mode = st_mode; p += skipped; if (*p == ' ') /* Notwell 4 */ diff --git a/mcsrc/lib/vfs/path.c b/mcsrc/lib/vfs/path.c index 00e3f927..15f14232 100644 --- a/mcsrc/lib/vfs/path.c +++ b/mcsrc/lib/vfs/path.c @@ -6,7 +6,7 @@ Written by: Slava Zanko , 2011, 2013 - Andrew Borodin , 2013 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -899,23 +899,36 @@ vfs_path_add_element (vfs_path_t * vpath, const vfs_path_element_t * path_elemen /* * Get one path element by index. * - * @param vpath pointer to vfs_path_t object - * @param element_index element index. May have negative value (in this case count was started at the end of list). + * @param vpath pointer to vfs_path_t object. + * May be NULL. In this case NULL is returned and errno set to 0. + * @param element_index element index. May have negative value (in this case count was started at + * the end of list). If @element_index is out of range, NULL is returned and + * errno set to EINVAL. * - * @return path element. + * @return path element */ const vfs_path_element_t * vfs_path_get_by_index (const vfs_path_t * vpath, int element_index) { + int n; + if (vpath == NULL) + { + errno = 0; return NULL; + } - if (element_index < 0) - element_index += vfs_path_elements_count (vpath); + n = vfs_path_elements_count (vpath); if (element_index < 0) - vfs_die ("vfs_path_get_by_index: incorrect index!"); + element_index += n; + + if (element_index < 0 || element_index > n) + { + errno = EINVAL; + return NULL; + } return g_array_index (vpath->path, vfs_path_element_t *, element_index); } diff --git a/mcsrc/lib/vfs/vfs.c b/mcsrc/lib/vfs/vfs.c index ec05362a..36f990e3 100644 --- a/mcsrc/lib/vfs/vfs.c +++ b/mcsrc/lib/vfs/vfs.c @@ -7,7 +7,8 @@ Written by: 1995 Miguel de Icaza Jakub Jelinek, 1995 Pavel Machek, 1998 - Slava Zanko , 2013 + Slava Zanko , 2011-2013 + Andrew Borodin , 2011-2022 This file is part of the Midnight Commander. @@ -758,7 +759,7 @@ vfs_clone_file (int dest_vfs_fd, int src_vfs_fd) dest_class = vfs_class_find_by_handle (dest_vfs_fd, &dest_fd); if ((dest_class->flags & VFSF_LOCAL) == 0) { - errno = EOPNOTSUPP; + errno = ENOTSUP; return (-1); } if (dest_fd == NULL) @@ -770,7 +771,7 @@ vfs_clone_file (int dest_vfs_fd, int src_vfs_fd) src_class = vfs_class_find_by_handle (src_vfs_fd, &src_fd); if ((src_class->flags & VFSF_LOCAL) == 0) { - errno = EOPNOTSUPP; + errno = ENOTSUP; return (-1); } if (src_fd == NULL) @@ -783,7 +784,7 @@ vfs_clone_file (int dest_vfs_fd, int src_vfs_fd) #else (void) dest_vfs_fd; (void) src_vfs_fd; - errno = EOPNOTSUPP; + errno = ENOTSUP; return (-1); #endif } diff --git a/mcsrc/lib/vfs/vfs.h b/mcsrc/lib/vfs/vfs.h index a244ff3f..b2d3a80b 100644 --- a/mcsrc/lib/vfs/vfs.h +++ b/mcsrc/lib/vfs/vfs.h @@ -72,12 +72,6 @@ /* And now some defines for our errors. */ -#ifdef ENOSYS -#define E_NOTSUPP ENOSYS /* for use in vfs when module does not provide function */ -#else -#define E_NOTSUPP EFAULT /* Does this happen? */ -#endif - #ifdef ENOMSG #define E_UNKNOWN ENOMSG /* if we do not know what error happened */ #else diff --git a/mcsrc/lib/vfs/xdirentry.h b/mcsrc/lib/vfs/xdirentry.h index db90865f..36b4697e 100644 --- a/mcsrc/lib/vfs/xdirentry.h +++ b/mcsrc/lib/vfs/xdirentry.h @@ -10,7 +10,7 @@ #include #include -//WIN,fix +//WIN32,fix #include #include @@ -82,6 +82,7 @@ struct vfs_s_entry struct vfs_s_inode *dir; /* Directory we are in, i.e. our parent */ char *name; /* Name of this entry */ struct vfs_s_inode *ino; /* ... and its inode */ + ssize_t leading_spaces; /* number of leading spases in the file name */ }; /* Single virtual file - inode */ @@ -142,7 +143,7 @@ struct vfs_s_subclass struct vfs_s_entry *(*find_entry) (struct vfs_class * me, struct vfs_s_inode * root, const char *path, int follow, int flags); - int (*dir_load) (struct vfs_class * me, struct vfs_s_inode * ino, char *path); + int (*dir_load) (struct vfs_class * me, struct vfs_s_inode * ino, const char *path); gboolean (*dir_uptodate) (struct vfs_class * me, struct vfs_s_inode * ino); int (*file_store) (struct vfs_class * me, vfs_file_handler_t * fh, char *path, char *localname); @@ -200,7 +201,7 @@ void vfs_s_normalize_filename_leading_spaces (struct vfs_s_inode *root_inode, si static inline void vfs_s_store_filename_leading_spaces (struct vfs_s_entry *entry, size_t position) { - entry->ino->data_offset = (off_t) position; + entry->leading_spaces = (ssize_t) position; } #endif diff --git a/mcsrc/lib/widget/background.c b/mcsrc/lib/widget/background.c index d8deb2af..f0853124 100644 --- a/mcsrc/lib/widget/background.c +++ b/mcsrc/lib/widget/background.c @@ -5,7 +5,7 @@ The Free Software Foundation, Inc. Authors: - Andrew Borodin , 2020 + Andrew Borodin , 2020-2022 This file is part of the Midnight Commander. @@ -60,13 +60,8 @@ static void background_adjust (WBackground * b) { Widget *w = WIDGET (b); - Widget *wo = WIDGET (w->owner); - - w->y = wo->y; - w->x = wo->x; - w->lines = wo->lines; - w->cols = wo->cols; + w->rect = WIDGET (w->owner)->rect; w->pos_flags |= WPOS_KEEP_ALL; } @@ -78,7 +73,7 @@ background_draw (const WBackground * b) const Widget *w = CONST_WIDGET (b); tty_setcolor (b->color); - tty_fill_region (w->y, w->x, w->lines, w->cols, b->pattern); + tty_fill_region (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, b->pattern); } /* --------------------------------------------------------------------------------------------- */ @@ -111,12 +106,13 @@ WBackground * background_new (int y, int x, int lines, int cols, int color, unsigned char pattern, widget_cb_fn callback) { + WRect r = { y, x, lines, cols }; WBackground *b; Widget *w; b = g_new (WBackground, 1); w = WIDGET (b); - widget_init (w, y, x, lines, cols, callback != NULL ? callback : background_callback, NULL); + widget_init (w, &r, callback != NULL ? callback : background_callback, NULL); w->get_colors = background_get_colors; b->color = color; diff --git a/mcsrc/lib/widget/button.c b/mcsrc/lib/widget/button.c index 3e27a78b..da7acfb0 100644 --- a/mcsrc/lib/widget/button.c +++ b/mcsrc/lib/widget/button.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013, 2016 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -206,6 +206,7 @@ button_mouse_default_callback (Widget * w, mouse_msg_t msg, mouse_event_t * even WButton * button_new (int y, int x, int action, button_flags_t flags, const char *text, bcback_fn callback) { + WRect r = { y, x, 1, 1 }; WButton *b; Widget *w; @@ -215,8 +216,8 @@ button_new (int y, int x, int action, button_flags_t flags, const char *text, bc b->action = action; b->flags = flags; b->text = hotkey_new (text); - widget_init (w, y, x, 1, button_get_len (b), button_default_callback, - button_mouse_default_callback); + r.cols = button_get_len (b); + widget_init (w, &r, button_default_callback, button_mouse_default_callback); w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR | WOP_WANT_HOTKEY; b->callback = callback; b->hotpos = (b->text.hotkey != NULL) ? str_term_width1 (b->text.start) : -1; @@ -250,7 +251,7 @@ button_set_text (WButton * b, const char *text) hotkey_free (b->text); b->text = hk; b->hotpos = (b->text.hotkey != NULL) ? str_term_width1 (b->text.start) : -1; - w->cols = button_get_len (b); + w->rect.cols = button_get_len (b); widget_draw (w); } diff --git a/mcsrc/lib/widget/buttonbar.c b/mcsrc/lib/widget/buttonbar.c index bd386939..9193de3d 100644 --- a/mcsrc/lib/widget/buttonbar.c +++ b/mcsrc/lib/widget/buttonbar.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013, 2016 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -178,7 +178,7 @@ buttonbar_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi buttonbar_init_button_positions (bb); widget_gotoyx (w, 0, 0); tty_setcolor (DEFAULT_COLOR); - tty_printf ("%-*s", w->cols, ""); + tty_printf ("%-*s", w->rect.cols, ""); widget_gotoyx (w, 0, 0); for (i = 0; i < BUTTONBAR_LABELS_NUM; i++) @@ -240,12 +240,13 @@ buttonbar_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) WButtonBar * buttonbar_new (void) { + WRect r = { LINES - 1, 0, 1, COLS }; WButtonBar *bb; Widget *w; bb = g_new0 (WButtonBar, 1); w = WIDGET (bb); - widget_init (w, LINES - 1, 0, 1, COLS, buttonbar_callback, buttonbar_mouse_callback); + widget_init (w, &r, buttonbar_callback, buttonbar_mouse_callback); w->pos_flags = WPOS_KEEP_HORZ | WPOS_KEEP_BOTTOM; widget_want_hotkey (w, TRUE); diff --git a/mcsrc/lib/widget/check.c b/mcsrc/lib/widget/check.c index 3274d013..ca54e3b2 100644 --- a/mcsrc/lib/widget/check.c +++ b/mcsrc/lib/widget/check.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013, 2016 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -133,6 +133,7 @@ check_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) WCheck * check_new (int y, int x, gboolean state, const char *text) { + WRect r = { y, x, 1, 1 }; WCheck *c; Widget *w; @@ -140,7 +141,8 @@ check_new (int y, int x, gboolean state, const char *text) w = WIDGET (c); c->text = hotkey_new (text); /* 4 is width of "[X] " */ - widget_init (w, y, x, 1, 4 + hotkey_width (c->text), check_callback, check_mouse_callback); + r.cols = 4 + hotkey_width (c->text); + widget_init (w, &r, check_callback, check_mouse_callback); w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR | WOP_WANT_HOTKEY; c->state = state; @@ -166,9 +168,9 @@ check_set_text (WCheck * check, const char *text) check->text = hk; if (check->text.start[0] == '\0' && check->text.hotkey == NULL && check->text.end == NULL) - w->cols = 3; /* "[ ]" */ + w->rect.cols = 3; /* "[ ]" */ else - w->cols = 4 + hotkey_width (check->text); /* "[ ] text" */ + w->rect.cols = 4 + hotkey_width (check->text); /* "[ ] text" */ widget_draw (w); } diff --git a/mcsrc/lib/widget/dialog-switch.c b/mcsrc/lib/widget/dialog-switch.c index 3b17a7e0..73e3f80f 100644 --- a/mcsrc/lib/widget/dialog-switch.c +++ b/mcsrc/lib/widget/dialog-switch.c @@ -8,7 +8,7 @@ Written by: Daniel Borca , 2007 - Andrew Borodin , 2010, 2013 + Andrew Borodin , 2010-2022 This file is part of the Midnight Commander. @@ -237,7 +237,7 @@ dialog_switch_list (void) char *title; if (dlg->get_title != NULL) - title = dlg->get_title (dlg, WIDGET (listbox->list)->cols - 2); + title = dlg->get_title (dlg, WIDGET (listbox->list)->rect.cols - 2); else title = g_strdup (""); diff --git a/mcsrc/lib/widget/dialog.c b/mcsrc/lib/widget/dialog.c index 4ae23ebb..1c93d7cc 100644 --- a/mcsrc/lib/widget/dialog.c +++ b/mcsrc/lib/widget/dialog.c @@ -377,7 +377,7 @@ dlg_default_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) switch (msg) { case MSG_MOUSE_CLICK: - if (event->y < 0 || event->y >= w->lines || event->x < 0 || event->x >= w->cols) + if (event->y < 0 || event->y >= w->rect.lines || event->x < 0 || event->x >= w->rect.cols) { DIALOG (w)->ret_value = B_CANCEL; dlg_stop (DIALOG (w)); @@ -398,6 +398,7 @@ dlg_create (gboolean modal, int y1, int x1, int lines, int cols, widget_pos_flag gboolean compact, const int *colors, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback, const char *help_ctx, const char *title) { + WRect r = { y1, x1, lines, cols }; WDialog *new_d; Widget *w; WGroup *g; @@ -405,8 +406,8 @@ dlg_create (gboolean modal, int y1, int x1, int lines, int cols, widget_pos_flag new_d = g_new0 (WDialog, 1); w = WIDGET (new_d); g = GROUP (new_d); - widget_adjust_position (pos_flags, &y1, &x1, &lines, &cols); - group_init (g, y1, x1, lines, cols, callback != NULL ? callback : dlg_default_callback, + widget_adjust_position (pos_flags, &r); + group_init (g, &r, callback != NULL ? callback : dlg_default_callback, mouse_callback != NULL ? mouse_callback : dlg_default_mouse_callback); w->pos_flags = pos_flags; @@ -432,7 +433,8 @@ dlg_create (gboolean modal, int y1, int x1, int lines, int cols, widget_pos_flag { w->state |= WST_MODAL; - new_d->bg = WIDGET (frame_new (0, 0, w->lines, w->cols, title, FALSE, new_d->compact)); + new_d->bg = + WIDGET (frame_new (0, 0, w->rect.lines, w->rect.cols, title, FALSE, new_d->compact)); group_add_widget (g, new_d->bg); frame_set_title (FRAME (new_d->bg), title); } diff --git a/mcsrc/lib/widget/frame.c b/mcsrc/lib/widget/frame.c index 0a07b006..02f3b36e 100644 --- a/mcsrc/lib/widget/frame.c +++ b/mcsrc/lib/widget/frame.c @@ -5,7 +5,7 @@ The Free Software Foundation, Inc. Authors: - Andrew Borodin , 2020 + Andrew Borodin , 2020-2022 This file is part of the Midnight Commander. @@ -55,13 +55,8 @@ static void frame_adjust (WFrame * f) { Widget *w = WIDGET (f); - Widget *wo = WIDGET (w->owner); - - w->y = wo->y; - w->x = wo->x; - w->lines = wo->lines; - w->cols = wo->cols; + w->rect = WIDGET (w->owner)->rect; w->pos_flags |= WPOS_KEEP_ALL; } @@ -70,11 +65,12 @@ frame_adjust (WFrame * f) static void frame_draw (const WFrame * f) { - const Widget *w = CONST_WIDGET (f); + const Widget *wf = CONST_WIDGET (f); + const WRect *w = &wf->rect; int d = f->compact ? 0 : 1; const int *colors; - colors = widget_get_colors (w); + colors = widget_get_colors (wf); if (mc_global.tty.shadows) tty_draw_box_shadow (w->y, w->x, w->lines, w->cols, SHADOW_COLOR); @@ -87,7 +83,7 @@ frame_draw (const WFrame * f) { /* TODO: truncate long title */ tty_setcolor (colors[FRAME_COLOR_TITLE]); - widget_gotoyx (w, d, (w->cols - str_term_width1 (f->title)) / 2); + widget_gotoyx (f, d, (w->cols - str_term_width1 (f->title)) / 2); tty_print_string (f->title); } } @@ -99,12 +95,13 @@ frame_draw (const WFrame * f) WFrame * frame_new (int y, int x, int lines, int cols, const char *title, gboolean single, gboolean compact) { + WRect r = { y, x, lines, cols }; WFrame *f; Widget *w; f = g_new (WFrame, 1); w = WIDGET (f); - widget_init (w, y, x, lines, cols, frame_callback, NULL); + widget_init (w, &r, frame_callback, NULL); f->single = single; f->compact = compact; diff --git a/mcsrc/lib/widget/gauge.c b/mcsrc/lib/widget/gauge.c index f42a004a..327431a7 100644 --- a/mcsrc/lib/widget/gauge.c +++ b/mcsrc/lib/widget/gauge.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -68,7 +68,7 @@ gauge_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d if (!g->shown) { tty_setcolor (colors[DLG_COLOR_NORMAL]); - tty_printf ("%*s", w->cols, ""); + tty_printf ("%*s", w->rect.cols, ""); } else { @@ -90,7 +90,7 @@ gauge_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d done /= 256; } - gauge_len = w->cols - 7; /* 7 positions for percentage */ + gauge_len = w->rect.cols - 7; /* 7 positions for percentage */ percentage = (200 * done / total + 1) / 2; columns = (2 * gauge_len * done / total + 1) / 2; @@ -126,12 +126,13 @@ gauge_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d WGauge * gauge_new (int y, int x, int cols, gboolean shown, int max, int current) { + WRect r = { y, x, 1, cols }; WGauge *g; Widget *w; g = g_new (WGauge, 1); w = WIDGET (g); - widget_init (w, y, x, 1, cols, gauge_callback, NULL); + widget_init (w, &r, gauge_callback, NULL); g->shown = shown; if (max == 0) diff --git a/mcsrc/lib/widget/group.c b/mcsrc/lib/widget/group.c index 11d1ebb7..9fac9691 100644 --- a/mcsrc/lib/widget/group.c +++ b/mcsrc/lib/widget/group.c @@ -5,7 +5,7 @@ The Free Software Foundation, Inc. Written by: - Andrew Borodin , 2020 + Andrew Borodin , 2020-2022 This file is part of the Midnight Commander. @@ -198,8 +198,10 @@ group_default_make_global (Widget * w, const WRect * delta) } else if (w->owner != NULL) { - WRect r = { WIDGET (w->owner)->y, WIDGET (w->owner)->x, 0, 0 }; + WRect r = WIDGET (w->owner)->rect; + r.lines = 0; + r.cols = 0; /* change own coordinates */ widget_default_make_global (w, &r); /* change child widget coordinates */ @@ -232,8 +234,10 @@ group_default_make_local (Widget * w, const WRect * delta) } else if (w->owner != NULL) { - WRect r = { WIDGET (w->owner)->y, WIDGET (w->owner)->x, 0, 0 }; + WRect r = WIDGET (w->owner)->rect; + r.lines = 0; + r.cols = 0; /* change own coordinates */ widget_default_make_local (w, &r); /* change child widget coordinates */ @@ -382,12 +386,12 @@ group_widget_set_position (gpointer data, gpointer user_data) */ Widget *c = WIDGET (data); - Widget *g = WIDGET (c->owner); + const WRect *g = &CONST_WIDGET (c->owner)->rect; const widget_shift_scale_t *wss = (const widget_shift_scale_t *) user_data; - WRect r = { c->y, c->x, c->lines, c->cols }; + WRect r = c->rect; if ((c->pos_flags & WPOS_CENTER_HORZ) != 0) - r.x = g->x + (g->cols - c->cols) / 2; + r.x = g->x + (g->cols - c->rect.cols) / 2; else if ((c->pos_flags & WPOS_KEEP_LEFT) != 0 && (c->pos_flags & WPOS_KEEP_RIGHT) != 0) { r.x += wss->shift_x; @@ -399,7 +403,7 @@ group_widget_set_position (gpointer data, gpointer user_data) r.x += wss->shift_x + wss->scale_x; if ((c->pos_flags & WPOS_CENTER_VERT) != 0) - r.y = g->y + (g->lines - c->lines) / 2; + r.y = g->y + (g->lines - c->rect.lines) / 2; else if ((c->pos_flags & WPOS_KEEP_TOP) != 0 && (c->pos_flags & WPOS_KEEP_BOTTOM) != 0) { r.y += wss->shift_y; @@ -418,15 +422,12 @@ group_widget_set_position (gpointer data, gpointer user_data) static void group_set_position (WGroup * g, const WRect * r) { - Widget *w = WIDGET (g); + WRect *w = &WIDGET (g)->rect; widget_shift_scale_t wss; /* save old positions, will be used to reposition childs */ - WRect or = { w->y, w->x, w->lines, w->cols }; + WRect or = *w; - w->x = r->x; - w->y = r->y; - w->lines = r->lines; - w->cols = r->cols; + *w = *r; /* dialog is empty */ if (g->widgets == NULL) @@ -459,12 +460,8 @@ group_default_resize (WGroup * g, WRect * r) Widget *w = WIDGET (g); WRect r0; - if (r == NULL) - rect_init (&r0, w->y, w->x, w->lines, w->cols); - else - r0 = *r; - - widget_adjust_position (w->pos_flags, &r0.y, &r0.x, &r0.lines, &r0.cols); + r0 = r != NULL ? *r : w->rect; + widget_adjust_position (w->pos_flags, &r0); group_set_position (g, &r0); } @@ -597,13 +594,11 @@ group_handle_hotkey (WGroup * g, int key) */ void -group_init (WGroup * g, int y1, int x1, int lines, int cols, widget_cb_fn callback, - widget_mouse_cb_fn mouse_callback) +group_init (WGroup * g, const WRect * r, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback) { Widget *w = WIDGET (g); - widget_init (w, y1, x1, lines, cols, callback != NULL ? callback : group_default_callback, - mouse_callback); + widget_init (w, r, callback != NULL ? callback : group_default_callback, mouse_callback); w->mouse_handler = group_handle_mouse_event; @@ -778,10 +773,10 @@ group_add_widget_autopos (WGroup * g, void *w, widget_pos_flags_t pos_flags, con assert (ww != NULL); if ((pos_flags & WPOS_CENTER_HORZ) != 0) - ww->x = (wg->cols - ww->cols) / 2; + ww->rect.x = (wg->rect.cols - ww->rect.cols) / 2; if ((pos_flags & WPOS_CENTER_VERT) != 0) - ww->y = (wg->lines - ww->lines) / 2; + ww->rect.y = (wg->rect.lines - ww->rect.lines) / 2; ww->owner = g; ww->pos_flags = pos_flags; diff --git a/mcsrc/lib/widget/group.h b/mcsrc/lib/widget/group.h index f4485c26..3155d8f1 100644 --- a/mcsrc/lib/widget/group.h +++ b/mcsrc/lib/widget/group.h @@ -38,7 +38,7 @@ struct WGroup /*** declarations of public functions ************************************************************/ -void group_init (WGroup * g, int y1, int x1, int lines, int cols, widget_cb_fn callback, +void group_init (WGroup * g, const WRect * r, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback); /* Default callback for groups */ cb_ret_t group_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, diff --git a/mcsrc/lib/widget/groupbox.c b/mcsrc/lib/widget/groupbox.c index d154a0e9..ecd9f54b 100644 --- a/mcsrc/lib/widget/groupbox.c +++ b/mcsrc/lib/widget/groupbox.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -68,7 +68,7 @@ groupbox_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void disabled = widget_get_state (w, WST_DISABLED); tty_setcolor (disabled ? DISABLED_COLOR : colors[DLG_COLOR_NORMAL]); - tty_draw_box (w->y, w->x, w->lines, w->cols, TRUE); + tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, TRUE); if (g->title != NULL) { @@ -95,12 +95,13 @@ groupbox_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void WGroupbox * groupbox_new (int y, int x, int height, int width, const char *title) { + WRect r = { y, x, height, width }; WGroupbox *g; Widget *w; g = g_new (WGroupbox, 1); w = WIDGET (g); - widget_init (w, y, x, height, width, groupbox_callback, NULL); + widget_init (w, &r, groupbox_callback, NULL); g->title = NULL; groupbox_set_title (g, title); diff --git a/mcsrc/lib/widget/history.c b/mcsrc/lib/widget/history.c index 2c5ddd25..deb92ab1 100644 --- a/mcsrc/lib/widget/history.c +++ b/mcsrc/lib/widget/history.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009-2019 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -240,7 +240,7 @@ history_show (history_descriptor_t * hd) center of it, and let dialog function resize it to needed size. */ send_message (query_dlg, NULL, MSG_RESIZE, 0, NULL); - if (WIDGET (query_dlg)->y < hd->y) + if (WIDGET (query_dlg)->rect.y < hd->y) { /* history is above base widget -- revert order to place recent item at bottom */ /* revert history direction */ @@ -285,7 +285,7 @@ history_show (history_descriptor_t * hd) z = g_list_prepend (z, hd->release (hd, LENTRY (hi->data))); /* restore history direction */ - if (WIDGET (query_dlg)->y < hd->y) + if (WIDGET (query_dlg)->rect.y < hd->y) z = g_list_reverse (z); widget_destroy (WIDGET (query_dlg)); diff --git a/mcsrc/lib/widget/hline.c b/mcsrc/lib/widget/hline.c index 36e80636..867caf66 100644 --- a/mcsrc/lib/widget/hline.c +++ b/mcsrc/lib/widget/hline.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -61,10 +61,12 @@ hline_adjust_cols (WHLine * l) { if (l->auto_adjust_cols) { - Widget *w = WIDGET (l); - Widget *wo = WIDGET (w->owner); + Widget *wl = WIDGET (l); + const Widget *o = CONST_WIDGET (wl->owner); + WRect *w = &wl->rect; + const WRect *wo = &o->rect; - if (DIALOG (wo)->compact) + if (CONST_DIALOG (o)->compact) { w->x = wo->x; w->cols = wo->cols; @@ -92,7 +94,7 @@ hline_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d case MSG_RESIZE: hline_adjust_cols (l); - w->y = RECT (data)->y; + w->rect.y = RECT (data)->y; return MSG_HANDLED; case MSG_DRAW: @@ -106,13 +108,13 @@ hline_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d tty_setcolor (colors[DLG_COLOR_NORMAL]); } - tty_draw_hline (w->y, w->x + 1, ACS_HLINE, w->cols - 2); + tty_draw_hline (w->rect.y, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2); if (l->auto_adjust_cols) { widget_gotoyx (w, 0, 0); tty_print_alt_char (ACS_LTEE, FALSE); - widget_gotoyx (w, 0, w->cols - 1); + widget_gotoyx (w, 0, w->rect.cols - 1); tty_print_alt_char (ACS_RTEE, FALSE); } @@ -121,7 +123,7 @@ hline_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d int text_width; text_width = str_term_width1 (l->text); - widget_gotoyx (w, 0, (w->cols - text_width) / 2); + widget_gotoyx (w, 0, (w->rect.cols - text_width) / 2); tty_print_string (l->text); } return MSG_HANDLED; @@ -142,13 +144,14 @@ hline_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d WHLine * hline_new (int y, int x, int width) { + WRect r = { y, x, 1, width }; WHLine *l; Widget *w; - int lines = 1; l = g_new (WHLine, 1); w = WIDGET (l); - widget_init (w, y, x, lines, width < 0 ? 1 : width, hline_callback, NULL); + r.cols = width < 0 ? 1 : width; + widget_init (w, &r, hline_callback, NULL); l->text = NULL; l->auto_adjust_cols = (width < 0); l->transparent = FALSE; diff --git a/mcsrc/lib/widget/input.c b/mcsrc/lib/widget/input.c index ba1111b8..b58d6028 100644 --- a/mcsrc/lib/widget/input.c +++ b/mcsrc/lib/widget/input.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009-2016 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -70,7 +70,7 @@ input_colors_t input_colors; #endif #define should_show_history_button(in) \ - (in->history.list != NULL && WIDGET (in)->cols > HISTORY_BUTTON_WIDTH * 2 + 1 \ + (in->history.list != NULL && WIDGET (in)->rect.cols > HISTORY_BUTTON_WIDTH * 2 + 1 \ && WIDGET (in)->owner != NULL) /*** file scope type declarations ****************************************************************/ @@ -110,13 +110,13 @@ draw_history_button (WInput * in) else c = '|'; - widget_gotoyx (in, 0, WIDGET (in)->cols - HISTORY_BUTTON_WIDTH); + widget_gotoyx (in, 0, WIDGET (in)->rect.cols - HISTORY_BUTTON_WIDTH); disabled = widget_get_state (WIDGET (in), WST_DISABLED); tty_setcolor (disabled ? DISABLED_COLOR : in->color[WINPUTC_HISTORY]); #ifdef LARGE_HISTORY_BUTTON tty_print_string ("[ ]"); - widget_gotoyx (in, 0, WIDGET (in)->cols - HISTORY_BUTTON_WIDTH + 1); + widget_gotoyx (in, 0, WIDGET (in)->rect.cols - HISTORY_BUTTON_WIDTH + 1); #endif tty_print_char (c); @@ -148,23 +148,6 @@ input_eval_marks (WInput * in, long *start_mark, long *end_mark) /* --------------------------------------------------------------------------------------------- */ -static void -delete_region (WInput * in, int start, int end) -{ - int first = MIN (start, end); - int last = MAX (start, end); - - input_mark_cmd (in, FALSE); - in->point = first; - last = str_offset_to_pos (in->buffer, last); - first = str_offset_to_pos (in->buffer, first); - str_move (in->buffer + first, in->buffer + last); - in->charpoint = 0; - in->need_push = TRUE; -} - -/* --------------------------------------------------------------------------------------------- */ - static void do_show_hist (WInput * in) { @@ -173,7 +156,7 @@ do_show_hist (WInput * in) len = get_history_length (in->history.list); - history_descriptor_init (&hd, WIDGET (in)->y, WIDGET (in)->x, in->history.list, + history_descriptor_init (&hd, WIDGET (in)->rect.y, WIDGET (in)->rect.x, in->history.list, g_list_position (in->history.list, in->history.list)); history_show (&hd); @@ -232,31 +215,31 @@ input_history_strip_password (char *url) /* --------------------------------------------------------------------------------------------- */ static void -push_history (WInput * in, const char *text) +input_push_history (WInput * in) { char *t; gboolean empty; - if (text == NULL) - return; - - t = g_strstrip (g_strdup (text)); + t = g_strstrip (input_get_text (in)); empty = *t == '\0'; - g_free (t); - t = g_strdup (empty ? "" : text); - - if (!empty && in->history.name != NULL && in->strip_password) + if (!empty) { - /* - We got string user:pass@host without any VFS prefixes - and vfs_path_to_str_flags (t, VPF_STRIP_PASSWORD) doesn't work. - Therefore we want to strip password in separate algorithm - */ - char *url_with_stripped_password; - - url_with_stripped_password = input_history_strip_password (t); g_free (t); - t = url_with_stripped_password; + t = input_get_text (in); + + if (in->history.name != NULL && in->strip_password) + { + /* + We got string user:pass@host without any VFS prefixes + and vfs_path_to_str_flags (t, VPF_STRIP_PASSWORD) doesn't work. + Therefore we want to strip password in separate algorithm + */ + char *url_with_stripped_password; + + url_with_stripped_password = input_history_strip_password (t); + g_free (t); + t = url_with_stripped_password; + } } if (in->history.list == NULL || in->history.list->data == NULL @@ -277,81 +260,15 @@ push_history (WInput * in, const char *text) static void move_buffer_backward (WInput * in, int start, int end) { - int i, pos, len; int str_len; - str_len = str_length (in->buffer); + str_len = str_length (in->buffer->str); if (start >= str_len || end > str_len + 1) return; - pos = str_offset_to_pos (in->buffer, start); - len = str_offset_to_pos (in->buffer, end) - pos; - - for (i = pos; in->buffer[i + len - 1]; i++) - in->buffer[i] = in->buffer[i + len]; -} - -/* --------------------------------------------------------------------------------------------- */ - -static cb_ret_t -insert_char (WInput * in, int c_code) -{ - int res; - long m1, m2; - - if (input_eval_marks (in, &m1, &m2)) - delete_region (in, m1, m2); - - if (c_code == -1) - return MSG_NOT_HANDLED; - - if (in->charpoint >= MB_LEN_MAX) - return MSG_HANDLED; - - in->charbuf[in->charpoint] = c_code; - in->charpoint++; - - res = str_is_valid_char (in->charbuf, in->charpoint); - if (res < 0) - { - if (res != -2) - in->charpoint = 0; /* broken multibyte char, skip */ - return MSG_HANDLED; - } - - in->need_push = TRUE; - if (strlen (in->buffer) + 1 + in->charpoint >= in->current_max_size) - { - /* Expand the buffer */ - size_t new_length; - char *narea; - - new_length = in->current_max_size + WIDGET (in)->cols + in->charpoint; - narea = g_try_renew (char, in->buffer, new_length); - if (narea != NULL) - { - in->buffer = narea; - in->current_max_size = new_length; - } - } - - if (strlen (in->buffer) + in->charpoint < in->current_max_size) - { - size_t i; - /* bytes from begin */ - size_t ins_point = str_offset_to_pos (in->buffer, in->point); - /* move chars */ - size_t rest_bytes = strlen (in->buffer + ins_point); - - for (i = rest_bytes + 1; i > 0; i--) - in->buffer[ins_point + i + in->charpoint - 1] = in->buffer[ins_point + i - 1]; - - memcpy (in->buffer + ins_point, in->charbuf, in->charpoint); - in->point++; - } - - in->charpoint = 0; - return MSG_HANDLED; + start = str_offset_to_pos (in->buffer->str, start); + end = str_offset_to_pos (in->buffer->str, end); + g_string_erase (in->buffer, start, end - start); } /* --------------------------------------------------------------------------------------------- */ @@ -368,7 +285,7 @@ beginning_of_line (WInput * in) static void end_of_line (WInput * in) { - in->point = str_length (in->buffer); + in->point = str_length (in->buffer->str); in->charpoint = 0; } @@ -377,11 +294,14 @@ end_of_line (WInput * in) static void backward_char (WInput * in) { - const char *act; - - act = in->buffer + str_offset_to_pos (in->buffer, in->point); if (in->point > 0) - in->point -= str_cprev_noncomb_char (&act, in->buffer); + { + const char *act; + + act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point); + in->point -= str_cprev_noncomb_char (&act, in->buffer->str); + } + in->charpoint = 0; } @@ -392,7 +312,7 @@ forward_char (WInput * in) { const char *act; - act = in->buffer + str_offset_to_pos (in->buffer, in->point); + act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point); if (act[0] != '\0') in->point += str_cnext_noncomb_char (&act); in->charpoint = 0; @@ -405,17 +325,13 @@ forward_word (WInput * in) { const char *p; - p = in->buffer + str_offset_to_pos (in->buffer, in->point); - while (p[0] != '\0' && (str_isspace (p) || str_ispunct (p))) - { + p = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point); + + for (; p[0] != '\0' && (str_isspace (p) || str_ispunct (p)); in->point++) str_cnext_char (&p); - in->point++; - } - while (p[0] != '\0' && !str_isspace (p) && !str_ispunct (p)) - { + + for (; p[0] != '\0' && !str_isspace (p) && !str_ispunct (p); in->point++) str_cnext_char (&p); - in->point++; - } } /* --------------------------------------------------------------------------------------------- */ @@ -425,9 +341,9 @@ backward_word (WInput * in) { const char *p; - p = in->buffer + str_offset_to_pos (in->buffer, in->point); + p = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point); - while (p != in->buffer) + for (; p != in->buffer->str; in->point--) { const char *p_tmp; @@ -438,15 +354,13 @@ backward_word (WInput * in) p = p_tmp; break; } - in->point--; } - while (p != in->buffer) + + for (; p != in->buffer->str; in->point--) { str_cprev_char (&p); if (str_isspace (p) || str_ispunct (p)) break; - - in->point--; } } @@ -455,13 +369,14 @@ backward_word (WInput * in) static void backward_delete (WInput * in) { - const char *act = in->buffer + str_offset_to_pos (in->buffer, in->point); + const char *act; int start; if (in->point == 0) return; - start = in->point - str_cprev_noncomb_char (&act, in->buffer); + act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point); + start = in->point - str_cprev_noncomb_char (&act, in->buffer->str); move_buffer_backward (in, start, in->point); in->charpoint = 0; in->need_push = TRUE; @@ -470,22 +385,6 @@ backward_delete (WInput * in) /* --------------------------------------------------------------------------------------------- */ -static void -delete_char (WInput * in) -{ - const char *act; - int end = in->point; - - act = in->buffer + str_offset_to_pos (in->buffer, in->point); - end += str_cnext_noncomb_char (&act); - - move_buffer_backward (in, in->point, end); - in->charpoint = 0; - in->need_push = TRUE; -} - -/* --------------------------------------------------------------------------------------------- */ - static void copy_region (WInput * in, int start, int end) { @@ -503,10 +402,10 @@ copy_region (WInput * in, int start, int end) g_free (kill_buffer); - first = str_offset_to_pos (in->buffer, first); - last = str_offset_to_pos (in->buffer, last); + first = str_offset_to_pos (in->buffer->str, first); + last = str_offset_to_pos (in->buffer->str, last); - kill_buffer = g_strndup (in->buffer + first, last - first); + kill_buffer = g_strndup (in->buffer->str + first, last - first); mc_event_raise (MCEVENT_GROUP_CORE, "clipboard_text_to_file", kill_buffer); /* try use external clipboard utility */ @@ -515,6 +414,74 @@ copy_region (WInput * in, int start, int end) /* --------------------------------------------------------------------------------------------- */ +static void +delete_region (WInput * in, int start, int end) +{ + int first = MIN (start, end); + int last = MAX (start, end); + + input_mark_cmd (in, FALSE); + in->point = first; + move_buffer_backward (in, first, last); + in->charpoint = 0; + in->need_push = TRUE; +} + +/* --------------------------------------------------------------------------------------------- */ + +static cb_ret_t +insert_char (WInput * in, int c_code) +{ + int res; + long m1, m2; + size_t ins_point; + + if (input_eval_marks (in, &m1, &m2)) + delete_region (in, m1, m2); + + if (c_code == -1) + return MSG_NOT_HANDLED; + + if (in->charpoint >= MB_LEN_MAX) + return MSG_HANDLED; + + in->charbuf[in->charpoint] = c_code; + in->charpoint++; + + res = str_is_valid_char (in->charbuf, in->charpoint); + if (res < 0) + { + if (res != -2) + in->charpoint = 0; /* broken multibyte char, skip */ + return MSG_HANDLED; + } + + in->need_push = TRUE; + ins_point = str_offset_to_pos (in->buffer->str, in->point); + g_string_insert_len (in->buffer, ins_point, in->charbuf, in->charpoint); + in->point++; + in->charpoint = 0; + + return MSG_HANDLED; +} + +/* --------------------------------------------------------------------------------------------- */ + +static void +delete_char (WInput * in) +{ + const char *act; + int end; + + act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point); + end = in->point + str_cnext_noncomb_char (&act); + move_buffer_backward (in, in->point, end); + in->charpoint = 0; + in->need_push = TRUE; +} + +/* --------------------------------------------------------------------------------------------- */ + static void kill_word (WInput * in) { @@ -569,10 +536,10 @@ kill_line (WInput * in) { int chp; - chp = str_offset_to_pos (in->buffer, in->point); + chp = str_offset_to_pos (in->buffer->str, in->point); g_free (kill_buffer); - kill_buffer = g_strdup (&in->buffer[chp]); - in->buffer[chp] = '\0'; + kill_buffer = g_strndup (in->buffer->str + chp, in->buffer->len - chp); + g_string_set_size (in->buffer, chp); in->charpoint = 0; } @@ -582,7 +549,7 @@ static void clear_line (WInput * in) { in->need_push = TRUE; - in->buffer[0] = '\0'; + g_string_set_size (in->buffer, 0); in->point = 0; in->mark = -1; in->charpoint = 0; @@ -594,7 +561,7 @@ static void ins_from_clip (WInput * in) { char *p = NULL; - ev_clipboard_text_from_file_t event_data; + ev_clipboard_text_from_file_t event_data = { NULL, FALSE }; /* try use external clipboard utility */ mc_event_raise (MCEVENT_GROUP_CORE, "clipboard_file_from_ext_clip", NULL); @@ -623,7 +590,7 @@ hist_prev (WInput * in) return; if (in->need_push) - push_history (in, in->buffer); + input_push_history (in); prev = g_list_previous (in->history.current); if (prev != NULL) @@ -644,7 +611,7 @@ hist_next (WInput * in) if (in->need_push) { - push_history (in, in->buffer); + input_push_history (in); input_assign_text (in, ""); return; } @@ -672,7 +639,7 @@ hist_next (WInput * in) static void port_region_marked_for_delete (WInput * in) { - in->buffer[0] = '\0'; + g_string_set_size (in->buffer, 0); in->point = 0; in->first = FALSE; in->charpoint = 0; @@ -875,7 +842,7 @@ input_save_history (const gchar * event_group_name, const gchar * event_name, { ev_history_load_save_t *ev = (ev_history_load_save_t *) data; - push_history (in, in->buffer); + input_push_history (in); if (in->history.changed) mc_config_history_save (ev->cfg, in->history.name, in->history.list); in->history.changed = FALSE; @@ -889,12 +856,6 @@ input_save_history (const gchar * event_group_name, const gchar * event_name, static void input_destroy (WInput * in) { - if (in == NULL) - { - fprintf (stderr, "Internal error: null Input *\n"); - exit (EXIT_FAILURE); - } - input_complete_free (in); /* clean history */ @@ -905,7 +866,7 @@ input_destroy (WInput * in) g_list_free_full (in->history.list, g_free); } g_free (in->history.name); - g_free (in->buffer); + g_string_free (in->buffer, TRUE); MC_PTR_FREE (kill_buffer); } @@ -922,10 +883,10 @@ input_screen_to_point (const WInput * in, int x) if (x < 0) return 0; - if (x < str_term_width1 (in->buffer)) - return str_column_to_pos (in->buffer, x); + if (x < str_term_width1 (in->buffer->str)) + return str_column_to_pos (in->buffer->str, x); - return str_length (in->buffer); + return str_length (in->buffer->str); } /* --------------------------------------------------------------------------------------------- */ @@ -942,7 +903,7 @@ input_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) case MSG_MOUSE_DOWN: widget_select (w); - if (event->x >= w->cols - HISTORY_BUTTON_WIDTH && should_show_history_button (in)) + if (event->x >= w->rect.cols - HISTORY_BUTTON_WIDTH && should_show_history_button (in)) do_show_hist (in); else { @@ -988,12 +949,13 @@ WInput * input_new (int y, int x, const int *colors, int width, const char *def_text, const char *histname, input_complete_t completion_flags) { + WRect r = { y, x, 1, width }; WInput *in; Widget *w; in = g_new (WInput, 1); w = WIDGET (in); - widget_init (w, y, x, 1, width, input_callback, input_mouse_callback); + widget_init (w, &r, input_callback, input_mouse_callback); w->options |= WOP_SELECTABLE | WOP_IS_INPUT | WOP_WANT_CURSOR; w->keymap = input_map; @@ -1006,8 +968,7 @@ input_new (int y, int x, const int *colors, int width, const char *def_text, in->strip_password = FALSE; /* in->buffer will be corrected in "history_load" event handler */ - in->current_max_size = width + 1; - in->buffer = g_new0 (char, in->current_max_size); + in->buffer = g_string_sized_new (width); /* init completions before input_assign_text() call */ in->completions = NULL; @@ -1093,7 +1054,7 @@ input_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d return MSG_HANDLED; case MSG_CURSOR: - widget_gotoyx (in, 0, str_term_width2 (in->buffer, in->point) - in->term_first_shown); + widget_gotoyx (in, 0, str_term_width2 (in->buffer->str, in->point) - in->term_first_shown); return MSG_HANDLED; case MSG_DESTROY: @@ -1170,9 +1131,6 @@ input_handle_char (WInput * in, int key) void input_assign_text (WInput * in, const char *text) { - Widget *w = WIDGET (in); - size_t text_len, buffer_len; - if (text == NULL) text = ""; @@ -1180,27 +1138,13 @@ input_assign_text (WInput * in, const char *text) in->mark = -1; in->need_push = TRUE; in->charpoint = 0; - - text_len = strlen (text); - buffer_len = 1 + MAX ((size_t) w->cols, text_len); - in->current_max_size = buffer_len; - if (buffer_len > (size_t) w->cols) - in->buffer = g_realloc (in->buffer, buffer_len); - memmove (in->buffer, text, text_len + 1); - in->point = str_length (in->buffer); + g_string_assign (in->buffer, text); + in->point = str_length (in->buffer->str); input_update (in, TRUE); } /* --------------------------------------------------------------------------------------------- */ -gboolean -input_is_empty (const WInput * in) -{ - return (in == NULL || in->buffer == NULL || in->buffer[0] == '\0'); -} - -/* --------------------------------------------------------------------------------------------- */ - /* Inserts text in input line */ void input_insert (WInput * in, const char *text, gboolean insert_extra_space) @@ -1221,7 +1165,7 @@ input_set_point (WInput * in, int pos) { int max_pos; - max_pos = str_length (in->buffer); + max_pos = str_length (in->buffer->str); pos = MIN (pos, max_pos); if (pos != in->point) input_complete_free (in); @@ -1235,7 +1179,8 @@ input_set_point (WInput * in, int pos) void input_update (WInput * in, gboolean clear_first) { - Widget *w = WIDGET (in); + Widget *wi = WIDGET (in); + const WRect *w = &wi->rect; int has_history = 0; int buf_len; const char *cp; @@ -1245,7 +1190,7 @@ input_update (WInput * in, gboolean clear_first) return; /* don't draw widget not put into dialog */ - if (w->owner == NULL || !widget_get_state (WIDGET (w->owner), WST_ACTIVE)) + if (wi->owner == NULL || !widget_get_state (WIDGET (wi->owner), WST_ACTIVE)) return; if (clear_first) @@ -1254,12 +1199,12 @@ input_update (WInput * in, gboolean clear_first) if (should_show_history_button (in)) has_history = HISTORY_BUTTON_WIDTH; - buf_len = str_length (in->buffer); + buf_len = str_length (in->buffer->str); /* Adjust the mark */ in->mark = MIN (in->mark, buf_len); - pw = str_term_width2 (in->buffer, in->point); + pw = str_term_width2 (in->buffer->str, in->point); /* Make the point visible */ if ((pw < in->term_first_shown) || (pw >= in->term_first_shown + w->cols - has_history)) @@ -1272,7 +1217,7 @@ input_update (WInput * in, gboolean clear_first) if (has_history != 0) draw_history_button (in); - if (widget_get_state (w, WST_DISABLED)) + if (widget_get_state (wi, WST_DISABLED)) tty_setcolor (DISABLED_COLOR); else if (in->first) tty_setcolor (in->color[WINPUTC_UNCHANGED]); @@ -1284,7 +1229,7 @@ input_update (WInput * in, gboolean clear_first) if (!in->is_password) { if (in->mark < 0) - tty_print_string (str_term_substring (in->buffer, in->term_first_shown, + tty_print_string (str_term_substring (in->buffer->str, in->term_first_shown, w->cols - has_history)); else { @@ -1293,26 +1238,27 @@ input_update (WInput * in, gboolean clear_first) if (input_eval_marks (in, &m1, &m2)) { tty_setcolor (in->color[WINPUTC_MAIN]); - cp = str_term_substring (in->buffer, in->term_first_shown, w->cols - has_history); + cp = str_term_substring (in->buffer->str, in->term_first_shown, + w->cols - has_history); tty_print_string (cp); tty_setcolor (in->color[WINPUTC_MARK]); if (m1 < in->term_first_shown) { widget_gotoyx (in, 0, 0); - tty_print_string (str_term_substring - (in->buffer, in->term_first_shown, - m2 - in->term_first_shown)); + m1 = in->term_first_shown; + m2 -= m1; } else { - int sel_width, buf_width; + int buf_width; widget_gotoyx (in, 0, m1 - in->term_first_shown); - buf_width = str_term_width2 (in->buffer, m1); - sel_width = - MIN (m2 - m1, (w->cols - has_history) - (buf_width - in->term_first_shown)); - tty_print_string (str_term_substring (in->buffer, m1, sel_width)); + buf_width = str_term_width2 (in->buffer->str, m1); + m2 = MIN (m2 - m1, + (w->cols - has_history) - (buf_width - in->term_first_shown)); } + + tty_print_string (str_term_substring (in->buffer->str, m1, m2)); } } } @@ -1320,7 +1266,7 @@ input_update (WInput * in, gboolean clear_first) { int i; - cp = str_term_substring (in->buffer, in->term_first_shown, w->cols - has_history); + cp = str_term_substring (in->buffer->str, in->term_first_shown, w->cols - has_history); tty_setcolor (in->color[WINPUTC_MAIN]); for (i = 0; i < w->cols - has_history; i++) { @@ -1361,9 +1307,9 @@ input_disable_update (WInput * in) void input_clean (WInput * in) { - push_history (in, in->buffer); + input_push_history (in); in->need_push = TRUE; - in->buffer[0] = '\0'; + g_string_set_size (in->buffer, 0); in->point = 0; in->charpoint = 0; in->mark = -1; diff --git a/mcsrc/lib/widget/input.h b/mcsrc/lib/widget/input.h index 2a855424..5dc433e2 100644 --- a/mcsrc/lib/widget/input.h +++ b/mcsrc/lib/widget/input.h @@ -46,16 +46,16 @@ typedef int input_colors_t[WINPUTC_COUNT_COLORS]; typedef struct { Widget widget; + + GString *buffer; const int *color; int point; /* cursor position in the input line in characters */ int mark; /* the mark position in characters; negative value means no marked text */ int term_first_shown; /* column of the first shown character */ - size_t current_max_size; /* maximum length of input line (bytes) */ gboolean first; /* is first keystroke? */ int disable_update; /* do we want to skip updates? */ gboolean is_password; /* is this a password input line? */ gboolean init_from_history; /* init text will be get from history */ - char *buffer; /* pointer to editing buffer */ gboolean need_push; /* need to push the current Input on hist? */ gboolean strip_password; /* need to strip password before placing string to history */ char **completions; /* possible completions array */ @@ -91,7 +91,6 @@ cb_ret_t input_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm void input_set_default_colors (void); cb_ret_t input_handle_char (WInput * in, int key); void input_assign_text (WInput * in, const char *text); -gboolean input_is_empty (const WInput * in); void input_insert (WInput * in, const char *text, gboolean insert_extra_space); void input_set_point (WInput * in, int pos); void input_update (WInput * in, gboolean clear_first); @@ -103,6 +102,54 @@ void input_clean (WInput * in); void input_complete (WInput * in); void input_complete_free (WInput * in); +/* --------------------------------------------------------------------------------------------- */ /*** inline functions ****************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ + +/** + * Get text of input line. + * + * @param in input line + * + * @return newly allocated string that contains a copy of @in's text. + */ +static inline char * +input_get_text (const WInput * in) +{ + return g_strndup (in->buffer->str, in->buffer->len); +} + +/* --------------------------------------------------------------------------------------------- */ + +/** + * Get pointer to input line buffer. + * + * @param in input line + * + * @return pointer to @in->buffer->str. + */ +static inline const char * +input_get_ctext (const WInput * in) +{ + return in->buffer->str; +} + +/* --------------------------------------------------------------------------------------------- */ + +/** + * Is input line empty or not. + * + * @param in input line + * + * @return TRUE if buffer of @in is empty, FALSE othewise. + */ +static inline gboolean +input_is_empty (const WInput * in) +{ + return (in->buffer->len == 0); +} + +/* --------------------------------------------------------------------------------------------- */ + #endif /* MC__WIDGET_INPUT_H */ diff --git a/mcsrc/lib/widget/input_complete.c b/mcsrc/lib/widget/input_complete.c index 6e2282d4..892d1f92 100644 --- a/mcsrc/lib/widget/input_complete.c +++ b/mcsrc/lib/widget/input_complete.c @@ -8,7 +8,7 @@ Written by: Jakub Jelinek, 1995 Slava Zanko , 2013 - Andrew Borodin , 2013 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -986,38 +986,47 @@ insert_text (WInput * in, char *text, ssize_t size) { size_t text_len; int buff_len; + ssize_t new_size; text_len = strlen (text); - buff_len = str_length (in->buffer); + buff_len = str_length (in->buffer->str); if (size < 0) size = (ssize_t) text_len; else size = MIN (size, (ssize_t) text_len); - size += start - end; - if (strlen (in->buffer) + size >= (size_t) in->current_max_size) + + new_size = size + start - end; + if (new_size != 0) { - /* Expand the buffer */ - char *narea; - Widget *w = WIDGET (in); + /* make a hole within buffer */ + + size_t tail_len; - narea = g_try_realloc (in->buffer, in->current_max_size + size + w->cols); - if (narea != NULL) + tail_len = in->buffer->len - end; + if (tail_len != 0) { - in->buffer = narea; - in->current_max_size += size + w->cols; + char *tail; + size_t hole_end; + + tail = g_strndup (in->buffer->str + end, tail_len); + + hole_end = end + new_size; + if (in->buffer->len < hole_end) + g_string_set_size (in->buffer, hole_end + tail_len); + + g_string_overwrite_len (in->buffer, hole_end, tail, tail_len); + + g_free (tail); } } - if (strlen (in->buffer) + 1 < (size_t) in->current_max_size) - { - if (size != 0) - memmove (in->buffer + end + size, in->buffer + end, strlen (&in->buffer[end]) + 1); - memmove (in->buffer + start, text, size - (start - end)); - in->point += str_length (in->buffer) - buff_len; - input_update (in, TRUE); - end += size; - } - return size != 0; + g_string_overwrite_len (in->buffer, start, text, size); + + in->point += str_length (in->buffer->str) - buff_len; + input_update (in, TRUE); + end += new_size; + + return new_size != 0; } /* --------------------------------------------------------------------------------------------- */ @@ -1053,7 +1062,7 @@ complete_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void /* Refill the list box and start again */ else if (end == min_end) { - end = str_get_prev_char (&input->buffer[end]) - input->buffer; + end = str_get_prev_char (input->buffer->str + end) - input->buffer->str; input_handle_char (input, parm); h->ret_value = B_USER; dlg_stop (h); @@ -1064,14 +1073,14 @@ complete_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void int i; GList *e; - new_end = str_get_prev_char (&input->buffer[end]) - input->buffer; + new_end = str_get_prev_char (input->buffer->str + end) - input->buffer->str; for (i = 0, e = listbox_get_first_link (LISTBOX (g->current->data)); e != NULL; i++, e = g_list_next (e)) { WLEntry *le = LENTRY (e->data); - if (strncmp (input->buffer + start, le->text, new_end - start) == 0) + if (strncmp (input->buffer->str + start, le->text, new_end - start) == 0) { listbox_select_entry (LISTBOX (g->current->data), i); end = new_end; @@ -1125,8 +1134,8 @@ complete_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void { WLEntry *le = LENTRY (e->data); - if (strncmp (input->buffer + start, le->text, end - start) == 0 - && strncmp (&le->text[end - start], buff, bl) == 0) + if (strncmp (input->buffer->str + start, le->text, end - start) == 0 + && strncmp (le->text + end - start, buff, bl) == 0) { if (need_redraw == 0) { @@ -1205,7 +1214,7 @@ complete_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void static gboolean complete_engine (WInput * in, int what_to_do) { - if (in->completions != NULL && str_offset_to_pos (in->buffer, in->point) != end) + if (in->completions != NULL && str_offset_to_pos (in->buffer->str, in->point) != end) input_complete_free (in); if (in->completions == NULL) @@ -1242,8 +1251,8 @@ complete_engine (WInput * in, int what_to_do) maxlen = i; } - start_x = WIDGET (in)->x; - start_y = WIDGET (in)->y; + start_x = WIDGET (in)->rect.x; + start_y = WIDGET (in)->rect.y; if (start_y - 2 >= count) { y = start_y - 2 - count; @@ -1418,9 +1427,9 @@ complete_engine_fill_completions (WInput * in) word_separators = (in->completion_flags & INPUT_COMPLETE_SHELL_ESC) ? " \t;|<>" : "\t;|<>"; - end = str_offset_to_pos (in->buffer, in->point); + end = str_offset_to_pos (in->buffer->str, in->point); - s = in->buffer; + s = in->buffer->str; if (in->point != 0) { /* get symbol before in->point */ @@ -1430,20 +1439,20 @@ complete_engine_fill_completions (WInput * in) str_next_char (&s); } - for (; s >= in->buffer; str_prev_char (&s)) + for (; s >= in->buffer->str; str_prev_char (&s)) { - start = s - in->buffer; - if (strchr (word_separators, *s) != NULL && !strutils_is_char_escaped (in->buffer, s)) + start = s - in->buffer->str; + if (strchr (word_separators, *s) != NULL && !strutils_is_char_escaped (in->buffer->str, s)) break; } if (start < end) { str_next_char (&s); - start = s - in->buffer; + start = s - in->buffer->str; } - in->completions = try_complete (in->buffer, &start, &end, in->completion_flags); + in->completions = try_complete (in->buffer->str, &start, &end, in->completion_flags); } /* --------------------------------------------------------------------------------------------- */ @@ -1454,7 +1463,7 @@ input_complete (WInput * in) { int engine_flags; - if (!str_is_valid_string (in->buffer)) + if (!str_is_valid_string (in->buffer->str)) return; if (in->completions != NULL) diff --git a/mcsrc/lib/widget/label.c b/mcsrc/lib/widget/label.c index d03cee20..97f82af2 100644 --- a/mcsrc/lib/widget/label.c +++ b/mcsrc/lib/widget/label.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -101,7 +101,7 @@ label_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d } widget_gotoyx (w, y, 0); - tty_print_string (str_fit_to_term (p, w->cols, align)); + tty_print_string (str_fit_to_term (p, w->rect.cols, align)); if (q == NULL) break; @@ -129,17 +129,16 @@ label_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d WLabel * label_new (int y, int x, const char *text) { + WRect r = { y, x, 1, 1 }; WLabel *l; Widget *w; - int cols = 1; - int lines = 1; if (text != NULL) - str_msg_term_size (text, &lines, &cols); + str_msg_term_size (text, &r.lines, &r.cols); l = g_new (WLabel, 1); w = WIDGET (l); - widget_init (w, y, x, lines, cols, label_callback, NULL); + widget_init (w, &r, label_callback, NULL); l->text = g_strdup (text); l->auto_adjust_cols = TRUE; @@ -154,7 +153,7 @@ void label_set_text (WLabel * label, const char *text) { Widget *w = WIDGET (label); - int newcols = w->cols; + int newcols = w->rect.cols; int newlines; if (label->text != NULL && text != NULL && strcmp (label->text, text) == 0) @@ -170,17 +169,14 @@ label_set_text (WLabel * label, const char *text) if (label->auto_adjust_cols) { str_msg_term_size (text, &newlines, &newcols); - if (newcols > w->cols) - w->cols = newcols; - if (newlines > w->lines) - w->lines = newlines; + w->rect.cols = MAX (newcols, w->rect.cols); + w->rect.lines = MAX (newlines, w->rect.lines); } } widget_draw (w); - if (newcols < w->cols) - w->cols = newcols; + w->rect.cols = MIN (newcols, w->rect.cols); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/lib/widget/listbox.c b/mcsrc/lib/widget/listbox.c index e14f3cc1..80e8ebf0 100644 --- a/mcsrc/lib/widget/listbox.c +++ b/mcsrc/lib/widget/listbox.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013, 2016 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -86,16 +86,16 @@ listbox_entry_free (void *data) /* --------------------------------------------------------------------------------------------- */ static void -listbox_drawscroll (WListbox * l) +listbox_drawscroll (const WListbox * l) { - Widget *w = WIDGET (l); + const WRect *w = &CONST_WIDGET (l)->rect; int max_line = w->lines - 1; int line = 0; int i; int length; /* Are we at the top? */ - widget_gotoyx (w, 0, w->cols); + widget_gotoyx (l, 0, w->cols); if (l->top == 0) tty_print_one_vline (TRUE); else @@ -116,7 +116,7 @@ listbox_drawscroll (WListbox * l) for (i = 1; i < max_line; i++) { - widget_gotoyx (w, i, w->cols); + widget_gotoyx (l, i, w->cols); if (i != line) tty_print_one_vline (TRUE); else @@ -129,7 +129,8 @@ listbox_drawscroll (WListbox * l) static void listbox_draw (WListbox * l, gboolean focused) { - Widget *w = WIDGET (l); + Widget *wl = WIDGET (l); + const WRect *w = &CONST_WIDGET (l)->rect; const int *colors; gboolean disabled; int normalc, selc; @@ -139,9 +140,9 @@ listbox_draw (WListbox * l, gboolean focused) int i; int sel_line = -1; - colors = widget_get_colors (w); + colors = widget_get_colors (wl); - disabled = widget_get_state (w, WST_DISABLED); + disabled = widget_get_state (wl, WST_DISABLED); normalc = disabled ? DISABLED_COLOR : colors[DLG_COLOR_NORMAL]; selc = disabled ? DISABLED_COLOR : colors[focused ? DLG_COLOR_HOT_FOCUS : DLG_COLOR_FOCUS]; @@ -271,7 +272,7 @@ static cb_ret_t listbox_execute_cmd (WListbox * l, long command) { cb_ret_t ret = MSG_HANDLED; - Widget *w = WIDGET (l); + const WRect *w = &CONST_WIDGET (l)->rect; if (l->list == NULL || g_queue_is_empty (l->list)) return MSG_NOT_HANDLED; @@ -547,15 +548,14 @@ listbox_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) WListbox * listbox_new (int y, int x, int height, int width, gboolean deletable, lcback_fn callback) { + WRect r = { y, x, 1, width }; WListbox *l; Widget *w; - if (height <= 0) - height = 1; - l = g_new (WListbox, 1); w = WIDGET (l); - widget_init (w, y, x, height, width, listbox_callback, listbox_mouse_callback); + r.lines = height > 0 ? height : 1; + widget_init (w, &r, listbox_callback, listbox_mouse_callback); w->options |= WOP_SELECTABLE | WOP_WANT_HOTKEY; w->keymap = listbox_map; @@ -634,7 +634,7 @@ listbox_select_first (WListbox * l) void listbox_select_last (WListbox * l) { - int lines = WIDGET (l)->lines; + int lines = WIDGET (l)->rect.lines; int length; length = listbox_get_length (l); @@ -668,7 +668,7 @@ listbox_select_entry (WListbox * l, int dest) l->top = l->pos; else { - int lines = WIDGET (l)->lines; + int lines = WIDGET (l)->rect.lines; if (l->pos - l->top >= lines) l->top = l->pos - lines + 1; diff --git a/mcsrc/lib/widget/menu.c b/mcsrc/lib/widget/menu.c index e8a65db8..32ee74c5 100644 --- a/mcsrc/lib/widget/menu.c +++ b/mcsrc/lib/widget/menu.c @@ -5,7 +5,7 @@ Free Software Foundation, Inc. Written by: - Andrew Borodin , 2012, 2013, 2016 + Andrew Borodin , 2012-2022 This file is part of the Midnight Commander. @@ -120,7 +120,7 @@ menu_arrange (menu_t * menu, dlg_shortcut_str get_shortcut) static void menubar_paint_idx (const WMenuBar * menubar, unsigned int idx, int color) { - const Widget *w = CONST_WIDGET (menubar); + const WRect *w = &CONST_WIDGET (menubar)->rect; const menu_t *menu = MENU (g_list_nth_data (menubar->menu, menubar->selected)); const menu_entry_t *entry = MENUENTRY (g_list_nth_data (menu->entries, idx)); const int y = 2 + idx; @@ -134,10 +134,10 @@ menubar_paint_idx (const WMenuBar * menubar, unsigned int idx, int color) /* menu separator */ tty_setcolor (MENU_ENTRY_COLOR); - widget_gotoyx (w, y, x - 1); + widget_gotoyx (menubar, y, x - 1); tty_print_alt_char (ACS_LTEE, FALSE); tty_draw_hline (w->y + y, w->x + x, ACS_HLINE, menu->max_entry_len + 3); - widget_gotoyx (w, y, x + menu->max_entry_len + 3); + widget_gotoyx (menubar, y, x + menu->max_entry_len + 3); tty_print_alt_char (ACS_RTEE, FALSE); } else @@ -146,7 +146,7 @@ menubar_paint_idx (const WMenuBar * menubar, unsigned int idx, int color) /* menu text */ tty_setcolor (color); - widget_gotoyx (w, y, x); + widget_gotoyx (menubar, y, x); tty_print_char ((unsigned char) entry->first_letter); tty_getyx (&yt, &xt); tty_draw_hline (yt, xt, ' ', menu->max_entry_len + 2); /* clear line */ @@ -164,12 +164,12 @@ menubar_paint_idx (const WMenuBar * menubar, unsigned int idx, int color) if (entry->shortcut != NULL) { - widget_gotoyx (w, y, x + menu->max_hotkey_len + 3); + widget_gotoyx (menubar, y, x + menu->max_hotkey_len + 3); tty_print_string (entry->shortcut); } /* move cursor to the start of entry text */ - widget_gotoyx (w, y, x + 1); + widget_gotoyx (menubar, y, x + 1); } } @@ -178,7 +178,7 @@ menubar_paint_idx (const WMenuBar * menubar, unsigned int idx, int color) static void menubar_draw_drop (const WMenuBar * menubar) { - const Widget *w = CONST_WIDGET (menubar); + const WRect *w = &CONST_WIDGET (menubar)->rect; const menu_t *menu = MENU (g_list_nth_data (menubar->menu, menubar->selected)); const unsigned int count = g_list_length (menu->entries); int column = menu->start_x - 1; @@ -217,11 +217,12 @@ menubar_set_color (const WMenuBar * menubar, gboolean current, gboolean hotkey) static void menubar_draw (const WMenuBar * menubar) { - const Widget *w = CONST_WIDGET (menubar); + const WRect *w = &CONST_WIDGET (menubar)->rect; GList *i; /* First draw the complete menubar */ - tty_setcolor (widget_get_state (w, WST_FOCUSED) ? MENU_ENTRY_COLOR : MENU_INACTIVE_COLOR); + tty_setcolor (widget_get_state (WIDGET (menubar), WST_FOCUSED) ? MENU_ENTRY_COLOR : + MENU_INACTIVE_COLOR); tty_draw_hline (w->y, w->x, ' ', w->cols); /* Now each one of the entries */ @@ -231,7 +232,7 @@ menubar_draw (const WMenuBar * menubar) gboolean is_selected = (menubar->selected == (gsize) g_list_position (menubar->menu, i)); menubar_set_color (menubar, is_selected, FALSE); - widget_gotoyx (w, 0, menu->start_x); + widget_gotoyx (menubar, 0, menu->start_x); tty_print_char (' '); tty_print_string (menu->text.start); @@ -252,7 +253,8 @@ menubar_draw (const WMenuBar * menubar) if (menubar->is_dropped) menubar_draw_drop (menubar); else - widget_gotoyx (w, 0, MENU (g_list_nth_data (menubar->menu, menubar->selected))->start_x); + widget_gotoyx (menubar, 0, + MENU (g_list_nth_data (menubar->menu, menubar->selected))->start_x); } /* --------------------------------------------------------------------------------------------- */ @@ -311,7 +313,7 @@ menubar_finish (WMenuBar * menubar) Widget *w = WIDGET (menubar); menubar->is_dropped = FALSE; - w->lines = 1; + w->rect.lines = 1; widget_want_hotkey (w, FALSE); widget_set_options (w, WOP_SELECTABLE, FALSE); @@ -624,7 +626,7 @@ menubar_refresh (WMenuBar * menubar) return FALSE; /* Trick to get all the mouse events */ - w->lines = LINES; + w->rect.lines = LINES; /* Trick to get all of the hotkeys */ widget_want_hotkey (w, TRUE); @@ -718,7 +720,7 @@ menubar_get_menu_by_x_coord (const WMenuBar * menubar, int x) static gboolean menubar_mouse_on_menu (const WMenuBar * menubar, int y, int x) { - const Widget *w = CONST_WIDGET (menubar); + const WRect *w = &CONST_WIDGET (menubar)->rect; menu_t *menu; int left_x, right_x, bottom_y; @@ -948,12 +950,13 @@ destroy_menu (menu_t * menu) WMenuBar * menubar_new (GList * menu) { + WRect r = { 0, 0, 1, COLS }; WMenuBar *menubar; Widget *w; menubar = g_new0 (WMenuBar, 1); w = WIDGET (menubar); - widget_init (w, 0, 0, 1, COLS, menubar_callback, menubar_mouse_callback); + widget_init (w, &r, menubar_callback, menubar_mouse_callback); w->pos_flags = WPOS_KEEP_HORZ | WPOS_KEEP_TOP; /* initially, menubar is not selectable */ widget_set_options (w, WOP_SELECTABLE, FALSE); @@ -1009,7 +1012,7 @@ menubar_arrange (WMenuBar * menubar) if (menubar->menu == NULL) return; - gap = WIDGET (menubar)->cols - 2; + gap = WIDGET (menubar)->rect.cols - 2; /* First, calculate gap between items... */ for (i = menubar->menu; i != NULL; i = g_list_next (i)) diff --git a/mcsrc/lib/widget/mouse.c b/mcsrc/lib/widget/mouse.c index 95f14c8b..0c573e88 100644 --- a/mcsrc/lib/widget/mouse.c +++ b/mcsrc/lib/widget/mouse.c @@ -61,8 +61,8 @@ init_mouse_event (mouse_event_t * event, mouse_msg_t msg, const Gpm_Event * glob const Widget * w) { event->msg = msg; - event->x = global_gpm->x - w->x - 1; /* '-1' because Gpm_Event is 1-based. */ - event->y = global_gpm->y - w->y - 1; + event->x = global_gpm->x - w->rect.x - 1; /* '-1' because Gpm_Event is 1-based. */ + event->y = global_gpm->y - w->rect.y - 1; event->count = global_gpm->type & (GPM_SINGLE | GPM_DOUBLE | GPM_TRIPLE); event->buttons = global_gpm->buttons; event->result.abort = FALSE; diff --git a/mcsrc/lib/widget/quick.c b/mcsrc/lib/widget/quick.c index 9b0fff8e..aec30705 100644 --- a/mcsrc/lib/widget/quick.c +++ b/mcsrc/lib/widget/quick.c @@ -9,7 +9,7 @@ Radek Doulik, 1994, 1995 Jakub Jelinek, 1995 Andrej Borsenkow, 1995 - Andrew Borodin , 2009, 2010, 2011, 2012, 2013 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -98,25 +98,25 @@ quick_create_labeled_input (GArray * widgets, int *y, int x, quick_widget_t * qu { case input_label_above: label.widget = WIDGET (label_new (*y, x, I18N (quick_widget->u.input.label_text))); - *y += label.widget->lines - 1; + *y += label.widget->rect.lines - 1; g_array_append_val (widgets, label); in.widget = WIDGET (quick_create_input (++(*y), x, quick_widget)); in.quick_widget = quick_widget; g_array_append_val (widgets, in); - *width = MAX (label.widget->cols, in.widget->cols); + *width = MAX (label.widget->rect.cols, in.widget->rect.cols); break; case input_label_left: label.widget = WIDGET (label_new (*y, x, I18N (quick_widget->u.input.label_text))); g_array_append_val (widgets, label); - in.widget = WIDGET (quick_create_input (*y, x + label.widget->cols + 1, quick_widget)); + in.widget = WIDGET (quick_create_input (*y, x + label.widget->rect.cols + 1, quick_widget)); in.quick_widget = quick_widget; g_array_append_val (widgets, in); - *width = label.widget->cols + in.widget->cols + 1; + *width = label.widget->rect.cols + in.widget->rect.cols + 1; break; case input_label_right: @@ -126,10 +126,10 @@ quick_create_labeled_input (GArray * widgets, int *y, int x, quick_widget_t * qu label.widget = WIDGET (label_new - (*y, x + in.widget->cols + 1, I18N (quick_widget->u.input.label_text))); + (*y, x + in.widget->rect.cols + 1, I18N (quick_widget->u.input.label_text))); g_array_append_val (widgets, label); - *width = label.widget->cols + in.widget->cols + 1; + *width = label.widget->rect.cols + in.widget->rect.cols + 1; break; case input_label_below: @@ -138,10 +138,10 @@ quick_create_labeled_input (GArray * widgets, int *y, int x, quick_widget_t * qu g_array_append_val (widgets, in); label.widget = WIDGET (label_new (++(*y), x, I18N (quick_widget->u.input.label_text))); - *y += label.widget->lines - 1; + *y += label.widget->rect.lines - 1; g_array_append_val (widgets, label); - *width = MAX (label.widget->cols, in.widget->cols); + *width = MAX (label.widget->rect.cols, in.widget->rect.cols); break; default: @@ -186,7 +186,7 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) int return_val; len = str_term_width1 (I18N (quick_dlg->title)) + 6; - quick_dlg->cols = MAX (quick_dlg->cols, len); + quick_dlg->rect.cols = MAX (quick_dlg->rect.cols, len); y = 1; x = x1; @@ -207,7 +207,7 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) (++y, x, *quick_widget->u.checkbox.state, I18N (quick_widget->u.checkbox.text))); g_array_append_val (widgets, item); - width = item.widget->cols; + width = item.widget->rect.cols; if (g != NULL) width += 2; if (two_columns) @@ -224,7 +224,7 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) I18N (quick_widget->u.button.text), quick_widget->u.button.callback)); g_array_append_val (widgets, item); - width = item.widget->cols; + width = item.widget->rect.cols; if (g != NULL) width += 2; if (two_columns) @@ -245,7 +245,7 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) { item.widget = WIDGET (quick_create_input (y, x, quick_widget)); g_array_append_val (widgets, item); - width = item.widget->cols; + width = item.widget->rect.cols; } if (g != NULL) width += 2; @@ -258,8 +258,8 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) case quick_label: item.widget = WIDGET (label_new (++y, x, I18N (quick_widget->u.label.text))); g_array_append_val (widgets, item); - y += item.widget->lines - 1; - width = item.widget->cols; + y += item.widget->rect.lines - 1; + width = item.widget->rect.cols; if (g != NULL) width += 2; if (two_columns) @@ -284,8 +284,8 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) g_strfreev (items); item.widget = WIDGET (r); g_array_append_val (widgets, item); - y += item.widget->lines - 1; - width = item.widget->cols; + y += item.widget->rect.lines - 1; + width = item.widget->rect.cols; if (g != NULL) width += 2; if (two_columns) @@ -310,7 +310,7 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) Widget *w = WIDGET (g); y++; - w->lines = y + 1 - w->y; + w->rect.lines = y + 1 - w->rect.y; g = NULL; g_array_append_val (widgets, item); @@ -369,7 +369,7 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) quick_widget->u.button.callback)); item.quick_widget = quick_widget; g_array_append_val (widgets, item); - blen += item.widget->cols + 1; + blen += item.widget->rect.cols + 1; } /* stop dialog build here */ @@ -384,7 +384,7 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) } /* adjust dialog width */ - quick_dlg->cols = MAX (quick_dlg->cols, blen + 6); + quick_dlg->rect.cols = MAX (quick_dlg->rect.cols, blen + 6); if (have_groupbox) { if (width1 != 0) @@ -401,16 +401,16 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) len = MAX (len, width1 + 6); } - quick_dlg->cols = MAX (quick_dlg->cols, len); - width1 = quick_dlg->cols - 6; - width2 = (quick_dlg->cols - 7) / 2; + quick_dlg->rect.cols = MAX (quick_dlg->rect.cols, len); + width1 = quick_dlg->rect.cols - 6; + width2 = (quick_dlg->rect.cols - 7) / 2; - if (quick_dlg->x == -1 || quick_dlg->y == -1) - dd = dlg_create (TRUE, 0, 0, y + 3, quick_dlg->cols, WPOS_CENTER | WPOS_TRYUP, FALSE, + if (quick_dlg->rect.x == -1 || quick_dlg->rect.y == -1) + dd = dlg_create (TRUE, 0, 0, y + 3, quick_dlg->rect.cols, WPOS_CENTER | WPOS_TRYUP, FALSE, dialog_colors, quick_dlg->callback, quick_dlg->mouse_callback, quick_dlg->help, quick_dlg->title); else - dd = dlg_create (TRUE, quick_dlg->y, quick_dlg->x, y + 3, quick_dlg->cols, + dd = dlg_create (TRUE, quick_dlg->rect.y, quick_dlg->rect.x, y + 3, quick_dlg->rect.cols, WPOS_KEEP_DEFAULT, FALSE, dialog_colors, quick_dlg->callback, quick_dlg->mouse_callback, quick_dlg->help, quick_dlg->title); @@ -418,14 +418,16 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) x2 = x1 + width2 + 1; g = NULL; two_columns = FALSE; - x = (WIDGET (dd)->cols - blen) / 2; + x = (WIDGET (dd)->rect.cols - blen) / 2; for (i = 0; i < widgets->len; i++) { quick_widget_item_t *item; int column_width; + WRect *r; item = &g_array_index (widgets, quick_widget_item_t, i); + r = &item->widget->rect; column_width = two_columns ? width2 : width1; /* adjust widget width and x position */ @@ -444,24 +446,24 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) MC_FALLTHROUGH; case quick_checkbox: case quick_radio: - if (item->widget->x != x1) - item->widget->x = x2; + if (r->x != x1) + r->x = x2; if (g != NULL) - item->widget->x += 2; + r->x += 2; break; case quick_button: if (!put_buttons) { - if (item->widget->x != x1) - item->widget->x = x2; + if (r->x != x1) + r->x = x2; if (g != NULL) - item->widget->x += 2; + r->x += 2; } else { - item->widget->x = x; - x += item->widget->cols + 1; + r->x = x; + x += r->cols + 1; } break; @@ -477,39 +479,39 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) { case input_label_left: /* label was adjusted before; adjust input line */ - item->widget->x = label->x + label->cols + 1 - WIDGET (label->owner)->x; - item->widget->cols = width - label->cols - 1; + r->x = label->rect.x + label->rect.cols + 1 - WIDGET (label->owner)->rect.x; + r->cols = width - label->rect.cols - 1; break; case input_label_right: - if (item->widget->x != x1) - item->widget->x = x2; + if (r->x != x1) + r->x = x2; if (g != NULL) - item->widget->x += 2; - item->widget->cols = width - label->cols - 1; - label->x = item->widget->x + item->widget->cols + 1; + r->x += 2; + r->cols = width - label->rect.cols - 1; + label->rect.x = r->x + r->cols + 1; break; default: - if (item->widget->x != x1) - item->widget->x = x2; + if (r->x != x1) + r->x = x2; if (g != NULL) - item->widget->x += 2; - item->widget->cols = width; + r->x += 2; + r->cols = width; break; } - /* forced update internal variables of inpuit line */ - widget_set_size (item->widget, item->widget->y, item->widget->x, 1, - item->widget->cols); + /* forced update internal variables of input line */ + r->lines = 1; + widget_set_size_rect (item->widget, r); } break; case quick_start_groupbox: g = GROUPBOX (item->widget); - if (item->widget->x != x1) - item->widget->x = x2; - item->widget->cols = column_width; + if (r->x != x1) + r->x = x2; + r->cols = column_width; break; case quick_stop_groupbox: @@ -524,16 +526,16 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) Widget *wg = WIDGET (g); HLINE (item->widget)->auto_adjust_cols = FALSE; - item->widget->x = wg->x + 1 - WIDGET (wg->owner)->x; - item->widget->cols = wg->cols; + r->x = wg->rect.x + 1 - WIDGET (wg->owner)->rect.x; + r->cols = wg->rect.cols; } else if (two_columns) { HLINE (item->widget)->auto_adjust_cols = FALSE; - if (item->widget->x != x1) - item->widget->x = x2; - item->widget->x--; - item->widget->cols = column_width + 2; + if (r->x != x1) + r->x = x2; + r->x--; + r->cols = column_width + 2; } else HLINE (item->widget)->auto_adjust_cols = TRUE; @@ -597,9 +599,9 @@ quick_dialog_skip (quick_dialog_t * quick_dlg, int nskip) case quick_input: if ((item->quick_widget->u.input.completion_flags & INPUT_COMPLETE_CD) != 0) *item->quick_widget->u.input.result = - tilde_expand (INPUT (item->widget)->buffer); + tilde_expand (input_get_ctext (INPUT (item->widget))); else - *item->quick_widget->u.input.result = g_strdup (INPUT (item->widget)->buffer); + *item->quick_widget->u.input.result = input_get_text (INPUT (item->widget)); break; case quick_radio: diff --git a/mcsrc/lib/widget/quick.h b/mcsrc/lib/widget/quick.h index 77c21c98..b2de299a 100644 --- a/mcsrc/lib/widget/quick.h +++ b/mcsrc/lib/widget/quick.h @@ -330,8 +330,8 @@ struct quick_widget_t typedef struct { - int y, x; /* if -1, then center the dialog */ - int cols; /* heigth is calculated automatically */ + WRect rect; /* if rect.x == -1 or rect.y == -1, then dialog is centered; + * rect.lines is unused and ignored */ const char *title; const char *help; quick_widget_t *widgets; @@ -341,14 +341,31 @@ typedef struct /*** WIN32 ****/ -#if defined(WIN32) //WIN32, quick - #if defined(__GNUC__) #define XQUICK_INLINE static inline #else #define XQUICK_INLINE inline #endif +XQUICK_INLINE quick_dialog_t +QUICK_DIALOG_INIT( + const WRect *rect, const char *title, const char *help, quick_widget_t *widgets, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback) +{ + quick_dialog_t qd; + memset(&qd, 0, sizeof(qd)); + qd.rect = *rect; + qd.title = title; + qd.help = help; + qd.widgets = widgets; + qd.callback = NULL; + qd.mouse_callback = NULL; + qd.callback = callback; + qd.mouse_callback = mouse_callback; + return qd; +} + +#if defined(WIN32) //WIN32, quick + XQUICK_INLINE quick_widget_t * XQUICK_CHECKBOX(quick_widget_t *qc, const char *txt, int *st, unsigned long *id_) diff --git a/mcsrc/lib/widget/radio.c b/mcsrc/lib/widget/radio.c index bb23221d..5832f44a 100644 --- a/mcsrc/lib/widget/radio.c +++ b/mcsrc/lib/widget/radio.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2013, 2016 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -164,7 +164,7 @@ radio_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d { widget_selectcolor (w, i == r->pos && focused, FALSE); widget_gotoyx (w, i, 0); - tty_draw_hline (w->y + i, w->x, ' ', w->cols); + tty_draw_hline (w->rect.y + i, w->rect.x, ' ', w->rect.cols); tty_print_string ((r->sel == i) ? "(*) " : "( ) "); hotkey_draw (w, r->texts[i], i == r->pos && focused); } @@ -213,6 +213,7 @@ radio_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) WRadio * radio_new (int y, int x, int count, const char **texts) { + WRect r0 = { y, x, count, 1 }; WRadio *r; Widget *w; int i, wmax = 0; @@ -233,7 +234,8 @@ radio_new (int y, int x, int count, const char **texts) } /* 4 is width of "(*) " */ - widget_init (w, y, x, count, 4 + wmax, radio_callback, radio_mouse_callback); + r0.cols = 4 + wmax; + widget_init (w, &r0, radio_callback, radio_mouse_callback); w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR | WOP_WANT_HOTKEY; w->keymap = radio_map; diff --git a/mcsrc/lib/widget/rect.c b/mcsrc/lib/widget/rect.c index 2c26067d..e2b45480 100644 --- a/mcsrc/lib/widget/rect.c +++ b/mcsrc/lib/widget/rect.c @@ -4,7 +4,7 @@ The Free Software Foundation, Inc. Written by: - Andrew Borodin , 2020 + Andrew Borodin , 2020-2022 This file is part of the Midnight Commander. @@ -109,7 +109,7 @@ rect_move (WRect * r, int dy, int dx) /* --------------------------------------------------------------------------------------------- */ /** - * Change size of rectangle area. + * Change size of rectangle area keeping it's position. * * @param r WRect object * @param dl change size value of heigth @@ -123,6 +123,28 @@ rect_resize (WRect * r, int dl, int dc) r->cols += dc; } +/* --------------------------------------------------------------------------------------------- */ +/** + * Change size of rectangle area keeping it's center. + * + * @param r WRect object + * @param dl change size value of y-coordinate and heigth + * Positive value means move up and increase heigth. + * Negative value means move down and decrease heigth. + * @param dc change size value of x-coordinate and width + * Positive value means move left and increase width. + * Negative value means move right and decrease width. + */ + +void +rect_grow (WRect * r, int dl, int dc) +{ + r->y -= dl; + r->x -= dc; + r->lines += dl * 2; + r->cols += dc * 2; +} + /* --------------------------------------------------------------------------------------------- */ /** * Calculates the intersection of two rectangle areas. diff --git a/mcsrc/lib/widget/rect.h b/mcsrc/lib/widget/rect.h index 3770c91a..ca85968b 100644 --- a/mcsrc/lib/widget/rect.h +++ b/mcsrc/lib/widget/rect.h @@ -34,6 +34,7 @@ WRect *rect_new (int y, int x, int lines, int cols); void rect_init (WRect * r, int y, int x, int lines, int cols); void rect_move (WRect * r, int dy, int dx); void rect_resize (WRect * r, int dl, int dc); +void rect_grow (WRect * r, int dl, int dc); void rect_intersect (WRect * r, const WRect * r1); void rect_union (WRect * r, const WRect * r1); gboolean rects_are_overlapped (const WRect * r1, const WRect * r2); diff --git a/mcsrc/lib/widget/widget-common.c b/mcsrc/lib/widget/widget-common.c index b733e90b..bc36e6d1 100644 --- a/mcsrc/lib/widget/widget-common.c +++ b/mcsrc/lib/widget/widget-common.c @@ -10,7 +10,7 @@ Jakub Jelinek, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2011, 2012, 2013 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -85,10 +85,7 @@ widget_default_resize (Widget * w, const WRect * r) if (r == NULL) return MSG_NOT_HANDLED; - w->y = r->y; - w->x = r->x; - w->lines = r->lines; - w->cols = r->cols; + w->rect = *r; return MSG_HANDLED; } @@ -308,14 +305,10 @@ hotkey_get_text (const hotkey_t hotkey) /* --------------------------------------------------------------------------------------------- */ void -widget_init (Widget * w, int y, int x, int lines, int cols, - widget_cb_fn callback, widget_mouse_cb_fn mouse_callback) +widget_init (Widget * w, const WRect * r, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback) { w->id = widget_set_id (); - w->x = x; - w->y = y; - w->cols = cols; - w->lines = lines; + w->rect = *r; w->pos_flags = WPOS_KEEP_DEFAULT; w->callback = callback; @@ -400,29 +393,29 @@ widget_set_options (Widget * w, widget_options_t options, gboolean enable) /* --------------------------------------------------------------------------------------------- */ void -widget_adjust_position (widget_pos_flags_t pos_flags, int *y, int *x, int *lines, int *cols) +widget_adjust_position (widget_pos_flags_t pos_flags, WRect * r) { if ((pos_flags & WPOS_FULLSCREEN) != 0) { - *y = 0; - *x = 0; - *lines = LINES; - *cols = COLS; + r->y = 0; + r->x = 0; + r->lines = LINES; + r->cols = COLS; } else { if ((pos_flags & WPOS_CENTER_HORZ) != 0) - *x = (COLS - *cols) / 2; + r->x = (COLS - r->cols) / 2; if ((pos_flags & WPOS_CENTER_VERT) != 0) - *y = (LINES - *lines) / 2; + r->y = (LINES - r->lines) / 2; if ((pos_flags & WPOS_TRYUP) != 0) { - if (*y > 3) - *y -= 2; - else if (*y == 3) - *y = 2; + if (r->y > 3) + r->y -= 2; + else if (r->y == 3) + r->y = 2; } } } @@ -447,6 +440,21 @@ widget_set_size (Widget * w, int y, int x, int lines, int cols) widget_draw (w); } +/* --------------------------------------------------------------------------------------------- */ +/** + * Change widget position and size. + * + * @param w widget + * @param r WRect obgect that holds position and size + */ + +void +widget_set_size_rect (Widget * w, WRect * r) +{ + send_message (w, NULL, MSG_RESIZE, 0, r); + widget_draw (w); +} + /* --------------------------------------------------------------------------------------------- */ void @@ -473,7 +481,7 @@ void widget_erase (Widget * w) { if (w != NULL) - tty_fill_region (w->y, w->x, w->lines, w->cols, ' '); + tty_fill_region (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, ' '); } /* --------------------------------------------------------------------------------------------- */ @@ -648,22 +656,6 @@ widget_set_bottom (Widget * w) widget_reorder (widget_find (WIDGET (w->owner), w), FALSE); } -/* --------------------------------------------------------------------------------------------- */ -/** - * Check whether two widgets are overlapped or not. - * @param a 1st widget - * @param b 2nd widget - * - * @return TRUE if widgets are overlapped, FALSE otherwise. - */ - -gboolean -widget_overlapped (const Widget * a, const Widget * b) -{ - return !((b->x >= a->x + a->cols) - || (a->x >= b->x + b->cols) || (b->y >= a->y + a->lines) || (a->y >= b->y + b->lines)); -} - /* --------------------------------------------------------------------------------------------- */ /** * Look up key event of widget and translate it to command ID. @@ -699,15 +691,9 @@ void widget_default_make_global (Widget * w, const WRect * delta) { if (delta != NULL) - { - w->y += delta->y; - w->x += delta->x; - } + rect_move (&w->rect, delta->y, delta->x); else if (w->owner != NULL) - { - w->y += WIDGET (w->owner)->y; - w->x += WIDGET (w->owner)->x; - } + rect_move (&w->rect, WIDGET (w->owner)->rect.y, WIDGET (w->owner)->rect.x); } /* --------------------------------------------------------------------------------------------- */ @@ -724,15 +710,9 @@ void widget_default_make_local (Widget * w, const WRect * delta) { if (delta != NULL) - { - w->y -= delta->y; - w->x -= delta->x; - } + rect_move (&w->rect, -delta->y, -delta->x); else if (w->owner != NULL) - { - w->y -= WIDGET (w->owner)->y; - w->x -= WIDGET (w->owner)->x; - } + rect_move (&w->rect, -WIDGET (w->owner)->rect.y, -WIDGET (w->owner)->rect.x); } /* --------------------------------------------------------------------------------------------- */ @@ -897,8 +877,8 @@ mouse_get_local (const Gpm_Event * global, const Widget * w) memset (&local, 0, sizeof (local)); local.buttons = global->buttons; - local.x = global->x - w->x; - local.y = global->y - w->y; + local.x = global->x - w->rect.x; + local.y = global->y - w->rect.y; local.type = global->type; return local; @@ -909,8 +889,10 @@ mouse_get_local (const Gpm_Event * global, const Widget * w) gboolean mouse_global_in_widget (const Gpm_Event * event, const Widget * w) { - return (event->x > w->x) && (event->y > w->y) && (event->x <= w->x + w->cols) - && (event->y <= w->y + w->lines); + const WRect *r = &w->rect; + + return (event->x > r->x) && (event->y > r->y) && (event->x <= r->x + r->cols) + && (event->y <= r->y + r->lines); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/lib/widget/widget-common.h b/mcsrc/lib/widget/widget-common.h index 8d48323f..4a92f0f2 100644 --- a/mcsrc/lib/widget/widget-common.h +++ b/mcsrc/lib/widget/widget-common.h @@ -15,7 +15,7 @@ #define WIDGET(x) ((Widget *)(x)) #define CONST_WIDGET(x) ((const Widget *)(x)) -#define widget_gotoyx(w, _y, _x) tty_gotoyx (CONST_WIDGET(w)->y + (_y), CONST_WIDGET(w)->x + (_x)) +#define widget_gotoyx(w, _y, _x) tty_gotoyx (CONST_WIDGET(w)->rect.y + (_y), CONST_WIDGET(w)->rect.x + (_x)) /* Sets/clear the specified flag in the options field */ #define widget_want_cursor(w,i) widget_set_options(w, WOP_WANT_CURSOR, i) #define widget_want_hotkey(w,i) widget_set_options(w, WOP_WANT_HOTKEY, i) @@ -130,8 +130,9 @@ typedef int (*widget_mouse_handle_fn) (Widget * w, Gpm_Event * event); /* Every Widget must have this as its first element */ struct Widget { - int x, y; - int cols, lines; + WRect rect; /* position and size */ + /* ATTENTION! For groups, don't change @rect members directly to avoid + incorrect reposition and resize of group members. */ widget_pos_flags_t pos_flags; /* repositioning flags */ widget_options_t options; widget_state_t state; @@ -202,21 +203,21 @@ void hotkey_draw (Widget * w, const hotkey_t hotkey, gboolean focused); char *hotkey_get_text (const hotkey_t hotkey); /* widget initialization */ -void widget_init (Widget * w, int y, int x, int lines, int cols, - widget_cb_fn callback, widget_mouse_cb_fn mouse_callback); +void widget_init (Widget * w, const WRect * r, widget_cb_fn callback, + widget_mouse_cb_fn mouse_callback); /* Default callback for widgets */ cb_ret_t widget_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data); void widget_set_options (Widget * w, widget_options_t options, gboolean enable); -void widget_adjust_position (widget_pos_flags_t pos_flags, int *y, int *x, int *lines, int *cols); +void widget_adjust_position (widget_pos_flags_t pos_flags, WRect * r); void widget_set_size (Widget * w, int y, int x, int lines, int cols); +void widget_set_size_rect (Widget * w, WRect * r); /* select color for widget in dependance of state */ void widget_selectcolor (Widget * w, gboolean focused, gboolean hotkey); cb_ret_t widget_draw (Widget * w); void widget_erase (Widget * w); void widget_set_visibility (Widget * w, gboolean make_visible); gboolean widget_is_active (const void *w); -gboolean widget_overlapped (const Widget * a, const Widget * b); void widget_replace (Widget * old, Widget * new); gboolean widget_is_focusable (const Widget * w); void widget_select (Widget * w); @@ -427,25 +428,33 @@ widget_update_cursor (Widget * w) /* --------------------------------------------------------------------------------------------- */ static inline void -widget_set_size_rect (Widget * w, const WRect * r) +widget_show (Widget * w) { - widget_set_size (w, r->y, r->x, r->lines, r->cols); + widget_set_visibility (w, TRUE); } /* --------------------------------------------------------------------------------------------- */ static inline void -widget_show (Widget * w) +widget_hide (Widget * w) { - widget_set_visibility (w, TRUE); + widget_set_visibility (w, FALSE); } + /* --------------------------------------------------------------------------------------------- */ +/** + * Check whether two widgets are overlapped or not. + * @param a 1st widget + * @param b 2nd widget + * + * @return TRUE if widgets are overlapped, FALSE otherwise. + */ -static inline void -widget_hide (Widget * w) +static inline gboolean +widget_overlapped (const Widget * a, const Widget * b) { - widget_set_visibility (w, FALSE); + return rects_are_overlapped (&a->rect, &b->rect); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/lib/widget/wtools.c b/mcsrc/lib/widget/wtools.c index 086e038f..e6f192c4 100644 --- a/mcsrc/lib/widget/wtools.c +++ b/mcsrc/lib/widget/wtools.c @@ -9,7 +9,7 @@ Radek Doulik, 1994, 1995 Jakub Jelinek, 1995 Andrej Borsenkow, 1995 - Andrew Borodin , 2009-2014 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -42,7 +42,7 @@ #include "lib/strutil.h" #include "lib/util.h" /* tilde_expand() */ #include "lib/widget.h" -#include "lib/widget/quick.h" // missing +#include "lib/widget/quick.h" // WIN32, defs/missing #include "lib/event.h" /* mc_event_raise() */ /*** global variables ****************************************************************************/ @@ -96,14 +96,18 @@ query_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, /* if previous dialog is not fullscreen'd -- overlap it */ if (prev_dlg == NULL || (WIDGET (prev_dlg)->pos_flags & WPOS_FULLSCREEN) != 0) - ypos = LINES / 3 - (w->lines - 3) / 2; + ypos = LINES / 3 - (w->rect.lines - 3) / 2; else - ypos = WIDGET (prev_dlg)->y + 2; + ypos = WIDGET (prev_dlg)->rect.y + 2; - xpos = COLS / 2 - w->cols / 2; + /* if dialog is too high, place it centered */ + if (ypos + w->rect.lines < LINES / 2) + w->pos_flags |= WPOS_CENTER; + + xpos = COLS / 2 - w->rect.cols / 2; /* set position */ - rect_init (&r, ypos, xpos, w->lines, w->cols); + rect_init (&r, ypos, xpos, w->rect.lines, w->rect.cols); return dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r); } @@ -223,11 +227,13 @@ fg_input_dialog_help (const char *header, const char *text, const char *help, }; #endif - quick_dialog_t qdlg = { - -1, -1, COLS / 2, header, - help, quick_widgets, NULL, NULL - }; + WRect r = { -1, -1, 0, COLS / 2 }; + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, header, help, + quick_widgets, NULL, NULL + ); + #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, p_text, input_label_above, def_text, histname, &my_str, @@ -602,7 +608,7 @@ status_msg_init (status_msg_t * sm, const char *title, double delay, status_msg_ /* repaint screen to remove previous finished dialog */ mc_refresh (); - start = g_get_real_time (); + start = g_get_monotonic_time (); sm->dlg = dlg_create (TRUE, 0, 0, 7, MIN (MAX (40, COLS / 2), COLS), WPOS_CENTER, FALSE, dialog_colors, NULL, NULL, NULL, title); @@ -706,6 +712,7 @@ simple_status_msg_init_cb (status_msg_t * sm) simple_status_msg_t *ssm = SIMPLE_STATUS_MSG (sm); Widget *wd = WIDGET (sm->dlg); WGroup *wg = GROUP (sm->dlg); + WRect r; const char *b_name = N_("&Abort"); int b_width; @@ -717,7 +724,7 @@ simple_status_msg_init_cb (status_msg_t * sm) #endif b_width = str_term_width1 (b_name) + 4; - wd_width = MAX (wd->cols, b_width + 6); + wd_width = MAX (wd->rect.cols, b_width + 6); y = 2; ssm->label = label_new (y++, 3, ""); @@ -726,7 +733,10 @@ simple_status_msg_init_cb (status_msg_t * sm) b = WIDGET (button_new (y++, 3, B_CANCEL, NORMAL_BUTTON, b_name, NULL)); group_add_widget_autopos (wg, b, WPOS_KEEP_TOP | WPOS_CENTER_HORZ, NULL); - widget_set_size (wd, wd->y, wd->x, y + 2, wd_width); + r = wd->rect; + r.lines = y + 2; + r.cols = wd_width; + widget_set_size_rect (wd, &r); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/m4.include/mc-vfs.m4 b/mcsrc/m4.include/mc-vfs.m4 index 96c07d1e..f14fcfee 100644 --- a/mcsrc/m4.include/mc-vfs.m4 +++ b/mcsrc/m4.include/mc-vfs.m4 @@ -44,6 +44,7 @@ AC_DEFUN([mc_ENABLE_VFS_NET], AC_CHECK_RPC enable_vfs_net=yes + AC_DEFINE(ENABLE_VFS_NET, [1], [Define to enable network VFSes support]) fi ]) @@ -79,7 +80,7 @@ AC_DEFUN([mc_VFS_CHECKS], AM_CONDITIONAL(ENABLE_VFS, [test x"$enable_vfs" = x"yes"]) - if test x"$enable_vfs_ftp" = x"yes" -o x"$enable_vfs_fish" = x"yes"; then + if test x"$enable_vfs_ftp" = x"yes" -o x"$enable_vfs_fish" = x"yes" -o x"$enable_vfs_sftp" = x"yes"; then mc_ENABLE_VFS_NET fi diff --git a/mcsrc/maint/docs/RELEASE_PROCEDURE b/mcsrc/maint/docs/RELEASE_PROCEDURE index 203b8aca..951607a6 100644 --- a/mcsrc/maint/docs/RELEASE_PROCEDURE +++ b/mcsrc/maint/docs/RELEASE_PROCEDURE @@ -48,7 +48,7 @@ Given have votes from developers When I Want To: complete the release -Then I Should: upload source packages and checksums to http://www.midnight-commander.org/downloads +Then I Should: upload source packages and checksums to https://www.midnight-commander.org/downloads and update Wiki start page with ${next_version} release number and write an announcement in mc-dev and mc-users mailists: list user visible changes (bugs and features) and close milestone with '${last_version}' version diff --git a/mcsrc/maint/utils/sync-transifex/README.md b/mcsrc/maint/utils/sync-transifex/README.md new file mode 100644 index 00000000..c21fb500 --- /dev/null +++ b/mcsrc/maint/utils/sync-transifex/README.md @@ -0,0 +1,42 @@ +# Translations maintenance + +## Requirements + +* tx + - Transifex client + - https://developers.transifex.com/docs/cli +* po4a + - Tool for converting translations between PO and other formats + - https://po4a.org + +## Configuration + +First time you run `tx` command it will ask you for your API token and create `~/.transifexrc`. + +## Maintenance + +Check the `*-from-transifex.py` (run by hand) and `*-to-transifex.py` (used in CI) scripts. + +Wrapper for modern Transifex client: + +```shell +#!/bin/sh + +touch ~/.transifexrc + +export XUID=$(id -u) +export XGID=$(id -g) + +docker run \ + --rm -i \ + --user $XUID:$XGID \ + --volume="/etc/group:/etc/group:ro" \ + --volume="/etc/passwd:/etc/passwd:ro" \ + --volume="/etc/shadow:/etc/shadow:ro" \ + --volume $(pwd):/app \ + --volume ~/.transifexrc:/.transifexrc \ + --volume /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt \ + transifex/txcli \ + --root-config /.transifexrc \ + "$@" +``` \ No newline at end of file diff --git a/mcsrc/maint/utils/sync-transifex/README.txt b/mcsrc/maint/utils/sync-transifex/README.txt deleted file mode 100644 index 6c7c2560..00000000 --- a/mcsrc/maint/utils/sync-transifex/README.txt +++ /dev/null @@ -1,29 +0,0 @@ - -== Pre-requirements == - -=== List of required apps === - -* tx (A transifex client. http://help.transifex.com/features/client/#user-client-08-install) -* po4a (A tool maintaining translations anywhere. http://alioth.debian.org/projects/po4a/) - - -=== An artifacts configuration === - -Put in the ~/.transifexrc file these lines: - -[https://www.transifex.net] -hostname = https://www.transifex.net -username = YourTxLogin -password = YourTxPassword -token = - -== Interact with Transifex via scripts == - -To get all translations from Transifex run: - -find ./ -name '*-fromTransifex.*' -exec {} \; - -To put source files to Transifex run: - -find ./ -name '*-toTransifex.*' -exec {} \; - diff --git a/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/po4a.cfg b/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/po4a.cfg index c2737565..fe9d152a 100644 --- a/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/po4a.cfg +++ b/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/po4a.cfg @@ -1,4 +1,5 @@ -[po4a_langs] @translations@ -[po4a_paths] var.d/$master/mc.doc.pot $lang:var.d/$master/$lang.po +[po4a_paths] var.d/$master/mc.hint.pot @translations@ -[type:man] @srcdir@/doc/hints/$(docfile) $lang:@srcdir@/doc/hints/l10n/$(docfile).$lang +[options] --master-charset UTF-8 --localized-charset UTF-8 --keep 5 --wrap-po no + +[type:asciidoc] @srcdir@/doc/hints/mc.hint @resources@ diff --git a/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/tx.config b/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/tx.config index 284eb0eb..a129b3c6 100644 --- a/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/tx.config +++ b/mcsrc/maint/utils/sync-transifex/config.d/mc.hint/tx.config @@ -1,8 +1,7 @@ [main] host = https://www.transifex.com -[mc.mc_hint] +[o:mc:p:mc:r:mc-hint--master] file_filter = .po -source_file = mc.doc.pot +source_file = mc.hint.pot source_lang = en - diff --git a/mcsrc/maint/utils/sync-transifex/config.d/mc.pot/tx.config b/mcsrc/maint/utils/sync-transifex/config.d/mc.pot/tx.config new file mode 100644 index 00000000..87002d3d --- /dev/null +++ b/mcsrc/maint/utils/sync-transifex/config.d/mc.pot/tx.config @@ -0,0 +1,8 @@ +[main] +host = https://www.transifex.com + +[o:mc:p:mc:r:mc-pot--master] +file_filter = .po +source_file = mc.pot +source_lang = en + diff --git a/mcsrc/maint/utils/sync-transifex/functions b/mcsrc/maint/utils/sync-transifex/functions deleted file mode 100644 index 21888e00..00000000 --- a/mcsrc/maint/utils/sync-transifex/functions +++ /dev/null @@ -1,161 +0,0 @@ -#!/bin/bash - -# Midnight Commander - common functions for playing with translations. -# -# Copyright (C) 2013 -# The Free Software Foundation, Inc. -# -# Written by: -# Slava Zanko , 2013 -# -# This file is part of the Midnight Commander. -# -# The Midnight Commander is free software: you can redistribute it -# and/or modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the License, -# or (at your option) any later version. -# -# The Midnight Commander is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -#*** include section (source functions, for example) ******************* - -#*** file scope functions ********************************************** -# ---------------------------------------------------------------------- - -## Returns name of working directory. -## -## @param sync_file_name file name which will be sync'ed with Transifex -## @return name of working directory - -getSyncDirName() { - sync_file_name=$1; shift - echo "${SYNC_TX_CURRENT_DIR}/var.d/${sync_file_name}" -} - -# ---------------------------------------------------------------------- - -## Returns config file name as full path. -## -## @param sync_file_name file name which will be sync'ed with Transifex -## @param config_file_name config file name -## @return config file name - -getConfigFile() { - sync_file_name=$1; shift - config_file_name=$1; shift - - echo "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/config.d/${sync_file_name}/${config_file_name}" -} - -# ---------------------------------------------------------------------- - - -## Returns name of working directory. Init the directory, if needed. -## -## @param sync_file_name file name which will be sync'ed with Transifex -## @return name of working directory - -initSyncDirIfNeeded() { - sync_file_name=$1; shift - - sync_dir_name=$(getSyncDirName "${sync_file_name}") - - [ ! -e "${sync_dir_name}" ] && mkdir -p "${sync_dir_name}/.tx" - cp \ - "$(getConfigFile ${sync_file_name} 'tx.config')" \ - "${sync_dir_name}/.tx/config" - - echo "${sync_dir_name}" -} - -# ---------------------------------------------------------------------- - -## Convert file from plain text to POT-file format. -## -## @param source_file path to plain text file -## @param destination_file path to po-file - -convertFromTextToPo() { - source_file=$1; shift - destination_file=$1; shift - - po4a-gettextize -f text -m "${source_file}" -p "${destination_file}" -} - -# ---------------------------------------------------------------------- - -## Send POT-file to Transifex. -## -## @param tx_work_dir working directory where placed the POT file and -## a config-file for tx utility - -sendSourceToTransifex() { - tx_work_dir=$1; shift - - tx -r "${tx_work_dir}" push -s -} - -# ---------------------------------------------------------------------- - -## Reveive translations from Transifex. -## -## @param tx_work_dir working directory where placed the POT file and -## a config-file for tx utility - -receiveTranslationsFromTransifex() { - tx_work_dir=$1; shift - - pushd "${tx_work_dir}" >/dev/null - tx pull --all --force - popd >/dev/null -} - -# ---------------------------------------------------------------------- - -## Create po4a.cfg file. -## -## @param sync_file_name file name which will be sync'ed with Transifex - -createPo4A() { - sync_file_name=$1; shift - - sync_dir_name=$(getSyncDirName "${sync_file_name}") - [ ! -e "${sync_dir_name}" ] && mkdir -p "${sync_dir_name}" - - pushd $sync_dir_name >/dev/null - translations=$(ls *.po| sed -e 's/.po//g'| tr '\n' ' ') - popd >/dev/null - sed -e 's!@srcdir@!'"${MC_SOURCE_ROOT_DIR}"'!g' \ - -e 's!@translations@!'"${translations}"'!g' \ - "$(getConfigFile ${sync_file_name} 'po4a.cfg')" \ - > "${sync_dir_name}/po4a.cfg" -} - -# ---------------------------------------------------------------------- - -## Create po4a.cfg file. -## -## @param sync_dir_name working directory where placed translations -## @param sync_file_name file name which will be sync'ed with Transifex - -convertFromPoToText() { - sync_dir_name=$1; shift - sync_file_name=$1; shift - pushd "${SYNC_TX_CURRENT_DIR}" >/dev/null - po4a -k 0 -q \ - -M UTF-8 -L UTF-8 \ - --variable docfile="${sync_file_name}" \ - "${sync_dir_name}/po4a.cfg" - popd >/dev/null -} - -# ---------------------------------------------------------------------- -#*** main code ********************************************************* - -SYNC_TX_CURRENT_DIR=${SYNC_TX_CURRENT_DIR:-${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex} diff --git a/mcsrc/maint/utils/sync-transifex/hints-from-transifex.py b/mcsrc/maint/utils/sync-transifex/hints-from-transifex.py new file mode 100644 index 00000000..bb730998 --- /dev/null +++ b/mcsrc/maint/utils/sync-transifex/hints-from-transifex.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +import glob +import subprocess +from pathlib import Path +from textwrap import wrap + +from translation_utils import create_po4a_config, init_sync_dir + +RESOURCE_NAME = "mc.hint" + +SCRIPT_DIR = Path(__file__).parent +SOURCE_DIR = SCRIPT_DIR.parent.parent.parent + + +def unwrap_paragraphs(): + hint_files = glob.glob(str(SOURCE_DIR / "doc" / "hints" / "l10n" / "mc.hint.*")) + for hint_file in map(Path, hint_files): + lines = hint_file.read_text().split("\n\n") + hint_file.write_text("\n\n".join("".join(wrap(line, width=1024)) for line in lines) + "\n") + + +sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME) + +subprocess.run(("tx", "pull", "--all", "--force"), cwd=sync_dir, check=True) + +po4a_config = create_po4a_config(sync_dir, SCRIPT_DIR, SOURCE_DIR, RESOURCE_NAME) + +subprocess.run(("po4a", str(po4a_config)), cwd=SCRIPT_DIR, check=True) + +unwrap_paragraphs() diff --git a/mcsrc/maint/utils/sync-transifex/hints-to-transifex.py b/mcsrc/maint/utils/sync-transifex/hints-to-transifex.py new file mode 100644 index 00000000..6ed5fb27 --- /dev/null +++ b/mcsrc/maint/utils/sync-transifex/hints-to-transifex.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 + +import subprocess +from pathlib import Path + +from translation_utils import create_po4a_config, init_sync_dir + +RESOURCE_NAME = "mc.hint" + +SCRIPT_DIR = Path(__file__).parent +SOURCE_DIR = SCRIPT_DIR.parent.parent.parent + +sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME) + +po4a_config = create_po4a_config(sync_dir, SCRIPT_DIR, SOURCE_DIR, RESOURCE_NAME) + +subprocess.run(("po4a", str(po4a_config)), cwd=SCRIPT_DIR, check=True) + +subprocess.run(("tx", "push", "--source"), cwd=sync_dir, check=True) diff --git a/mcsrc/maint/utils/sync-transifex/mc.hint-fromTransifex.sh b/mcsrc/maint/utils/sync-transifex/mc.hint-fromTransifex.sh deleted file mode 100644 index 2b8b2dd4..00000000 --- a/mcsrc/maint/utils/sync-transifex/mc.hint-fromTransifex.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -# Midnight Commander - fetch doc/hints/mc.hint translations from Transifex -# -# Copyright (C) 2013 -# The Free Software Foundation, Inc. -# -# Written by: -# Slava Zanko , 2013 -# -# This file is part of the Midnight Commander. -# -# The Midnight Commander is free software: you can redistribute it -# and/or modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the License, -# or (at your option) any later version. -# -# The Midnight Commander is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -set -e - -MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))} - -#*** include section (source functions, for example) ******************* - -source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions" - -#*** file scope functions ********************************************** - -processHintFiles() { - - # Remove extra backslash - sed -i -e 's/\\-/-/g' ${MC_SOURCE_ROOT_DIR}/doc/hints/l10n/mc.hint.* - - # Remove extra line breaks - for fn in ${MC_SOURCE_ROOT_DIR}/doc/hints/l10n/mc.hint.*; do - awk '/^$/ { print "\n"; } /./ { printf("%s ", $0); } END { print; }' $fn > $fn.tmp - sed -e 's/[[:space:]]*$//' < $fn.tmp > $fn - perl -i -0pe 's/\n+\Z/\n/' $fn - rm $fn.tmp - done - -} - -#*** main code ********************************************************* - -WORK_DIR=$(initSyncDirIfNeeded "mc.hint") - -receiveTranslationsFromTransifex "${WORK_DIR}" - -createPo4A "mc.hint" - -convertFromPoToText "${WORK_DIR}" "mc.hint" - -processHintFiles diff --git a/mcsrc/maint/utils/sync-transifex/mc.hint-toTransifex.sh b/mcsrc/maint/utils/sync-transifex/mc.hint-toTransifex.sh deleted file mode 100644 index c5256b37..00000000 --- a/mcsrc/maint/utils/sync-transifex/mc.hint-toTransifex.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -# Midnight Commander - push doc/hints/mc.hint file to Transifex -# -# Copyright (C) 2013 -# The Free Software Foundation, Inc. -# -# Written by: -# Slava Zanko , 2013 -# -# This file is part of the Midnight Commander. -# -# The Midnight Commander is free software: you can redistribute it -# and/or modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the License, -# or (at your option) any later version. -# -# The Midnight Commander is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -set -e - -MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))} - -#*** include section (source functions, for example) ******************* - -source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions" - -#*** file scope functions ********************************************** - -#*** main code ********************************************************* - -WORK_DIR=$(initSyncDirIfNeeded "mc.hint") - -convertFromTextToPo "${MC_SOURCE_ROOT_DIR}/doc/hints/mc.hint" "${WORK_DIR}/mc.doc.pot" - -sendSourceToTransifex "${WORK_DIR}" - diff --git a/mcsrc/maint/utils/sync-transifex/po-from-transifex.py b/mcsrc/maint/utils/sync-transifex/po-from-transifex.py new file mode 100644 index 00000000..7aeb3ef7 --- /dev/null +++ b/mcsrc/maint/utils/sync-transifex/po-from-transifex.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import glob +import subprocess +from pathlib import Path + +from translation_utils import get_translations, init_sync_dir + +RESOURCE_NAME = "mc.pot" + +SCRIPT_DIR = Path(__file__).parent +SOURCE_DIR = SCRIPT_DIR.parent.parent.parent +PO_DIR = SOURCE_DIR / "po" + + +def strip_message_locations(work_dir: Path): + for po_file in (work_dir / filename for filename in glob.glob("*.po", root_dir=work_dir)): + po_file.write_text( + "".join(line for line in po_file.read_text().splitlines(keepends=True) if not line.startswith("#:")) + ) + + +def copy_translations_to_source_dir(source_dir: Path, target_dir: Path): + for po_file in (source_dir / filename for filename in glob.glob("*.po", root_dir=source_dir)): + (target_dir / po_file.name).write_text(po_file.read_text()) + + +def update_linguas(po_dir: Path): + translations = get_translations(po_dir) + (po_dir / "LINGUAS").write_text("# List of available translations\n" + "\n".join(translations) + "\n") + + +sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME) + +subprocess.run(("tx", "pull", "--all", "--force"), cwd=sync_dir, check=True) + +strip_message_locations(sync_dir) + +copy_translations_to_source_dir(sync_dir, PO_DIR) + +update_linguas(PO_DIR) diff --git a/mcsrc/maint/utils/sync-transifex/po-fromTransifex.sh b/mcsrc/maint/utils/sync-transifex/po-fromTransifex.sh deleted file mode 100644 index 21effdf0..00000000 --- a/mcsrc/maint/utils/sync-transifex/po-fromTransifex.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - -# Midnight Commander - fetch doc/hints/mc.hint translations from Transifex -# -# Copyright (C) 2013 -# The Free Software Foundation, Inc. -# -# Written by: -# Slava Zanko , 2013 -# -# This file is part of the Midnight Commander. -# -# The Midnight Commander is free software: you can redistribute it -# and/or modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the License, -# or (at your option) any later version. -# -# The Midnight Commander is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -set -e - -MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))} - -#*** include section (source functions, for example) ******************* - -source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions" - -#*** file scope functions ********************************************** - -stripLocation() { - work_dir=$1; shift - - for i in $(find "${work_dir}" -name '*.po' -print); do - sed -i '/^#:/d' "${i}" - done -} - -# ---------------------------------------------------------------------- - -copyFilesToSourceDir() { - work_dir=$1; shift - source_dir=$1; shift - - exclude_list_file=$(getConfigFile "po" "po-ignore.list") - - for i in $(find "${work_dir}" -name '*.po' -print | sort); do - [ $(grep -c "^\s*$(basename ${i})" "${exclude_list_file}") -ne 1 ] && { - cp -f "${i}" "${source_dir}" - } - done -} - -#*** main code ********************************************************* - -WORK_DIR=$(initSyncDirIfNeeded "po") - -receiveTranslationsFromTransifex "${WORK_DIR}" - -stripLocation "${WORK_DIR}" - -copyFilesToSourceDir "${WORK_DIR}" "${MC_SOURCE_ROOT_DIR}/po" diff --git a/mcsrc/maint/utils/sync-transifex/po-to-transifex.py b/mcsrc/maint/utils/sync-transifex/po-to-transifex.py new file mode 100644 index 00000000..654d560e --- /dev/null +++ b/mcsrc/maint/utils/sync-transifex/po-to-transifex.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 + +import subprocess +from pathlib import Path + +from translation_utils import init_sync_dir + +RESOURCE_NAME = "mc.pot" + +SCRIPT_DIR = Path(__file__).parent +SOURCE_DIR = SCRIPT_DIR.parent.parent.parent + +sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME) + +# Copy mc.pot to the working directory +(sync_dir / RESOURCE_NAME).write_text((SOURCE_DIR / "po" / RESOURCE_NAME).read_text()) + +subprocess.run(("tx", "push", "--source"), cwd=sync_dir, check=True) diff --git a/mcsrc/maint/utils/sync-transifex/po-toTransifex.sh b/mcsrc/maint/utils/sync-transifex/po-toTransifex.sh deleted file mode 100644 index 82f03003..00000000 --- a/mcsrc/maint/utils/sync-transifex/po-toTransifex.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -# Midnight Commander - push doc/hints/mc.hint file to Transifex -# -# Copyright (C) 2013 -# The Free Software Foundation, Inc. -# -# Written by: -# Slava Zanko , 2013 -# -# This file is part of the Midnight Commander. -# -# The Midnight Commander is free software: you can redistribute it -# and/or modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the License, -# or (at your option) any later version. -# -# The Midnight Commander is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -set -e - -MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))} - -#*** include section (source functions, for example) ******************* - -source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions" - -#*** file scope functions ********************************************** - -copyPotToWorkDir() { - work_dir=$1; shift - source_dir=$1; shift - - cp -f "${source_dir}/mc.pot" "${work_dir}" -} - -#*** main code ********************************************************* - -WORK_DIR=$(initSyncDirIfNeeded "po") - -copyPotToWorkDir "${WORK_DIR}" "${MC_SOURCE_ROOT_DIR}/po" - -sendSourceToTransifex "${WORK_DIR}" - diff --git a/mcsrc/maint/utils/sync-transifex/translation_utils.py b/mcsrc/maint/utils/sync-transifex/translation_utils.py new file mode 100644 index 00000000..5dd7b690 --- /dev/null +++ b/mcsrc/maint/utils/sync-transifex/translation_utils.py @@ -0,0 +1,33 @@ +import glob +from pathlib import Path + + +def get_config_file(root_dir: Path, resource: str, name: str) -> Path: + return root_dir / "config.d" / resource / name + + +def init_sync_dir(root_dir: Path, resource: str) -> Path: + tx_dir = root_dir / "var.d" / resource / ".tx" + tx_dir.mkdir(parents=True, exist_ok=True) + (tx_dir / "config").write_text(get_config_file(root_dir, resource, "tx.config").read_text()) + return tx_dir.parent + + +def create_po4a_config(sync_dir: Path, script_dir: Path, source_dir: Path, resource: str) -> Path: + langs = get_translations(sync_dir) + + config = get_config_file(script_dir, resource, "po4a.cfg").read_text() + + config = config.replace("@translations@", " ".join(f"{lang}:var.d/$master/{lang}.po" for lang in langs)) + config = config.replace("@resources@", " ".join(f"{lang}:@srcdir@/doc/hints/l10n/mc.hint.{lang}" for lang in langs)) + + config = config.replace("@srcdir@", str(source_dir)) + + config_path = sync_dir / "po4a.cfg" + config_path.write_text(config) + + return config_path + + +def get_translations(root_dir: Path) -> list[str]: + return sorted(Path(filename).name.removesuffix(".po") for filename in glob.glob("*.po", root_dir=root_dir)) diff --git a/mcsrc/maint/utils/version.sh b/mcsrc/maint/utils/version.sh deleted file mode 100644 index 64405191..00000000 --- a/mcsrc/maint/utils/version.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/sh - -# Midnight Commander - calculate current version -# -# Copyright (C) 2009, 2010, 2013 -# The Free Software Foundation, Inc. -# -# Written by: -# Slava Zanko , 2009, 2010, 2013 -# Stan. S. Krupoderov , 2009 -# Sergei Trofimovich , 2009 -# Oswald Buddenhagen , 2009 -# -# This file is part of the Midnight Commander. -# -# The Midnight Commander is free software: you can redistribute it -# and/or modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the License, -# or (at your option) any later version. -# -# The Midnight Commander is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -#*** include section (source functions, for example) ******************* - -#*** file scope functions ********************************************** - -mc_print_version(){ - - if [ ! -f "${VERSION_FILE}" \ - -o "${PREV_MC_VERSION}" != "${CURR_MC_VERSION}" ] - then - cat >"${VERSION_FILE}" <" - exit 1 -fi - -src_top_dir="$1" - -VERSION_FILE="${src_top_dir}/version.h" -PREV_MC_VERSION="unknown" -CURR_MC_VERSION="${PREV_MC_VERSION}" - -if [ -r "${VERSION_FILE}" ] - then - PREV_MC_VERSION=`sed -n 's/^#define MC_CURRENT_VERSION "\(.*\)"$/\1/p' "${VERSION_FILE}"` - CURR_MC_VERSION="${PREV_MC_VERSION}" -fi - -git_head=`git --git-dir "${src_top_dir}/.git" rev-parse --verify HEAD 2>/dev/null` -[ -z "${git_head}" ] && mc_print_version - -# try to store sha1 -CURR_MC_VERSION="${git_head}" - -new_version=`git --git-dir "${src_top_dir}/.git" describe --always 2>/dev/null` -[ -z "${new_version}" ] && mc_print_version - -# store pretty tagged version -CURR_MC_VERSION="${new_version}" -mc_print_version diff --git a/mcsrc/merge4_8_29.txt b/mcsrc/merge4_8_29.txt new file mode 100644 index 00000000..704a6184 --- /dev/null +++ b/mcsrc/merge4_8_29.txt @@ -0,0 +1,17 @@ + +File Changes: + + - xxx + + + xxx + + ! xxx ==> xxx + + +Edits: + doc\hints\* + doc\man\* + doc\* + tests\* + + diff --git a/mcsrc/misc/Makefile.am b/mcsrc/misc/Makefile.am index 24f4a0e1..17c495c7 100644 --- a/mcsrc/misc/Makefile.am +++ b/mcsrc/misc/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = ext.d macros.d skins syntax -LIBFILES_OUT = mc.ext +LIBFILES_OUT = mc.ext.ini noinst_DATA = xterm.ad diff --git a/mcsrc/misc/ext.d/misc.sh.in b/mcsrc/misc/ext.d/misc.sh.in index c096240c..c2644ddf 100644 --- a/mcsrc/misc/ext.d/misc.sh.in +++ b/mcsrc/misc/ext.d/misc.sh.in @@ -39,7 +39,7 @@ do_view_action() { dbview -b "${MC_EXT_FILENAME}" ;; sqlite) - sqlite3 "${MC_EXT_FILENAME}" .dump + sqlite3 "file:${MC_EXT_FILENAME}?immutable=1" .dump ;; mo) msgunfmt "${MC_EXT_FILENAME}" || \ diff --git a/mcsrc/misc/filehighlight.ini b/mcsrc/misc/filehighlight.ini index 13dd7196..20f47efb 100644 --- a/mcsrc/misc/filehighlight.ini +++ b/mcsrc/misc/filehighlight.ini @@ -28,10 +28,10 @@ extensions=7z;Z;ace;apk;arc;arj;ark;bz2;cab;cpio;deb;gz;lha;lz;lz4;lzh;lzma;rar;rpm;tar;tbz;tbz2;tgz;tlz;txz;tzst;xz;zip;zoo;zst [doc] - extensions=chm;css;ctl;diz;doc;docm;docx;dtd;fodg;fodp;fods;fodt;htm;html;json;letter;lsm;mail;man;markdown;md;me;msg;nroff;odg;odp;ods;odt;pdf;po;ppt;pptm;pptx;ps;rtf;sgml;shtml;tex;text;txt;xls;xlsm;xlsx;xml;xsd;xslt + extensions=chm;css;ctl;diz;doc;docm;docx;dtd;fodg;fodp;fods;fodt;htm;html;json;letter;lsm;mail;man;markdown;md;me;mkd;msg;nroff;odg;odp;ods;odt;pdf;po;ppt;pptm;pptx;ps;rtf;sgml;shtml;tex;text;txt;xls;xlsm;xlsx;xml;xsd;xslt [source] - extensions=ada;asm;awk;bash;c;c++;caml;cc;cgi;cpp;cxx;diff;erl;go;h;h++;hh;hi;hpp;hs;inc;jasm;jav;java;js;m4;mak;mjs;ml;mli;mll;mlp;mly;pas;patch;php;phps;pl;pm;prg;py;rb;s;sas;sh;sl;st;swift;tcl;tk;xq + extensions=ada;asm;awk;bash;c;c++;caml;cc;cgi;cpp;cxx;diff;erl;go;h;h++;hh;hi;hpp;hs;inc;jasm;jav;java;js;m4;mak;mjs;ml;mli;mll;mlp;mly;pas;patch;php;phps;pl;pm;prg;py;rb;s;sas;sh;sl;st;swift;tcl;tk;tsx;xq [media] extensions=3gp;aac;ac3;ape;asf;avi;dts;flac;flv;it;m3u;m4a;m4v;med;mid;midi;mkv;mod;mol;mov;mp2;mp3;mp4;mpeg;mpg;mpl;ogg;ogv;opus;s3m;ts;umx;vob;wav;webm;wma;wmv;xm diff --git a/mcsrc/misc/mc.default.keymap b/mcsrc/misc/mc.default.keymap index bb126645..a39eb5d3 100644 --- a/mcsrc/misc/mc.default.keymap +++ b/mcsrc/misc/mc.default.keymap @@ -130,6 +130,7 @@ Bottom = alt-gt; end; c1 # SortByExt = # SortBySize = # SortByMTime = +# Filter = # ScrollLeft = # ScrollRight = DriveChangeA = alt-f1 diff --git a/mcsrc/misc/mc.emacs.keymap b/mcsrc/misc/mc.emacs.keymap index 70c467aa..dd7c80e8 100644 --- a/mcsrc/misc/mc.emacs.keymap +++ b/mcsrc/misc/mc.emacs.keymap @@ -128,6 +128,7 @@ Bottom = alt-gt; end; c1 # SortByExt = # SortBySize = # SortByMTime = +# Filter = # ScrollLeft = # ScrollRight = diff --git a/mcsrc/misc/mc.ext.in b/mcsrc/misc/mc.ext.in deleted file mode 100644 index e821900b..00000000 --- a/mcsrc/misc/mc.ext.in +++ /dev/null @@ -1,848 +0,0 @@ -# Midnight Commander 3.0 extension file -# Warning: Structure of this file has changed completely with version 3.0 -# -# All lines starting with # or empty lines are thrown away. -# Lines starting in the first column should have following format: -# -# keyword/descNL, i.e. everything after keyword/ until new line is desc -# -# keyword can be: -# -# shell (desc is, when starting with a dot, any extension (no wildcars), -# i.e. matches all the files *desc . Example: .tar matches *.tar; -# if it doesn't start with a dot, it matches only a file of that name) -# -# shell/i (desc is, when starting with a dot, any extension (no wildcars), -# The same as shell but with case insensitive. -# -# regex (desc is an extended regular expression) -# Please note that we are using the GNU regex library and thus -# \| matches the literal | and | has special meaning (or) and -# () have special meaning and \( \) stand for literal ( ). -# -# regex/i (desc is an extended regular expression) -# The same as regex but with case insensitive. -# -# type (file matches this if `file %f` matches regular expression desc -# (the filename: part from `file %f` is removed)) -# -# type/i (file matches this if `file %f` matches regular expression desc) -# The same as type but with case insensitive. -# -# directory (matches any directory matching regular expression desc) -# -# include (matches an include directive) -# -# default (matches any file no matter what desc is) -# -# Other lines should start with a space or tab and should be in the format: -# -# keyword=commandNL (with no spaces around =), where keyword should be: -# -# Open (if the user presses Enter or doubleclicks it), -# -# View (F3), Edit (F4) -# -# Include is the keyword used to add any further entries from an include/ -# section -# -# command is any one-line shell command, with the following substitutions: -# -# %% -> % character -# %p -> name of the current file (without path, but pwd is its path). -# Also provided to external application as MC_EXT_BASENAME -# global variable -# %f -> name of the current file. Unlike %p, if file is located on a -# non-local virtual filesystem, i.e. either tarfs or ftpfs, -# then the file will be temporarily copied into a local directory -# and %f will be the full path to this local temporal file. -# If you don't want to get a local copy and want to get the -# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then -# use %d/%p instead of %f. -# Also provided to external application as MC_EXT_FILENAME -# global variable -# %d -> name of the current directory (pwd, without trailing slash) -# Also provided to external application as MC_EXT_CURRENTDIR -# global variable -# %s -> "selected files", i.e. space separated list of tagged files if any -# or name of the current file. -# Also provided to external application as MC_EXT_SELECTED -# global variable -# %t -> list of tagged files -# Also provided to external application as MC_EXT_ONLYTAGGED -# global variable -# %u -> list of tagged files (they'll be untaged after the command) -# -# (If these 6 letters are in uppercase, they refer to the other panel. -# But you shouldn't have to use it in this file.) -# -# -# %cd -> the rest is a path mc should change into (cd won't work, since it's -# a child process). %cd handles even vfs names. -# -# %view -> the command you type will be piped into mc's internal file viewer -# if you type only the %view and no command, viewer will load %f file -# instead (i.e. no piping, so it is different to %view cat %f) -# %view may be directly followed by {} with a list of any of -# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for -# text using backspace for bold and underscore) and unform -# (no highlighting for nroff sequences) separated by commas. -# -# %var -> You use it like this: %var{VAR:default}. This macro will expand -# to the value of the VAR variable in the environment if it's set -# otherwise the value in default will be used. This is similar to -# the Bourne shell ${VAR-default} construct. -# -# Rules are applied from top to bottom, thus the order is important. -# If some actions are missing, search continues as if this target didn't -# match (i.e. if a file matches the first and second entry and View action -# is missing in the first one, then on pressing F3 the View action from -# the second entry will be used. default should catch all the actions. -# -# Any new entries you develop for you are always welcome if they are -# useful on more than one system. You can post your modifications -# as tickets at www.midnight-commander.org - - -### Changes ### -# -# Reorganization: 2012-03-07 Slava Zanko -# 2021-03-28 Andrew Borodin -# 2021-08-24 Tomas Szepe - - -### GIT Repo ### -# gitfs changeset -regex/^\[git\] - Open=%cd %p/changesetfs:// - View=%cd %p/patchsetfs:// - - -### Archives ### -# Since we use "file -z", we should use regex/ and shell/ at first, then type/. - -# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk, .gem -regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk$|\.gem$ - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.gz - -shell/.tar.bz - # Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip - -regex/\.t(ar\.bz2|bz2?|b2)$ - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip2 - -# .tar.lzma, .tlz -regex/\.t(ar\.lzma|lz)$ - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lzma - -# .tar.lz -shell/.tar.lz - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz - -# .tar.lz4, .tlz4 -regex/\.t(ar\.lz4|lz4)$ - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz4 - -# .tar.xz, .txz -regex/\.t(ar\.xz|xz)$ - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.xz - -# .tar.zst, .tzst -regex/\.t(ar\.zst|zst)$ - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.zst - -# .tar.F - used in QNX -shell/.tar.F - # Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.F - -# .qpr/.qpk - QNX Neutrino package installer files -regex/\.qp[rk]$ - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.qpr - -# tar -shell/i/.tar - Open=%cd %p/utar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar - -# arj -regex/i/\.a(rj|[0-9][0-9])$ - Open=%cd %p/uarj:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arj - -# cab -shell/i/.cab - Open=%cd %p/ucab:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cab - -# ha -shell/i/.ha - Open=%cd %p/uha:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ha - -# rar -regex/i/\.r(ar|[0-9][0-9])$ - Open=%cd %p/urar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view rar - -# ALZip -shell/i/.alz - Open=%cd %p/ualz:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view alz - -# cpio -shell/.cpio.Z - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.z - -shell/.cpio.lz - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz - -shell/.cpio.lz4 - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz4 - -shell/.cpio.xz - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.xz - -shell/.cpio.zst - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.zst - -shell/.cpio.gz - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.gz - -shell/i/.cpio - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio - -# initrd -regex/^(initramfs.*\.img|initrd(-.+)?\.img(-.+)?)$ - Open=%cd %p/ucpio:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio - -# 7zip archives (they are not man pages) -shell/i/.7z - Open=%cd %p/u7z:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view 7z - -# patch -regex/\.(diff|patch)(\.bz2)$ - Open=%cd %p/patchfs:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2 - -regex/\.(diff|patch)(\.(gz|Z))$ - Open=%cd %p/patchfs:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz - -regex/\.(diff|patch)(\.xz)$ - Open=%cd %p/patchfs:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz - -regex/\.(diff|patch)(\.zst)$ - Open=%cd %p/patchfs:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst - -# ls-lR -regex/(^|\.)ls-?lR(\.gz|Z|bz2)$ - Open=%cd %p/lslR:// - -# trpm -shell/.trpm - Open=%cd %p/trpm:// - View=%view{ascii} @EXTHELPERSDIR@/package.sh view trpm - -# RPM packages (SuSE uses *.spm for source packages) -regex/\.(src\.rpm|spm)$ - Open=%cd %p/rpm:// - View=%view{ascii} @EXTHELPERSDIR@/package.sh view src.rpm - -shell/.rpm - Open=%cd %p/rpm:// - View=%view{ascii} @EXTHELPERSDIR@/package.sh view rpm - -# deb -regex/\.u?deb$ - Open=%cd %p/deb:// - View=%view{ascii} @EXTHELPERSDIR@/package.sh view deb - -# dpkg -shell/.debd - Open=%cd %p/debd:// - View=%view{ascii} @EXTHELPERSDIR@/package.sh view debd - -# apt -shell/.deba - Open=%cd %p/deba:// - View=%view{ascii} @EXTHELPERSDIR@/package.sh view deba - -# ISO9660 -shell/i/.iso - Open=%cd %p/iso9660:// - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view iso9660 - -regex/\.(diff|patch)$ - Open=%cd %p/patchfs:// - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view cat - -# ar library -regex/\.s?a$ - Open=%cd %p/uar:// - #Open=%view{ascii} ar tv %f - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view ar - -# gplib -shell/i/.lib - Open=%cd %p/ulib:// - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lib - -# Mailboxes -type/^ASCII\ mail\ text - Open=%cd %p/mailfs:// - - -### Sources ### - -# C/C++ -regex/i/\.(c|cc|cpp)$ - Include=editor - -# C/C++ header -regex/i/\.(h|hh|hpp)$ - Include=editor - -# Fortran -shell/i/.f - Include=editor - -# Assembler -regex/i/\.(s|asm)$ - Include=editor - -# .so libraries -regex/\.(so|so\.[0-9\.]*)$ - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view so - -# Object -type/^ELF - #Open=%var{PAGER:more} %f - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view elf - - -### Documentation ### - -# Texinfo -#regex/\.(te?xi|texinfo)$ - -# GNU Info page -type/^Info\ text - Open=@EXTHELPERSDIR@/text.sh open info - -shell/.info - Open=@EXTHELPERSDIR@/text.sh open info - -# Exception: .3gp are video files not manual pages -shell/i/.3gp - Include=video - -# Troff with me macros. -# Exception - "read.me" is not a nroff file. -shell/read.me - Open= - View= - -shell/.me - Open=@EXTHELPERSDIR@/text.sh open nroff.me %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.me %var{PAGER:more} - -# Troff with ms macros. -shell/.ms - Open=@EXTHELPERSDIR@/text.sh open nroff.ms %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.ms %var{PAGER:more} - -# Manual page - compressed -type/troff.*gzip compressed - Open=@EXTHELPERSDIR@/text.sh open man.gz %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.gz %var{PAGER:more} - -type/troff.*bzip compressed - Open=@EXTHELPERSDIR@/text.sh open man.bz %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz %var{PAGER:more} - -type/troff.*bzip2 compressed - Open=@EXTHELPERSDIR@/text.sh open man.bz2 %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz2 %var{PAGER:more} - -# Manual page -type/troff or preprocessor input - Open=@EXTHELPERSDIR@/text.sh open man %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz$ - Open=@EXTHELPERSDIR@/text.sh open man.lz %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz4$ - Open=@EXTHELPERSDIR@/text.sh open man.lz4 %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz4 %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$ - Open=@EXTHELPERSDIR@/text.sh open man.lzma %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzma %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$ - Open=@EXTHELPERSDIR@/text.sh open man.xz %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.xz %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.zst$ - Open=@EXTHELPERSDIR@/text.sh open man.zst %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.zst %var{PAGER:more} - -# Perl pod page -shell/.pod - Open=@EXTHELPERSDIR@/text.sh open pod %var{PAGER:more} - View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view pod %var{PAGER:more} - -# CHM -shell/i/.chm - Open=@EXTHELPERSDIR@/text.sh open chm - - -### Images ### - -type/^GIF - Include=image - -type/^JPEG - View=%view{ascii} @EXTHELPERSDIR@/image.sh view jpeg - Include=image - -type/^PC\ bitmap - Include=image - -type/^PNG - Include=image - -type/^JNG - Include=image - -type/^MNG - Include=image - -type/^TIFF - Include=image - -type/^PBM - Include=image - -type/^PGM - Include=image - -type/^PPM - Include=image - -type/^Netpbm - Include=image - -shell/.xcf - Open=@EXTHELPERSDIR@/image.sh open xcf - -shell/.xbm - Open=@EXTHELPERSDIR@/image.sh open xbm - -shell/.xpm - Include=image - View=@EXTHELPERSDIR@/image.sh view xpm %f - -shell/.ico - Include=image - -shell/i/.svg - View=%view{ascii} @EXTHELPERSDIR@/image.sh view svg - Open=@EXTHELPERSDIR@/image.sh open svg - - -### Sound files ### - -regex/i/\.(wav|snd|voc|au|smp|aiff|snd|m4a|ape|aac|wv)$ - Open=@EXTHELPERSDIR@/sound.sh open common - View=%view{ascii} @EXTHELPERSDIR@/sound.sh view common - -regex/i/\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$ - Open=@EXTHELPERSDIR@/sound.sh open mod - -shell/i/.waw22 - Open=@EXTHELPERSDIR@/sound.sh open wav22 - -shell/i/.mp3 - Open=@EXTHELPERSDIR@/sound.sh open mp3 - View=%view{ascii} @EXTHELPERSDIR@/sound.sh view mp3 - -regex/i/\.og[gax]$ - Open=@EXTHELPERSDIR@/sound.sh open ogg - View=%view{ascii} @EXTHELPERSDIR@/sound.sh view ogg - -shell/i/.opus - Open=@EXTHELPERSDIR@/sound.sh open opus - View=%view{ascii} @EXTHELPERSDIR@/sound.sh view opus - -regex/i/\.(spx|flac)$ - Open=@EXTHELPERSDIR@/sound.sh open common - -regex/i/\.(midi?|rmid?)$ - Open=@EXTHELPERSDIR@/sound.sh open midi - -shell/i/.wma - Open=@EXTHELPERSDIR@/sound.sh open wma - View=%view{ascii} @EXTHELPERSDIR@/sound.sh view wma - - -### Play lists ### - -regex/i/\.(m3u|pls)$ - Open=@EXTHELPERSDIR@/sound.sh open playlist - - -### Video ### - -shell/i/.avi - Include=video - -regex/i/\.as[fx]$ - Include=video - -shell/i/.divx - Include=video - -shell/i/.mkv - Include=video - -regex/i/\.(mov|qt)$ - Include=video - -regex/i/\.(mp4|m4v|mpe?g)$ - Include=video - -# MPEG-2 TS container + H.264 codec -shell/i/.mts - Include=video - -shell/i/.ts - Include=video - -shell/i/.vob - Include=video - -shell/i/.wmv - Include=video - -regex/i/\.fl[icv]$ - Include=video - -shell/i/.ogv - Include=video - -regex/i/\.ra?m$ - Open=@EXTHELPERSDIR@/video.sh open ram - -# WebM -shell/i/.webm - Include=video - -type/WebM - Include=video - - -### Documents ### - -# Postscript -type/^PostScript - Open=@EXTHELPERSDIR@/doc.sh open ps - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ps - -# PDF -type/^PDF - Open=@EXTHELPERSDIR@/doc.sh open pdf - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view pdf - -# html -regex/i/\.html?$ - Open=@EXTHELPERSDIR@/web.sh open html - View=%view{ascii} @EXTHELPERSDIR@/web.sh view html - -# StarOffice 5.2 -shell/.sdw - Open=@EXTHELPERSDIR@/doc.sh open ooffice - -# StarOffice 6 and OpenOffice.org formats -regex/i/\.(odt|fodt|ott|sxw|stw|ods|fods|ots|sxc|stc|odp|fodp|otp|sxi|sti|odg|fodg|otg|sxd|std|odb|odf|sxm|odm|sxg)$ - Open=@EXTHELPERSDIR@/doc.sh open ooffice - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view odt - -# AbiWord -shell/.abw - Open=@EXTHELPERSDIR@/doc.sh open abw - -# Gnumeric -shell/i/.gnumeric - Open=@EXTHELPERSDIR@/doc.sh open gnumeric - -# Microsoft Word Document -regex/i/\.(do[ct]|wri|docx)$ - Open=@EXTHELPERSDIR@/doc.sh open msdoc - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc -type/^Microsoft\ Word - Open=@EXTHELPERSDIR@/doc.sh open msdoc - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc - -# RTF document -shell/i/.rtf - Open=@EXTHELPERSDIR@/doc.sh open msdoc - -# Microsoft Excel Worksheet -regex/i/\.(xl[sw]|xlsx)$ - Open=@EXTHELPERSDIR@/doc.sh open msxls - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls -type/^Microsoft\ Excel - Open=@EXTHELPERSDIR@/doc.sh open msxls - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls - -# Microsoft PowerPoint Presentation -regex/i/\.(pp[ts]|pptx)$ - Open=@EXTHELPERSDIR@/doc.sh open msppt - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msppt - -# Use OpenOffice.org/LibreOffice to open any MS Office documents -type/^Microsoft\ Office\ Document - Open=@EXTHELPERSDIR@/doc.sh open ooffice -type/^Microsoft\ OOXML - Open=@EXTHELPERSDIR@/doc.sh open ooffice - -# Framemaker -type/^FrameMaker - Open=@EXTHELPERSDIR@/doc.sh open framemaker - -# DVI -shell/i/.dvi - Open=@EXTHELPERSDIR@/doc.sh open dvi - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view dvi - -# TeX -shell/i/.tex - Include=editor - -# Markdown -shell/i/.md - Include=editor - -# DjVu -regex/i/\.djvu?$ - Open=@EXTHELPERSDIR@/doc.sh open djvu - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view djvu - -# Comic Books -regex/i/\.cb[zr]$ - Open=@EXTHELPERSDIR@/doc.sh open comic - -# Epup, mobi, fb2 -regex/i/\.(epub|mobi|fb2)$ - Open=@EXTHELPERSDIR@/doc.sh open ebook - View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ebook - - -### Miscellaneous ### - -# Compiled Java classes -shell/.class - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view javaclass - -# Imakefile -shell/Imakefile - Open=xmkmf -a - -# Makefile.PL (MakeMaker) -regex/^Makefile\.(PL|pl)$ - Open=%var{PERL:perl} %f - -# Makefile -regex/[Mm]akefile - Open=make -f %f %{Enter parameters} - -# sqlite3.db -type/^SQLite 3.x database - Open=@EXTHELPERSDIR@/misc.sh open sqlite - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view sqlite - -# dbf -shell/i/.dbf - Open=@EXTHELPERSDIR@/misc.sh open dbf - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view dbf - -# REXX script -regex/\.(rexx?|cmd)$ - Open=rexx %f %{Enter parameters};echo "Press ENTER";read y - -# Disk images for Commodore computers (VIC20, C64, C128) -shell/i/.d64 - Open=%cd %p/uc1541:// - View=%view{ascii} c1541 %f -list - Extract=c1541 %f -extract - -# Glade, a user interface designer for GTK+ and GNOME -shell/i/.glade - Open=@EXTHELPERSDIR@/misc.sh open glade - -# Gettext Catalogs -regex/\.g?mo$ - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view mo - -# po -shell/.po - Open=@EXTHELPERSDIR@/misc.sh open po - -# lyx -shell/i/.lyx - Open=@EXTHELPERSDIR@/misc.sh open lyx - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lyx - -# torrent -shell/i/.torrent - View=%view{ascii} @EXTHELPERSDIR@/misc.sh view torrent - - -### Plain compressed files ### - -# ace -shell/i/.ace - Open=%cd %p/uace:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ace - Extract=unace x %f - -# arc -shell/i/.arc - Open=%cd %p/uarc:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arc - Extract=arc x %f '*' - Extract (with flags)=I=%{Enter any Arc flags:}; if test -n "$I"; then arc x $I %f; fi - -# zip -shell/i/.zip - Open=%cd %p/uzip:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip - -# zoo -shell/i/.zoo - Open=%cd %p/uzoo:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zoo - -# lz4 -shell/i/.lz4 - Open=@EXTHELPERSDIR@/archive.sh view lz4 %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz4 - -# WIM -shell/i/\.wim - Open=%cd %p/uwim:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view wim - -# gzip -type/\(gzip compressed - Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz - -# bzip2 -type/\(bzip2 compressed - Open=@EXTHELPERSDIR@/archive.sh view bzip2 %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2 - -# bzip -type/\(bzip compressed - Open=@EXTHELPERSDIR@/archive.sh view bzip %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bzip - -# compress -type/\(compress'd - Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz - -# lz -type/\(lzip compressed - Open=@EXTHELPERSDIR@/archive.sh view lz %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz - -# lzma -type/\(LZMA compressed - Open=@EXTHELPERSDIR@/archive.sh view lzma %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lzma - -# xz -type/\(XZ compressed - Open=@EXTHELPERSDIR@/archive.sh view xz %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz - -# zstd -type/\(Zstandard compressed - Open=@EXTHELPERSDIR@/archive.sh view zst %var{PAGER:more} - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst - -# zip -type/\(Zip archive - Open=%cd %p/uzip:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip - -# jar(zip) -type/i/\(Java\ (Jar\ file|archive)\ data\ \((zip|JAR)\) - Open=%cd %p/uzip:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip - -# lha -type/^LHa\ .*archive - Open=%cd %p/ulha:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lha - -# PAK -type/^PAK\ .*archive - Open=%cd %p/unar:// - View=%view{ascii} @EXTHELPERSDIR@/archive.sh view pak - -# Parity Archive -type/^Parity\ Archive\ Volume\ Set - Open=@EXTHELPERSDIR@/archive.sh open par2 - - -### Includes -# includes should be at end of bindings - -include/editor - Open=%var{EDITOR:vi} %f - -include/image - Open=@EXTHELPERSDIR@/image.sh open ALL_FORMATS - View=%view{ascii} @EXTHELPERSDIR@/image.sh view ALL_FORMATS - -include/video - Open=@EXTHELPERSDIR@/video.sh open ALL_FORMATS - View=%view{ascii} @EXTHELPERSDIR@/video.sh view ALL_FORMATS - - -### Default ### - -# Default target for anything not described above -default/* - Open= - View= - - -### EOF ### diff --git a/mcsrc/misc/mc.ext.ini.in b/mcsrc/misc/mc.ext.ini.in new file mode 100644 index 00000000..67fd8155 --- /dev/null +++ b/mcsrc/misc/mc.ext.ini.in @@ -0,0 +1,1126 @@ +# Midnight Commander 4.0 extension file +# +# Warning: The structure of this file has been completely changed with the version 4.0! +# +# All lines starting with # or empty lines are ignoted. +# +# IMPORTANT: mc scans this file only upon first use or after editing it using the +# mc "Edit extension file" command (F9-c-e). If you edit this file in any other way +# while mc is running, you will need to press F9-c-e and exit the editor for your +# changes to take effect, or exit mc and start it again. +# +# Section name can be anything with following exceptions: +# there are two reserved section names: +# mc.ext.ini +# Default +# special name pattern: +# Include/xxxxx +# See below for more details. +# +# Section [mc.ext.ini] is mandatory. It contains file metadata. +# "Version" parameter is mandatory. It contains the file format version. +# +# Section [Default] is optional. It is applied only if no other match was found. +# +# Sections like [Include/xxxx] can be referenced as "Include=xxxx" from other sections. +# Section [Include/xxxx] can be located as before as after sections that point to it. +# +# Sections are processed from top to bottom, thus the order is important. +# If there are more than one sections with the same name in this file, the first +# section will be used. +# +# [Default] should be a catch-all action and come last. +# +# A section describing a file can contain following keys: +# +# File descriptions: +# +# Directory +# Matches any directory matching regular expression. +# Always case sensitive. +# This key has the highest priority over other keys. If this key is in a section, +# other keys are ignored. +# +# Type +# Matches files if `file %f` matches regular expression +# (the "filename:" part is removed from `file %f` output). +# Ignored if the "file" utility isn't used (not found during the configure step +# or disabled in the ini-file). +# +# TypeIgnoreCase [true|false] +# Defines whether the Type value is case sensitive or not. +# If absent, Type is case sensitive. +# +# Regex +# An extended regular expression +# Please note that we are using the PCRE library and thus \| matches +# the literal | and | has a special meaning (or), and () have a special meaning +# and \( \) stand for literal ( ). +# +# Example: +# Regex=\.t(ar\.lzma|lz)$ +# matches *.tar.lzma or *.tlz. +# +# RegexIgnoreCase [true|false] +# Defines whether the Regex value is case sensitive or not. +# If absent, Regex is case sensitive. +# +# Shell +# Describes an extension when starting with a dot (no wildcards). +# +# Example: +# Shell=.tar +# matches *.tar. +# +# If it doesn't start with a dot, it matches only a file of that name. +# +# If both keys Regex and Shell are in the same section, Regex is used +# and Shell is ignored. +# +# ShellIgnoreCase [true|false] +# Defines whether the Shell value is case sensitive or not. +# If absent, Shell is case sensitive. +# +# Include +# Reference to another section. +# +# Example: +# Include=video +# points to the [Include/video] section. +# +# Commands: +# +# Open +# Execute the command if the user presses Enter or doubleclicks it. +# +# View +# Execute the command if the user presses F3. +# +# Edit +# Execute the command if the user presses F4. +# +# All commands are ignored if the section contains the Include key. +# +# Command is any one-line shell command, with the following substitutions: +# +# %% +# The % character +# +# %p +# Name of the current file without the path. +# Also provided to the external application as MC_EXT_BASENAME environment variable. +# +# %f +# Name of the current file. Unlike %p, if the file is located on a non-local +# virtual filesystem, that is either tarfs or ftpfs, then the file will be +# temporarily copied into a local directory and %f will be the full path +# to this local temporary file. +# If you don't want to get a local copy and want to get the virtual fs path +# (like /ftp://ftp.cvut.cz/pub/hungry/xword), then use %d/%p instead of %f. +# Also provided to the external application as MC_EXT_FILENAME environment variable. +# +# %d +# Name of the current directory without the trailing slash (`pwd`). +# Also provided to the external application as MC_EXT_CURRENTDIR environment variable. +# +# %s +# "Selected files", that is space separated list of tagged files if any or the name +# of the current file. +# Also provided to the external application as MC_EXT_SELECTED environment variable. +# +# %t +# List of the tagged files. +# Also provided to the external application as MC_EXT_ONLYTAGGED environment variable. +# +# %u +# List of the tagged files (they will be untaged after the command is executed). +# +# (If the letter following the % is uppercase, then it refers to the opposite panel. +# But you shouldn't have to use it in this file.) +# +# %cd +# The rest is a path mc should change into (cd won't work, since it's a child process). +# %cd handles even vfs names. +# +# %view +# The command output will be piped into mc's internal file viewer. If you use +# only %view and no command, the viewer will load %f file instead (that is no piping, +# which is the difference to %view cat %f). +# +# %view may be directly followed by {} with one or more of the following +# separated by commas: +# ascii (ascii mode) +# hex (hex mode), +# nroff (color highlighting for text using escape sequences), +# unform (no highlighting for nroff sequences) +# +# %var{VAR:default} +# This macro will expand to the value of the VAR variable in the environment if it's +# set, otherwise the default value will be used. This is similar to the Bourne shell +# ${VAR-default} construct. +# +# Section can contain both Type and Regex or Type and Shell keys. In this case +# they are handled as an AND condition. +# +# Example: +# Shell=.3gp +# Type=^ISO Media.*3GPP +# +# matches *.3gp files for which `file` output is a line starting with "ISO Media" +# and containing "3GPP". +# +# If there are more than one keys with the same name in a section, the last key will be used. +# +# +# Any new entries you want to add are always welcome if they are useful on more than one +# system. You can post your modifications as tickets at www.midnight-commander.org. + + +### Changes ### +# +# Reorganization: 2012-03-07 Slava Zanko +# 2021-03-28 Andrew Borodin +# 2021-08-24 Tomas Szepe +# 2022-09-11 Andrew Borodin : port to INI format. + +[mc.ext.ini] +Version=4.0 + +### GIT Repo ### +[gitfs changeset] +Regex=^\[git\] +Open=%cd %p/changesetfs:// +View=%cd %p/patchsetfs:// + +### Archives ### +# Since we use "file -z", we should use Regex and Shell first, then Type. + + +######### Files by name (Regex and Shell) ######### + +# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z +[tar.gzip] +Regex=\.t([gp]?z|ar\.g?[zZ])$ +Include=tar.gz + +[ipk] +Shell=.ipk +Include=tar.gz + +[gem] +Shell=.gem +Include=tar.gz + +[tar.bzip] +Shell=.tar.bz +# Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip + +[tar.bzip2] +Regex=\.t(ar\.bz2|bz2?|b2)$ +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip2 + +# .tar.lzma, .tlz +[tar.lzma] +Regex=\.t(ar\.lzma|lz)$ +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lzma + +[tar.lz] +Shell=.tar.lz +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz + +# .tar.lz4, .tlz4 +[tar.lz4] +Regex=\.t(ar\.lz4|lz4)$ +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz4 + +# .tar.xz, .txz +[tar.xz] +Regex=\.t(ar\.xz|xz)$ +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.xz + +# .tar.zst, .tzst +[tar.zst] +Regex=\.t(ar\.zst|zst)$ +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.zst + +# .tar.F - used on QNX +[tar.F] +Shell=.tar.F +# Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.F + +# .qpr/.qpk - QNX Neutrino package installer files +[tar.qpr] +Regex=\.qp[rk]$ +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.qpr + +[tar] +Shell=.tar +ShellIgnoreCase=true +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar + +[arj] +Regex=\.a(rj|[0-9][0-9])$ +RegexIgnoreCase=true +Open=%cd %p/uarj:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arj + +[cab] +Shell=.cab +ShellIgnoreCase=true +Open=%cd %p/ucab:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cab + +[ha] +Shell=.ha +ShellIgnoreCase=true +Open=%cd %p/uha:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ha + +[rar] +Regex=\.r(ar|[0-9][0-9])$ +RegexIgnoreCase=true +Open=%cd %p/urar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view rar + +# ALZip +[alz] +Shell=.alz +ShellIgnoreCase=true +Open=%cd %p/ualz:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view alz + +[cpio.Z] +Shell=.cpio.Z +Open=%cd %p/ucpio:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.z + +[cpio.lz] +Shell=.cpio.lz +Open=%cd %p/ucpio:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz + +[cpio.lz4] +Shell=.cpio.lz4 +Open=%cd %p/ucpio:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz4 + +[cpio.xz] +Shell=.cpio.xz +Open=%cd %p/ucpio:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.xz + +[cpio.zst] +Shell=.cpio.zst +Open=%cd %p/ucpio:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.zst + +[cpio.gz] +Shell=.cpio.gz +Open=%cd %p/ucpio:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.gz + +[cpio] +Shell=.cpio +ShellIgnoreCase=true +Include=cpio + +[initrd] +Regex=^(initramfs.*\.img|initrd(-.+)?\.img(-.+)?)$ +Include=cpio + +[7zip] +Shell=.7z +ShellIgnoreCase=true +Open=%cd %p/u7z:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view 7z + +[patch] +Regex=\.(diff|patch)$ +Open=%cd %p/patchfs:// +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view cat + +[patch.gz] +Regex=\.(diff|patch)\.(gz|Z)$ +Open=%cd %p/patchfs:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz + +[patch.bz2] +Regex=\.(diff|patch)\.bz2$ +Open=%cd %p/patchfs:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2 + +[patch.xz] +Regex=\.(diff|patch)\.xz$ +Open=%cd %p/patchfs:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz + +[patch.zst] +Regex=\.(diff|patch)\.zst$ +Open=%cd %p/patchfs:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst + +[ls-lR] +Regex=(^|\.)ls-?lR(\.gz|Z|bz2)$ +Open=%cd %p/lslR:// + +[trpm] +Shell=.trpm +Open=%cd %p/trpm:// +View=%view{ascii} @EXTHELPERSDIR@/package.sh view trpm + +# RPM packages (SuSE uses *.spm for source packages) +[src.rpm] +Regex=\.(src\.rpm|spm)$ +Open=%cd %p/rpm:// +View=%view{ascii} @EXTHELPERSDIR@/package.sh view src.rpm + +[rpm] +Shell=.rpm +Open=%cd %p/rpm:// +View=%view{ascii} @EXTHELPERSDIR@/package.sh view rpm + +[deb] +Regex=\.u?deb$ +Open=%cd %p/deb:// +View=%view{ascii} @EXTHELPERSDIR@/package.sh view deb + +[dpkg] +Shell=.debd +Open=%cd %p/debd:// +View=%view{ascii} @EXTHELPERSDIR@/package.sh view debd + +[apt] +Shell=.deba +Open=%cd %p/deba:// +Ciew=%view{ascii} @EXTHELPERSDIR@/package.sh view deba + +[ISO9660] +Shell=.iso +ShellIgnoreCase=true +Open=%cd %p/iso9660:// +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view iso9660 + +[ar] +Regex=\.s?a$ +Open=%cd %p/uar:// +#Open=%view{ascii} ar tv %f +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view ar + +[gplib] +Shell=.lib +ShellIgnoreCase=true +Open=%cd %p/ulib:// +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lib + +### Sources ### + +[C/C++] +Regex=\.(c|cc|cpp|cxx|c\+\+)$ +RegexIgnoreCase=true +Include=editor + +[C/C++ header] +Regex=\.(h|hh|hpp|hxx|h\+\+)$ +RegexIgnoreCase=true +Include=editor + +[Fortran] +Shell=.f +ShellIgnoreCase=true +Include=editor + +[Assembler] +Regex=\.(s|asm)$ +RegexIgnoreCase=true +Include=editor + +[Typescript] +Shell=.ts +ShellIgnoreCase=true +Type=^Java source +Include=editor + +# .so libraries +[so] +Regex=\.(so|so\.[0-9\.]*)$ +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view so + + +### Documentation ### + +#[Texinfo] +#Regex=\.(te?xi|texinfo)$ + +[info-by-shell] +Shell=.info +Open=@EXTHELPERSDIR@/text.sh open info + +# Exception: .3gp are video files, not manual pages +[3gp] +Shell=.3gp +ShellIgnoreCase=true +Type=^ISO Media.*3GPP +Include=video + +# Troff with me macros. +# Exception - "read.me" is not a nroff file. +[read.me] +Shell=read.me +Open= +View= + +[troff] +Shell=.me +Open=@EXTHELPERSDIR@/text.sh open nroff.me %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.me %var{PAGER:more} + +[roff with ms macros] +Shell=.ms +Open=@EXTHELPERSDIR@/text.sh open nroff.ms %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.ms %var{PAGER:more} + +# Manual page + +[man.lz] +Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz$ +Open=@EXTHELPERSDIR@/text.sh open man.lz %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz %var{PAGER:more} + +[man.lz4] +Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz4$ +Open=@EXTHELPERSDIR@/text.sh open man.lz4 %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz4 %var{PAGER:more} + +[man.lzma] +Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$ +Open=@EXTHELPERSDIR@/text.sh open man.lzma %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzma %var{PAGER:more} + +[man.xz] +Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$ +Open=@EXTHELPERSDIR@/text.sh open man.xz %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.xz %var{PAGER:more} + +[man.zst] +Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.zst$ +Open=@EXTHELPERSDIR@/text.sh open man.zst %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.zst %var{PAGER:more} + +# Perl pod page +[pod] +Shell=.pod +Open=@EXTHELPERSDIR@/text.sh open pod %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view pod %var{PAGER:more} + +[chm] +Shell=.chm +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/text.sh open chm + +### Images ### + +[xcf] +Shell=.xcf +Open=@EXTHELPERSDIR@/image.sh open xcf + +[xbm] +Shell=.xbm +Open=@EXTHELPERSDIR@/image.sh open xbm + +[xpm] +Shell=.xpm +Include=image + +[ico] +Shell=.ico +Include=image + +[svg] +Shell=.svg +ShellIgnoreCase=true +View=%view{ascii} @EXTHELPERSDIR@/image.sh view svg +Open=@EXTHELPERSDIR@/image.sh open svg + + +### Sound files ### + +[sound] +Regex=\.(wav|snd|voc|au|smp|aiff|snd|m4a|ape|aac|wv|spx|flac)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open common +View=%view{ascii} @EXTHELPERSDIR@/sound.sh view common + +[mod] +Regex=\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open mod + +[wav22] +Shell=.waw22 +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open wav22 + +[mp3] +Shell=.mp3 +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open mp3 +View=%view{ascii} @EXTHELPERSDIR@/sound.sh view mp3 + +[ogg] +Regex=\.og[gax]$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open ogg +View=%view{ascii} @EXTHELPERSDIR@/sound.sh view ogg + +[opus] +Shell=.opus +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open opus +View=%view{ascii} @EXTHELPERSDIR@/sound.sh view opus + +[midi] +Regex=\.(midi?|rmid?)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open midi + +[wma] +Shell=.wma +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open wma +View=%view{ascii} @EXTHELPERSDIR@/sound.sh view wma + +# Play list +[playlist] +Regex=\.(m3u|pls)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/sound.sh open playlist + + +### Video ### + +[avi] +Shell=.avi +ShellIgnoreCase=true +Include=video + +[asf] +Regex=\.as[fx]$ +RegexIgnoreCase=true +Include=video + +[divx] +Shell=.divx +ShellIgnoreCase=true +Include=video + +[mkv] +Shell=.mkv +ShellIgnoreCase=true +Include=video + +[mov] +Regex=\.(mov|qt)$ +RegexIgnoreCase=true +Include=video + +[mp4] +Regex=\.(mp4|m4v|mpe?g)$ +RegexIgnoreCase=true +Include=video + +# MPEG-2 TS container + H.264 codec +[mts] +Shell=.mts +ShellIgnoreCase=true +Include=video + +[ts] +Shell=.ts +ShellIgnoreCase=true +Include=video + +[bob] +Shell=.vob +ShellIgnoreCase=true +Include=video + +[wmv] +Shell=.wmv +ShellIgnoreCase=true +Include=video + +[fli] +Regex=\.fl[icv]$ +RegexIgnoreCase=true +Include=video + +[ogv] +Shell=.ogv +ShellIgnoreCase=true +Include=video + +[realaudio] +Regex=\.ra?m$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/video.sh open ram + +[webm-by-shell] +Shell=.webm +ShellIgnoreCase=true +Include=video + + +### Documents ### + +[html] +Regex=\.html?$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/web.sh open html +View=%view{ascii} @EXTHELPERSDIR@/web.sh view html + +[StarOffice-5.2] +Shell=.sdw +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open ooffice + +# StarOffice 6 and OpenOffice.org formats +[OpenOffice.org] +Regex=\.(odt|fodt|ott|sxw|stw|ods|fods|ots|sxc|stc|odp|fodp|otp|sxi|sti|odg|fodg|otg|sxd|std|odb|odf|sxm|odm|sxg)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open ooffice +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view odt + +[AbiWord] +Shell=.abw +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open abw + +[Gnumeric] +Shell=.gnumeric +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open gnumeric + +[rtf] +Shell=.rtf +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open msdoc + +# Microsoft Word Document +[msdoc-by-shell] +Regex=\.(do[ct]|wri|docx)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open msdoc +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc + +# Microsoft Excel Worksheet +[msxls-by-shell] +Regex=\.(xl[sw]|xlsx)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open msxls +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls + +# Microsoft PowerPoint Presentation +[msppt] +Regex=\.(pp[ts]|pptx)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open msppt +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msppt + +[dvi] +Shell=.dvi +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open dvi +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view dvi + +[tex] +Shell=.tex +ShellIgnoreCase=true +Include=editor + +[markdown] +Regex=\.(md|mkd)$ +ShellIgnoreCase=true +Include=editor + +[djvu] +Regex=\.djvu?$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open djvu +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view djvu + +# Comic Books +[cbr] +Regex=\.cb[zr]$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open comic + +# Epup, mobi, fb2 +[ebook] +Regex=\.(epub|mobi|fb2)$ +RegexIgnoreCase=true +Open=@EXTHELPERSDIR@/doc.sh open ebook +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ebook + + +### Miscellaneous ### + +# Compiled Java classes +[javaclass] +Shell=.class +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view javaclass + +[Imakefile] +Shell=Imakefile +Open=xmkmf -a + +# Makefile.PL (MakeMaker) +[Makefile.pl] +Regex=^Makefile\.(PL|pl)$ +Open=%var{PERL:perl} %f + +[Makefile] +Regex=^[Mm]akefile +Open=make -f %f %{Enter parameters} + +[dbf] +Shell=.dbf +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/misc.sh open dbf +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view dbf + +# REXX script +[rexx] +Regex=\.(rexx?|cmd)$ +Open=rexx %f %{Enter parameters};echo "Press ENTER";read y + +# Disk images for Commodore computers (VIC20, C64, C128) +[d64] +Shell=.d64 +ShellIgnoreCase=true +Open=%cd %p/uc1541:// +View=%view{ascii} c1541 %f -list + +# Glade, a user interface designer for GTK+ and GNOME +[glade] +Shell=.glade +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/misc.sh open glade + +# Gettext Catalogs +[mo] +Regex=.g?mo$ +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view mo + +[po] +Shell=.po +Open=@EXTHELPERSDIR@/misc.sh open po + +[lyx] +Shell=.lyx +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/misc.sh open lyx +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lyx + +[torrent] +Shell=.torrent +ShellIgnoreCase=true +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view torrent + + +### Plain compressed files ### + +[ace] +Shell=.ace +ShellIgnoreCase=true +Open=%cd %p/uace:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ace + +[arc] +Shell=.arc +ShellIgnoreCase=true +Open=%cd %p/uarc:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arc + +[zip-by-shell] +Shell=.zip +ShellIgnoreCase=true +Open=%cd %p/uzip:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip + +[zoo] +Shell=.zoo +ShellIgnoreCase=true +Open=%cd %p/uzoo:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zoo + +[lz4] +Shell=.lz4 +ShellIgnoreCase=true +Open=@EXTHELPERSDIR@/archive.sh view lz4 %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz4 + +[wim] +Shell=.wim +ShellIgnoreCase=true +Open=%cd %p/uwim:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view wim + + +######### Files by Type ######### + +### Archives ### + +[mailbox] +Type=^ASCII\ mail\ text +Open=%cd %p/mailfs:// + + +### Sources ### + +# Object +[elf] +Type=^ELF +#Open=%var{PAGER:more} %f +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view elf + + +### Documentation ### + +# GNU Info page +[info-by-type] +Type=^Info\ text +Open=@EXTHELPERSDIR@/text.sh open info + +# Manual page - compressed +[troff.gz] +Type=troff.*gzip compressed +Open=@EXTHELPERSDIR@/text.sh open man.gz %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.gz %var{PAGER:more} + +[troff.bzip] +Type=troff.*bzip compressed +Open=@EXTHELPERSDIR@/text.sh open man.bz %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz %var{PAGER:more} + +[troff.bzip2] +Type=troff.*bzip2 compressed +Open=@EXTHELPERSDIR@/text.sh open man.bz2 %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz2 %var{PAGER:more} + +# Manual page +[man] +Type=troff or preprocessor input +Open=@EXTHELPERSDIR@/text.sh open man %var{PAGER:more} +View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man %var{PAGER:more} + + +### Images ### + +[gif] +Type=^GIF +Include=image + +[jpeg] +Type=^JPEG +Include=image + +[bitmap] +Type=^PC\ bitmap +Include=image + +[png] +Type=^PNG +Include=image + +[jng] +Type=^JNG +Include=image + +[mng] +Type=^MNG +Include=image + +[tiff] +Type=^TIFF +Include=image + +[rbm] +Type=^PBM +Include=image + +[pgm] +Type=^PGM +Include=image + +[ppm] +Type=^PPM +Include=image + +[netpbm] +Type=^Netpbm +Include=image + + +### Video ### + +[webm-by-type] +Type=WebM +Include=video + + +### Documents ### + +[postscript] +Type=^PostScript +Open=@EXTHELPERSDIR@/doc.sh open ps +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ps + +[pdf] +Type=^PDF +Open=@EXTHELPERSDIR@/doc.sh open pdf +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view pdf + +# Microsoft Word Document +[msdoc-by-type] +Type=^Microsoft\ Word +Open=@EXTHELPERSDIR@/doc.sh open msdoc +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc + +# Microsoft Excel Worksheet +[msxls-by-type] +Type=^Microsoft\ Excel +Open=@EXTHELPERSDIR@/doc.sh open msxls +View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls + +# Use OpenOffice.org/LibreOffice to open any MS Office documents +[mso-doc-1] +Type=^Microsoft\ Office\ Document +Open=@EXTHELPERSDIR@/doc.sh open ooffice + +[mso-doc-2] +Type=^Microsoft\ OOXML +Open=@EXTHELPERSDIR@/doc.sh open ooffice + +[framemaker] +Type=^FrameMaker +Open=@EXTHELPERSDIR@/doc.sh open framemaker + + +### Miscellaneous ### + +[sqlite3.db] +Type=^SQLite 3.x database +Open=@EXTHELPERSDIR@/misc.sh open sqlite +View=%view{ascii} @EXTHELPERSDIR@/misc.sh view sqlite + + +### Plain compressed files ### + +[gzip] +Type=\(gzip compressed +Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz + +[bzip] +Type=\(bzip compressed +Open=@EXTHELPERSDIR@/archive.sh view bzip %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bzip + +[bzip2] +Type=\(bzip2 compressed +Open=@EXTHELPERSDIR@/archive.sh view bzip2 %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2 + +[compress] +Type=\(compress'd +Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz + +[lz] +Type=\(lzip compressed +Open=@EXTHELPERSDIR@/archive.sh view lz %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz + +[lzma] +Type=\(LZMA compressed +Open=@EXTHELPERSDIR@/archive.sh view lzma %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lzma + +[xz] +Type=\(XZ compressed +Open=@EXTHELPERSDIR@/archive.sh view xz %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz + +[zstd] +Type=\(Zstandard compressed +Open=@EXTHELPERSDIR@/archive.sh view zst %var{PAGER:more} +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst + +[zip-by-type] +Type=\(Zip archive +Open=%cd %p/uzip:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip + +[jar] +Type=\(Java\ (Jar\ file|archive)\ data\ \((zip|JAR)\) +TypeIgnoreCase=true +Open=%cd %p/uzip:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip + +[lha] +Type=^LHa\ .*archive +Open=%cd %p/ulha:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lha + +[pak] +Type=^PAK\ .*archive +Open=%cd %p/unar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view pak + +# Parity Archive +[par2] +Type=^Parity\ Archive\ Volume\ Set +Open=@EXTHELPERSDIR@/archive.sh open par2 + + +######### Includes ######### +# Includes should be at end of the bindings + +[Include/tar.gz] +Open=%cd %p/utar:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.gz + +[Include/cpio] +Open=%cd %p/ucpio:// +View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio + +[Include/editor] +Open=%var{EDITOR:vi} %f + +[Include/image] +Open=@EXTHELPERSDIR@/image.sh open ALL_FORMATS +View=%view{ascii} @EXTHELPERSDIR@/image.sh view ALL_FORMATS + +[Include/video] +Open=@EXTHELPERSDIR@/video.sh open ALL_FORMATS +View=%view{ascii} @EXTHELPERSDIR@/video.sh view ALL_FORMATS + + +######### Default ######### + +# Default target for anything not described above +[Default] +Open= +View= + +### EOF ### diff --git a/mcsrc/misc/skins/seasons-autumn16M.ini b/mcsrc/misc/skins/seasons-autumn16M.ini index 76446e31..47abb4cd 100644 --- a/mcsrc/misc/skins/seasons-autumn16M.ini +++ b/mcsrc/misc/skins/seasons-autumn16M.ini @@ -7,7 +7,7 @@ # 4) A 64-bit operating system. (Future S-Lang version 3 will support # true colors on 32-bit OSes too. Until then, you can install a patched # S-Lang and compile MC against it by following the instructions at -# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) +# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) # 5) A terminal emulator that supports true colors, such as e.g. # GNOME Terminal and other VTE derivatives, KDE's Konsole, # iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a diff --git a/mcsrc/misc/skins/seasons-spring16M.ini b/mcsrc/misc/skins/seasons-spring16M.ini index b3aef4a0..855b4e13 100644 --- a/mcsrc/misc/skins/seasons-spring16M.ini +++ b/mcsrc/misc/skins/seasons-spring16M.ini @@ -7,7 +7,7 @@ # 4) A 64-bit operating system. (Future S-Lang version 3 will support # true colors on 32-bit OSes too. Until then, you can install a patched # S-Lang and compile MC against it by following the instructions at -# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) +# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) # 5) A terminal emulator that supports true colors, such as e.g. # GNOME Terminal and other VTE derivatives, KDE's Konsole, # iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a diff --git a/mcsrc/misc/skins/seasons-summer16M.ini b/mcsrc/misc/skins/seasons-summer16M.ini index 9db96ca6..7cad34b9 100644 --- a/mcsrc/misc/skins/seasons-summer16M.ini +++ b/mcsrc/misc/skins/seasons-summer16M.ini @@ -7,7 +7,7 @@ # 4) A 64-bit operating system. (Future S-Lang version 3 will support # true colors on 32-bit OSes too. Until then, you can install a patched # S-Lang and compile MC against it by following the instructions at -# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) +# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) # 5) A terminal emulator that supports true colors, such as e.g. # GNOME Terminal and other VTE derivatives, KDE's Konsole, # iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a diff --git a/mcsrc/misc/skins/seasons-winter16M.ini b/mcsrc/misc/skins/seasons-winter16M.ini index b1d39552..76479bdd 100644 --- a/mcsrc/misc/skins/seasons-winter16M.ini +++ b/mcsrc/misc/skins/seasons-winter16M.ini @@ -7,7 +7,7 @@ # 4) A 64-bit operating system. (Future S-Lang version 3 will support # true colors on 32-bit OSes too. Until then, you can install a patched # S-Lang and compile MC against it by following the instructions at -# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) +# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.) # 5) A terminal emulator that supports true colors, such as e.g. # GNOME Terminal and other VTE derivatives, KDE's Konsole, # iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a diff --git a/mcsrc/misc/syntax/Makefile.am b/mcsrc/misc/syntax/Makefile.am index dda6ad56..59944564 100644 --- a/mcsrc/misc/syntax/Makefile.am +++ b/mcsrc/misc/syntax/Makefile.am @@ -69,6 +69,7 @@ SYNTAXFILES = \ php.syntax \ po.syntax \ povray.syntax \ + privoxy.syntax \ procmail.syntax \ properties.syntax \ protobuf.syntax \ @@ -89,6 +90,7 @@ SYNTAXFILES = \ syntax.syntax \ tcl.syntax \ texinfo.syntax \ + toml.syntax \ ts.syntax \ tt.syntax \ unknown.syntax \ diff --git a/mcsrc/misc/syntax/Syntax.in b/mcsrc/misc/syntax/Syntax.in index 3570c821..88c37bb1 100644 --- a/mcsrc/misc/syntax/Syntax.in +++ b/mcsrc/misc/syntax/Syntax.in @@ -1,6 +1,20 @@ # This file describes which highlighting scheme is applied to a particular # file in mcedit. # +# +# System-wide files (this and syntax definitions) are located in +# @datarootdir@/@PACKAGE@/syntax/ directory. +# +# User's files (this and syntax definitions) are located in +# ~/.local/share/@PACKAGE@/syntax directory. +# +# If user's file is missing, system-wide one is used. +# +# +# This file is rescanned on opening of every new editor file. +# +# Format of this file is following. +# # Each entry consists of two lines: a "file" specification and the # corresponding highlighting definition ("include"). A file specification # can have two or three fields, each separated by white-space characters. @@ -325,5 +339,11 @@ include kotlin.syntax file ..\*\\.swift$ Swift\sProgram include swift.syntax +file ..\*\\.action$ Privoxy\sFile +include privoxy.syntax + +file .\*\\.toml$ TOML\sFile +include toml.syntax + file .\* unknown include unknown.syntax diff --git a/mcsrc/misc/syntax/privoxy.syntax b/mcsrc/misc/syntax/privoxy.syntax new file mode 100644 index 00000000..d527eda1 --- /dev/null +++ b/mcsrc/misc/syntax/privoxy.syntax @@ -0,0 +1,155 @@ +# Privoxy action file syntax highlighting +# Version: 2022-07-02 +# Author: Bogdan Pylypenko +# This definition is under the GNU GPL version 3.0. + +context default + +context { }\n magenta + keyword \\ brown + + keyword \+add-header yellow + keyword \+block yellow + keyword \+change-x-forwarded-for yellow + keyword \+client-header-filter yellow + keyword \+client-body-filter yellow + keyword \+client-header-tagger yellow + keyword \+content-type-overwrite yellow + keyword \+crunch-client-header yellow + keyword \+crunch-if-none-match yellow + keyword \+crunch-incoming-cookies yellow + keyword \+crunch-server-header yellow + keyword \+crunch-outgoing-cookies yellow + keyword \+deanimate-gifs yellow + keyword \+delay-response yellow + keyword \+downgrade-http-version yellow + keyword \+external-filter yellow + keyword \+fast-redirects yellow + keyword \+filter yellow + keyword \+force-text-mode yellow + keyword \+forward-override yellow + keyword \+handle-as-empty-document yellow + keyword \+handle-as-image yellow + keyword \+hide-accept-language yellow + keyword \+hide-content-disposition yellow + keyword \+hide-if-modified-since yellow + keyword \+hide-from-header yellow + keyword \+hide-referrer yellow + keyword \+hide-user-agent yellow + keyword \+https-inspection yellow + keyword \+ignore-certificate-errors yellow + keyword \+limit-connect yellow + keyword \+limit-cookie-lifetime yellow + keyword \+prevent-compression yellow + keyword \+overwrite-last-modified yellow + keyword \+redirect yellow + keyword \+server-header-filter yellow + keyword \+server-header-tagger yellow + keyword \+suppress-tag yellow + keyword \+session-cookies-only yellow + keyword \+set-image-blocker yellow + + keyword \-add-header green + keyword \-block green + keyword \-change-x-forwarded-for green + keyword \-client-header-filter green + keyword \-client-body-filter green + keyword \-client-header-tagger green + keyword \-content-type-overwrite green + keyword \-crunch-client-header green + keyword \-crunch-if-none-match green + keyword \-crunch-incoming-cookies green + keyword \-crunch-server-header green + keyword \-crunch-outgoing-cookies green + keyword \-deanimate-gifs green + keyword \-delay-response green + keyword \-downgrade-http-version green + keyword \-external-filter green + keyword \-fast-redirects green + keyword \-filter green + keyword \-force-text-mode green + keyword \-forward-override green + keyword \-handle-as-empty-document green + keyword \-handle-as-image green + keyword \-hide-accept-language green + keyword \-hide-content-disposition green + keyword \-hide-if-modified-since green + keyword \-hide-from-header green + keyword \-hide-referrer green + keyword \-hide-user-agent green + keyword \-https-inspection green + keyword \-ignore-certificate-errors green + keyword \-limit-connect green + keyword \-limit-cookie-lifetime green + keyword \-prevent-compression green + keyword \-overwrite-last-modified green + keyword \-redirect green + keyword \-server-header-filter green + keyword \-server-header-tagger green + keyword \-suppress-tag green + keyword \-session-cookies-only green + keyword \-set-image-blocker green + + keyword block cyan + keyword add cyan + keyword last cyan + keyword first cyan + keyword simple-check cyan + keyword check-decoded-url cyan + keyword block cyan + keyword forward-socks4a cyan + keyword forward-socks5 cyan + keyword forward-webserver cyan + keyword forward cyan + keyword conditional-block cyan + keyword conditional-forge cyan + keyword forge cyan + keyword reset-to-request-time cyan + keyword randomize cyan + + # 8.5.18 + 9.2 + keyword js-annoyances cyan + keyword js-events cyan + keyword html-annoyances cyan + keyword content-cookies cyan + keyword refresh-tags cyan + keyword unsolicited-popups cyan + keyword all-popups cyan + keyword img-reorder cyan + keyword banners-by-size cyan + keyword banners-by-link cyan + keyword webbugs cyan + keyword tiny-textforms cyan + keyword jumping-windows cyan + keyword frameset-borders cyan + keyword iframes cyan + keyword demoronizer cyan + keyword shockwave-flash cyan + keyword quicktime-kioskmode cyan + keyword fun cyan + keyword crude-parental cyan + keyword ie-exploits cyan + keyword site-specifics cyan + keyword no-ping cyan + keyword github cyan + keyword google cyan + keyword imdb cyan + keyword yahoo cyan + keyword msn cyan + keyword blogspot cyan + keyword sourceforge cyan + keyword xml-to-html cyan + keyword html-to-xml cyan + keyword no-ping cyan + keyword hide-tor-exit-notation cyan + +# Lines, which ignored by Privoxy, if it starts with "- ": +context linestart -\s \n gray + +# Comments: +context linestart # \n brown + spellcheck +context linestart \s\[\s\]# \n brown + spellcheck +context linestart /\s \n brown + spellcheck diff --git a/mcsrc/misc/syntax/toml.syntax b/mcsrc/misc/syntax/toml.syntax new file mode 100644 index 00000000..0a1dff44 --- /dev/null +++ b/mcsrc/misc/syntax/toml.syntax @@ -0,0 +1,22 @@ +# TOML: Tom's Obvious Minimal Language + +context default white + +# groups +context [ \n brown + keyword [ yellow + keyword ] yellow + +# assignment +context exclusive = \n write + keyword "*" brightgreen + keyword whole false brightcyan + keyword whole true brightcyan + keyword \{0123456789\} brightcyan + +# comments +context # \n brown + spellcheck + +# other strings +context " " brightgreen diff --git a/mcsrc/misc/syntax/yaml.syntax b/mcsrc/misc/syntax/yaml.syntax index 215e990e..fe85a9da 100644 --- a/mcsrc/misc/syntax/yaml.syntax +++ b/mcsrc/misc/syntax/yaml.syntax @@ -36,5 +36,6 @@ context ' ' green spellcheck keyword {{*}} brightred -context exclusive |\[123456789\+\-\s\t\]\n \n- brown -context exclusive >\[123456789\+\-\s\t\]\n \n- brown +# The last word below may be: "\n*:\{\s\n\}", but used strict version suitable for more cases +context exclusive |\[123456789\+\-\s\t\]\n \n\n\[\s-\]\[-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]:\{\s\n\} brown +context exclusive >\[123456789\+\-\s\t\]\n \n\n\[\s-\]\[-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]:\{\s\n\} brown diff --git a/mcsrc/po/Makevars b/mcsrc/po/Makevars index 75e8ee49..b38c5345 100644 --- a/mcsrc/po/Makevars +++ b/mcsrc/po/Makevars @@ -34,7 +34,7 @@ COPYRIGHT_HOLDER = Free Software Foundation, Inc. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. -MSGID_BUGS_ADDRESS = http://www.midnight-commander.org/ +MSGID_BUGS_ADDRESS = https://www.midnight-commander.org/ # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. diff --git a/mcsrc/po/af.po b/mcsrc/po/af.po index 8a2f4516..7f408772 100644 --- a/mcsrc/po/af.po +++ b/mcsrc/po/af.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Afrikaans (http://www.transifex.com/mc/mc/language/af/)\n" @@ -500,6 +500,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1123,7 +1126,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2258,12 +2261,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2404,14 +2401,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2421,8 +2425,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2657,6 +2661,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2669,12 +2682,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2781,7 +2788,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2809,7 +2816,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2861,7 +2868,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2876,7 +2883,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3255,7 +3262,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3500,6 +3507,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3888,6 +3898,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4015,6 +4028,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/ar.po b/mcsrc/po/ar.po index e616bd6c..5fe4f895 100644 --- a/mcsrc/po/ar.po +++ b/mcsrc/po/ar.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Arabic (http://www.transifex.com/mc/mc/language/ar/)\n" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3264,7 +3271,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3517,6 +3524,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3905,6 +3915,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4032,6 +4045,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/az.po b/mcsrc/po/az.po index 1ebe7b39..6760d40d 100644 --- a/mcsrc/po/az.po +++ b/mcsrc/po/az.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Slava Zanko , 2011\n" "Language-Team: Azerbaijani (http://www.transifex.com/mc/mc/language/az/)\n" @@ -503,6 +503,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1126,7 +1129,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2261,12 +2264,6 @@ msgstr " Fayllar niÅŸan alındı, cd istÉ™yirsÉ™n mi?" msgid "Cannot change directory" msgstr "Qovluq dÉ™yiÅŸdirilÉ™ bilmir" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2407,14 +2404,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2424,8 +2428,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2660,6 +2664,15 @@ msgstr "" msgid "(stalled)" msgstr "(stalled)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Saxla" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2672,12 +2685,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Bütöv fayl alına bilmÉ™di. Saxlayım mı?" - -msgid "&Keep" -msgstr "&Saxla" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2784,7 +2791,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2812,7 +2819,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2864,7 +2871,7 @@ msgstr "&AÄŸac" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2879,7 +2886,7 @@ msgstr "FT&P bağı ..." msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3258,7 +3265,7 @@ msgid "No space information" msgstr "SahÉ™ mÉ™'lumatı yoxdur" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3503,6 +3510,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3921,6 +3931,10 @@ msgstr "" "Faylın gözlÉ™nilmÉ™z bitiÅŸi görüldü\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Tar arxivi düzgün deyildir" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4048,6 +4062,21 @@ msgstr "ftpfs : vericiyÉ™ baÄŸlantı qurula bilmÉ™di: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/be.po b/mcsrc/po/be.po index dee88400..ae29952c 100644 --- a/mcsrc/po/be.po +++ b/mcsrc/po/be.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the mc package. # # Translators: +# Pavel Suravezhkin, 2022 # Slava Zanko , 2011 # Viktar Palstsiuk , 2015 # Yury V. Zaytsev , 2019 @@ -12,22 +13,22 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Źmicier Turok , 2018\n" +"Last-Translator: Pavel Suravezhkin, 2022\n" "Language-Team: Belarusian (http://www.transifex.com/mc/mc/language/be/)\n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" -msgstr "Увага: немагчыма загрузіць ÑпіÑ" +msgstr "Увага: немагчыма загрузіць ÑÐ¿Ñ–Ñ ÐºÐ¾Ð´Ð°Ð²Ñ‹Ñ… Ñтаронак" msgid "7-bit ASCII" msgstr "7-Ð±Ñ–Ñ‚Ð½Ð°Ñ ASCII" @@ -538,6 +539,9 @@ msgstr "" "ÐŸÐ°Ð´Ñ‡Ð°Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ñ‹Ñ… працÑÑу нашчадка нечакана адбылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž select():\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1213,8 +1217,8 @@ msgstr "Спачатку патрÑбна абраць блок Ñ‚ÑкÑту" msgid "Run sort" msgstr "Упарадкаваць" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "УвÑдзіце параметры Ð¿Ð°Ñ€Ð°Ð´ÐºÐ°Ð²Ð°Ð½Ð½Ñ (глÑдзіце man), Ð¿Ð°Ð´Ð·ÐµÐ»ÐµÐ½Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ð°Ð»Ð°Ð¼Ñ–:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Упарадкаваць" @@ -1631,7 +1635,7 @@ msgstr "" "напіÑаны Ð´Ð»Ñ Midnight Commander." msgid "Copyright (C) 1996-2022 the Free Software Foundation" -msgstr "" +msgstr "УÑе правы абаронены (C) 1996-2022 Free Software Foundation" msgid "About" msgstr "Пра праграму" @@ -1796,6 +1800,8 @@ msgid "" "Not an xterm or Linux console;\n" "the subshell cannot be toggled." msgstr "" +"Ðе канÑоль xterm або Linux;\n" +"падабалонка не можа быць пераключана." msgid "Type 'exit' to return to the Midnight Commander" msgstr "УвÑдзіце «exit», каб вÑрнуцца Ñž Midnight Commander" @@ -1823,7 +1829,7 @@ msgstr "СцÑг" #, c-format msgid "Permissions (octal): %o" -msgstr "" +msgstr "Дазволы (ваÑьмерычныÑ): %o" msgid "Chown advanced command" msgstr "Пашыраны загад «chown»" @@ -2171,79 +2177,79 @@ msgstr "" "%s" msgid "Secure deletion" -msgstr "" +msgstr "Ðадзейнае выдаленне" msgid "Undelete" -msgstr "" +msgstr "ÐдмÑніць выдаленне" msgid "Synchronous updates" -msgstr "" +msgstr "Ð¡Ñ–Ð½Ñ…Ñ€Ð¾Ð½Ð½Ñ‹Ñ Ð°Ð±Ð½Ð°ÑžÐ»ÐµÐ½Ð½Ñ" msgid "Synchronous directory updates" -msgstr "" +msgstr "Ð¡Ñ–Ð½Ñ…Ñ€Ð¾Ð½Ð½Ñ‹Ñ Ð°Ð±Ð½Ð°ÑžÐ»ÐµÐ½Ð½Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°Ñž" msgid "Immutable" -msgstr "" +msgstr "ÐÑзменны" msgid "Append only" -msgstr "" +msgstr "Толькі дадаць" msgid "No dump" -msgstr "" +msgstr "Без дампа" msgid "No update atime" -msgstr "" +msgstr "Без Ð°Ð±Ð½Ð°ÑžÐ»ÐµÐ½Ð½Ñ atime" msgid "Compress" -msgstr "" +msgstr "СціÑнуць" msgid "Compressed clusters" -msgstr "" +msgstr "СціÑÐ½ÑƒÑ‚Ñ‹Ñ ÐºÐ»Ð°Ñтары" msgid "Compressed dirty file" -msgstr "" +msgstr "СціÑнуты незахаваны файл" msgid "Compression raw access" -msgstr "" +msgstr "СціÑк неапрацаванага доÑтупу" msgid "Encrypted inode" -msgstr "" +msgstr "Зашыфраваны inode" msgid "Journaled data" -msgstr "" +msgstr "Ð”Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ñž чаÑÐ¾Ð¿Ñ–Ñ Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ" msgid "Indexed directory" -msgstr "" +msgstr "ПраіндÑкÑаваны каталог" msgid "No tail merging" -msgstr "" +msgstr "Без Ð·Ð»Ñ–Ñ†Ñ†Ñ Ñž канец" msgid "Top of directory hierarchies" -msgstr "" +msgstr "Верх іерархіі каталога" msgid "Inode uses extents" -msgstr "" +msgstr "Inode выкарыÑтоўвае ÑкÑÑ‚Ñнты" msgid "Huge_file" -msgstr "" +msgstr "Ð’Ñлізны_файл" msgid "No COW" -msgstr "" +msgstr "Без COW" msgid "Direct access for files" -msgstr "" +msgstr "Прамы доÑтуп Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž" msgid "Casefolded file" -msgstr "" +msgstr "Файл без уліку Ñ€ÑгіÑтра" msgid "Inode has inline data" -msgstr "" +msgstr "Inode мае ÑƒÐ±ÑƒÐ´Ð°Ð²Ð°Ð½Ñ‹Ñ Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ" msgid "Project hierarchy" -msgstr "" +msgstr "Ð†ÐµÑ€Ð°Ñ€Ñ…Ñ–Ñ Ð¿Ñ€Ð°ÐµÐºÑ‚Ð°" msgid "Verity protected inode" -msgstr "" +msgstr "ПраўдзіваÑць абароненага inode" msgid "&Marked all" msgstr "Пазначыць уÑÑ‘(&M)" @@ -2255,22 +2261,26 @@ msgid "C&lear marked" msgstr "Прыбраць пазначÑнне(&L)" msgid "Chattr command" -msgstr "" +msgstr "Каманда Chattr" #, c-format msgid "" "Cannot chattr \"%s\"\n" "%s" msgstr "" +"Ðемагчыма chattr \"%s\"\n" +"%s" msgid "Cannot change attributes on non-local filesystems" -msgstr "" +msgstr "Ðемагчыма змÑніць атрыбуты Ñž нелакальных файлавых ÑÑ–ÑÑ‚Ñмах" #, c-format msgid "" "Cannot get flags of \"%s\"\n" "%s" msgstr "" +"Ðемагчыма атрымаць ÑцÑгі \"%s\"\n" +"%s" msgid "set &user ID on execution" msgstr "вызначыць user ID Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку(&U)" @@ -2368,12 +2378,6 @@ msgstr "Файлы пазначаны, змÑніць каталог?" msgid "Cannot change directory" msgstr "Ðемагчыма змÑніць каталог" -msgid "Filter" -msgstr "Фільтраваць" - -msgid "Set expression for filtering filenames" -msgstr "Вызначце выраз Ð´Ð»Ñ Ñ„Ñ–Ð»ÑŒÑ‚Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð°Ð·Ð²Ð°Ñž файлаў" - #, c-format msgid "Link %s to:" msgstr "Стварыць ÑпаÑылку «%s» на:" @@ -2520,18 +2524,23 @@ msgstr "" msgid "Pipe failed" msgstr "Хібны канал" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " Памылка Ñž файле %s%s" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Фармат %smc.ext змÑніўÑÑ Ð· верÑÑ–Ñ– 3.0. Магчыма, Ð¿Ð°Ð´Ñ‡Ð°Ñ ÑƒÑталёўкі адбыўÑÑ " -"збой. Калі лаÑка, абÑрыце Ñвежую верÑÑ–ÑŽ з пакунка Midnight Commander." #, c-format msgid "%s file error" @@ -2539,11 +2548,9 @@ msgstr "Памылка Ñž файле %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Фармат файла %smc.ext змÑніўÑÑ Ð· верÑÑ–Ñ– 3.0. Ð’Ñ‹ можаце або ÑкапіÑваць Ñго з " -"%smc.ext альбо выкарыÑтаць гÑÑ‚Ñ‹ файл Ñк прыклад Ñ– напіÑаць Ñвой." msgid "DialogTitle|Copy" msgstr "КапіÑваць" @@ -2838,6 +2845,15 @@ msgstr "" msgid "(stalled)" msgstr "(затрымліваецца)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "Захаваць(&K)" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2854,12 +2870,6 @@ msgstr "" "Ðемагчыма закрыць мÑтавы файл «%s»\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Быў атрыманы незавершаны файл. Пакінуць?" - -msgid "&Keep" -msgstr "Захаваць(&K)" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2976,8 +2986,8 @@ msgid "Background process: File exists" msgstr "ПрацÑÑ Ñƒ фоне: файл Ñ–Ñнуе" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Ðпрацавана файлаў: %zu з %zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3004,8 +3014,8 @@ msgid " Total: %s " msgstr " Ðгулам: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Ðгулам: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Крыніца" @@ -3056,7 +3066,7 @@ msgstr "ДрÑва(&T)" msgid "&Listing format..." msgstr "Фармат ÑпіÑа(&L)..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3071,7 +3081,7 @@ msgstr "ЗлучÑнне праз FTP(&F)..." msgid "S&hell link..." msgstr "ЗлучÑнне праз абалонку(&H)..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3288,7 +3298,7 @@ msgid "&Find recursively" msgstr "Шукаць у падкаталогах(&F)" msgid "Follow s&ymlinks" -msgstr "" +msgstr "Выконвайце s&ymlinks" msgid "S&kip hidden" msgstr "Мінаць ÑхаваныÑ(&K)" @@ -3458,8 +3468,8 @@ msgid "No space information" msgstr "ÐÑма звеÑтак пра праÑтору" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Вольнае меÑца: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3514,14 +3524,14 @@ msgid "Links: %d" msgstr "СпаÑылкі: %d" msgid "Attributes: not supported" -msgstr "" +msgstr "Ðтрыбуты: не падтрымліваецца" #, c-format msgid "Attributes: %s" -msgstr "" +msgstr "Ðтрыбуты: %s" msgid "Attributes: unavailable" -msgstr "" +msgstr "Ðтрыбуты: недаÑтупны" #, c-format msgid "Mode: %s (%04o)" @@ -3707,6 +3717,9 @@ msgstr "Ðбраць" msgid "Unselect" msgstr "Ðе абіраць" +msgid "Filter" +msgstr "Фільтраваць" + msgid "Do you really want to execute?" msgstr "Сапраўды выканаць?" @@ -3739,6 +3752,8 @@ msgid "" "External panelize:\n" "%s" msgstr "" +"Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ–Ð·Ð°Ð²Ð°Ð½Ð½Ðµ:\n" +"%s" #, c-format msgid "" @@ -3746,6 +3761,9 @@ msgid "" "failed to read data from child stdout:\n" "%s" msgstr "" +"Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ–Ð·Ð°Ð²Ð°Ð½Ð½Ðµ:\n" +"не ўдалоÑÑ Ð¿Ñ€Ð°Ñ‡Ñ‹Ñ‚Ð°Ñ†ÑŒ Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð· даччынага stdout:\n" +"%s" msgid "Cannot run external panelize in a non-local directory" msgstr "Ðемагчыма запуÑціць загад у адлеглым каталозе" @@ -3986,7 +4004,7 @@ msgid "With multiple codepages support" msgstr "З падтрымкай некалькіх кадаваннÑÑž" msgid "With ext2fs attributes support" -msgstr "" +msgstr "З падтрымкай атрыбутаў ext2fs" #, c-format msgid "Built with GLib %d.%d.%d\n" @@ -4012,7 +4030,7 @@ msgstr "Сабраны з ncursesw (невÑÐ´Ð¾Ð¼Ð°Ñ Ð²ÐµÑ€ÑÑ–Ñ)" #, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "" +msgstr "СкампілÑваны з libssh2 %d.%d.%d\n" msgid "Virtual File Systems:" msgstr "Ð’Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ð°Ð²Ñ‹Ñ ÑÑ–ÑÑ‚Ñмы:" @@ -4140,18 +4158,27 @@ msgstr "" "Ðечаканы канец файла\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "ÐеÑумÑшчальны архіў tar" + #, c-format msgid "" "Cannot open %s archive\n" "%s:\n" "%s" msgstr "" +"Ðемагчыма адкрыць %s архіў\n" +"%s:\n" +"%s" #, c-format msgid "" "EXTFS virtual file system:\n" "%s" msgstr "" +"Ð’Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ„Ð°Ð¹Ð»Ð°Ð²Ð°Ñ ÑÑ–ÑÑ‚Ñма EXTFS:\n" +"%s" #, c-format msgid "Warning: cannot open %s directory\n" @@ -4267,6 +4294,21 @@ msgstr "ftpfs: не атрымалаÑÑ Ð·Ð»ÑƒÑ‡Ñ‹Ñ†Ñ†Ð° з Ñерверам: % msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Чакаецца ÑÑˆÑ‡Ñ Ñпроба… %d (ÑкаÑаваць — «Ctrl-G»)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: Ñ…Ñ–Ð±Ð½Ð°Ñ ÑÑÐ¼â€™Ñ Ð°Ð´Ñ€Ð°Ñоў" @@ -4324,6 +4366,8 @@ msgid "" "SFS virtual file system:\n" "%s" msgstr "" +"Ð’Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ„Ð°Ð¹Ð»Ð°Ð²Ð°Ñ ÑÑ–ÑÑ‚Ñма SFS:\n" +"%s" #, c-format msgid "%s: Warning: file %s not found\n" @@ -4361,6 +4405,7 @@ msgstr "sftp: %s" msgid "sftp: failed to convert remote host IP address into text form" msgstr "" +"sftp: не ўдалоÑÑ Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€Ñ‹Ñ†ÑŒ IP-Ð°Ð´Ñ€Ð°Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð°Ð³Ð° хаÑта Ñž Ñ‚ÑкÑтавую форму" #, c-format msgid "sftp: making connection to %s" @@ -4374,10 +4419,10 @@ msgid "sftp: connection to server failed: %s" msgstr "sftp: не атрымалаÑÑ Ð·Ð»ÑƒÑ‡Ñ‹Ñ†Ñ†Ð° з Ñерверам: %s" msgid "sftp: found host key of unsupported type: RSA1" -msgstr "" +msgstr "sftp: знойдзены ключ хоÑта тып Ñкога не падтрымліваецца: RSA1" msgid "sftp: unknown host key type:" -msgstr "" +msgstr "sftp: невÑдомы тып ключа хоÑта:" #, c-format msgid "" @@ -4385,15 +4430,19 @@ msgid "" "%s (%s)\n" "to the list of known hosts." msgstr "" +"Дададзены на Ñталай аÑнове\n" +"%s (%s)\n" +"у ÑÐ¿Ñ–Ñ Ð²Ñдомых хаÑтоў." msgid "sftp: cannot get the remote host key" -msgstr "" +msgstr "sftp: немагчыма атрымаць ключ выдаленага хаÑта" msgid "sftp: unsupported key type, can't check remote host key" msgstr "" +"sftp: тып ключа не падтрымліваецца, немагчыма праверыць ключ выдаленага хаÑта" msgid "sftp: can't compute host key fingerprint hash" -msgstr "" +msgstr "sftp: немагчыма вылічыць Ñ…Ñш адбіткаў ключа хоÑта" #, c-format msgid "" @@ -4404,6 +4453,12 @@ msgid "" "SHA1:%s.\n" "Do you want to add it to the list of known hosts and continue connecting?" msgstr "" +"СапраўднаÑць хаÑта\n" +"%s (%s)\n" +"не можа быць уÑтаноўлена!\n" +"%s Ñ…Ñш адбітка ключа\n" +"SHA1:%s.\n" +"Ð’Ñ‹ хочаце дадаць Ñго Ñž ÑÐ¿Ñ–Ñ Ð²Ñдомых хаÑтоў Ñ– працÑгнуць падключÑнне?" #, c-format msgid "" @@ -4413,9 +4468,14 @@ msgid "" "Are you sure you want to add it to the list of known hosts and continue " "connecting?" msgstr "" +"%s (%s)\n" +"знойдзены Ñž ÑпіÑе вÑдомых хаÑтоў, але\n" +"КЛЮЧЫ ÐЕ СУПÐДÐЮЦЬ! ГЭТРМОЖРБЫЦЬ MITM ÐТÐКÐЙ!\n" +"Ð’Ñ‹ ўпÑўнены, што хочаце дадаць Ñго Ñž ÑÐ¿Ñ–Ñ Ð²Ñдомых хаÑтоў Ñ– працÑгнуць " +"падключÑнне?" msgid "sftp: host key verification failed" -msgstr "" +msgstr "sftp: не атрымалаÑÑ Ð¿Ñ€Ð°Ð²ÐµÑ€Ñ‹Ñ†ÑŒ ключ хаÑта" #, c-format msgid "sftp: Enter passphrase for %s " @@ -4432,7 +4492,7 @@ msgid "sftp: Password is empty." msgstr "sftp: пароль пуÑÑ‚Ñ‹." msgid "sftp: failure establishing SSH session" -msgstr "" +msgstr "sftp: збой пры ÑžÑталÑванні SSH ÑеÑÑ–Ñ–" msgid "sftp: No file handler data present for reading file" msgstr "sftp: нÑма апрацоўшчыка каб прачытаць файл" diff --git a/mcsrc/po/bg.po b/mcsrc/po/bg.po index 294b4395..53252f5e 100644 --- a/mcsrc/po/bg.po +++ b/mcsrc/po/bg.po @@ -3,17 +3,19 @@ # This file is distributed under the same license as the mc package. # # Translators: +# Alexander Shopov , 2022 +# Myselus, 2015,2017 # Myselus, 2015-2017 # Slava Zanko , 2011 # Yasen Pramatarov , 2011-2014,2016 -# Yury V. Zaytsev , 2017 +# Yury V. Zaytsev , 2017,2020 msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Myselus, 2015-2017\n" +"Last-Translator: Alexander Shopov , 2022\n" "Language-Team: Bulgarian (http://www.transifex.com/mc/mc/language/bg/)\n" "Language: bg\n" "MIME-Version: 1.0\n" @@ -23,7 +25,7 @@ msgstr "" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" -msgstr "Предупреждение: не може да Ñе зареди ÑпиÑъкът на кодовите таблици" +msgstr "Предупреждение: ÑпиÑъкът Ñ ÐºÐ¾Ð´Ð¾Ð²Ð¸Ñ‚Ðµ таблици не може да Ñе зареди" msgid "7-bit ASCII" msgstr "7-битов ASCII" @@ -33,7 +35,7 @@ msgid "Cannot translate from %s to %s" msgstr "Ðе може да Ñе преведе от %s на %s" msgid "Event system already initialized" -msgstr "СиÑтемата за ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ðµ вече инициализирана" +msgstr "СиÑтемата за ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð²ÐµÑ‡Ðµ е инициализирана" msgid "Failed to initialize event system" msgstr "ÐеуÑпешно инициализиране на ÑиÑтемата за ÑъбитиÑ" @@ -46,11 +48,11 @@ msgstr "Проверете входÑщата информациÑ. ÐÑкои #, c-format msgid "Unable to create group '%s' for events!" -msgstr "Ðе може да Ñе Ñъздаде група '%s' за ÑъбитиÑ!" +msgstr "Ðе може да Ñе Ñъздаде група „%s“ за ÑъбитиÑ!" #, c-format msgid "Unable to create event '%s'!" -msgstr "Ðе може да Ñе Ñъздаде Ñъбитие '%s'!" +msgstr "Ðе може да Ñе Ñъздаде Ñъбитие „%s“!" #, c-format msgid "" @@ -58,9 +60,9 @@ msgid "" "User: %s\n" "Process ID: %d" msgstr "" -"Файлът \"%s\" вече Ñе редактира.\n" +"Файлът „%s“ вече Ñе редактира.\n" "Потребител: %s\n" -"ID на процеÑа: %d" +"Ид-Ñ€ на процеÑа: %d" msgid "File locked" msgstr "Файлът е заключен" @@ -73,29 +75,31 @@ msgstr "Прене&брегване на заключването" #, c-format msgid "Cannot create %s directory" -msgstr "Ðе може да Ñе Ñъздаде %s директориÑ" +msgstr "Ðе може да Ñе Ñъздаде Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“" msgid "FATAL: not a directory:" -msgstr "Фатално: не е директориÑ:" +msgstr "ФÐТÐЛÐРГРЕШКÐ: не е директориÑ:" msgid "" "Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in " "hex)" msgstr "" -"ЧиÑлото е извън обхват (би Ñ‚Ñ€Ñбвало да бъде обвхвата, 0 <= n <=0xFF, " -"предÑтавено в шеÑтнадеÑетичен формат) " +"ЧиÑлото е извън обхват (Ñ‚Ñ€Ñбва да е в интервала [0; 0xFF] и да е в 16-ен " +"формат) " msgid "Invalid character" -msgstr "Ðевалиден Ñимвол" +msgstr "Ðеправилен знак" msgid "Unmatched quotes character" -msgstr "Ðе ÑъответÑтващи кавички" +msgstr "Кавичка без еш" #, c-format msgid "" "Hex pattern error at position %d:\n" "%s." msgstr "" +"Грешка за 16-на ÑтойноÑÑ‚ при знак %d:\n" +"%s." msgid "Search string not found" msgstr "ТърÑениÑÑ‚ низ не намерен" @@ -104,19 +108,17 @@ msgid "Not implemented yet" msgstr "Ð’Ñе още не е внедрено" msgid "Num of replace tokens not equal to num of found tokens" -msgstr "" -"КоличеÑтвото на Ñимволи за замеÑтване не е равно на количеÑтвото намерени " -"Ñимволи" +msgstr "БроÑÑ‚ лекÑеми за замеÑтване е различен от Ð±Ñ€Ð¾Ñ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸ лекÑеми" #, c-format msgid "Invalid token number %d" -msgstr "Ðевалиден номер на Ñимвол %d" +msgstr "Ðеправилeн номер на лекÑема %d" msgid "Regular expression error" msgstr "Грешка в регулÑрен израз" msgid "No&rmal" -msgstr "" +msgstr "&Ðормално" msgid "Re&gular expression" msgstr "Ре&гулÑрен израз" @@ -132,16 +134,16 @@ msgid "" "Unable to load '%s' skin.\n" "Default skin has been loaded" msgstr "" -"Ðевъзможно зареждане на \"%s\" тема.\n" -"Тема по подразбиране беше заредена" +"Ðевъзможно зареждане на темата „%s“.\n" +"Заредена бе Ñтандартната тема" #, c-format msgid "" "Unable to parse '%s' skin.\n" "Default skin has been loaded" msgstr "" -"Ðевъзможна обработка на \"%s\" тема.\n" -"Тема по подразбиране беше заредена" +"Ðевъзможен анализ на темата „%s“.\n" +"Заредена бе Ñтандартната тема" #, c-format msgid "" @@ -149,9 +151,9 @@ msgid "" "%s\n" "Default skin has been loaded" msgstr "" -"Ðевъзможно използване на '%s' тема Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на иÑтинÑки цветове:\n" +"Ðе може да Ñе ползва темата Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на иÑтинÑки цветове „%s“:\n" "%s\n" -"Тема по подразбиране беше заредена." +"Заредена бе Ñтандартната тема" #, c-format msgid "" @@ -159,26 +161,24 @@ msgid "" "on non-256 colors terminal.\n" "Default skin has been loaded" msgstr "" -"Ðевъзможно използване на \"%s\" тема Ñ 256 цветова поддръжка\n" -"на не-256 цветови терминал.\n" -"Тема по подразбиране беше заредена" +"Ðа терминал без поддръжка на 256 цвÑта не може да Ñе ползва темата „%s“:\n" +"Заредена бе Ñтандартната тема" msgid "True color not supported with ncurses." -msgstr "ИÑтинÑки цвÑÑ‚ не Ñе поддържа заедно Ñ ncurses." +msgstr "ИÑтинÑки цвÑÑ‚ не Ñе поддържа Ñ ncurses." msgid "Your terminal doesn't even seem to support 256 colors." -msgstr "ВашиÑÑ‚ терминал дори не поддържа 256 цвÑта." +msgstr "Терминалът ви не поддържа дори 256 цвÑта." msgid "True color not supported in this slang version." msgstr "ИÑтинÑки цвÑÑ‚ не Ñе поддържа Ñ Ñ‚Ð°Ð·Ð¸ верÑÐ¸Ñ Ð½Ð° slang." msgid "Set COLORTERM=truecolor if your terminal really supports true colors." msgstr "" -"Задайте COLORTERM=truecolor ако вашиÑÑ‚ терминал наиÑтина поддържа иÑтинÑки " -"цветове." +"Задайте COLORTERM=truecolor, ако терминалът ви поддържа иÑтинÑки цветове." msgid "Escape" -msgstr "Esc" +msgstr "" msgid "Function key 1" msgstr "F1" @@ -241,25 +241,25 @@ msgid "Function key 20" msgstr "F20" msgid "Completion/M-tab" -msgstr "Допълване/M-tab" +msgstr "ДопиÑване/M-Tab" msgid "BackTab/S-tab" -msgstr "Обратен таб./S-tab" +msgstr "Обратно/S-Tab" msgid "Backspace" msgstr "Backspace" msgid "Up arrow" -msgstr "Стрелка нагоре" +msgstr "↑" msgid "Down arrow" -msgstr "Стрелка надолу" +msgstr "↓" msgid "Left arrow" -msgstr "Стрелка налÑво" +msgstr "â†" msgid "Right arrow" -msgstr "Стрелка надÑÑно" +msgstr "→" msgid "Insert" msgstr "Insert" @@ -274,55 +274,55 @@ msgid "End key" msgstr "End" msgid "Page Up" -msgstr "Страница нагоре" +msgstr "" msgid "Page Down" -msgstr "Страница надолу" +msgstr "" msgid "/ on keypad" -msgstr "/ от доп. клв." +msgstr "/ от доп. клав." msgid "* on keypad" -msgstr "* от доп. клв." +msgstr "* от доп. клав." msgid "- on keypad" -msgstr "- от доп. клв." +msgstr "- от доп. клав." msgid "+ on keypad" -msgstr "+ от доп. клв." +msgstr "+ от доп. клав." msgid "Left arrow keypad" -msgstr "ЛÑва Ñтрелка от доп. клв." +msgstr "↠от доп. клав." msgid "Right arrow keypad" -msgstr "ДÑÑна Ñтрелка от доп. клв." +msgstr "→ от доп. клав." msgid "Up arrow keypad" -msgstr "Горна Ñтрелка от доп. клв." +msgstr "↑ от доп. клав." msgid "Down arrow keypad" -msgstr "Долна Ñтрелка от доп. клв." +msgstr "↓ от доп. клав." msgid "Home on keypad" -msgstr "Home от доп. клв." +msgstr "Home от доп. клав." msgid "End on keypad" -msgstr "End от доп. клв." +msgstr "End от доп. клав." msgid "Page Down keypad" -msgstr "Page Down от доп. клв." +msgstr "Page Down от доп. клав." msgid "Page Up keypad" -msgstr "Page Up от доп. клв." +msgstr "Page Up от доп. клав." msgid "Insert on keypad" -msgstr "Insert от доп. клв." +msgstr "Insert от доп. клав." msgid "Delete on keypad" -msgstr "Delete от доп. клв." +msgstr "Delete от доп. клав." msgid "Enter on keypad" -msgstr "Enter от доп. клв." +msgstr "Enter от доп. клав." msgid "Function key 21" msgstr "F21" @@ -337,97 +337,97 @@ msgid "Function key 24" msgstr "F24" msgid "A1 key" -msgstr "A1 клавиш" +msgstr "Клавиш A1" msgid "C1 key" -msgstr "C1 клавиш" +msgstr "Клавиш C1" msgid "Asterisk" -msgstr "Звезда" +msgstr "*" msgid "Minus" -msgstr "МинуÑ" +msgstr "-" msgid "Plus" -msgstr "ПлюÑ" +msgstr "+" msgid "Dot" -msgstr "Точка" +msgstr "." msgid "Less than" -msgstr "По-малко" +msgstr "<" msgid "Great than" -msgstr "По-голÑмо" +msgstr ">" msgid "Equal" -msgstr "Равно" +msgstr "=" msgid "Comma" -msgstr "Запетайка" +msgstr "," msgid "Apostrophe" -msgstr "ÐпоÑтроф" +msgstr "'" msgid "Colon" -msgstr "Двоеточие" +msgstr ":" msgid "Semicolon" -msgstr "Точка и запетаÑ" +msgstr ";" msgid "Exclamation mark" -msgstr "Удивителна" +msgstr "!" msgid "Question mark" -msgstr "ВъпроÑителна" +msgstr "?" msgid "Ampersand" -msgstr "ÐмперÑанд" +msgstr "&" msgid "Dollar sign" -msgstr "Долар" +msgstr "$" msgid "Quotation mark" -msgstr "Кавички" +msgstr "\"" msgid "Percent sign" -msgstr "Знак за процент" +msgstr "%" msgid "Caret" -msgstr "Коректура" +msgstr "^" msgid "Tilda" -msgstr "Тилда" +msgstr "~" msgid "Prime" -msgstr "Обратен апоÑтроф" +msgstr "`" msgid "Underline" -msgstr "Подчертаване" +msgstr "_" msgid "Understrike" -msgstr "Подчертаване" +msgstr "_" msgid "Pipe" -msgstr "Права черта" +msgstr "|" msgid "Left parenthesis" -msgstr "ОтварÑща Ñкоба" +msgstr "(" msgid "Right parenthesis" -msgstr "ЗатварÑща Ñкоба" +msgstr ")" msgid "Left bracket" -msgstr "ОтварÑща квадратна Ñкоба" +msgstr "[" msgid "Right bracket" -msgstr "ЗатварÑща квадратна Ñкоба" +msgstr "]" msgid "Left brace" -msgstr "ОтварÑща фигурна Ñкоба" +msgstr "{" msgid "Right brace" -msgstr "ЗатварÑща фигурна Ñкоба" +msgstr "}" msgid "Enter" msgstr "Enter" @@ -439,13 +439,13 @@ msgid "Space key" msgstr "Интервал" msgid "Slash key" -msgstr "Ðакл. черта" +msgstr "/" msgid "Backslash key" -msgstr "Обратна накл. черта" +msgstr "\\" msgid "Number sign #" -msgstr "Знак за Ð½Ð¾Ð¼ÐµÑ€Ð°Ñ†Ð¸Ñ #" +msgstr "#" #. TRANSLATORS: Please translate as in "at sign" (@). msgid "At sign" @@ -461,72 +461,81 @@ msgid "Shift" msgstr "Shift" msgid "The TERM environment variable is unset!\n" -msgstr "Променливата TERM не е уÑтановена!\n" +msgstr "Променливата TERM не е зададена!\n" msgid "Cannot check SIGWINCH pipe" -msgstr "" +msgstr "Каналът за SIGWINCH не може да Ñе провери" #, c-format msgid "" "\n" "Cannot create pipe for SIGWINCH: %s (%d)\n" msgstr "" +"\n" +"Ðе може да Ñе Ñъздаде канал за SIGWINCH: %s (%d)\n" #, c-format msgid "" "\n" "Cannot configure write end of SIGWINCH pipe: %s (%d)\n" msgstr "" +"\n" +"Страната за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° канала за SIGWINCH не може да Ñе наÑтрои: %s (%d)\n" #, c-format msgid "" "\n" "Cannot configure read end of SIGWINCH pipe: %s (%d)\n" msgstr "" +"\n" +"Страната за четене на канала за SIGWINCH не може да Ñе наÑтрои: %s (%d)\n" #, c-format msgid "" "Screen size %dx%d is not supported.\n" "Check the TERM environment variable.\n" msgstr "" -"Размер на екрана %dx%d не е поддържан.\n" +"Ðе Ñе поддържа размер на екрана %dx%d.\n" "Проверете променливата на Ñредата TERM.\n" msgid "B" -msgstr "Б" +msgstr "B" msgid "kB" -msgstr "кБ" +msgstr "kB" msgid "KiB" -msgstr "КиБ" +msgstr "KiB" msgid "MB" -msgstr "МБ" +msgstr "MB" msgid "MiB" -msgstr "Миб" +msgstr "MiB" msgid "GB" -msgstr "ГБ" +msgstr "GB" msgid "GiB" -msgstr "Биб" +msgstr "GiB" msgid "Cannot create pipe descriptor" msgstr "Ðе може да Ñе Ñъздаде деÑкриптор на канала" msgid "Cannot create pipe streams" -msgstr "Ðе могат да Ñе Ñъздадат потоци на канала" +msgstr "Ðе може да Ñе Ñъздадат потоци на канала" #, c-format msgid "" "Unexpected error in select() reading data from a child process:\n" "%s" msgstr "" -"Ðеочаквана грешка в select(), четейки Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ дъщерен процеÑ:\n" +"Ðеочаквана грешка в select() при четене на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ дъщерен процеÑ:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -548,7 +557,7 @@ msgid "%s: %s: %s %lld bytes transferred" msgstr "%s: %s: %s %lld транÑферирани байта" msgid "Starting linear transfer..." -msgstr "Започвам линеен транÑфер..." +msgstr "Ðачало на линеен транÑфер…" msgid "Getting file" msgstr "Получавам файл" @@ -566,7 +575,7 @@ msgstr "ДиректориÑта %s не Ñе притежава от ваÑ\n" #, c-format msgid "Cannot set correct permissions for directory %s\n" -msgstr "Ðе могат да Ñе зададат коректни права за Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s\n" +msgstr "Ðе може да Ñе зададат коректни права за Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s\n" #, c-format msgid "Cannot create temporary directory %s: %s\n" @@ -581,7 +590,7 @@ msgid "Temporary files will not be created\n" msgstr "Временни файлове нÑма да бъдат Ñъздадени\n" msgid "Press any key to continue..." -msgstr "ÐатиÑнете клавиш, за да продължите..." +msgstr "ÐатиÑнете клавиш, за да продължите…" msgid "Cannot parse:" msgstr "Грешка при обработка:" @@ -603,22 +612,22 @@ msgstr "ИÑториÑ" #. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix msgid "DialogTitle|History cleanup" -msgstr "ЗаглавиеДиалог|ИзчиÑтване иÑториÑ" +msgstr "ИзчиÑтване иÑториÑ" msgid "Do you want clean this history?" msgstr "Да Ñе изчиÑти ли иÑториÑта?" msgid "&Yes" -msgstr "Да" +msgstr "&Да" msgid "&No" -msgstr "Ðе" +msgstr "&Ðе" msgid "&OK" -msgstr "&ОК" +msgstr "&Добре" msgid "&Cancel" -msgstr "О&тказ" +msgstr "&Отказ" msgid "Background process:" msgstr "Фонов процеÑ:" @@ -631,29 +640,28 @@ msgid "%s (%d)" msgstr "%s (%d)" msgid "&Abort" -msgstr "Отказ" +msgstr "&Отказ" msgid "Displays the current version" msgstr "Показване на текущата верÑиÑ" msgid "Print data directory" -msgstr "Принтиране на директориÑта Ñ Ð´Ð°Ð½Ð½Ð¸" +msgstr "Печат на директориÑта Ñ Ð´Ð°Ð½Ð½Ð¸" msgid "Print extended info about used data directories" -msgstr "" -"Принтиране на разширена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно използваните директории за данни" +msgstr "Печат на разширена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно използваните директории за данни" msgid "Print configure options" -msgstr "Принтиране на конфигурационните опции" +msgstr "Печат на конфигурационните опции" msgid "Print last working directory to specified file" -msgstr "Принтиране на поÑледната работна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð² определен файл" +msgstr "Печат на поÑледната работна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð² определен файл" msgid "" -msgstr "" +msgstr "<файл>" msgid "Enables subshell support (default)" -msgstr "Поддръжка на подобвивка (по подразбиране)" +msgstr "Поддръжка на подобвивка (Ñтандартно)" msgid "Disables subshell support" msgstr "Без поддръжка на подобвивка" @@ -668,7 +676,7 @@ msgid "Edit files" msgstr "Редактиране на файлове" msgid " ..." -msgstr "" +msgstr "<файл> …" msgid "Forces xterm features" msgstr "Използване възможноÑти на xterm" @@ -677,7 +685,7 @@ msgid "Disable X11 support" msgstr "Изключване на поддръжката на X11" msgid "Tries to use an old highlight mouse tracking" -msgstr "" +msgstr "Опит за ползване на Ñтарото Ñледене на маркиране Ñ Ð¼Ð¸ÑˆÐºÐ°" msgid "Disable mouse support in text version" msgstr "Без поддръжка на мишка в текÑтов режим" @@ -699,7 +707,7 @@ msgstr "Зареждане на дефиниции за клавишни ком msgid "Don't load definitions of key bindings from file, use defaults" msgstr "" -"Без зареждане на клавишни комбинации от файл, използване на подразбираните" +"Без зареждане на клавишни комбинации от файл, използване на Ñтандартните" msgid "Requests to run in black and white" msgstr "ПоиÑк за Ñтартиране в черно-бÑло" @@ -711,7 +719,7 @@ msgid "Specifies a color configuration" msgstr "Указва цветова конфигурациÑ" msgid "" -msgstr "" +msgstr "<низ>" msgid "Show mc with specified skin" msgstr "Показване на mc Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð° тема" @@ -737,6 +745,25 @@ msgid "" " Viewer: viewnormal,viewbold, viewunderline, viewselected\n" " Help: helpnormal, helpitalic, helpbold, helplink, helpslink\n" msgstr "" +"--colors КЛЮЧОВÐ_ДУМÐ={ЦВЯТ},{ФОÐ},{ÐТРИБУТ}:КЛЮЧОВÐ_ДУМÐ_2=…\n" +"\n" +"Когато пропуÑнете {ЦВЯТ}, {ФОÐ} или {ÐТРИБУТ}, Ñе ползват Ñтандартните\n" +"ÑтойноÑти\n" +"\n" +"Ключови думи:\n" +" Глобални: errors, disabled, reverse, gauge, header,\n" +" input, inputmark, inputunchanged, commandlinemark,\n" +" bbarhotkey, bbarbutton, statusbar\n" +" Файлове: normal, selected, marked, markselect\n" +" Диалогови прозорци: dnormal, dfocus, dhotnormal, dhotfocus, errdhotnormal,\n" +" errdhotfocus\n" +" Менюта: menunormal, menuhot, menusel, menuhotsel, menuinactive\n" +" ИзÑкачащи менюта: pmenunormal, pmenusel, pmenutitle\n" +" Редактор: editnormal, editbold, editmarked, editwhitespace,\n" +" editlinestate, editbg, editframe, editframeactive,\n" +" editframedrag\n" +" Преглед: viewnormal, viewbold, viewunderline, viewselected\n" +" Помощ: helpnormal, helpitalic, helpbold, helplink, helpslink\n" #. TRANSLATORS: don't translate color names and attributes msgid "" @@ -766,16 +793,16 @@ msgid "Color options" msgstr "ÐаÑтройки на цветове" msgid "[+lineno] file1[:lineno] [file2[:lineno]...]" -msgstr "" +msgstr "[+â„–_ред] файл_1[:â„–_ред] [файл_2[:â„–_ред]…]" msgid "file" msgstr "файл" msgid "file1 file2" -msgstr "файл1 файл2" +msgstr "файл_1 файл_2" msgid "[this_dir] [other_panel_dir]" -msgstr "" +msgstr "[тази_дир-Ñ] [дир-Ñ_на_другиÑ_панел]" msgid "" "\n" @@ -825,8 +852,8 @@ msgid "" "Background process sent us a request for more arguments\n" "than we can handle." msgstr "" -"Фонов Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð¸ изпрати заÑвка за повече аргументи\n" -"отколкото можем да боравим." +"Фонов Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð·Ð¿Ñ€Ð°Ñ‚Ð¸ заÑвка за повече\n" +"аргументи отколкото Ñе поддържат." msgid "&Dismiss" msgstr "&ОтмÑна" @@ -835,7 +862,7 @@ msgid "Enter search string:" msgstr "Въведете низ за Ñ‚ÑŠÑ€Ñене:" msgid "Cas&e sensitive" -msgstr "ЧувÑтвителноÑÑ‚ към &региÑтъра" +msgstr "&ЧувÑтвителноÑÑ‚ към региÑтъра" msgid "&Backwards" msgstr "&Ðазад" @@ -924,25 +951,25 @@ msgid "Enter line:" msgstr "Въведете ред:" msgid "ButtonBar|Help" -msgstr "ButtonBar|Помощ" +msgstr "Помощ" msgid "ButtonBar|Save" -msgstr "ButtonBar|ЗапиÑ" +msgstr "ЗапиÑ" msgid "ButtonBar|Edit" -msgstr "ButtonBar|РедакциÑ" +msgstr "Редактиране" msgid "ButtonBar|Merge" -msgstr "ButtonBar|ОбединÑване" +msgstr "ОбединÑване" msgid "ButtonBar|Search" -msgstr "ButtonBar|ТърÑене" +msgstr "ТърÑене" msgid "ButtonBar|Options" -msgstr "ButtonBar|ÐаÑтройки" +msgstr "ÐаÑтройки" msgid "ButtonBar|Quit" -msgstr "ButtonBar|Изход" +msgstr "Изход" msgid "Quit" msgstr "Изход" @@ -962,14 +989,14 @@ msgstr "Разлика:" #, c-format msgid "\"%s\" is a directory" -msgstr "\"%s\" е директориÑ" +msgstr "„%s“ е директориÑ" #, c-format msgid "" "Cannot stat \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе stat-не \"%s\"\n" +"Ðе може да Ñе stat-не „%s“\n" "%s" msgid "Diff viewer: invalid mode" @@ -983,7 +1010,7 @@ msgid "Loading: %3d%%" msgstr "Зареждане: %3d%%" msgid "Loading..." -msgstr "Зареждане..." +msgstr "Зареждане…" #, c-format msgid "Cannot open %s for reading" @@ -1002,14 +1029,14 @@ msgstr "Ðе може да Ñе получи размера/правата за #, c-format msgid "\"%s\" is not a regular file" -msgstr "\"%s\" не е обикновен файл" +msgstr "„%s“ не е обикновен файл" #, c-format msgid "" "File \"%s\" is too large.\n" "Open it anyway?" msgstr "" -"Файлът \"%s\" е твърде голÑм.\n" +"Файлът „%s“ е твърде голÑм.\n" "ОтварÑне въпреки това? " msgid "Warning" @@ -1100,13 +1127,13 @@ msgstr "Ðе може да Ñе запише файл" #, c-format msgid "Confirm save file: \"%s\"" -msgstr "Потвърждаване Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° файл: \"%s\"" +msgstr "Потвърждаване Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° файл: „%s“" msgid "Save file" msgstr "Запазване на файл" msgid "&Save" -msgstr "Запази" +msgstr "&Запазване" msgid "Load" msgstr "Зареждане" @@ -1118,7 +1145,7 @@ msgid "Which syntax file you want to edit?" msgstr "Кой Ñинтактичен файл иÑкате да редактирате?" msgid "&User" -msgstr "ПотребителÑки" +msgstr "&ПотребителÑки" msgid "&System wide" msgstr "&ОбщоÑиÑтемни" @@ -1130,10 +1157,10 @@ msgid "Which menu file do you want to edit?" msgstr "Кой файл на меню иÑкате да редактирате?" msgid "&Local" -msgstr "Локален" +msgstr "&Локален" msgid "[NoName]" -msgstr "[ÐÑмаИме]" +msgstr "[БезИме]" #, c-format msgid "" @@ -1152,7 +1179,7 @@ msgid "" "Save modified file %s?" msgstr "" "Midnight Commander Ñе изключва.\n" -"ЗапиÑване на Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s?" +"Запазване на Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s?" msgid "This function is not implemented" msgstr "Това дейÑтвие вÑе още не е внедрено" @@ -1167,7 +1194,7 @@ msgid "Cut to clipboard" msgstr "ИзрÑзване в буфера" msgid "Goto line" -msgstr "Отиване на ред" +msgstr "Към ред" msgid "Save block" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° блок" @@ -1179,31 +1206,31 @@ msgid "Cannot insert file" msgstr "Грешка при вмъкване на файл" msgid "Sort block" -msgstr "Сортиране на блок" +msgstr "Подредба на блок" msgid "You must first highlight a block of text" -msgstr "ТрÑбва първо да оÑветите блок от текÑÑ‚" +msgstr "Първо изберете блок от текÑÑ‚" msgid "Run sort" msgstr "ПуÑкане на Ñортиране" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Въвеждане на опции за Ñортиране (вижте man-Ñтраницата) отделени чрез бÑло " -"поле:" +"Въведете опциите за подредба (вижте Ñтраницата sort(1) в ръководÑтвото), " +"разелени Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»:" msgid "Sort" -msgstr "Подреждане" +msgstr "Подредба" msgid "Cannot execute sort command" -msgstr "Ðе може да изпълни Ñортиращата команда" +msgstr "Командата за подредба не може да изпълни" #, c-format msgid "Sort returned non-zero: %s" -msgstr "Сортирането отвърна различно от нула: %s" +msgstr "Подредбата завърши Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ² код: %s" msgid "Paste output of external command" -msgstr "Вмъкване на изходната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ външна команда" +msgstr "Вмъкване на изхода от външна команда" msgid "Enter shell command(s):" msgstr "Въвеждане на конзолна команда(и):" @@ -1215,13 +1242,13 @@ msgid "Cannot execute command" msgstr "Грешка при изпълнение на команда" msgid "mail -s -c " -msgstr "mail -s -c " +msgstr "mail -s <ТЕМÐ> -c <ДОП_ПОЛУЧÐТЕЛ> <ПОЛУЧÐТЕЛ>" msgid "To" msgstr "До" msgid "Subject" -msgstr "ОтноÑно" +msgstr "Тема" msgid "Copies to" msgstr "Копие до" @@ -1233,20 +1260,20 @@ msgid "Insert literal" msgstr "Въвеждане доÑловно" msgid "Press any key:" -msgstr "ÐатиÑнете който и да е клавиш:" +msgstr "ÐатиÑнете произволен клавиш:" msgid "" "Current text was modified without a file save.\n" "Continue discards these changes." msgstr "" -"Ð¡ÐµÐ³Ð°ÑˆÐ½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ е променен без Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° файл.\n" +"ТекущиÑÑ‚ текÑÑ‚ е променен без Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° файл.\n" "Продължаване изоÑтавÑйки тези промени" msgid "Cancel" msgstr "Отказ" msgid "Collect completions" -msgstr "Събиране на довършваниÑта" +msgstr "Събиране на допиÑваниÑта" msgid "NoName" msgstr "БезИме" @@ -1264,7 +1291,7 @@ msgid "Press macro hotkey:" msgstr "ÐатиÑнете клавиша за макроÑ:" msgid "Macro not deleted" -msgstr "МакроÑа не е изтрит" +msgstr "МакроÑÑŠÑ‚ не е изтрит" msgid "Repeat last commands" msgstr "ПовтарÑне на поÑледните команди" @@ -1273,7 +1300,7 @@ msgid "Repeat times:" msgstr "Брой повторениÑ:" msgid "&Open file..." -msgstr "Отвори файл..." +msgstr "&ОтварÑне на файл…" msgid "&New" msgstr "&Ðов" @@ -1282,25 +1309,25 @@ msgid "&Close" msgstr "&ЗатварÑне" msgid "&History..." -msgstr "" +msgstr "&ИÑториÑ…" msgid "Save &as..." -msgstr "Ð—Ð°Ð¿Ð¸Ñ &като..." +msgstr "Ð—Ð°Ð¿Ð¸Ñ &като…" msgid "&Insert file..." -msgstr "&Вмъкване на файл" +msgstr "&Вмъкване на файл…" msgid "Cop&y to file..." -msgstr "Коп&иране към файл..." +msgstr "Коп&иране към файл…" msgid "&User menu..." -msgstr "&ПотребителÑко меню" +msgstr "&ПотребителÑко меню…" msgid "A&bout..." -msgstr "О&тноÑно" +msgstr "От&ноÑно…" msgid "&Quit" -msgstr "Изход" +msgstr "Из&ход" msgid "&Undo" msgstr "&ОтмÑна" @@ -1309,19 +1336,19 @@ msgid "&Redo" msgstr "&ВъзÑтановÑване" msgid "&Toggle ins/overw" -msgstr "&Включване/изключване вмъкване/замÑна" +msgstr "Вмъкване/&ЗамÑна" msgid "To&ggle mark" -msgstr "Вкл&ючване/изключване маркиране" +msgstr "&Избиране" msgid "&Mark columns" -msgstr "Маркиране колони" +msgstr "Избиране &колони" msgid "Mark &all" -msgstr "Маркиране &вÑички" +msgstr "Избиране &вÑички" msgid "Unmar&k" -msgstr "Отмаркиран&е" +msgstr "&Без избиране" msgid "Cop&y" msgstr "Копира&не" @@ -1330,16 +1357,16 @@ msgid "Mo&ve" msgstr "Пре&меÑтване" msgid "&Delete" -msgstr "Изтрий" +msgstr "Из&триване" msgid "Co&py to clipfile" -msgstr "Ко&пие в clipfile" +msgstr "Ко&пие в изрезките" msgid "&Cut to clipfile" -msgstr "&ИзрÑзване в clipfile" +msgstr "&ИзрÑзване към изрезките" msgid "Pa&ste from clipfile" -msgstr "Вм&ъкване от clipfile" +msgstr "Вм&ъкване от изрезките" msgid "&Beginning" msgstr "&Ðачало" @@ -1348,16 +1375,16 @@ msgid "&End" msgstr "&Край" msgid "&Search..." -msgstr "&ТърÑене..." +msgstr "&ТърÑене…" msgid "Search &again" msgstr "ТърÑене &отново" msgid "&Replace..." -msgstr "&ЗамÑна" +msgstr "&ЗамÑна…" msgid "&Toggle bookmark" -msgstr "&УÑтановÑване/отмÑна на отметка" +msgstr "&Отметка" msgid "&Next bookmark" msgstr "&Следваща отметка" @@ -1366,22 +1393,22 @@ msgid "&Prev bookmark" msgstr "&Предишна отметка" msgid "&Flush bookmarks" -msgstr "" +msgstr "Из&чиÑтване на отметките" msgid "&Go to line..." -msgstr "Отиване на &ред..." +msgstr "Към &ред…" msgid "&Toggle line state" -msgstr "&Включване/изключване ÑÑŠÑтоÑние на реда" +msgstr "&СъÑтоÑние на реда" msgid "Go to matching &bracket" -msgstr "ПремеÑтване до Ñъвпадаща Ñе &Ñкоба" +msgstr "ПремеÑтване до Ñъответна &Ñкоба" msgid "Toggle s&yntax highlighting" -msgstr "Включване/изключване оÑветÑване на Ñ&интакÑиÑа" +msgstr "ОцветÑване на Ñ&интакÑиÑа" msgid "&Find declaration" -msgstr "&ТърÑене декларациÑ" +msgstr "&ДекларациÑ" msgid "Back from &declaration" msgstr "Обратно от &декларациÑ" @@ -1390,16 +1417,16 @@ msgid "For&ward to declaration" msgstr "Ðа&пред към декларациÑ" msgid "Encod&ing..." -msgstr "Кодиро&вка" +msgstr "Ко&диране…" msgid "&Refresh screen" msgstr "О&бновÑване на екрана" msgid "&Start/Stop record macro" -msgstr "&Започване/Спиране Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° макроÑ" +msgstr "&Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° макроÑ" msgid "Delete macr&o..." -msgstr "Изтриване на макр&оÑ" +msgstr "Изтриване на макр&оÑ…" msgid "Record/Repeat &actions" msgstr "ЗапиÑ/Повторение &дейÑтвиÑ" @@ -1411,13 +1438,13 @@ msgid "C&heck word" msgstr "П&роверка на дума" msgid "Change spelling &language..." -msgstr "ПромÑна на правопиÑÐ½Ð¸Ñ &език" +msgstr "&Език за правопиÑа…" msgid "&Mail..." -msgstr "&Поща" +msgstr "&Поща…" msgid "Insert &literal..." -msgstr "Въвеждане &доÑловно" +msgstr "&ДоÑловно въвеждане…" msgid "Insert &date/time" msgstr "Вмъкване на &дата и чаÑ" @@ -1426,22 +1453,22 @@ msgid "&Format paragraph" msgstr "&Форматиране на абзац" msgid "&Sort..." -msgstr "&Подреждане..." +msgstr "&Подредба…" msgid "&Paste output of..." -msgstr "&Вмъкване изходÑща Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚..." +msgstr "&Вмъкване на изхода от…" msgid "&External formatter" msgstr "&Външна форматираща програма" msgid "&Move" -msgstr "ПремеÑти" +msgstr "&ПремеÑтване" msgid "&Resize" -msgstr "&ПромÑна на размер" +msgstr "О&размерÑване" msgid "&Toggle fullscreen" -msgstr "&УÑтановÑване/отмÑна на пълен екран" +msgstr "Ðа &цÑл екран" msgid "&Next" msgstr "&Следващ" @@ -1450,19 +1477,19 @@ msgid "&Previous" msgstr "&Предишен" msgid "&List..." -msgstr "&СпиÑък" +msgstr "&СпиÑък…" msgid "&General..." -msgstr "&Общо..." +msgstr "&Общо…" msgid "Save &mode..." -msgstr "Ð—Ð°Ð¿Ð¸Ñ &режим..." +msgstr "Ð—Ð°Ð¿Ð¸Ñ &режим…" msgid "Learn &keys..." -msgstr "Изучаване &клавиши" +msgstr "За&даване на клавиши…" msgid "Syntax &highlighting..." -msgstr "ОÑветÑване на &ÑинтакÑиÑ..." +msgstr "ОцветÑване на &ÑинтакÑиÑ…" msgid "S&yntax file" msgstr "Файл ÑÑŠÑ &ÑинтакÑиÑ" @@ -1471,7 +1498,7 @@ msgid "&Menu file" msgstr "Файл Ñ &меню" msgid "&Save setup" -msgstr "Запази наÑтройките" +msgstr "&Запазване на наÑтройките" msgid "&File" msgstr "&Файл" @@ -1501,7 +1528,7 @@ msgid "&Dynamic paragraphing" msgstr "&Динамични абзаци" msgid "Type &writer wrap" -msgstr "" +msgstr "&МашинопиÑно пренаÑÑне" msgid "Wrap mode" msgstr "Режим на пренаÑÑне" @@ -1510,25 +1537,25 @@ msgid "Tabulation" msgstr "ТабулациÑ" msgid "&Fake half tabs" -msgstr "Фалшиви полу-tab-ове" +msgstr "&Фалшиви полутабулации" msgid "&Backspace through tabs" -msgstr "Backspace между tab-овете" +msgstr "&Backspace между tab-овете" msgid "Fill tabs with &spaces" -msgstr "Tab-овете Ñа интервали" +msgstr "Табулации чрез &интервали" msgid "Tab spacing:" -msgstr "ПроÑтранÑтво на tab-а:" +msgstr "ПроÑтранÑтво на табулациÑта:" msgid "Other options" msgstr "Други наÑтройки" msgid "&Return does autoindent" -msgstr "Return Ñпазва полето" +msgstr "Return Ñпазва &полето" msgid "Confir&m before saving" -msgstr "Питай преди запазване" +msgstr "&Питане преди запазване" msgid "Save file &position" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° &позициÑта на файла" @@ -1540,16 +1567,16 @@ msgid "Visible &tabs" msgstr "Видими &табулации" msgid "Synta&x highlighting" -msgstr "ОÑветÑване на ÑинтакÑиÑа" +msgstr "&ОцветÑване на ÑинтакÑиÑа" msgid "C&ursor after inserted block" -msgstr "К&урÑорът Ñлед вмъкнат блок" +msgstr "К&урÑор Ñлед вмъкнат блок" msgid "Pers&istent selection" msgstr "ПоÑто&Ñнна ÑелекциÑ" msgid "Cursor be&yond end of line" -msgstr "КурÑорът из&вън ÐºÑ€Ð°Ñ Ð½Ð° линиÑ" +msgstr "КурÑорът из&вън ÐºÑ€Ð°Ñ Ð½Ð° ред" msgid "&Group undo" msgstr "&Групова отнÑна" @@ -1567,7 +1594,7 @@ msgid "&Find all" msgstr "&Ðамиране на вÑички" msgid "Enter replacement string:" -msgstr "Въвеждане на замеÑтващ израз" +msgstr "ЗамеÑтващ израз:" msgid "Replace" msgstr "ЗамÑна" @@ -1576,13 +1603,13 @@ msgid "Replace with:" msgstr "ЗамÑна Ñ:" msgid "&Replace" -msgstr "ЗамеÑти" +msgstr "&ЗамÑна" msgid "A&ll" -msgstr "Ð’Ñички" +msgstr "&Ð’Ñички" msgid "&Skip" -msgstr "ПропуÑни" +msgstr "&ПропуÑкане" msgid "Confirm replace" msgstr "Потвърждаване замÑната" @@ -1593,21 +1620,21 @@ msgstr "ТърÑене на %s: %3d%%" #, c-format msgid "Searching %s" -msgstr "ТърÑÑ %s" +msgstr "ТърÑене на %s" #, c-format msgid "%ld replacements made" -msgstr "%ld замени Ñа направени" +msgstr "направени Ñа %ld замѐни " msgid "" "A user friendly text editor\n" "written for the Midnight Commander." msgstr "" -"Удобен за Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ñ‚ÐµÐºÑтови редактор\n" -"напиÑан за Midnight Commander-а." +"Удобен текÑтови редактор\n" +"за Midnight Commander." msgid "Copyright (C) 1996-2022 the Free Software Foundation" -msgstr "" +msgstr "ÐвторÑки права © 1996-2022 Ð¤Ð¾Ð½Ð´Ð°Ñ†Ð¸Ñ Ð·Ð° Свободен Ñофтуер" msgid "About" msgstr "ОтноÑно" @@ -1619,22 +1646,22 @@ msgid "Edit: " msgstr "Редактиране: " msgid "ButtonBar|Mark" -msgstr "ButtonBar|Маркиране" +msgstr "Избиране" msgid "ButtonBar|Replac" -msgstr "ButtonBar|ЗамеÑтване" +msgstr "ЗамеÑтване" msgid "ButtonBar|Copy" -msgstr "ButtonBar|Копиране" +msgstr "Копиране" msgid "ButtonBar|Move" -msgstr "ButtonBar|ПремеÑтване" +msgstr "ПремеÑтване" msgid "ButtonBar|Delete" -msgstr "ButtonBar|Изтриване" +msgstr "Изтриване" msgid "ButtonBar|PullDn" -msgstr "" +msgstr "Меню" msgid "Breton" msgstr "БретонÑки" @@ -1727,13 +1754,13 @@ msgid "Select language" msgstr "Избор на език" msgid "Choose syntax highlighting" -msgstr "Избиране на оÑветÑване на ÑинтакÑиÑа" +msgstr "ОцветÑване на ÑинтакÑиÑа" msgid "< Auto >" msgstr "< Ðвтоматично >" msgid "< Reload Current Syntax >" -msgstr "< Презареждане на Ð¡ÐµÐ³Ð°ÑˆÐ½Ð¸Ñ Ð¡Ð¸Ð½Ñ‚Ð°ÐºÑÐ¸Ñ >" +msgstr "< Презареждане на ÑÐµÐ³Ð°ÑˆÐ½Ð¸Ñ ÑинтакÑÐ¸Ñ >" msgid "Load syntax file" msgstr "Зареждане на файл ÑÑŠÑ ÑинтакÑиÑ" @@ -1756,14 +1783,14 @@ msgid "" "deleted your working directory, or given yourself\n" "extra access permissions with the \"su\" command?" msgstr "" -"Commander-а не може да промени директориÑта, в коÑто\n" -"под-shell-а твърди че Ñте. Може би Ñте изтрили вашата\n" -"работна директориÑ, или Ñте Ñи дали допълнителни\n" -"права за доÑтъп Ñ \"su\" командата?" +"Commander не може да промени директориÑта, в\n" +"коÑто подобвивката твърди, че Ñте. Може да Ñте\n" +"изтрили работната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð»Ð¸ да Ñте Ñи дали\n" +"допълнителни права за доÑтъп Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „su“." #, c-format msgid "Cannot fetch a local copy of %s" -msgstr "Ðе може да Ñе добие локално копие от %s" +msgstr "Ðе може да Ñе доÑтави локално копие от %s" msgid "The shell is already running a command" msgstr "Обвивката вече изпълнÑва команда" @@ -1772,21 +1799,23 @@ msgid "" "Not an xterm or Linux console;\n" "the subshell cannot be toggled." msgstr "" +"Ðе е xterm или конзола на Linux.\n" +"Ðе може да Ñе превключи подобвивка." msgid "Type 'exit' to return to the Midnight Commander" -msgstr "Ðапишете 'exit', за да Ñе върнете в Midnight Commander-а" +msgstr "Ðапишете „exit“, за да Ñе върнете в Midnight Commander" msgid "Set &all" -msgstr "Прм вÑич" +msgstr "&Ð’Ñички" msgid "S&kip" -msgstr "ПропуÑни" +msgstr "&ПропуÑкане" msgid "&Set" -msgstr "Промени" +msgstr "&Задаване" msgid "owner" -msgstr "ÑобÑÑ‚." +msgstr "ÑобÑтв." msgid "group" msgstr "група" @@ -1799,38 +1828,38 @@ msgstr "Флаг" #, c-format msgid "Permissions (octal): %o" -msgstr "" +msgstr "Права (8-чни): %o" msgid "Chown advanced command" -msgstr "Разширена Chown команда" +msgstr "Разширена команда chown" #, c-format msgid "" "Cannot chmod \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе chmod-не \"%s\"\n" +"Ðе може да Ñе изпълни chmod „%s“\n" "%s" msgid "&Ignore" -msgstr "" +msgstr "&ПреÑкачане" msgid "Ignore &all" -msgstr "" +msgstr "ПреÑкачане на &вÑички" msgid "&Retry" -msgstr "Отново" +msgstr "&Отново" #, c-format msgid "" "Cannot chown \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе chown-не \"%s\"\n" +"Ðе може да Ñе изпълни chown „%s“\n" "%s" msgid "< Default >" -msgstr "< По подразбиране >" +msgstr "< Стандартно >" msgid "Skins" msgstr "Теми" @@ -1839,43 +1868,43 @@ msgid "Other 8 bit" msgstr "Други 8 бита" msgid "Running" -msgstr "ИзпълнÑващ Ñе" +msgstr "ИзпълнÑва Ñе" msgid "Stopped" msgstr "СпрÑн" msgid "&Never" -msgstr "Ðикога" +msgstr "&Ðикога" msgid "On dum&b terminals" msgstr "Ðа проÑÑ‚&и терминали" msgid "Alwa&ys" -msgstr "Винаги" +msgstr "&Винаги" msgid "File operations" msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ" msgid "&Verbose operation" -msgstr "Детайли при операции" +msgstr "Детайли при опера&ции" msgid "Compute tota&ls" -msgstr "ИзчиÑлÑване общ разм&ер" +msgstr "Общ &размер" msgid "Classic pro&gressbar" -msgstr "КлаÑичеÑки индикатор за прогреÑ" +msgstr "Индикатор за про&греÑ" msgid "Mkdi&r autoname" -msgstr "Mkdi&r авто-наименуване" +msgstr "&Ðвтоматично име за нови директории" msgid "&Preallocate space" msgstr "&Предварително заделÑне на проÑтранÑтво" msgid "Esc key mode" -msgstr "Клавиш Esc режим" +msgstr "Режим на Esc" msgid "S&ingle press" -msgstr "Е&динично натиÑкане" +msgstr "Едини&чно натиÑкане" msgid "Timeout:" msgstr "Изчакване:" @@ -1884,103 +1913,103 @@ msgid "Pause after run" msgstr "Спиране Ñлед изпълнение" msgid "Use internal edi&t" -msgstr "Използване на вътрешно редактира&не" +msgstr "Вътре&шен редактор" msgid "Use internal vie&w" -msgstr "Използване на вътрешен прегле&д" +msgstr "Ð’ÑŠÑ‚Ñ€&ешен преглед" msgid "A&sk new file name" msgstr "З&апитване за име на нов файл" msgid "Auto m&enus" -msgstr "Ðвто м&енюта" +msgstr "Ðвто мен&юта" msgid "&Drop down menus" -msgstr "Падащи менюта" +msgstr "Пада&щи менюта" msgid "S&hell patterns" -msgstr "S&hell метаÑимволи" +msgstr "&МетаÑимволи на обвивката" msgid "Co&mplete: show all" -msgstr "Зав&ършено: показване на вÑички" +msgstr "ДопиÑ&ване: показване на вÑички" msgid "Rotating d&ash" -msgstr "ВъртÑщо Ñе ти&ре" +msgstr "ВъртÑщо Ñе &тире" msgid "Cd follows lin&ks" -msgstr "Cd Ñледва линков&ете" +msgstr "CD Ñледва връ&зките" msgid "Sa&fe delete" -msgstr "Бе&зопаÑно изтриване" +msgstr "Ðаде&ждно изтриване" msgid "Safe overwrite" -msgstr "" +msgstr "Ðадеждно презапи&Ñване" msgid "A&uto save setup" -msgstr "Ð&втоматично запиÑване наÑтройка" +msgstr "Ðвтоматично запиÑване на наÑтро&йки" msgid "Configure options" -msgstr "Опции на конфигурациÑта" +msgstr "ÐаÑтройки" msgid "Skin:" msgstr "Тема:" msgid "&Shadows" -msgstr "" +msgstr "&Сенки" msgid "Appearance" -msgstr "Изглед" +msgstr "Външен вид" msgid "Case &insensitive" msgstr "&ÐечувÑтвителноÑÑ‚ към региÑтъра" msgid "Use panel sort mo&de" -msgstr "Използване на Ñортиращ ре&жим на панела" +msgstr "Подреден п&анел" msgid "Show mi&ni-status" -msgstr "Показване ми&ни-ÑтатуÑ" +msgstr "&Мини ÑтатуÑ" msgid "Use SI si&ze units" -msgstr "Използване на SI единици за Ñ€&азмер" +msgstr "Размер в &единици на SI" msgid "Mi&x all files" -msgstr "Сме&Ñване на вÑички файлове" +msgstr "СмеÑване на фа&йловете" msgid "Show &backup files" -msgstr "Показване на &резервните файлове" +msgstr "&Резервни файлове" msgid "Show &hidden files" -msgstr "Показване на &Ñкритите файлове" +msgstr "&Скрити файлове" msgid "&Fast dir reload" -msgstr "Бързо опреÑнÑване" +msgstr "&Бързо опреÑнÑване" msgid "Ma&rk moves down" -msgstr "Ма&ркирането премеÑтва надолу" +msgstr "&Избирането премеÑтва надолу" msgid "Re&verse files only" -msgstr "Пре&обръщане Ñамо на файловете" +msgstr "Преобръ&щане Ñамо на файловете" msgid "Simple s&wap" -msgstr "Обикновена Ñ€&азмÑна" +msgstr "Обикно&вена размÑна" msgid "A&uto save panels setup" -msgstr "Ðв&томатично запиÑване на наÑтройката на панелите" +msgstr "Ðв&то запиÑване на наÑтройките на панелите" msgid "Navigation" msgstr "ÐавигациÑ" msgid "L&ynx-like motion" -msgstr "Движение като lynx" +msgstr "Придвижване &като lynx" msgid "Pa&ge scrolling" -msgstr "ПрелиÑтване на Ñтра&ница" +msgstr "Придви&жване на Ñтраница" msgid "Center &scrolling" -msgstr "" +msgstr "&Центрирано придвижване" msgid "&Mouse page scrolling" -msgstr "ПрелиÑтване на Ñтраница Ñ &мишка" +msgstr "Пре&лиÑтване на Ñтраница Ñ Ð¼Ð¸ÑˆÐºÐ°" msgid "File highlight" msgstr "ОÑветÑване на файл" @@ -1989,7 +2018,7 @@ msgid "File &types" msgstr "Видове &файлове" msgid "&Permissions" -msgstr "&Права" +msgstr "&Права̀" msgid "Quick search" msgstr "Бързо Ñ‚ÑŠÑ€Ñене" @@ -2006,22 +2035,22 @@ msgid "" "manual reload of the directory. See the man page for\n" "the details." msgstr "" -"Използването на опциÑта за бързо презареждане може да не отрази\n" -"точното Ñъдържание на директориÑта. Ð’ този Ñлучай ще Ñ‚Ñ€Ñбва да\n" -"извършите ръчно презареждане на директориÑта. Вижте man Ñтраницата\n" -"за повече детайли." +"Използването на опциÑта за бързо презареждане може да не\n" +"отрази точното Ñъдържание на директориÑта. Ð’ този Ñлучай\n" +"ще Ñ‚Ñ€Ñбва да извършите ръчно презареждане на директориÑта.\n" +"За повече детайли вижте Ñтраницата в ръководÑтвото." msgid "&Full file list" -msgstr "Пълен файлов ÑпиÑък" +msgstr "&Пълен файлов ÑпиÑък" msgid "&Brief file list:" msgstr "&Кратък файлов ÑпиÑък:" msgid "&Long file list" -msgstr "Дълъг файлов ÑпиÑък" +msgstr "&Дълъг файлов ÑпиÑък" msgid "&User defined:" -msgstr "Дефиниран от потребителÑ:" +msgstr "&ПотребителÑки:" msgid "columns" msgstr "колони" @@ -2033,92 +2062,92 @@ msgid "Listing format" msgstr "Формат на ÑпиÑък" msgid "Executable &first" -msgstr "Ð˜Ð·Ð¿ÑŠÐ»Ð½Ð¸Ð¼Ð¸Ñ Ñ„Ð°Ð¹Ð» &първо" +msgstr "Изпълними файлове отпре&д" msgid "&Reverse" -msgstr "Обратен ред" +msgstr "&Обратно" msgid "Sort order" -msgstr "Ред на Ñортиране" +msgstr "Подредба" #. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix msgid "Confirmation|&Delete" -msgstr "Потвърждение|Из&триване" +msgstr "&Изтриване" msgid "Confirmation|O&verwrite" -msgstr "Потвърждение|Презапи&Ñване" +msgstr "&ПрезапиÑване" msgid "Confirmation|&Execute" -msgstr "Потвърждение|Из&пълнение" +msgstr "И&зпълнение" msgid "Confirmation|E&xit" -msgstr "Потвърждение|И&зход" +msgstr "Из&ход" msgid "Confirmation|Di&rectory hotlist delete" -msgstr "Потвърждение|Изтриване на &бързите папки" +msgstr "ИзчиÑтване на &бързите папки" msgid "Confirmation|&History cleanup" -msgstr "Потвърждение|&ИзчиÑтване на иÑториÑта" +msgstr "Из&чиÑтване на иÑториÑта" msgid "Confirmation" -msgstr "Потвърждение" +msgstr "ПотвърждениÑ" msgid "&UTF-8 output" -msgstr "&UTF-8 изходÑща информациÑ" +msgstr "Изход в UTF-&8" msgid "&Full 8 bits output" -msgstr "&Цели 8 бита като изходÑща информациÑ" +msgstr "Изход в 8 &бита" msgid "&ISO 8859-1" -msgstr "&ISO 8859-1" +msgstr "ISO 8859-&1" msgid "7 &bits" -msgstr "7 &бита" +msgstr "&7 бита" msgid "F&ull 8 bits input" -msgstr "Чети вÑичките 8 бита" +msgstr "&Ð’Ñички 8 бита" msgid "Display bits" msgstr "Показване на битовете" msgid "Input / display codepage:" -msgstr "Вход / диÑплей кодова Ñтраница:" +msgstr "Кодова Ñтраница:" msgid "Directory tree" msgstr "Дърво на директориите" msgid "Timeout for freeing VFSs (sec):" -msgstr "Време на изчакване за оÑвобождаване на ВФС-и (Ñек.):" +msgstr "Секунди изчакване за виртуални ФС:" msgid "FTP anonymous password:" -msgstr "FTP анонимна парола:" +msgstr "Парола за анонимно FTP:" msgid "FTP directory cache timeout (sec):" -msgstr "ПродължителноÑÑ‚ (Ñек.) над FTP Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¹Ð½Ð¸Ñ ÐºÐµÑˆ:" +msgstr "Секунди за кеша Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸Ñ‚Ðµ на FTP:" msgid "&Always use ftp proxy:" -msgstr "&Винаги използване на ftp прокÑи:" +msgstr "&ПоÑредник за FTP:" msgid "&Use ~/.netrc" msgstr "&Използване на ~/.netrc" msgid "Use &passive mode" -msgstr "Използване на &паÑивен режим" +msgstr "Па&Ñивен режим" msgid "Use passive mode over pro&xy" -msgstr "Използване на паÑивен режим през про&кÑи" +msgstr "ПаÑивен &режим през поÑредник" msgid "Virtual File System Setting" -msgstr "Виртуална Файлова СиÑтема ÐаÑтройка" +msgstr "Виртуални файлови ÑиÑтеми" msgid "cd" msgstr "cd" msgid "Quick cd" -msgstr "Бързо cd" +msgstr "Бърза ÑмÑна — cd" msgid "Existing filename (filename symlink will point to):" -msgstr "СъщеÑтвуващо име (към което ще Ñочи връзката):" +msgstr "СъщеÑтвуващо име (към което връзката ще Ñочи):" msgid "Symbolic link filename:" msgstr "Име на връзката:" @@ -2127,13 +2156,13 @@ msgid "Symbolic link" msgstr "Връзка" msgid "&Stop" -msgstr "Спри" +msgstr "&Спиране" msgid "&Resume" -msgstr "Продължи" +msgstr "&Продължаване" msgid "&Kill" -msgstr "Убий" +msgstr "&Убиване" msgid "Background jobs" msgstr "Фонови задачи" @@ -2143,119 +2172,123 @@ msgid "" "Cannot chdir to \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе chdir в \"%s\"\n" +"Ðе може да Ñе премине в „%s“\n" "%s" msgid "Secure deletion" -msgstr "" +msgstr "Ðадеждно изтриване" msgid "Undelete" -msgstr "" +msgstr "ВъзÑтановÑване" msgid "Synchronous updates" -msgstr "" +msgstr "Синхронно обновÑване" msgid "Synchronous directory updates" -msgstr "" +msgstr "Синхронно обновÑване на директории" msgid "Immutable" -msgstr "" +msgstr "Ðепроменим" msgid "Append only" -msgstr "" +msgstr "Само добавÑне" msgid "No dump" -msgstr "" +msgstr "Без разтоварване" msgid "No update atime" -msgstr "" +msgstr "Без обновÑване на atime" msgid "Compress" -msgstr "" +msgstr "КомпреÑиране" msgid "Compressed clusters" -msgstr "" +msgstr "КомпреÑирани клъÑтъри" msgid "Compressed dirty file" -msgstr "" +msgstr "КомпреÑиран нечиÑÑ‚ файл" msgid "Compression raw access" -msgstr "" +msgstr "Директен доÑтъп до компреÑираното" msgid "Encrypted inode" -msgstr "" +msgstr "Шифриран i-възел" msgid "Journaled data" -msgstr "" +msgstr "Журнални данни" msgid "Indexed directory" -msgstr "" +msgstr "ИндекÑирана директориÑ" msgid "No tail merging" -msgstr "" +msgstr "Без Ñливане в краÑ" msgid "Top of directory hierarchies" -msgstr "" +msgstr "Ðачало на Ð¹ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ Ð½Ð° директориÑ" msgid "Inode uses extents" -msgstr "" +msgstr "I-възелът ползва обхвати" msgid "Huge_file" -msgstr "" +msgstr "ГолÑм_файл" msgid "No COW" -msgstr "" +msgstr "Без Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¸ промÑна" msgid "Direct access for files" -msgstr "" +msgstr "ПрÑк доÑтъп за файлове" msgid "Casefolded file" -msgstr "" +msgstr "Уеднаквен региÑÑ‚ÑŠÑ€" msgid "Inode has inline data" -msgstr "" +msgstr "I-възел Ñ Ð²ÑŠÑ‚Ñ€ÐµÑˆÐ½Ð¸ данни" msgid "Project hierarchy" -msgstr "" +msgstr "Ð™ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ Ð½Ð° проект" msgid "Verity protected inode" -msgstr "" +msgstr "Проверка на защитѐн i-възел" msgid "&Marked all" -msgstr "Само марк" +msgstr "&Ð’Ñичко избрано" msgid "S&et marked" -msgstr "УÑÑ‚ марк" +msgstr "&Избрано" msgid "C&lear marked" -msgstr "Изтр марк" +msgstr "&ИзчиÑтване на избрано" msgid "Chattr command" -msgstr "" +msgstr "Команда chattr" #, c-format msgid "" "Cannot chattr \"%s\"\n" "%s" msgstr "" +"ÐеуÑпешно изпълнение на chattr „%s“\n" +"%s" msgid "Cannot change attributes on non-local filesystems" -msgstr "" +msgstr "Ðе може да Ñе ÑменÑÑ‚ атрибути на отдалечени ФС" #, c-format msgid "" "Cannot get flags of \"%s\"\n" "%s" msgstr "" +"Ðе може да Ñе получат флаговете на „%s“\n" +"%s" msgid "set &user ID on execution" -msgstr "задаване на &потребителÑко ID при изпълнение" +msgstr "изпълнение Ñ UID на &ÑобÑтвеника" msgid "set &group ID on execution" -msgstr "задаване на ID на &група при изпълнение" +msgstr "изпълнение Ñ GID на &групата" msgid "stick&y bit" -msgstr "stick&y бит" +msgstr "&лепкав бит" msgid "&read by owner" msgstr "&четене от ÑобÑтвеника" @@ -2264,40 +2297,40 @@ msgid "&write by owner" msgstr "&пиÑане от ÑобÑтвеника" msgid "e&xecute/search by owner" -msgstr "из&пълнение/Ñ‚ÑŠÑ€Ñене от ÑобÑтвеника" +msgstr "&изпълнение/Ñ‚ÑŠÑ€Ñене от ÑобÑтвеника" msgid "rea&d by group" -msgstr "че&тене от групата" +msgstr "ч&етене от групата" msgid "write by grou&p" -msgstr "пиÑане от гру&пата" +msgstr "пиÑ&ане от групата" msgid "execu&te/search by group" -msgstr "изпъ&лнение/Ñ‚ÑŠÑ€Ñене от групата" +msgstr "и&зпълнение/Ñ‚ÑŠÑ€Ñене от групата" msgid "read &by others" -msgstr "четете &от другите" +msgstr "че&тене от другите" msgid "wr&ite by others" -msgstr "пи&Ñане от другите" +msgstr "пиÑа&не от другите" msgid "execute/searc&h by others" -msgstr "изпълнение/Ñ‚ÑŠÑ€Ñ&ене от другите" +msgstr "изп&ълнение/Ñ‚ÑŠÑ€Ñене от другите" msgid "Name:" msgstr "Име:" msgid "Permissions (octal):" -msgstr "Права (оÑмичен вид):" +msgstr "Права̀ (8-чни):" msgid "Owner name:" -msgstr "Име на ÑобÑтвеник:" +msgstr "СобÑтвеник:" msgid "Group name:" -msgstr "Име на група:" +msgstr "Група:" msgid "Chmod command" -msgstr "Команда Chmod" +msgstr "Команда chmod" msgid "Permission" msgstr "Режим" @@ -2306,28 +2339,28 @@ msgid "File" msgstr "Файл" msgid "Set &groups" -msgstr "УÑÑ‚ групи" +msgstr "&Зад групи" msgid "Set &users" -msgstr "УÑÑ‚ потрб" +msgstr "&Зад потрб" msgid "Name" msgstr "Име" msgid "Owner name" -msgstr "Име на ÑобÑтвеника" +msgstr "СобÑтвеник" msgid "Group name" -msgstr "Име на групата" +msgstr "Група" msgid "Size" msgstr "Размер" msgid "Chown command" -msgstr "Chown команда" +msgstr "Команда chown" msgid "User name" -msgstr "ПотребителÑко име" +msgstr "Потребител" msgid "" msgstr "<ÐеизвеÑтен>" @@ -2336,38 +2369,32 @@ msgid "" msgstr "<ÐеизвеÑтна>" msgid "Enter machine name (F1 for details):" -msgstr "Въвеждане на машинното име (F1 за детайли):" +msgstr "Име на хоÑта (F1 за детайли):" msgid "Files tagged, want to cd?" -msgstr "Има маркирани файлове," +msgstr "Има избрани файлове, да Ñе Ñмени ли директориÑта?" msgid "Cannot change directory" msgstr "Ðе може да Ñе Ñмени директориÑта" -msgid "Filter" -msgstr "Филтър" - -msgid "Set expression for filtering filenames" -msgstr "Задаване на изражение за филтриране на файлови имена" - #, c-format msgid "Link %s to:" -msgstr "Свързване на %s Ñ:" +msgstr "Връзка на %s към:" msgid "Link" -msgstr "Линк" +msgstr "Връзка" #, c-format msgid "link: %s" -msgstr "линк: %s" +msgstr "връзка: %s" #, c-format msgid "symlink: %s" -msgstr "Ñимволичен линк: %s" +msgstr "Ñимволна връзка: %s" #, c-format msgid "Cannot chdir to \"%s\"" -msgstr "Ðе може да Ñе chdir-не в \"%s\"" +msgstr "Ðе може да Ñе премине в „%s“" msgid "View file" msgstr "Преглед на файл" @@ -2385,66 +2412,66 @@ msgid "Edit file" msgstr "Редактиране на файл" msgid "Create a new Directory" -msgstr " Създай нова Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ " +msgstr "Ðова директориÑ" msgid "Enter directory name:" -msgstr "Въвеждане име на директориÑ:" +msgstr "Име на директориÑ:" msgid "Extension file edit" -msgstr "Редактирай файл Ñ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ" +msgstr "Редактиране на файл Ñ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ" msgid "Which extension file you want to edit?" -msgstr "Кой файл Ñ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ иÑкате да редактирате?" +msgstr "Кой файл Ñ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð´Ð° Ñе редактира?" msgid "&System Wide" -msgstr "СиÑтемен" +msgstr "&СиÑтемно" msgid "Highlighting groups file edit" msgstr "ОÑветÑване редактирането на група от файлове" msgid "Which highlighting file you want to edit?" -msgstr "Кой оÑветен файл иÑкате да редактирате?" +msgstr "Кой оÑветен файл да Ñе редактира?" msgid "Compare directories" -msgstr "СравнÑване на папки" +msgstr "СравнÑване на директории" msgid "Select compare method:" -msgstr "Изберете начин на ÑравнÑване:" +msgstr "Ðачин на ÑравнÑване:" msgid "&Quick" -msgstr "Бърз" +msgstr "&Бърз" msgid "&Size only" -msgstr "Само размерите" +msgstr "&Размери" msgid "&Thorough" -msgstr "Пълен" +msgstr "&Пълен" msgid "" "Both panels should be in the listing mode\n" "to use this command" msgstr "" -"Двата панела би Ñ‚Ñ€Ñбвало да бъдат в\n" -"ÑпиÑъчен режим, за да можете да използвате тази команда" +"Двата панела Ñ‚Ñ€Ñбва да Ñа в ÑпиÑъчен\n" +"режим, за да ползвате тази команда" #, c-format msgid "'%s' is not a symbolic link" -msgstr "'%s' не е Ñимволичен линк" +msgstr "„%s“ не е Ñимволна връзка" #, c-format msgid "Symlink '%s' points to:" -msgstr "Символичен линк '%s' Ñочи към:" +msgstr "Символната връзка „%s“ Ñочи към:" msgid "Edit symlink" -msgstr "Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° Ñимволичен линк" +msgstr "Редактиране на Ñимволна връзка" #, c-format msgid "edit symlink, unable to remove %s: %s" -msgstr "редактиране на Ñимволичен линк, не може да Ñе изтрие %s: %s" +msgstr "редактиране на Ñимволна връзка, не може да Ñе изтрие %s: %s" #, c-format msgid "edit symlink: %s" -msgstr "редактиране на Ñимволичен линк: %s" +msgstr "редактиране на Ñимволна връзка: %s" msgid "FTP to machine" msgstr "FTP към машина" @@ -2453,23 +2480,23 @@ msgid "SFTP to machine" msgstr "SFTP към машина" msgid "Shell link to machine" -msgstr "Shell връзка към машина" +msgstr "SSH към машина" msgid "Undelete files on an ext2 file system" -msgstr "ВъзÑтановÑване на файлове на ext2 файлова ÑиÑтема" +msgstr "ВъзÑтановÑване на файлове на ext2" msgid "" "Enter device (without /dev/) to undelete\n" "files on: (F1 for details)" msgstr "" -"Въведете уÑтройÑтво (без /dev/) за възÑтановÑване\n" -"на файлове от него: (F1 за детайли)" +"Въведете уÑтройÑтво (без /dev/) за\n" +"възÑтановÑване на файлове: (F1 за детайли)" msgid "Directory scanning" msgstr "ПретърÑване на директориÑ" msgid "Setup" -msgstr "ÐаÑтройка" +msgstr "ÐаÑтройки" #, c-format msgid "Setup saved to %s" @@ -2480,7 +2507,7 @@ msgid "Unable to save setup to %s" msgstr "Грешка при Ð·Ð°Ð¿Ð¸Ñ Ð°Ð½ наÑтройките в %s" msgid "Cannot execute commands on non-local filesystems" -msgstr "Ðе може да Ñе изпълнÑват команди на не-локални файлови ÑиÑтеми" +msgstr "Ðе може да Ñе изпълнÑват команди на нелокални файлови ÑиÑтеми" msgid "Parameter" msgstr "Параметър" @@ -2494,21 +2521,25 @@ msgstr "" "%s" msgid "Pipe failed" -msgstr "Канал е неуÑпешен" +msgstr "ÐеуÑпешен канал" + +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" #, c-format msgid " %s%s file error" -msgstr "%s%s файлова грешка" +msgstr " %s%s файлова грешка" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Форматът на файла %smc.ext е бил променен Ñ Ð²ÐµÑ€ÑÐ¸Ñ 3.0. Изглежда, че " -"инÑталациÑта е била неуÑпешна. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¸Ð´Ð¾Ð±Ð¸Ð¹Ñ‚Ðµ ново копие от пакета на " -"Midnight Commander-а" #, c-format msgid "%s file error" @@ -2516,34 +2547,31 @@ msgstr "%s файлова грешка" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Форматът на файла %s е бил променен Ñлед верÑÐ¸Ñ 3.0. Можете или да го " -"копирате от %smc.ext или да използвате този файл като пример как да го " -"напишете." msgid "DialogTitle|Copy" -msgstr "ДиалогЗаглавие|Копиране" +msgstr "Копиране" msgid "DialogTitle|Move" -msgstr "ДиалогЗагалвие|ПремеÑтване" +msgstr "ПремеÑтване" msgid "DialogTitle|Delete" -msgstr "ДиалогЗаглавие|Изтриване" +msgstr "Изтриване" msgid "FileOperation|Copy" -msgstr "ФайловаОперациÑ|Копиране" +msgstr "Копиране" msgid "FileOperation|Move" -msgstr "ФайловаОперациÑ|ПремеÑтване" +msgstr "ПремеÑтване" msgid "FileOperation|Delete" -msgstr "ФайловаОперациÑ|Изтриване" +msgstr "Изтриване" #, no-c-format msgid "%o %f%n\"%s\"%m" -msgstr "%o %f%n\"%s\"%m" +msgstr "%o %f%n„%s“%m" #, no-c-format msgid "%o %d %f%m" @@ -2570,23 +2598,27 @@ msgid "" "Cannot stat hardlink source file \"%s\"\n" "%s" msgstr "" +"Ðе може да Ñе изпълни stat върху източника на твърдата връзка „%s“\n" +"%s" #, c-format msgid "" "Cannot create target hardlink \"%s\"\n" "%s" msgstr "" +"Ðе може да Ñе Ñъздаде целевата твърда връзка „%s“\n" +"%s" #, c-format msgid "Cannot create target hardlink \"%s\"" -msgstr "" +msgstr "Ðе може да Ñе Ñъздаде целевата твърда връзка „%s“" #, c-format msgid "" "Cannot read source link \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе чете Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº \"%s\"\n" +"Ðе може да Ñе прочете изходната връзка „%s“\n" "%s" msgid "" @@ -2594,17 +2626,17 @@ msgid "" "\n" "Option Stable Symlinks will be disabled" msgstr "" -"Ðе могат да Ñе Ñъздадат Ñтабилни Ñимволични линкове между не-локални файлови " +"Ðе може да Ñе Ñъздадат Ñтабилни Ñимволни връзки между нелокални файлови " "ÑиÑтеми:\n" "\n" -"ОпциÑта Стабилни Символични Линкове ще бъде деактивирана" +"ОпциÑта за Ñтабилни Ñимволни връзки ще бъде деактивирана" #, c-format msgid "" "Cannot create target symlink \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе Ñъздаде Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñимволичен линк \"%s\"\n" +"Ðе може да Ñе Ñъздаде целевата Ñимволна връзка „%s“\n" "%s" #, c-format @@ -2614,10 +2646,10 @@ msgid "" "\"%s\"\n" "are the same directory" msgstr "" -"\"%s\"\n" +"„%s“\n" "и\n" -"\"%s\"\n" -"Ñа една и Ñъща папка" +"„%s“\n" +"Ñа една и Ñъща директориÑ" #, c-format msgid "" @@ -2626,9 +2658,9 @@ msgid "" "\"%s\"\n" "are the same file" msgstr "" -"\"%s\"\n" +"„%s“\n" "и\n" -"\"%s\"\n" +"„%s“\n" "Ñа един и Ñъщи файл" msgid "Ski&p all" @@ -2639,8 +2671,8 @@ msgid "" "Directory \"%s\" not empty.\n" "Delete it recursively?" msgstr "" -"Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\" не е празна.\n" -"Изтриване рекурÑивно?" +"Ðепразна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“.\n" +"РекурÑивно изтриване?" #, c-format msgid "" @@ -2649,18 +2681,18 @@ msgid "" "Delete it recursively?" msgstr "" "Фонов процеÑ:\n" -"Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\" не е празна.\n" -"Изтриване рекурÑивно?" +"Ðепразна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“.\n" +"РекурÑивно изтриване?" msgid "Non&e" -msgstr "никой" +msgstr "Ð&Ñма" #, c-format msgid "" "Cannot remove file \"%s\"\n" "%s" msgstr "" -"Ðе може да изтрие файл \"%s\"\n" +"Ðе може да Ñе изтрие файла „%s“\n" "%s" #, c-format @@ -2668,19 +2700,19 @@ msgid "" "Cannot stat file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе stat-не файл \"%s\"\n" +"Ðе може да Ñе изпълни stat върху Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" #, c-format msgid "Cannot overwrite directory \"%s\"" -msgstr "Ðе може да Ñе презапише Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\"" +msgstr "Ðе може да Ñе презапише директориÑта „%s“" #, c-format msgid "" "Cannot move file \"%s\" to \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе премеÑти файл \"%s\" в \"%s\"\n" +"Ðе може да Ñе премеÑти файл „%s“ в „%s“\n" "%s" #, c-format @@ -2688,7 +2720,7 @@ msgid "" "Cannot remove directory \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе изтрие Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\"\n" +"Ðе може да Ñе изтрие директориÑта „%s“\n" "%s" #, c-format @@ -2696,7 +2728,7 @@ msgid "" "Cannot overwrite directory \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе презапише Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\"\n" +"Ðе може да Ñе презапише директориÑта „%s“\n" "%s" #, c-format @@ -2704,7 +2736,7 @@ msgid "" "Cannot overwrite file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе презапише файл \"%s\"\n" +"Ðе може да Ñе презапише файлът „%s“\n" "%s" #, c-format @@ -2712,18 +2744,18 @@ msgid "" "Cannot move directory \"%s\" to \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе премеÑти Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\" в \"%s\"\n" +"Ðе може да Ñе премеÑти директориÑта „%s“ в „%s“\n" "%s" msgid "Cannot operate on \"..\"!" -msgstr "Ðе може да работи върху \"..\"!" +msgstr "Ðе може да работи върху „..“!" #, c-format msgid "" "Cannot stat source file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе stat-не Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе изпълни stat върху Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" #, c-format @@ -2731,7 +2763,7 @@ msgid "" "Cannot create special file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе Ñъздаде Ñпециален файл \"%s\"\n" +"Ðе може да Ñе Ñъздаде ÑпециалниÑÑ‚ файл „%s“\n" "%s" #, c-format @@ -2739,7 +2771,7 @@ msgid "" "Cannot chown target file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе chown-не Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе изпълни chown върху Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" #, c-format @@ -2747,7 +2779,7 @@ msgid "" "Cannot chmod target file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе chmod-не Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе изпълни chmod върху Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" #, c-format @@ -2755,18 +2787,18 @@ msgid "" "Cannot open source file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе отвори Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе отвори изходниÑÑ‚ файл \"%s\"\n" "%s" msgid "Reget failed, about to overwrite file" -msgstr "" +msgstr "ÐеуÑпешно повторно изтеглÑне, файлът ще бъде презапиÑан" #, c-format msgid "" "Cannot fstat source file \"%s\"\n" "%s" msgstr "" -"Ðе може да fstat-не Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе изпълни fstat върху Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" #, c-format @@ -2774,7 +2806,7 @@ msgid "" "Cannot create target file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе Ñъздаде Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе Ñъздаде целевиÑÑ‚ файл „%s“\n" "%s" #, c-format @@ -2782,7 +2814,7 @@ msgid "" "Cannot fstat target file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе fstat-не Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе изпълни fstat върху Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" #, c-format @@ -2790,7 +2822,7 @@ msgid "" "Cannot preallocate space for target file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе запази предварително проÑтранÑтво за Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе запази проÑтранÑтво за Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" #, c-format @@ -2798,7 +2830,7 @@ msgid "" "Cannot read source file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе прочете Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе прочете изходниÑÑ‚ файл „%s“\n" "%s" #, c-format @@ -2806,18 +2838,27 @@ msgid "" "Cannot write target file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе пише в Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе пише в Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" "%s" msgid "(stalled)" msgstr "(ÑпрÑл)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Запазване" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе затвори Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе затвори изходниÑÑ‚ файл „%s“\n" "%s" #, c-format @@ -2825,21 +2866,15 @@ msgid "" "Cannot close target file \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе затвори Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» \"%s\"\n" +"Ðе може да Ñе затвори целевиÑÑ‚ файл „%s“\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Беше получен нецÑл файл. Да го Ð·Ð°Ð¿Ð°Ð·Ñ Ð»Ð¸?" - -msgid "&Keep" -msgstr "Запази" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе stat-не изходната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\"\n" +"Ðе може да Ñе изпълне stat върху изходната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" "%s" #, c-format @@ -2847,7 +2882,7 @@ msgid "" "Source \"%s\" is not a directory\n" "%s" msgstr "" -"Източника \"%s\" не е директориÑ\n" +"Източникът „%s“ не е директориÑ\n" "%s" #, c-format @@ -2855,15 +2890,15 @@ msgid "" "Cannot copy cyclic symbolic link\n" "\"%s\"" msgstr "" -"Ðе може да Ñе копира цикличен Ñимволичен линк\n" -"\"%s\"" +"Ðе може да Ñе копира зациклената Ñимволна връзка\n" +"„%s“" #, c-format msgid "" "Destination \"%s\" must be a directory\n" "%s" msgstr "" -"Целевата \"%s\" Ñ‚Ñ€Ñбва да бъде директориÑ\n" +"Целта „%s“ Ñ‚Ñ€Ñбва да е директориÑ\n" "%s" #, c-format @@ -2871,7 +2906,7 @@ msgid "" "Cannot create target directory \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе Ñъздаде целева Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\"\n" +"Ðе може да Ñе Ñъздаде целева Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" "%s" #, c-format @@ -2879,7 +2914,7 @@ msgid "" "Cannot chown target directory \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе chown-не целевата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ \"%s\"\n" +"Ðе може да Ñе изпълни chown върху целевата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" "%s" #, c-format @@ -2887,13 +2922,13 @@ msgid "Directories: %zu, total size: %s" msgstr "Директории: %zu, общ размер %s" msgid "Sorry, I could not put the job in background" -msgstr "СъжалÑвам, не мога да поÑÑ‚Ð°Ð²Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°Ñ‚Ð° във фона" +msgstr "Задачата не може да Ñе премеÑти във фонов режим" msgid "S&uspend" msgstr "П&реуÑтановÑване" msgid "Con&tinue" -msgstr "Продължи" +msgstr "&Продължаване" #, c-format msgid "%d:%02d.%02d" @@ -2901,49 +2936,49 @@ msgstr "%d:%02d.%02d" #, c-format msgid "ETA %s" -msgstr "ETA %s" +msgstr "ОÑтават %s" #, c-format msgid "%.2f MB/s" -msgstr "%.2f МБ/Ñ" +msgstr "%.2f MB/s" #, c-format msgid "%.2f KB/s" -msgstr "%.2f КБ/Ñ" +msgstr "%.2f KB/s" #, c-format msgid "%ld B/s" -msgstr "%ld Б/Ñ" +msgstr "%ld B/s" msgid "New :" -msgstr "" +msgstr "Ðов :" msgid "Existing:" -msgstr "" +msgstr "СъщеÑтвуващ:" msgid "Overwrite this file?" -msgstr "" +msgstr "ПрезапиÑване на файла?" msgid "A&ppend" -msgstr "добави" +msgstr "До&бавÑне" msgid "&Reget" -msgstr "Препрочитане" +msgstr "&ИзтеглÑне наново" msgid "Overwrite all files?" -msgstr "" +msgstr "ПрезапиÑване на вÑички файлове?" msgid "Don't overwrite with &zero length file" -msgstr "" +msgstr "&Без Ð¿Ñ€ÐµÐ·Ð°Ð¿Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð·ÐµÐ½ файл" msgid "&Older" -msgstr "" +msgstr "По-&Ñтар" msgid "S&maller" -msgstr "" +msgstr "По-&малък" msgid "&Size differs" -msgstr "" +msgstr "&Различен размер" msgid "File exists" msgstr "Файлът ÑъщеÑтвува" @@ -2952,8 +2987,8 @@ msgid "Background process: File exists" msgstr "Фонов процеÑ: Файлът ÑъщеÑтвува" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Обработени файлове: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2980,45 +3015,45 @@ msgid " Total: %s " msgstr " Общо: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Общо: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Източник" msgid "Target" -msgstr "Ðазначение" +msgstr "Цел" msgid "Deleting" msgstr "Изтриване" msgid "&Using shell patterns" -msgstr "MетаÑимволи на обвивката" +msgstr "&MетаÑимволи на обвивката" msgid "to:" msgstr "в:" msgid "Follow &links" -msgstr "Следване на &линковете" +msgstr "Следване на &връзките" msgid "Preserve &attributes" msgstr "Запазване на &атрибутите" msgid "Di&ve into subdir if exists" -msgstr "Вли&зане в Ð¿Ð¾Ð´Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð°ÐºÐ¾ ÑъщеÑтвува" +msgstr "Влизане в &поддиректориÑ, ако ÑъщеÑтвува" msgid "&Stable symlinks" -msgstr "&Стабилни Ñимволични линкове" +msgstr "&Стабилни Ñимволни връзки" msgid "&Background" -msgstr "Във фон" +msgstr "&Във фон" #, c-format msgid "Invalid source pattern '%s'" -msgstr "Ðевалиден изходен модел '%s'" +msgstr "Ðеправилен шаблон „%s“" msgid "File listin&g" -msgstr "Файлово изреж&дане" +msgstr "&Файловe и директории" msgid "&Quick view" msgstr "&Бърз преглед" @@ -3027,40 +3062,40 @@ msgid "&Info" msgstr "&ИнформациÑ" msgid "&Tree" -msgstr "Дърво" +msgstr "&Дърво" msgid "&Listing format..." -msgstr "&Формат на ÑпиÑък" +msgstr "Ф&ормат на ÑпиÑък…" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." -msgstr "Филтър..." +msgstr "Филт&ър…" msgid "&Encoding..." -msgstr "&Кодировка" +msgstr "&Кодиране…" msgid "FT&P link..." -msgstr "FTP връзка..." +msgstr "&FTP…" msgid "S&hell link..." -msgstr "S&hell връзка..." +msgstr "SS&H…" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" -msgstr "Покажи в панел" +msgstr "&Ð’ панел" msgid "&Rescan" -msgstr "&Сканиране отново" +msgstr "&ОпреÑнÑване" msgid "&View" msgstr "&Преглед" msgid "Vie&w file..." -msgstr "Преглед на &файла" +msgstr "Преглед на фа&йла…" msgid "&Filtered view" msgstr "&Филтриран изглед" @@ -3069,130 +3104,130 @@ msgid "&Copy" msgstr "&Копиране" msgid "C&hmod" -msgstr "C&hmod" +msgstr "Пр&ава̀" msgid "&Link" -msgstr "&Линк" +msgstr "&Връзка" msgid "&Symlink" -msgstr "&Символичен линк" +msgstr "&Символна връзка" msgid "Relative symlin&k" -msgstr "Релативен Ñимволи&чен линк" +msgstr "&ОтноÑителна Ñимволна връзка" msgid "Edit s&ymlink" -msgstr "Редактиране на Ñим&воличен линк" +msgstr "Р&едактиране на Ñимволна връзка" msgid "Ch&own" -msgstr "Ch&own" +msgstr "См&Ñна на ÑобÑтвеник" msgid "&Advanced chown" -msgstr "&Разширена chown" +msgstr "Раз&ширена ÑмÑна на ÑобÑтвеник" msgid "Cha&ttr" -msgstr "" +msgstr "&СмÐÑ‚Ñ€" msgid "&Rename/Move" -msgstr "&Преименуване или меÑтене" +msgstr "&МеÑтене/Преименуване" msgid "&Mkdir" -msgstr "&Mkdir" +msgstr "&Ðова директориÑ" msgid "&Quick cd" -msgstr "&Бързо cd" +msgstr "&Бърза ÑмÑна — cd" msgid "Select &group" msgstr "Избор на &група" msgid "U&nselect group" -msgstr "Де&избиране на група" +msgstr "Без избор на гр&упа" msgid "&Invert selection" -msgstr "&Преобръщане на ÑелекциÑ" +msgstr "Об&ърнат избор" msgid "E&xit" -msgstr "&Изход" +msgstr "Из&ход" msgid "&User menu" msgstr "&ПотребителÑко меню" msgid "&Directory tree" -msgstr "Дърво на директориите" +msgstr "&Дърво на директориите" msgid "&Find file" -msgstr "&Ðамиране на файл" +msgstr "&ТърÑене на файл" msgid "S&wap panels" msgstr "Разм&Ñна на панели" msgid "Switch &panels on/off" -msgstr "Включване/Изключване на &панелите" +msgstr "Превклю&чване на панелите" msgid "&Compare directories" msgstr "&Сравнение на директории" msgid "C&ompare files" -msgstr "С&равнение на файлове" +msgstr "Сра&внение на файлове" msgid "E&xternal panelize" -msgstr "Ð’&ъншна панелизациÑ" +msgstr "Ð’&ъншен панел" msgid "Show directory s&izes" -msgstr "Показване на &размерите на директориите" +msgstr "&Размери на директориите" msgid "Command &history" -msgstr "Командна &иÑториÑ" +msgstr "&ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° командите" msgid "Viewed/edited files hi&story" -msgstr "" +msgstr "Скоро&шни файлове" msgid "Di&rectory hotlist" -msgstr "СпиÑък за бърз доÑтъп до дире&ктории" +msgstr "&Горещи директории" msgid "&Active VFS list" -msgstr "&Ðктивни ÑпиÑък от ВФС" +msgstr "&Ðктивни виртуални ФС" msgid "&Background jobs" -msgstr "&Фонови задачи" +msgstr "Фонови &задачи" msgid "Screen lis&t" -msgstr "СпиÑ&ък на екрани" +msgstr "СпиÑък на &екрани" msgid "&Undelete files (ext2fs only)" -msgstr "ВъзÑтанови файлове (Ñамо ext2fs)" +msgstr "&ВъзÑтановÑване на файлове (Ñамо ext2fs)" msgid "&Listing format edit" -msgstr "Редактирай формата на ÑпиÑъка" +msgstr "&Формат на ÑпиÑъка" msgid "Edit &extension file" -msgstr "Редактирай файл Ñ Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ" +msgstr "&Файл за разширениÑ" msgid "Edit &menu file" -msgstr "Редактирай меню-файл" +msgstr "Файл Ñ &меню" msgid "Edit hi&ghlighting group file" -msgstr "" +msgstr "Фа&йл за оцветените групи" msgid "&Configuration..." -msgstr "КонфигурациÑ..." +msgstr "&ÐаÑтройки…" msgid "&Layout..." -msgstr "Разположение..." +msgstr "&Разположение…" msgid "&Panel options..." -msgstr "ÐаÑтройки на &панел" +msgstr "ÐаÑтройки на &панел…" msgid "C&onfirmation..." -msgstr "По&твърждение..." +msgstr "По&твърждениÑ…" msgid "&Appearance..." -msgstr "&Изглед" +msgstr "&Външен вид…" msgid "&Display bits..." -msgstr "Екран..." +msgstr "&Битове за извеждане…" msgid "&Virtual FS..." -msgstr "Виртуална ФС..." +msgstr "Виртуална &ФС…" msgid "Panels:" msgstr "Панели:" @@ -3204,49 +3239,49 @@ msgstr[0] "Имате %zu отворен прозорец. Изход вÑе п msgstr[1] "Имате %zu отворени прозорци. Изход вÑе пак?" msgid "The Midnight Commander" -msgstr "Midnight Commander-а" +msgstr "Midnight Commander" msgid "Do you really want to quit the Midnight Commander?" msgstr "ÐаиÑтина ли иÑкате да напуÑнете Midnight Commander?" msgid "&Above" -msgstr "&Отгоре" +msgstr "От&горе" msgid "&Left" -msgstr "&ВлÑво" +msgstr "Ð’&лÑво" msgid "&Below" msgstr "&Отдолу" msgid "&Right" -msgstr "&ВдÑÑно" +msgstr "Ð’&дÑÑно" msgid "ButtonBar|Menu" -msgstr "ButtonBar|Меню" +msgstr "ПотребителÑко меню" msgid "ButtonBar|View" -msgstr "ButtonBar|Изглед" +msgstr "Преглед" msgid "ButtonBar|RenMov" -msgstr "" +msgstr "МеÑтене/Преименуване" msgid "ButtonBar|Mkdir" -msgstr "ButtonBar|Mkdir" +msgstr "Ðова директориÑ" msgid "&Chdir" -msgstr "Смени директориÑта" +msgstr "&СмÑна на директориÑ" msgid "&Again" -msgstr "Отново" +msgstr "&Отново" msgid "Pane&lize" -msgstr "Покажи в панел" +msgstr "&Външен панел" msgid "&View - F3" -msgstr "Покажи - F3" +msgstr "&Извеждане — F3" msgid "&Edit - F4" -msgstr "Редактирай - F4" +msgstr "&Редактиране — F4" #, c-format msgid "Found: %lu" @@ -3262,7 +3297,7 @@ msgid "&Find recursively" msgstr "&Ðамиране рекурÑивно" msgid "Follow s&ymlinks" -msgstr "" +msgstr "&Следване на връзки" msgid "S&kip hidden" msgstr "ПропуÑкане на &Ñкритите" @@ -3274,7 +3309,7 @@ msgid "Sea&rch for content" msgstr "Тър&Ñене на Ñъдържание" msgid "Case sens&itive" -msgstr "ЧувÑтвителноÑÑ‚ към рег&иÑтъра" +msgstr "&ЧувÑтвителноÑÑ‚ към региÑтъра" msgid "A&ll charsets" msgstr "Ð’Ñи&чки кодови таблици" @@ -3283,13 +3318,13 @@ msgid "Fir&st hit" msgstr "Пър&во попадение" msgid "Find File" -msgstr "ТърÑи файл" +msgstr "ТърÑене на файл" msgid "Start at:" -msgstr "Започни от:" +msgstr "Ðачало от:" msgid "Ena&ble ignore directories:" -msgstr "Ðкти&виране на игнориране на директории:" +msgstr "&Игнориране на директории:" #, c-format msgid "Grepping in %s" @@ -3306,47 +3341,47 @@ msgstr[1] "Завършено (игнорирани %zu директории)" #, c-format msgid "Find File: \"%s\". Content: \"%s\"" -msgstr "" +msgstr "ТърÑене: „%s“. Съдържание: „%s“" #, c-format msgid "Find File: \"%s\"" -msgstr "" +msgstr "ТърÑене: „%s“" msgid "Searching" -msgstr "ТърÑÑ" +msgstr "ТърÑене" msgid "Change &to" msgstr "ПромÑна &на" msgid "&Free VFSs now" -msgstr "&ОÑвобождаване ВФС-тата Ñега" +msgstr "&ОÑвобождаване на виртуалната ФС" msgid "&Refresh" msgstr "&ОбновÑване" msgid "&Add current" -msgstr "Добави текущата" +msgstr "И &текущата" msgid "&Up" -msgstr "Горе" +msgstr "&Горе" msgid "New &group" -msgstr "Ðова &група" +msgstr "&Ðова група" msgid "New &entry" msgstr "Ðов &запиÑ" msgid "&Insert" -msgstr "Вмъкни" +msgstr "&Вмъкване" msgid "&Remove" -msgstr "Изтрий" +msgstr "&Изтриване" msgid "Subgroup - press ENTER to see list" -msgstr "Подгрупа - натиÑнете ENTER за ÑпиÑък" +msgstr "Подгрупа — ENTER за ÑпиÑък" msgid "Active VFS directories" -msgstr "Ðктивни ВФС директории" +msgstr "Ðктивни директории за виртуални ФС" msgid "Directory hotlist" msgstr "Горещи директории" @@ -3359,13 +3394,13 @@ msgstr "Път" #, c-format msgid "Moving %s" -msgstr "ПремеÑтвам %s" +msgstr "ПремеÑтване на %s" msgid "Directory label" -msgstr "Име" +msgstr "Етикет" msgid "&Append" -msgstr "Добави" +msgstr "Доб&авÑне" msgid "New hotlist entry" msgstr "Ðов запиÑ" @@ -3384,15 +3419,15 @@ msgstr "Име на нова група:" #, c-format msgid "Are you sure you want to remove entry \"%s\"?" -msgstr "ÐаиÑтина ли иÑкате за премахнете запиÑа \"%s\"?" +msgstr "ÐаиÑтина ли иÑкате за премахнете запиÑа „%s“?" #, c-format msgid "" "Group \"%s\" is not empty.\n" "Remove it?" msgstr "" -"Групата \"%s\" не е празна.\n" -"Изтриване?" +"Групата „%s“ не е празна.\n" +"Да Ñе изтрие ли?" msgid "Hotlist Load" msgstr "Зареждане на ÑпиÑъка за бърз доÑтъп" @@ -3402,12 +3437,12 @@ msgid "" "MC was unable to write %s file,\n" "your old hotlist entries were not deleted" msgstr "" -"MC не можа да запише файл %s,\n" +"Midnight Commander не запиÑа файл %s,\n" "Ñтарите ви елементи в ÑпиÑъка за бърз доÑтъп не бÑха изтрити" #, c-format msgid "Label for \"%s\":" -msgstr "Име за \"%s\":" +msgstr "Етикет за „%s“:" msgid "Add to hotlist" msgstr "ДобавÑне към ÑпиÑъка за бърз доÑтъп" @@ -3424,21 +3459,21 @@ msgid "No node information" msgstr "ÐÑма Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° възлите" msgid "Free nodes:" -msgstr "Свободни разклонениÑ:" +msgstr "Свободни възли:" msgid "No space information" msgstr "ÐÑма Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° проÑтранÑтвото" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Свободно проÑтранÑтво %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" msgstr "Вид: %s" msgid "non-local vfs" -msgstr "не-локална vfs" +msgstr "нелокална vfs" #, c-format msgid "Device: %s" @@ -3463,7 +3498,7 @@ msgstr "ПроменÑн: %s" #, c-format msgid "Dev. type: major %lu, minor %lu" -msgstr "УÑÑ‚. тип: major %lu, minor %lu" +msgstr "УÑÑ‚-во: голÑм â„– %lu, малък â„– %lu" #, c-format msgid "Size: %s" @@ -3472,8 +3507,8 @@ msgstr "Размер: %s" #, c-format msgid " (%lu block)" msgid_plural " (%lu blocks)" -msgstr[0] "(%lu блок)" -msgstr[1] "(%lu блокове)" +msgstr[0] " (%lu блок)" +msgstr[1] " (%lu блока)" #, c-format msgid "Owner: %s/%s" @@ -3481,46 +3516,46 @@ msgstr "Притежател: %s/%s" #, c-format msgid "Links: %d" -msgstr "Линкове: %d" +msgstr "Връзки: %d" msgid "Attributes: not supported" -msgstr "" +msgstr "Ðтрибути: не Ñе поддържат" #, c-format msgid "Attributes: %s" -msgstr "" +msgstr "Ðтрибути: %s" msgid "Attributes: unavailable" -msgstr "" +msgstr "Ðтрибути: нÑма" #, c-format msgid "Mode: %s (%04o)" -msgstr "Права: %s (%04o)" +msgstr "Права̀: %s (%04o)" #, c-format msgid "Location: %Xh:%Xh" msgstr "Разположение: %Xh:%Xh" msgid "&Equal split" -msgstr "По равно" +msgstr "&По равно" msgid "&Menubar visible" -msgstr "Реда на &менюто показване" +msgstr "Видимо &меню" msgid "Command &prompt" msgstr "Команден &ред" msgid "&Keybar visible" -msgstr "Видими F-ове" +msgstr "Ð’&идими F-ове" msgid "H&intbar visible" -msgstr "Реда за &подÑказване показване " +msgstr "Р&ед Ñ Ð¿Ð¾Ð´Ñказки" msgid "&XTerm window title" -msgstr "Заглавие на прозореца на &XTerm" +msgstr "Заглавие на &Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†" msgid "&Show free space" -msgstr "&Показване на Ñвободното проÑтранÑтво" +msgstr "&Свободно проÑтранÑтво" msgid "Panel split" msgstr "РазделÑне на панела" @@ -3529,40 +3564,40 @@ msgid "Console output" msgstr "Изходна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° конзолата" msgid "&Vertical" -msgstr "Вертикално" +msgstr "&Вертикално" msgid "&Horizontal" -msgstr "Хоризонтално" +msgstr "&Хоризонтално" msgid "Output lines:" msgstr "Изходни редове:" msgid "Layout" -msgstr "Изглед" +msgstr "Разположение на елементите" msgid "Memory exhausted!" -msgstr "Паметта е изразходвана!" +msgstr "Паметта Ñвърши!" #. TRANSLATORS: one single character to represent 'unsorted' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|u" -msgstr "" +msgstr "н" msgid "&Unsorted" -msgstr "Ðеподредени" +msgstr "&Ðеподредени" #. TRANSLATORS: one single character to represent 'name' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|n" -msgstr "" +msgstr "и" msgid "&Name" -msgstr "Име" +msgstr "&Име" #. TRANSLATORS: one single character to represent 'version' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|v" -msgstr "" +msgstr "в" msgid "&Version" msgstr "&ВерÑиÑ" @@ -3570,18 +3605,18 @@ msgstr "&ВерÑиÑ" #. TRANSLATORS: one single character to represent 'extension' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|e" -msgstr "" +msgstr "ш" msgid "E&xtension" -msgstr "Ра&зширение" +msgstr "Раз&ширение" #. TRANSLATORS: one single character to represent 'size' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|s" -msgstr "" +msgstr "Ñ€" msgid "&Size" -msgstr "Размер" +msgstr "&Размер" msgid "Block Size" msgstr "Размер на блок" @@ -3589,40 +3624,40 @@ msgstr "Размер на блок" #. TRANSLATORS: one single character to represent 'Modify time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|m" -msgstr "" +msgstr "м" msgid "&Modify time" -msgstr "Време на промÑна на файла" +msgstr "Време на про&мÑна на файла" #. TRANSLATORS: one single character to represent 'Access time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|a" -msgstr "" +msgstr "д" msgid "&Access time" -msgstr "Време на доÑтъп" +msgstr "Време на &доÑтъп" #. TRANSLATORS: one single character to represent 'Change time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|h" -msgstr "" +msgstr "Ñ" msgid "C&hange time" -msgstr "Време на п&ромÑна" +msgstr "Време на пром&Ñна" msgid "Perm" -msgstr "Режим" +msgstr "Права̀" msgid "Nl" -msgstr "Връзки" +msgstr "БрВрзк" #. TRANSLATORS: one single character to represent 'inode' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|i" -msgstr "" +msgstr "ÑŠ" msgid "&Inode" -msgstr "I-възел" +msgstr "I-в&ъзел" msgid "UID" msgstr "UID" @@ -3637,16 +3672,16 @@ msgid "Group" msgstr "Група" msgid "[dev]" -msgstr "" +msgstr "[РЗР]" msgid "UP--DIR" -msgstr "ГОР-ДИР" +msgstr "ГОРÐÐ" msgid "SYMLINK" msgstr "ВРЪЗКÐ" msgid "SUB-DIR" -msgstr "ПОД-ДИР" +msgstr "ПОД_ДИР" msgid "" msgstr "<непрочетена връзка>" @@ -3658,37 +3693,40 @@ msgstr[0] "%s в %d файл" msgstr[1] "%s в %d файла" msgid "Panelize" -msgstr "ПанелизациÑ" +msgstr "Външен панел" msgid "Unknown tag on display format:" -msgstr "Ðепознат таг на формата на диÑплеÑ:" +msgstr "Ðепознат етикет на форма̀та на диÑплеÑ:" msgid "&Files only" msgstr "Само &файлове" msgid "&Case sensitive" -msgstr "ЧувÑтвителноÑÑ‚ към &региÑтъра" +msgstr "&ЧувÑтвителноÑÑ‚ към региÑтъра" msgid "Select" msgstr "Избиране" msgid "Unselect" -msgstr "ДеÑелектиране" +msgstr "Без избиране" + +msgid "Filter" +msgstr "Филтър" msgid "Do you really want to execute?" -msgstr "ÐаиÑтина ли иÑкате на изпълните това?" +msgstr "ÐаиÑтина ли иÑкате да изпълните това?" msgid "Cannot read directory contents" -msgstr "Ðе може да Ñе прочете Ñъдържанието на директориÑта" +msgstr "Съдържанието на директориÑта не може да Ñе прочете" msgid "User supplied format looks invalid, reverting to default." -msgstr "ПотребителÑкиÑÑ‚ формат изглежда невалиден, връщам Ñе към ÑтандартниÑ." +msgstr "Ðеправилен потребителÑки формат, ще Ñе ползва ÑтандартниÑÑ‚." msgid "&Add new" -msgstr "Добави нов" +msgstr "&ДобавÑне на нов" msgid "External panelize" -msgstr "Команда в панел" +msgstr "Външен панел" msgid "Other command" msgstr "Друга команда" @@ -3697,7 +3735,7 @@ msgid "Command" msgstr "Команда" msgid "Add to external panelize" -msgstr "ДобавÑне към външна панелизациÑ" +msgstr "ДобавÑне към външен панел" msgid "Enter command label:" msgstr "Въвеждане на етикет на команда:" @@ -3707,6 +3745,8 @@ msgid "" "External panelize:\n" "%s" msgstr "" +"Външен панел:\n" +"%s" #, c-format msgid "" @@ -3714,21 +3754,24 @@ msgid "" "failed to read data from child stdout:\n" "%s" msgstr "" +"Външен панел:\n" +"неуÑпешно четене от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ на процеÑ:\n" +"%s" msgid "Cannot run external panelize in a non-local directory" -msgstr "Ðе може да Ñе изпълни външна Ð¿Ð°Ð½ÐµÐ»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° не-локална директориÑ" +msgstr "Ðе може да Ñе изпълни външен панел на нелокална директориÑ" msgid "Modified git files" msgstr "Променени файлове в git" msgid "Find rejects after patching" -msgstr "Ðамери отказите Ñлед патч" +msgstr "ÐеуÑпешни кръпки" msgid "Find *.orig after patching" -msgstr "Ðамеро *.orig Ñлед команда patch" +msgstr "Първоначални верÑии Ñлед неуÑпешни кръпки" msgid "Find SUID and SGID programs" -msgstr "Ðамери SUID и SGID програми" +msgstr "ТърÑене на програми SUID и SGID" #, c-format msgid "" @@ -3740,38 +3783,38 @@ msgstr "" #, c-format msgid "Copy \"%s\" directory to:" -msgstr "Копирай директориÑта \"%s\" в:" +msgstr "Копиране на директориÑта „%s“ в:" #, c-format msgid "Move \"%s\" directory to:" -msgstr "ПремеÑти директориÑта \"%s\" в:" +msgstr "ПремеÑтване на директориÑта „%s“ в:" #, c-format msgid "" "Cannot stat the destination\n" "%s" msgstr "" -"Ðе може да Ñе stat-не деÑтинациÑта\n" +"Ðе може да Ñе изпълни stat върху целта\n" "%s" #, c-format msgid "Delete %s?" -msgstr "Да Ñе изтрие ли %s?" +msgstr "Да Ñе изтрие ли „%s“?" msgid "ButtonBar|Static" -msgstr "ButtonBar|Статично" +msgstr "Статично" msgid "ButtonBar|Dynamc" -msgstr "ButtonBar|Динамично" +msgstr "Динамично" msgid "ButtonBar|Rescan" -msgstr "ButtonBar|ПреÑканиране" +msgstr "ПреÑканиране" msgid "ButtonBar|Forget" -msgstr "ButtonBar|Пренебрегване" +msgstr "Пренебрегване" msgid "ButtonBar|Rmdir" -msgstr "ButtonBar|Rmdir" +msgstr "ТрДир" #, c-format msgid "" @@ -3782,29 +3825,29 @@ msgstr "" "%s\n" msgid "Help file format error\n" -msgstr "Грешка във формата на Ð¿Ð¾Ð¼Ð¾Ñ‰Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n" +msgstr "Грешка във форма̀та на Ð¿Ð¾Ð¼Ð¾Ñ‰Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n" msgid "Internal bug: Double start of link area" -msgstr "" +msgstr "Вътрешна грешка: второ начало на облаÑтта за Ñвързване" #, c-format msgid "Cannot find node %s in help file" -msgstr "Ðе може да Ñе намери разклонение %s в Ð¿Ð¾Ð¼Ð¾Ñ‰Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»" +msgstr "Ðе може да Ñе намери възел %s в Ð¿Ð¾Ð¼Ð¾Ñ‰Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»" msgid "Help" msgstr "Помощ" msgid "ButtonBar|Index" -msgstr "ButtonBar|ИндекÑ" +msgstr "ИндекÑ" msgid "ButtonBar|Prev" -msgstr "ButtonBar|Предишен" +msgstr "Ðазад" msgid "Learn keys" -msgstr "Учи клавиши" +msgstr "Задаване на клавиши" msgid "Teach me a key" -msgstr "Обучете ме на клавиш" +msgstr "Задаване на клавиши" #, c-format msgid "" @@ -3817,13 +3860,13 @@ msgid "" "If you want to escape, press a single Escape key\n" "and wait as well." msgstr "" -"МолÑ, натианете %s\n" +"ÐатиÑнете %s\n" "и изчакайте това Ñъобщение да изчезне.\n" "\n" "Тогава го натиÑнете пак, за да видите дали\n" -"ще Ñе поÑви OK до бутона мъ.\n" +"ще Ñе поÑви OK до бутона му.\n" "\n" -"Ðко изкате да излезете, натиÑнете веднъж Escape\n" +"За да излезете, натиÑнете веднъж Escape\n" "и изчакайте." msgid "Cannot accept this key" @@ -3831,7 +3874,7 @@ msgstr "Ðе може да Ñе приеме този клавиш" #, c-format msgid "You have entered \"%s\"" -msgstr "Въведохте \"%s\"" +msgstr "Въведохте „%s“" #. TRANSLATORS: This label appears near learned keys. Keep it short. msgid "OK" @@ -3841,28 +3884,27 @@ msgid "" "It seems that all your keys already\n" "work fine. That's great." msgstr "" -"Изглежда, че вÑичките Ви клавиши вече\n" -"работÑÑ‚ добре. Това е Ñупер." +"Изглежда, че вÑичките Ви клавиши\n" +"вече работÑÑ‚ добре. Това е Ñупер." msgid "&Discard" -msgstr "Отмени" +msgstr "&ОтмÑна" msgid "" "Great! You have a complete terminal database!\n" "All your keys work well." msgstr "" "Страхотно! Имате пълна терминална база данни!\n" -"Ð’Ñичките Ви клавиши работÑÑ‚ добре." +"Ð’Ñичките ви клавиши работÑÑ‚ добре." msgid "" "Press all the keys mentioned here. After you have done it, check\n" "which keys are not marked with OK. Press space on the missing\n" "key, or click with the mouse to define it. Move around with Tab." msgstr "" -"ÐатиÑнете вÑички клавиши Ñпоменати тук. След като приключите, проверете\n" -"кои клавиши не Ñа отбелÑзани Ñ OK. ÐатиÑнете пауза на липÑващиÑ\n" -"клавиш, или кликнете Ñ Ð¼Ð¸ÑˆÐºÐ°Ñ‚Ð°, за да го дефинирате. Движение наÑам-натам Ñ " -"Tab." +"ÐатиÑнете вÑички клавиши Ñпоменати тук. След като приключите,\n" +"проверете кои клавиши не Ñа отбелÑзани Ñ OK. Дефинирайте ги,\n" +"като ги натиÑнете Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð» или мишката. ÐавигациÑта е Ñ Tab." #, c-format msgid "" @@ -3880,6 +3922,9 @@ msgid "" "is already running on this terminal.\n" "Subshell support will be disabled." msgstr "" +"GNU Midnight Commander\n" +"вече работи в този терминал.\n" +"Поддръжката на подобвивка ще Ñе изключи." #, c-format msgid "" @@ -3893,16 +3938,16 @@ msgstr "" "\n" msgid "Choose codepage" -msgstr "Избиране на кодова таблица" +msgstr "Кодова таблица" msgid "- < No translation >" -msgstr "- < ÐÑма превод >" +msgstr "— < Без преобразуване >" msgid "%b %e %Y" -msgstr "%b %e %Y" +msgstr "%e %b %Y" msgid "%b %e %H:%M" -msgstr "%b %e %H:%M" +msgstr "%e %b %H:%M" #, c-format msgid "" @@ -3921,102 +3966,102 @@ msgstr "Обвивката е още активна. Да Ñе напуÑне л #, c-format msgid "Warning: Cannot change to %s.\n" -msgstr "Внимание: Ðе мога да премина в %s.\n" +msgstr "Внимание: Ðе може да Ñе влезе в %s.\n" msgid "With builtin Editor and Aspell support" -msgstr "" +msgstr "С поддръжка на Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€ и aspell" msgid "With builtin Editor" -msgstr "" +msgstr "С поддръжка на Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€" msgid "With optional subshell support" -msgstr "" +msgstr "С поддръжка на подобвивка (при възможноÑÑ‚)" msgid "With subshell support as default" -msgstr "" +msgstr "С поддръжка на подобвивка (Ñтандартно)" msgid "With support for background operations" -msgstr "" +msgstr "С поддръжка на фонови задачи" msgid "With mouse support on xterm and Linux console" -msgstr "" +msgstr "С поддръжка на мишка на в xterm и конзола на Linux" msgid "With mouse support on xterm" -msgstr "" +msgstr "С поддръжка на мишка в xterm" msgid "With support for X11 events" -msgstr "" +msgstr "С поддръжка на ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð¾Ñ‚ X11" msgid "With internationalization support" -msgstr "" +msgstr "С поддръжка на интернационализациÑ" msgid "With multiple codepages support" -msgstr "" +msgstr "С поддръжка на множеÑтво кодираниÑ" msgid "With ext2fs attributes support" -msgstr "" +msgstr "С поддръжка на атрибути на ext2fs" #, c-format msgid "Built with GLib %d.%d.%d\n" -msgstr "Компилиран Ñ GLib %d.%d.%d\n" +msgstr "С поддръжка на GLib %d.%d.%d\n" #, c-format msgid "Built with S-Lang %s with terminfo database\n" -msgstr "" +msgstr "С поддръжка на S-Lang %s Ñ terminfo\n" #, c-format msgid "Built with ncurses %s\n" -msgstr "" +msgstr "С поддръжка на ncurses %s\n" msgid "Built with ncurses (unknown version)" -msgstr "" +msgstr "С поддръжка на ncurses (непозната верÑиÑ)" #, c-format msgid "Built with ncursesw %s\n" -msgstr "" +msgstr "С поддръжка на ncursesw %s\n" msgid "Built with ncursesw (unknown version)" -msgstr "" +msgstr "С поддръжка на ncursesw (непозната верÑиÑ)" #, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "" +msgstr "С поддръжка на libssh2 %d.%d.%d\n" msgid "Virtual File Systems:" msgstr "Виртуални файлови ÑиÑтеми:" msgid "Data types:" -msgstr "Типове за данни:" +msgstr "Видове данни:" msgid "Home directory:" msgstr "Домашна папка:" msgid "Profile root directory:" -msgstr "Коренна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° профила:" +msgstr "Коренова Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° профила:" msgid "System data" msgstr "СиÑтемни данни" msgid "Config directory:" -msgstr "Папка Ñ Ð½Ð°Ñтройки:" +msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ Ð½Ð°Ñтройки:" msgid "Data directory:" -msgstr "Папка Ñ Ð´Ð°Ð½Ð½Ð¸:" +msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ Ð´Ð°Ð½Ð½Ð¸:" msgid "File extension handlers:" -msgstr "Обработчици на файлови разширениÑ:" +msgstr "Поддръжка на файлови разширениÑ:" msgid "VFS plugins and scripts:" -msgstr "ВФС добавки и Ñкриптове:" +msgstr "Добавки и Ñкриптове за виртуални ФС:" msgid "User data" msgstr "ПотребителÑки данни" msgid "Cache directory:" -msgstr "Кеш директориÑ:" +msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ ÐºÐµÑˆ:" msgid "Debug" -msgstr "Дебъгване" +msgstr "ТраÑиране" msgid "ERROR:" msgstr "ГРЕШКÐ:" @@ -4031,22 +4076,22 @@ msgid "Error calling program" msgstr "Грешка при извикване на програма" msgid "Warning -- ignoring file" -msgstr "Предупреждение -- игнориране на файл" +msgstr "Предупреждение — игнориране на файл" #, c-format msgid "" "File %s is not owned by root or you or is world writable.\n" "Using it may compromise your security" msgstr "" -"Файла %s не е на root или Ваш, или е доÑтъпен за Ð·Ð°Ð¿Ð¸Ñ Ð¾Ñ‚ вÑички.\n" -"Използването му може да заÑтраши ÑигурноÑтта Ви" +"Файлът %s не е на root и не е ваш, или е доÑтъпен за запиÑ\n" +"от вÑички. Използването му може да заÑтраши ÑигурноÑтта ви" msgid "Format error on file Extensions File" -msgstr "Грешка във формата на файла за РазширениÑ" +msgstr "Грешка във форма̀та на файла за разширениÑ" #, c-format msgid "The %%var macro has no default" -msgstr "МакроÑÑŠÑ‚ %%var нÑма ÑтойноÑÑ‚ по подразбиране" +msgstr "МакроÑÑŠÑ‚ %%var нÑма Ñтандартна ÑтойноÑÑ‚" #, c-format msgid "The %%var macro has no variable" @@ -4064,7 +4109,7 @@ msgid "" "Cannot open cpio archive\n" "%s" msgstr "" -"Ðе може да Ñе отвори cpio архива\n" +"Ðе може да Ñе отвори архивът cpio\n" "%s" #, c-format @@ -4072,7 +4117,7 @@ msgid "" "Premature end of cpio archive\n" "%s" msgstr "" -"Преждевременен край на cpio архива\n" +"Преждевременен край на архива cpio\n" "%s" #, c-format @@ -4084,19 +4129,19 @@ msgid "" msgstr "" "Ðевалидни твърди връзки към\n" "%s\n" -"в cpio архивa\n" +"в архива cpio\n" "%s" #, c-format msgid "%s contains duplicate entries! Skipping!" -msgstr "%s Ñъдържа дублирани елементи! ПропуÑкам го!" +msgstr "%s Ñъдържа повтарÑщи Ñе елементи! Те Ñе пропуÑкат!" #, c-format msgid "" "Corrupted cpio header encountered in\n" "%s" msgstr "" -"Повредено cpio заглавие Ñрещнато в\n" +"Грешна заглавна чаÑÑ‚ на cpio в\n" "%s" #, c-format @@ -4104,55 +4149,64 @@ msgid "" "Unexpected end of file\n" "%s" msgstr "" -"Ðеочакван край на файла\n" +"Ðеочакван край на файл\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Ñгрешен архив tar" + #, c-format msgid "" "Cannot open %s archive\n" "%s:\n" "%s" msgstr "" +"Ðрхивът %s не може да Ñе отвори\n" +"%s:\n" +"%s" #, c-format msgid "" "EXTFS virtual file system:\n" "%s" msgstr "" +"Виртуална ФС по EXTFS:\n" +"%s" #, c-format msgid "Warning: cannot open %s directory\n" -msgstr "Предупреждение: не може да Ñе отвори %s директориÑта\n" +msgstr "Предупреждение: директориÑта %s не може да Ñе отвори \n" #, c-format msgid "fish: Disconnecting from %s" -msgstr "fish: Изключвам Ñе от %s" +msgstr "fish: Изключване от %s" msgid "fish: Waiting for initial line..." -msgstr "fish: Чакам начален ред..." +msgstr "fish: Изчаква Ñе начален ред…" msgid "Sorry, we cannot do password authenticated connections for now." -msgstr "СъжалÑвам, не можем да правим връзки Ñ Ð¿Ð°Ñ€Ð¾Ð»Ð° заÑега." +msgstr "ЗаÑега връзки Ñ Ð¿Ð°Ñ€Ð¾Ð»Ð° не може да Ñе оÑъщеÑтвÑÑ‚." #, c-format msgid "fish: Password is required for %s" msgstr "fish: Ðужна е парола за %s" msgid "fish: Sending password..." -msgstr "fish: Изпращам парола..." +msgstr "fish: Изпращане на парола…" msgid "fish: Sending initial line..." -msgstr "fish: Изпращам начален ред..." +msgstr "fish: Изпращане на начален ред…" msgid "fish: Handshaking version..." -msgstr "fish: Потвърждавм верÑиÑта..." +msgstr "fish: Потвърждаване на верÑиÑта…" msgid "fish: Getting host info..." -msgstr "fish: Получавам данни за хоÑта..." +msgstr "fish: Получаване на данни за хоÑта…" #, c-format msgid "fish: Reading directory %s..." -msgstr "fish: Чета директориÑта %s..." +msgstr "fish: Прочитане на директориÑта %s…" #, c-format msgid "%s: done." @@ -4164,56 +4218,56 @@ msgstr "%s: неуÑпех" #, c-format msgid "fish: store %s: sending command..." -msgstr "fish: Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %s: изпращам командата..." +msgstr "fish: Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %s: изпращане на командата…" msgid "fish: Local read failed, sending zeros" -msgstr "fish: Локалното четене пропадна, изпращам нули" +msgstr "fish: ÐеуÑпешно локалнот четене, изпращат Ñе нули" msgid "fish: storing file" msgstr "fish: Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° файл" msgid "Aborting transfer..." -msgstr "ОтменÑне преноÑа..." +msgstr "ОтмÑна на пренаÑÑнето…" msgid "Error reported after abort." -msgstr "Грешка Ñлед отнÑната." +msgstr "Грешка Ñлед отмÑната." msgid "Aborted transfer would be successful." msgstr "ПреноÑÑŠÑ‚ е отменен уÑпешно." #, c-format msgid "ftpfs: Disconnecting from %s" -msgstr "ftpfs: Изключвам Ñе от %s" +msgstr "ftpfs: Изключване от %s" #, c-format msgid "FTP: Password required for %s" msgstr "FTP: Ðужна е парола за %s" msgid "ftpfs: sending login name" -msgstr "ftpfs: изпращам потребителÑко име" +msgstr "ftpfs: изпращане на потребителÑко име" msgid "ftpfs: sending user password" -msgstr "ftpfs: изпращам потребителÑка парола" +msgstr "ftpfs: изпращане на потребителÑка парола" #, c-format msgid "FTP: Account required for user %s" msgstr "FTP: Ðужно е потребителÑко име за %s" msgid "Account:" -msgstr "Сметка:" +msgstr "РегиÑтрациÑ:" msgid "ftpfs: sending user account" msgstr "ftpfs: изпращане на потребителÑко име" msgid "ftpfs: logged in" -msgstr "ftpfs: вътре Ñме" +msgstr "ftpfs: уÑпешно впиÑване" #, c-format msgid "ftpfs: Login incorrect for user %s " msgstr "ftpfs: Отказ на връзка за Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ %s " msgid "ftpfs: Invalid host name." -msgstr "ftpfs: Ðевалидно име на машина" +msgstr "ftpfs: Ðеправилно име на машина" #, c-format msgid "ftpfs: %s" @@ -4221,25 +4275,40 @@ msgstr "ftpfs: %s" #, c-format msgid "ftpfs: making connection to %s" -msgstr "ftpfs: уÑтановÑвам връзка Ñ %s" +msgstr "ftpfs: уÑтановÑване на връзка Ñ %s" msgid "ftpfs: connection interrupted by user" msgstr "ftpfs: връзката прекъÑната от потребителÑ" #, c-format msgid "ftpfs: connection to server failed: %s" -msgstr "ftpfs: връзката ÑÑŠÑ Ñървъра пропадна: %s" +msgstr "ftpfs: неуÑпешна връзка ÑÑŠÑ Ñървъра: %s" #, c-format msgid "Waiting to retry... %d (Control-G to cancel)" -msgstr "Очакване за повторен опит... %d (Control-G за отказване)" +msgstr "Очакване за повторен опит… %d (Control-G за отказване)" + +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: адреÑÑŠÑ‚ не може да Ñе преобразува до име: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: пореден неуÑпешен опит за връзка ÑÑŠÑ Ñървъра — опит: %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: името на гнездото не може да Ñе получи: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: повторното Ñвързване към Ñървъра е невъзможно" msgid "ftpfs: invalid address family" -msgstr "ftpfs: невалиден вид на адреÑа" +msgstr "ftpfs: неправилен вид на адреÑа" #, c-format msgid "ftpfs: could not create socket: %s" -msgstr "ftpfs: не може да Ñе Ñъздаде Ñокет: %s" +msgstr "ftpfs: не може да Ñе Ñъздаде гнездо: %s" msgid "ftpfs: could not setup passive mode" msgstr "ftpfs: не може да Ñе уÑтанови паÑивен режим" @@ -4261,11 +4330,11 @@ msgid "ftpfs: couldn't resolve symlink" msgstr "ftpfs: не може да Ñе проÑледи връзката" msgid "Resolving symlink..." -msgstr "ПроÑледÑване на връзката..." +msgstr "ПроÑледÑване на връзката…" #, c-format msgid "ftpfs: Reading FTP directory %s... %s%s" -msgstr "ftpfs: Чете Ñе FTP директориÑта %s... %s%s" +msgstr "ftpfs: Чете Ñе FTP директориÑта %s… %s%s" msgid "(strict rfc959)" msgstr "(Ñтриктно rfc959)" @@ -4274,7 +4343,7 @@ msgid "(chdir first)" msgstr "(първо cd)" msgid "ftpfs: failed; nowhere to fallback to" -msgstr "ftpfs: неуÑпех; нÑма къде да Ñе върна" +msgstr "ftpfs: неуÑпех; нÑма мÑÑто за връщане" msgid "ftpfs: storing file" msgstr "ftpfs: ÑъхранÑване на файл" @@ -4283,14 +4352,16 @@ msgid "" "~/.netrc file has incorrect mode\n" "Remove password or correct mode" msgstr "" -"файлът /.netrc има неправилен режим\n" -"Изтрийте паролата или поправете режима" +"файлът /.netrc е Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»Ð½Ð¸ права\n" +"Изтрийте паролата или ги оправете" #, c-format msgid "" "SFS virtual file system:\n" "%s" msgstr "" +"Виртуална ФС по SFS:\n" +"%s" #, c-format msgid "%s: Warning: file %s not found\n" @@ -4314,13 +4385,13 @@ msgstr "" #, c-format msgid "sftp: an error occurred while reading %s: %s" -msgstr "sftp: грешка възникна при четенето на %s: %s" +msgstr "sftp: грешка при четенето на %s: %s" msgid "sftp: Unable to get current user name." -msgstr "sftp: ÐевъзможноÑÑ‚ да Ñе уÑтанови потребителÑкото име." +msgstr "sftp: ПотребителÑкото име не може да Ñе уÑтанови." msgid "sftp: Invalid host name." -msgstr "sftp: Ðевалидно име на хоÑÑ‚." +msgstr "sftp: Ðеправилно име на хоÑÑ‚." #, c-format msgid "sftp: %s" @@ -4328,6 +4399,7 @@ msgstr "sftp: %s" msgid "sftp: failed to convert remote host IP address into text form" msgstr "" +"sftp: IP адреÑÑŠÑ‚ на Ð¾Ñ‚Ð´Ð°Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ…Ð¾ÑÑ‚ не може да Ñе обърне в текÑтова форма" #, c-format msgid "sftp: making connection to %s" @@ -4341,10 +4413,10 @@ msgid "sftp: connection to server failed: %s" msgstr "sftp: връзката към Ñървъра е неуÑпешна: %s" msgid "sftp: found host key of unsupported type: RSA1" -msgstr "" +msgstr "sftp: неподдържан вид на Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡ на хоÑÑ‚: RSA1" msgid "sftp: unknown host key type:" -msgstr "" +msgstr "sftp: неподдържан вид ключ:" #, c-format msgid "" @@ -4352,15 +4424,18 @@ msgid "" "%s (%s)\n" "to the list of known hosts." msgstr "" +"%s (%s)\n" +"е добавен за поÑтоÑнно в\n" +"ÑпиÑъка Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ хоÑтове." msgid "sftp: cannot get the remote host key" -msgstr "" +msgstr "sftp: ключът на Ð¾Ñ‚Ð´Ð°Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ…Ð¾ÑÑ‚ не може да Ñе получи" msgid "sftp: unsupported key type, can't check remote host key" -msgstr "" +msgstr "sftp: неподдържан вид ключ, не може да Ñе провери" msgid "sftp: can't compute host key fingerprint hash" -msgstr "" +msgstr "sftp: контролната Ñума на ключа на хоÑта не може да Ñе изчиÑли" #, c-format msgid "" @@ -4371,6 +4446,13 @@ msgid "" "SHA1:%s.\n" "Do you want to add it to the list of known hosts and continue connecting?" msgstr "" +"ИдентичноÑтта на хоÑта\n" +"%s (%s)\n" +"не може да бъде проверена!\n" +"Контролната Ñума на ключа на %s е\n" +"SHA1:%s.\n" +"ИÑкате ли да го добавите в ÑпиÑъка Ñ\n" +"познати хоÑтове и да продължите Ñ Ð²Ñ€ÑŠÐ·ÐºÐ°Ñ‚Ð°?" #, c-format msgid "" @@ -4380,16 +4462,21 @@ msgid "" "Are you sure you want to add it to the list of known hosts and continue " "connecting?" msgstr "" +"%s (%s)\n" +"приÑÑŠÑтва в познатите хоÑтове, но\n" +"КЛЮЧЪТ ÐЕ СЪВПÐДÐ! МОЖЕ ДРСТЕ ÐТÐКУВÐÐИ!\n" +"Сигурни ли Ñте, че иÑкате да го добавите в ÑпиÑъка\n" +"Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ хоÑтове и да продължите Ñ Ð²Ñ€ÑŠÐ·ÐºÐ°Ñ‚Ð°?" msgid "sftp: host key verification failed" -msgstr "" +msgstr "sftp: неÑъвпадащ ключ на хоÑта" #, c-format msgid "sftp: Enter passphrase for %s " -msgstr "sftp: Въвеждане на passphrase за %s" +msgstr "sftp: Въвеждане на парола за %s" msgid "sftp: Passphrase is empty." -msgstr "sftp: passphrase-а е празна." +msgstr "sftp: Паролата е празна." #, c-format msgid "sftp: Enter password for %s " @@ -4399,35 +4486,35 @@ msgid "sftp: Password is empty." msgstr "sftp: Паролата е празна." msgid "sftp: failure establishing SSH session" -msgstr "" +msgstr "sftp: неуÑпешна връзка по SSH" msgid "sftp: No file handler data present for reading file" -msgstr "sftp: ÐÑма ÑъщеÑтвуващ обработчик за четене на файл" +msgstr "sftp: ÐÑма команда за четенето на файл" #, c-format msgid "sftp: socket error: %s" -msgstr "" +msgstr "sftp: грешка в гнездото: %s" #, c-format msgid "sftp: (Ctrl-G break) Listing... %s" -msgstr "sftp: (Ctrl-G прекъÑване) Изреждане... %s" +msgstr "sftp: (прекъÑване Ñ Ctrl-G) Извеждане… %s" msgid "sftp: Listing done." -msgstr "sftp: Изреждането приключи." +msgstr "sftp: Извеждането приключи." #, c-format msgid "" "Cannot open tar archive\n" "%s" msgstr "" -"Ðе може да Ñе отвори tar архива\n" +"Ðе може да Ñе отвори архивът tar\n" "%s" msgid "Inconsistent tar archive" -msgstr "ÐеÑъглаÑуван tar архив" +msgstr "Ñгрешен архив tar" msgid "Unexpected EOF on archive file" -msgstr "Ðеочакван край на Ð°Ñ€Ñ…Ð¸Ð²Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»" +msgstr "Ðеочакван край на архива" #, c-format msgid "" @@ -4435,7 +4522,7 @@ msgid "" "doesn't look like a tar archive." msgstr "" "%s\n" -"не изглежда като tar архив." +"не изглежда като архив tar." msgid "undelfs: error" msgstr "undelfs: грешка" @@ -4444,7 +4531,7 @@ msgid "not enough memory" msgstr "нÑма доÑтатъчно памет" msgid "while allocating block buffer" -msgstr "при заделÑнето на буфер за блок" +msgstr "при заделÑнето на буфер" #, c-format msgid "open_inode_scan: %d" @@ -4452,7 +4539,7 @@ msgstr "open_inode_scan: %d" #, c-format msgid "while starting inode scan %d" -msgstr "при Ñтартиране на inode Ñканиране %d" +msgstr "при Ñтартиране на Ñканиране на i-възел %d" #, c-format msgid "undelfs: loading deleted files information %d inodes" @@ -4467,46 +4554,46 @@ msgstr "нÑма повече памет при повторното задел #, c-format msgid "while doing inode scan %d" -msgstr "при изпълнението на inode scan %d" +msgstr "при изпълнението на Ñканиране на i-възел %d" #, c-format msgid "Cannot open file %s" msgstr "Файлът %s не може да бъде отворен" msgid "undelfs: reading inode bitmap..." -msgstr "undelfs: четене на битовата карта на i-възлите..." +msgstr "undelfs: четене на битовата карта на i-възлите…" #, c-format msgid "" "Cannot load inode bitmap from:\n" "%s" msgstr "" -"Ðе може да Ñе зареди inode bitmap-а от:\n" +"Ðе може да Ñе зареди битовата карта на i-възлите от:\n" "%s" msgid "undelfs: reading block bitmap..." -msgstr "undelfs: четене на блоковата битова карта..." +msgstr "undelfs: четене на блоковата битова карта…" #, c-format msgid "" "Cannot load block bitmap from:\n" "%s" msgstr "" -"Ðе може да Ñе зареди bitmap-а на блока от:\n" +"Ðе може да Ñе зареди битовата карта на блока от:\n" "%s" msgid "vfs_info is not fs!" -msgstr "vfs_info не е Ñ„Ñ!" +msgstr "vfs_info не е ФС!" msgid "You have to chdir to extract files first" -msgstr "ТрÑбва първо да chdir за да разархивирате файловете" +msgstr "За да разархивирате файловете, първо изпълнете chdir" msgid "while iterating over blocks" msgstr "при обработване на блокове" #, c-format msgid "Cannot open file \"%s\"" -msgstr "Ðе може да Ñе отвори файл \"%s\"" +msgstr "Ðе може да Ñе отвори файлът „%s“" msgid "Ext2lib error" msgstr "Грешка в Ext2lib" @@ -4515,17 +4602,17 @@ msgid "Invalid value" msgstr "Ðеправилна ÑтойноÑÑ‚" msgid "File was modified. Save with exit?" -msgstr "Файлът е променен. Да Ñе запази ли при излизане?" +msgstr "Файлът е променен. Да Ñе запази ли при изход?" msgid "&Cancel quit" -msgstr "&Отказване на изход" +msgstr "&Отказ от изход" msgid "" "Midnight Commander is being shut down.\n" "Save modified file?" msgstr "" -"Midnight Commander-а Ñе изключва.\n" -"Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»?" +"Изход на Midnight Commander.\n" +"Да Ñе запази ли редактираниÑÑ‚ файл?" msgid "&Line number" msgstr "&Ðомер на ред" @@ -4540,44 +4627,44 @@ msgid "He&xadecimal offset" msgstr "&ШеÑтнадеÑетично отмеÑтване" msgid "Goto" -msgstr "Отиди" +msgstr "Към" msgid "ButtonBar|Ascii" -msgstr "ButtonBar|Ascii" +msgstr "Ascii" msgid "ButtonBar|HxSrch" -msgstr "ButtonBar|HxSrch" +msgstr "HxSrch" msgid "ButtonBar|UnWrap" -msgstr "ButtonBar|Без пренаÑÑне" +msgstr "Без пренаÑÑне" msgid "ButtonBar|Wrap" -msgstr "ButtonBar|ПренаÑÑне" +msgstr "ПренаÑÑне" msgid "ButtonBar|Hex" -msgstr "ButtonBar|Hex" +msgstr "16-но" msgid "ButtonBar|Goto" -msgstr "ButtonBar|ОтиванеÐа" +msgstr "Към" msgid "ButtonBar|Raw" -msgstr "" +msgstr "Ðеобработени" msgid "ButtonBar|Parse" -msgstr "ButtonBar|Обработка" +msgstr "Обработка" msgid "ButtonBar|Unform" -msgstr "ButtonBar|Деформатиране" +msgstr "Без форматиране" msgid "ButtonBar|Format" -msgstr "ButtonBar|Форматиране" +msgstr "Форматиране" #, c-format msgid "" "Failed to read data from child stdout:\n" "%s" msgstr "" -"ÐеуÑпех при четене на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñ‚Ð¾ Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ stdout:\n" +"ÐеуÑпех при четене на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ изхода на процеÑ:\n" "%s" #, c-format @@ -4586,9 +4673,9 @@ msgid "" "%s\n" "Data may have been written or not" msgstr "" -"Грешка при затварÑнето на файлът:\n" +"Грешка при затварÑнето на файла:\n" "%s\n" -"ИнформациÑта може да била запиÑана или не" +"Ðе е ÑÑно дали информациÑта е запиÑана" #, c-format msgid "" @@ -4606,7 +4693,7 @@ msgid "" "Cannot open \"%s\"\n" "%s" msgstr "" -"Ðе може да Ñе отвори \"%s\"\n" +"Ðе може да Ñе отвори „%s“\n" "%s" msgid "Cannot view: not a regular file" @@ -4617,7 +4704,7 @@ msgid "" "Cannot open \"%s\" in parse mode\n" "%s" msgstr "" -"Ðе може да Ñе отвори \"%s\" в обработващ режим\n" +"Ðе може да Ñе отвори „%s“ в режим Ñ Ð°Ð½Ð°Ð»Ð¸Ð·\n" "%s" msgid "Search done" @@ -4627,4 +4714,4 @@ msgid "Continue from beginning?" msgstr "Да Ñе продължи ли от началото?" msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt" -msgstr "Ðе може да Ñе изтегли локално копие на /ftp://some.host/editme.txt" +msgstr "Ðе може да Ñе изтегли локално копие на „/ftp://some.host/editme.txt“" diff --git a/mcsrc/po/br.po b/mcsrc/po/br.po index 739f8bda..c2d8e011 100644 --- a/mcsrc/po/br.po +++ b/mcsrc/po/br.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Irriep Nala Novram , 2017-2018\n" "Language-Team: Breton (http://www.transifex.com/mc/mc/language/br/)\n" @@ -17,10 +17,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !" -"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n" -"%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > " -"19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 " -"&& n % 1000000 == 0) ? 3 : 4);\n" +"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && " +"(n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 " +"> 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != " +"0 && n % 1000000 == 0) ? 3 : 4);\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -505,6 +505,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1128,7 +1131,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2263,12 +2266,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2409,14 +2406,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2426,8 +2430,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2662,6 +2666,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2674,12 +2687,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2786,7 +2793,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2814,7 +2821,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2866,7 +2873,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2881,7 +2888,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3266,7 +3273,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3517,6 +3524,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3905,6 +3915,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4032,6 +4045,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/ca.po b/mcsrc/po/ca.po index 5ff55a61..ae15e390 100644 --- a/mcsrc/po/ca.po +++ b/mcsrc/po/ca.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Antoni Bella Pérez , 2017-2022\n" "Language-Team: Catalan (http://www.transifex.com/mc/mc/language/ca/)\n" @@ -44,7 +44,7 @@ msgid "Failed to initialize event system" msgstr "Ha fallat en inicialitzar el sistema d'esdeveniments" msgid "Event system not initialized" -msgstr "El sistema d'esdeveniments no s'ha inicialitzat " +msgstr "El sistema d'esdeveniments no s'ha inicialitzat" msgid "Check input data! Some of parameters are NULL!" msgstr "Comproveu les dades d'entrada! Alguns paràmetres estan en NULL!" @@ -140,7 +140,7 @@ msgid "" "Default skin has been loaded" msgstr "" "No es pot carregar el tema «%s».\n" -"S'ha carregat el tema per defecte" +"S'ha carregat el tema predeterminat" #, c-format msgid "" @@ -148,7 +148,7 @@ msgid "" "Default skin has been loaded" msgstr "" "No es pot comprovar el tema «%s».\n" -"S'ha carregat el tema per defecte" +"S'ha carregat el tema predeterminat" #, c-format msgid "" @@ -158,7 +158,7 @@ msgid "" msgstr "" "No es pot usar el tema «%s» amb suport de colors vertaders:\n" "%s\n" -"S'ha carregat el per defecte" +"S'ha carregat el predeterminat" #, c-format msgid "" @@ -168,7 +168,7 @@ msgid "" msgstr "" "No es pot usar el tema «%s» amb suport\n" "de 256 colors en un terminal de no-256 colors.\n" -"S'ha carregat el tema per defecte" +"S'ha carregat el tema predeterminat" msgid "True color not supported with ncurses." msgstr "El color veritable no està admès amb «ncurses»." @@ -464,7 +464,7 @@ msgid "Alt" msgstr "Alt" msgid "Shift" -msgstr "Maj" +msgstr "Majús" msgid "The TERM environment variable is unset!\n" msgstr "La variable d'entorn TERM no està definida!\n" @@ -542,6 +542,9 @@ msgstr "" "fill:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -596,13 +599,13 @@ msgid "Temporary files will not be created\n" msgstr "No es crearan fitxers temporals\n" msgid "Press any key to continue..." -msgstr "Premeu qualsevol tecla per continuar..." +msgstr "Premeu qualsevol tecla per a continuar..." msgid "Cannot parse:" msgstr "No s'ha pogut analitzar:" msgid "More parsing errors will be ignored." -msgstr " Si hi ha mès errors d'interpretació, s'ignoraran. " +msgstr "Si hi ha més errors d'interpretació, s'ignoraran." msgid "Internal error:" msgstr "Error intern:" @@ -697,7 +700,7 @@ msgid "Disable mouse support in text version" msgstr "Inhabilita el suport de ratolí a la versió text" msgid "Tries to use termcap instead of terminfo" -msgstr "Prova de emprar el «termcap» en comptes del «terminfo»" +msgstr "Prova d'emprar el «termcap» en comptes del «terminfo»" msgid "To run on slow terminals" msgstr "Per a funcionar amb terminals lents" @@ -714,7 +717,8 @@ msgstr "" msgid "Don't load definitions of key bindings from file, use defaults" msgstr "" -"No carreguis les definicions d'associacions de tecles, usa les per defecte" +"No carreguis les definicions d'associacions de tecles, usa les " +"predeterminades" msgid "Requests to run in black and white" msgstr "Demana que s'empri el mode en blanc i negre" @@ -754,7 +758,7 @@ msgid "" msgstr "" "--colors KEYWORD={FORE},{BACK},{ATTR}:KEYWORD2=...\n" "\n" -"{FORE}, {BACK} i {ATTR} es poden ometre i s'usarà el valor per defecte\n" +"{FORE}, {BACK} i {ATTR} es poden ometre i s'usarà el valor predeterminat\n" "\n" " Paraules clau:\n" " Global: errors, disabled, reverse, gauge, header\n" @@ -837,7 +841,7 @@ msgid "No arguments given to the viewer." msgstr "No s'han donat arguments al visor." msgid "Two files are required to envoke the diffviewer." -msgstr "Calen dos fitxers per executar el visor de diferències." +msgstr "Calen dos fitxers per a executar el visor de diferències." msgid "Background protocol error" msgstr "S'ha produït un error de protocol en segon pla" @@ -948,10 +952,10 @@ msgid "Edit is disabled" msgstr "Edita està inhabilitada" msgid "Goto line (left)" -msgstr "Vés a la linia (esquerra)" +msgstr "Ves a la línia (esquerra)" msgid "Goto line (right)" -msgstr "Vés a la linia (dreta)" +msgstr "Ves a la línia (dreta)" msgid "Enter line:" msgstr "Introduïu la línia:" @@ -981,14 +985,14 @@ msgid "Quit" msgstr "Surt" msgid "File(s) was modified. Save with exit?" -msgstr "El/s fitxer/s ha/n estat modificat/s. Deso abans de sortir?" +msgstr "El/s fitxer/s ha/n estat modificat/s. Voleu desar abans de sortir?" msgid "" "Midnight Commander is being shut down.\n" "Save modified file(s)?" msgstr "" "S'està sortint del Midnight Commander.\n" -"Deso abans de sortir?" +"Voleu desar abans de sortir?" msgid "Diff:" msgstr "Diferència:" @@ -1043,7 +1047,7 @@ msgid "" "Open it anyway?" msgstr "" "El fitxer «%s» és massa gran.\n" -"L'obro igualment?" +"Voleu obrir-lo igualment?" msgid "Warning" msgstr "Avís" @@ -1057,10 +1061,11 @@ msgid "Cannot open pipe for reading: %s" msgstr "No s'ha pogut obrir la canonada per a lectura: %s" msgid "File has hard-links. Detach before saving?" -msgstr "El fitxer té enllaços durs. Els separo abans de desar?" +msgstr "El fitxer té enllaços durs. Voleu separar-los abans de desar?" msgid "The file has been modified in the meantime. Save anyway?" -msgstr "Mentrestant el fitxer ha estat modificat. El deso de totes maneres?" +msgstr "" +"Mentrestant el fitxer ha estat modificat. Voleu desar-lo de totes maneres?" #, c-format msgid "Error writing to pipe: %s" @@ -1174,7 +1179,7 @@ msgid "" "Save before close?" msgstr "" "El fitxer %s ha estat modificat.\n" -"El deso abans de tancar?" +"Voleu desar-lo abans de tancar?" msgid "Close file" msgstr "Tanca el fitxer" @@ -1185,7 +1190,7 @@ msgid "" "Save modified file %s?" msgstr "" "S'està sortint del Midnight Commander.\n" -"Deso el fitxer modificat «%s»?" +"Voleu desar el fitxer modificat «%s»?" msgid "This function is not implemented" msgstr "Funció no implementada" @@ -1200,7 +1205,7 @@ msgid "Cut to clipboard" msgstr "Talla al porta-retalls" msgid "Goto line" -msgstr "Vés a la línia" +msgstr "Ves a la línia" msgid "Save block" msgstr "Desa el bloc" @@ -1215,21 +1220,21 @@ msgid "Sort block" msgstr "Ordena el bloc" msgid "You must first highlight a block of text" -msgstr "En primer lloc heu de ressaltar un bloc de text" +msgstr "En primer lloc, heu de ressaltar un bloc de text" msgid "Run sort" msgstr "Executa l'ordenació" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Introduïu les opcions d'ordrenació (vegeu la pàgina man), separades per " -"espais en blanc:" +"Introduïu les opcions d'ordenació (vegeu la pàgina man sort(1)) separades " +"per un espai en blanc:" msgid "Sort" msgstr "Ordena" msgid "Cannot execute sort command" -msgstr "No s'ha pogut executar l'ordre per ordenar" +msgstr "No s'ha pogut executar l'ordre per a ordenar" #, c-format msgid "Sort returned non-zero: %s" @@ -1266,7 +1271,7 @@ msgid "Insert literal" msgstr "Insereix literal" msgid "Press any key:" -msgstr "Premeu una tecla: " +msgstr "Premeu una tecla:" msgid "" "Current text was modified without a file save.\n" @@ -1402,13 +1407,13 @@ msgid "&Flush bookmarks" msgstr "Nete&ja els favorits" msgid "&Go to line..." -msgstr "Vés a la &línia..." +msgstr "Ves a la &línia..." msgid "&Toggle line state" msgstr "A<erna la línia d'estat" msgid "Go to matching &bracket" -msgstr "Vés al &claudàtor relacionat" +msgstr "Ves al &claudàtor relacionat" msgid "Toggle s&yntax highlighting" msgstr "Alterna el ressaltat de la s&intaxi" @@ -1585,7 +1590,7 @@ msgid "Cursor be&yond end of line" msgstr "Cursor &més enllà del final de la línia" msgid "&Group undo" -msgstr "Desfès en &grup" +msgstr "Desfés en &grup" msgid "Word wrap line length:" msgstr "Llargada de l'ajust de línia:" @@ -1649,7 +1654,7 @@ msgid "Open files" msgstr "Obre fitxers" msgid "Edit: " -msgstr "Edita:" +msgstr "Edita: " msgid "ButtonBar|Mark" msgstr "ButtonBar|Marca" @@ -1809,7 +1814,7 @@ msgstr "" "no es pot alternar el subintèrpret d'ordres." msgid "Type 'exit' to return to the Midnight Commander" -msgstr "Escriviu «exit» per tornar al Midnight Commander" +msgstr "Escriviu «exit» per a tornar al Midnight Commander" msgid "Set &all" msgstr "Estableix a &tots" @@ -1865,7 +1870,7 @@ msgstr "" "%s" msgid "< Default >" -msgstr " < Predeterminat >" +msgstr "< Predeterminat >" msgid "Skins" msgstr "Temes" @@ -2044,7 +2049,7 @@ msgstr "" "L'ús de l'opció de recàrrega ràpida pot no reflectir\n" "el contingut exacte del directori. En aquest cas,\n" "haureu de fer una recàrrega manual del directori.\n" -"Vegeu la pàgina man per als detalls." +"Per als detalls, vegeu la pàgina man." msgid "&Full file list" msgstr "Llistat c&omplet de fitxers" @@ -2123,7 +2128,7 @@ msgid "Directory tree" msgstr "Arbre de directoris" msgid "Timeout for freeing VFSs (sec):" -msgstr "Temps d'espera per alliberar els VFS (seg):" +msgstr "Temps d'espera per a alliberar els VFS (seg):" msgid "FTP anonymous password:" msgstr "Contrasenya anònima FTP:" @@ -2215,10 +2220,10 @@ msgid "Compressed dirty file" msgstr "Fitxer en brut comprimit" msgid "Compression raw access" -msgstr "Compressió amb accès sense processar" +msgstr "Compressió amb accés sense processar" msgid "Encrypted inode" -msgstr "Inode encriptat" +msgstr "Node-i encriptat" msgid "Journaled data" msgstr "Dades amb diari" @@ -2233,7 +2238,7 @@ msgid "Top of directory hierarchies" msgstr "Començament de les jerarquies de directori" msgid "Inode uses extents" -msgstr "L'ínode usa extensions" +msgstr "El node-i usa extensions" msgid "Huge_file" msgstr "Fitxer_enorme" @@ -2248,13 +2253,13 @@ msgid "Casefolded file" msgstr "Fitxer insensible a majúscules" msgid "Inode has inline data" -msgstr "L'ínode té dades incloses" +msgstr "El node-i té dades incloses" msgid "Project hierarchy" msgstr "Jerarquia del projecte" msgid "Verity protected inode" -msgstr "Ãnode protegit de veritat" +msgstr "Node-i protegit de veritat" msgid "&Marked all" msgstr "&Marca'ls tots" @@ -2378,17 +2383,11 @@ msgid "Enter machine name (F1 for details):" msgstr "Introduïu el nom de la màquina (F1 per a més detalls):" msgid "Files tagged, want to cd?" -msgstr "Hi ha fitxers seleccionats. Canvio de directori?" +msgstr "Hi ha fitxers seleccionats. Voleu canviar de directori?" msgid "Cannot change directory" msgstr "No s'ha pogut canviar de directori" -msgid "Filter" -msgstr "Filtre" - -msgid "Set expression for filtering filenames" -msgstr "Establiu l'expressió per a filtrar els noms de fitxer" - #, c-format msgid "Link %s to:" msgstr "Enllaça %s a:" @@ -2464,7 +2463,7 @@ msgid "" "to use this command" msgstr "" "Ambdós plafons han d'estar en el mode de llistat\n" -"per usar aquesta ordre" +"per a usar aquesta ordre" #, c-format msgid "'%s' is not a symbolic link" @@ -2535,19 +2534,23 @@ msgstr "" msgid "Pipe failed" msgstr "Ha fallat la canonada" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" -msgstr "Error en el fitxer %s%s" +msgstr " error en el fitxer %s%s" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"El format del fitxer %smc.ext ha canviat amb la versió 3.0. Sembla que la " -"instal·lació ha fallat. Si us plau, cerqueu una còpia nova des del paquet " -"del Midnight Commander." #, c-format msgid "%s file error" @@ -2555,11 +2558,9 @@ msgstr "Error en el fitxer %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"El format del fitxer %s ha canviat amb la versió 3.0. Podeu o bé copiar-lo " -"des de %smc.ext o usar aquest fitxer com a exemple de com escriure'l." msgid "DialogTitle|Copy" msgstr "DialogTitle|Copia" @@ -2682,7 +2683,7 @@ msgid "" "Delete it recursively?" msgstr "" "El directori «%s» no està buit.\n" -"El suprimeixo de forma recursiva?" +"Voleu suprimir-lo de forma recursiva?" #, c-format msgid "" @@ -2692,7 +2693,7 @@ msgid "" msgstr "" "Procés en segon pla:\n" "El directori «%s» no està buit.\n" -"El suprimeixo de forma recursiva?" +"Voleu suprimir-lo de forma recursiva?" msgid "Non&e" msgstr "Ca&p" @@ -2854,6 +2855,15 @@ msgstr "" msgid "(stalled)" msgstr "(encallat)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Conserva'l" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2870,12 +2880,6 @@ msgstr "" "No s'ha pogut tancar el fitxer de destinació «%s»\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "S'ha recuperat un fitxer incomplet. Voleu conservar-lo?" - -msgid "&Keep" -msgstr "&Conserva'l" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2964,7 +2968,7 @@ msgid "Existing:" msgstr "Existent:" msgid "Overwrite this file?" -msgstr "Sobreescric aquest fitxer?" +msgstr "Voleu sobreescriure aquest fitxer?" msgid "A&ppend" msgstr "A&nnexa" @@ -2973,7 +2977,7 @@ msgid "&Reget" msgstr "Reprè&n" msgid "Overwrite all files?" -msgstr "Sobreescric tots els fitxers?" +msgstr "Voleu sobreescriure tots els fitxers?" msgid "Don't overwrite with &zero length file" msgstr "No sobreescriure amb un fitxer de longitud &zero" @@ -2994,8 +2998,8 @@ msgid "Background process: File exists" msgstr "Procés en segon pla: El fitxer existeix" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Fitxers processats: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3022,8 +3026,8 @@ msgid " Total: %s " msgstr " Total: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Total: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Origen" @@ -3044,7 +3048,7 @@ msgid "Follow &links" msgstr "Segueix els en&llaços" msgid "Preserve &attributes" -msgstr "Mantèn els &atributs" +msgstr "Mantén els &atributs" msgid "Di&ve into subdir if exists" msgstr "Su&bmergeix-te en els subdirectoris si existeixen" @@ -3074,8 +3078,8 @@ msgstr "Ar&bre" msgid "&Listing format..." msgstr "Format del &llistat..." -msgid "S&ort order..." -msgstr "&Ordre de classificació..." +msgid "&Sort order..." +msgstr "" msgid "&Filter..." msgstr "&Filtra..." @@ -3089,8 +3093,8 @@ msgstr "Enllaç per a F&TP..." msgid "S&hell link..." msgstr "Enllaç per a l'i&ntèrpret..." -msgid "&SFTP link..." -msgstr "Enllaç &SFTP..." +msgid "SFTP li&nk..." +msgstr "" msgid "Paneli&ze" msgstr "&Quadre de cerca" @@ -3147,7 +3151,7 @@ msgid "Select &group" msgstr "Selecciona un &grup" msgid "U&nselect group" -msgstr "Deseleccio&na un grup" +msgstr "Desseleccio&na un grup" msgid "&Invert selection" msgstr "&Inverteix la selecció" @@ -3192,7 +3196,7 @@ msgid "Di&rectory hotlist" msgstr "Favorits dels di&rectoris" msgid "&Active VFS list" -msgstr "Llista el VFS &activu" +msgstr "Llista el VFS &actiu" msgid "&Background jobs" msgstr "Tasques en se&gon pla" @@ -3242,8 +3246,8 @@ msgstr "Plafons:" #, c-format msgid "You have %zu opened screen. Quit anyway?" msgid_plural "You have %zu opened screens. Quit anyway?" -msgstr[0] "Teniu oberta %zu pantalla. Surto igualment?" -msgstr[1] "Teniu obertes %zu pantalles. Surto igualment?" +msgstr[0] "Teniu oberta %zu pantalla. Voleu sortir igualment?" +msgstr[1] "Teniu obertes %zu pantalles. Voleu sortir igualment?" msgid "The Midnight Commander" msgstr "El Midnight Commander" @@ -3276,7 +3280,7 @@ msgid "ButtonBar|Mkdir" msgstr "ButtonBar|CreaDir" msgid "&Chdir" -msgstr "Canvia de &dirextori" +msgstr "Canvia de dire&ctori" msgid "&Again" msgstr "Un &altre cop" @@ -3434,7 +3438,7 @@ msgid "" "Remove it?" msgstr "" "El grup «%s» no està buit.\n" -"L'elimino?" +"Voleu eliminar-lo?" msgid "Hotlist Load" msgstr "Carrega els favorits" @@ -3472,8 +3476,8 @@ msgid "No space information" msgstr "No hi ha informació d'espai" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Espai lliure: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3547,7 +3551,7 @@ msgid "&Equal split" msgstr "Divisió &simètrica" msgid "&Menubar visible" -msgstr "Barra de &menú visible" +msgstr "Barra de &menús visible" msgid "Command &prompt" msgstr "&Indicatiu d'ordres" @@ -3717,6 +3721,9 @@ msgstr "Selecciona" msgid "Unselect" msgstr "No seleccionis" +msgid "Filter" +msgstr "Filtre" + msgid "Do you really want to execute?" msgstr "Realment el voleu executar?" @@ -3726,7 +3733,7 @@ msgstr "No s'ha pogut llegir el contingut del directori" msgid "User supplied format looks invalid, reverting to default." msgstr "" "El format facilitat per l'usuari sembla que no és vàlid, s'està tornant al " -"format per defecte." +"format predeterminat." msgid "&Add new" msgstr "Afegeix un &nou" @@ -3786,7 +3793,7 @@ msgid "" "Cannot open the %s file for writing:\n" "%s\n" msgstr "" -"No s'ha pogut obrir el fitxer %s per escriptura:\n" +"No s'ha pogut obrir el fitxer %s per a escriptura:\n" "%s\n" #, c-format @@ -3807,7 +3814,7 @@ msgstr "" #, c-format msgid "Delete %s?" -msgstr "Suprimeixo %s?" +msgstr "Voleu suprimir %s?" msgid "ButtonBar|Static" msgstr "ButtonBar|Estàtic" @@ -3836,7 +3843,7 @@ msgid "Help file format error\n" msgstr "Error de format en el fitxer d'ajuda\n" msgid "Internal bug: Double start of link area" -msgstr "Error intern: Doble inici de l'àrea d''enllaç" +msgstr "Error intern: Doble inici de l'àrea d'enllaç" #, c-format msgid "Cannot find node %s in help file" @@ -3871,7 +3878,7 @@ msgstr "" "Per favor, premeu la tecla %s\n" "i espereu fins que desaparegui aquest missatge.\n" "\n" -"Aleshores, premeu-la de nou per veure si\n" +"Aleshores, premeu-la de nou per a veure si\n" "apareix «D'acord» vora al seu botó.\n" "\n" "Si voleu sortir, premeu un cop la tecla\n" @@ -3955,7 +3962,7 @@ msgid "%b %e %Y" msgstr "%b %e %Y" msgid "%b %e %H:%M" -msgstr "%b %e %H:%M" +msgstr "%b %e %-H:%M" #, c-format msgid "" @@ -3970,7 +3977,7 @@ msgid "Cannot open named pipe %s\n" msgstr "No s'ha pogut obrir la canonada anomenada %s\n" msgid "The shell is still active. Quit anyway?" -msgstr "L'intèrpret d'ordres encara està actiu. Surto de totes maneres?" +msgstr "L'intèrpret d'ordres encara està actiu. Voleu sortir igualment?" #, c-format msgid "Warning: Cannot change to %s.\n" @@ -4099,7 +4106,7 @@ msgstr "Error de format en el fitxer de les extensions" #, c-format msgid "The %%var macro has no default" -msgstr "La macro %%var no és la per defecte" +msgstr "La macro %%var no és la predeterminada" #, c-format msgid "The %%var macro has no variable" @@ -4135,7 +4142,7 @@ msgid "" "in cpio archive\n" "%s" msgstr "" -"Enllaços inconsistents de\n" +"Enllaços incoherents de\n" "%s\n" "a l'arxiu cpio\n" "%s" @@ -4157,9 +4164,13 @@ msgid "" "Unexpected end of file\n" "%s" msgstr "" -"Fí de fitxer inesperat a\n" +"Fi de fitxer inesperat a\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "L'arxiu TAR no és coherent" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4242,17 +4253,17 @@ msgstr "Transferència interrompuda amb èxit." #, c-format msgid "ftpfs: Disconnecting from %s" -msgstr "ftpfs: S'està desconnectant de %s" +msgstr "FTPFS: S'està desconnectant de %s" #, c-format msgid "FTP: Password required for %s" msgstr "FTP: contrasenya requerida per %s" msgid "ftpfs: sending login name" -msgstr "ftpfs: s'està enviant la identificació" +msgstr "FTPFS: s'està enviant la identificació" msgid "ftpfs: sending user password" -msgstr "ftpfs: s'està enviant la contrasenya" +msgstr "FTPFS: s'està enviant la contrasenya" #, c-format msgid "FTP: Account required for user %s" @@ -4262,69 +4273,84 @@ msgid "Account:" msgstr "Compte:" msgid "ftpfs: sending user account" -msgstr "ftpfs: enviant compte d'usuari" +msgstr "FTPFS: enviant compte d'usuari" msgid "ftpfs: logged in" -msgstr "ftpfs: connectat" +msgstr "FTPFS: connectat" #, c-format msgid "ftpfs: Login incorrect for user %s " -msgstr "ftpfs: La identificació per a l'usuari %s no és correcta" +msgstr "FTPFS: La identificació per a l'usuari %s no és correcta " msgid "ftpfs: Invalid host name." -msgstr "ftpfs: El nom de l'amfitrió no és vàlid." +msgstr "FTPFS: El nom de l'amfitrió no és vàlid." #, c-format msgid "ftpfs: %s" -msgstr "ftpfs: %s" +msgstr "FTPFS: %s" #, c-format msgid "ftpfs: making connection to %s" -msgstr "ftpfs: s'està connectant amb %s" +msgstr "FTPFS: s'està connectant amb %s" msgid "ftpfs: connection interrupted by user" -msgstr "ftpfs: l'usuari ha interromput la connexió" +msgstr "FTPFS: l'usuari ha interromput la connexió" #, c-format msgid "ftpfs: connection to server failed: %s" -msgstr "ftpfs: ha fallat la connexió amb el servidor: %s" +msgstr "FTPFS: ha fallat la connexió amb el servidor: %s" #, c-format msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Esperant abans d'insistir... %d (Ctrl-G per a cancel·lar)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "FTPFS: no s'ha pogut fer la traducció d'adreça a nom: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "FTPFS: s'intenta tornar a connectar amb el servidor, intenteu %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "FTPFS: no s'ha pogut obtenir el nom del sòcol: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "FTPFS: no s'ha pogut tornar a connectar amb el servidor" + msgid "ftpfs: invalid address family" -msgstr "ftpfs: família d'adreces no vàlida" +msgstr "FTPFS: família d'adreces no vàlida" #, c-format msgid "ftpfs: could not create socket: %s" -msgstr "ftpfs: no s'ha pogut crear el sòcol: %s" +msgstr "FTPFS: no s'ha pogut crear el sòcol: %s" msgid "ftpfs: could not setup passive mode" -msgstr "ftpfs: no s'ha pogut establir el mode passiu" +msgstr "FTPFS: no s'ha pogut establir el mode passiu" msgid "ftpfs: aborting transfer." -msgstr "ftpfs: s'està interrompent la transferència." +msgstr "FTPFS: s'està interrompent la transferència." #, c-format msgid "ftpfs: abort error: %s" -msgstr "ftpfs: s'ha produït un error en interrompre: %s" +msgstr "FTPFS: s'ha produït un error en interrompre: %s" msgid "ftpfs: abort failed" -msgstr "ftpfs: ha fallat en interrompre" +msgstr "FTPFS: ha fallat en interrompre" msgid "ftpfs: CWD failed." -msgstr "ftpfs: ha fallat l'ordre CWD." +msgstr "FTPFS: ha fallat l'ordre CWD." msgid "ftpfs: couldn't resolve symlink" -msgstr "ftpfs: no puc identificar l'enllaç simbòlic" +msgstr "FTPFS: no puc identificar l'enllaç simbòlic" msgid "Resolving symlink..." msgstr "S'està identificant l'enllaç simbòlic..." #, c-format msgid "ftpfs: Reading FTP directory %s... %s%s" -msgstr "ftpfs: S'està llegint el directori FTP %s... %s%s" +msgstr "FTPFS: S'està llegint el directori FTP %s... %s%s" msgid "(strict rfc959)" msgstr "(rfc959 estricte)" @@ -4333,10 +4359,10 @@ msgid "(chdir first)" msgstr "(primer canvia de directori)" msgid "ftpfs: failed; nowhere to fallback to" -msgstr "ftpfs: ha fallat; enlloc per retornar-hi" +msgstr "FTPFS: ha fallat; enlloc per a retornar-hi" msgid "ftpfs: storing file" -msgstr "ftpfs: s'està emmagatzemant el fitxer" +msgstr "FTPFS: s'està emmagatzemant el fitxer" msgid "" "~/.netrc file has incorrect mode\n" @@ -4467,17 +4493,17 @@ msgstr "SFTP: ha fallat en verificar la clau de l'amfitrió" #, c-format msgid "sftp: Enter passphrase for %s " -msgstr "sftp: introduïu la frase de contrasenya per a %s " +msgstr "sftp: introduïu la frase de pas per a %s " msgid "sftp: Passphrase is empty." -msgstr "sftp: la frase de contrasenya és buida." +msgstr "sftp: la frase de pas està buida." #, c-format msgid "sftp: Enter password for %s " msgstr "sftp: introduïu la contrasenya per a %s " msgid "sftp: Password is empty." -msgstr "sftp: la contrasenya és buida." +msgstr "sftp: la contrasenya està buida." msgid "sftp: failure establishing SSH session" msgstr "SFTP: ha fallat en establir la sessió SSH" @@ -4506,10 +4532,10 @@ msgstr "" "%s" msgid "Inconsistent tar archive" -msgstr "L'arxiu TAR no és consistent" +msgstr "L'arxiu TAR no és coherent" msgid "Unexpected EOF on archive file" -msgstr "Fí de fitxer inesperat al fitxer d'arxiu" +msgstr "Fi de fitxer inesperat al fitxer d'arxiu" #, c-format msgid "" @@ -4546,7 +4572,7 @@ msgid "while calling ext2_block_iterate %d" msgstr "mentre es crida a ext2_block_iterate %d" msgid "no more memory while reallocating array" -msgstr "s'ha esgotat la memòria mentre és reassignaba la taula" +msgstr "s'ha esgotat la memòria mentre és reassignava la taula" #, c-format msgid "while doing inode scan %d" @@ -4582,7 +4608,7 @@ msgid "vfs_info is not fs!" msgstr "vfs_info no és un FS!" msgid "You have to chdir to extract files first" -msgstr "Primer haureu de canviar el directori per extreure els fitxers" +msgstr "Primer haureu de canviar al directori per a extreure els fitxers" msgid "while iterating over blocks" msgstr "mentre s'iterava entre els blocs" @@ -4592,13 +4618,13 @@ msgid "Cannot open file \"%s\"" msgstr "No s'ha pogut obrir el fitxer «%s»" msgid "Ext2lib error" -msgstr "Error de la ext2lib" +msgstr "Error de la «ext2lib»" msgid "Invalid value" msgstr "Valor no vàlid" msgid "File was modified. Save with exit?" -msgstr "El fitxer ha estat modificat. El deso abans de sortir?" +msgstr "El fitxer ha estat modificat. Voleu desar-lo abans de sortir?" msgid "&Cancel quit" msgstr "&Cancel·la la sortida" @@ -4608,7 +4634,7 @@ msgid "" "Save modified file?" msgstr "" "S'està sortint del Midnight Commander.\n" -"Deso el fitxer modificat?" +"Voleu desar el fitxer modificat?" msgid "&Line number" msgstr "Número de &línia" @@ -4623,7 +4649,7 @@ msgid "He&xadecimal offset" msgstr "Desplaçament en He&xadecimal" msgid "Goto" -msgstr "Vés a" +msgstr "Ves a" msgid "ButtonBar|Ascii" msgstr "ButtonBar|ASCII" @@ -4641,7 +4667,7 @@ msgid "ButtonBar|Hex" msgstr "ButtonBar|Hex" msgid "ButtonBar|Goto" -msgstr "ButtonBar|Vés a" +msgstr "ButtonBar|Ves a" msgid "ButtonBar|Raw" msgstr "ButtonBar|RAW" @@ -4682,7 +4708,7 @@ msgstr "" "%s" msgid "View: " -msgstr "Visualitza:" +msgstr "Visualitza: " #, c-format msgid "" @@ -4707,7 +4733,7 @@ msgid "Search done" msgstr "Cerca finalitzada" msgid "Continue from beginning?" -msgstr "Continuo des del començament?" +msgstr "Voleu continuar des del començament?" msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt" msgstr "" diff --git a/mcsrc/po/cs.po b/mcsrc/po/cs.po index 6af3d4bb..e8de5f7a 100644 --- a/mcsrc/po/cs.po +++ b/mcsrc/po/cs.po @@ -4,19 +4,19 @@ # # Translators: # Jiří Vírava , 2015,2017 -# k3dar , 2020-2021 +# kEdAR, 2020-2021 # Karel Kopecky , 2017 -# Pavel Borecki , 2017-2021 +# Pavel Borecki , 2017-2022 # Radek Valášek , 2014 # Robin Kriebel , 2016 # Slava Zanko , 2011 msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Pavel Borecki , 2017-2021\n" +"Last-Translator: Pavel Borecki , 2017-2022\n" "Language-Team: Czech (http://www.transifex.com/mc/mc/language/cs/)\n" "Language: cs\n" "MIME-Version: 1.0\n" @@ -537,6 +537,9 @@ msgstr "" "NeÄekaná chyba v select() Ätoucím data z podprocesu:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Nedaří se zavřít popisovaÄ pajpy (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1212,8 +1215,8 @@ msgstr "Nejprve je tÅ™eba oznaÄit blok textu" msgid "Run sort" msgstr "Spustit třídÄ›ní" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Zadejte pÅ™edvolby pro třídÄ›ní (viz man sort) oddÄ›lované mezerami:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "Zadejte pÅ™edvolby pro třídÄ›ní (viz man sort(1) ) oddÄ›lované mezerami:" msgid "Sort" msgstr "Setřídit" @@ -1630,7 +1633,7 @@ msgstr "" "napsaný pro Midnight Commander." msgid "Copyright (C) 1996-2022 the Free Software Foundation" -msgstr "" +msgstr "Autorská práva © 1996-2022 nadace Free Software Foundation" msgid "About" msgstr "O programu" @@ -2374,12 +2377,6 @@ msgstr "Soubory oznaÄeny, chcete pÅ™ejít do složky?" msgid "Cannot change directory" msgstr "Nedaří se pÅ™ejít do složky" -msgid "Filter" -msgstr "Filtr" - -msgid "Set expression for filtering filenames" -msgstr "Zadejte masku pro filtrování názvů souborů" - #, c-format msgid "Link %s to:" msgstr "Odkaz %s do:" @@ -2528,17 +2525,27 @@ msgstr "" msgid "Pipe failed" msgstr "pipe() se nezdaÅ™ilo" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"Máte zastaralý soubor %s.\n" +"Midnight Commander nyní používá soubor %s.\n" +"Zkopírujte si své úpravy původního souboru do toho nového." + #, c-format msgid " %s%s file error" msgstr " %s%s chyba souboru" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Formát souboru %smc.ext byl upraven verzí 3.0. Zdá se, že instalace se " +"Formát souboru %s%s byl upraven verzí 4.0. Zdá se, že instalace se " "nezdaÅ™ila. Nahrajte si novou aktuální kopii z balíÄku s Midnight Commander." #, c-format @@ -2547,10 +2554,10 @@ msgstr "%s chyba souboru" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Formát %s souboru se s verzí 3.0 zmÄ›nil. Můžete buÄ zkopírovat z %smc.ext " +"Formát %s souboru se s verzí 4.0 zmÄ›nil. Můžete ho buÄ zkopírovat z %s%s " "nebo tento soubor použít jako ukázku jak ho napsat." msgid "DialogTitle|Copy" @@ -2846,6 +2853,15 @@ msgstr "" msgid "(stalled)" msgstr "(zamrzlo)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Ponechat" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2862,12 +2878,6 @@ msgstr "" "Nelze zavřít cílový soubor „%s“\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Získaný soubor není kompletní. PÅ™esto uložit?" - -msgid "&Keep" -msgstr "&Ponechat" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2986,8 +2996,8 @@ msgid "Background process: File exists" msgstr "Proces na pozadí: soubor existuje" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Zpracované soubory: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3014,8 +3024,8 @@ msgid " Total: %s " msgstr " Celkem: %s " #, c-format -msgid " Total: %s/%s " -msgstr "Celkem: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Zdroj" @@ -3066,8 +3076,8 @@ msgstr "S&trom" msgid "&Listing format..." msgstr "&Formát výpisu…" -msgid "S&ort order..." -msgstr "P&oÅ™adí Å™azení" +msgid "&Sort order..." +msgstr "&PoÅ™adí Å™azení…" msgid "&Filter..." msgstr "&Filtr…" @@ -3081,8 +3091,8 @@ msgstr "FT&P spojení…" msgid "S&hell link..." msgstr "S&hell spojení…" -msgid "&SFTP link..." -msgstr "&SFTP odkaz" +msgid "SFTP li&nk..." +msgstr "&SFTP odkaz…" msgid "Paneli&ze" msgstr "Zobra&zit v panelu" @@ -3468,8 +3478,8 @@ msgid "No space information" msgstr "Informace o využití prostoru nejsou k dispozici" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Volné místo: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3717,6 +3727,9 @@ msgstr "VýbÄ›r" msgid "Unselect" msgstr "ZruÅ¡it výbÄ›r" +msgid "Filter" +msgstr "Filtr" + msgid "Do you really want to execute?" msgstr "Opravdu chcete spustit?" @@ -4030,7 +4043,7 @@ msgstr "Sestaveno s využitím ncursesw (neznámá verze)" #, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "" +msgstr "Sestaveno s libssh2 %d.%d.%d\n" msgid "Virtual File Systems:" msgstr "Virtuální souborové systémy:" @@ -4157,6 +4170,10 @@ msgstr "" "Soubor neoÄekávanÄ› konÄí\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Nekonzistentní archiv .tar" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4290,6 +4307,21 @@ msgstr "ftpfs: pÅ™ipojení k serveru se nezdaÅ™ilo: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "ÄŒekání na opakovaný pokus… %d (Storno CTRL+G)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: nepodaÅ™ilo se pÅ™eložit adresu na název: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: pokus o pÅ™ipojení k serveru, pokus %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: nepodaÅ™ilo se získat název soketu: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: nepodaÅ™ilo se opÄ›tovnÄ› pÅ™ipojit k serveru" + msgid "ftpfs: invalid address family" msgstr "ftpfs: neplatná generace adresy" diff --git a/mcsrc/po/da.po b/mcsrc/po/da.po index 744a258d..2e94d047 100644 --- a/mcsrc/po/da.po +++ b/mcsrc/po/da.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: scootergrisen, 2018-2020\n" "Language-Team: Danish (http://www.transifex.com/mc/mc/language/da/)\n" @@ -533,6 +533,9 @@ msgstr "" "Uventet fejl i select() læser data fra en underproces:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1208,8 +1211,8 @@ msgstr "Du skal først fremhæve en tekstblok" msgid "Run sort" msgstr "Udfør sortering" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Indtast sorteringsindstillinger (se manualside) adskilt af mellemrum:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Sortér" @@ -2370,12 +2373,6 @@ msgstr "Filer mærket, vil du skifte mappe?" msgid "Cannot change directory" msgstr "Kunne ikke skifte mappe" -msgid "Filter" -msgstr "Filter" - -msgid "Set expression for filtering filenames" -msgstr "Angiv udtryk til filtrering af filnavne" - #, c-format msgid "Link %s to:" msgstr "Henvis %s til:" @@ -2522,18 +2519,23 @@ msgstr "" msgid "Pipe failed" msgstr "Datakanal fejlede" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s-filfejl" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Formatet pÃ¥ filen %smc.ext er ændret med version 3.0. Installationen ser ud " -"til at have fejlet. Hent venligst en ny kopi fra Midnight Commander-pakken." #, c-format msgid "%s file error" @@ -2541,11 +2543,9 @@ msgstr "%s filfejl" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Formatet af %s-filen blev skiftet i version 3.0. Du kan enten kopiere den " -"fra %smc.ext eller bruge filen som et eksempel pÃ¥ hvordan den skrives." msgid "DialogTitle|Copy" msgstr "Kopiér" @@ -2840,6 +2840,15 @@ msgstr "" msgid "(stalled)" msgstr "(venter)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Behold" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2856,12 +2865,6 @@ msgstr "" "Kan ikke lukke mÃ¥lfil »%s«\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "En fil der ikke er komplet blev hentet ned. Behold den?" - -msgid "&Keep" -msgstr "&Behold" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2980,8 +2983,8 @@ msgid "Background process: File exists" msgstr "Baggrundproces: Fil findes" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Filer behandlet: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3008,8 +3011,8 @@ msgid " Total: %s " msgstr " Samlet: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Samlet: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Kilde" @@ -3060,7 +3063,7 @@ msgstr "&Træ" msgid "&Listing format..." msgstr "&Listeformat..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3075,7 +3078,7 @@ msgstr "FT&P-henvisning..." msgid "S&hell link..." msgstr "S&kalhenvisning..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3458,8 +3461,8 @@ msgid "No space information" msgstr "Ingen pladsinformation" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Ledig plads: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3703,6 +3706,9 @@ msgstr "Vælg" msgid "Unselect" msgstr "Fravælg" +msgid "Filter" +msgstr "Filter" + msgid "Do you really want to execute?" msgstr "Ønsker du virkelig at køre?" @@ -4137,6 +4143,10 @@ msgstr "" "Uventet EOF\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Inkonsistent tar-arkiv" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4264,6 +4274,21 @@ msgstr "ftpfs: Forbindelse til server mislykkedes: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Venter pÃ¥ at prøve igen... %d (Control-G for at annullere)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: Ugyldig adressefamilie" diff --git a/mcsrc/po/de.po b/mcsrc/po/de.po index 48cf3ac2..616c8fcd 100644 --- a/mcsrc/po/de.po +++ b/mcsrc/po/de.po @@ -5,7 +5,7 @@ # Translators: # Atha Translate, 2016 # cheese , 2016 -# Ettore Atalan , 2015-2021 +# Ettore Atalan , 2015-2022 # Fabian Affolter , 2012-2013 # Johannes Hellmuth , 2020 # Karsten , 2016 @@ -19,10 +19,10 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Ettore Atalan , 2015-2021\n" +"Last-Translator: Ettore Atalan , 2015-2022\n" "Language-Team: German (http://www.transifex.com/mc/mc/language/de/)\n" "Language: de\n" "MIME-Version: 1.0\n" @@ -545,6 +545,9 @@ msgstr "" "Prozess:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1225,8 +1228,8 @@ msgstr "Sie müssen zuerst einen Block oder Text markieren" msgid "Run sort" msgstr "Sortierung ausführen" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Sortieroptionen eingeben, mit Leerzeichen getrennt (siehe Man-Page):" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Sortieren" @@ -2385,12 +2388,6 @@ msgstr "Dateien markiert, Verzeichnis wechseln?" msgid "Cannot change directory" msgstr "Konnte Verzeichnis nicht wechseln" -msgid "Filter" -msgstr "Filter" - -msgid "Set expression for filtering filenames" -msgstr "Ausdruck zum Filtern von Dateinamen setzen" - #, c-format msgid "Link %s to:" msgstr "Link %s zu:" @@ -2537,19 +2534,23 @@ msgstr "" msgid "Pipe failed" msgstr "Pipe fehlgeschlagen" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " Fehler in der Datei %s%s " #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Das Format der Datei \"%smc.ext\" hat sich in Version 3.0 geändert. Die " -"Installation scheint fehlgeschlagen. Bitte holen Sie sich eine frische Kopie " -"aus dem \"Midnight Commander\"-Paket." #, c-format msgid "%s file error" @@ -2557,12 +2558,9 @@ msgstr "%s Dateifehler" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Das Format der Datei %s hat sich mit Version 3.0 geändert. Entweder eine " -"Kopie von %smc.ext erstellen oder diese Datei als Vorlage für eigene " -"Einstellungen verwenden." msgid "DialogTitle|Copy" msgstr "DialogTitle|Kopieren" @@ -2857,6 +2855,15 @@ msgstr "" msgid "(stalled)" msgstr "(blockiert)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Behalten" + +msgid "&Continue copy" +msgstr "Kopieren &fortsetzen" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2873,12 +2880,6 @@ msgstr "" "Kann Zieldatei \"%s\" nicht schließen\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Unvollständige Datei empfangen. Behalten?" - -msgid "&Keep" -msgstr "&Behalten" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2997,8 +2998,8 @@ msgid "Background process: File exists" msgstr "Hintergrundprozess: Datei schon vorhanden" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Verarbeitete Dateien: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "Verarbeitete Dateien: %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3022,11 +3023,11 @@ msgstr "Zeit: %s (%s)" #, c-format msgid " Total: %s " -msgstr " Total: %s " +msgstr " Insgesamt: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Total: %s/%s " +msgid " Total: %s / %s " +msgstr " Insgesamt: %s / %s " msgid "Source" msgstr "Quelle" @@ -3077,8 +3078,8 @@ msgstr "&Baum" msgid "&Listing format..." msgstr "&Listenformat..." -msgid "S&ort order..." -msgstr "" +msgid "&Sort order..." +msgstr "&Sortierreihenfolge..." msgid "&Filter..." msgstr "&Filter..." @@ -3092,8 +3093,8 @@ msgstr "FT&P-Verbindung..." msgid "S&hell link..." msgstr "S&hell-Verbindung..." -msgid "&SFTP link..." -msgstr "" +msgid "SFTP li&nk..." +msgstr "SFTP-Verbi&ndung..." msgid "Paneli&ze" msgstr "Anordnen" @@ -3475,8 +3476,8 @@ msgid "No space information" msgstr "Keine Information über Speicherplatz" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Freier Platz: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "Freier Platz: %s / %s (%d%%)" #, c-format msgid "Type: %s" @@ -3720,6 +3721,9 @@ msgstr "Auswahl" msgid "Unselect" msgstr "Deselektieren" +msgid "Filter" +msgstr "Filter" + msgid "Do you really want to execute?" msgstr "Möchten Sie wirklich ausführen?" @@ -3752,6 +3756,8 @@ msgid "" "External panelize:\n" "%s" msgstr "" +"Externes Anordnen:\n" +"%s" #, c-format msgid "" @@ -4026,7 +4032,7 @@ msgstr "Gebaut mit ncursesw (unbekannte Version)" #, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "" +msgstr "Gebaut mit libssh2 %d.%d.%d\n" msgid "Virtual File Systems:" msgstr "Virtuelles Dateisystem:" @@ -4155,6 +4161,10 @@ msgstr "" "Unerwartetes Ende der Datei\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Inkonsistentes tar-Archiv" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4289,6 +4299,21 @@ msgstr "ftpfs: Verbindung zum Server fehlgeschlagen: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Warte bis zum nächsten Versuch... %d (Strg+G zum Abbrechen)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: Verbindung zum Server konnte nicht wiederhergestellt werden" + msgid "ftpfs: invalid address family" msgstr "ftpfs: Ungültige Rechneradresse" @@ -4447,7 +4472,7 @@ msgstr "" "die Verbindung fortsetzen möchten?" msgid "sftp: host key verification failed" -msgstr "" +msgstr "sftp: Verifizierung des Hostschlüssels fehlgeschlagen" #, c-format msgid "sftp: Enter passphrase for %s " diff --git a/mcsrc/po/de_CH.po b/mcsrc/po/de_CH.po index 446434a5..b736b06a 100644 --- a/mcsrc/po/de_CH.po +++ b/mcsrc/po/de_CH.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2015-02-26 09:48+0000\n" "Last-Translator: Piotr DrÄ…g \n" "Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/mc/" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3256,7 +3263,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3501,6 +3508,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3889,6 +3899,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4016,6 +4029,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/el.po b/mcsrc/po/el.po index 3f348866..00746b78 100644 --- a/mcsrc/po/el.po +++ b/mcsrc/po/el.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Efstathios Iosifidis , 2015\n" "Language-Team: Greek (http://www.transifex.com/mc/mc/language/el/)\n" @@ -512,6 +512,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1148,7 +1151,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2291,12 +2294,6 @@ msgstr "" msgid "Cannot change directory" msgstr "Αδυναμία αλλαγής καταλόγου" -msgid "Filter" -msgstr "ΦίλτÏο" - -msgid "Set expression for filtering filenames" -msgstr "ΡÏθμιση έκφÏασης για φιλτÏάÏισμα ονομάτων αÏχείων" - #, c-format msgid "Link %s to:" msgstr "Δεσμός %s σε:" @@ -2441,19 +2438,23 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "Σφάλμα αÏχείου %s%s" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Η μοÏφή του αÏχείου %smc.ext άλλαξε με την έκδοση 3.0. Φαίνεται ότι η " -"εγκατάσταση απέτυχε. ΠαÏακαλοÏμε λάβετε ένα νέο αντίγÏαφο του πακέτου του " -"Midnight Commander." #, c-format msgid "%s file error" @@ -2461,12 +2462,9 @@ msgstr "Σφάλμα αÏχείου %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Η μοÏφή του αÏχείου %s άλλαξε με την έκδοση 3.0. Ίσως θέλετε να το " -"αντιγÏάψετε από %smc.ext ή να χÏησιμοποιήσετε εκείνο το αÏχείο ως παÏάδειγμα " -"για το πως να το γÏάψετε." msgid "DialogTitle|Copy" msgstr "ΤίτλοςΔιαλόγου|ΑντιγÏαφή" @@ -2732,6 +2730,15 @@ msgstr "" msgid "(stalled)" msgstr "(σταμάτησε)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&ΔιατήÏηση" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2748,12 +2755,6 @@ msgstr "" "Αδυναμία κλεισίματος αÏχείου στόχου \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Ανακτήθηκε ατελές αÏχείο. Îα διατηÏηθεί;" - -msgid "&Keep" -msgstr "&ΔιατήÏηση" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2868,8 +2869,8 @@ msgid "Background process: File exists" msgstr "ΔιεÏγασία παÏασκηνίου:Το αÏχείο υπάÏχει" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "ΑÏχεία που Ï€Ïοσπελάστηκαν: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2896,8 +2897,8 @@ msgid " Total: %s " msgstr "ΣÏνολο: %s " #, c-format -msgid " Total: %s/%s " -msgstr "ΣÏνολο: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Πηγή" @@ -2948,7 +2949,7 @@ msgstr "&ΔέντÏο" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2963,7 +2964,7 @@ msgstr "Δεσμος FT&P..." msgid "S&hell link..." msgstr "Δεσμος κε&λÏφους..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3344,8 +3345,8 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "ΕλεÏθεÏος χώÏος: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3589,6 +3590,9 @@ msgstr "Επιλογή" msgid "Unselect" msgstr "Αποεπιλογή" +msgid "Filter" +msgstr "ΦίλτÏο" + msgid "Do you really want to execute?" msgstr "ΣίγουÏα θέλετε να γίνει εκτέλεση;" @@ -4002,6 +4006,10 @@ msgstr "" "ΑπÏοσδόκητο τέλος αÏχείου\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Χαλασμένη αÏχειοθήκη tar" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4130,6 +4138,21 @@ msgstr "ftpfs: ανεπιτυχής σÏνδεση με τον εξυπηÏέτ msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Αναμονή επαναπÏοσπάθειας... %d (Control-G για ακÏÏωση)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: μη έγκυÏη οικογένεια διευθÏνσεων" diff --git a/mcsrc/po/en_GB.po b/mcsrc/po/en_GB.po index 17de1860..e36ab66d 100644 --- a/mcsrc/po/en_GB.po +++ b/mcsrc/po/en_GB.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the mc package. # # Translators: -# Andi Chandler , 2016-2017,2020 +# Andi Chandler , 2016-2017,2020,2022 msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Andi Chandler , 2016-2017,2020\n" +"Last-Translator: Andi Chandler , 2016-2017,2020,2022\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/mc/mc/" "language/en_GB/)\n" "Language: en_GB\n" @@ -180,103 +180,103 @@ msgid "Function key 1" msgstr "Function key 1" msgid "Function key 2" -msgstr "" +msgstr "Function key 2" msgid "Function key 3" -msgstr "" +msgstr "Function key 3" msgid "Function key 4" -msgstr "" +msgstr "Function key 4" msgid "Function key 5" -msgstr "" +msgstr "Function key 5" msgid "Function key 6" -msgstr "" +msgstr "Function key 6" msgid "Function key 7" -msgstr "" +msgstr "Function key 7" msgid "Function key 8" -msgstr "" +msgstr "Function key 8" msgid "Function key 9" -msgstr "" +msgstr "Function key 9" msgid "Function key 10" -msgstr "" +msgstr "Function key 10" msgid "Function key 11" -msgstr "" +msgstr "Function key 11" msgid "Function key 12" -msgstr "" +msgstr "Function key 12" msgid "Function key 13" -msgstr "" +msgstr "Function key 13" msgid "Function key 14" -msgstr "" +msgstr "Function key 14" msgid "Function key 15" -msgstr "" +msgstr "Function key 15" msgid "Function key 16" -msgstr "" +msgstr "Function key 16" msgid "Function key 17" -msgstr "" +msgstr "Function key 17" msgid "Function key 18" -msgstr "" +msgstr "Function key 18" msgid "Function key 19" -msgstr "" +msgstr "Function key 19" msgid "Function key 20" -msgstr "" +msgstr "Function key 20" msgid "Completion/M-tab" -msgstr "" +msgstr "Completion/M-tab" msgid "BackTab/S-tab" -msgstr "" +msgstr "BackTab/S-tab" msgid "Backspace" -msgstr "" +msgstr "Backspace" msgid "Up arrow" -msgstr "" +msgstr "Up arrow" msgid "Down arrow" -msgstr "" +msgstr "Down arrow" msgid "Left arrow" msgstr "" msgid "Right arrow" -msgstr "" +msgstr "Right arrow" msgid "Insert" -msgstr "" +msgstr "Insert" msgid "Delete" -msgstr "" +msgstr "Delete" msgid "Home" -msgstr "" +msgstr "Home" msgid "End key" -msgstr "" +msgstr "End key" msgid "Page Up" -msgstr "" +msgstr "Page Up" msgid "Page Down" -msgstr "" +msgstr "Page Down" msgid "/ on keypad" -msgstr "" +msgstr "/ on keypad" msgid "* on keypad" msgstr "" @@ -519,6 +519,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1142,7 +1145,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2277,12 +2280,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2423,14 +2420,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2440,8 +2444,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2676,6 +2680,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2688,12 +2701,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2800,7 +2807,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2828,7 +2835,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2880,7 +2887,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2895,7 +2902,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3274,7 +3281,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3519,6 +3526,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3907,6 +3917,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4034,6 +4047,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/eo.po b/mcsrc/po/eo.po index 609e52a3..dee0eda0 100644 --- a/mcsrc/po/eo.po +++ b/mcsrc/po/eo.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Yury V. Zaytsev , 2022\n" "Language-Team: Esperanto (http://www.transifex.com/mc/mc/language/eo/)\n" @@ -530,6 +530,9 @@ msgstr "" "Neatendita eraro en select() leginte datumojn el ida procezo:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Ne eblas fermi duktan priskribilon (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1207,9 +1210,10 @@ msgstr "Vi devas antaÅ­e elekti blokon da teksto" msgid "Run sort" msgstr "Rula ordigo" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Enmetu ordigajn agordaĵon (vidu man-paÄon) apartigante per blankospacoj:" +"Enmetu ordigajn agordaĵon (vidu la man-elementon sort(1)) apartigante ilin " +"per blankspacoj:" msgid "Sort" msgstr "Ordigi" @@ -2369,12 +2373,6 @@ msgstr "Dosieroj markitaj, ĉu vi volas al ÅanÄi la dosierujon?" msgid "Cannot change directory" msgstr "Ne eblas ÅanÄi dosierujon" -msgid "Filter" -msgstr "Filtri" - -msgid "Set expression for filtering filenames" -msgstr "Agordi esprimon por filtri dosiernomojn" - #, c-format msgid "Link %s to:" msgstr "Ligi je %s al:" @@ -2521,18 +2519,28 @@ msgstr "" msgid "Pipe failed" msgstr "Dukto malsukcesis" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"Vi havas malaktualan dosieron %s.\n" +"Midnight Cammander now uzas la dosieron %s.\n" +"Bonvolu kopii viajn modifojn de la malnova dosiero al la nova." + #, c-format msgid " %s%s file error" msgstr " %s%s: dosiera eraro" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"La aranÄo de la dosiero %smc.ext ÅanÄiÄis en eldono 3.0. Åœajne la instalado " -"malsukcesis. Bonvolu havigi al vi freÅan ekzempleron de la pako Midnight " +"La aranÄo de la dosiero %s%s ÅanÄiÄis en eldono 4.0. Åœajne la instalado " +"malsukcesis. Bonvolu havigi al vi freÅan ekzempleron de la pakaĵo Midnight " "Commander." #, c-format @@ -2541,11 +2549,11 @@ msgstr "%s dosiera eraro" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"La aranÄo de la dosiero %s ÅanÄiÄis en eldono 3.0. Vi eble povos aÅ­ kopii " -"Äin el %smc.txt aÅ­ uzi tiun dosieron kiel ekzemplon." +"La aranÄo de la dosiero %s ÅanÄiÄis en eldono 4.0. Vi eble povos aÅ­ kopii " +"Äin el %s%s aÅ­ uzi tiun dosieron kiel ekzemplon pri kiel skribi Äin." msgid "DialogTitle|Copy" msgstr "DialogTitle|Kopii" @@ -2839,6 +2847,15 @@ msgstr "" msgid "(stalled)" msgstr "(paÅ­zinta)" +msgid "Incomplete file was retrieved" +msgstr "Nekompleta dosiero estis akirita" + +msgid "&Keep" +msgstr "&Teni" + +msgid "&Continue copy" +msgstr "D&aÅ­rigi kopii" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2855,12 +2872,6 @@ msgstr "" "Ne eblas fermi celan dosieron \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Nekompleta dosiero estis akirita. Ĉu teni Äin?" - -msgid "&Keep" -msgstr "&Teni" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2979,8 +2990,8 @@ msgid "Background process: File exists" msgstr "Fona procezo: Dosiero ekzistas" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Dosieroj traktitaj: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "Dosieroj traktitaj: %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3007,7 +3018,7 @@ msgid " Total: %s " msgstr " Kiomo: %s " #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr " Kiomo: %s el %s " msgid "Source" @@ -3059,8 +3070,8 @@ msgstr "&Arbo" msgid "&Listing format..." msgstr "&Listo-aranÄo..." -msgid "S&ort order..." -msgstr "&Ordigi laÅ­..." +msgid "&Sort order..." +msgstr "&Ordiga ordo..." msgid "&Filter..." msgstr "&Filtri..." @@ -3074,7 +3085,7 @@ msgstr "FT&P-ligilo..." msgid "S&hell link..." msgstr "Åœ&ela ligilo..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "&SFTP-ligilo..." msgid "Paneli&ze" @@ -3457,7 +3468,7 @@ msgid "No space information" msgstr "Neniuj spacaj informoj" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "Restanta spaco: %s el %s (%d%%)" #, c-format @@ -3702,6 +3713,9 @@ msgstr "Elekti" msgid "Unselect" msgstr "Malelekti" +msgid "Filter" +msgstr "Filtri" + msgid "Do you really want to execute?" msgstr "Ĉu vi efekti volas plenumigi?" @@ -4141,6 +4155,10 @@ msgstr "" "Neatendita dosierfino\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Malkonsekvenca tar-dosiero" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4273,6 +4291,21 @@ msgstr "ftpfs: konekto al servilo fiaskis: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Atendanta por reprovi... %d (Stirklavo-G por nuligi)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: ne eblas krei adreso-al-noman traduko: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: provo rekonektiÄi al servilo, provo %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: ne eblas akiri konektingan nomon: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: ne eblas rekonektiÄi al servilo" + msgid "ftpfs: invalid address family" msgstr "ftpfs: nevalida familio" diff --git a/mcsrc/po/es.po b/mcsrc/po/es.po index a6c49024..29bec9f3 100644 --- a/mcsrc/po/es.po +++ b/mcsrc/po/es.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Slava Zanko , 2011\n" "Language-Team: Spanish (http://www.transifex.com/mc/mc/language/es/)\n" @@ -21,7 +21,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -534,6 +535,9 @@ msgstr "" "Error inesperado en select() leyendo datos del proceso hijo:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Imposible cerrar descriptor de tubería (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1214,8 +1218,8 @@ msgstr "Es necesario tener un bloque seleccionado" msgid "Run sort" msgstr "Ordenar bloque de texto" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Opciones para «sort» (ver manual), separadas por espacios:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "Opciones para «sort» (ver manual sort(1)), separadas por espacios:" msgid "Sort" msgstr "Ordenar" @@ -2375,12 +2379,6 @@ msgstr "Hay archivos marcados. ¿Quiere cambiar de directorio?" msgid "Cannot change directory" msgstr "Imposible cambiar de directorio" -msgid "Filter" -msgstr "Filtro" - -msgid "Set expression for filtering filenames" -msgstr "Teclee la expresión para filtrar nombres de archivo" - #, c-format msgid "Link %s to:" msgstr "Crear enlace a %s como:" @@ -2527,20 +2525,29 @@ msgstr "" msgid "Pipe failed" msgstr "Fallo en la tubería" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"Tiene un archivo %s obsoleto.\n" +"Midnight Commander usa ahora el archivo %s. Por favor,\n" +"copie las modificaciones realizadas al nuevo." + #, c-format msgid " %s%s file error" msgstr " error en el archivo %s%s " #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"El archivo %smc.ext ha cambiado con la versión 3.0.\n" -"Parece que la instalación falló. Por favor, trate\n" -"de conseguir una copia intacta con el paquete del\n" -"Midnight Commander." +"El formato del archivo %s%s ha cambiado con la versión 4.0.\n" +"Parece que la instalación falló. Por favor, trate de conseguir\n" +"una copia intacta del paquete de Midnight Commander." #, c-format msgid "%s file error" @@ -2548,11 +2555,11 @@ msgstr "error en el archivo %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"El formato del archivo %s ha cambiado con la versión 3.0. Puede hacer una " -"copia de %smc.ext o bien emplearlo como modelo." +"El formato del archivo %s ha cambiado con la versión 4.0. Puede hacer una " +"copia de %s%s o bien emplearlo como modelo." msgid "DialogTitle|Copy" msgstr "Copiar" @@ -2846,6 +2853,15 @@ msgstr "" msgid "(stalled)" msgstr "(bloqueado)" +msgid "Incomplete file was retrieved" +msgstr "El archivo descargado está incompleto" + +msgid "&Keep" +msgstr "&Mantener" + +msgid "&Continue copy" +msgstr "&Continuar copia" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2862,12 +2878,6 @@ msgstr "" "Imposible cerrar el archivo destino «%s»\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "El archivo está incompleto. ¿Desea conservarlo?" - -msgid "&Keep" -msgstr "&Mantener" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2986,8 +2996,8 @@ msgid "Background process: File exists" msgstr "Proceso en 2º plano: El archivo ya existe" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Archivos procesados: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "Archivos procesados: %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3014,8 +3024,8 @@ msgid " Total: %s " msgstr " Total: %s " #, c-format -msgid " Total: %s/%s " -msgstr "Total: %s/%s" +msgid " Total: %s / %s " +msgstr "Total: %s / %s" msgid "Source" msgstr "Origen" @@ -3066,7 +3076,7 @@ msgstr "ár&Bol" msgid "&Listing format..." msgstr "for&Mato de listado..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "&Ordenar..." msgid "&Filter..." @@ -3081,7 +3091,7 @@ msgstr "conexión por FT&P..." msgid "S&hell link..." msgstr "conexión por SS&H..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "conexión por SF&TP..." msgid "Paneli&ze" @@ -3236,6 +3246,7 @@ msgid "You have %zu opened screen. Quit anyway?" msgid_plural "You have %zu opened screens. Quit anyway?" msgstr[0] "Hay %zu pantalla abierta. ¿Desea realmente salir?" msgstr[1] "Hay %zu pantallas abiertas. ¿Desea realmente salir?" +msgstr[2] "Hay %zu pantallas abiertas. ¿Desea realmente salir?" msgid "The Midnight Commander" msgstr "The Midnight Commander" @@ -3337,6 +3348,7 @@ msgid "Finished (ignored %zu directory)" msgid_plural "Finished (ignored %zu directories)" msgstr[0] "Terminado (%zu directorio ignorado)" msgstr[1] "Terminado (%zu directorios ignorados)" +msgstr[2] "Terminado (%zu directorios ignorados)" #, c-format msgid "Find File: \"%s\". Content: \"%s\"" @@ -3464,8 +3476,8 @@ msgid "No space information" msgstr "Espacio libre desconocido" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Espacio libre: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "Espacio libre: %s / %s (%d%%)" #, c-format msgid "Type: %s" @@ -3508,6 +3520,7 @@ msgid " (%lu block)" msgid_plural " (%lu blocks)" msgstr[0] " (%lu bloque)" msgstr[1] " (%lu bloques)" +msgstr[2] " (%lu bloques)" #, c-format msgid "Owner: %s/%s" @@ -3690,6 +3703,7 @@ msgid "%s in %d file" msgid_plural "%s in %d files" msgstr[0] "%s en %d archivo" msgstr[1] "%s en %d archivos" +msgstr[2] "%s en %d archivos" msgid "Panelize" msgstr "Búsqueda externa" @@ -3709,6 +3723,9 @@ msgstr "Seleccionar grupo" msgid "Unselect" msgstr "De-seleccionar grupo" +msgid "Filter" +msgstr "Filtro" + msgid "Do you really want to execute?" msgstr "¿Realmente quiere ejecutar?" @@ -4147,6 +4164,10 @@ msgstr "" "Fin de archivo inesperado\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Archivo de tipo tar inconsistente" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4279,6 +4300,21 @@ msgstr "ftpfs: Conexión al servidor fracasó: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Esperando antes de insistir... %d (Ctrl-G para cancelar)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: Imposible traducir dirección a nombre: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: Intento de reconexión %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: Imposible obtener nombre de socket: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: Imposible reconectar con el servidor" + msgid "ftpfs: invalid address family" msgstr "ftpfs: Familia de direcciones incorrecta" diff --git a/mcsrc/po/et.po b/mcsrc/po/et.po index fc27fc42..cbfbf677 100644 --- a/mcsrc/po/et.po +++ b/mcsrc/po/et.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Priit Jõerüüt , 2020-2021\n" "Language-Team: Estonian (http://www.transifex.com/mc/mc/language/et/)\n" @@ -527,6 +527,9 @@ msgstr "" "Ootamatu viga tütarprotsessist andmete lugemisel funktsioonis select():\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1203,8 +1206,8 @@ msgstr "Esmalt vali tekstiplokk" msgid "Run sort" msgstr "Räivita sortimine" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Sisesta sortimise suvandid tühikutega eraldatult (vaata manuaali):" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Sorteeri" @@ -2358,12 +2361,6 @@ msgstr "Failid märgitud, soovid kataloogi vahetada?" msgid "Cannot change directory" msgstr "Kataloogi vahetamine nurjus" -msgid "Filter" -msgstr "Filter" - -msgid "Set expression for filtering filenames" -msgstr "Määra failinimede filtri väljend" - #, c-format msgid "Link %s to:" msgstr "Loo link %s:" @@ -2510,18 +2507,23 @@ msgstr "" msgid "Pipe failed" msgstr "Funktsioon pipe nurjus" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "%s%s faili viga" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Versiooniga 3.0 muutus faili %smc.ext vormindus. Tundub, et paigaldus ei " -"õnnestunud. Palun hangi uus koopia Midnight Commanderi paketist." #, c-format msgid "%s file error" @@ -2529,11 +2531,9 @@ msgstr "%s faili viga" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Faili %s vormindus muutus versioonis 3.0. Sa võiksid kas kopeerida faili " -"%smc.ext või kasutada seda faili tooriku näidisena." msgid "DialogTitle|Copy" msgstr "DialogTitle|Kopeerimine" @@ -2827,6 +2827,15 @@ msgstr "" msgid "(stalled)" msgstr "(seiskunud)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Hoia" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2843,12 +2852,6 @@ msgstr "" "Sihtfaili \"%s\" sulgemine nurjus\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Saadi lõpetamata fail. Kas hoida see alles?" - -msgid "&Keep" -msgstr "&Hoia" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2967,8 +2970,8 @@ msgid "Background process: File exists" msgstr "Taustaprotsess: Fail on olemas" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Faile töödeldud: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2995,8 +2998,8 @@ msgid " Total: %s " msgstr "Kokku: %s" #, c-format -msgid " Total: %s/%s " -msgstr "Kokku: %s/%s" +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Lähtekoht" @@ -3047,7 +3050,7 @@ msgstr "&Puu" msgid "&Listing format..." msgstr "&Loendi vormindus" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3062,7 +3065,7 @@ msgstr "F&TP ühendus..." msgid "S&hell link..." msgstr "K&esta ühendus..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3445,8 +3448,8 @@ msgid "No space information" msgstr "Puudub mahu informatsioon" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Vaba ruum: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3690,6 +3693,9 @@ msgstr "Vali" msgid "Unselect" msgstr "Tühista valik" +msgid "Filter" +msgstr "Filter" + msgid "Do you really want to execute?" msgstr "Kas sa soovid tõesti käivitada?" @@ -4123,6 +4129,10 @@ msgstr "" "Ootamatu faili lõpp\n" " %s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Tar arhiiv sisaldab vasturääkivusi" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4255,6 +4265,21 @@ msgstr "ftpfs: ühendus serveriga nurjus: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Oodatakse kordamist... %d (Ctrl-G tühistab)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: vigane aadressi perekond" diff --git a/mcsrc/po/eu.po b/mcsrc/po/eu.po index db6e83cc..5415d2aa 100644 --- a/mcsrc/po/eu.po +++ b/mcsrc/po/eu.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Iñigo Salvador Azurmendi , " "2011,2015-2019\n" @@ -525,6 +525,9 @@ msgstr "" "Ustekabeko errorea select()-ean ume prozesutik datuak irakurtzean:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1202,10 +1205,8 @@ msgstr "Aurrena testu bloke bat nabarmendu behar duzu" msgid "Run sort" msgstr "Exekutatu \"sort\"" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Sartu sailkatzeko aukerak (begiratu eskuliburu (\"man\") orrialdea) zuriune " -"bitartez banatuta:" msgid "Sort" msgstr "Sailkatu" @@ -2361,12 +2362,6 @@ msgstr "Fitxategiak hautatuta, direktoria aldatu nahi?" msgid "Cannot change directory" msgstr "Direktorioa ezin aldatu" -msgid "Filter" -msgstr "Iragazi" - -msgid "Set expression for filtering filenames" -msgstr "Ezarri fitxategi izenak iragazteko adierazpena" - #, c-format msgid "Link %s to:" msgstr "Estekatu %s hona:" @@ -2513,19 +2508,23 @@ msgstr "" msgid "Pipe failed" msgstr "Hodiak huts egin du" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s fitxategi akatsa" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"%smc.ext fitxategiaren formatua aldatu egin da 3.0 bertsioarekin. " -"Instalatzeak huts egin duela diruri. Mesedez eskuratu kopia berri bat " -"Midnight Commander paketetik." #, c-format msgid "%s file error" @@ -2533,12 +2532,9 @@ msgstr "%s fitxategi akatsa" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"%s fitxategiaren formatua aldatu egin da 3.0 bertsioarekin. %smc.ext " -"fitxategitik kopiatu edo fitxategi hori nola idatzi adibide gisa erabili " -"nahi izan dezakezu." msgid "DialogTitle|Copy" msgstr "Kopiatu" @@ -2834,6 +2830,15 @@ msgstr "" msgid "(stalled)" msgstr "(trabatuta)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Gorde" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2850,12 +2855,6 @@ msgstr "" "Ezin da itxi \"%s\" helburu fitxategia\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Osatu gabeko fitxategia eskuratu da. Mantendu?" - -msgid "&Keep" -msgstr "&Gorde" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2974,8 +2973,8 @@ msgid "Background process: File exists" msgstr "Hondoko prozesua: Fitxategia existitzen da" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Prozesatutako fitxategiak: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3002,8 +3001,8 @@ msgid " Total: %s " msgstr " Guztira: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Guztira: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Iturburua" @@ -3054,7 +3053,7 @@ msgstr "Zu&haitza" msgid "&Listing format..." msgstr "&Zerrenda formatua" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3069,7 +3068,7 @@ msgstr "FT&P esteka..." msgid "S&hell link..." msgstr "S&hell esteka..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3452,8 +3451,8 @@ msgid "No space information" msgstr "Ez dago leku-informaziorik" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Leku askea: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3697,6 +3696,9 @@ msgstr "Hautatu" msgid "Unselect" msgstr "Hautua kendu" +msgid "Filter" +msgstr "Iragazi" + msgid "Do you really want to execute?" msgstr "Beneta exekutatu nahi duzu?" @@ -4128,6 +4130,10 @@ msgstr "" "Ustekabeko fitxategi bukaera\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "tar artxibo inkoherentea" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4256,6 +4262,21 @@ msgstr "ftpfs: zerbitzarirako konexioak huts egin du: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Berriz saiatzeko itxoiten... %d (Ctrl-G uzteko)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: baliogabeko helbide familia" diff --git a/mcsrc/po/fa.po b/mcsrc/po/fa.po index be581601..fa03a835 100644 --- a/mcsrc/po/fa.po +++ b/mcsrc/po/fa.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Arya Hadi , 2017\n" "Language-Team: Persian (http://www.transifex.com/mc/mc/language/fa/)\n" @@ -505,6 +505,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1128,7 +1131,7 @@ msgstr "" msgid "Run sort" msgstr "اجرای مرتب‌سازی" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2263,12 +2266,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "Ùیلتر" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2409,14 +2406,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2426,8 +2430,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2662,6 +2666,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2674,12 +2687,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2786,7 +2793,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2814,7 +2821,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2866,7 +2873,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2881,7 +2888,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3260,7 +3267,7 @@ msgid "No space information" msgstr "اطلاعات Ùاصله موجود نیست" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3505,6 +3512,9 @@ msgstr "انتخاب" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "Ùیلتر" + msgid "Do you really want to execute?" msgstr "" @@ -3893,6 +3903,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4020,6 +4033,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: خانواده آدرس‌های نامعتبر" diff --git a/mcsrc/po/fi.po b/mcsrc/po/fi.po index 2e876786..95771316 100644 --- a/mcsrc/po/fi.po +++ b/mcsrc/po/fi.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Kimmo Kujansuu , 2021\n" "Language-Team: Finnish (http://www.transifex.com/mc/mc/language/fi/)\n" @@ -532,6 +532,9 @@ msgstr "" "Odottamaton virhe select() luettaessa dataa aliprosessista:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1174,7 +1177,7 @@ msgstr "Sinun pitää ensin korostaa tekstin alue" msgid "Run sort" msgstr "Suorita lajittelu" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2315,12 +2318,6 @@ msgstr "Tiedostot merkitty, vaihdetaanko hakemisto?" msgid "Cannot change directory" msgstr "Ei voitu vaihtaa hakemistoa" -msgid "Filter" -msgstr "Suodata" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2461,14 +2458,21 @@ msgstr "" msgid "Pipe failed" msgstr "Virheellinen putki" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2478,8 +2482,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2750,6 +2754,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Pidä" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2766,12 +2779,6 @@ msgstr "" "Kohdetiedostoa ei voi sulkea \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "&Pidä" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2888,8 +2895,8 @@ msgid "Background process: File exists" msgstr "Taustaprosessi: Tiedosto saatavilla" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Käsitellyt tiedostot: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2916,8 +2923,8 @@ msgid " Total: %s " msgstr " Yhteensä: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Yhteensä: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Lähde" @@ -2968,7 +2975,7 @@ msgstr "&Puu" msgid "&Listing format..." msgstr "&Luettelomuoto..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2983,7 +2990,7 @@ msgstr "FT&P linkki..." msgid "S&hell link..." msgstr "S&hell linkki..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3362,7 +3369,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3607,6 +3614,9 @@ msgstr "Valitse" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "Suodata" + msgid "Do you really want to execute?" msgstr "" @@ -3995,6 +4005,9 @@ msgid "" "%s" msgstr "Odottaminen päättyminen tiedostossa %s" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4123,6 +4136,21 @@ msgstr "ftpfs: yhteys palvelimeen epäonnistui: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: Osoiteperhe ei ole validi" diff --git a/mcsrc/po/fr.po b/mcsrc/po/fr.po index 4445c52c..b6b066a2 100644 --- a/mcsrc/po/fr.po +++ b/mcsrc/po/fr.po @@ -12,24 +12,26 @@ # Slava Zanko , 2011 # 4a14a73d523224463300dea5e0502458_3dab472, 2012 # Towinet, 2017 +# Wallon Wallon, 2022 # Yury V. Zaytsev , 2016 msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: David Prudhomme , 2018,2021\n" +"Last-Translator: Wallon Wallon, 2022\n" "Language-Team: French (http://www.transifex.com/mc/mc/language/fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" -msgstr "Avertissement: impossible de charger la liste des pages de code" +msgstr "Avertissement : impossible de charger la liste des pages de code" msgid "7-bit ASCII" msgstr "ASCII 7 bits" @@ -39,24 +41,24 @@ msgid "Cannot translate from %s to %s" msgstr "Ne peut convertir de %s vers %s" msgid "Event system already initialized" -msgstr "Système d'évènement déjà initialisé" +msgstr "Système d'événement déjà initialisé" msgid "Failed to initialize event system" -msgstr "Echec de l'initialisation du système d'évènement" +msgstr "Échec de l'initialisation du système d'événement" msgid "Event system not initialized" -msgstr "Système d'évènement non initialisé" +msgstr "Système d'événement non initialisé" msgid "Check input data! Some of parameters are NULL!" -msgstr "Vérifiez les données d'entrée ! Certain paramètres sont NULL!" +msgstr "Vérifiez les données d'entrée ! Certains paramètres sont NULL !" #, c-format msgid "Unable to create group '%s' for events!" -msgstr "Impossible de créer le groupe « %s » pour les évènements !" +msgstr "Impossible de créer le groupe « %s » pour les événements !" #, c-format msgid "Unable to create event '%s'!" -msgstr "Impossible de créer l'évènement « %s » !" +msgstr "Impossible de créer l'événement « %s » !" #, c-format msgid "" @@ -82,7 +84,7 @@ msgid "Cannot create %s directory" msgstr "Ne peut créer le répertoire %s" msgid "FATAL: not a directory:" -msgstr "FATAL: n'est pas un répertoire :" +msgstr "FATAL : n'est pas un répertoire :" msgid "" "Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in " @@ -106,7 +108,7 @@ msgstr "" "%s." msgid "Search string not found" -msgstr " Chaîne non trouvée " +msgstr "Chaîne de recherche introuvable" msgid "Not implemented yet" msgstr "Pas encore implémenté" @@ -470,25 +472,31 @@ msgid "The TERM environment variable is unset!\n" msgstr "La variable d'environnement TERM n'est pas définie !\n" msgid "Cannot check SIGWINCH pipe" -msgstr "" +msgstr "Impossible de vérifier le tuyau SIGWINCH" #, c-format msgid "" "\n" "Cannot create pipe for SIGWINCH: %s (%d)\n" msgstr "" +"\n" +"Impossible de créer un tube pour SIGWINCH : %s (%d)\n" #, c-format msgid "" "\n" "Cannot configure write end of SIGWINCH pipe: %s (%d)\n" msgstr "" +"\n" +"Impossible de configurer la fin d'écriture du tuyau SIGWINCH : %s (%d)\n" #, c-format msgid "" "\n" "Cannot configure read end of SIGWINCH pipe: %s (%d)\n" msgstr "" +"\n" +"Impossible de configurer la fin de lecture du tuyau SIGWINCH : %s (%d)\n" #, c-format msgid "" @@ -534,6 +542,9 @@ msgstr "" "fils :\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Impossible de fermer le descripteur de tube (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1213,9 +1224,9 @@ msgstr "Vous devez d'abord sélectionner un bloc de texte" msgid "Run sort" msgstr " Lancer le tri" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -" Saisissez les options de tri (cf page de manuel) séparées par des espaces :" +"Entrer les options de tri (voir manpage sort(1)) séparées par des espaces :" msgid "Sort" msgstr " Trier" @@ -1632,7 +1643,7 @@ msgstr "" "écrit pour Midnight Commander." msgid "Copyright (C) 1996-2022 the Free Software Foundation" -msgstr "" +msgstr "Copyright (C) 1996-2022 la Free Software Foundation" msgid "About" msgstr "À propos" @@ -1797,6 +1808,8 @@ msgid "" "Not an xterm or Linux console;\n" "the subshell cannot be toggled." msgstr "" +"Pas un xterm ou une console Linux ;\n" +"le sous-shell ne peut pas être commuté." msgid "Type 'exit' to return to the Midnight Commander" msgstr "Tapez « exit » pour retourner à Midnight Commander" @@ -1951,7 +1964,7 @@ msgid "Skin:" msgstr "Thème :" msgid "&Shadows" -msgstr "" +msgstr "Ombre&s" msgid "Appearance" msgstr "Apparence" @@ -2172,79 +2185,79 @@ msgstr "" "%s" msgid "Secure deletion" -msgstr "" +msgstr "Suppression sécurisée" msgid "Undelete" -msgstr "" +msgstr "Annuler la suppression" msgid "Synchronous updates" -msgstr "" +msgstr "Mises à jour synchrones" msgid "Synchronous directory updates" -msgstr "" +msgstr "Mises à jour synchrones du répertoire" msgid "Immutable" -msgstr "" +msgstr "Immuable" msgid "Append only" -msgstr "" +msgstr "Ajout uniquement" msgid "No dump" -msgstr "" +msgstr "Pas pour dump" msgid "No update atime" -msgstr "" +msgstr "Pas de mise à jour atime" msgid "Compress" -msgstr "" +msgstr "Compresser" msgid "Compressed clusters" -msgstr "" +msgstr "Clusters compressés" msgid "Compressed dirty file" -msgstr "" +msgstr "Dirty file compressé" msgid "Compression raw access" -msgstr "" +msgstr "Compression raw access" msgid "Encrypted inode" -msgstr "" +msgstr "Inode crypté" msgid "Journaled data" -msgstr "" +msgstr "Données journalisées" msgid "Indexed directory" -msgstr "" +msgstr "Répertoire indexé" msgid "No tail merging" -msgstr "" +msgstr "Pas de fusion des fins de fichiers" msgid "Top of directory hierarchies" -msgstr "" +msgstr "Répertoire racine" msgid "Inode uses extents" -msgstr "" +msgstr "Inode utilise des formats étendus" msgid "Huge_file" -msgstr "" +msgstr "Gros_fichier" msgid "No COW" -msgstr "" +msgstr "Pas de COW - dirty copy-on-write -" msgid "Direct access for files" -msgstr "" +msgstr "Accès direct aux fichiers" msgid "Casefolded file" -msgstr "" +msgstr "Fichier \"casefoldé\"" msgid "Inode has inline data" -msgstr "" +msgstr "Inode a des données \"inline\"" msgid "Project hierarchy" -msgstr "" +msgstr "Hiérarchie du projet" msgid "Verity protected inode" -msgstr "" +msgstr "Inode protégé par Verity" msgid "&Marked all" msgstr "Tous &Marqués" @@ -2256,22 +2269,27 @@ msgid "C&lear marked" msgstr "&Supprimer les marqués" msgid "Chattr command" -msgstr "" +msgstr "Commande chattr" #, c-format msgid "" "Cannot chattr \"%s\"\n" "%s" msgstr "" +"Chattr impossible \"%s\"\n" +"%s" msgid "Cannot change attributes on non-local filesystems" msgstr "" +"Impossible de modifier les attributs sur les systèmes de fichiers non locaux" #, c-format msgid "" "Cannot get flags of \"%s\"\n" "%s" msgstr "" +"Impossible d'obtenir les drapeaux de \"%s\"\n" +"%s" msgid "set &user ID on execution" msgstr "définir l'ID &utilisateur à l'exécution" @@ -2369,12 +2387,6 @@ msgstr "Des fichiers sont marqués, voulez-vous changer de répertoire ?" msgid "Cannot change directory" msgstr " Ne peut changer de répertoire" -msgid "Filter" -msgstr "Filtre" - -msgid "Set expression for filtering filenames" -msgstr " Expression pour filtrer les noms des fichiers" - #, c-format msgid "Link %s to:" msgstr "Lien %s vers :" @@ -2521,18 +2533,29 @@ msgstr "" msgid "Pipe failed" msgstr " Échec du tube " +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"Vous avez un fichier %s obsolète.\n" +"Midnight Commander utilise maintenant le fichier %s.\n" +"Veuillez copier vos modifications de l'ancien fichier vers le nouveau." + #, c-format msgid " %s%s file error" msgstr "%s%s erreur de fichier" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Le format du fichier %smc.ext a été changé avec la version 3.0. Il semble " -"que l'installation ait échouée. Veullez mettre à jour Midnight Commander." +"Le format du fichier %s%s a changé avec la version 4.0. Il semble que " +"l'installation ait échoué. Veuillez récupérer une nouvelle copie à partir du " +"paquet Midnight Commander." #, c-format msgid "%s file error" @@ -2540,12 +2563,12 @@ msgstr "%s erreurs fichier" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Le format du fichier %s a été changé avec la version 3.0. Vous voulez " -"probablement une copie de %smc.ext ou utiliser le fichier comme exemple " -"d'édition." +"Le format du fichier %s a changé avec la version 4.0. Vous pouvez soit le " +"copier à partir de %s%s, soit utiliser ce fichier à titre d'exemple pour " +"savoir comment il faut l'écrire." msgid "DialogTitle|Copy" msgstr "TitreDialog|Copie" @@ -2594,16 +2617,21 @@ msgid "" "Cannot stat hardlink source file \"%s\"\n" "%s" msgstr "" +"Impossible de statuer sur le fichier source de la liaison physique " +"\"hardlink\" \"%s\"\n" +"%s" #, c-format msgid "" "Cannot create target hardlink \"%s\"\n" "%s" msgstr "" +"Impossible de créer un lien physique \"hardlink\" cible \"%s\"\n" +"%s" #, c-format msgid "Cannot create target hardlink \"%s\"" -msgstr "" +msgstr "Impossible de créer un lien physique \"hardlink\" cible \"%s\"" #, c-format msgid "" @@ -2619,8 +2647,8 @@ msgid "" "Option Stable Symlinks will be disabled" msgstr "" "Impossible de réaliser des liens symboliques stables entre systèmes de " -"fichiers non-locaux : désactivation de l'option \"Liens symboliques stables" -"\"." +"fichiers non-locaux : désactivation de l'option \"Liens symboliques " +"stables\"." #, c-format msgid "" @@ -2835,6 +2863,15 @@ msgstr "" msgid "(stalled)" msgstr "(au point mort)" +msgid "Incomplete file was retrieved" +msgstr "Un fichier incomplet a été récupéré" + +msgid "&Keep" +msgstr "C&onserver" + +msgid "&Continue copy" +msgstr "&Continuer à copier" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2851,12 +2888,6 @@ msgstr "" "Impossible de fermer le fichier cible « %s »\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Le fichier récupéré est incomplet. Le conserver quand même ?" - -msgid "&Keep" -msgstr "C&onserver" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2957,7 +2988,7 @@ msgid "Overwrite all files?" msgstr "Écraser tous les fichiers ?" msgid "Don't overwrite with &zero length file" -msgstr "" +msgstr "Ne pas écraser avec le fichier de longueur &zero" msgid "&Older" msgstr "Plus ancien" @@ -2975,8 +3006,8 @@ msgid "Background process: File exists" msgstr "Tâche de fond : le fichier existe" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Fichiers traités: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "Fichiers traités : %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3003,8 +3034,8 @@ msgid " Total: %s " msgstr "Total : %s" #, c-format -msgid " Total: %s/%s " -msgstr "Total : %s/%s" +msgid " Total: %s / %s " +msgstr " Total : %s / %s " msgid "Source" msgstr "Source" @@ -3055,8 +3086,8 @@ msgstr "&Arborescence" msgid "&Listing format..." msgstr "Format de &Listing ..." -msgid "S&ort order..." -msgstr "" +msgid "&Sort order..." +msgstr "&Ordre de tri..." msgid "&Filter..." msgstr "&Filtre..." @@ -3070,8 +3101,8 @@ msgstr "Lien &FTP..." msgid "S&hell link..." msgstr "Lien S&hell..." -msgid "&SFTP link..." -msgstr "" +msgid "SFTP li&nk..." +msgstr "SFTP lie&n..." msgid "Paneli&ze" msgstr "Mise en &panneaux" @@ -3113,7 +3144,7 @@ msgid "&Advanced chown" msgstr "Chown &avancé" msgid "Cha&ttr" -msgstr "" +msgstr "Cha&ttr" msgid "&Rename/Move" msgstr "&Renommer/Déplacer" @@ -3225,6 +3256,7 @@ msgid "You have %zu opened screen. Quit anyway?" msgid_plural "You have %zu opened screens. Quit anyway?" msgstr[0] "Il y a %zu fenêtre d'ouverte. Quitter ?" msgstr[1] "Il y a %zu fenêtres ouvertes. Quitter ?" +msgstr[2] "Il y a %zu fenêtres ouvertes. Quitter ?" msgid "The Midnight Commander" msgstr "Midnight Commander" @@ -3285,7 +3317,7 @@ msgid "&Find recursively" msgstr "&Recherche récursive" msgid "Follow s&ymlinks" -msgstr "" +msgstr "Suivre les liens s&ymboliques" msgid "S&kip hidden" msgstr "Ignorer les &cachés" @@ -3326,14 +3358,15 @@ msgid "Finished (ignored %zu directory)" msgid_plural "Finished (ignored %zu directories)" msgstr[0] "Terminé (%zu répertoire ignoré)" msgstr[1] "Terminé (%zu répertoires ignorés)" +msgstr[2] "Terminé (%zu répertoires ignorés)" #, c-format msgid "Find File: \"%s\". Content: \"%s\"" -msgstr "" +msgstr "Chercher un fichier : \"%s\". Contenant : \"%s\"" #, c-format msgid "Find File: \"%s\"" -msgstr "" +msgstr "Chercher un fichier : \"%s\"" msgid "Searching" msgstr "Recherche en cours" @@ -3453,8 +3486,8 @@ msgid "No space information" msgstr "Pas d'information sur l'espace disponible" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Espace libre: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "Espace libre : %s / %s (%d%%)" #, c-format msgid "Type: %s" @@ -3497,6 +3530,7 @@ msgid " (%lu block)" msgid_plural " (%lu blocks)" msgstr[0] "(%lu bloc)" msgstr[1] "(%lu blocs)" +msgstr[2] "(%lu blocs)" #, c-format msgid "Owner: %s/%s" @@ -3679,6 +3713,7 @@ msgid "%s in %d file" msgid_plural "%s in %d files" msgstr[0] " %s octets dans %d fichier" msgstr[1] "%s dans %d fichiers" +msgstr[2] "%s dans %d fichiers" msgid "Panelize" msgstr "Mettre en panneau" @@ -3698,6 +3733,9 @@ msgstr "Sélectionner" msgid "Unselect" msgstr "Désélectionner" +msgid "Filter" +msgstr "Filtre" + msgid "Do you really want to execute?" msgstr "Voulez-vous vraiment l'exécuter ?" @@ -3732,6 +3770,8 @@ msgid "" "External panelize:\n" "%s" msgstr "" +"Panneau externe :\n" +"%s" #, c-format msgid "" @@ -3739,6 +3779,9 @@ msgid "" "failed to read data from child stdout:\n" "%s" msgstr "" +"Panneau externe :\n" +"échec de la lecture des données du \"stdout\" enfant :\n" +"%s" msgid "Cannot run external panelize in a non-local directory" msgstr "Impossible d'exécuter le panneau externe dans un répertoire non local" @@ -3904,6 +3947,9 @@ msgid "" "is already running on this terminal.\n" "Subshell support will be disabled." msgstr "" +"GNU Midnight Commander\n" +"est déjà lancé sur ce terminal.\n" +"Le support du sous-shell sera désactivé." #, c-format msgid "" @@ -3947,37 +3993,37 @@ msgid "Warning: Cannot change to %s.\n" msgstr "Attention : ne peut aller à %s.\n" msgid "With builtin Editor and Aspell support" -msgstr "" +msgstr "Avec un éditeur intégré et un support Aspell" msgid "With builtin Editor" -msgstr "" +msgstr "Avec l'éditeur intégré" msgid "With optional subshell support" -msgstr "" +msgstr "Avec prise en charge optionnelle du sous-shell" msgid "With subshell support as default" -msgstr "" +msgstr "Avec prise en charge du sous-shell par défaut" msgid "With support for background operations" -msgstr "" +msgstr "Avec prise en charge des opérations en arrière-plan" msgid "With mouse support on xterm and Linux console" -msgstr "" +msgstr "Avec prise en charge de la souris sur xterm et la console Linux" msgid "With mouse support on xterm" -msgstr "" +msgstr "Avec prise en charge de la souris sur xterm" msgid "With support for X11 events" -msgstr "" +msgstr "Avec prise en charge des événements X11" msgid "With internationalization support" -msgstr "" +msgstr "Avec prise en charge de l'internationalisation" msgid "With multiple codepages support" -msgstr "" +msgstr "Avec prise en charge de plusieurs codepages" msgid "With ext2fs attributes support" -msgstr "" +msgstr "Avec la prise en charge des attributs ext2fs" #, c-format msgid "Built with GLib %d.%d.%d\n" @@ -3985,25 +4031,25 @@ msgstr "Compilé avec GLib %d.%d.%d\n" #, c-format msgid "Built with S-Lang %s with terminfo database\n" -msgstr "" +msgstr "Construit avec S-Lang %s avec la base de données terminfo\n" #, c-format msgid "Built with ncurses %s\n" -msgstr "" +msgstr "Construit avec ncurses %s\n" msgid "Built with ncurses (unknown version)" -msgstr "" +msgstr "Construit avec ncurses (version inconnue)" #, c-format msgid "Built with ncursesw %s\n" -msgstr "" +msgstr "Construit avec ncursesw %s\n" msgid "Built with ncursesw (unknown version)" -msgstr "" +msgstr "Construit avec ncursesw (version inconnue)" #, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "" +msgstr "Construit avec libssh2 %d.%d.%d\n" msgid "Virtual File Systems:" msgstr "Systèmes des fichiers virtuels :" @@ -4132,18 +4178,27 @@ msgstr "" "Fin de fichier inattendue\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Archive tar incohérente" + #, c-format msgid "" "Cannot open %s archive\n" "%s:\n" "%s" msgstr "" +"Impossible d'ouvrir l'archive %s\n" +"%s :\n" +"%s" #, c-format msgid "" "EXTFS virtual file system:\n" "%s" msgstr "" +"Système de fichiers virtuel EXTFS :\n" +"%s" #, c-format msgid "Warning: cannot open %s directory\n" @@ -4261,6 +4316,21 @@ msgstr "ftpfs : connexion au serveur échouée: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Attente avant de réessayer... %d (Control-G pour annuler)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs : impossible de faire la conversion address-to-name : %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs : essaye de se reconnecter au serveur, tentative %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs : impossible d'obtenir le nom du socket : %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs : impossible de se reconnecter au serveur" + msgid "ftpfs: invalid address family" msgstr "ftpfs : type de famille d'adresse incorrecte" @@ -4318,6 +4388,8 @@ msgid "" "SFS virtual file system:\n" "%s" msgstr "" +"Système de fichiers virtuel SFS :\n" +"%s" #, c-format msgid "%s: Warning: file %s not found\n" @@ -4355,6 +4427,8 @@ msgstr "sftp : %s" msgid "sftp: failed to convert remote host IP address into text form" msgstr "" +"sftp : échec de la conversion de l'adresse IP de l'hôte distant en format " +"texte" #, c-format msgid "sftp: making connection to %s" @@ -4368,10 +4442,10 @@ msgid "sftp: connection to server failed: %s" msgstr "sftp : connexion au serveur échouée : %s" msgid "sftp: found host key of unsupported type: RSA1" -msgstr "" +msgstr "sftp : clé hôte trouvée de type non supporté : RSA1" msgid "sftp: unknown host key type:" -msgstr "" +msgstr "sftp : type de clé d'hôte inconnu :" #, c-format msgid "" @@ -4379,15 +4453,22 @@ msgid "" "%s (%s)\n" "to the list of known hosts." msgstr "" +"Ajout définitif de\n" +"%s (%s)\n" +"à la liste des hôtes connus." msgid "sftp: cannot get the remote host key" -msgstr "" +msgstr "sftp : impossible d'obtenir la clé de l'hôte distant" msgid "sftp: unsupported key type, can't check remote host key" msgstr "" +"sftp : type de clé non pris en charge, impossible de vérifier la clé de " +"l'hôte distant" msgid "sftp: can't compute host key fingerprint hash" msgstr "" +"sftp : Impossible de calculer l'empreinte numérique \"hash\" de la clé de " +"l'hôte" #, c-format msgid "" @@ -4398,6 +4479,13 @@ msgid "" "SHA1:%s.\n" "Do you want to add it to the list of known hosts and continue connecting?" msgstr "" +"L'authenticité de l'hôte\n" +"%s (%s)\n" +"ne peut pas être établie !\n" +"L'emprunte numérique \"hash\" de la clé %s est\n" +"SHA1:%s.\n" +"Voulez-vous l'ajouter à la liste des hôtes connus et continuer à vous " +"connecter ?" #, c-format msgid "" @@ -4407,9 +4495,14 @@ msgid "" "Are you sure you want to add it to the list of known hosts and continue " "connecting?" msgstr "" +"%s (%s)\n" +"se trouve dans la liste des hôtes connus mais les CLES NE\n" +"CORRESPONDENT PAS ! CELA POURRAIT ÊTRE UNE ATTAQUE MITM !\n" +"Voulez-vous vraiment l'ajouter à la liste des hôtes connus et continuer à " +"vous connecter ?" msgid "sftp: host key verification failed" -msgstr "" +msgstr "sftp : échec de la vérification de la clé de l'hôte" #, c-format msgid "sftp: Enter passphrase for %s " @@ -4426,7 +4519,7 @@ msgid "sftp: Password is empty." msgstr "sftp : mot de passe vide" msgid "sftp: failure establishing SSH session" -msgstr "" +msgstr "sftp : échec de l'établissement de la session SSH" msgid "sftp: No file handler data present for reading file" msgstr "" diff --git a/mcsrc/po/fr_CA.po b/mcsrc/po/fr_CA.po index 48f59d63..0ae29cef 100644 --- a/mcsrc/po/fr_CA.po +++ b/mcsrc/po/fr_CA.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2015-02-26 09:48+0000\n" "Last-Translator: Piotr DrÄ…g \n" "Language-Team: French (Canada) (http://www.transifex.com/projects/p/mc/" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3256,7 +3263,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3501,6 +3508,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3889,6 +3899,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4016,6 +4029,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/ga.po b/mcsrc/po/ga.po index 8d66ace7..e0b40768 100644 --- a/mcsrc/po/ga.po +++ b/mcsrc/po/ga.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Irish (http://www.transifex.com/mc/mc/language/ga/)\n" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3262,7 +3269,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3513,6 +3520,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3901,6 +3911,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4028,6 +4041,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/gl.po b/mcsrc/po/gl.po index 428ddf46..ed0dbb50 100644 --- a/mcsrc/po/gl.po +++ b/mcsrc/po/gl.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Miguel Anxo Bouzada , " "2012,2014-2015,2019\n" @@ -532,6 +532,9 @@ msgstr "" "Produciuse un erro en select() lendo os datos para o proceso fillo:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1211,8 +1214,8 @@ msgstr "É necesario seleccionar primeiro un bloque de texto" msgid "Run sort" msgstr "Proceder a ordenar" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Opcións para ordenar (ver manual), separadas por espazos:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Ordenar" @@ -2367,12 +2370,6 @@ msgstr "Hai ficheiros marcados. Quere cambiar de directorio?" msgid "Cannot change directory" msgstr "Non é posíbel cambiar de directorio" -msgid "Filter" -msgstr "Filtro" - -msgid "Set expression for filtering filenames" -msgstr "Introduza a expresión para filtrar nomes de ficheiro" - #, c-format msgid "Link %s to:" msgstr "Crear ligazón a %s como:" @@ -2519,19 +2516,23 @@ msgstr "" msgid "Pipe failed" msgstr "Fallo na canalización" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "Produciuse un erro no ficheiro %s%s" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"O formato do ficheiro %smc.ext cambiou coa versión 3.0. Parece que está mal " -"instalado. Por favor, tente conseguir unha copia intacta dende o paquete " -"Midnight Commander." #, c-format msgid "%s file error" @@ -2539,11 +2540,9 @@ msgstr "Erro no ficheiro %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"O formato do ficheiro %s ha cambiou coa versión 3.0. Pode facer unha copia " -"de %smc.ext ou empregalo como modelo." msgid "DialogTitle|Copy" msgstr "DialogTitle|Copiar" @@ -2838,6 +2837,15 @@ msgstr "" msgid "(stalled)" msgstr "(atoado)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Manter" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2854,12 +2862,6 @@ msgstr "" "Non é posíbel pechar o ficheiro destino «%s»\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "O ficheiro esta incompleto. Desexa conservalo?" - -msgid "&Keep" -msgstr "&Manter" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2978,8 +2980,8 @@ msgid "Background process: File exists" msgstr "Proceso en 2º plano: O ficheiro xa existe" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Ficheiros procesados: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3006,8 +3008,8 @@ msgid " Total: %s " msgstr " Total: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Total: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Orixe" @@ -3058,7 +3060,7 @@ msgstr "Ãr&Bore" msgid "&Listing format..." msgstr "Formato de &ista..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3073,7 +3075,7 @@ msgstr "Conexión por FT&P..." msgid "S&hell link..." msgstr "Conexión por &Terminal..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3456,8 +3458,8 @@ msgid "No space information" msgstr "Sen información do espazo" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Espazo libre: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3701,6 +3703,9 @@ msgstr "Seleccionar" msgid "Unselect" msgstr "Desmarcar" +msgid "Filter" +msgstr "Filtro" + msgid "Do you really want to execute?" msgstr "Confirma que quere executalo?" @@ -4131,6 +4136,10 @@ msgstr "" "Fin de ficheiro inesperado\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Arquivo de tipo tar inconsistente" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4258,6 +4267,21 @@ msgstr "ftpfs: fracasou a conexión ao servidor: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Agardando antes de volver tentar... %d (Ctrl-G para cancelar)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: familia de enderezos incorrecta" diff --git a/mcsrc/po/he.po b/mcsrc/po/he.po index 554e63e8..554443ce 100644 --- a/mcsrc/po/he.po +++ b/mcsrc/po/he.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Hebrew (http://www.transifex.com/mc/mc/language/he/)\n" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3260,7 +3267,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3509,6 +3516,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3897,6 +3907,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4024,6 +4037,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/hr.po b/mcsrc/po/hr.po index 3505b5cd..fa440c3c 100644 --- a/mcsrc/po/hr.po +++ b/mcsrc/po/hr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Croatian (http://www.transifex.com/mc/mc/language/hr/)\n" @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3258,7 +3265,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3505,6 +3512,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3893,6 +3903,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4020,6 +4033,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/hu.po b/mcsrc/po/hu.po index d5cb1d0f..035d8633 100644 --- a/mcsrc/po/hu.po +++ b/mcsrc/po/hu.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: András TÅ‘rös , 2020\n" "Language-Team: Hungarian (http://www.transifex.com/mc/mc/language/hu/)\n" @@ -517,6 +517,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1192,8 +1195,8 @@ msgstr "ElÅ‘bb ki kell jelölni egy szövegrészt." msgid "Run sort" msgstr "Rendezés futtatása" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "\"sort\" paraméterei (ld. man sort), szóközzel elválasztva:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Rendezés" @@ -2346,12 +2349,6 @@ msgstr "A fájlkijelölések elvesznek, folytatja?" msgid "Cannot change directory" msgstr "Nem sikerült könyvtárt váltani" -msgid "Filter" -msgstr "SzűrÅ‘" - -msgid "Set expression for filtering filenames" -msgstr "Adja meg a fájlnevekre vonatkozó szűrÅ‘kifejezést" - #, c-format msgid "Link %s to:" msgstr "\"%s\" linkelése ide:" @@ -2498,19 +2495,23 @@ msgstr "" msgid "Pipe failed" msgstr "CsÅ‘-hiba" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s fájlhiba" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"A(z) %smc.ext fájl formátuma a 3.0-s verzióval módosult. Úgy tűnik, hogy a " -"Midnight Commander telepítésekor hiba történt. Szerezzen be egy friss " -"verziót a Midnight Commander-csomagból." #, c-format msgid "%s file error" @@ -2518,11 +2519,9 @@ msgstr "%s fájl hiba" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"'%s' fájl formátuma a 3.0-s verzióval módosult. Lemásolhatja azt a(z) '%smc." -"ext' fájlból, vagy elkészítheti az alapján." msgid "DialogTitle|Copy" msgstr "Másol" @@ -2810,6 +2809,15 @@ msgstr "" msgid "(stalled)" msgstr "(elakadt)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Megtartás" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2826,12 +2834,6 @@ msgstr "" "Nem sikerült lezárni a(z) \"%s\" célfájlt. \n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Nem másolódott át a teljes fájl. Megtartja a célfájlt?" - -msgid "&Keep" -msgstr "&Megtartás" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2951,8 +2953,8 @@ msgid "Background process: File exists" msgstr "Háttérfolyamat: a fájl már létezik" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Feldolgozott fájl: %zu / %zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2979,8 +2981,8 @@ msgid " Total: %s " msgstr " Összesen: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Összesen: %s/%s" +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Forrás" @@ -3031,7 +3033,7 @@ msgstr "Köny&vtárfa" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3046,7 +3048,7 @@ msgstr "&FTP-kapcsolat..." msgid "S&hell link..." msgstr "Sh&ell-kapcsolat..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3429,8 +3431,8 @@ msgid "No space information" msgstr "Nincs adat a tárolóhelyrÅ‘l" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Szabad hely: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3674,6 +3676,9 @@ msgstr "Kiválaszt" msgid "Unselect" msgstr "Kijelölések megszüntetése" +msgid "Filter" +msgstr "SzűrÅ‘" + msgid "Do you really want to execute?" msgstr "Biztosan futtatni kívánja a programot?" @@ -4107,6 +4112,10 @@ msgstr "" "Váratlan fájlvég:\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Inkonzisztens tar-archívum." + #, c-format msgid "" "Cannot open %s archive\n" @@ -4234,6 +4243,21 @@ msgstr "Ftpfs: nem sikerült kapcsolódni a kiszolgálóhoz: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Várakozás az ismétlésre... %d (megszakítás: Control-G)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "Ftpfs: hibás gépnév/-cím" diff --git a/mcsrc/po/ia.po b/mcsrc/po/ia.po index ae60e82b..2243a55c 100644 --- a/mcsrc/po/ia.po +++ b/mcsrc/po/ia.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Martijn Dekker , 2012,2017\n" "Language-Team: Interlingua (http://www.transifex.com/mc/mc/language/ia/)\n" @@ -512,6 +512,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1144,7 +1147,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2279,12 +2282,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "Filtro" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2425,14 +2422,21 @@ msgstr "" msgid "Pipe failed" msgstr "Tubo fallite" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2442,8 +2446,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2678,6 +2682,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2690,12 +2703,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2802,7 +2809,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2830,7 +2837,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2882,7 +2889,7 @@ msgstr "&Arbore" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2897,7 +2904,7 @@ msgstr "Ligamine FT&P..." msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3276,7 +3283,7 @@ msgid "No space information" msgstr "Nulle information super spatio" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3521,6 +3528,9 @@ msgstr "Seliger" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "Filtro" + msgid "Do you really want to execute?" msgstr "" @@ -3921,6 +3931,10 @@ msgstr "" "Fin de file inexpectate\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Archivo tar inconsistente" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4050,6 +4064,21 @@ msgstr "ftpfs: le connexion al servitor falleva: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: familia de adresses invalide" diff --git a/mcsrc/po/id.po b/mcsrc/po/id.po index 73aaf8c6..5e89c0a1 100644 --- a/mcsrc/po/id.po +++ b/mcsrc/po/id.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Ferriandy Chianiago , 2015\n" "Language-Team: Indonesian (http://www.transifex.com/mc/mc/language/id/)\n" @@ -517,6 +517,9 @@ msgstr "" "Kesalahan tak terduga dalam select() membaca data dari child process\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1161,7 +1164,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2296,12 +2299,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2442,14 +2439,21 @@ msgstr "" msgid "Pipe failed" msgstr "Pipa gagal" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2459,8 +2463,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2695,6 +2699,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2707,12 +2720,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2819,7 +2826,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2847,7 +2854,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2899,7 +2906,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2914,7 +2921,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3291,7 +3298,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3534,6 +3541,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3926,6 +3936,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4053,6 +4066,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/ie.po b/mcsrc/po/ie.po index 294e9d5c..c63b6181 100644 --- a/mcsrc/po/ie.po +++ b/mcsrc/po/ie.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Interlingue (http://www.transifex.com/mc/mc/language/ie/)\n" @@ -500,6 +500,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1123,7 +1126,7 @@ msgstr "" msgid "Run sort" msgstr "Lansar sort" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2262,12 +2265,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "Filtre" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2408,14 +2405,21 @@ msgstr "" msgid "Pipe failed" msgstr "pipe ne successat" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2425,8 +2429,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2661,6 +2665,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Retener" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2673,12 +2686,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "&Retener" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2785,7 +2792,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2813,7 +2820,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2865,7 +2872,7 @@ msgstr "Ãrb&or" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2880,7 +2887,7 @@ msgstr "Conexion FT&P..." msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3259,7 +3266,7 @@ msgid "No space information" msgstr "Null information pri spacie" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3504,6 +3511,9 @@ msgstr "Selecter" msgid "Unselect" msgstr "Deselecter" +msgid "Filter" +msgstr "Filtre" + msgid "Do you really want to execute?" msgstr "" @@ -3894,6 +3904,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4021,6 +4034,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: ínvalid familie de adresses" diff --git a/mcsrc/po/it.po b/mcsrc/po/it.po index f91e23ed..0eefbd9f 100644 --- a/mcsrc/po/it.po +++ b/mcsrc/po/it.po @@ -1,27 +1,30 @@ -# The Midnight Commander Italian translation strings -# Copyright (C) 1998-2021 Free Software Foundation, Inc. -# This file is distributed under the same license as the Midnight Commander package. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the mc package. # # Translators: -# Marco Ciampa , 1999-2021 -# Andreas Troschka , 2012. -# Giuliano Natali , 1998. -# Slava Zanko , 2011. +# Andreas Troschka , 2012 +# Giuliano Natali , 1998 +# Marco Ciampa , 2012,2015 +# Marco Falgari , 2018 +# Marco Manuzzi , 2021 +# Slava Zanko , 2011 msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" -"PO-Revision-Date: 2021-09-29 09:45+0200\n" -"Last-Translator: Marco Ciampa \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/mc/language/" -"it/)\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" +"PO-Revision-Date: 2010-12-29 10:19+0000\n" +"Last-Translator: Slava Zanko , 2011\n" +"Language-Team: Italian (http://www.transifex.com/mc/mc/language/it/)\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" +# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" msgstr "Attenzione: impossibile caricare l'elenco delle codepage" @@ -531,6 +534,9 @@ msgstr "" "Errore inaspettato in select() leggendo i dati da un processo figlio:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1208,8 +1214,8 @@ msgstr "Selezionare prima una parte di testo" msgid "Run sort" msgstr "Esegui ordinamento" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Inserisci opzioni di ordinamento (vedi man sort) separate da spazi:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Ordina" @@ -1625,9 +1631,8 @@ msgstr "" "Un semplice editor di testi\n" "scritto per il Midnight Commander." -#, fuzzy msgid "Copyright (C) 1996-2022 the Free Software Foundation" -msgstr "Copyright (C) 1996-2021 the Free Software Foundation" +msgstr "" msgid "About" msgstr "Informazioni" @@ -2371,12 +2376,6 @@ msgstr " File selezionati, cambio directory?" msgid "Cannot change directory" msgstr "Non posso cambiare directory" -msgid "Filter" -msgstr "Filtro" - -msgid "Set expression for filtering filenames" -msgstr "Imposta l'espressione per filtrare i nomi dei file" - #, c-format msgid "Link %s to:" msgstr "Collega %s a:" @@ -2523,19 +2522,23 @@ msgstr "" msgid "Pipe failed" msgstr "Pipe fallita" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " errore nel file %s%s " #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Il formato del file %smc.ext è cambiato con la versione 3.0. Sembra che " -"l'installazione sia fallita. Procurarsi una versione più aggiornata del " -"Midnight Commander." #, c-format msgid "%s file error" @@ -2543,11 +2546,9 @@ msgstr "Errore file %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Il formato del file %s è cambiato con la versione 3.0. È possibile sia " -"copiarlo da %smc.ext o usare quel file come esempio per scriverne uno nuovo." msgid "DialogTitle|Copy" msgstr "Copia" @@ -2841,6 +2842,15 @@ msgstr "" msgid "(stalled)" msgstr "(in attesa)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Mantieni" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2857,12 +2867,6 @@ msgstr "" "Impossibile chiudere il file destinazione \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Il file recuperato è incompleto. Lo vuoi tenere?" - -msgid "&Keep" -msgstr "&Mantieni" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2981,8 +2985,8 @@ msgid "Background process: File exists" msgstr "Processo in background: il file esiste" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "File elaborati: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3009,8 +3013,8 @@ msgid " Total: %s " msgstr " Totale: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Totale: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Sorgente" @@ -3061,9 +3065,8 @@ msgstr "A&lbero" msgid "&Listing format..." msgstr "Formato &lista..." -#, fuzzy -msgid "S&ort order..." -msgstr "&Ordina per..." +msgid "&Sort order..." +msgstr "" msgid "&Filter..." msgstr "&Filtro" @@ -3077,9 +3080,8 @@ msgstr "Connessione FT&P..." msgid "S&hell link..." msgstr "Connessione S&hell..." -#, fuzzy -msgid "&SFTP link..." -msgstr "Connessione S&FTP..." +msgid "SFTP li&nk..." +msgstr "" msgid "Paneli&ze" msgstr "Pannelli&zza" @@ -3231,8 +3233,9 @@ msgstr "Pannelli:" #, c-format msgid "You have %zu opened screen. Quit anyway?" msgid_plural "You have %zu opened screens. Quit anyway?" -msgstr[0] "È aperto %zu schermo. Uscire comunque?" -msgstr[1] "Sono aperti %zu schermi. Uscire comunque?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" msgid "The Midnight Commander" msgstr "Il Midnight Commander" @@ -3332,8 +3335,9 @@ msgstr "Terminato" #, c-format msgid "Finished (ignored %zu directory)" msgid_plural "Finished (ignored %zu directories)" -msgstr[0] "Finito (ignorata %zu directory)" -msgstr[1] "Finito (ignorate %zu directory)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #, c-format msgid "Find File: \"%s\". Content: \"%s\"" @@ -3461,8 +3465,8 @@ msgid "No space information" msgstr "Nessuna info sullo spazio" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Spazio libero: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3503,8 +3507,9 @@ msgstr "Dimensione: %s" #, c-format msgid " (%lu block)" msgid_plural " (%lu blocks)" -msgstr[0] " (%lu blocco)" -msgstr[1] " (%lu blocchi)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #, c-format msgid "Owner: %s/%s" @@ -3687,6 +3692,7 @@ msgid "%s in %d file" msgid_plural "%s in %d files" msgstr[0] " %s byte in %d file" msgstr[1] " %s byte in %d file" +msgstr[2] " %s byte in %d file" msgid "Panelize" msgstr "Pannellizza" @@ -3706,6 +3712,9 @@ msgstr "Seleziona" msgid "Unselect" msgstr "Deseleziona" +msgid "Filter" +msgstr "Filtro" + msgid "Do you really want to execute?" msgstr "Vuoi veramente eseguirlo?" @@ -4015,9 +4024,9 @@ msgstr "Creato con ncursesw %s\n" msgid "Built with ncursesw (unknown version)" msgstr "Creato con ncursesw (versione sconosiuta)" -#, fuzzy, c-format +#, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "Creato con GLib %d.%d.%d\n" +msgstr "" msgid "Virtual File Systems:" msgstr "File System Virtuali:" @@ -4144,6 +4153,10 @@ msgstr "" "Inattesa fine del file\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Archivio tar inconsistente" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4276,6 +4289,21 @@ msgstr "ftpfs: connessione al server fallita: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "In attesa di risposta... %d (Ctrl-G per annullare)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: famiglia di indirizzi non valida" diff --git a/mcsrc/po/ja.po b/mcsrc/po/ja.po index 48c0deeb..a57dd66e 100644 --- a/mcsrc/po/ja.po +++ b/mcsrc/po/ja.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Takuro Onoue , 2021\n" "Language-Team: Japanese (http://www.transifex.com/mc/mc/language/ja/)\n" @@ -515,6 +515,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1138,7 +1141,7 @@ msgstr "" msgid "Run sort" msgstr "並ã³æ›¿ãˆã®å®Ÿè¡Œ" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2279,12 +2282,6 @@ msgstr "ファイルã¯ã‚¿ã‚°ä»˜ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚cd ã—ã¾ã™ã‹?" msgid "Cannot change directory" msgstr "ディレクトリを変更ã§ãã¾ã›ã‚“" -msgid "Filter" -msgstr "フィルター" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2425,14 +2422,21 @@ msgstr "" msgid "Pipe failed" msgstr "パイプã®å—ã‘渡ã—ã«å¤±æ•—ã—ã¾ã—ãŸ" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2442,8 +2446,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2678,6 +2682,15 @@ msgstr "" msgid "(stalled)" msgstr "(stalled)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "ä¿å­˜(&K)" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2690,12 +2703,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "ファイルを完全ã«å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ä¿å­˜ã—ã¾ã™ã‹?" - -msgid "&Keep" -msgstr "ä¿å­˜(&K)" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2802,7 +2809,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2830,7 +2837,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2882,7 +2889,7 @@ msgstr "ツリー(&T)" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2897,7 +2904,7 @@ msgstr "FTP リンク(&P)..." msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3274,8 +3281,8 @@ msgid "No space information" msgstr "空ã領域情報ãŒã‚ã‚Šã¾ã›ã‚“" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "空ã容é‡: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3517,6 +3524,9 @@ msgstr "é¸æŠž" msgid "Unselect" msgstr "é¸æŠžè§£é™¤" +msgid "Filter" +msgstr "フィルター" + msgid "Do you really want to execute?" msgstr "本当ã«å®Ÿè¡Œã—ã¾ã™ã‹?" @@ -3932,6 +3942,10 @@ msgstr "" "予期ã—ãªã„ EOF ã§ã™\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "tar アーカイブã«ä¸æ•´åˆ" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4059,6 +4073,21 @@ msgstr "ftpfs: サーãƒã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸ: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/ka.po b/mcsrc/po/ka.po index 53cbe351..71ab8877 100644 --- a/mcsrc/po/ka.po +++ b/mcsrc/po/ka.po @@ -4,14 +4,15 @@ # # Translators: # George Machitidze , 2012,2014 -# NorwayFun , 2022 +# Temuri Doghonadze , 2022 +# Temuri Doghonadze , 2022 msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: NorwayFun , 2022\n" +"Last-Translator: Temuri Doghonadze , 2022\n" "Language-Team: Georgian (http://www.transifex.com/mc/mc/language/ka/)\n" "Language: ka\n" "MIME-Version: 1.0\n" @@ -21,30 +22,30 @@ msgstr "" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" -msgstr "" +msgstr "გáƒáƒ¤áƒ áƒ—ხილებáƒ: კáƒáƒ“ების გვერდების სიის ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის სეცდáƒáƒ›áƒ" msgid "7-bit ASCII" msgstr "7-ბიტიáƒáƒœáƒ˜ ASCII" #, c-format msgid "Cannot translate from %s to %s" -msgstr "" +msgstr "%s-დáƒáƒœ %s-ზე თáƒáƒ áƒ’მნრშეუძლებელიáƒ" msgid "Event system already initialized" -msgstr "" +msgstr "მáƒáƒ•áƒšáƒ”ნების სისტემრუკვე ინიციáƒáƒšáƒ˜áƒ–ირებულიáƒ" msgid "Failed to initialize event system" -msgstr "" +msgstr "მáƒáƒ•áƒšáƒ”ნების სისტემის ინიციáƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ შეცდáƒáƒ›áƒ" msgid "Event system not initialized" -msgstr "" +msgstr "მáƒáƒ•áƒšáƒ”ნების სისტემრინიციáƒáƒšáƒ˜áƒ–ირებული áƒáƒ áƒáƒ" msgid "Check input data! Some of parameters are NULL!" msgstr "" #, c-format msgid "Unable to create group '%s' for events!" -msgstr "" +msgstr "მáƒáƒ•áƒšáƒ”ნებისთვის ჯგუფის შექმნრშეუძლებელიáƒ: %s !" #, c-format msgid "Unable to create event '%s'!" @@ -71,7 +72,7 @@ msgid "Cannot create %s directory" msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე %s-ის შექმნრშეუძლებელიáƒ" msgid "FATAL: not a directory:" -msgstr "შეცდáƒáƒ›áƒ: áƒáƒ  წáƒáƒ áƒ›áƒáƒáƒ“გენს სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეს" +msgstr "შეცდáƒáƒ›áƒ: áƒáƒ  წáƒáƒ áƒ›áƒáƒáƒ“გენს სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეს:" msgid "" "Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in " @@ -110,7 +111,7 @@ msgid "No&rmal" msgstr "ნáƒáƒ &მáƒáƒšáƒ£áƒ áƒ˜" msgid "Re&gular expression" -msgstr "" +msgstr "&რეგულáƒáƒ áƒ£áƒš გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბáƒ" msgid "He&xadecimal" msgstr "ტე&ქვსმეტáƒáƒ‘ითი" @@ -226,7 +227,7 @@ msgid "BackTab/S-tab" msgstr "" msgid "Backspace" -msgstr "" +msgstr "Backspace" msgid "Up arrow" msgstr "ისáƒáƒ áƒ˜ ზემáƒáƒ—" @@ -259,49 +260,49 @@ msgid "Page Down" msgstr "ღილáƒáƒ™áƒ˜ Page Down" msgid "/ on keypad" -msgstr "" +msgstr "/ ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "* on keypad" -msgstr "" +msgstr "* ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "- on keypad" -msgstr "" +msgstr "- ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "+ on keypad" -msgstr "" +msgstr "+ ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Left arrow keypad" -msgstr "" +msgstr "ისáƒáƒ áƒ˜ მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ• ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Right arrow keypad" -msgstr "" +msgstr "ისáƒáƒ áƒ˜ მáƒáƒ áƒ¯áƒ•áƒœáƒ˜áƒ• ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Up arrow keypad" -msgstr "" +msgstr "ისáƒáƒ áƒ˜ ზემáƒáƒ— ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Down arrow keypad" -msgstr "" +msgstr "ისáƒáƒ áƒ˜ ქვემáƒáƒ— ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Home on keypad" -msgstr "" +msgstr "ღილáƒáƒ™áƒ˜ Home ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "End on keypad" -msgstr "" +msgstr "ღილáƒáƒ™áƒ˜ End ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Page Down keypad" -msgstr "" +msgstr "ღილáƒáƒ™áƒ˜ PageDown ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Page Up keypad" -msgstr "" +msgstr "ღილáƒáƒ™áƒ˜ PageUp ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Insert on keypad" -msgstr "" +msgstr "ღილáƒáƒ™áƒ˜ Insert ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Delete on keypad" -msgstr "" +msgstr "ღილáƒáƒ™áƒ˜ Delete ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Enter on keypad" -msgstr "" +msgstr "ღილáƒáƒ™áƒ˜ Enter ციფრულ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ–ე" msgid "Function key 21" msgstr "ღილáƒáƒ™áƒ˜ F21" @@ -361,7 +362,7 @@ msgid "Question mark" msgstr "კითხვის ნიშáƒáƒœáƒ˜" msgid "Ampersand" -msgstr "" +msgstr "áƒáƒ›áƒžáƒ”რსáƒáƒœáƒ“ი" msgid "Dollar sign" msgstr "დáƒáƒšáƒáƒ áƒ˜áƒ¡ ნიშáƒáƒœáƒ˜" @@ -379,37 +380,37 @@ msgid "Tilda" msgstr "ტáƒáƒšáƒ¦áƒ" msgid "Prime" -msgstr "" +msgstr "პრიმáƒ" msgid "Underline" msgstr "ქვედრტირე" msgid "Understrike" -msgstr "" +msgstr "ქვედáƒáƒ®áƒáƒ–ი" msgid "Pipe" msgstr "მილი" msgid "Left parenthesis" -msgstr "" +msgstr "მáƒáƒ áƒªáƒ®áƒ”ნრმრგვáƒáƒšáƒ˜ ფრჩხილი" msgid "Right parenthesis" -msgstr "" +msgstr "მáƒáƒ áƒ¯áƒ•áƒ”ნრმრგვáƒáƒšáƒ˜ ფრჩხილი" msgid "Left bracket" -msgstr "" +msgstr "მáƒáƒ áƒªáƒ®áƒ”ნრნáƒáƒ™áƒ•áƒ—ური ფრჩხილი" msgid "Right bracket" -msgstr "" +msgstr "მáƒáƒ áƒ¯áƒ•áƒ”ნრნáƒáƒ™áƒ•áƒ—ური ფრჩხილი" msgid "Left brace" -msgstr "" +msgstr "მáƒáƒ áƒªáƒ®áƒ”ნრფიგურული ფრჩხილი" msgid "Right brace" -msgstr "" +msgstr "მáƒáƒ áƒ¯áƒ•áƒ”ნრფიგურული ფრჩხილი" msgid "Enter" -msgstr "" +msgstr "Enter" msgid "Tab key" msgstr "ღილáƒáƒ™áƒ˜ Tab" @@ -493,10 +494,10 @@ msgid "GiB" msgstr "გიბ" msgid "Cannot create pipe descriptor" -msgstr "" +msgstr "ფáƒáƒ˜áƒ¤áƒ˜áƒ¡ დესკრიპტáƒáƒ áƒ˜áƒ¡ შექმნრშეუძლებელიáƒ" msgid "Cannot create pipe streams" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ნáƒáƒ™áƒáƒ“ის შექმნრშეუძლებელიáƒ" #, c-format msgid "" @@ -504,23 +505,28 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" "%s" msgstr "" +"Waitpid()-ის გáƒáƒ£áƒ—ვáƒáƒšáƒ˜áƒ¡áƒ¬áƒ˜áƒœáƒ”ბელი შეცდáƒáƒ›áƒ:\n" +"%s" #, c-format msgid "Directory cache expired for %s" -msgstr "" +msgstr "%s-ის ქეშს ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ" #, c-format msgid "%s: %s: %s %3d%% (%lld) bytes transferred" -msgstr "" +msgstr "%s: %s: %s %3d%% (%lld) ბáƒáƒ˜áƒ¢áƒ˜ გáƒáƒ“áƒáƒ¬áƒ”რილიáƒ" #, c-format msgid "%s: %s: %s %lld bytes transferred" -msgstr "" +msgstr "%s: %s: %s %lld ბáƒáƒ˜áƒ¢áƒ˜ გáƒáƒ“áƒáƒ¬áƒ”რილიáƒ" msgid "Starting linear transfer..." msgstr "წრფივი გáƒáƒ“áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ დáƒáƒ¬áƒ§áƒ”ბáƒ..." @@ -529,7 +535,7 @@ msgid "Getting file" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ მიღებáƒ" msgid "Changes to file lost" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ცვლილებები დáƒáƒ˜áƒ™áƒáƒ áƒ’áƒ" #, c-format msgid "%s is not a directory\n" @@ -537,7 +543,7 @@ msgstr "%s áƒáƒ  áƒáƒ áƒ˜áƒ¡ დირექტáƒáƒ áƒ˜áƒ\n" #, c-format msgid "Directory %s is not owned by you\n" -msgstr "" +msgstr "%s-ის მფლáƒáƒ‘ელი áƒáƒ  ბრძáƒáƒœáƒ“ებით\n" #, c-format msgid "Cannot set correct permissions for directory %s\n" @@ -549,7 +555,7 @@ msgstr "" #, c-format msgid "Temporary files will be created in %s\n" -msgstr "" +msgstr "დრáƒáƒ”ბითი ფáƒáƒ˜áƒšáƒ”ბი %s-ში შეიქმნებáƒ\n" #, c-format msgid "Temporary files will not be created\n" @@ -559,7 +565,7 @@ msgid "Press any key to continue..." msgstr "გáƒáƒ¡áƒáƒ’რძელებლáƒáƒ“ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ნებისმიერ ღილáƒáƒ™áƒ¡..." msgid "Cannot parse:" -msgstr "" +msgstr "დáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბრშეუძლებელიáƒ:" msgid "More parsing errors will be ignored." msgstr "" @@ -612,7 +618,7 @@ msgid "Displays the current version" msgstr "áƒáƒ©áƒ•áƒ”ნებს მიმდინáƒáƒ áƒ” ვერსიáƒáƒ¡" msgid "Print data directory" -msgstr "" +msgstr "დáƒáƒ‘ეჭდვის მáƒáƒœáƒáƒªáƒ”მების სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" msgid "Print extended info about used data directories" msgstr "" @@ -835,16 +841,16 @@ msgid "&Minimal (Find a smaller set of change)" msgstr "" msgid "Diff algorithm" -msgstr "" +msgstr "გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბის áƒáƒšáƒ’áƒáƒ áƒ˜áƒ—მი" msgid "Diff extra options" -msgstr "" +msgstr "გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბითი მáƒáƒ áƒ’ებáƒ" msgid "&Ignore case" -msgstr "" +msgstr "&áƒáƒ¡áƒáƒ”ბის სიდიდის იგნáƒáƒ áƒ˜" msgid "Ignore tab &expansion" -msgstr "" +msgstr "ტáƒáƒ‘ულáƒáƒªáƒ˜áƒ˜áƒ¡ &გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბის იგნáƒáƒ áƒ˜" msgid "Ignore &space change" msgstr "" @@ -856,7 +862,7 @@ msgid "Strip &trailing carriage return" msgstr "" msgid "Diff Options" -msgstr "" +msgstr "გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბითი მáƒáƒ áƒ’ებáƒ" msgid "Edit" msgstr "რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ" @@ -906,7 +912,7 @@ msgid "" msgstr "" msgid "Diff:" -msgstr "" +msgstr "გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბáƒ:" #, c-format msgid "\"%s\" is a directory" @@ -1013,7 +1019,7 @@ msgid "Save As" msgstr "შეინáƒáƒ®áƒ” რáƒáƒ’áƒáƒ áƒª" msgid "&Quick save" -msgstr "" +msgstr "&სწრáƒáƒ¤áƒ˜ შენáƒáƒ®áƒ•áƒ" msgid "&Safe save" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ &შენáƒáƒ®áƒ•áƒ" @@ -1025,7 +1031,7 @@ msgid "Check &POSIX new line" msgstr "" msgid "Edit Save Mode" -msgstr "" +msgstr "შენáƒáƒ®áƒ•áƒ˜áƒ¡ რეჟიმის ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" msgid "Save as" msgstr "შენáƒáƒ®áƒ•áƒ რáƒáƒ’áƒáƒ áƒª" @@ -1037,10 +1043,10 @@ msgid "A file already exists with this name" msgstr "ფáƒáƒ˜áƒšáƒ˜ áƒáƒ› სáƒáƒ®áƒ”ლით უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს" msgid "&Overwrite" -msgstr "" +msgstr "&გáƒáƒ“áƒáƒ¬áƒ”რáƒ" msgid "Cannot save file" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•áƒ შეუძლებელიáƒ" #, c-format msgid "Confirm save file: \"%s\"" @@ -1065,7 +1071,7 @@ msgid "&User" msgstr "მáƒáƒ›&ხმáƒáƒ áƒ”ბელი" msgid "&System wide" -msgstr "" +msgstr "&მთელ სისტემáƒáƒ¨áƒ˜" msgid "Menu edit" msgstr "მენიუს რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ" @@ -1074,7 +1080,7 @@ msgid "Which menu file do you want to edit?" msgstr "" msgid "&Local" -msgstr "" +msgstr "&ლáƒáƒ™áƒáƒšáƒ£áƒ áƒáƒ“" msgid "[NoName]" msgstr "[უსáƒáƒ®áƒ”ლáƒ]" @@ -1098,13 +1104,13 @@ msgid "This function is not implemented" msgstr "" msgid "Copy to clipboard" -msgstr "" +msgstr "გáƒáƒªáƒ•áƒšáƒ˜áƒ¡ ბუფერში კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" msgid "Unable to save to file" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ¨áƒ˜ შენáƒáƒ®áƒ•áƒ˜áƒ¡ შეცდáƒáƒ›áƒ" msgid "Cut to clipboard" -msgstr "" +msgstr "áƒáƒ›áƒáƒ­áƒ áƒ გáƒáƒªáƒ•áƒšáƒ˜áƒ¡ ბუფერში" msgid "Goto line" msgstr "გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ ხáƒáƒ–ზე" @@ -1119,15 +1125,15 @@ msgid "Cannot insert file" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¡áƒ›áƒ ვერ მáƒáƒ®áƒ”რხდáƒ" msgid "Sort block" -msgstr "" +msgstr "დáƒáƒšáƒáƒ’ების ბლáƒáƒ™áƒ˜áƒ áƒ”ბáƒ" msgid "You must first highlight a block of text" msgstr "" msgid "Run sort" -msgstr "" +msgstr "დáƒáƒšáƒáƒ’ების გáƒáƒ¨áƒ•áƒ”ბáƒ" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -1209,7 +1215,7 @@ msgid "Repeat times:" msgstr "გáƒáƒ›áƒ”áƒáƒ áƒ”ბის დრáƒ:" msgid "&Open file..." -msgstr "" +msgstr "&ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ..." msgid "&New" msgstr "&áƒáƒ®áƒáƒšáƒ˜" @@ -1218,88 +1224,88 @@ msgid "&Close" msgstr "დáƒáƒ™áƒ”&ტვáƒ" msgid "&History..." -msgstr "" +msgstr "&ისტáƒáƒ áƒ˜áƒ..." msgid "Save &as..." -msgstr "" +msgstr "&შენáƒáƒ®áƒ•áƒ რáƒáƒ’áƒáƒ áƒª..." msgid "&Insert file..." -msgstr "" +msgstr "&ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¡áƒ›áƒ..." msgid "Cop&y to file..." -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ¨áƒ˜ &კáƒáƒžáƒ˜áƒ áƒ”ბáƒ..." msgid "&User menu..." -msgstr "" +msgstr "&მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მენიუ..." msgid "A&bout..." msgstr "&შესáƒáƒ®áƒ”ბ..." msgid "&Quit" -msgstr "" +msgstr "&გáƒáƒ¡áƒ•áƒšáƒ" msgid "&Undo" -msgstr "" +msgstr "&დáƒáƒ‘რუნებáƒ" msgid "&Redo" -msgstr "" +msgstr "&გáƒáƒ›áƒ”áƒáƒ áƒ”ბáƒ" msgid "&Toggle ins/overw" -msgstr "" +msgstr "&ჩáƒáƒ¡áƒ›áƒ/გáƒáƒ“áƒáƒ¬áƒ”რის გáƒáƒ“áƒáƒ áƒ—ვáƒ" msgid "To&ggle mark" -msgstr "" +msgstr "&ნიშნის ჩáƒáƒ áƒ—/გáƒáƒ›áƒáƒ áƒ—" msgid "&Mark columns" -msgstr "" +msgstr "&სვეტების ნიშნები" msgid "Mark &all" -msgstr "" +msgstr "&ყველáƒáƒ¤áƒ áƒ˜áƒ¡ მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ" msgid "Unmar&k" -msgstr "" +msgstr "&მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ" msgid "Cop&y" -msgstr "" +msgstr "&კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" msgid "Mo&ve" -msgstr "" +msgstr "&გáƒáƒ“áƒáƒ¢áƒáƒœáƒ" msgid "&Delete" msgstr "&წáƒáƒ¨áƒšáƒ" msgid "Co&py to clipfile" -msgstr "" +msgstr "&áƒáƒ›áƒáƒ¡áƒáƒ­áƒ áƒ”ლ ფáƒáƒ˜áƒšáƒ¨áƒ˜ კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" msgid "&Cut to clipfile" -msgstr "" +msgstr "&áƒáƒ›áƒáƒ¡áƒáƒ­áƒ áƒ”ლ ფáƒáƒ˜áƒšáƒ¨áƒ˜ áƒáƒ›áƒáƒ­áƒ áƒ" msgid "Pa&ste from clipfile" -msgstr "" +msgstr "&áƒáƒ›áƒáƒ¡áƒáƒ­áƒ áƒ”ლი ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ ჩáƒáƒ¡áƒ›áƒ" msgid "&Beginning" -msgstr "" +msgstr "&დáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜" msgid "&End" -msgstr "" +msgstr "&დáƒáƒ¡áƒáƒ¡áƒ áƒ£áƒšáƒ˜" msgid "&Search..." -msgstr "" +msgstr "&ძებნáƒ..." msgid "Search &again" -msgstr "" +msgstr "&თáƒáƒ•áƒ˜áƒ“áƒáƒœ ძებნáƒ" msgid "&Replace..." -msgstr "" +msgstr "&ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბáƒ..." msgid "&Toggle bookmark" -msgstr "" +msgstr "&სáƒáƒœáƒ˜áƒ¨áƒœáƒ˜áƒ¡ ჩáƒáƒ áƒ—/გáƒáƒ›áƒáƒ áƒ—" msgid "&Next bookmark" -msgstr "" +msgstr "&შემდეგი სáƒáƒœáƒ˜áƒ¨áƒœáƒ˜" msgid "&Prev bookmark" -msgstr "" +msgstr "&წინრსáƒáƒœáƒ˜áƒ¨áƒ˜áƒ¨áƒœáƒ˜" msgid "&Flush bookmarks" msgstr "" @@ -1326,31 +1332,31 @@ msgid "For&ward to declaration" msgstr "" msgid "Encod&ing..." -msgstr "" +msgstr "კáƒáƒ“ირებáƒ..." msgid "&Refresh screen" -msgstr "" +msgstr "&ეკრáƒáƒœáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" msgid "&Start/Stop record macro" -msgstr "" +msgstr "მáƒáƒ™áƒ áƒáƒ¡ ჩáƒáƒ¬áƒ”რის დáƒáƒ¬áƒ§áƒ”ბáƒ/დáƒáƒ¡áƒáƒ¡áƒ áƒ£áƒšáƒ˜" msgid "Delete macr&o..." -msgstr "" +msgstr "მáƒáƒ™áƒ áƒáƒ¡ წáƒáƒ¨áƒšáƒ..." msgid "Record/Repeat &actions" -msgstr "" +msgstr "ჩáƒáƒ¬áƒ”რáƒ/გáƒáƒ›áƒ”áƒáƒ áƒ”ბის ქმედებები" msgid "S&pell check" -msgstr "" +msgstr "მáƒáƒ áƒ—ლწერის შემáƒáƒ¬áƒ›áƒ”ბáƒ" msgid "C&heck word" -msgstr "" +msgstr "სიტყვის შემáƒáƒ¬áƒ›áƒ”ბáƒ" msgid "Change spelling &language..." -msgstr "" +msgstr "მáƒáƒ áƒ—ლწერის შემáƒáƒ¬áƒ›áƒ”ბის ენის შეცვლáƒ..." msgid "&Mail..." -msgstr "" +msgstr "&ფáƒáƒ¡áƒ¢áƒ..." msgid "Insert &literal..." msgstr "" @@ -1359,19 +1365,19 @@ msgid "Insert &date/time" msgstr "&თáƒáƒ áƒ˜áƒ¦áƒ˜áƒ¡/დრáƒáƒ¡ ჩáƒáƒ¡áƒ›áƒ" msgid "&Format paragraph" -msgstr "" +msgstr "&პáƒáƒ áƒáƒ’რáƒáƒ¤áƒ˜áƒ¡ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბáƒ" msgid "&Sort..." -msgstr "" +msgstr "&დáƒáƒšáƒáƒ’ებáƒ..." msgid "&Paste output of..." -msgstr "" +msgstr "&პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ გáƒáƒ›áƒáƒœáƒáƒ¢áƒáƒœáƒ˜áƒ¡ ჩáƒáƒ¡áƒ›áƒ..." msgid "&External formatter" -msgstr "" +msgstr "&გáƒáƒ áƒ” ფáƒáƒ áƒ›áƒáƒ¢áƒ”რი" msgid "&Move" -msgstr "" +msgstr "&გáƒáƒ“áƒáƒ¢áƒáƒœáƒ" msgid "&Resize" msgstr "&ზáƒáƒ›áƒ˜áƒ¡ შეცვლáƒ" @@ -1386,28 +1392,28 @@ msgid "&Previous" msgstr "&წინáƒ" msgid "&List..." -msgstr "ს&იáƒ" +msgstr "ს&იáƒ..." msgid "&General..." msgstr "&ძირითáƒáƒ“ი..." msgid "Save &mode..." -msgstr "" +msgstr "შენáƒáƒ®áƒ•áƒ˜áƒ¡ &რეჟიმი..." msgid "Learn &keys..." -msgstr "" +msgstr "&ღილáƒáƒ™áƒ”ბის სწáƒáƒ•áƒšáƒ..." msgid "Syntax &highlighting..." -msgstr "" +msgstr "&სინტáƒáƒ¥áƒ¡áƒ˜áƒ¡ გáƒáƒœáƒáƒ—ებáƒ..." msgid "S&yntax file" -msgstr "" +msgstr "&სინტáƒáƒ¥áƒ¡áƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜" msgid "&Menu file" -msgstr "" +msgstr "&მენიუს ფáƒáƒ˜áƒšáƒ˜" msgid "&Save setup" -msgstr "" +msgstr "&პáƒáƒ áƒáƒ›áƒ”ტრების შენáƒáƒ®áƒ•áƒ" msgid "&File" msgstr "&ფáƒáƒ˜áƒšáƒ˜" @@ -1422,7 +1428,7 @@ msgid "&Command" msgstr "&ბრძáƒáƒœáƒ”ბáƒ" msgid "For&mat" -msgstr "" +msgstr "&ფáƒáƒ áƒ›áƒáƒ¢áƒ˜" msgid "&Window" msgstr "&ფáƒáƒœáƒ¯áƒáƒ áƒ" @@ -1431,19 +1437,19 @@ msgid "&Options" msgstr "&პáƒáƒ áƒáƒ›áƒ”ტრები" msgid "&None" -msgstr "" +msgstr "áƒáƒ áƒáƒ¤áƒ”რი" msgid "&Dynamic paragraphing" -msgstr "" +msgstr "&დინáƒáƒ›áƒ˜áƒ£áƒ áƒ˜ პáƒáƒ áƒáƒ’რáƒáƒ¤áƒ”ბი" msgid "Type &writer wrap" -msgstr "" +msgstr "სიტყ&ვების გáƒáƒ“áƒáƒ¢áƒáƒœáƒ" msgid "Wrap mode" -msgstr "" +msgstr "გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒ¡ რეჟიმი" msgid "Tabulation" -msgstr "" +msgstr "ტáƒáƒ‘ულáƒáƒªáƒ˜áƒ" msgid "&Fake half tabs" msgstr "" @@ -1458,7 +1464,7 @@ msgid "Tab spacing:" msgstr "" msgid "Other options" -msgstr "" +msgstr "სხვრპáƒáƒ áƒáƒ›áƒ”ტრები" msgid "&Return does autoindent" msgstr "" @@ -1467,52 +1473,52 @@ msgid "Confir&m before saving" msgstr "" msgid "Save file &position" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ მდებáƒáƒ áƒ”áƒáƒ‘ის შენáƒáƒ®áƒ•áƒ" msgid "&Visible trailing spaces" -msgstr "" +msgstr "მიწერილი გáƒáƒ›áƒáƒ¢áƒáƒ•áƒ”ბების ჩვენებáƒ" msgid "Visible &tabs" -msgstr "" +msgstr "ტáƒáƒ‘ულáƒáƒªáƒ˜áƒ˜áƒ¡ ჩვენებáƒ" msgid "Synta&x highlighting" -msgstr "" +msgstr "&სინტáƒáƒ¥áƒ¡áƒ˜áƒ¡ გáƒáƒœáƒáƒ—ებáƒ" msgid "C&ursor after inserted block" -msgstr "" +msgstr "კურსáƒáƒ áƒ˜ ჩáƒáƒ¡áƒ›áƒ£áƒšáƒ˜ ბლáƒáƒ™áƒ˜áƒ¡ შემდეგ" msgid "Pers&istent selection" -msgstr "" +msgstr "მუდმივი მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜" msgid "Cursor be&yond end of line" -msgstr "" +msgstr "კურსáƒáƒ áƒ˜ ხáƒáƒ–ის ბáƒáƒšáƒáƒ¡ იქეთáƒáƒ" msgid "&Group undo" -msgstr "" +msgstr "ჯგუფური გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" msgid "Word wrap line length:" -msgstr "" +msgstr "სიტყვების გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒ¡ სიგრძე:" msgid "Editor options" -msgstr "" +msgstr "რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜áƒ¡ მáƒáƒ áƒ’ებáƒ" msgid "In se&lection" -msgstr "" +msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ¨áƒ˜" msgid "&Find all" msgstr "&ყველáƒáƒ¡ პáƒáƒ•áƒœáƒ" msgid "Enter replacement string:" -msgstr "" +msgstr "შეიყვáƒáƒœáƒ”თ ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბის სტრიქáƒáƒœáƒ˜:" msgid "Replace" msgstr "გáƒáƒ›áƒáƒªáƒ•áƒšáƒ" msgid "Replace with:" -msgstr "" +msgstr "ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბáƒ:" msgid "&Replace" -msgstr "" +msgstr "ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბáƒ" msgid "A&ll" msgstr "ყვე&ლáƒ" @@ -1521,7 +1527,7 @@ msgid "&Skip" msgstr "გáƒáƒ›áƒ&ტáƒáƒ•áƒ”ბáƒ" msgid "Confirm replace" -msgstr "" +msgstr "ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბის დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ" #, c-format msgid "Searching %s: %3d%%" @@ -1533,7 +1539,7 @@ msgstr "" #, c-format msgid "%ld replacements made" -msgstr "" +msgstr "მáƒáƒ®áƒ“რ%ld ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბáƒ" msgid "" "A user friendly text editor\n" @@ -1550,7 +1556,7 @@ msgid "Open files" msgstr "ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ®áƒ¡áƒœáƒ" msgid "Edit: " -msgstr "" +msgstr "ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ: " msgid "ButtonBar|Mark" msgstr "მáƒáƒœáƒ˜áƒ¨" @@ -1571,112 +1577,114 @@ msgid "ButtonBar|PullDn" msgstr "MCმენიუ" msgid "Breton" -msgstr "" +msgstr "ბრეტáƒáƒœáƒ£áƒšáƒ˜" msgid "Czech" -msgstr "" +msgstr "ჩეხური" msgid "Welsh" -msgstr "" +msgstr "უელსური" msgid "Danish" -msgstr "" +msgstr "დáƒáƒœáƒ˜áƒ£áƒ áƒ˜" msgid "German" -msgstr "" +msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜" msgid "Greek" -msgstr "" +msgstr "ბერძნული" msgid "English" -msgstr "" +msgstr "ინგლისური" msgid "British English" -msgstr "" +msgstr "ბრიტáƒáƒœáƒ£áƒšáƒ˜ ინგლისური" msgid "Canadian English" -msgstr "" +msgstr "კáƒáƒœáƒáƒ“ური ინგლისური" msgid "American English" -msgstr "" +msgstr "áƒáƒ›áƒ”რიკული ინგლისური" msgid "Esperanto" -msgstr "" +msgstr "ესპერáƒáƒœáƒ¢áƒ" msgid "Spanish" -msgstr "" +msgstr "ესპáƒáƒœáƒ£áƒ áƒ˜" msgid "Faroese" -msgstr "" +msgstr "ფáƒáƒ áƒáƒ£áƒšáƒ˜" msgid "French" -msgstr "" +msgstr "ფრáƒáƒœáƒ’ული" msgid "Italian" -msgstr "" +msgstr "იტáƒáƒšáƒ˜áƒ£áƒ áƒ˜" msgid "Dutch" -msgstr "" +msgstr "ჰáƒáƒšáƒáƒœáƒ“იური" msgid "Norwegian" -msgstr "" +msgstr "ნáƒáƒ áƒ•áƒ”გიული" msgid "Polish" -msgstr "" +msgstr "პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜" msgid "Portuguese" -msgstr "" +msgstr "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ£áƒ áƒ˜" msgid "Romanian" -msgstr "" +msgstr "რუმინული" msgid "Russian" -msgstr "" +msgstr "რუსული" msgid "Slovak" -msgstr "" +msgstr "სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜" msgid "Swedish" -msgstr "" +msgstr "შვედური" msgid "Ukrainian" -msgstr "" +msgstr "უკრáƒáƒ˜áƒœáƒ£áƒšáƒ˜" msgid "&Add word" -msgstr "" +msgstr "&სიტყვის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" msgid "Language" -msgstr "" +msgstr "ენáƒ" msgid "Misspelled" -msgstr "" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ მáƒáƒ áƒ—ლწერáƒ" msgid "Check word" -msgstr "" +msgstr "სიტყვის შემáƒáƒ¬áƒ›áƒ”ბáƒ" msgid "Suggest" -msgstr "" +msgstr "მინიშნებáƒ" msgid "Select language" -msgstr "" +msgstr "ენის áƒáƒ áƒ©áƒ”ვáƒ" msgid "Choose syntax highlighting" -msgstr "" +msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ სინტáƒáƒ¥áƒ¡áƒ˜áƒ¡ გáƒáƒœáƒáƒ¢áƒ”ბáƒ" msgid "< Auto >" -msgstr "" +msgstr "< áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ >" msgid "< Reload Current Syntax >" -msgstr "" +msgstr "< მიმდინáƒáƒ áƒ” სინტáƒáƒ¥áƒ¡áƒ˜áƒ¡ თáƒáƒ•áƒ˜áƒ“áƒáƒœ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრ>" msgid "Load syntax file" -msgstr "" +msgstr "სინტáƒáƒ¥áƒ¡áƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" #, c-format msgid "" "Cannot open file %s\n" "%s" msgstr "" +"ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ შეცდáƒáƒ›áƒ %s\n" +"%s" #, c-format msgid "Error in file %s on line %d" @@ -1705,224 +1713,228 @@ msgid "Type 'exit' to return to the Midnight Commander" msgstr "" msgid "Set &all" -msgstr "" +msgstr "ყველáƒáƒ¡ დáƒáƒ§áƒ”ნებáƒ" msgid "S&kip" -msgstr "" +msgstr "გáƒáƒ›áƒáƒ¢áƒáƒ•áƒ”ბáƒ" msgid "&Set" -msgstr "" +msgstr "დáƒ&ყენებáƒ" msgid "owner" -msgstr "" +msgstr "მფლáƒáƒ‘ელი" msgid "group" -msgstr "" +msgstr "ჯგუფი" msgid "other" -msgstr "" +msgstr "სხვáƒ" msgid "Flag" -msgstr "" +msgstr "áƒáƒšáƒáƒ›áƒ˜" #, c-format msgid "Permissions (octal): %o" -msgstr "" +msgstr "უფლებები (8-ბიტიáƒáƒœáƒ˜): %o" msgid "Chown advanced command" -msgstr "" +msgstr "Chmod-ის დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები" #, c-format msgid "" "Cannot chmod \"%s\"\n" "%s" msgstr "" +"\"%s\"-ის chmod_ის შეცდáƒáƒ›áƒ\n" +"%s" msgid "&Ignore" -msgstr "" +msgstr "იგნáƒáƒ áƒ˜" msgid "Ignore &all" -msgstr "" +msgstr "ყველáƒáƒ¡ იგნáƒáƒ áƒ˜áƒ áƒ”ბáƒ" msgid "&Retry" -msgstr "" +msgstr "&თáƒáƒ•áƒ˜áƒ“áƒáƒœ ცდáƒ" #, c-format msgid "" "Cannot chown \"%s\"\n" "%s" msgstr "" +"\"%s\"-ის chown შეუძლებელიáƒ\n" +"%s" msgid "< Default >" -msgstr "" +msgstr "< ნáƒáƒ’ულისხმევი >" msgid "Skins" -msgstr "" +msgstr "სკინები" msgid "Other 8 bit" -msgstr "" +msgstr "სხვრ8 ბიტიáƒáƒœáƒ˜" msgid "Running" -msgstr "" +msgstr "გáƒáƒ¨áƒ•áƒ”ბულიáƒ" msgid "Stopped" -msgstr "" +msgstr "შეჩერებულიáƒ" msgid "&Never" -msgstr "" +msgstr "áƒáƒ áƒáƒ¡áƒáƒ“ეს" msgid "On dum&b terminals" -msgstr "" +msgstr "მხáƒáƒšáƒáƒ“ მáƒáƒ áƒ¢áƒ˜áƒ• ტერმინáƒáƒšáƒ–ე" msgid "Alwa&ys" -msgstr "" +msgstr "ყáƒáƒ•áƒ”ლთვის" msgid "File operations" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ”ბი" msgid "&Verbose operation" -msgstr "" +msgstr "áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ" msgid "Compute tota&ls" -msgstr "" +msgstr "ჯáƒáƒ›áƒ”ბის გáƒáƒ›áƒáƒ—ვლáƒ" msgid "Classic pro&gressbar" -msgstr "" +msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ის კლáƒáƒ¡áƒ˜áƒ™áƒ£áƒ áƒ˜ მáƒáƒ©áƒ•áƒ”ნებელი" msgid "Mkdi&r autoname" -msgstr "" +msgstr "Mkdir-ის áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ სáƒáƒ®áƒ”ლი" msgid "&Preallocate space" -msgstr "" +msgstr "áƒáƒ“გილის წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ გáƒáƒ›áƒáƒ§áƒáƒ¤áƒ" msgid "Esc key mode" -msgstr "" +msgstr "Esc ღილáƒáƒ™áƒ˜áƒ¡ რეჟიმი" msgid "S&ingle press" -msgstr "" +msgstr "ერთი დáƒáƒ¬áƒáƒšáƒ" msgid "Timeout:" -msgstr "" +msgstr "ლáƒáƒ“ინის ვáƒáƒ“áƒ:" msgid "Pause after run" -msgstr "" +msgstr "შეყáƒáƒ•áƒœáƒ”ბრგáƒáƒ¨áƒ•áƒ”ბის შემდეგ" msgid "Use internal edi&t" -msgstr "" +msgstr "შიდრრედáƒáƒ¥áƒ¢áƒáƒ áƒ˜" msgid "Use internal vie&w" -msgstr "" +msgstr "შიდრმნáƒáƒ®áƒ•áƒ”ლი" msgid "A&sk new file name" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ®áƒáƒšáƒ˜ სáƒáƒ”ლის კითხვáƒ" msgid "Auto m&enus" -msgstr "" +msgstr "áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ მენიუ" msgid "&Drop down menus" -msgstr "" +msgstr "ჩáƒáƒ›áƒáƒ¡áƒáƒ¨áƒšáƒ”ლი მენიუ" msgid "S&hell patterns" -msgstr "" +msgstr "გáƒáƒ áƒ¡áƒ˜áƒ¡ შáƒáƒ‘ლáƒáƒœáƒ”ბი" msgid "Co&mplete: show all" -msgstr "" +msgstr "სრულáƒáƒ“: ყველáƒáƒ¡ ჩვენებáƒ" msgid "Rotating d&ash" -msgstr "" +msgstr "მბრუნáƒáƒ•áƒ˜ ტირე" msgid "Cd follows lin&ks" -msgstr "" +msgstr "CD მიჰყვებრბმულებს" msgid "Sa&fe delete" -msgstr "" +msgstr "უსáƒáƒ¤áƒ áƒ—ხრწáƒáƒ¨áƒšáƒ" msgid "Safe overwrite" -msgstr "" +msgstr "უსáƒáƒ¤áƒ áƒ—ხრგáƒáƒ“áƒáƒ¬áƒ”რáƒ" msgid "A&uto save setup" -msgstr "" +msgstr "&პáƒáƒ áƒáƒ›áƒ”ტრების áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შენáƒáƒ®áƒ•áƒ" msgid "Configure options" -msgstr "" +msgstr "პáƒáƒ áƒáƒ›áƒ”ტრების მáƒáƒ áƒ’ებáƒ" msgid "Skin:" -msgstr "" +msgstr "გáƒáƒ áƒ”გნáƒáƒ‘áƒ:" msgid "&Shadows" -msgstr "" +msgstr "ჩრდილები" msgid "Appearance" -msgstr "" +msgstr "გáƒáƒ áƒ”მáƒáƒ¡ იერსáƒáƒ®áƒ”" msgid "Case &insensitive" -msgstr "" +msgstr "დიდი დრპáƒáƒ¢áƒáƒ áƒ áƒáƒ¡áƒáƒ”ბის იგნáƒáƒ áƒ˜" msgid "Use panel sort mo&de" -msgstr "" +msgstr "პáƒáƒœáƒ”ლის დáƒáƒšáƒáƒ’ების რეჟიმის გáƒáƒ›áƒáƒ§áƒ”ნებáƒ" msgid "Show mi&ni-status" msgstr "მი&ნი სტáƒáƒ¢áƒ£áƒ¡áƒ˜" msgid "Use SI si&ze units" -msgstr "" +msgstr "SI სáƒáƒ–áƒáƒ›áƒ˜ ერთეულების გáƒáƒ›áƒáƒ§áƒ”ნებáƒ" msgid "Mi&x all files" -msgstr "" +msgstr "ყველრფáƒáƒ˜áƒšáƒ˜áƒ¡ შერევáƒ" msgid "Show &backup files" -msgstr "" +msgstr "მáƒáƒ áƒ¥áƒáƒ¤áƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბის ჩვენებáƒ" msgid "Show &hidden files" -msgstr "" +msgstr "დáƒáƒ›áƒáƒšáƒ£áƒšáƒ˜ &ფáƒáƒ˜áƒšáƒ”ბის ჩვენებáƒ" msgid "&Fast dir reload" -msgstr "" +msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის სწრáƒáƒ¤áƒ˜ გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" msgid "Ma&rk moves down" -msgstr "" +msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ დáƒáƒ‘ლრჩáƒáƒ›áƒáƒ˜áƒ¢áƒáƒœáƒ¡" msgid "Re&verse files only" -msgstr "" +msgstr "მხáƒáƒšáƒáƒ“ რევერსული ფáƒáƒ˜áƒšáƒ”ბი" msgid "Simple s&wap" -msgstr "" +msgstr "უბრáƒáƒšáƒáƒ“ შეცვლáƒ" msgid "A&uto save panels setup" -msgstr "" +msgstr "პáƒáƒœáƒ”ლების მáƒáƒ áƒ’ების áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შენáƒáƒ®áƒ•áƒ" msgid "Navigation" -msgstr "" +msgstr "ნáƒáƒ•áƒ˜áƒ’áƒáƒªáƒ˜áƒ" msgid "L&ynx-like motion" msgstr "L&ynx-ის მáƒáƒ’ვáƒáƒ áƒ˜ გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ" msgid "Pa&ge scrolling" -msgstr "" +msgstr "გვერდების დáƒáƒ¥áƒáƒ©áƒ•áƒ" msgid "Center &scrolling" -msgstr "" +msgstr "ცენტრიდáƒáƒœ დáƒáƒ¥áƒáƒ©áƒ•áƒ" msgid "&Mouse page scrolling" -msgstr "" +msgstr "გვერდების დáƒáƒ¥áƒáƒ©áƒ•áƒ თáƒáƒ’უნáƒáƒ—ი" msgid "File highlight" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ™áƒ•áƒ”თáƒ" msgid "File &types" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ტიპები" msgid "&Permissions" msgstr "უ&ფლებები" msgid "Quick search" -msgstr "" +msgstr "სწრáƒáƒ¤áƒ˜ ძებნáƒ" msgid "Panel options" -msgstr "" +msgstr "პáƒáƒœáƒ”ლის მáƒáƒ áƒ’ებáƒ" msgid "Information" -msgstr "" +msgstr "ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ" msgid "" "Using the fast reload option may not reflect the exact\n" @@ -1944,13 +1956,13 @@ msgid "&User defined:" msgstr "" msgid "columns" -msgstr "" +msgstr "სვეტები" msgid "User &mini status" msgstr "" msgid "Listing format" -msgstr "" +msgstr "სიის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜" msgid "Executable &first" msgstr "" @@ -1959,7 +1971,7 @@ msgid "&Reverse" msgstr "" msgid "Sort order" -msgstr "" +msgstr "დáƒáƒšáƒáƒ’ების წესი" #. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix msgid "Confirmation|&Delete" @@ -2011,7 +2023,7 @@ msgid "Timeout for freeing VFSs (sec):" msgstr "" msgid "FTP anonymous password:" -msgstr "" +msgstr "áƒáƒœáƒáƒœáƒ˜áƒ›áƒ£áƒ áƒ˜ FTP-ის პáƒáƒ áƒáƒšáƒ˜:" msgid "FTP directory cache timeout (sec):" msgstr "" @@ -2032,10 +2044,10 @@ msgid "Virtual File System Setting" msgstr "ვირტუáƒáƒšáƒ£áƒ áƒ˜ ფáƒáƒ˜áƒšáƒ£áƒ áƒ˜ სისტემის პáƒáƒ áƒáƒ›áƒ”ტრები" msgid "cd" -msgstr "" +msgstr "cd" msgid "Quick cd" -msgstr "" +msgstr "სწრáƒáƒ¤áƒ˜ cd" msgid "Existing filename (filename symlink will point to):" msgstr "" @@ -2045,19 +2057,19 @@ msgid "Symbolic link filename:" msgstr "სიმბáƒáƒšáƒ£áƒ áƒ˜ ბმულის ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი:" msgid "Symbolic link" -msgstr "" +msgstr "სიმბმული" msgid "&Stop" -msgstr "" +msgstr "გáƒáƒ©áƒ”რებáƒ" msgid "&Resume" -msgstr "" +msgstr "გáƒáƒ’რძელებáƒ" msgid "&Kill" -msgstr "" +msgstr "მáƒáƒ™áƒ•áƒšáƒ" msgid "Background jobs" -msgstr "" +msgstr "ფáƒáƒœáƒ£áƒ áƒ˜ áƒáƒ›áƒáƒªáƒáƒœáƒ”ბი" #, c-format msgid "" @@ -2066,22 +2078,22 @@ msgid "" msgstr "" msgid "Secure deletion" -msgstr "" +msgstr "უსáƒáƒ¤áƒ áƒ—ხáƒáƒ“ წáƒáƒ¨áƒšáƒ" msgid "Undelete" -msgstr "" +msgstr "წáƒáƒ¨áƒšáƒ˜áƒ¡ გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" msgid "Synchronous updates" -msgstr "" +msgstr "სინქრáƒáƒœáƒ£áƒšáƒ˜ გáƒáƒœáƒáƒ®áƒšáƒ”ბები" msgid "Synchronous directory updates" msgstr "" msgid "Immutable" -msgstr "" +msgstr "დáƒáƒ£áƒ áƒ¦áƒ•áƒ”ველი" msgid "Append only" -msgstr "" +msgstr "მხáƒáƒšáƒáƒ“ ბáƒáƒšáƒáƒ¨áƒ˜ მიწერáƒ" msgid "No dump" msgstr "" @@ -2090,13 +2102,13 @@ msgid "No update atime" msgstr "" msgid "Compress" -msgstr "" +msgstr "შეკუმშვáƒ" msgid "Compressed clusters" -msgstr "" +msgstr "შეკუმშული კლáƒáƒ¡áƒ¢áƒ”რები" msgid "Compressed dirty file" -msgstr "" +msgstr "შეკუმშული ბინძური ფáƒáƒ˜áƒšáƒ”ბი" msgid "Compression raw access" msgstr "" @@ -2174,34 +2186,34 @@ msgid "set &group ID on execution" msgstr "" msgid "stick&y bit" -msgstr "" +msgstr "წებáƒáƒ‘áƒáƒ•áƒáƒœáƒ˜ ბიტი" msgid "&read by owner" -msgstr "" +msgstr "მფლáƒáƒ‘ლის მიერ წáƒáƒ™áƒ˜áƒ—ხვáƒ" msgid "&write by owner" -msgstr "" +msgstr "მფლáƒáƒ‘ლის მიერ ჩáƒáƒ¬áƒ”რáƒ" msgid "e&xecute/search by owner" -msgstr "" +msgstr "მფლáƒáƒ‘ლის მიწერ მáƒáƒ«áƒ”ბნáƒ/გáƒáƒ¨áƒ•áƒ”ბáƒ" msgid "rea&d by group" -msgstr "" +msgstr "ჯგუფის მიერ წáƒáƒ™áƒ˜áƒ—ხვáƒ" msgid "write by grou&p" -msgstr "" +msgstr "ჯგუფის მიერ ჩáƒáƒ¬áƒ”რáƒ" msgid "execu&te/search by group" -msgstr "" +msgstr "ჯგუფის მიერ მáƒáƒ«áƒ”ბნáƒ/გáƒáƒ¨áƒ•áƒ”ბáƒ" msgid "read &by others" -msgstr "" +msgstr "სხვების მიერ წáƒáƒ™áƒ˜áƒ—ხვáƒ" msgid "wr&ite by others" -msgstr "" +msgstr "სხვების მიერ ჩáƒáƒ¬áƒ”რáƒ" msgid "execute/searc&h by others" -msgstr "" +msgstr "სხვების მიერ მáƒáƒ«áƒ”ბნáƒ/გáƒáƒ¨áƒ•áƒ”ბáƒ" msgid "Name:" msgstr "სáƒáƒ®áƒ”ლი:" @@ -2216,19 +2228,19 @@ msgid "Group name:" msgstr "ჯგუფის სáƒáƒ®áƒ”ლი:" msgid "Chmod command" -msgstr "" +msgstr "Chmod-ის ბრძáƒáƒœáƒ”ბáƒ" msgid "Permission" -msgstr "" +msgstr "წვდáƒáƒ›áƒ" msgid "File" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜" msgid "Set &groups" -msgstr "" +msgstr "ჯგუფების დáƒáƒ§áƒ”ნებáƒ" msgid "Set &users" -msgstr "" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების დáƒáƒ§áƒ”ნებáƒ" msgid "Name" msgstr "სáƒáƒ®áƒ”ლი" @@ -2243,7 +2255,7 @@ msgid "Size" msgstr "ზáƒáƒ›áƒ" msgid "Chown command" -msgstr "" +msgstr "Chmod-ის ბრძáƒáƒœáƒ”ბáƒ" msgid "User name" msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი" @@ -2263,26 +2275,20 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" -msgstr "" +msgstr "%s-ის მიბმáƒ:" msgid "Link" -msgstr "" +msgstr "ბმული" #, c-format msgid "link: %s" -msgstr "" +msgstr "ბმული: %s" #, c-format msgid "symlink: %s" -msgstr "" +msgstr "სიმბმული: %s" #, c-format msgid "Cannot chdir to \"%s\"" @@ -2298,13 +2304,13 @@ msgid "Filtered view" msgstr "გáƒáƒ¤áƒ˜áƒšáƒ¢áƒ áƒ£áƒšáƒ˜ ხედი" msgid "Filter command and arguments:" -msgstr "" +msgstr "ფილტრის ბრძáƒáƒœáƒ”ბრდრáƒáƒ áƒ’უმენტები:" msgid "Edit file" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" msgid "Create a new Directory" -msgstr "" +msgstr "áƒáƒ®áƒáƒšáƒ˜ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის შექმნáƒ" msgid "Enter directory name:" msgstr "შეიყვáƒáƒœáƒ”თ დირექტáƒáƒ áƒ˜áƒ˜áƒ¡ სáƒáƒ®áƒ”ლი:" @@ -2350,10 +2356,10 @@ msgstr "" #, c-format msgid "Symlink '%s' points to:" -msgstr "" +msgstr "სიმბმულის %s მიუთითებს:" msgid "Edit symlink" -msgstr "" +msgstr "სიმბმულის ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #, c-format msgid "edit symlink, unable to remove %s: %s" @@ -2361,16 +2367,16 @@ msgstr "" #, c-format msgid "edit symlink: %s" -msgstr "" +msgstr "სიმბმულის ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ: %s" msgid "FTP to machine" -msgstr "" +msgstr "FTP მáƒáƒœáƒ¥áƒáƒœáƒáƒ›áƒ“ე" msgid "SFTP to machine" msgstr "SFTP მáƒáƒœáƒ¥áƒáƒœáƒáƒ›áƒ“ე" msgid "Shell link to machine" -msgstr "" +msgstr "გáƒáƒ áƒ¡áƒ˜áƒ¡ შეერთებრმáƒáƒœáƒ¥áƒáƒœáƒáƒ›áƒ“ე" msgid "Undelete files on an ext2 file system" msgstr "" @@ -2384,7 +2390,7 @@ msgid "Directory scanning" msgstr "" msgid "Setup" -msgstr "" +msgstr "მáƒáƒ áƒ’ებáƒ" #, c-format msgid "Setup saved to %s" @@ -2398,7 +2404,7 @@ msgid "Cannot execute commands on non-local filesystems" msgstr "" msgid "Parameter" -msgstr "" +msgstr "პáƒáƒ áƒáƒ›áƒ”ტრი" #, c-format msgid "" @@ -2409,14 +2415,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2426,8 +2439,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2454,13 +2467,13 @@ msgstr "" #, no-c-format msgid "%o %d %f%m" -msgstr "" +msgstr "%o %d %f%m" msgid "files" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜" msgid "directory" -msgstr "" +msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" msgid "directories" msgstr "" @@ -2539,7 +2552,7 @@ msgid "" msgstr "" msgid "Non&e" -msgstr "" +msgstr "áƒáƒ áƒªáƒ”რთი" #, c-format msgid "" @@ -2660,6 +2673,15 @@ msgid "" msgstr "" msgid "(stalled)" +msgstr "(დáƒáƒ”კიდáƒ)" + +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" msgstr "" #, c-format @@ -2674,12 +2696,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2731,7 +2747,7 @@ msgstr "" #, c-format msgid "%d:%02d.%02d" -msgstr "" +msgstr "%d:%02d.%02d" #, c-format msgid "ETA %s" @@ -2739,15 +2755,15 @@ msgstr "" #, c-format msgid "%.2f MB/s" -msgstr "" +msgstr "%.2f მბ/წმ" #, c-format msgid "%.2f KB/s" -msgstr "" +msgstr "%.2f კბ/წმ" #, c-format msgid "%ld B/s" -msgstr "" +msgstr "%ld ბ/წმ" msgid "New :" msgstr "" @@ -2780,14 +2796,14 @@ msgid "&Size differs" msgstr "" msgid "File exists" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜ უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს" msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "დáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბული ფáƒáƒ˜áƒšáƒ”ბი: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2814,26 +2830,26 @@ msgid " Total: %s " msgstr " სულ: %s " #, c-format -msgid " Total: %s/%s " -msgstr " სულ: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" -msgstr "" +msgstr "წყáƒáƒ áƒ" msgid "Target" -msgstr "" +msgstr "სáƒáƒ›áƒ˜áƒ–ნე" msgid "Deleting" -msgstr "" +msgstr "წáƒáƒ¨áƒšáƒ" msgid "&Using shell patterns" -msgstr "" +msgstr "გáƒáƒ áƒ¡áƒ˜áƒ¡ შáƒáƒ‘ლáƒáƒœáƒ”ბის გáƒáƒ›áƒáƒ§áƒ”ნებáƒ" msgid "to:" msgstr "" msgid "Follow &links" -msgstr "" +msgstr "&ბმულებზე მიყáƒáƒšáƒ" msgid "Preserve &attributes" msgstr "" @@ -2852,10 +2868,10 @@ msgid "Invalid source pattern '%s'" msgstr "" msgid "File listin&g" -msgstr "" +msgstr "&ფáƒáƒ˜áƒšáƒ”ბის სიáƒ" msgid "&Quick view" -msgstr "" +msgstr "&სწრáƒáƒ¤áƒ˜ ხედი" msgid "&Info" msgstr "&ინფáƒ" @@ -2864,193 +2880,193 @@ msgid "&Tree" msgstr "&ხე" msgid "&Listing format..." -msgstr "" +msgstr "&სიის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." -msgstr "" +msgstr "&ფილტრი..." msgid "&Encoding..." -msgstr "" +msgstr "&კáƒáƒ“რებáƒ..." msgid "FT&P link..." -msgstr "" +msgstr "FT&P შეერთებáƒ..." msgid "S&hell link..." -msgstr "" +msgstr "გáƒáƒ &სის შეერთებáƒ..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" msgstr "&პáƒáƒœáƒ”ლში" msgid "&Rescan" -msgstr "" +msgstr "&თáƒáƒ•áƒ˜áƒ“áƒáƒœ სკáƒáƒœáƒ˜áƒ áƒ”ბáƒ" msgid "&View" msgstr "&ჩვენებáƒ" msgid "Vie&w file..." -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ნáƒáƒ®&ვáƒ..." msgid "&Filtered view" msgstr "გáƒ&ფილტრული ხედი" msgid "&Copy" -msgstr "" +msgstr "&კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" msgid "C&hmod" -msgstr "" +msgstr "რეჯიმი" msgid "&Link" -msgstr "" +msgstr "&ბმული" msgid "&Symlink" -msgstr "" +msgstr "&სიმბმული" msgid "Relative symlin&k" -msgstr "" +msgstr "დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებული სიმბმული" msgid "Edit s&ymlink" -msgstr "" +msgstr "სიმბმულის ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" msgid "Ch&own" -msgstr "" +msgstr "რეჟიმი" msgid "&Advanced chown" -msgstr "" +msgstr "რეჟიმის დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები" msgid "Cha&ttr" -msgstr "" +msgstr "áƒáƒ¢áƒ áƒ˜áƒ‘უტები" msgid "&Rename/Move" -msgstr "" +msgstr "გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ/გáƒáƒ“áƒáƒ¢áƒáƒœáƒ" msgid "&Mkdir" -msgstr "" +msgstr "დირ. შექმნáƒ" msgid "&Quick cd" -msgstr "" +msgstr "სწრáƒáƒ¤áƒ˜ cd" msgid "Select &group" -msgstr "" +msgstr "ჯგუფის მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ" msgid "U&nselect group" -msgstr "" +msgstr "ჯგუფის მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ" msgid "&Invert selection" -msgstr "" +msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ˜áƒ¡ ინვერსიáƒ" msgid "E&xit" -msgstr "" +msgstr "&გáƒáƒ›áƒáƒ¡áƒ•áƒšáƒ" msgid "&User menu" -msgstr "" +msgstr "&მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მენიუ" msgid "&Directory tree" msgstr "&დირექტáƒáƒ áƒ˜áƒ”ბის ხე" msgid "&Find file" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ მáƒáƒ«áƒ”ბნáƒ" msgid "S&wap panels" -msgstr "" +msgstr "პáƒáƒœáƒ”ლების შეცვლáƒ" msgid "Switch &panels on/off" -msgstr "" +msgstr "პáƒáƒœáƒ”ლების ჩáƒáƒ áƒ—/გáƒáƒ›áƒáƒ áƒ—" msgid "&Compare directories" -msgstr "" +msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების შედáƒáƒ áƒ”ბáƒ" msgid "C&ompare files" msgstr "ფáƒ&ილების შედáƒáƒ áƒ”ბáƒ" msgid "E&xternal panelize" -msgstr "" +msgstr "გáƒáƒ áƒ” პáƒáƒœáƒ”ლზე" msgid "Show directory s&izes" -msgstr "" +msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების ზáƒáƒ›áƒ”ბის ჩვენებáƒ" msgid "Command &history" -msgstr "" +msgstr "ბრძáƒáƒœáƒ”ბების ისტáƒáƒ áƒ˜áƒ" msgid "Viewed/edited files hi&story" -msgstr "" +msgstr "ნáƒáƒœáƒáƒ®áƒ˜/ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბული ფáƒáƒ˜áƒšáƒ”ბის ისტáƒáƒ áƒ˜áƒ" msgid "Di&rectory hotlist" -msgstr "" +msgstr "áƒáƒ®áƒšáƒáƒ®áƒáƒœáƒ¡ ნáƒáƒœáƒáƒ®áƒ˜ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები" msgid "&Active VFS list" -msgstr "" +msgstr "áƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ˜ VFS-ის სიáƒ" msgid "&Background jobs" -msgstr "" +msgstr "ფáƒáƒœáƒ£áƒ áƒ˜ áƒáƒ›áƒáƒªáƒáƒœáƒ”ბი" msgid "Screen lis&t" -msgstr "" +msgstr "ეკრáƒáƒœáƒ˜áƒ¡ სიáƒ" msgid "&Undelete files (ext2fs only)" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ”ბის áƒáƒ¦áƒ“გენრ(მხáƒáƒšáƒáƒ“ ext2fs)" msgid "&Listing format edit" -msgstr "" +msgstr "&სიის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" msgid "Edit &extension file" -msgstr "" +msgstr "გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბის ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" msgid "Edit &menu file" -msgstr "" +msgstr "მენიუს ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" msgid "Edit hi&ghlighting group file" -msgstr "" +msgstr "გáƒáƒ›áƒáƒ™áƒ•áƒ”თის ჯგუფის ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" msgid "&Configuration..." -msgstr "&კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ" +msgstr "&კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ..." msgid "&Layout..." msgstr "გáƒáƒœ&ლáƒáƒ’ებáƒ..." msgid "&Panel options..." -msgstr "" +msgstr "პáƒáƒœáƒ”ლის მáƒáƒ áƒ’ებáƒ..." msgid "C&onfirmation..." -msgstr "" +msgstr "დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბები..." msgid "&Appearance..." -msgstr "" +msgstr "გáƒáƒ áƒ”გნáƒáƒ‘áƒ..." msgid "&Display bits..." -msgstr "" +msgstr "ნáƒáƒ©áƒ•áƒ”ნები ნáƒáƒ¬áƒ˜áƒšáƒ”ბი..." msgid "&Virtual FS..." msgstr "&ვირტუáƒáƒšáƒ£áƒ áƒ˜ FS..." msgid "Panels:" -msgstr "" +msgstr "პáƒáƒœáƒ”ლები:" #, c-format msgid "You have %zu opened screen. Quit anyway?" msgid_plural "You have %zu opened screens. Quit anyway?" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "გáƒáƒ¥áƒ•áƒ— %zu ღირეკრáƒáƒœáƒ˜. მáƒáƒ˜áƒœáƒª გáƒáƒáƒ’რძელებთ?" +msgstr[1] "გáƒáƒ¥áƒ•áƒ— %zu ღირეკრáƒáƒœáƒ˜. მáƒáƒ˜áƒœáƒª გáƒáƒáƒ’რძელებთ?" msgid "The Midnight Commander" -msgstr "" +msgstr "The Midnight Commander" msgid "Do you really want to quit the Midnight Commander?" -msgstr "" +msgstr "ნáƒáƒ›áƒ“ვილáƒáƒ“ გნებáƒáƒ•áƒ— Midnight Commander-დáƒáƒœ გáƒáƒ¡áƒ•áƒšáƒ?" msgid "&Above" -msgstr "" +msgstr "ზემáƒáƒ“áƒáƒœ" msgid "&Left" msgstr "მáƒáƒ &ცხნივ" msgid "&Below" -msgstr "" +msgstr "ქვემáƒáƒ“áƒáƒœ" msgid "&Right" msgstr "მáƒáƒ &ჯვნივ" @@ -3068,23 +3084,23 @@ msgid "ButtonBar|Mkdir" msgstr "დირ. შექმნáƒ" msgid "&Chdir" -msgstr "" +msgstr "Chdir" msgid "&Again" -msgstr "" +msgstr "კიდევ" msgid "Pane&lize" -msgstr "" +msgstr "პáƒáƒœáƒ”ლზე გáƒáƒ¢áƒáƒœáƒ" msgid "&View - F3" msgstr "&ჩვენებრ- F3" msgid "&Edit - F4" -msgstr "" +msgstr "ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბრ- F4" #, c-format msgid "Found: %lu" -msgstr "" +msgstr "ნáƒáƒžáƒáƒ•áƒœáƒ˜áƒ: %lu" msgid "Malformed regular expression" msgstr "" @@ -3102,7 +3118,7 @@ msgid "S&kip hidden" msgstr "" msgid "Content:" -msgstr "" +msgstr "შემცველáƒáƒ‘áƒ:" msgid "Sea&rch for content" msgstr "" @@ -3117,7 +3133,7 @@ msgid "Fir&st hit" msgstr "" msgid "Find File" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ძებნáƒ" msgid "Start at:" msgstr "" @@ -3130,7 +3146,7 @@ msgid "Grepping in %s" msgstr "" msgid "Finished" -msgstr "" +msgstr "დáƒáƒ¡áƒ áƒ£áƒšáƒ“áƒ" #, c-format msgid "Finished (ignored %zu directory)" @@ -3147,7 +3163,7 @@ msgid "Find File: \"%s\"" msgstr "" msgid "Searching" -msgstr "" +msgstr "ძებნáƒ" msgid "Change &to" msgstr "" @@ -3156,7 +3172,7 @@ msgid "&Free VFSs now" msgstr "" msgid "&Refresh" -msgstr "" +msgstr "&გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" msgid "&Add current" msgstr "" @@ -3171,10 +3187,10 @@ msgid "New &entry" msgstr "" msgid "&Insert" -msgstr "" +msgstr "&ჩáƒáƒ¡áƒ›áƒ" msgid "&Remove" -msgstr "" +msgstr "&წáƒáƒ¨áƒšáƒ" msgid "Subgroup - press ENTER to see list" msgstr "" @@ -3260,131 +3276,131 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format msgid "Type: %s" -msgstr "" +msgstr "ტიპი: %s" msgid "non-local vfs" -msgstr "" +msgstr "áƒáƒ áƒáƒšáƒáƒ™áƒáƒšáƒ£áƒ áƒ˜ vfs" #, c-format msgid "Device: %s" -msgstr "" +msgstr "მáƒáƒ¬áƒ§áƒáƒ‘ილáƒáƒ‘áƒ: %s" #, c-format msgid "Filesystem: %s" -msgstr "" +msgstr "ფáƒáƒ˜áƒšáƒ£áƒ áƒ˜ სისტემáƒ: %s" #, c-format msgid "Accessed: %s" -msgstr "" +msgstr "ბáƒáƒšáƒ წვდáƒáƒ›áƒ: %s" #, c-format msgid "Modified: %s" -msgstr "" +msgstr "ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბულიáƒ: %s" #. TRANSLATORS: Time of last status change as in stat(2) man. #, c-format msgid "Changed: %s" -msgstr "" +msgstr "შეცვლილიáƒ: %s" #, c-format msgid "Dev. type: major %lu, minor %lu" -msgstr "" +msgstr "მáƒáƒ¬áƒ§. ტიპი: ზედáƒ%lu, ქვედრ%lu" #, c-format msgid "Size: %s" -msgstr "" +msgstr "ზáƒáƒ›áƒ: %s" #, c-format msgid " (%lu block)" msgid_plural " (%lu blocks)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] " (%lu ბლáƒáƒ™áƒ˜)" +msgstr[1] " (%lu ბლáƒáƒ™áƒ˜)" #, c-format msgid "Owner: %s/%s" -msgstr "" +msgstr "მფლáƒáƒ‘ელი: %s/%s" #, c-format msgid "Links: %d" -msgstr "" +msgstr "ბმულები: %d" msgid "Attributes: not supported" -msgstr "" +msgstr "áƒáƒ¢áƒ áƒ˜áƒ‘უტები: მხáƒáƒ áƒ“áƒáƒ£áƒ­áƒ”რელიáƒ" #, c-format msgid "Attributes: %s" -msgstr "" +msgstr "áƒáƒ¢áƒ áƒ˜áƒ‘უტები: %s" msgid "Attributes: unavailable" -msgstr "" +msgstr "áƒáƒ¢áƒ áƒ˜áƒ‘უტები:ხელმიუწვდáƒáƒ›áƒ”ლიáƒ" #, c-format msgid "Mode: %s (%04o)" -msgstr "" +msgstr "რეჟიმი: %s (%04o)" #, c-format msgid "Location: %Xh:%Xh" -msgstr "" +msgstr "მდებáƒáƒ áƒ”áƒáƒ‘áƒ: %Xh:%Xh" msgid "&Equal split" msgstr "&თáƒáƒœáƒáƒ‘რáƒáƒ“ გáƒáƒ§áƒáƒ¤áƒ" msgid "&Menubar visible" -msgstr "" +msgstr "მენიუს ზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒ" msgid "Command &prompt" -msgstr "" +msgstr "ბრძáƒáƒœáƒ”ბის სტრიქáƒáƒœáƒ˜" msgid "&Keybar visible" -msgstr "" +msgstr "ღილáƒáƒ™áƒ”ბის ზáƒáƒšáƒ˜" msgid "H&intbar visible" -msgstr "" +msgstr "მინიშნების ზáƒáƒšáƒ˜" msgid "&XTerm window title" -msgstr "" +msgstr "Xterm-ის ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ სáƒáƒ—áƒáƒ£áƒ áƒ˜" msgid "&Show free space" -msgstr "" +msgstr "თáƒáƒ•áƒ˜áƒ¡áƒ£áƒ¤áƒáƒšáƒ˜ áƒáƒ“გილის ჩვენებáƒ" msgid "Panel split" msgstr "პáƒáƒœáƒ”ლის გáƒáƒ§áƒáƒ¤áƒ" msgid "Console output" -msgstr "" +msgstr "კáƒáƒœáƒ¡áƒáƒšáƒ¨áƒ˜ გáƒáƒ›áƒáƒ¢áƒáƒœáƒ" msgid "&Vertical" -msgstr "" +msgstr "ვერტიკáƒáƒšáƒ£áƒ áƒ˜" msgid "&Horizontal" -msgstr "" +msgstr "ჰáƒáƒ áƒ˜áƒ–áƒáƒœáƒ¢áƒáƒšáƒ£áƒ áƒ˜" msgid "Output lines:" -msgstr "" +msgstr "გáƒáƒ›áƒáƒ¢áƒáƒœáƒ˜áƒ¡ ხáƒáƒ–ები:" msgid "Layout" msgstr "გáƒáƒœáƒšáƒáƒ’ებáƒ" msgid "Memory exhausted!" -msgstr "" +msgstr "მეხსიერებრგáƒáƒ“áƒáƒ•áƒ¡áƒ”ბულიáƒ!" #. TRANSLATORS: one single character to represent 'unsorted' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|u" -msgstr "" +msgstr "sort|u" msgid "&Unsorted" -msgstr "" +msgstr "&დáƒáƒ£áƒšáƒáƒ’ებელი" #. TRANSLATORS: one single character to represent 'name' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|n" -msgstr "" +msgstr "sort|n" msgid "&Name" msgstr "&სáƒáƒ®áƒ”ლი" @@ -3392,23 +3408,23 @@ msgstr "&სáƒáƒ®áƒ”ლი" #. TRANSLATORS: one single character to represent 'version' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|v" -msgstr "" +msgstr "sort|v" msgid "&Version" -msgstr "" +msgstr "&ვერსიáƒ" #. TRANSLATORS: one single character to represent 'extension' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|e" -msgstr "" +msgstr "sort|e" msgid "E&xtension" -msgstr "" +msgstr "&გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒ" #. TRANSLATORS: one single character to represent 'size' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|s" -msgstr "" +msgstr "sort|s" msgid "&Size" msgstr "&ზáƒáƒ›áƒ" @@ -3419,7 +3435,7 @@ msgstr "ბლáƒáƒ™áƒ˜áƒ¡ ზáƒáƒ›áƒ" #. TRANSLATORS: one single character to represent 'Modify time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|m" -msgstr "" +msgstr "sort|m" msgid "&Modify time" msgstr "&ცვლილების დრáƒ" @@ -3427,7 +3443,7 @@ msgstr "&ცვლილების დრáƒ" #. TRANSLATORS: one single character to represent 'Access time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|a" -msgstr "" +msgstr "sort|a" msgid "&Access time" msgstr "&წვდáƒáƒ›áƒ˜áƒ¡ დრáƒ" @@ -3435,57 +3451,57 @@ msgstr "&წვდáƒáƒ›áƒ˜áƒ¡ დრáƒ" #. TRANSLATORS: one single character to represent 'Change time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|h" -msgstr "" +msgstr "sort|h" msgid "C&hange time" msgstr "დ&რáƒáƒ˜áƒ¡ შეცვლáƒ" msgid "Perm" -msgstr "" +msgstr "წვდáƒáƒ›áƒ" msgid "Nl" -msgstr "" +msgstr "Nl" #. TRANSLATORS: one single character to represent 'inode' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|i" -msgstr "" +msgstr "sort|i" msgid "&Inode" -msgstr "" +msgstr "&Inode" msgid "UID" -msgstr "" +msgstr "UID" msgid "GID" -msgstr "" +msgstr "GID" msgid "Owner" -msgstr "" +msgstr "მფლáƒáƒ‘ელი" msgid "Group" -msgstr "" +msgstr "ჯგუფი" msgid "[dev]" -msgstr "" +msgstr "[dev]" msgid "UP--DIR" msgstr "ზედáƒ-დირექტáƒáƒ áƒ˜áƒ" msgid "SYMLINK" -msgstr "" +msgstr "სიმბმული" msgid "SUB-DIR" -msgstr "" +msgstr "ქვე-სáƒáƒ¥" msgid "" -msgstr "" +msgstr "" #, c-format msgid "%s in %d file" msgid_plural "%s in %d files" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%s %d ფáƒáƒ˜áƒšáƒ¨áƒ˜" +msgstr[1] "%s %d ფáƒáƒ˜áƒšáƒ¨áƒ˜" msgid "Panelize" msgstr "პáƒáƒœáƒ”ლში" @@ -3494,16 +3510,19 @@ msgid "Unknown tag on display format:" msgstr "" msgid "&Files only" -msgstr "" +msgstr "&მხáƒáƒšáƒáƒ“ ფáƒáƒ˜áƒšáƒ”ბი" msgid "&Case sensitive" -msgstr "" +msgstr "&დიდი თუ პáƒáƒ¢áƒáƒ áƒ სიმბáƒáƒšáƒáƒ”ბი" msgid "Select" -msgstr "" +msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ" msgid "Unselect" -msgstr "" +msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ" + +msgid "Filter" +msgstr "ფილტრი" msgid "Do you really want to execute?" msgstr "" @@ -3515,22 +3534,22 @@ msgid "User supplied format looks invalid, reverting to default." msgstr "" msgid "&Add new" -msgstr "" +msgstr "&áƒáƒ®áƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" msgid "External panelize" -msgstr "" +msgstr "გáƒáƒ áƒ” პáƒáƒœáƒ”ლზე" msgid "Other command" -msgstr "" +msgstr "სხვრბრძáƒáƒœáƒ”ბáƒ" msgid "Command" -msgstr "" +msgstr "ბრძáƒáƒœáƒ”ბáƒ" msgid "Add to external panelize" -msgstr "" +msgstr "გáƒáƒ áƒ” პáƒáƒœáƒ”ლზე დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" msgid "Enter command label:" -msgstr "" +msgstr "შეიყვáƒáƒœáƒ”თ ბრძáƒáƒœáƒ”ბის ჭდე:" #, c-format msgid "" @@ -3582,7 +3601,7 @@ msgstr "" #, c-format msgid "Delete %s?" -msgstr "" +msgstr "წáƒáƒ•áƒ¨áƒáƒšáƒ \"%s\"?" msgid "ButtonBar|Static" msgstr "სტáƒáƒ¢" @@ -3616,7 +3635,7 @@ msgid "Cannot find node %s in help file" msgstr "" msgid "Help" -msgstr "" +msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" msgid "ButtonBar|Index" msgstr "" @@ -3651,7 +3670,7 @@ msgstr "" #. TRANSLATORS: This label appears near learned keys. Keep it short. msgid "OK" -msgstr "" +msgstr "დიáƒáƒ®" msgid "" "It seems that all your keys already\n" @@ -3659,7 +3678,7 @@ msgid "" msgstr "" msgid "&Discard" -msgstr "" +msgstr "&გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" msgid "" "Great! You have a complete terminal database!\n" @@ -3701,10 +3720,10 @@ msgid "- < No translation >" msgstr "" msgid "%b %e %Y" -msgstr "" +msgstr "%b %e %Y" msgid "%b %e %H:%M" -msgstr "" +msgstr "%b %e %H:%M" #, c-format msgid "" @@ -3816,7 +3835,7 @@ msgid "Cache directory:" msgstr "" msgid "Debug" -msgstr "" +msgstr "გáƒáƒ›áƒáƒ áƒ—ვáƒ" msgid "ERROR:" msgstr "შეცდáƒáƒ›áƒ:" @@ -3893,6 +3912,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -3942,15 +3964,15 @@ msgstr "fish: იკითხებრ%s დირექტáƒáƒ áƒ˜áƒ..." #, c-format msgid "%s: done." -msgstr "" +msgstr "%s: დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბულიáƒ." #, c-format msgid "%s: failure" -msgstr "" +msgstr "%s: შეცდáƒáƒ›áƒ" #, c-format msgid "fish: store %s: sending command..." -msgstr "" +msgstr "fish: სáƒáƒªáƒáƒ•áƒ˜ %s: ბრძáƒáƒœáƒ”ბის გáƒáƒ’ზáƒáƒ•áƒœáƒ..." msgid "fish: Local read failed, sending zeros" msgstr "" @@ -3999,7 +4021,7 @@ msgid "ftpfs: Login incorrect for user %s " msgstr "" msgid "ftpfs: Invalid host name." -msgstr "ftpfs: ჰáƒáƒ¡áƒ¢áƒ˜áƒ¡ სáƒáƒ®áƒ”ლი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ" +msgstr "ftpfs: ჰáƒáƒ¡áƒ¢áƒ˜áƒ¡ სáƒáƒ®áƒ”ლი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ." #, c-format msgid "ftpfs: %s" @@ -4020,6 +4042,21 @@ msgstr "ftpfs: სერვერთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბრვ msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" @@ -4310,7 +4347,7 @@ msgid "He&xadecimal offset" msgstr "" msgid "Goto" -msgstr "" +msgstr "გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ" msgid "ButtonBar|Ascii" msgstr "Ascii" diff --git a/mcsrc/po/kk.po b/mcsrc/po/kk.po index 81159128..09c7a6ad 100644 --- a/mcsrc/po/kk.po +++ b/mcsrc/po/kk.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Aidos Kakimzhanov , 2016\n" "Language-Team: Kazakh (http://www.transifex.com/mc/mc/language/kk/)\n" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3256,7 +3263,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3501,6 +3508,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3889,6 +3899,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4016,6 +4029,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/ko.po b/mcsrc/po/ko.po index 0be4f78a..3b5c035f 100644 --- a/mcsrc/po/ko.po +++ b/mcsrc/po/ko.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Junghee Lee , 2022\n" "Language-Team: Korean (http://www.transifex.com/mc/mc/language/ko/)\n" @@ -134,7 +134,7 @@ msgid "" "Default skin has been loaded" msgstr "" "'%s' ìŠ¤í‚¨ì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다.\n" -"기본 ìŠ¤í‚¨ì´ ë¡œë“œë¨" +"기본 ìŠ¤í‚¨ì´ ë¶ˆëŸ¬ì˜¤ê¸° ë˜ì—ˆìŠµë‹ˆë‹¤" #, c-format msgid "" @@ -142,7 +142,7 @@ msgid "" "Default skin has been loaded" msgstr "" "'%s' ìŠ¤í‚¨ì„ êµ¬ë¬¸ 분ì„í•  수 없습니다.\n" -"기본 ìŠ¤í‚¨ì´ ë¡œë“œë¨" +"기본 ìŠ¤í‚¨ì´ ë¶ˆëŸ¬ì˜¤ê¸° ë˜ì—ˆìŠµë‹ˆë‹¤" #, c-format msgid "" @@ -152,7 +152,7 @@ msgid "" msgstr "" "트루컬러를 지ì›í•˜ëŠ” '%s' ìŠ¤í‚¨ì„ ì‚¬ìš©í•  수 없습니다:\n" "%s\n" -"기본 ìŠ¤í‚¨ì´ ë¡œë“œë¨" +"기본 ìŠ¤í‚¨ì´ ë¶ˆëŸ¬ì˜¤ê¸° ë˜ì—ˆìŠµë‹ˆë‹¤" #, c-format msgid "" @@ -160,9 +160,9 @@ msgid "" "on non-256 colors terminal.\n" "Default skin has been loaded" msgstr "" -"256ìƒ‰ì´ ì•„ë‹Œ '%s'ìŠ¤í‚¨ì„ ì‚¬ìš©í•  수 없습니다\n" -"256 ìƒ‰ì´ ì•„ë‹Œ 터미ë„ì—ì„œ 지ì›ë¨\n" -"기본 ìŠ¤í‚¨ì´ ë¡œë“œë¨" +"256ìƒ‰ì´ ì•„ë‹Œ 터미ë„ì—ì„œ 256ìƒ‰ì„ ì§€ì›í•˜ëŠ”\n" +"'%s' ìŠ¤í‚¨ì„ ì‚¬ìš©í•  수 없습니다.\n" +"기본 ìŠ¤í‚¨ì´ ë¶ˆëŸ¬ì˜¤ê¸° ë˜ì—ˆìŠµë‹ˆë‹¤" msgid "True color not supported with ncurses." msgstr "트루 컬러는 ncursesì—ì„œ ì§€ì› ë˜ì§€ 않습니다." @@ -240,7 +240,7 @@ msgid "Function key 20" msgstr "F20" msgid "Completion/M-tab" -msgstr "완료/M-tab" +msgstr "완성/M-tab" msgid "BackTab/S-tab" msgstr "뒤로 탭/S-tab" @@ -532,6 +532,9 @@ msgstr "" "Select()ì—ì„œ 하위 í”„ë¡œì„¸ìŠ¤ì˜ ë°ì´í„°ë¥¼ ì½ëŠ” ë„중 예ìƒì¹˜ 못한 오류 ë°œìƒ:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1083,7 +1086,7 @@ msgid "Enter file name:" msgstr "íŒŒì¼ ì´ë¦„ ìž…ë ¥:" msgid "Change line breaks to:" -msgstr "줄바꿈 변경:" +msgstr "줄 ë°”ê¿ˆì„ ë‹¤ìŒìœ¼ë¡œ 변경:" msgid "Save As" msgstr "다른ì´ë¦„으로 저장" @@ -1207,8 +1210,8 @@ msgstr "먼저 í…스트 블ë¡ì„ ê°•ì¡° 표시해야 함" msgid "Run sort" msgstr "ì •ë ¬ 실행" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "í™”ì´íŠ¸ 스페ì´ìŠ¤ë¡œ êµ¬ë¶„ëœ ì •ë ¬ 옵션 ìž…ë ¥(맨 페ì´ì§€ 참조):" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "ì •ë ¬" @@ -1251,7 +1254,7 @@ msgid "Insert literal" msgstr "í…스트 삽입" msgid "Press any key:" -msgstr "아무 키나 누르십시오:" +msgstr "아무 키나 누르기:" msgid "" "Current text was modified without a file save.\n" @@ -1264,7 +1267,7 @@ msgid "Cancel" msgstr "취소" msgid "Collect completions" -msgstr "수집 완료" +msgstr "완성 ì •ë³´ 수집" msgid "NoName" msgstr "ì´ë¦„없습니다" @@ -1279,7 +1282,7 @@ msgid "Delete macro" msgstr "매í¬ë¡œ ì‚­ì œ" msgid "Press macro hotkey:" -msgstr "매í¬ë¡œ 단축키 누름:" +msgstr "매í¬ë¡œ 단축키 누르기:" msgid "Macro not deleted" msgstr "매í¬ë¡œê°€ ì‚­ì œë˜ì§€ ì•ŠìŒ" @@ -1333,7 +1336,7 @@ msgid "To&ggle mark" msgstr "표시 전환(&G)" msgid "&Mark columns" -msgstr "í–‰ 표시(&M)" +msgstr "ì—´ 표시(&M)" msgid "Mark &all" msgstr "ëª¨ë‘ í‘œì‹œ(&A)" @@ -1375,16 +1378,16 @@ msgid "&Replace..." msgstr "바꾸기(&R)..." msgid "&Toggle bookmark" -msgstr "ë¶ë§ˆí¬ 전환(&T)" +msgstr "바로찾기 전환(&T)" msgid "&Next bookmark" -msgstr "ë‹¤ìŒ ë¶ë§ˆí¬(&N)" +msgstr "ë‹¤ìŒ ë°”ë¡œì°¾ê¸°(&N)" msgid "&Prev bookmark" -msgstr "ì´ì „ ë¶ë§ˆí¬(&P)" +msgstr "ì´ì „ 바로찾기(&P)" msgid "&Flush bookmarks" -msgstr "ë¶ë§ˆí¬ 정리(&F)" +msgstr "바로찾기 갱신(&F)" msgid "&Go to line..." msgstr "행으로 ì´ë™(&G)..." @@ -2244,7 +2247,7 @@ msgid "&Marked all" msgstr "ëª¨ë‘ í‘œì‹œë¨(&M)" msgid "S&et marked" -msgstr "í‘œì‹œë¨ ì„¤ì •(&E)" +msgstr "í‘œì‹œë¨ ì§€ì •í•˜ê¸°(&E)" msgid "C&lear marked" msgstr "í‘œì‹œë¨ ì§€ìš°ê¸°(&L)" @@ -2367,15 +2370,9 @@ msgstr "íŒŒì¼ íƒœê·¸ë¨, 디렉터리 ë³€ê²½ì„ í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" msgid "Cannot change directory" msgstr "디렉터리를 변경할 수 없습니다" -msgid "Filter" -msgstr "í•„í„°" - -msgid "Set expression for filtering filenames" -msgstr "íŒŒì¼ ì´ë¦„ì„ í•„í„°ë§í•˜ê¸° 위한 í‘œí˜„ì‹ ì„¤ì •" - #, c-format msgid "Link %s to:" -msgstr "%sì— ë§í¬:" +msgstr "%s ë§í¬ 대ìƒ:" msgid "Link" msgstr "ë§í¬" @@ -2519,18 +2516,23 @@ msgstr "" msgid "Pipe failed" msgstr "파ì´í”„ 실패" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s íŒŒì¼ ì˜¤ë¥˜" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"%smc.ext 파ì¼ì˜ 형ì‹ì´ 버전 3.0으로 변경ë˜ì—ˆìŠµë‹ˆë‹¤. 설치가 실패한 것 같습니" -"다. 미드나잇 ì»¤ë§¨ë” íŒ¨í‚¤ì§€ì—ì„œ 새 ì‚¬ë³¸ì„ ê°€ì ¸ì˜¤ì„¸ìš”." #, c-format msgid "%s file error" @@ -2538,11 +2540,9 @@ msgstr "%s íŒŒì¼ ì˜¤ë¥˜" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"버전 3.0ì—서는 %s 파ì¼ì˜ 형ì‹ì´ 변경ë˜ì—ˆìŠµë‹ˆë‹¤. %smc.extì—ì„œ 복사하거나 쓰기 " -"ë°©ë²•ì˜ ì˜ˆì œë¡œ ê·¸ 파ì¼ì„ 사용할 수 있습니다." msgid "DialogTitle|Copy" msgstr "대화ìƒìžì œëª©|복사" @@ -2837,6 +2837,15 @@ msgstr "" msgid "(stalled)" msgstr "(지연ë¨)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "ë³´ì¡´(&K)" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2853,12 +2862,6 @@ msgstr "" "\"%s\" ëŒ€ìƒ íŒŒì¼ì„ ë‹«ì„ ìˆ˜ 없습니다\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "불완전한 파ì¼ì´ 검색ë˜ì—ˆìŠµë‹ˆë‹¤. 파ì¼ì„ 보존할까요?" - -msgid "&Keep" -msgstr "ë³´ì¡´(&K)" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2977,8 +2980,8 @@ msgid "Background process: File exists" msgstr "백그ë¼ìš´ë“œ 프로세스: íŒŒì¼ ì¡´ìž¬" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "ì²˜ë¦¬ëœ íŒŒì¼: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3005,8 +3008,8 @@ msgid " Total: %s " msgstr " ì „ì²´: %s " #, c-format -msgid " Total: %s/%s " -msgstr " ì „ì²´: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "ì›ë³¸" @@ -3057,8 +3060,8 @@ msgstr "트리구조(&T)" msgid "&Listing format..." msgstr "ëª©ë¡ í˜•ì‹(&L)..." -msgid "S&ort order..." -msgstr "ì •ë ¬ 순서(&O)..." +msgid "&Sort order..." +msgstr "" msgid "&Filter..." msgstr "í•„í„°(&F)..." @@ -3072,8 +3075,8 @@ msgstr "FTP ë§í¬(&P)..." msgid "S&hell link..." msgstr "쉘 ë§í¬(&H)..." -msgid "&SFTP link..." -msgstr "SFTP ë§í¬(&S)..." +msgid "SFTP li&nk..." +msgstr "" msgid "Paneli&ze" msgstr "íŒ¨ë„ í¬ê¸°ì¡°ì •" @@ -3453,8 +3456,8 @@ msgid "No space information" msgstr "공간 ì •ë³´ 없습니다" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "사용 가능한 공간: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3696,6 +3699,9 @@ msgstr "ì„ íƒ" msgid "Unselect" msgstr "ì„ íƒ í•´ì œ" +msgid "Filter" +msgstr "í•„í„°" + msgid "Do you really want to execute?" msgstr "ì •ë§ë¡œ 실행하시겠습니까?" @@ -3766,11 +3772,11 @@ msgstr "" #, c-format msgid "Copy \"%s\" directory to:" -msgstr "%s 디렉터리를 ë‹¤ìŒ ìœ„ì¹˜ì— ë³µì‚¬:" +msgstr "%s 디렉터리를 ë‹¤ìŒ ìœ„ì¹˜ë¡œ 복사:" #, c-format msgid "Move \"%s\" directory to:" -msgstr "%s 디렉터리를 다ìŒìœ¼ë¡œ ì´ë™:" +msgstr "%s 디렉터리를 ë‹¤ìŒ ìœ„ì¹˜ë¡œ ì´ë™:" #, c-format msgid "" @@ -4134,6 +4140,10 @@ msgstr "" "%s\n" "파ì¼ì˜ 예기치 ì•Šì€ ë" +#, fuzzy +msgid "Inconsistent archive" +msgstr "ìž˜ëª»ëœ tar 압축파ì¼" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4177,7 +4187,7 @@ msgid "fish: Sending initial line..." msgstr "fish: 초기화 ë¼ì¸ 보내기..." msgid "fish: Handshaking version..." -msgstr "fish: 핸드셰ì´í‚¹ 버전..." +msgstr "fish: 주고받기 버전..." msgid "fish: Getting host info..." msgstr "fish: 호스트 ì •ë³´ 가져오는 중..." @@ -4266,6 +4276,21 @@ msgstr "ftpfs: 서버 ì—°ê²° 실패: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "ìž¬ì‹œë„ ëŒ€ê¸° 중... %d(Control-Gê°€ 취소ë¨)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: ìž˜ëª»ëœ ì£¼ì†Œ 패밀리" diff --git a/mcsrc/po/kw.po b/mcsrc/po/kw.po index 333a3521..3c339b81 100644 --- a/mcsrc/po/kw.po +++ b/mcsrc/po/kw.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Cornish (http://www.transifex.com/mc/mc/language/kw/)\n" @@ -15,7 +15,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n == 1 ? 0 : n == 2 ? 1 : 2);\n" +"Plural-Forms: nplurals=6; plural=n == 0 ? 0 : n == 1 ? 1 : (n % 100 == 2 || " +"n % 100 == 22 || n % 100 == 42 || n % 100 == 62 || n % 100 == 82) || n % " +"1000 == 0 && (n % 100000 >= 1000 && n % 100000 <= 20000 || n % 100000 == " +"40000 || n % 100000 == 60000 || n % 100000 == 80000) || n != 0 && n % " +"1000000 == 100000 ? 2 : (n % 100 == 3 || n % 100 == 23 || n % 100 == 43 || n " +"% 100 == 63 || n % 100 == 83) ? 3 : n != 1 && (n % 100 == 1 || n % 100 == 21 " +"|| n % 100 == 41 || n % 100 == 61 || n % 100 == 81) ? 4 : 5;\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -500,6 +506,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1123,7 +1132,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2258,12 +2267,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2404,14 +2407,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2421,8 +2431,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2657,6 +2667,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2669,12 +2688,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2781,7 +2794,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2809,7 +2822,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2861,7 +2874,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2876,7 +2889,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3032,6 +3045,9 @@ msgid_plural "You have %zu opened screens. Quit anyway?" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" msgid "The Midnight Commander" msgstr "" @@ -3134,6 +3150,9 @@ msgid_plural "Finished (ignored %zu directories)" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" #, c-format msgid "Find File: \"%s\". Content: \"%s\"" @@ -3257,7 +3276,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3302,6 +3321,9 @@ msgid_plural " (%lu blocks)" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" #, c-format msgid "Owner: %s/%s" @@ -3485,6 +3507,9 @@ msgid_plural "%s in %d files" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" msgid "Panelize" msgstr "" @@ -3504,6 +3529,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3892,6 +3920,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4019,6 +4050,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/lt.po b/mcsrc/po/lt.po index dc21d56b..1cd1ab69 100644 --- a/mcsrc/po/lt.po +++ b/mcsrc/po/lt.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Mantas KriauÄiÅ«nas Baltix , 2020\n" "Language-Team: Lithuanian (http://www.transifex.com/mc/mc/language/lt/)\n" @@ -530,6 +530,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1169,8 +1172,8 @@ msgstr "" msgid "Run sort" msgstr "Rikiuoti" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Ä®veskite rikiavimo parinktis (žiÅ«rÄ—kite 'manpage') atskirtas tarpais:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Rikiuoti" @@ -2314,12 +2317,6 @@ msgstr "Failai pažymÄ—ti, norite įvykdyti „cd“?" msgid "Cannot change directory" msgstr " Nepavyko pakeisti aplanko " -msgid "Filter" -msgstr "Filtras" - -msgid "Set expression for filtering filenames" -msgstr "Failų vardų filtro iÅ¡raiÅ¡ka" - #, c-format msgid "Link %s to:" msgstr "Sukurti nuorodÄ… iÅ¡ „%s“ į:" @@ -2460,14 +2457,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s failo klaida" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2477,8 +2481,8 @@ msgstr "%s failo klaida" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2737,6 +2741,15 @@ msgstr "" msgid "(stalled)" msgstr "(sustojo)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "IÅ¡lai&kyti" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2749,12 +2762,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Gautas nepilnas failas. Ar jį iÅ¡laikyti?" - -msgid "&Keep" -msgstr "IÅ¡lai&kyti" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2867,7 +2874,7 @@ msgid "Background process: File exists" msgstr "Foninis procesas: failas egzistuoja" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2895,7 +2902,7 @@ msgid " Total: %s " msgstr "IÅ¡ viso: %s" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2947,7 +2954,7 @@ msgstr "&Medis" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2962,7 +2969,7 @@ msgstr "FT&P ryÅ¡ys..." msgid "S&hell link..." msgstr "Apli&nkos ryÅ¡ys..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3347,7 +3354,7 @@ msgid "No space information" msgstr "NÄ—ra informacijos apie vietÄ…" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3596,6 +3603,9 @@ msgstr "Pasirinkti" msgid "Unselect" msgstr "Nebesirinkti" +msgid "Filter" +msgstr "Filtras" + msgid "Do you really want to execute?" msgstr "" @@ -4018,6 +4028,10 @@ msgstr "" "NetikÄ—ta failo pabaiga\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Nevientisas tar archyvas" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4145,6 +4159,21 @@ msgstr "ftpfs: jungimasis į serverį nepavyko: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/lv.po b/mcsrc/po/lv.po index 19dbafa2..0fa975aa 100644 --- a/mcsrc/po/lv.po +++ b/mcsrc/po/lv.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Slava Zanko , 2011\n" "Language-Team: Latvian (http://www.transifex.com/mc/mc/language/lv/)\n" @@ -504,6 +504,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1127,7 +1130,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2263,12 +2266,6 @@ msgstr "Faili tagoti, gribat cd?" msgid "Cannot change directory" msgstr "Nevar nomainÄ«t direktoriju" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2409,14 +2406,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2426,8 +2430,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2662,6 +2666,15 @@ msgstr "" msgid "(stalled)" msgstr "(staļļots)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&PaturÄ“t" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2674,12 +2687,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Tika saņemts nepilns fails. PaturÄ“t to?" - -msgid "&Keep" -msgstr "&PaturÄ“t" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2786,7 +2793,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2814,7 +2821,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2866,7 +2873,7 @@ msgstr "&Koks" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2881,7 +2888,7 @@ msgstr "FT&P saite..." msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3262,7 +3269,7 @@ msgid "No space information" msgstr "Nav vietas informÄcijas" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3509,6 +3516,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3928,6 +3938,10 @@ msgstr "" "NegaidÄ«tas faila beigas\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "NeatbilstÄ«gs tar arhÄ«vs" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4056,6 +4070,21 @@ msgstr "ftpfs: savienojums ar serveri neizdevÄs: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/mc.pot b/mcsrc/po/mc.pot index 06c49722..db3c1d9d 100644 --- a/mcsrc/po/mc.pot +++ b/mcsrc/po/mc.pot @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: mc 4.8.27-97-g1bdf81405\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-13 13:31+0300\n" +"Project-Id-Version: mc 4.8.29-pre1-5-g8a6b2cb91\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,7 +21,7 @@ msgstr "" msgid "Warning: cannot load codepages list" msgstr "" -#: lib/charsets.c:220 src/filemanager/boxes.c:387 +#: lib/charsets.c:220 src/filemanager/boxes.c:385 msgid "7-bit ASCII" msgstr "" @@ -76,12 +76,12 @@ msgstr "" msgid "&Ignore lock" msgstr "" -#: lib/mcconfig/paths.c:108 +#: lib/mcconfig/paths.c:109 #, c-format msgid "Cannot create %s directory" msgstr "" -#: lib/mcconfig/paths.c:128 +#: lib/mcconfig/paths.c:129 msgid "FATAL: not a directory:" msgstr "" @@ -123,7 +123,7 @@ msgstr "" msgid "Invalid token number %d" msgstr "" -#: lib/search/regex.c:340 lib/search/regex.c:834 src/filemanager/ext.c:749 +#: lib/search/regex.c:337 lib/search/regex.c:830 src/filemanager/ext.c:756 msgid "Regular expression error" msgstr "" @@ -131,7 +131,7 @@ msgstr "" msgid "No&rmal" msgstr "" -#: lib/search/search.c:54 src/filemanager/find.c:594 +#: lib/search/search.c:54 src/filemanager/find.c:595 msgid "Re&gular expression" msgstr "" @@ -566,11 +566,11 @@ msgstr "" msgid "Shift" msgstr "" -#: lib/tty/tty.c:113 +#: lib/tty/tty.c:114 msgid "The TERM environment variable is unset!\n" msgstr "" -#: lib/tty/tty.c:204 +#: lib/tty/tty.c:206 msgid "Cannot check SIGWINCH pipe" msgstr "" @@ -630,86 +630,90 @@ msgstr "" msgid "GiB" msgstr "" -#: lib/utilunix.c:512 +#: lib/utilunix.c:513 msgid "Cannot create pipe descriptor" msgstr "" -#: lib/utilunix.c:525 +#: lib/utilunix.c:526 msgid "Cannot create pipe streams" msgstr "" -#: lib/utilunix.c:604 +#: lib/utilunix.c:605 #, c-format msgid "" "Unexpected error in select() reading data from a child process:\n" "%s" msgstr "" -#: lib/utilunix.c:691 +#: lib/utilunix.c:681 +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + +#: lib/utilunix.c:699 #, c-format msgid "" "Unexpected error in waitpid():\n" "%s" msgstr "" -#: lib/vfs/direntry.c:271 +#: lib/vfs/direntry.c:272 #, c-format msgid "Directory cache expired for %s" msgstr "" -#: lib/vfs/direntry.c:709 +#: lib/vfs/direntry.c:710 #, c-format msgid "%s: %s: %s %3d%% (%lld) bytes transferred" msgstr "" -#: lib/vfs/direntry.c:712 +#: lib/vfs/direntry.c:713 #, c-format msgid "%s: %s: %s %lld bytes transferred" msgstr "" -#: lib/vfs/direntry.c:1374 +#: lib/vfs/direntry.c:1371 msgid "Starting linear transfer..." msgstr "" -#: lib/vfs/direntry.c:1473 +#: lib/vfs/direntry.c:1470 msgid "Getting file" msgstr "" -#: lib/vfs/interface.c:173 +#: lib/vfs/interface.c:174 msgid "Changes to file lost" msgstr "" -#: lib/vfs/interface.c:844 +#: lib/vfs/interface.c:857 #, c-format msgid "%s is not a directory\n" msgstr "" -#: lib/vfs/interface.c:846 +#: lib/vfs/interface.c:859 #, c-format msgid "Directory %s is not owned by you\n" msgstr "" -#: lib/vfs/interface.c:848 +#: lib/vfs/interface.c:861 #, c-format msgid "Cannot set correct permissions for directory %s\n" msgstr "" -#: lib/vfs/interface.c:853 +#: lib/vfs/interface.c:866 #, c-format msgid "Cannot create temporary directory %s: %s\n" msgstr "" -#: lib/vfs/interface.c:887 +#: lib/vfs/interface.c:900 #, c-format msgid "Temporary files will be created in %s\n" msgstr "" -#: lib/vfs/interface.c:893 +#: lib/vfs/interface.c:906 #, c-format msgid "Temporary files will not be created\n" msgstr "" -#: lib/vfs/interface.c:898 src/execute.c:337 +#: lib/vfs/interface.c:911 src/execute.c:337 msgid "Press any key to continue..." msgstr "" @@ -738,89 +742,89 @@ msgid "History" msgstr "" #. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix -#: lib/widget/listbox.c:318 +#: lib/widget/listbox.c:319 msgid "DialogTitle|History cleanup" msgstr "" -#: lib/widget/listbox.c:319 +#: lib/widget/listbox.c:320 msgid "Do you want clean this history?" msgstr "" -#: lib/widget/listbox.c:320 src/diffviewer/ydiff.c:3091 src/editor/edit.c:362 -#: src/editor/editcmd.c:186 src/editor/editcmd.c:209 src/editor/editcmd.c:1521 -#: src/editor/editcmd.c:1527 src/filemanager/cmd.c:138 -#: src/filemanager/file.c:972 src/filemanager/file.c:1969 -#: src/filemanager/filegui.c:458 src/filemanager/filemanager.c:1062 -#: src/filemanager/filemanager.c:1070 src/filemanager/hotlist.c:1159 -#: src/filemanager/hotlist.c:1176 src/filemanager/panel.c:2827 -#: src/filemanager/tree.c:829 src/subshell/common.c:1621 +#: lib/widget/listbox.c:321 src/diffviewer/ydiff.c:3092 src/editor/edit.c:365 +#: src/editor/editcmd.c:186 src/editor/editcmd.c:209 src/editor/editcmd.c:1527 +#: src/editor/editcmd.c:1533 src/filemanager/cmd.c:138 +#: src/filemanager/file.c:1011 src/filemanager/file.c:2020 +#: src/filemanager/filegui.c:480 src/filemanager/filemanager.c:1062 +#: src/filemanager/filemanager.c:1070 src/filemanager/hotlist.c:1162 +#: src/filemanager/hotlist.c:1179 src/filemanager/panel.c:2895 +#: src/filemanager/tree.c:829 src/subshell/common.c:1657 #: src/vfs/sftpfs/connection.c:519 src/vfs/sftpfs/connection.c:531 #: src/viewer/actions_cmd.c:643 src/viewer/actions_cmd.c:649 -#: src/viewer/search.c:447 +#: src/viewer/search.c:450 msgid "&Yes" msgstr "" -#: lib/widget/listbox.c:320 src/diffviewer/ydiff.c:3091 src/editor/edit.c:362 -#: src/editor/editcmd.c:186 src/editor/editcmd.c:1521 src/editor/editcmd.c:1527 -#: src/filemanager/cmd.c:138 src/filemanager/file.c:972 -#: src/filemanager/file.c:1969 src/filemanager/filegui.c:460 +#: lib/widget/listbox.c:321 src/diffviewer/ydiff.c:3092 src/editor/edit.c:365 +#: src/editor/editcmd.c:186 src/editor/editcmd.c:1527 src/editor/editcmd.c:1533 +#: src/filemanager/cmd.c:138 src/filemanager/file.c:1011 +#: src/filemanager/file.c:2020 src/filemanager/filegui.c:482 #: src/filemanager/filemanager.c:1062 src/filemanager/filemanager.c:1070 -#: src/filemanager/hotlist.c:1159 src/filemanager/hotlist.c:1176 -#: src/filemanager/panel.c:2827 src/filemanager/tree.c:829 -#: src/subshell/common.c:1621 src/vfs/sftpfs/connection.c:519 +#: src/filemanager/hotlist.c:1162 src/filemanager/hotlist.c:1179 +#: src/filemanager/panel.c:2895 src/filemanager/tree.c:829 +#: src/subshell/common.c:1657 src/vfs/sftpfs/connection.c:519 #: src/vfs/sftpfs/connection.c:531 src/viewer/actions_cmd.c:643 -#: src/viewer/actions_cmd.c:649 src/viewer/search.c:448 +#: src/viewer/actions_cmd.c:649 src/viewer/search.c:451 msgid "&No" msgstr "" #: lib/widget/quick.h:215 src/editor/editsearch.c:103 -#: src/editor/editsearch.c:1007 src/editor/editwidget.c:157 -#: src/filemanager/boxes.c:1270 src/filemanager/filegui.c:1359 -#: src/filemanager/find.c:602 src/filemanager/layout.c:508 src/main.c:411 +#: src/editor/editsearch.c:1013 src/editor/editwidget.c:157 +#: src/filemanager/boxes.c:1291 src/filemanager/filegui.c:1384 +#: src/filemanager/find.c:603 src/filemanager/layout.c:508 src/main.c:411 msgid "&OK" msgstr "" #: lib/widget/quick.h:216 src/editor/editcmd.c:186 src/editor/editcmd.c:209 -#: src/editor/editcmd.c:380 src/editor/editcmd.c:540 src/editor/editcmd.c:959 -#: src/editor/editcmd.c:1036 src/editor/editcmd.c:1521 -#: src/editor/editcmd.c:2016 src/editor/editcmd.c:2045 -#: src/editor/editsearch.c:105 src/editor/editsearch.c:245 -#: src/editor/etags.c:373 src/editor/spell.c:767 src/filemanager/achown.c:87 -#: src/filemanager/achown.c:860 src/filemanager/achown.c:895 -#: src/filemanager/chattr.c:233 src/filemanager/chattr.c:1108 +#: src/editor/editcmd.c:380 src/editor/editcmd.c:524 src/editor/editcmd.c:944 +#: src/editor/editcmd.c:1021 src/editor/editcmd.c:1527 +#: src/editor/editcmd.c:2023 src/editor/editcmd.c:2052 +#: src/editor/editsearch.c:105 src/editor/editsearch.c:247 +#: src/editor/etags.c:374 src/editor/spell.c:767 src/filemanager/achown.c:87 +#: src/filemanager/achown.c:861 src/filemanager/achown.c:896 +#: src/filemanager/chattr.c:233 src/filemanager/chattr.c:1120 #: src/filemanager/chmod.c:115 src/filemanager/chmod.c:438 #: src/filemanager/chown.c:87 src/filemanager/chown.c:311 -#: src/filemanager/cmd.c:1057 src/filemanager/filegui.c:1363 -#: src/filemanager/find.c:602 src/filemanager/hotlist.c:183 -#: src/filemanager/hotlist.c:1015 src/filemanager/hotlist.c:1077 -#: src/filemanager/layout.c:509 src/filemanager/panelize.c:143 src/learn.c:258 -#: src/viewer/hex.c:431 +#: src/filemanager/cmd.c:1021 src/filemanager/filegui.c:1388 +#: src/filemanager/find.c:603 src/filemanager/hotlist.c:183 +#: src/filemanager/hotlist.c:1016 src/filemanager/hotlist.c:1079 +#: src/filemanager/layout.c:509 src/filemanager/panelize.c:144 src/learn.c:258 +#: src/viewer/hex.c:429 msgid "&Cancel" msgstr "" -#: lib/widget/wtools.c:164 +#: lib/widget/wtools.c:168 msgid "Background process:" msgstr "" -#: lib/widget/wtools.c:287 lib/widget/wtools.c:416 src/editor/edit.c:197 -#: src/editor/edit.c:218 src/editor/edit.c:374 src/editor/edit.c:1981 -#: src/editor/edit.c:1991 src/editor/editcmd.c:271 src/editor/editcmd.c:281 -#: src/editor/editcmd.c:324 src/editor/editcmd.c:1625 src/editor/spell.c:322 +#: lib/widget/wtools.c:293 lib/widget/wtools.c:422 src/editor/edit.c:200 +#: src/editor/edit.c:221 src/editor/edit.c:377 src/editor/edit.c:1984 +#: src/editor/edit.c:1994 src/editor/editcmd.c:271 src/editor/editcmd.c:281 +#: src/editor/editcmd.c:324 src/editor/editcmd.c:1631 src/editor/spell.c:322 #: src/editor/spell.c:558 src/editor/spell.c:566 #: tests/src/execute__common.c:152 #: tests/src/execute__execute_with_vfs_arg.c:152 msgid "Error" msgstr "" -#: lib/widget/wtools.c:450 +#: lib/widget/wtools.c:456 #, c-format msgid "%s (%d)" msgstr "" -#: lib/widget/wtools.c:695 src/filemanager/file.c:851 -#: src/filemanager/file.c:925 src/filemanager/file.c:927 -#: src/filemanager/file.c:973 src/filemanager/file.c:3096 -#: src/filemanager/filegui.c:255 src/filemanager/filegui.c:482 +#: lib/widget/wtools.c:702 src/filemanager/file.c:890 +#: src/filemanager/file.c:964 src/filemanager/file.c:966 +#: src/filemanager/file.c:1012 src/filemanager/file.c:3172 +#: src/filemanager/filegui.c:255 src/filemanager/filegui.c:504 msgid "&Abort" msgstr "" @@ -978,7 +982,7 @@ msgstr "" msgid "[+lineno] file1[:lineno] [file2[:lineno]...]" msgstr "" -#: src/args.c:382 src/filemanager/file.c:170 +#: src/args.c:382 src/filemanager/file.c:172 msgid "file" msgstr "" @@ -997,12 +1001,12 @@ msgid "" "as tickets at www.midnight-commander.org\n" msgstr "" -#: src/args.c:410 src/filemanager/filemanager.c:1754 src/textconf.c:142 +#: src/args.c:410 src/filemanager/filemanager.c:1752 src/textconf.c:142 #, c-format msgid "GNU Midnight Commander %s\n" msgstr "" -#: src/args.c:663 src/filemanager/boxes.c:687 +#: src/args.c:663 src/filemanager/boxes.c:693 msgid "Main options" msgstr "" @@ -1030,7 +1034,7 @@ msgstr "" msgid "Reading failed" msgstr "" -#: src/background.c:219 src/filemanager/file.c:848 src/filemanager/file.c:920 +#: src/background.c:219 src/filemanager/file.c:859 src/filemanager/file.c:959 msgid "Background process error" msgstr "" @@ -1048,52 +1052,52 @@ msgid "" "than we can handle." msgstr "" -#: src/diffviewer/internal.h:15 src/diffviewer/search.c:229 -#: src/editor/edit-impl.h:74 src/editor/edit-impl.h:75 src/viewer/search.c:479 -#: src/viewer/search.c:481 +#: src/diffviewer/internal.h:15 src/diffviewer/search.c:230 +#: src/editor/edit-impl.h:74 src/editor/edit-impl.h:75 src/viewer/search.c:482 +#: src/viewer/search.c:484 msgid "&Dismiss" msgstr "" #: src/diffviewer/search.c:85 src/editor/editsearch.c:86 -#: src/editor/editsearch.c:163 src/viewer/dialogs.c:81 +#: src/editor/editsearch.c:164 src/viewer/dialogs.c:81 msgid "Enter search string:" msgstr "" #: src/diffviewer/search.c:92 src/editor/editsearch.c:94 -#: src/editor/editsearch.c:173 src/filemanager/boxes.c:680 -#: src/filemanager/boxes.c:885 src/filemanager/find.c:588 +#: src/editor/editsearch.c:174 src/filemanager/boxes.c:686 +#: src/filemanager/boxes.c:893 src/filemanager/find.c:589 #: src/viewer/dialogs.c:89 msgid "Cas&e sensitive" msgstr "" #: src/diffviewer/search.c:93 src/editor/editsearch.c:95 -#: src/editor/editsearch.c:174 src/viewer/dialogs.c:90 +#: src/editor/editsearch.c:175 src/viewer/dialogs.c:90 msgid "&Backwards" msgstr "" #: src/diffviewer/search.c:94 src/editor/editsearch.c:97 -#: src/editor/editsearch.c:176 src/filemanager/find.c:599 +#: src/editor/editsearch.c:177 src/filemanager/find.c:600 #: src/viewer/dialogs.c:91 msgid "&Whole words" msgstr "" #: src/diffviewer/search.c:96 src/editor/editsearch.c:99 -#: src/editor/editsearch.c:178 src/filemanager/find.c:586 +#: src/editor/editsearch.c:179 src/filemanager/find.c:587 #: src/viewer/dialogs.c:93 msgid "&All charsets" msgstr "" -#: src/diffviewer/search.c:106 src/diffviewer/search.c:229 -#: src/diffviewer/search.c:242 src/diffviewer/search.c:275 -#: src/editor/editsearch.c:112 src/editor/editsearch.c:589 -#: src/editor/editsearch.c:615 src/editor/editsearch.c:644 -#: src/editor/editsearch.c:891 src/editor/editsearch.c:902 -#: src/viewer/dialogs.c:103 src/viewer/search.c:399 src/viewer/search.c:459 -#: src/viewer/search.c:479 src/viewer/search.c:481 +#: src/diffviewer/search.c:107 src/diffviewer/search.c:230 +#: src/diffviewer/search.c:243 src/diffviewer/search.c:276 +#: src/editor/editsearch.c:113 src/editor/editsearch.c:592 +#: src/editor/editsearch.c:618 src/editor/editsearch.c:647 +#: src/editor/editsearch.c:897 src/editor/editsearch.c:908 +#: src/viewer/dialogs.c:104 src/viewer/search.c:402 src/viewer/search.c:462 +#: src/viewer/search.c:482 src/viewer/search.c:484 msgid "Search" msgstr "" -#: src/diffviewer/search.c:242 src/diffviewer/search.c:275 +#: src/diffviewer/search.c:243 src/diffviewer/search.c:276 msgid "Search is disabled" msgstr "" @@ -1155,103 +1159,103 @@ msgstr "" msgid "Strip &trailing carriage return" msgstr "" -#: src/diffviewer/ydiff.c:2384 +#: src/diffviewer/ydiff.c:2385 msgid "Diff Options" msgstr "" -#: src/diffviewer/ydiff.c:2893 +#: src/diffviewer/ydiff.c:2894 msgid "Edit" msgstr "" -#: src/diffviewer/ydiff.c:2893 +#: src/diffviewer/ydiff.c:2894 msgid "Edit is disabled" msgstr "" -#: src/diffviewer/ydiff.c:2927 +#: src/diffviewer/ydiff.c:2928 msgid "Goto line (left)" msgstr "" -#: src/diffviewer/ydiff.c:2928 +#: src/diffviewer/ydiff.c:2929 msgid "Goto line (right)" msgstr "" -#: src/diffviewer/ydiff.c:2936 src/editor/editcmd.c:1708 +#: src/diffviewer/ydiff.c:2937 src/editor/editcmd.c:1714 msgid "Enter line:" msgstr "" -#: src/diffviewer/ydiff.c:2975 src/editor/editwidget.c:669 -#: src/filemanager/filemanager.c:1642 src/filemanager/tree.c:1172 -#: src/help.c:1159 src/viewer/display.c:87 +#: src/diffviewer/ydiff.c:2976 src/editor/editwidget.c:674 +#: src/filemanager/filemanager.c:1640 src/filemanager/tree.c:1172 +#: src/help.c:1163 src/viewer/display.c:87 msgid "ButtonBar|Help" msgstr "" -#: src/diffviewer/ydiff.c:2976 src/editor/editwidget.c:670 +#: src/diffviewer/ydiff.c:2977 src/editor/editwidget.c:675 #: src/viewer/display.c:99 msgid "ButtonBar|Save" msgstr "" -#: src/diffviewer/ydiff.c:2977 src/filemanager/filemanager.c:1645 +#: src/diffviewer/ydiff.c:2978 src/filemanager/filemanager.c:1643 #: src/viewer/display.c:94 msgid "ButtonBar|Edit" msgstr "" -#: src/diffviewer/ydiff.c:2978 +#: src/diffviewer/ydiff.c:2979 msgid "ButtonBar|Merge" msgstr "" -#: src/diffviewer/ydiff.c:2979 src/editor/editwidget.c:675 +#: src/diffviewer/ydiff.c:2980 src/editor/editwidget.c:680 #: src/viewer/display.c:109 msgid "ButtonBar|Search" msgstr "" -#: src/diffviewer/ydiff.c:2980 +#: src/diffviewer/ydiff.c:2981 msgid "ButtonBar|Options" msgstr "" -#: src/diffviewer/ydiff.c:2981 src/editor/editwidget.c:678 -#: src/filemanager/filemanager.c:1651 src/help.c:1168 src/viewer/display.c:118 +#: src/diffviewer/ydiff.c:2982 src/editor/editwidget.c:683 +#: src/filemanager/filemanager.c:1649 src/help.c:1172 src/viewer/display.c:118 #: src/viewer/display.c:121 msgid "ButtonBar|Quit" msgstr "" -#: src/diffviewer/ydiff.c:3088 src/editor/editcmd.c:1527 +#: src/diffviewer/ydiff.c:3089 src/editor/editcmd.c:1533 #: src/viewer/actions_cmd.c:641 src/viewer/actions_cmd.c:647 msgid "Quit" msgstr "" -#: src/diffviewer/ydiff.c:3089 +#: src/diffviewer/ydiff.c:3090 msgid "File(s) was modified. Save with exit?" msgstr "" -#: src/diffviewer/ydiff.c:3090 +#: src/diffviewer/ydiff.c:3091 msgid "" "Midnight Commander is being shut down.\n" "Save modified file(s)?" msgstr "" -#: src/diffviewer/ydiff.c:3423 src/diffviewer/ydiff.c:3426 +#: src/diffviewer/ydiff.c:3424 src/diffviewer/ydiff.c:3427 msgid "Diff:" msgstr "" -#: src/diffviewer/ydiff.c:3543 src/diffviewer/ydiff.c:3554 -#: src/diffviewer/ydiff.c:3574 src/diffviewer/ydiff.c:3591 +#: src/diffviewer/ydiff.c:3547 src/diffviewer/ydiff.c:3558 +#: src/diffviewer/ydiff.c:3578 src/diffviewer/ydiff.c:3595 #, c-format msgid "\"%s\" is a directory" msgstr "" -#: src/diffviewer/ydiff.c:3580 src/diffviewer/ydiff.c:3597 -#: src/filemanager/file.c:1776 src/viewer/mcviewer.c:349 +#: src/diffviewer/ydiff.c:3584 src/diffviewer/ydiff.c:3601 +#: src/filemanager/file.c:1827 src/viewer/mcviewer.c:352 #, c-format msgid "" "Cannot stat \"%s\"\n" "%s" msgstr "" -#: src/diffviewer/ydiff.c:3606 +#: src/diffviewer/ydiff.c:3610 msgid "Diff viewer: invalid mode" msgstr "" -#: src/diffviewer/ydiff.c:3635 +#: src/diffviewer/ydiff.c:3639 msgid "Two files are needed to compare" msgstr "" @@ -1264,52 +1268,53 @@ msgstr "" msgid "Loading..." msgstr "" -#: src/editor/edit.c:196 src/editor/edit.c:314 +#: src/editor/edit.c:199 src/editor/edit.c:317 #, c-format msgid "Cannot open %s for reading" msgstr "" -#: src/editor/edit.c:206 +#: src/editor/edit.c:209 msgid "Load file" msgstr "" -#: src/editor/edit.c:217 +#: src/editor/edit.c:220 #, c-format msgid "Error reading %s" msgstr "" -#: src/editor/edit.c:326 +#: src/editor/edit.c:329 #, c-format msgid "Cannot get size/permissions for %s" msgstr "" -#: src/editor/edit.c:335 +#: src/editor/edit.c:338 #, c-format msgid "\"%s\" is not a regular file" msgstr "" -#: src/editor/edit.c:360 +#: src/editor/edit.c:363 #, c-format msgid "" "File \"%s\" is too large.\n" "Open it anyway?" msgstr "" -#: src/editor/edit.c:362 src/editor/editcmd.c:184 src/editor/editcmd.c:207 -#: src/editor/editcmd.c:378 src/editor/editcmd.c:538 src/editor/editcmd.c:958 -#: src/editor/editcmd.c:2013 src/editor/editcmd.c:2042 src/editor/etags.c:371 -#: src/execute.c:135 src/filemanager/file.c:2408 src/filemanager/panel.c:4524 -#: src/help.c:362 src/main.c:408 src/subshell/common.c:1619 -#: src/vfs/sftpfs/connection.c:519 src/viewer/actions_cmd.c:443 +#: src/editor/edit.c:365 src/editor/editcmd.c:184 src/editor/editcmd.c:207 +#: src/editor/editcmd.c:378 src/editor/editcmd.c:522 src/editor/editcmd.c:943 +#: src/editor/editcmd.c:2020 src/editor/editcmd.c:2049 src/editor/etags.c:372 +#: src/execute.c:135 src/filemanager/ext.c:773 src/filemanager/file.c:2459 +#: src/filemanager/panel.c:4641 src/help.c:362 src/main.c:408 +#: src/subshell/common.c:1655 src/vfs/sftpfs/connection.c:519 +#: src/viewer/actions_cmd.c:443 msgid "Warning" msgstr "" -#: src/editor/edit.c:1980 +#: src/editor/edit.c:1983 #, c-format msgid "Error reading from pipe: %s" msgstr "" -#: src/editor/edit.c:1990 +#: src/editor/edit.c:1993 #, c-format msgid "Cannot open pipe for reading: %s" msgstr "" @@ -1341,8 +1346,8 @@ msgstr "" msgid "The file you are saving does not end with a newline." msgstr "" -#: src/editor/editcmd.c:380 src/editor/editcmd.c:540 src/editor/editcmd.c:2015 -#: src/editor/editcmd.c:2044 src/editor/etags.c:373 +#: src/editor/editcmd.c:380 src/editor/editcmd.c:524 src/editor/editcmd.c:2022 +#: src/editor/editcmd.c:2051 src/editor/etags.c:374 msgid "C&ontinue" msgstr "" @@ -1362,8 +1367,8 @@ msgstr "" msgid "&Macintosh format (CR)" msgstr "" -#: src/editor/editcmd.c:401 src/editor/editcmd.c:1058 src/editor/editcmd.c:1749 -#: src/editor/editcmd.c:1780 src/filemanager/cmd.c:751 +#: src/editor/editcmd.c:401 src/editor/editcmd.c:1043 src/editor/editcmd.c:1755 +#: src/editor/editcmd.c:1786 src/filemanager/cmd.c:730 msgid "Enter file name:" msgstr "" @@ -1371,232 +1376,232 @@ msgstr "" msgid "Change line breaks to:" msgstr "" -#: src/editor/editcmd.c:414 +#: src/editor/editcmd.c:415 msgid "Save As" msgstr "" -#: src/editor/editcmd.c:858 +#: src/editor/editcmd.c:842 msgid "&Quick save" msgstr "" -#: src/editor/editcmd.c:859 +#: src/editor/editcmd.c:843 msgid "&Safe save" msgstr "" -#: src/editor/editcmd.c:860 +#: src/editor/editcmd.c:844 msgid "&Do backups with following extension:" msgstr "" -#: src/editor/editcmd.c:879 +#: src/editor/editcmd.c:863 msgid "Check &POSIX new line" msgstr "" -#: src/editor/editcmd.c:887 +#: src/editor/editcmd.c:872 msgid "Edit Save Mode" msgstr "" -#: src/editor/editcmd.c:941 src/editor/editcmd.c:1000 +#: src/editor/editcmd.c:926 src/editor/editcmd.c:985 msgid "Save as" msgstr "" -#: src/editor/editcmd.c:943 +#: src/editor/editcmd.c:928 msgid "Cannot save: destination is not a regular file" msgstr "" -#: src/editor/editcmd.c:959 +#: src/editor/editcmd.c:944 msgid "A file already exists with this name" msgstr "" -#: src/editor/editcmd.c:959 +#: src/editor/editcmd.c:944 msgid "&Overwrite" msgstr "" -#: src/editor/editcmd.c:1000 src/editor/editcmd.c:1759 +#: src/editor/editcmd.c:985 src/editor/editcmd.c:1765 msgid "Cannot save file" msgstr "" -#: src/editor/editcmd.c:1034 +#: src/editor/editcmd.c:1019 #, c-format msgid "Confirm save file: \"%s\"" msgstr "" -#: src/editor/editcmd.c:1036 src/viewer/hex.c:419 src/viewer/hex.c:431 +#: src/editor/editcmd.c:1021 src/viewer/hex.c:417 src/viewer/hex.c:429 msgid "Save file" msgstr "" -#: src/editor/editcmd.c:1036 src/editor/editmenu.c:78 src/learn.c:192 +#: src/editor/editcmd.c:1021 src/editor/editmenu.c:78 src/learn.c:192 #: src/learn.c:257 msgid "&Save" msgstr "" -#: src/editor/editcmd.c:1058 +#: src/editor/editcmd.c:1043 msgid "Load" msgstr "" -#: src/editor/editcmd.c:1120 +#: src/editor/editcmd.c:1126 msgid "Syntax file edit" msgstr "" -#: src/editor/editcmd.c:1121 +#: src/editor/editcmd.c:1127 msgid "Which syntax file you want to edit?" msgstr "" -#: src/editor/editcmd.c:1122 src/editor/editcmd.c:1168 -#: src/filemanager/cmd.c:862 src/filemanager/cmd.c:903 -#: src/filemanager/cmd.c:961 +#: src/editor/editcmd.c:1128 src/editor/editcmd.c:1174 +#: src/filemanager/cmd.c:826 src/filemanager/cmd.c:867 +#: src/filemanager/cmd.c:925 msgid "&User" msgstr "" -#: src/editor/editcmd.c:1122 src/editor/editcmd.c:1168 +#: src/editor/editcmd.c:1128 src/editor/editcmd.c:1174 msgid "&System wide" msgstr "" -#: src/editor/editcmd.c:1166 src/filemanager/cmd.c:901 +#: src/editor/editcmd.c:1172 src/filemanager/cmd.c:865 msgid "Menu edit" msgstr "" -#: src/editor/editcmd.c:1167 src/filemanager/cmd.c:902 +#: src/editor/editcmd.c:1173 src/filemanager/cmd.c:866 msgid "Which menu file do you want to edit?" msgstr "" -#: src/editor/editcmd.c:1168 src/filemanager/cmd.c:903 +#: src/editor/editcmd.c:1174 src/filemanager/cmd.c:867 msgid "&Local" msgstr "" -#: src/editor/editcmd.c:1502 src/editor/editwidget.c:378 +#: src/editor/editcmd.c:1508 src/editor/editwidget.c:384 msgid "[NoName]" msgstr "" -#: src/editor/editcmd.c:1520 +#: src/editor/editcmd.c:1526 #, c-format msgid "" "File %s was modified.\n" "Save before close?" msgstr "" -#: src/editor/editcmd.c:1521 +#: src/editor/editcmd.c:1527 msgid "Close file" msgstr "" -#: src/editor/editcmd.c:1525 +#: src/editor/editcmd.c:1531 #, c-format msgid "" "Midnight Commander is being shut down.\n" "Save modified file %s?" msgstr "" -#: src/editor/editcmd.c:1625 +#: src/editor/editcmd.c:1631 msgid "This function is not implemented" msgstr "" -#: src/editor/editcmd.c:1640 +#: src/editor/editcmd.c:1646 msgid "Copy to clipboard" msgstr "" -#: src/editor/editcmd.c:1640 src/editor/editcmd.c:1664 +#: src/editor/editcmd.c:1646 src/editor/editcmd.c:1670 msgid "Unable to save to file" msgstr "" -#: src/editor/editcmd.c:1664 +#: src/editor/editcmd.c:1670 msgid "Cut to clipboard" msgstr "" -#: src/editor/editcmd.c:1708 +#: src/editor/editcmd.c:1714 msgid "Goto line" msgstr "" -#: src/editor/editcmd.c:1749 src/editor/editcmd.c:1759 +#: src/editor/editcmd.c:1755 src/editor/editcmd.c:1765 msgid "Save block" msgstr "" -#: src/editor/editcmd.c:1780 src/editor/editcmd.c:1795 +#: src/editor/editcmd.c:1786 src/editor/editcmd.c:1801 msgid "Insert file" msgstr "" -#: src/editor/editcmd.c:1795 +#: src/editor/editcmd.c:1801 msgid "Cannot insert file" msgstr "" -#: src/editor/editcmd.c:1816 +#: src/editor/editcmd.c:1822 msgid "Sort block" msgstr "" -#: src/editor/editcmd.c:1816 +#: src/editor/editcmd.c:1822 msgid "You must first highlight a block of text" msgstr "" -#: src/editor/editcmd.c:1824 +#: src/editor/editcmd.c:1830 msgid "Run sort" msgstr "" -#: src/editor/editcmd.c:1825 -msgid "Enter sort options (see manpage) separated by whitespace:" +#: src/editor/editcmd.c:1831 +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -#: src/editor/editcmd.c:1845 src/editor/editcmd.c:1852 +#: src/editor/editcmd.c:1851 src/editor/editcmd.c:1858 msgid "Sort" msgstr "" -#: src/editor/editcmd.c:1845 +#: src/editor/editcmd.c:1851 msgid "Cannot execute sort command" msgstr "" -#: src/editor/editcmd.c:1851 +#: src/editor/editcmd.c:1857 #, c-format msgid "Sort returned non-zero: %s" msgstr "" -#: src/editor/editcmd.c:1888 +#: src/editor/editcmd.c:1894 msgid "Paste output of external command" msgstr "" -#: src/editor/editcmd.c:1889 +#: src/editor/editcmd.c:1895 msgid "Enter shell command(s):" msgstr "" -#: src/editor/editcmd.c:1906 +#: src/editor/editcmd.c:1912 msgid "External command" msgstr "" -#: src/editor/editcmd.c:1906 +#: src/editor/editcmd.c:1912 msgid "Cannot execute command" msgstr "" -#: src/editor/editcmd.c:1951 +#: src/editor/editcmd.c:1957 msgid "mail -s -c " msgstr "" -#: src/editor/editcmd.c:1952 +#: src/editor/editcmd.c:1958 msgid "To" msgstr "" -#: src/editor/editcmd.c:1955 +#: src/editor/editcmd.c:1961 msgid "Subject" msgstr "" -#: src/editor/editcmd.c:1958 +#: src/editor/editcmd.c:1964 msgid "Copies to" msgstr "" -#: src/editor/editcmd.c:1968 +#: src/editor/editcmd.c:1975 msgid "Mail" msgstr "" -#: src/editor/editcmd.c:2002 +#: src/editor/editcmd.c:2009 msgid "Insert literal" msgstr "" -#: src/editor/editcmd.c:2003 +#: src/editor/editcmd.c:2010 msgid "Press any key:" msgstr "" -#: src/editor/editcmd.c:2014 src/editor/editcmd.c:2043 src/editor/etags.c:372 +#: src/editor/editcmd.c:2021 src/editor/editcmd.c:2050 src/editor/etags.c:373 msgid "" "Current text was modified without a file save.\n" "Continue discards these changes." msgstr "" -#: src/editor/editcmd.c:2096 +#: src/editor/editcmd.c:2103 msgid "Cancel" msgstr "" @@ -1604,35 +1609,35 @@ msgstr "" msgid "Collect completions" msgstr "" -#: src/editor/editdraw.c:263 src/editor/editwidget.c:328 +#: src/editor/editdraw.c:263 src/editor/editwidget.c:333 msgid "NoName" msgstr "" -#: src/editor/editmacros.c:152 +#: src/editor/editmacros.c:151 msgid "Save macro" msgstr "" -#: src/editor/editmacros.c:152 +#: src/editor/editmacros.c:151 msgid "Press the macro's new hotkey:" msgstr "" -#: src/editor/editmacros.c:320 src/editor/editmacros.c:323 +#: src/editor/editmacros.c:319 src/editor/editmacros.c:322 msgid "Delete macro" msgstr "" -#: src/editor/editmacros.c:320 +#: src/editor/editmacros.c:319 msgid "Press macro hotkey:" msgstr "" -#: src/editor/editmacros.c:323 +#: src/editor/editmacros.c:322 msgid "Macro not deleted" msgstr "" -#: src/editor/editmacros.c:335 +#: src/editor/editmacros.c:334 msgid "Repeat last commands" msgstr "" -#: src/editor/editmacros.c:335 +#: src/editor/editmacros.c:334 msgid "Repeat times:" msgstr "" @@ -1712,8 +1717,8 @@ msgstr "" msgid "Mo&ve" msgstr "" -#: src/editor/editmenu.c:113 src/filemanager/file.c:2692 -#: src/filemanager/filemanager.c:251 +#: src/editor/editmenu.c:113 src/filemanager/file.c:2709 +#: src/filemanager/file.c:2765 src/filemanager/filemanager.c:251 msgid "&Delete" msgstr "" @@ -1969,7 +1974,7 @@ msgstr "" msgid "Tab spacing:" msgstr "" -#: src/editor/editoptions.c:164 src/filemanager/boxes.c:570 +#: src/editor/editoptions.c:164 src/filemanager/boxes.c:569 #: src/filemanager/layout.c:501 msgid "Other options" msgstr "" @@ -2018,11 +2023,11 @@ msgstr "" msgid "Word wrap line length:" msgstr "" -#: src/editor/editoptions.c:189 +#: src/editor/editoptions.c:190 msgid "Editor options" msgstr "" -#: src/editor/editsearch.c:96 src/editor/editsearch.c:175 +#: src/editor/editsearch.c:96 src/editor/editsearch.c:176 msgid "In se&lection" msgstr "" @@ -2030,51 +2035,51 @@ msgstr "" msgid "&Find all" msgstr "" -#: src/editor/editsearch.c:166 +#: src/editor/editsearch.c:167 msgid "Enter replacement string:" msgstr "" -#: src/editor/editsearch.c:188 src/editor/editsearch.c:967 -#: src/editor/editsearch.c:1007 src/editor/editsearch.c:1019 +#: src/editor/editsearch.c:190 src/editor/editsearch.c:973 +#: src/editor/editsearch.c:1013 src/editor/editsearch.c:1025 msgid "Replace" msgstr "" -#: src/editor/editsearch.c:239 +#: src/editor/editsearch.c:241 msgid "Replace with:" msgstr "" -#: src/editor/editsearch.c:242 src/editor/spell.c:763 +#: src/editor/editsearch.c:244 src/editor/spell.c:763 msgid "&Replace" msgstr "" -#: src/editor/editsearch.c:243 src/filemanager/file.c:972 -#: src/filemanager/filegui.c:471 +#: src/editor/editsearch.c:245 src/filemanager/file.c:1011 +#: src/filemanager/filegui.c:493 msgid "A&ll" msgstr "" -#: src/editor/editsearch.c:244 src/editor/spell.c:765 -#: src/filemanager/file.c:851 src/filemanager/file.c:924 -#: src/filemanager/file.c:927 src/filemanager/file.c:3097 +#: src/editor/editsearch.c:246 src/editor/spell.c:765 +#: src/filemanager/file.c:890 src/filemanager/file.c:963 +#: src/filemanager/file.c:966 src/filemanager/file.c:3173 #: src/filemanager/filegui.c:252 msgid "&Skip" msgstr "" -#: src/editor/editsearch.c:252 +#: src/editor/editsearch.c:255 msgid "Confirm replace" msgstr "" -#: src/editor/editsearch.c:738 src/viewer/search.c:93 +#: src/editor/editsearch.c:741 src/viewer/search.c:93 #, c-format msgid "Searching %s: %3d%%" msgstr "" -#: src/editor/editsearch.c:741 src/filemanager/find.c:1348 +#: src/editor/editsearch.c:744 src/filemanager/find.c:1349 #: src/viewer/search.c:96 #, c-format msgid "Searching %s" msgstr "" -#: src/editor/editsearch.c:1019 +#: src/editor/editsearch.c:1025 #, c-format msgid "%ld replacements made" msgstr "" @@ -2089,40 +2094,40 @@ msgstr "" msgid "Copyright (C) 1996-2022 the Free Software Foundation" msgstr "" -#: src/editor/editwidget.c:164 +#: src/editor/editwidget.c:165 msgid "About" msgstr "" -#: src/editor/editwidget.c:319 +#: src/editor/editwidget.c:324 msgid "Open files" msgstr "" -#: src/editor/editwidget.c:382 src/editor/editwidget.c:385 +#: src/editor/editwidget.c:388 src/editor/editwidget.c:391 msgid "Edit: " msgstr "" -#: src/editor/editwidget.c:671 +#: src/editor/editwidget.c:676 msgid "ButtonBar|Mark" msgstr "" -#: src/editor/editwidget.c:672 +#: src/editor/editwidget.c:677 msgid "ButtonBar|Replac" msgstr "" -#: src/editor/editwidget.c:673 src/filemanager/filemanager.c:1646 +#: src/editor/editwidget.c:678 src/filemanager/filemanager.c:1644 #: src/filemanager/tree.c:1177 msgid "ButtonBar|Copy" msgstr "" -#: src/editor/editwidget.c:674 +#: src/editor/editwidget.c:679 msgid "ButtonBar|Move" msgstr "" -#: src/editor/editwidget.c:676 src/filemanager/filemanager.c:1649 +#: src/editor/editwidget.c:681 src/filemanager/filemanager.c:1647 msgid "ButtonBar|Delete" msgstr "" -#: src/editor/editwidget.c:677 src/filemanager/filemanager.c:1650 +#: src/editor/editwidget.c:682 src/filemanager/filemanager.c:1648 msgid "ButtonBar|PullDn" msgstr "" @@ -2246,23 +2251,23 @@ msgstr "" msgid "Select language" msgstr "" -#: src/editor/syntax.c:1430 +#: src/editor/syntax.c:1424 msgid "Choose syntax highlighting" msgstr "" -#: src/editor/syntax.c:1431 +#: src/editor/syntax.c:1425 msgid "< Auto >" msgstr "" -#: src/editor/syntax.c:1432 +#: src/editor/syntax.c:1426 msgid "< Reload Current Syntax >" msgstr "" -#: src/editor/syntax.c:1534 src/editor/syntax.c:1540 +#: src/editor/syntax.c:1528 src/editor/syntax.c:1534 msgid "Load syntax file" msgstr "" -#: src/editor/syntax.c:1535 src/help.c:1095 src/usermenu.c:975 +#: src/editor/syntax.c:1529 src/help.c:1097 src/usermenu.c:975 #: src/usermenu.c:1015 #, c-format msgid "" @@ -2270,7 +2275,7 @@ msgid "" "%s" msgstr "" -#: src/editor/syntax.c:1541 +#: src/editor/syntax.c:1535 #, c-format msgid "Error in file %s on line %d" msgstr "" @@ -2283,12 +2288,12 @@ msgid "" "extra access permissions with the \"su\" command?" msgstr "" -#: src/execute.c:196 src/filemanager/ext.c:665 +#: src/execute.c:196 src/filemanager/ext.c:667 #, c-format msgid "Cannot fetch a local copy of %s" msgstr "" -#: src/execute.c:437 src/filemanager/command.c:123 +#: src/execute.c:437 src/filemanager/command.c:125 msgid "The shell is already running a command" msgstr "" @@ -2343,7 +2348,7 @@ msgstr "" msgid "Chown advanced command" msgstr "" -#: src/filemanager/achown.c:857 src/filemanager/achown.c:1052 +#: src/filemanager/achown.c:858 src/filemanager/achown.c:1053 #: src/filemanager/chmod.c:434 src/filemanager/chmod.c:581 #, c-format msgid "" @@ -2351,26 +2356,26 @@ msgid "" "%s" msgstr "" -#: src/filemanager/achown.c:859 src/filemanager/achown.c:894 -#: src/filemanager/chattr.c:1107 src/filemanager/chmod.c:437 +#: src/filemanager/achown.c:860 src/filemanager/achown.c:895 +#: src/filemanager/chattr.c:1119 src/filemanager/chmod.c:437 #: src/filemanager/chown.c:310 src/vfs/sftpfs/connection.c:519 #: src/vfs/sftpfs/connection.c:531 msgid "&Ignore" msgstr "" -#: src/filemanager/achown.c:859 src/filemanager/achown.c:894 -#: src/filemanager/chattr.c:1107 src/filemanager/chmod.c:437 +#: src/filemanager/achown.c:860 src/filemanager/achown.c:895 +#: src/filemanager/chattr.c:1119 src/filemanager/chmod.c:437 #: src/filemanager/chown.c:310 msgid "Ignore &all" msgstr "" -#: src/filemanager/achown.c:859 src/filemanager/achown.c:894 -#: src/filemanager/chattr.c:1107 src/filemanager/chmod.c:437 -#: src/filemanager/chown.c:310 src/filemanager/file.c:924 src/viewer/hex.c:431 +#: src/filemanager/achown.c:860 src/filemanager/achown.c:895 +#: src/filemanager/chattr.c:1119 src/filemanager/chmod.c:437 +#: src/filemanager/chown.c:310 src/filemanager/file.c:963 src/viewer/hex.c:429 msgid "&Retry" msgstr "" -#: src/filemanager/achown.c:892 src/filemanager/achown.c:1058 +#: src/filemanager/achown.c:893 src/filemanager/achown.c:1059 #: src/filemanager/chown.c:307 src/filemanager/chown.c:475 #, c-format msgid "" @@ -2382,120 +2387,120 @@ msgstr "" msgid "< Default >" msgstr "" -#: src/filemanager/boxes.c:224 +#: src/filemanager/boxes.c:222 msgid "Skins" msgstr "" -#: src/filemanager/boxes.c:382 src/filemanager/boxes.c:1005 +#: src/filemanager/boxes.c:380 src/filemanager/boxes.c:1016 #: src/selcodepage.c:101 msgid "Other 8 bit" msgstr "" -#: src/filemanager/boxes.c:467 +#: src/filemanager/boxes.c:466 msgid "Running" msgstr "" -#: src/filemanager/boxes.c:468 src/filemanager/find.c:1619 +#: src/filemanager/boxes.c:467 src/filemanager/find.c:1621 msgid "Stopped" msgstr "" -#: src/filemanager/boxes.c:535 +#: src/filemanager/boxes.c:534 msgid "&Never" msgstr "" -#: src/filemanager/boxes.c:536 +#: src/filemanager/boxes.c:535 msgid "On dum&b terminals" msgstr "" -#: src/filemanager/boxes.c:537 +#: src/filemanager/boxes.c:536 msgid "Alwa&ys" msgstr "" -#: src/filemanager/boxes.c:551 +#: src/filemanager/boxes.c:550 msgid "File operations" msgstr "" -#: src/filemanager/boxes.c:552 +#: src/filemanager/boxes.c:551 msgid "&Verbose operation" msgstr "" -#: src/filemanager/boxes.c:553 +#: src/filemanager/boxes.c:552 msgid "Compute tota&ls" msgstr "" -#: src/filemanager/boxes.c:554 +#: src/filemanager/boxes.c:553 msgid "Classic pro&gressbar" msgstr "" -#: src/filemanager/boxes.c:555 +#: src/filemanager/boxes.c:554 msgid "Mkdi&r autoname" msgstr "" -#: src/filemanager/boxes.c:556 +#: src/filemanager/boxes.c:555 msgid "&Preallocate space" msgstr "" -#: src/filemanager/boxes.c:559 +#: src/filemanager/boxes.c:558 msgid "Esc key mode" msgstr "" -#: src/filemanager/boxes.c:560 +#: src/filemanager/boxes.c:559 msgid "S&ingle press" msgstr "" -#: src/filemanager/boxes.c:561 +#: src/filemanager/boxes.c:560 msgid "Timeout:" msgstr "" -#: src/filemanager/boxes.c:566 +#: src/filemanager/boxes.c:565 msgid "Pause after run" msgstr "" -#: src/filemanager/boxes.c:571 +#: src/filemanager/boxes.c:570 msgid "Use internal edi&t" msgstr "" -#: src/filemanager/boxes.c:572 +#: src/filemanager/boxes.c:571 msgid "Use internal vie&w" msgstr "" -#: src/filemanager/boxes.c:573 +#: src/filemanager/boxes.c:572 msgid "A&sk new file name" msgstr "" -#: src/filemanager/boxes.c:575 +#: src/filemanager/boxes.c:574 msgid "Auto m&enus" msgstr "" -#: src/filemanager/boxes.c:576 +#: src/filemanager/boxes.c:575 msgid "&Drop down menus" msgstr "" -#: src/filemanager/boxes.c:577 +#: src/filemanager/boxes.c:576 msgid "S&hell patterns" msgstr "" -#: src/filemanager/boxes.c:578 +#: src/filemanager/boxes.c:577 msgid "Co&mplete: show all" msgstr "" -#: src/filemanager/boxes.c:580 +#: src/filemanager/boxes.c:579 msgid "Rotating d&ash" msgstr "" -#: src/filemanager/boxes.c:581 +#: src/filemanager/boxes.c:580 msgid "Cd follows lin&ks" msgstr "" -#: src/filemanager/boxes.c:582 +#: src/filemanager/boxes.c:581 msgid "Sa&fe delete" msgstr "" -#: src/filemanager/boxes.c:583 +#: src/filemanager/boxes.c:582 msgid "Safe overwrite" msgstr "" -#: src/filemanager/boxes.c:584 +#: src/filemanager/boxes.c:583 msgid "A&uto save setup" msgstr "" @@ -2503,112 +2508,112 @@ msgstr "" msgid "Configure options" msgstr "" -#: src/filemanager/boxes.c:635 +#: src/filemanager/boxes.c:640 msgid "Skin:" msgstr "" -#: src/filemanager/boxes.c:641 +#: src/filemanager/boxes.c:646 msgid "&Shadows" msgstr "" -#: src/filemanager/boxes.c:649 +#: src/filemanager/boxes.c:655 msgid "Appearance" msgstr "" -#: src/filemanager/boxes.c:679 +#: src/filemanager/boxes.c:685 msgid "Case &insensitive" msgstr "" -#: src/filemanager/boxes.c:681 +#: src/filemanager/boxes.c:687 msgid "Use panel sort mo&de" msgstr "" -#: src/filemanager/boxes.c:688 +#: src/filemanager/boxes.c:694 msgid "Show mi&ni-status" msgstr "" -#: src/filemanager/boxes.c:689 +#: src/filemanager/boxes.c:695 msgid "Use SI si&ze units" msgstr "" -#: src/filemanager/boxes.c:690 +#: src/filemanager/boxes.c:696 msgid "Mi&x all files" msgstr "" -#: src/filemanager/boxes.c:691 +#: src/filemanager/boxes.c:697 msgid "Show &backup files" msgstr "" -#: src/filemanager/boxes.c:692 +#: src/filemanager/boxes.c:698 msgid "Show &hidden files" msgstr "" -#: src/filemanager/boxes.c:693 +#: src/filemanager/boxes.c:699 msgid "&Fast dir reload" msgstr "" -#: src/filemanager/boxes.c:694 +#: src/filemanager/boxes.c:700 msgid "Ma&rk moves down" msgstr "" -#: src/filemanager/boxes.c:695 +#: src/filemanager/boxes.c:701 msgid "Re&verse files only" msgstr "" -#: src/filemanager/boxes.c:697 +#: src/filemanager/boxes.c:703 msgid "Simple s&wap" msgstr "" -#: src/filemanager/boxes.c:698 +#: src/filemanager/boxes.c:704 msgid "A&uto save panels setup" msgstr "" -#: src/filemanager/boxes.c:705 +#: src/filemanager/boxes.c:711 msgid "Navigation" msgstr "" -#: src/filemanager/boxes.c:706 +#: src/filemanager/boxes.c:712 msgid "L&ynx-like motion" msgstr "" -#: src/filemanager/boxes.c:708 +#: src/filemanager/boxes.c:714 msgid "Pa&ge scrolling" msgstr "" -#: src/filemanager/boxes.c:709 +#: src/filemanager/boxes.c:715 msgid "Center &scrolling" msgstr "" -#: src/filemanager/boxes.c:710 +#: src/filemanager/boxes.c:716 msgid "&Mouse page scrolling" msgstr "" -#: src/filemanager/boxes.c:713 +#: src/filemanager/boxes.c:719 msgid "File highlight" msgstr "" -#: src/filemanager/boxes.c:714 +#: src/filemanager/boxes.c:720 msgid "File &types" msgstr "" -#: src/filemanager/boxes.c:715 +#: src/filemanager/boxes.c:721 msgid "&Permissions" msgstr "" -#: src/filemanager/boxes.c:717 +#: src/filemanager/boxes.c:723 msgid "Quick search" msgstr "" -#: src/filemanager/boxes.c:729 +#: src/filemanager/boxes.c:736 msgid "Panel options" msgstr "" -#: src/filemanager/boxes.c:741 src/filemanager/info.c:86 +#: src/filemanager/boxes.c:748 src/filemanager/info.c:86 #: src/vfs/sftpfs/connection.c:378 msgid "Information" msgstr "" -#: src/filemanager/boxes.c:742 +#: src/filemanager/boxes.c:749 msgid "" "Using the fast reload option may not reflect the exact\n" "directory contents. In this case you'll need to do a\n" @@ -2616,176 +2621,176 @@ msgid "" "the details." msgstr "" -#: src/filemanager/boxes.c:776 +#: src/filemanager/boxes.c:783 msgid "&Full file list" msgstr "" -#: src/filemanager/boxes.c:777 +#: src/filemanager/boxes.c:784 msgid "&Brief file list:" msgstr "" -#: src/filemanager/boxes.c:778 +#: src/filemanager/boxes.c:785 msgid "&Long file list" msgstr "" -#: src/filemanager/boxes.c:779 +#: src/filemanager/boxes.c:786 msgid "&User defined:" msgstr "" -#: src/filemanager/boxes.c:788 +#: src/filemanager/boxes.c:795 msgid "columns" msgstr "" -#: src/filemanager/boxes.c:795 +#: src/filemanager/boxes.c:802 msgid "User &mini status" msgstr "" -#: src/filemanager/boxes.c:805 +#: src/filemanager/boxes.c:813 msgid "Listing format" msgstr "" -#: src/filemanager/boxes.c:884 +#: src/filemanager/boxes.c:892 msgid "Executable &first" msgstr "" -#: src/filemanager/boxes.c:886 +#: src/filemanager/boxes.c:894 msgid "&Reverse" msgstr "" -#: src/filemanager/boxes.c:895 +#: src/filemanager/boxes.c:904 msgid "Sort order" msgstr "" #. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix -#: src/filemanager/boxes.c:919 +#: src/filemanager/boxes.c:928 msgid "Confirmation|&Delete" msgstr "" -#: src/filemanager/boxes.c:920 +#: src/filemanager/boxes.c:929 msgid "Confirmation|O&verwrite" msgstr "" -#: src/filemanager/boxes.c:921 +#: src/filemanager/boxes.c:930 msgid "Confirmation|&Execute" msgstr "" -#: src/filemanager/boxes.c:922 +#: src/filemanager/boxes.c:931 msgid "Confirmation|E&xit" msgstr "" -#: src/filemanager/boxes.c:923 +#: src/filemanager/boxes.c:932 msgid "Confirmation|Di&rectory hotlist delete" msgstr "" -#: src/filemanager/boxes.c:925 +#: src/filemanager/boxes.c:934 msgid "Confirmation|&History cleanup" msgstr "" -#: src/filemanager/boxes.c:934 src/filemanager/cmd.c:137 +#: src/filemanager/boxes.c:944 src/filemanager/cmd.c:137 msgid "Confirmation" msgstr "" -#: src/filemanager/boxes.c:951 +#: src/filemanager/boxes.c:961 msgid "&UTF-8 output" msgstr "" -#: src/filemanager/boxes.c:952 +#: src/filemanager/boxes.c:962 msgid "&Full 8 bits output" msgstr "" -#: src/filemanager/boxes.c:953 +#: src/filemanager/boxes.c:963 msgid "&ISO 8859-1" msgstr "" -#: src/filemanager/boxes.c:954 +#: src/filemanager/boxes.c:964 msgid "7 &bits" msgstr "" -#: src/filemanager/boxes.c:961 src/filemanager/boxes.c:1019 +#: src/filemanager/boxes.c:971 src/filemanager/boxes.c:1030 msgid "F&ull 8 bits input" msgstr "" -#: src/filemanager/boxes.c:969 src/filemanager/boxes.c:1027 +#: src/filemanager/boxes.c:980 src/filemanager/boxes.c:1039 msgid "Display bits" msgstr "" -#: src/filemanager/boxes.c:1014 +#: src/filemanager/boxes.c:1025 msgid "Input / display codepage:" msgstr "" -#: src/filemanager/boxes.c:1077 src/filemanager/tree.c:1127 +#: src/filemanager/boxes.c:1089 src/filemanager/tree.c:1127 msgid "Directory tree" msgstr "" -#: src/filemanager/boxes.c:1127 +#: src/filemanager/boxes.c:1139 msgid "Timeout for freeing VFSs (sec):" msgstr "" -#: src/filemanager/boxes.c:1132 +#: src/filemanager/boxes.c:1144 msgid "FTP anonymous password:" msgstr "" -#: src/filemanager/boxes.c:1135 +#: src/filemanager/boxes.c:1147 msgid "FTP directory cache timeout (sec):" msgstr "" -#: src/filemanager/boxes.c:1138 +#: src/filemanager/boxes.c:1150 msgid "&Always use ftp proxy:" msgstr "" -#: src/filemanager/boxes.c:1142 +#: src/filemanager/boxes.c:1154 msgid "&Use ~/.netrc" msgstr "" -#: src/filemanager/boxes.c:1143 +#: src/filemanager/boxes.c:1155 msgid "Use &passive mode" msgstr "" -#: src/filemanager/boxes.c:1144 +#: src/filemanager/boxes.c:1156 msgid "Use passive mode over pro&xy" msgstr "" -#: src/filemanager/boxes.c:1154 +#: src/filemanager/boxes.c:1167 msgid "Virtual File System Setting" msgstr "" -#: src/filemanager/boxes.c:1203 +#: src/filemanager/boxes.c:1222 msgid "cd" msgstr "" -#: src/filemanager/boxes.c:1210 +#: src/filemanager/boxes.c:1230 msgid "Quick cd" msgstr "" -#: src/filemanager/boxes.c:1225 +#: src/filemanager/boxes.c:1245 msgid "Existing filename (filename symlink will point to):" msgstr "" -#: src/filemanager/boxes.c:1229 +#: src/filemanager/boxes.c:1249 msgid "Symbolic link filename:" msgstr "" -#: src/filemanager/boxes.c:1239 +#: src/filemanager/boxes.c:1260 msgid "Symbolic link" msgstr "" -#: src/filemanager/boxes.c:1267 +#: src/filemanager/boxes.c:1288 msgid "&Stop" msgstr "" -#: src/filemanager/boxes.c:1268 +#: src/filemanager/boxes.c:1289 msgid "&Resume" msgstr "" -#: src/filemanager/boxes.c:1269 +#: src/filemanager/boxes.c:1290 msgid "&Kill" msgstr "" -#: src/filemanager/boxes.c:1299 +#: src/filemanager/boxes.c:1320 msgid "Background jobs" msgstr "" -#: src/filemanager/cd.c:287 src/filemanager/panel.c:3676 +#: src/filemanager/cd.c:287 src/filemanager/panel.c:3747 #: src/filemanager/tree.c:596 #, c-format msgid "" @@ -2905,22 +2910,22 @@ msgstr "" msgid "C&lear marked" msgstr "" -#: src/filemanager/chattr.c:1002 +#: src/filemanager/chattr.c:1001 msgid "Chattr command" msgstr "" -#: src/filemanager/chattr.c:1104 src/filemanager/chattr.c:1261 +#: src/filemanager/chattr.c:1116 src/filemanager/chattr.c:1273 #, c-format msgid "" "Cannot chattr \"%s\"\n" "%s" msgstr "" -#: src/filemanager/chattr.c:1217 +#: src/filemanager/chattr.c:1229 msgid "Cannot change attributes on non-local filesystems" msgstr "" -#: src/filemanager/chattr.c:1236 +#: src/filemanager/chattr.c:1248 #, c-format msgid "" "Cannot get flags of \"%s\"\n" @@ -2996,7 +3001,7 @@ msgid "Chmod command" msgstr "" #: src/filemanager/chmod.c:341 src/filemanager/chown.c:166 -#: src/filemanager/panel.c:256 +#: src/filemanager/panel.c:266 msgid "Permission" msgstr "" @@ -3052,229 +3057,229 @@ msgstr "" msgid "Files tagged, want to cd?" msgstr "" -#: src/filemanager/cmd.c:143 src/filemanager/cmd.c:1040 -#: src/filemanager/panel.c:2805 src/filemanager/panel.c:3384 +#: src/filemanager/cmd.c:143 src/filemanager/cmd.c:1004 +#: src/filemanager/panel.c:2873 src/filemanager/panel.c:3452 msgid "Cannot change directory" msgstr "" -#: src/filemanager/cmd.c:194 -msgid "Filter" -msgstr "" - -#: src/filemanager/cmd.c:195 -msgid "Set expression for filtering filenames" -msgstr "" - -#: src/filemanager/cmd.c:355 +#: src/filemanager/cmd.c:334 #, c-format msgid "Link %s to:" msgstr "" -#: src/filemanager/cmd.c:357 +#: src/filemanager/cmd.c:336 msgid "Link" msgstr "" -#: src/filemanager/cmd.c:366 +#: src/filemanager/cmd.c:345 #, c-format msgid "link: %s" msgstr "" -#: src/filemanager/cmd.c:405 +#: src/filemanager/cmd.c:384 #, c-format msgid "symlink: %s" msgstr "" -#: src/filemanager/cmd.c:465 src/filemanager/panel.c:4772 +#: src/filemanager/cmd.c:444 src/filemanager/panel.c:4905 #, c-format msgid "Cannot chdir to \"%s\"" msgstr "" -#: src/filemanager/cmd.c:628 +#: src/filemanager/cmd.c:607 msgid "View file" msgstr "" -#: src/filemanager/cmd.c:628 +#: src/filemanager/cmd.c:607 msgid "Filename:" msgstr "" -#: src/filemanager/cmd.c:662 +#: src/filemanager/cmd.c:641 msgid "Filtered view" msgstr "" -#: src/filemanager/cmd.c:663 +#: src/filemanager/cmd.c:642 msgid "Filter command and arguments:" msgstr "" -#: src/filemanager/cmd.c:751 +#: src/filemanager/cmd.c:730 msgid "Edit file" msgstr "" -#: src/filemanager/cmd.c:783 +#: src/filemanager/cmd.c:762 msgid "Create a new Directory" msgstr "" -#: src/filemanager/cmd.c:784 +#: src/filemanager/cmd.c:763 msgid "Enter directory name:" msgstr "" -#: src/filemanager/cmd.c:860 +#: src/filemanager/cmd.c:824 msgid "Extension file edit" msgstr "" -#: src/filemanager/cmd.c:861 +#: src/filemanager/cmd.c:825 msgid "Which extension file you want to edit?" msgstr "" -#: src/filemanager/cmd.c:862 src/filemanager/cmd.c:903 -#: src/filemanager/cmd.c:961 +#: src/filemanager/cmd.c:826 src/filemanager/cmd.c:867 +#: src/filemanager/cmd.c:925 msgid "&System Wide" msgstr "" -#: src/filemanager/cmd.c:959 +#: src/filemanager/cmd.c:923 msgid "Highlighting groups file edit" msgstr "" -#: src/filemanager/cmd.c:960 +#: src/filemanager/cmd.c:924 msgid "Which highlighting file you want to edit?" msgstr "" -#: src/filemanager/cmd.c:1055 +#: src/filemanager/cmd.c:1019 msgid "Compare directories" msgstr "" -#: src/filemanager/cmd.c:1056 +#: src/filemanager/cmd.c:1020 msgid "Select compare method:" msgstr "" -#: src/filemanager/cmd.c:1057 +#: src/filemanager/cmd.c:1021 msgid "&Quick" msgstr "" -#: src/filemanager/cmd.c:1057 +#: src/filemanager/cmd.c:1021 msgid "&Size only" msgstr "" -#: src/filemanager/cmd.c:1057 +#: src/filemanager/cmd.c:1021 msgid "&Thorough" msgstr "" -#: src/filemanager/cmd.c:1071 +#: src/filemanager/cmd.c:1035 msgid "" "Both panels should be in the listing mode\n" "to use this command" msgstr "" -#: src/filemanager/cmd.c:1129 +#: src/filemanager/cmd.c:1093 #, c-format msgid "'%s' is not a symbolic link" msgstr "" -#: src/filemanager/cmd.c:1142 +#: src/filemanager/cmd.c:1106 #, c-format msgid "Symlink '%s' points to:" msgstr "" -#: src/filemanager/cmd.c:1144 +#: src/filemanager/cmd.c:1108 msgid "Edit symlink" msgstr "" -#: src/filemanager/cmd.c:1157 +#: src/filemanager/cmd.c:1121 #, c-format msgid "edit symlink, unable to remove %s: %s" msgstr "" -#: src/filemanager/cmd.c:1165 +#: src/filemanager/cmd.c:1129 #, c-format msgid "edit symlink: %s" msgstr "" -#: src/filemanager/cmd.c:1210 +#: src/filemanager/cmd.c:1174 msgid "FTP to machine" msgstr "" -#: src/filemanager/cmd.c:1221 +#: src/filemanager/cmd.c:1185 msgid "SFTP to machine" msgstr "" -#: src/filemanager/cmd.c:1233 +#: src/filemanager/cmd.c:1197 msgid "Shell link to machine" msgstr "" -#: src/filemanager/cmd.c:1245 +#: src/filemanager/cmd.c:1209 msgid "Undelete files on an ext2 file system" msgstr "" -#: src/filemanager/cmd.c:1246 +#: src/filemanager/cmd.c:1210 msgid "" "Enter device (without /dev/) to undelete\n" "files on: (F1 for details)" msgstr "" -#: src/filemanager/cmd.c:1304 src/filemanager/cmd.c:1338 -#: src/filemanager/file.c:760 +#: src/filemanager/cmd.c:1268 src/filemanager/cmd.c:1302 +#: src/filemanager/file.c:770 msgid "Directory scanning" msgstr "" -#: src/filemanager/cmd.c:1384 src/filemanager/cmd.c:1386 +#: src/filemanager/cmd.c:1348 src/filemanager/cmd.c:1350 msgid "Setup" msgstr "" -#: src/filemanager/cmd.c:1384 +#: src/filemanager/cmd.c:1348 #, c-format msgid "Setup saved to %s" msgstr "" -#: src/filemanager/cmd.c:1386 +#: src/filemanager/cmd.c:1350 #, c-format msgid "Unable to save setup to %s" msgstr "" -#: src/filemanager/command.c:115 src/usermenu.c:964 +#: src/filemanager/command.c:117 src/usermenu.c:964 msgid "Cannot execute commands on non-local filesystems" msgstr "" -#: src/filemanager/ext.c:248 src/usermenu.c:477 +#: src/filemanager/ext.c:255 src/usermenu.c:477 msgid "Parameter" msgstr "" -#: src/filemanager/ext.c:462 src/usermenu.c:448 +#: src/filemanager/ext.c:467 src/usermenu.c:448 #, c-format msgid "" "Cannot create temporary command file\n" "%s" msgstr "" -#: src/filemanager/ext.c:731 +#: src/filemanager/ext.c:738 msgid "Pipe failed" msgstr "" -#: src/filemanager/ext.c:847 +#: src/filemanager/ext.c:774 +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + +#: src/filemanager/ext.c:826 #, c-format msgid " %s%s file error" msgstr "" -#: src/filemanager/ext.c:849 +#: src/filemanager/ext.c:828 #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -#: src/filemanager/ext.c:869 +#: src/filemanager/ext.c:845 #, c-format msgid "%s file error" msgstr "" -#: src/filemanager/ext.c:871 +#: src/filemanager/ext.c:847 #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -#: src/filemanager/file.c:95 src/filemanager/file.c:2691 -#: src/filemanager/tree.c:719 +#: src/filemanager/file.c:95 src/filemanager/file.c:2707 +#: src/filemanager/file.c:2764 src/filemanager/tree.c:719 msgid "DialogTitle|Copy" msgstr "" @@ -3282,95 +3287,95 @@ msgstr "" msgid "DialogTitle|Move" msgstr "" -#: src/filemanager/file.c:97 src/filemanager/hotlist.c:1158 -#: src/filemanager/hotlist.c:1175 src/filemanager/tree.c:829 +#: src/filemanager/file.c:97 src/filemanager/hotlist.c:1161 +#: src/filemanager/hotlist.c:1178 src/filemanager/tree.c:829 msgid "DialogTitle|Delete" msgstr "" -#: src/filemanager/file.c:150 +#: src/filemanager/file.c:152 msgid "FileOperation|Copy" msgstr "" -#: src/filemanager/file.c:151 +#: src/filemanager/file.c:153 msgid "FileOperation|Move" msgstr "" -#: src/filemanager/file.c:152 +#: src/filemanager/file.c:154 msgid "FileOperation|Delete" msgstr "" -#: src/filemanager/file.c:165 +#: src/filemanager/file.c:167 #, no-c-format msgid "%o %f%n\"%s\"%m" msgstr "" -#: src/filemanager/file.c:167 +#: src/filemanager/file.c:169 #, no-c-format msgid "%o %d %f%m" msgstr "" -#: src/filemanager/file.c:171 +#: src/filemanager/file.c:173 msgid "files" msgstr "" -#: src/filemanager/file.c:172 +#: src/filemanager/file.c:174 msgid "directory" msgstr "" -#: src/filemanager/file.c:173 +#: src/filemanager/file.c:175 msgid "directories" msgstr "" -#: src/filemanager/file.c:174 +#: src/filemanager/file.c:176 msgid "files/directories" msgstr "" #. TRANSLATORS: keep leading space here to split words in Copy/Move dialog -#: src/filemanager/file.c:176 +#: src/filemanager/file.c:178 msgid " with source mask:" msgstr "" -#: src/filemanager/file.c:404 +#: src/filemanager/file.c:414 #, c-format msgid "" "Cannot stat hardlink source file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:424 +#: src/filemanager/file.c:434 #, c-format msgid "" "Cannot create target hardlink \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:460 +#: src/filemanager/file.c:470 #, c-format msgid "Cannot create target hardlink \"%s\"" msgstr "" -#: src/filemanager/file.c:524 +#: src/filemanager/file.c:534 #, c-format msgid "" "Cannot read source link \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:538 +#: src/filemanager/file.c:548 msgid "" "Cannot make stable symlinks across non-local filesystems:\n" "\n" "Option Stable Symlinks will be disabled" msgstr "" -#: src/filemanager/file.c:607 +#: src/filemanager/file.c:617 #, c-format msgid "" "Cannot create target symlink \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:890 +#: src/filemanager/file.c:929 #, c-format msgid "" "\"%s\"\n" @@ -3379,7 +3384,7 @@ msgid "" "are the same directory" msgstr "" -#: src/filemanager/file.c:892 +#: src/filemanager/file.c:931 #, c-format msgid "" "\"%s\"\n" @@ -3388,18 +3393,18 @@ msgid "" "are the same file" msgstr "" -#: src/filemanager/file.c:924 src/filemanager/file.c:927 +#: src/filemanager/file.c:963 src/filemanager/file.c:966 msgid "Ski&p all" msgstr "" -#: src/filemanager/file.c:964 +#: src/filemanager/file.c:1003 #, c-format msgid "" "Directory \"%s\" not empty.\n" "Delete it recursively?" msgstr "" -#: src/filemanager/file.c:965 +#: src/filemanager/file.c:1004 #, c-format msgid "" "Background process:\n" @@ -3407,197 +3412,201 @@ msgid "" "Delete it recursively?" msgstr "" -#: src/filemanager/file.c:973 src/filemanager/filegui.c:475 +#: src/filemanager/file.c:1012 src/filemanager/filegui.c:497 msgid "Non&e" msgstr "" -#: src/filemanager/file.c:1167 +#: src/filemanager/file.c:1206 #, c-format msgid "" "Cannot remove file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:1225 +#: src/filemanager/file.c:1264 #, c-format msgid "" "Cannot stat file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:1241 +#: src/filemanager/file.c:1280 #, c-format msgid "Cannot overwrite directory \"%s\"" msgstr "" -#: src/filemanager/file.c:1296 +#: src/filemanager/file.c:1335 #, c-format msgid "" "Cannot move file \"%s\" to \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:1402 +#: src/filemanager/file.c:1441 #, c-format msgid "" "Cannot remove directory \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:1640 src/filemanager/file.c:2258 +#: src/filemanager/file.c:1691 src/filemanager/file.c:2309 #, c-format msgid "" "Cannot overwrite directory \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:1642 +#: src/filemanager/file.c:1693 #, c-format msgid "" "Cannot overwrite file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:1663 +#: src/filemanager/file.c:1714 #, c-format msgid "" "Cannot move directory \"%s\" to \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:1765 +#: src/filemanager/file.c:1816 msgid "Cannot operate on \"..\"!" msgstr "" -#: src/filemanager/file.c:2277 +#: src/filemanager/file.c:2328 #, c-format msgid "" "Cannot stat source file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2346 +#: src/filemanager/file.c:2397 #, c-format msgid "" "Cannot create special file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2358 src/filemanager/file.c:2702 +#: src/filemanager/file.c:2409 src/filemanager/file.c:2777 #, c-format msgid "" "Cannot chown target file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2373 src/filemanager/file.c:2718 +#: src/filemanager/file.c:2424 src/filemanager/file.c:2793 #, c-format msgid "" "Cannot chmod target file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2395 +#: src/filemanager/file.c:2446 #, c-format msgid "" "Cannot open source file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2408 +#: src/filemanager/file.c:2459 msgid "Reget failed, about to overwrite file" msgstr "" -#: src/filemanager/file.c:2419 +#: src/filemanager/file.c:2470 #, c-format msgid "" "Cannot fstat source file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2451 +#: src/filemanager/file.c:2502 #, c-format msgid "" "Cannot create target file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2482 +#: src/filemanager/file.c:2534 #, c-format msgid "" "Cannot fstat target file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2503 +#: src/filemanager/file.c:2555 #, c-format msgid "" "Cannot preallocate space for target file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2562 +#: src/filemanager/file.c:2614 #, c-format msgid "" "Cannot read source file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2601 +#: src/filemanager/file.c:2653 #, c-format msgid "" "Cannot write target file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2635 +#: src/filemanager/file.c:2687 msgid "(stalled)" msgstr "" -#: src/filemanager/file.c:2667 +#: src/filemanager/file.c:2708 src/filemanager/file.c:2764 +msgid "Incomplete file was retrieved" +msgstr "" + +#: src/filemanager/file.c:2709 src/filemanager/file.c:2765 +msgid "&Keep" +msgstr "" + +#: src/filemanager/file.c:2709 +msgid "&Continue copy" +msgstr "" + +#: src/filemanager/file.c:2740 #, c-format msgid "" "Cannot close source file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2679 +#: src/filemanager/file.c:2752 #, c-format msgid "" "Cannot close target file \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2691 -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -#: src/filemanager/file.c:2692 -msgid "&Keep" -msgstr "" - -#: src/filemanager/file.c:2783 +#: src/filemanager/file.c:2858 #, c-format msgid "" "Cannot stat source directory \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2827 +#: src/filemanager/file.c:2902 #, c-format msgid "" "Source \"%s\" is not a directory\n" "%s" msgstr "" -#: src/filemanager/file.c:2839 +#: src/filemanager/file.c:2914 #, c-format msgid "" "Cannot copy cyclic symbolic link\n" "\"%s\"" msgstr "" -#: src/filemanager/file.c:2878 src/filemanager/file.c:3369 +#: src/filemanager/file.c:2953 src/filemanager/file.c:3450 #: src/filemanager/tree.c:776 #, c-format msgid "" @@ -3605,26 +3614,26 @@ msgid "" "%s" msgstr "" -#: src/filemanager/file.c:2911 +#: src/filemanager/file.c:2986 #, c-format msgid "" "Cannot create target directory \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:2935 +#: src/filemanager/file.c:3010 #, c-format msgid "" "Cannot chown target directory \"%s\"\n" "%s" msgstr "" -#: src/filemanager/file.c:3138 +#: src/filemanager/file.c:3217 #, c-format msgid "Directories: %zu, total size: %s" msgstr "" -#: src/filemanager/file.c:3285 +#: src/filemanager/file.c:3366 msgid "Sorry, I could not put the job in background" msgstr "" @@ -3661,136 +3670,136 @@ msgstr "" msgid "%ld B/s" msgstr "" -#: src/filemanager/filegui.c:439 +#: src/filemanager/filegui.c:461 msgid "New :" msgstr "" -#: src/filemanager/filegui.c:447 +#: src/filemanager/filegui.c:469 msgid "Existing:" msgstr "" -#: src/filemanager/filegui.c:456 +#: src/filemanager/filegui.c:478 msgid "Overwrite this file?" msgstr "" -#: src/filemanager/filegui.c:462 src/filemanager/hotlist.c:191 +#: src/filemanager/filegui.c:484 src/filemanager/hotlist.c:191 msgid "A&ppend" msgstr "" -#: src/filemanager/filegui.c:464 +#: src/filemanager/filegui.c:486 msgid "&Reget" msgstr "" -#: src/filemanager/filegui.c:467 +#: src/filemanager/filegui.c:489 msgid "Overwrite all files?" msgstr "" -#: src/filemanager/filegui.c:469 +#: src/filemanager/filegui.c:491 msgid "Don't overwrite with &zero length file" msgstr "" -#: src/filemanager/filegui.c:473 +#: src/filemanager/filegui.c:495 msgid "&Older" msgstr "" -#: src/filemanager/filegui.c:477 +#: src/filemanager/filegui.c:499 msgid "S&maller" msgstr "" -#: src/filemanager/filegui.c:479 +#: src/filemanager/filegui.c:501 msgid "&Size differs" msgstr "" -#: src/filemanager/filegui.c:505 +#: src/filemanager/filegui.c:527 msgid "File exists" msgstr "" -#: src/filemanager/filegui.c:507 +#: src/filemanager/filegui.c:529 msgid "Background process: File exists" msgstr "" -#: src/filemanager/filegui.c:1022 +#: src/filemanager/filegui.c:1047 #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" -#: src/filemanager/filegui.c:1025 +#: src/filemanager/filegui.c:1050 #, c-format msgid "Files processed: %zu" msgstr "" -#: src/filemanager/filegui.c:1070 +#: src/filemanager/filegui.c:1095 #, c-format msgid "Time: %s %s" msgstr "" -#: src/filemanager/filegui.c:1074 +#: src/filemanager/filegui.c:1099 #, c-format msgid "Time: %s %s (%s)" msgstr "" -#: src/filemanager/filegui.c:1080 +#: src/filemanager/filegui.c:1105 #, c-format msgid "Time: %s" msgstr "" -#: src/filemanager/filegui.c:1084 +#: src/filemanager/filegui.c:1109 #, c-format msgid "Time: %s (%s)" msgstr "" -#: src/filemanager/filegui.c:1094 +#: src/filemanager/filegui.c:1119 #, c-format msgid " Total: %s " msgstr "" -#: src/filemanager/filegui.c:1098 +#: src/filemanager/filegui.c:1123 #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" -#: src/filemanager/filegui.c:1122 +#: src/filemanager/filegui.c:1147 msgid "Source" msgstr "" -#: src/filemanager/filegui.c:1147 +#: src/filemanager/filegui.c:1172 msgid "Target" msgstr "" -#: src/filemanager/filegui.c:1180 +#: src/filemanager/filegui.c:1205 msgid "Deleting" msgstr "" -#: src/filemanager/filegui.c:1346 src/filemanager/find.c:584 -#: src/filemanager/panel.c:2543 +#: src/filemanager/filegui.c:1371 src/filemanager/find.c:585 +#: src/filemanager/panel.c:2555 msgid "&Using shell patterns" msgstr "" -#: src/filemanager/filegui.c:1348 +#: src/filemanager/filegui.c:1373 msgid "to:" msgstr "" -#: src/filemanager/filegui.c:1352 +#: src/filemanager/filegui.c:1377 msgid "Follow &links" msgstr "" -#: src/filemanager/filegui.c:1353 +#: src/filemanager/filegui.c:1378 msgid "Preserve &attributes" msgstr "" -#: src/filemanager/filegui.c:1355 +#: src/filemanager/filegui.c:1380 msgid "Di&ve into subdir if exists" msgstr "" -#: src/filemanager/filegui.c:1356 +#: src/filemanager/filegui.c:1381 msgid "&Stable symlinks" msgstr "" -#: src/filemanager/filegui.c:1361 +#: src/filemanager/filegui.c:1386 msgid "&Background" msgstr "" -#: src/filemanager/filegui.c:1414 +#: src/filemanager/filegui.c:1440 #, c-format msgid "Invalid source pattern '%s'" msgstr "" @@ -3807,7 +3816,7 @@ msgstr "" msgid "&Info" msgstr "" -#: src/filemanager/filemanager.c:197 src/filemanager/find.c:602 +#: src/filemanager/filemanager.c:197 src/filemanager/find.c:603 msgid "&Tree" msgstr "" @@ -3816,7 +3825,7 @@ msgid "&Listing format..." msgstr "" #: src/filemanager/filemanager.c:202 -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" #: src/filemanager/filemanager.c:203 @@ -3836,7 +3845,7 @@ msgid "S&hell link..." msgstr "" #: src/filemanager/filemanager.c:215 -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" #: src/filemanager/filemanager.c:217 @@ -4043,7 +4052,7 @@ msgstr[0] "" msgstr[1] "" #: src/filemanager/filemanager.c:1062 src/filemanager/filemanager.c:1068 -#: src/filemanager/panel.c:2826 +#: src/filemanager/panel.c:2894 msgid "The Midnight Commander" msgstr "" @@ -4051,35 +4060,35 @@ msgstr "" msgid "Do you really want to quit the Midnight Commander?" msgstr "" -#: src/filemanager/filemanager.c:1629 +#: src/filemanager/filemanager.c:1627 msgid "&Above" msgstr "" -#: src/filemanager/filemanager.c:1629 +#: src/filemanager/filemanager.c:1627 msgid "&Left" msgstr "" -#: src/filemanager/filemanager.c:1630 +#: src/filemanager/filemanager.c:1628 msgid "&Below" msgstr "" -#: src/filemanager/filemanager.c:1630 +#: src/filemanager/filemanager.c:1628 msgid "&Right" msgstr "" -#: src/filemanager/filemanager.c:1643 +#: src/filemanager/filemanager.c:1641 msgid "ButtonBar|Menu" msgstr "" -#: src/filemanager/filemanager.c:1644 src/viewer/display.c:92 +#: src/filemanager/filemanager.c:1642 src/viewer/display.c:92 msgid "ButtonBar|View" msgstr "" -#: src/filemanager/filemanager.c:1647 src/filemanager/tree.c:1178 +#: src/filemanager/filemanager.c:1645 src/filemanager/tree.c:1178 msgid "ButtonBar|RenMov" msgstr "" -#: src/filemanager/filemanager.c:1648 src/filemanager/tree.c:1181 +#: src/filemanager/filemanager.c:1646 src/filemanager/tree.c:1181 msgid "ButtonBar|Mkdir" msgstr "" @@ -4091,7 +4100,7 @@ msgstr "" msgid "&Again" msgstr "" -#: src/filemanager/find.c:194 src/filemanager/panelize.c:140 +#: src/filemanager/find.c:194 src/filemanager/panelize.c:141 msgid "Pane&lize" msgstr "" @@ -4108,85 +4117,86 @@ msgstr "" msgid "Found: %lu" msgstr "" -#: src/filemanager/find.c:508 src/filemanager/find.c:518 +#: src/filemanager/find.c:508 src/filemanager/find.c:519 +#: src/filemanager/panel.c:2593 msgid "Malformed regular expression" msgstr "" -#: src/filemanager/find.c:581 +#: src/filemanager/find.c:582 msgid "File name:" msgstr "" -#: src/filemanager/find.c:582 +#: src/filemanager/find.c:583 msgid "&Find recursively" msgstr "" -#: src/filemanager/find.c:583 +#: src/filemanager/find.c:584 msgid "Follow s&ymlinks" msgstr "" -#: src/filemanager/find.c:589 +#: src/filemanager/find.c:590 msgid "S&kip hidden" msgstr "" -#: src/filemanager/find.c:592 +#: src/filemanager/find.c:593 msgid "Content:" msgstr "" -#: src/filemanager/find.c:593 +#: src/filemanager/find.c:594 msgid "Sea&rch for content" msgstr "" -#: src/filemanager/find.c:595 +#: src/filemanager/find.c:596 msgid "Case sens&itive" msgstr "" -#: src/filemanager/find.c:597 +#: src/filemanager/find.c:598 msgid "A&ll charsets" msgstr "" -#: src/filemanager/find.c:600 +#: src/filemanager/find.c:601 msgid "Fir&st hit" msgstr "" -#: src/filemanager/find.c:678 +#: src/filemanager/find.c:679 msgid "Find File" msgstr "" -#: src/filemanager/find.c:686 +#: src/filemanager/find.c:687 msgid "Start at:" msgstr "" -#: src/filemanager/find.c:695 +#: src/filemanager/find.c:696 msgid "Ena&ble ignore directories:" msgstr "" -#: src/filemanager/find.c:1035 src/filemanager/find.c:1129 +#: src/filemanager/find.c:1036 src/filemanager/find.c:1130 #, c-format msgid "Grepping in %s" msgstr "" -#: src/filemanager/find.c:1311 +#: src/filemanager/find.c:1312 msgid "Finished" msgstr "" -#: src/filemanager/find.c:1317 +#: src/filemanager/find.c:1318 #, c-format msgid "Finished (ignored %zu directory)" msgid_plural "Finished (ignored %zu directories)" msgstr[0] "" msgstr[1] "" -#: src/filemanager/find.c:1519 +#: src/filemanager/find.c:1520 #, c-format msgid "Find File: \"%s\". Content: \"%s\"" msgstr "" -#: src/filemanager/find.c:1522 +#: src/filemanager/find.c:1523 #, c-format msgid "Find File: \"%s\"" msgstr "" -#: src/filemanager/find.c:1619 src/filemanager/find.c:1701 +#: src/filemanager/find.c:1621 src/filemanager/find.c:1703 msgid "Searching" msgstr "" @@ -4218,12 +4228,12 @@ msgstr "" msgid "New &entry" msgstr "" -#: src/filemanager/hotlist.c:189 src/filemanager/hotlist.c:1014 -#: src/filemanager/hotlist.c:1076 +#: src/filemanager/hotlist.c:189 src/filemanager/hotlist.c:1015 +#: src/filemanager/hotlist.c:1078 msgid "&Insert" msgstr "" -#: src/filemanager/hotlist.c:193 src/filemanager/panelize.c:141 +#: src/filemanager/hotlist.c:193 src/filemanager/panelize.c:142 msgid "&Remove" msgstr "" @@ -4231,84 +4241,84 @@ msgstr "" msgid "Subgroup - press ENTER to see list" msgstr "" -#: src/filemanager/hotlist.c:770 +#: src/filemanager/hotlist.c:771 msgid "Active VFS directories" msgstr "" -#: src/filemanager/hotlist.c:777 +#: src/filemanager/hotlist.c:778 msgid "Directory hotlist" msgstr "" -#: src/filemanager/hotlist.c:787 src/filemanager/hotlist.c:1470 +#: src/filemanager/hotlist.c:788 src/filemanager/hotlist.c:1473 msgid "Top level group" msgstr "" -#: src/filemanager/hotlist.c:812 +#: src/filemanager/hotlist.c:813 msgid "Directory path" msgstr "" -#: src/filemanager/hotlist.c:849 +#: src/filemanager/hotlist.c:850 #, c-format msgid "Moving %s" msgstr "" -#: src/filemanager/hotlist.c:859 +#: src/filemanager/hotlist.c:860 msgid "Directory label" msgstr "" -#: src/filemanager/hotlist.c:1013 src/filemanager/hotlist.c:1075 +#: src/filemanager/hotlist.c:1014 src/filemanager/hotlist.c:1077 msgid "&Append" msgstr "" -#: src/filemanager/hotlist.c:1044 +#: src/filemanager/hotlist.c:1046 msgid "New hotlist entry" msgstr "" -#: src/filemanager/hotlist.c:1044 +#: src/filemanager/hotlist.c:1046 msgid "Directory label:" msgstr "" -#: src/filemanager/hotlist.c:1045 +#: src/filemanager/hotlist.c:1047 msgid "Directory path:" msgstr "" -#: src/filemanager/hotlist.c:1103 +#: src/filemanager/hotlist.c:1106 msgid "New hotlist group" msgstr "" -#: src/filemanager/hotlist.c:1103 +#: src/filemanager/hotlist.c:1106 msgid "Name of new group:" msgstr "" -#: src/filemanager/hotlist.c:1156 +#: src/filemanager/hotlist.c:1159 #, c-format msgid "Are you sure you want to remove entry \"%s\"?" msgstr "" -#: src/filemanager/hotlist.c:1173 +#: src/filemanager/hotlist.c:1176 #, c-format msgid "" "Group \"%s\" is not empty.\n" "Remove it?" msgstr "" -#: src/filemanager/hotlist.c:1493 +#: src/filemanager/hotlist.c:1496 msgid "Hotlist Load" msgstr "" -#: src/filemanager/hotlist.c:1495 +#: src/filemanager/hotlist.c:1498 #, c-format msgid "" "MC was unable to write %s file,\n" "your old hotlist entries were not deleted" msgstr "" -#: src/filemanager/hotlist.c:1601 +#: src/filemanager/hotlist.c:1604 #, c-format msgid "Label for \"%s\":" msgstr "" -#: src/filemanager/hotlist.c:1616 +#: src/filemanager/hotlist.c:1619 msgid "Add to hotlist" msgstr "" @@ -4337,7 +4347,7 @@ msgstr "" #: src/filemanager/info.c:186 #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #: src/filemanager/info.c:193 @@ -4483,219 +4493,223 @@ msgstr "" #. TRANSLATORS: one single character to represent 'unsorted' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:161 +#: src/filemanager/panel.c:171 msgid "sort|u" msgstr "" -#: src/filemanager/panel.c:162 +#: src/filemanager/panel.c:172 msgid "&Unsorted" msgstr "" #. TRANSLATORS: one single character to represent 'name' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:171 +#: src/filemanager/panel.c:181 msgid "sort|n" msgstr "" -#: src/filemanager/panel.c:172 +#: src/filemanager/panel.c:182 msgid "&Name" msgstr "" #. TRANSLATORS: one single character to represent 'version' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:181 +#: src/filemanager/panel.c:191 msgid "sort|v" msgstr "" -#: src/filemanager/panel.c:182 +#: src/filemanager/panel.c:192 msgid "&Version" msgstr "" #. TRANSLATORS: one single character to represent 'extension' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:191 +#: src/filemanager/panel.c:201 msgid "sort|e" msgstr "" -#: src/filemanager/panel.c:192 +#: src/filemanager/panel.c:202 msgid "E&xtension" msgstr "" #. TRANSLATORS: one single character to represent 'size' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:201 +#: src/filemanager/panel.c:211 msgid "sort|s" msgstr "" -#: src/filemanager/panel.c:202 +#: src/filemanager/panel.c:212 msgid "&Size" msgstr "" -#: src/filemanager/panel.c:210 +#: src/filemanager/panel.c:220 msgid "Block Size" msgstr "" #. TRANSLATORS: one single character to represent 'Modify time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:227 +#: src/filemanager/panel.c:237 msgid "sort|m" msgstr "" -#: src/filemanager/panel.c:228 +#: src/filemanager/panel.c:238 msgid "&Modify time" msgstr "" #. TRANSLATORS: one single character to represent 'Access time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:237 +#: src/filemanager/panel.c:247 msgid "sort|a" msgstr "" -#: src/filemanager/panel.c:238 +#: src/filemanager/panel.c:248 msgid "&Access time" msgstr "" #. TRANSLATORS: one single character to represent 'Change time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:247 +#: src/filemanager/panel.c:257 msgid "sort|h" msgstr "" -#: src/filemanager/panel.c:248 +#: src/filemanager/panel.c:258 msgid "C&hange time" msgstr "" -#: src/filemanager/panel.c:264 +#: src/filemanager/panel.c:274 msgid "Perm" msgstr "" -#: src/filemanager/panel.c:272 +#: src/filemanager/panel.c:282 msgid "Nl" msgstr "" #. TRANSLATORS: one single character to represent 'inode' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix -#: src/filemanager/panel.c:280 +#: src/filemanager/panel.c:290 msgid "sort|i" msgstr "" -#: src/filemanager/panel.c:281 +#: src/filemanager/panel.c:291 msgid "&Inode" msgstr "" -#: src/filemanager/panel.c:289 +#: src/filemanager/panel.c:299 msgid "UID" msgstr "" -#: src/filemanager/panel.c:297 +#: src/filemanager/panel.c:307 msgid "GID" msgstr "" -#: src/filemanager/panel.c:305 +#: src/filemanager/panel.c:315 msgid "Owner" msgstr "" -#: src/filemanager/panel.c:313 +#: src/filemanager/panel.c:323 msgid "Group" msgstr "" -#: src/filemanager/panel.c:499 +#: src/filemanager/panel.c:509 msgid "[dev]" msgstr "" -#: src/filemanager/panel.c:512 src/filemanager/panel.c:1031 +#: src/filemanager/panel.c:522 src/filemanager/panel.c:1042 msgid "UP--DIR" msgstr "" -#: src/filemanager/panel.c:531 +#: src/filemanager/panel.c:541 msgid "SYMLINK" msgstr "" -#: src/filemanager/panel.c:534 +#: src/filemanager/panel.c:544 msgid "SUB-DIR" msgstr "" -#: src/filemanager/panel.c:1023 +#: src/filemanager/panel.c:1034 msgid "" msgstr "" -#: src/filemanager/panel.c:1088 +#: src/filemanager/panel.c:1099 #, c-format msgid "%s in %d file" msgid_plural "%s in %d files" msgstr[0] "" msgstr[1] "" -#: src/filemanager/panel.c:1291 +#: src/filemanager/panel.c:1302 msgid "Panelize" msgstr "" -#: src/filemanager/panel.c:1809 +#: src/filemanager/panel.c:1822 msgid "Unknown tag on display format:" msgstr "" -#: src/filemanager/panel.c:2542 +#: src/filemanager/panel.c:2554 msgid "&Files only" msgstr "" -#: src/filemanager/panel.c:2545 +#: src/filemanager/panel.c:2557 msgid "&Case sensitive" msgstr "" -#: src/filemanager/panel.c:2601 +#: src/filemanager/panel.c:2647 msgid "Select" msgstr "" -#: src/filemanager/panel.c:2609 +#: src/filemanager/panel.c:2656 msgid "Unselect" msgstr "" -#: src/filemanager/panel.c:2826 +#: src/filemanager/panel.c:2684 +msgid "Filter" +msgstr "" + +#: src/filemanager/panel.c:2894 msgid "Do you really want to execute?" msgstr "" -#: src/filemanager/panel.c:3292 src/filemanager/panel.c:4423 -#: src/filemanager/panel.c:4471 src/viewer/actions_cmd.c:313 +#: src/filemanager/panel.c:3360 src/filemanager/panel.c:4540 +#: src/filemanager/panel.c:4588 src/viewer/actions_cmd.c:313 msgid "Cannot read directory contents" msgstr "" -#: src/filemanager/panel.c:4525 +#: src/filemanager/panel.c:4642 msgid "User supplied format looks invalid, reverting to default." msgstr "" -#: src/filemanager/panelize.c:142 +#: src/filemanager/panelize.c:143 msgid "&Add new" msgstr "" -#: src/filemanager/panelize.c:176 src/filemanager/panelize.c:316 +#: src/filemanager/panelize.c:177 src/filemanager/panelize.c:317 msgid "External panelize" msgstr "" -#: src/filemanager/panelize.c:186 src/filemanager/panelize.c:282 -#: src/filemanager/panelize.c:650 src/filemanager/panelize.c:704 +#: src/filemanager/panelize.c:187 src/filemanager/panelize.c:283 +#: src/filemanager/panelize.c:652 src/filemanager/panelize.c:706 msgid "Other command" msgstr "" -#: src/filemanager/panelize.c:190 +#: src/filemanager/panelize.c:191 msgid "Command" msgstr "" -#: src/filemanager/panelize.c:267 +#: src/filemanager/panelize.c:268 msgid "Add to external panelize" msgstr "" -#: src/filemanager/panelize.c:268 +#: src/filemanager/panelize.c:269 msgid "Enter command label:" msgstr "" -#: src/filemanager/panelize.c:341 src/filemanager/panelize.c:347 +#: src/filemanager/panelize.c:343 src/filemanager/panelize.c:349 #, c-format msgid "" "External panelize:\n" "%s" msgstr "" -#: src/filemanager/panelize.c:358 +#: src/filemanager/panelize.c:360 #, c-format msgid "" "External panelize:\n" @@ -4703,23 +4717,23 @@ msgid "" "%s" msgstr "" -#: src/filemanager/panelize.c:593 +#: src/filemanager/panelize.c:595 msgid "Cannot run external panelize in a non-local directory" msgstr "" -#: src/filemanager/panelize.c:654 +#: src/filemanager/panelize.c:656 msgid "Modified git files" msgstr "" -#: src/filemanager/panelize.c:655 +#: src/filemanager/panelize.c:657 msgid "Find rejects after patching" msgstr "" -#: src/filemanager/panelize.c:657 +#: src/filemanager/panelize.c:659 msgid "Find *.orig after patching" msgstr "" -#: src/filemanager/panelize.c:659 +#: src/filemanager/panelize.c:661 msgid "Find SUID and SGID programs" msgstr "" @@ -4787,20 +4801,20 @@ msgstr "" msgid "Internal bug: Double start of link area" msgstr "" -#: src/help.c:634 src/help.c:1117 +#: src/help.c:634 src/help.c:1119 #, c-format msgid "Cannot find node %s in help file" msgstr "" -#: src/help.c:1132 +#: src/help.c:1134 msgid "Help" msgstr "" -#: src/help.c:1160 +#: src/help.c:1164 msgid "ButtonBar|Index" msgstr "" -#: src/help.c:1161 +#: src/help.c:1165 msgid "ButtonBar|Prev" msgstr "" @@ -4896,31 +4910,31 @@ msgstr "" msgid "- < No translation >" msgstr "" -#: src/setup.c:220 +#: src/setup.c:222 msgid "%b %e %Y" msgstr "" -#: src/setup.c:221 +#: src/setup.c:223 msgid "%b %e %H:%M" msgstr "" -#: src/setup.c:1077 +#: src/setup.c:1079 #, c-format msgid "" "Cannot save file %s:\n" "%s" msgstr "" -#: src/subshell/common.c:1343 +#: src/subshell/common.c:1375 #, c-format msgid "Cannot open named pipe %s\n" msgstr "" -#: src/subshell/common.c:1620 +#: src/subshell/common.c:1656 msgid "The shell is still active. Quit anyway?" msgstr "" -#: src/subshell/common.c:1747 +#: src/subshell/common.c:1783 #, c-format msgid "Warning: Cannot change to %s.\n" msgstr "" @@ -5143,7 +5157,11 @@ msgid "" "%s" msgstr "" -#: src/vfs/extfs/extfs.c:747 +#: src/vfs/extfs/extfs.c:691 +msgid "Inconsistent archive" +msgstr "" + +#: src/vfs/extfs/extfs.c:740 #, c-format msgid "" "Cannot open %s archive\n" @@ -5151,248 +5169,267 @@ msgid "" "%s" msgstr "" -#: src/vfs/extfs/extfs.c:760 src/vfs/extfs/extfs.c:958 -#: src/vfs/extfs/extfs.c:966 src/vfs/extfs/extfs.c:971 +#: src/vfs/extfs/extfs.c:753 src/vfs/extfs/extfs.c:951 +#: src/vfs/extfs/extfs.c:961 src/vfs/extfs/extfs.c:966 #, c-format msgid "" "EXTFS virtual file system:\n" "%s" msgstr "" -#: src/vfs/extfs/extfs.c:1563 +#: src/vfs/extfs/extfs.c:1558 #, c-format msgid "Warning: cannot open %s directory\n" msgstr "" -#: src/vfs/fish/fish.c:383 +#: src/vfs/fish/fish.c:382 #, c-format msgid "fish: Disconnecting from %s" msgstr "" -#: src/vfs/fish/fish.c:559 +#: src/vfs/fish/fish.c:567 msgid "fish: Waiting for initial line..." msgstr "" -#: src/vfs/fish/fish.c:569 +#: src/vfs/fish/fish.c:577 msgid "Sorry, we cannot do password authenticated connections for now." msgstr "" -#: src/vfs/fish/fish.c:577 +#: src/vfs/fish/fish.c:585 #, c-format msgid "fish: Password is required for %s" msgstr "" -#: src/vfs/fish/fish.c:585 +#: src/vfs/fish/fish.c:593 msgid "fish: Sending password..." msgstr "" -#: src/vfs/fish/fish.c:622 +#: src/vfs/fish/fish.c:630 msgid "fish: Sending initial line..." msgstr "" -#: src/vfs/fish/fish.c:633 +#: src/vfs/fish/fish.c:641 msgid "fish: Handshaking version..." msgstr "" -#: src/vfs/fish/fish.c:644 +#: src/vfs/fish/fish.c:652 msgid "fish: Getting host info..." msgstr "" -#: src/vfs/fish/fish.c:766 +#: src/vfs/fish/fish.c:931 #, c-format msgid "fish: Reading directory %s..." msgstr "" -#: src/vfs/fish/fish.c:952 src/vfs/ftpfs/ftpfs.c:1858 +#: src/vfs/fish/fish.c:976 src/vfs/ftpfs/ftpfs.c:1918 #: src/vfs/undelfs/undelfs.c:384 #, c-format msgid "%s: done." msgstr "" -#: src/vfs/fish/fish.c:959 src/vfs/ftpfs/ftpfs.c:1806 +#: src/vfs/fish/fish.c:983 src/vfs/ftpfs/ftpfs.c:1866 #: src/vfs/undelfs/undelfs.c:387 #, c-format msgid "%s: failure" msgstr "" -#: src/vfs/fish/fish.c:1017 +#: src/vfs/fish/fish.c:1041 #, c-format msgid "fish: store %s: sending command..." msgstr "" -#: src/vfs/fish/fish.c:1041 +#: src/vfs/fish/fish.c:1065 msgid "fish: Local read failed, sending zeros" msgstr "" -#: src/vfs/fish/fish.c:1060 +#: src/vfs/fish/fish.c:1084 msgid "fish: storing file" msgstr "" -#: src/vfs/fish/fish.c:1130 +#: src/vfs/fish/fish.c:1154 msgid "Aborting transfer..." msgstr "" -#: src/vfs/fish/fish.c:1146 +#: src/vfs/fish/fish.c:1170 msgid "Error reported after abort." msgstr "" -#: src/vfs/fish/fish.c:1148 +#: src/vfs/fish/fish.c:1172 msgid "Aborted transfer would be successful." msgstr "" -#: src/vfs/ftpfs/ftpfs.c:590 +#: src/vfs/ftpfs/ftpfs.c:589 #, c-format msgid "ftpfs: Disconnecting from %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:642 +#: src/vfs/ftpfs/ftpfs.c:641 #, c-format msgid "FTP: Password required for %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:685 +#: src/vfs/ftpfs/ftpfs.c:684 msgid "ftpfs: sending login name" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:690 +#: src/vfs/ftpfs/ftpfs.c:689 msgid "ftpfs: sending user password" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:696 +#: src/vfs/ftpfs/ftpfs.c:695 #, c-format msgid "FTP: Account required for user %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:698 +#: src/vfs/ftpfs/ftpfs.c:697 msgid "Account:" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:703 +#: src/vfs/ftpfs/ftpfs.c:702 msgid "ftpfs: sending user account" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:713 +#: src/vfs/ftpfs/ftpfs.c:712 msgid "ftpfs: logged in" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:726 +#: src/vfs/ftpfs/ftpfs.c:725 #, c-format msgid "ftpfs: Login incorrect for user %s " msgstr "" -#: src/vfs/ftpfs/ftpfs.c:862 +#: src/vfs/ftpfs/ftpfs.c:861 msgid "ftpfs: Invalid host name." msgstr "" -#: src/vfs/ftpfs/ftpfs.c:908 src/vfs/ftpfs/ftpfs.c:924 +#: src/vfs/ftpfs/ftpfs.c:907 src/vfs/ftpfs/ftpfs.c:923 #, c-format msgid "ftpfs: %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:931 +#: src/vfs/ftpfs/ftpfs.c:930 #, c-format msgid "ftpfs: making connection to %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:941 +#: src/vfs/ftpfs/ftpfs.c:940 msgid "ftpfs: connection interrupted by user" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:943 +#: src/vfs/ftpfs/ftpfs.c:942 #, c-format msgid "ftpfs: connection to server failed: %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:998 +#: src/vfs/ftpfs/ftpfs.c:997 #, c-format msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1310 +#: src/vfs/ftpfs/ftpfs.c:1260 +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#: src/vfs/ftpfs/ftpfs.c:1323 src/vfs/ftpfs/ftpfs.c:1342 +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#: src/vfs/ftpfs/ftpfs.c:1330 +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +#: src/vfs/ftpfs/ftpfs.c:1347 +msgid "ftpfs: could not reconnect to server" +msgstr "" + +#: src/vfs/ftpfs/ftpfs.c:1365 msgid "ftpfs: invalid address family" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1318 +#: src/vfs/ftpfs/ftpfs.c:1373 #, c-format msgid "ftpfs: could not create socket: %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1353 +#: src/vfs/ftpfs/ftpfs.c:1408 msgid "ftpfs: could not setup passive mode" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1473 +#: src/vfs/ftpfs/ftpfs.c:1533 msgid "ftpfs: aborting transfer." msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1477 +#: src/vfs/ftpfs/ftpfs.c:1537 #, c-format msgid "ftpfs: abort error: %s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1485 +#: src/vfs/ftpfs/ftpfs.c:1545 msgid "ftpfs: abort failed" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1628 src/vfs/ftpfs/ftpfs.c:1756 +#: src/vfs/ftpfs/ftpfs.c:1688 src/vfs/ftpfs/ftpfs.c:1816 msgid "ftpfs: CWD failed." msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1637 src/vfs/ftpfs/ftpfs.c:1645 +#: src/vfs/ftpfs/ftpfs.c:1697 src/vfs/ftpfs/ftpfs.c:1705 msgid "ftpfs: couldn't resolve symlink" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1719 +#: src/vfs/ftpfs/ftpfs.c:1779 msgid "Resolving symlink..." msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1748 +#: src/vfs/ftpfs/ftpfs.c:1808 #, c-format msgid "ftpfs: Reading FTP directory %s... %s%s" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1751 +#: src/vfs/ftpfs/ftpfs.c:1811 msgid "(strict rfc959)" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1751 +#: src/vfs/ftpfs/ftpfs.c:1811 msgid "(chdir first)" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1792 +#: src/vfs/ftpfs/ftpfs.c:1852 msgid "ftpfs: failed; nowhere to fallback to" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:1947 +#: src/vfs/ftpfs/ftpfs.c:2008 msgid "ftpfs: storing file" msgstr "" -#: src/vfs/ftpfs/ftpfs.c:2448 +#: src/vfs/ftpfs/ftpfs.c:2509 msgid "" "~/.netrc file has incorrect mode\n" "Remove password or correct mode" msgstr "" -#: src/vfs/sfs/sfs.c:226 src/vfs/sfs/sfs.c:234 src/vfs/sfs/sfs.c:241 +#: src/vfs/sfs/sfs.c:226 src/vfs/sfs/sfs.c:236 src/vfs/sfs/sfs.c:243 #, c-format msgid "" "SFS virtual file system:\n" "%s" msgstr "" -#: src/vfs/sfs/sfs.c:459 +#: src/vfs/sfs/sfs.c:461 #, c-format msgid "%s: Warning: file %s not found\n" msgstr "" -#: src/vfs/sfs/sfs.c:489 +#: src/vfs/sfs/sfs.c:491 #, c-format msgid "" "Warning: Invalid line in %s:\n" "%s\n" msgstr "" -#: src/vfs/sfs/sfs.c:506 +#: src/vfs/sfs/sfs.c:508 #, c-format msgid "" "Warning: Invalid flag %c in %s:\n" @@ -5658,23 +5695,23 @@ msgid "" "Save modified file?" msgstr "" -#: src/viewer/dialogs.c:148 +#: src/viewer/dialogs.c:149 msgid "&Line number" msgstr "" -#: src/viewer/dialogs.c:149 +#: src/viewer/dialogs.c:150 msgid "Pe&rcents" msgstr "" -#: src/viewer/dialogs.c:150 +#: src/viewer/dialogs.c:151 msgid "&Decimal offset" msgstr "" -#: src/viewer/dialogs.c:151 +#: src/viewer/dialogs.c:152 msgid "He&xadecimal offset" msgstr "" -#: src/viewer/dialogs.c:186 +#: src/viewer/dialogs.c:188 msgid "Goto" msgstr "" @@ -5718,14 +5755,14 @@ msgstr "" msgid "ButtonBar|Format" msgstr "" -#: src/viewer/growbuf.c:202 +#: src/viewer/growbuf.c:212 #, c-format msgid "" "Failed to read data from child stdout:\n" "%s" msgstr "" -#: src/viewer/hex.c:420 +#: src/viewer/hex.c:418 #, c-format msgid "" "Error while closing the file:\n" @@ -5733,7 +5770,7 @@ msgid "" "Data may have been written or not" msgstr "" -#: src/viewer/hex.c:428 +#: src/viewer/hex.c:426 #, c-format msgid "" "Cannot save file:\n" @@ -5744,29 +5781,29 @@ msgstr "" msgid "View: " msgstr "" -#: src/viewer/mcviewer.c:334 +#: src/viewer/mcviewer.c:337 #, c-format msgid "" "Cannot open \"%s\"\n" "%s" msgstr "" -#: src/viewer/mcviewer.c:364 +#: src/viewer/mcviewer.c:367 msgid "Cannot view: not a regular file" msgstr "" -#: src/viewer/mcviewer.c:399 +#: src/viewer/mcviewer.c:402 #, c-format msgid "" "Cannot open \"%s\" in parse mode\n" "%s" msgstr "" -#: src/viewer/search.c:447 +#: src/viewer/search.c:450 msgid "Search done" msgstr "" -#: src/viewer/search.c:447 +#: src/viewer/search.c:450 msgid "Continue from beginning?" msgstr "" diff --git a/mcsrc/po/mn.po b/mcsrc/po/mn.po index dcaf5bae..32e8b88b 100644 --- a/mcsrc/po/mn.po +++ b/mcsrc/po/mn.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Shuree Nyam-Oidov <99shuree@gmail.com>, 2020\n" "Language-Team: Mongolian (http://www.transifex.com/mc/mc/language/mn/)\n" @@ -504,6 +504,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1127,7 +1130,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2262,12 +2265,6 @@ msgstr "Файлууд Ñ‚ÑмдÑглÑгдÑÑн байна, шилжих Ò¯Ò¯? msgid "Cannot change directory" msgstr "Ð¥Ð°Ð²Ñ‚Ð°Ñ Ñ€ÑƒÑƒ шилжиж чадÑангүй" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "%s руу холбох:" @@ -2408,14 +2405,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2425,8 +2429,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2661,6 +2665,15 @@ msgstr "" msgid "(stalled)" msgstr "(гацÑан)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Хадгалах" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2673,12 +2686,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Дутуу файл орж ирÑÑн байна. Хадгалах уу?" - -msgid "&Keep" -msgstr "&Хадгалах" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2785,7 +2792,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2813,7 +2820,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2865,7 +2872,7 @@ msgstr "&Мод" msgid "&Listing format..." msgstr "&Жагшаалтын формат" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2880,7 +2887,7 @@ msgstr "&FTP-холбооÑ..." msgid "S&hell link..." msgstr "S&hell-холбооÑ..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3259,7 +3266,7 @@ msgid "No space information" msgstr "ÐœÑдÑÑлÑлийн зай алга" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3504,6 +3511,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3922,6 +3932,10 @@ msgstr "" "Файлын төгÑөлийн алдаа\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Ðлдаатай архив tar" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4049,6 +4063,21 @@ msgstr "ftpfs: Ñервер руу холбогдолт амжилтгүй бо msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/nb.po b/mcsrc/po/nb.po index 3a93bdf1..59707d14 100644 --- a/mcsrc/po/nb.po +++ b/mcsrc/po/nb.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: heskjestad , 2021-2022\n" "Language-Team: Norwegian BokmÃ¥l (http://www.transifex.com/mc/mc/language/" @@ -531,6 +531,9 @@ msgstr "" "Uventet feil i select() ved lesing av data fra barneprosess:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Klarte ikke lukke rørdeskriptor (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1212,9 +1215,9 @@ msgstr "Du mÃ¥ først utheve en tekstblokk" msgid "Run sort" msgstr "Kjør sortering" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Angi sorteringsalternativer (se manualside),\n" +"Angi sorteringsalternativer (jf. «man 1 sort»),\n" "og skill dem med blanktegn:" msgid "Sort" @@ -2375,12 +2378,6 @@ msgstr "Merket filer. Vil du bytte mappe?" msgid "Cannot change directory" msgstr " Klarte ikke bytte mappe" -msgid "Filter" -msgstr "Filtrer" - -msgid "Set expression for filtering filenames" -msgstr "Skriv inn et filtreringsmønster for filnavn" - #, c-format msgid "Link %s to:" msgstr "Lag lenke fra %s til:" @@ -2527,17 +2524,27 @@ msgstr "" msgid "Pipe failed" msgstr "pipe() mislyktes" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"Fila %s er utdatert.\n" +"Midnight Commandor bruker nÃ¥ fila %s.\n" +"Kopier ev. endringer i den gamle fila til den nye." + #, c-format msgid " %s%s file error" msgstr "Feil i fila %s%s " #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Formatet til fila %smc.ext ble endret i versjon 3.0. Det ser ut som om " +"Formatet til fila %s%s ble endret i versjon 4.0. Det ser ut som om " "installasjonen mislyktes. Hent en oppdatert kopi fra Midnight Commander-" "pakken." @@ -2547,11 +2554,11 @@ msgstr "Feil i fila %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Formatet til fila %s ble endret i versjon 3.0. Du kan enten hente det fra " -"%smc.ext eller bruke fila som en eksempelfil." +"Formatet til fila %s ble endret i versjon 4.0. Du kan enten hente det fra " +"%s%s eller bruke fila som en eksempelfil." msgid "DialogTitle|Copy" msgstr "DialogTitle|Kopier" @@ -2845,6 +2852,15 @@ msgstr "" msgid "(stalled)" msgstr "(venter)" +msgid "Incomplete file was retrieved" +msgstr "Leste ufullstendig fil" + +msgid "&Keep" +msgstr "&Behold" + +msgid "&Continue copy" +msgstr "Fortsett &kopiering" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2861,12 +2877,6 @@ msgstr "" "Klarte ikke lukke mÃ¥lfila «%s»\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Leste ufullstendig fil. Beholde den?" - -msgid "&Keep" -msgstr "&Behold" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2985,8 +2995,8 @@ msgid "Background process: File exists" msgstr "Bakgrunnsprosess: Fila finnes" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Filer behandlet: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "Filer behandlet: %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3013,8 +3023,8 @@ msgid " Total: %s " msgstr " Totalt: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Totalt: %s/%s " +msgid " Total: %s / %s " +msgstr " Totalt: %s / %s " msgid "Source" msgstr "Kilde" @@ -3065,7 +3075,7 @@ msgstr "&Tre" msgid "&Listing format..." msgstr "&Utlistingsformat ..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "Sorterings&rekkefølge ..." msgid "&Filter..." @@ -3080,7 +3090,7 @@ msgstr "Koble til FT&P ..." msgid "S&hell link..." msgstr "Koble til &skall ..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "K&oble til SFTP ..." msgid "Paneli&ze" @@ -3463,8 +3473,8 @@ msgid "No space information" msgstr "Mangler info om ledig kapasitet" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Ledig kap.: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "Ledig kap.: %s / %s (%d%%)" #, c-format msgid "Type: %s" @@ -3708,6 +3718,9 @@ msgstr "Velg" msgid "Unselect" msgstr "Fravelg" +msgid "Filter" +msgstr "Filtrer" + msgid "Do you really want to execute?" msgstr "Vil du kjøre?" @@ -4145,6 +4158,10 @@ msgstr "" "Uventet slutt pÃ¥ fil\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Inkonsistent tar-arkiv" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4277,6 +4294,21 @@ msgstr "ftpfs: tilkobling til tjener mislyktes: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Venter pÃ¥ Ã¥ prøve igjen ... %d (Ctrl + G avbryter)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: klarte ikke slÃ¥ opp navn fra adresse: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: forsøk ny tilkobling til tjener, forsøk %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: klarte ikke hente socket-navn: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: ny tilkobling til tjener mislyktes" + msgid "ftpfs: invalid address family" msgstr "ftpfs: ugyldig adressefamilie" diff --git a/mcsrc/po/nl.po b/mcsrc/po/nl.po index ccf33bc6..94d5d678 100644 --- a/mcsrc/po/nl.po +++ b/mcsrc/po/nl.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Richard E. van der Luit , " "2012-2015,2017,2020\n" @@ -534,6 +534,9 @@ msgstr "" "Onverwachte fout in select() reading data van een child process:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1206,8 +1209,8 @@ msgstr "U moet eerst een blok selecteren" msgid "Run sort" msgstr "Sorteren" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Geef sorteeropties (zie 'man'-pagina) gescheiden door spaties:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Sorteren" @@ -2368,12 +2371,6 @@ msgstr "Bestanden gemarkeerd, veranderen van map?" msgid "Cannot change directory" msgstr "Veranderen van map mislukt" -msgid "Filter" -msgstr "Filter" - -msgid "Set expression for filtering filenames" -msgstr " Zet expressie voor het filteren van bestandsnamen" - #, c-format msgid "Link %s to:" msgstr "%s verbinden met:" @@ -2520,19 +2517,23 @@ msgstr "" msgid "Pipe failed" msgstr "Pijp mislukt" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s bestandsfout " #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Het formaat van het %smc.ext bestand is veranderd met versie 3.0. De " -"installatie lijkt mislukt. Haal een nieuwe versie van het Midnight Commander-" -"pakket op." #, c-format msgid "%s file error" @@ -2540,12 +2541,9 @@ msgstr "%s bestandsfout" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"De format van het %s bestand is veranderd met versie 3.0. U kunt de format " -"bekijken in %smc.ext of dat bestand zelf gebruiken als voorbeeld van hoe u " -"het nu moet schrijven." msgid "DialogTitle|Copy" msgstr "Kopiëren" @@ -2840,6 +2838,15 @@ msgstr "" msgid "(stalled)" msgstr "(geblokkeerd)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Behouden" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2856,12 +2863,6 @@ msgstr "" "Doelbestand \"%s\" kan niet gesloten worden \n" "%s " -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Onvolledige bestand opgehaald. Wilt u het behouden?" - -msgid "&Keep" -msgstr "&Behouden" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2980,8 +2981,8 @@ msgid "Background process: File exists" msgstr "Achtergrond proces: Bestand bestaat" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Verwerkte bestanden: %zu van %zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3008,8 +3009,8 @@ msgid " Total: %s " msgstr " Totaal: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Totaal: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Bron" @@ -3060,7 +3061,7 @@ msgstr "&Boom" msgid "&Listing format..." msgstr "&Lijstformaat..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3075,7 +3076,7 @@ msgstr "FT&P-Verbinding... " msgid "S&hell link..." msgstr "S&hellverbinding... " -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3458,8 +3459,8 @@ msgid "No space information" msgstr "Geen informatie over schijfruimte" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Vrij ruimte: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3703,6 +3704,9 @@ msgstr "Selectie maken" msgid "Unselect" msgstr "Selectie wissen" +msgid "Filter" +msgstr "Filter" + msgid "Do you really want to execute?" msgstr "Wilt u die opdracht echt uitvoeren? " @@ -4139,6 +4143,10 @@ msgstr "" "Onverwacht einde van bestand in\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Inconsistent tar-archief" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4267,6 +4275,21 @@ msgstr "ftpfs: verbinding met server mislukt: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Aan het wachten op nieuwe poging... %d (Control-C om af te breken)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: Ongeldige adres familie" diff --git a/mcsrc/po/nl_BE.po b/mcsrc/po/nl_BE.po index 2a5ec008..30341305 100644 --- a/mcsrc/po/nl_BE.po +++ b/mcsrc/po/nl_BE.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Dutch (Belgium) (http://www.transifex.com/mc/mc/language/" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3256,7 +3263,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3501,6 +3508,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3889,6 +3899,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4016,6 +4029,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/pl.po b/mcsrc/po/pl.po index 5a83c913..e3cb2d64 100644 --- a/mcsrc/po/pl.po +++ b/mcsrc/po/pl.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Piotr DrÄ…g , 2011-2022\n" "Language-Team: Polish (http://www.transifex.com/mc/mc/language/pl/)\n" @@ -18,9 +18,9 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" -"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" -"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && " +"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " +"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -536,6 +536,9 @@ msgstr "" "potomnego:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Nie można zamknąć deskryptora potoku (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1215,10 +1218,10 @@ msgstr "Należy najpierw wyróżnić blok tekstu" msgid "Run sort" msgstr "Wykonaj polecenie sort" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"ProszÄ™ podać opcje polecenia sort (proszÄ™ zobaczyć stronÄ™ man), rozdzielone " -"spacjami: " +"ProszÄ™ podać opcje polecenia sort (strona podrÄ™cznika sort(1) zawiera wiÄ™cej " +"informacji), rozdzielone spacjami:" msgid "Sort" msgstr "Posortuj" @@ -2377,12 +2380,6 @@ msgstr "Zaznaczono pliki, zmienić katalog?" msgid "Cannot change directory" msgstr "Nie można zmienić katalogu" -msgid "Filter" -msgstr "Filtr" - -msgid "Set expression for filtering filenames" -msgstr "Wyrażenie filtrujÄ…ce nazwy plików" - #, c-format msgid "Link %s to:" msgstr "DowiÄ…zanie %s do:" @@ -2529,17 +2526,27 @@ msgstr "" msgid "Pipe failed" msgstr "Potok siÄ™ nie powiódÅ‚" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"Plik %s jest przestarzaÅ‚y.\n" +"Midnight Commander używa teraz pliku %s.\n" +"ProszÄ™ skopiować wprowadzone zmiany z poprzedniego pliku do nowego." + #, c-format msgid " %s%s file error" msgstr " BÅ‚Ä…d pliku %s%s" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Format pliku %smc.ext ulegÅ‚ zmianie wraz z wersjÄ… 3.0. WyglÄ…da na to, że " +"Format pliku %s%s ulegÅ‚ zmianie wraz z wersjÄ… 4.0. WyglÄ…da na to, że " "instalacja siÄ™ nie powiodÅ‚a. ProszÄ™ pobrać nowÄ… wersjÄ™ tego pliku z pakietu " "programu Midnight Commander." @@ -2549,11 +2556,11 @@ msgstr "BÅ‚Ä…d pliku %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Format pliku %s zostaÅ‚ zmieniony w wersji 3.0. Można skopiować go z %smc.ext " -"lub użyć tego pliku jako przykÅ‚ad." +"Format pliku %s zostaÅ‚ zmieniony w wersji 4.0. Można skopiować go z %s%s lub " +"użyć tego pliku jako przykÅ‚ad." msgid "DialogTitle|Copy" msgstr "Kopiowanie" @@ -2848,6 +2855,15 @@ msgstr "" msgid "(stalled)" msgstr "(wstrzymany)" +msgid "Incomplete file was retrieved" +msgstr "Pobrano niepeÅ‚ny plik" + +msgid "&Keep" +msgstr "&Zachowaj" + +msgid "&Continue copy" +msgstr "&Kontynuuj kopiowanie" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2864,12 +2880,6 @@ msgstr "" "Nie można zamknąć pliku docelowego „%sâ€\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Pobrano niepeÅ‚ny plik. Zachować go?" - -msgid "&Keep" -msgstr "&Zachowaj" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2988,7 +2998,7 @@ msgid "Background process: File exists" msgstr "Proces w tle: plik istnieje" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "Przetworzono pliki: %zu/%zu" #, c-format @@ -3016,7 +3026,7 @@ msgid " Total: %s " msgstr " Razem: %s " #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr " Razem: %s/%s " msgid "Source" @@ -3068,7 +3078,7 @@ msgstr "&Drzewo" msgid "&Listing format..." msgstr "&Format wyÅ›wietlania…" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "PorzÄ…dek s&ortowania…" msgid "&Filter..." @@ -3083,7 +3093,7 @@ msgstr "PoÅ‚Ä…czenie FT&P…" msgid "S&hell link..." msgstr "PoÅ‚Ä…czenie po po&wÅ‚oce…" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "PoÅ‚Ä…czenie SF&TP…" msgid "Paneli&ze" @@ -3471,7 +3481,7 @@ msgid "No space information" msgstr "Brak informacji o miejscu" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "Wolne miejsce: %s/%s (%d%%)" #, c-format @@ -3720,6 +3730,9 @@ msgstr "Wybierz" msgid "Unselect" msgstr "Odznacz" +msgid "Filter" +msgstr "Filtr" + msgid "Do you really want to execute?" msgstr "Na pewno wykonać?" @@ -4159,6 +4172,10 @@ msgstr "" "Nieoczekiwany koniec pliku\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Niespójne archiwum tar" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4291,6 +4308,21 @@ msgstr "ftpfs: poÅ‚Ä…czenie z serwerem siÄ™ nie powiodÅ‚o: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Oczekiwanie na ponowienie… %d (Ctrl-G anuluje)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: nie można wykonać tÅ‚umaczenia adresu na nazwÄ™: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: próba ponownego poÅ‚Ä…czenia z serwerem, %u. próba" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: nie można uzyskać nazwy gniazda: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: nie można ponownie poÅ‚Ä…czyć siÄ™ z serwerem" + msgid "ftpfs: invalid address family" msgstr "ftpfs: nieprawidÅ‚owa rodzina adresów" diff --git a/mcsrc/po/pt.po b/mcsrc/po/pt.po index fd2c783e..1359ea6a 100644 --- a/mcsrc/po/pt.po +++ b/mcsrc/po/pt.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Gilberto Jorge , 2013-2022\n" "Language-Team: Portuguese (http://www.transifex.com/mc/mc/language/pt/)\n" @@ -20,7 +20,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -533,6 +534,9 @@ msgstr "" "Erro inesperado em select() ao ler dados de um processo child:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Não é possível fechar o pipe descriptor (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1213,8 +1217,10 @@ msgstr "Primeiro tem de destacar um bloco de texto" msgid "Run sort" msgstr "Excutar ordenar" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Insira opções de ordenar (ver manpage) separado por espaço branco:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" +"Introduza opções de ordenação (ver sort(1) manpage) separadas por espaço " +"branco:" msgid "Sort" msgstr "Ordenar" @@ -2374,12 +2380,6 @@ msgstr "Ficheiros etiquetados, quer executar cd?" msgid "Cannot change directory" msgstr "Não é possível mudar de directório" -msgid "Filter" -msgstr "Filtrar" - -msgid "Set expression for filtering filenames" -msgstr "Definir expressão para filtrar nomes de ficheiros" - #, c-format msgid "Link %s to:" msgstr "Ligar %s a:" @@ -2526,18 +2526,28 @@ msgstr "" msgid "Pipe failed" msgstr "Falha de Pipe" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"Tem um ficheiro %s desactualizado.\n" +"Midnight Commander agora usa ficheiro %s.\n" +"Por favor copie as suas modificações do ficheiro antigo para o novo." + #, c-format msgid " %s%s file error" msgstr " %s%s erro de ficheiro" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"O formato do ficheiro %smc.ext mudou com a versão 3.0. Parece que a " -"instalação falhou. Por favor obtenha uma cópia recente do pacote do Midnight " +"O formato do ficheiro %s%s foi alterado com a versão 4.0. Parece que a " +"instalação falhou. Por favor obtenha uma cópia nova no pacote do Midnight " "Commander." #, c-format @@ -2546,11 +2556,11 @@ msgstr "%s erro de ficheiro" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"O formato do ficheiro %s mudou com a versão 3.0. Pode desejar copiá-lo de " -"%smc.ext ou usar esse ficheiro como um exemplo de como o escrever." +"O formato do ficheiro %s foi alterado com a versão 4.0. Pode querer copia-lo " +"do %s%s ou usar esse ficheiro como um exemplo de como escreve-lo." msgid "DialogTitle|Copy" msgstr "DialogTitle|Copiar" @@ -2845,6 +2855,15 @@ msgstr "" msgid "(stalled)" msgstr "(estagnado)" +msgid "Incomplete file was retrieved" +msgstr "Foi obtido ficheiro incompleto" + +msgid "&Keep" +msgstr "&Manter" + +msgid "&Continue copy" +msgstr "&Continuar a copiar" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2861,12 +2880,6 @@ msgstr "" "Não é possível fechar o ficheiro alvo \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Foi obtido ficheiro incompleto. Ficar com ele?" - -msgid "&Keep" -msgstr "&Manter" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2985,8 +2998,8 @@ msgid "Background process: File exists" msgstr "Processo em background: Ficheiro existe" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Ficheiros processados: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "Ficheiros processados: %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3013,8 +3026,8 @@ msgid " Total: %s " msgstr " Total: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Total: %s/%s " +msgid " Total: %s / %s " +msgstr " Total: %s / %s " msgid "Source" msgstr "Fonte" @@ -3065,8 +3078,8 @@ msgstr "&Ãrvore" msgid "&Listing format..." msgstr "Formato da &listagem..." -msgid "S&ort order..." -msgstr "&Ordem de classificação..." +msgid "&Sort order..." +msgstr "Ordem de cla&ssificação..." msgid "&Filter..." msgstr "&Filtro..." @@ -3080,8 +3093,8 @@ msgstr "Ligação FT&P..." msgid "S&hell link..." msgstr "Ligação s&hell..." -msgid "&SFTP link..." -msgstr "Ligação &SFTP..." +msgid "SFTP li&nk..." +msgstr "Lig&ação SFTP..." msgid "Paneli&ze" msgstr "Em Pai&nel" @@ -3235,6 +3248,7 @@ msgid "You have %zu opened screen. Quit anyway?" msgid_plural "You have %zu opened screens. Quit anyway?" msgstr[0] "Tem %zu ecrã aberto. Terminar de qualquer modo?" msgstr[1] "Tem %zu ecrãs abertos. Terminar de qualquer modo?" +msgstr[2] "Tem %zu ecrãs abertos. Terminar de qualquer modo?" msgid "The Midnight Commander" msgstr "O Midnight Commander" @@ -3336,6 +3350,7 @@ msgid "Finished (ignored %zu directory)" msgid_plural "Finished (ignored %zu directories)" msgstr[0] "Terminado (%zu directório ignorado)" msgstr[1] "Terminado (%zu directórios ignorados)" +msgstr[2] "Terminado (%zu directórios ignorados)" #, c-format msgid "Find File: \"%s\". Content: \"%s\"" @@ -3463,8 +3478,8 @@ msgid "No space information" msgstr "Nenhuma informação de espaço" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Espaço livre: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "Espaço livre: %s / %s (%d%%)" #, c-format msgid "Type: %s" @@ -3507,6 +3522,7 @@ msgid " (%lu block)" msgid_plural " (%lu blocks)" msgstr[0] " (%lu bloco)" msgstr[1] " (%lu blocos)" +msgstr[2] " (%lu blocos)" #, c-format msgid "Owner: %s/%s" @@ -3689,6 +3705,7 @@ msgid "%s in %d file" msgid_plural "%s in %d files" msgstr[0] "%s em %d ficheiro" msgstr[1] "%s em %d ficheiros" +msgstr[2] "%s em %d ficheiros" msgid "Panelize" msgstr "Em Panel" @@ -3708,6 +3725,9 @@ msgstr "Selecionar" msgid "Unselect" msgstr "Cancelar seleção" +msgid "Filter" +msgstr "Filtrar" + msgid "Do you really want to execute?" msgstr "Deseja mesmo executar?" @@ -4147,6 +4167,10 @@ msgstr "" "Fim de ficheiro inesperado\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Arquivo tar inconsistente" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4279,6 +4303,21 @@ msgstr "ftpfs: ligação ao servidor falhou: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Aguardando para repetir... %d (Control-G para cancelar)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: não foi possível a tradução endereço-para-nome: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: tentativa de reconexão ao servidor, tentativa %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: não foi possível obter o nome do socket: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: não foi possível reconectar ao servidor" + msgid "ftpfs: invalid address family" msgstr "ftpfs: endereço de família inválido" diff --git a/mcsrc/po/pt_BR.po b/mcsrc/po/pt_BR.po index ef39c435..51c17d46 100644 --- a/mcsrc/po/pt_BR.po +++ b/mcsrc/po/pt_BR.po @@ -5,6 +5,7 @@ # Translators: # Enrico Nicoletto , 2013 # Heitor Adão Júnior , 2017 +# marcelo cripe , 2022 # Mauro Hemerly Gazzani , 2017 # Rafael Fontenelle , 2012 # Slava Zanko , 2011 @@ -12,44 +13,48 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Mauro Hemerly Gazzani , 2017\n" +"Last-Translator: marcelo cripe , 2022\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/mc/mc/language/" "pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" -msgstr "Aviso: não foi possível carregar a lista de codepages" +msgstr "" +"Aviso: \n" +"Não foi possível carregar a lista contendo as páginas de código" msgid "7-bit ASCII" -msgstr "ASCII 7-bit" +msgstr "ASCII de 7 bits" #, c-format msgid "Cannot translate from %s to %s" -msgstr "Não pode traduzir de %s para %s" +msgstr "Não é possível traduzir de %s para %s" msgid "Event system already initialized" -msgstr "Evento do sistema já inicializado" +msgstr "O evento do sistema já foi inicializado" msgid "Failed to initialize event system" -msgstr "Falha ao inicializar o evento do sistema" +msgstr "Ocorreu uma falha ao inicializar o evento do sistema" msgid "Event system not initialized" -msgstr "Evento de sistema não inicializado" +msgstr "O evento do sistema não foi inicializado" msgid "Check input data! Some of parameters are NULL!" -msgstr "Verifique o dado de entrada! Alguns parametros são NULL!" +msgstr "" +"Verifique o dado da entrada! Alguns parâmetros estão na condição NULL (NULO)!" #, c-format msgid "Unable to create group '%s' for events!" -msgstr "Não foi possível criar o grupo '%s' para eventos!" +msgstr "Não foi possível criar o grupo '%s' para os eventos!" #, c-format msgid "Unable to create event '%s'!" @@ -61,7 +66,7 @@ msgid "" "User: %s\n" "Process ID: %d" msgstr "" -"Arquivo \"%s\" já está sendo editado. \n" +"O arquivo \"%s\" já está sendo editado. \n" "Usuário: %s \n" "Processo Nº: %d" @@ -69,52 +74,55 @@ msgid "File locked" msgstr "Arquivo bloqueado" msgid "&Grab lock" -msgstr "Pe&gar bloqueio" +msgstr "Pe&gar o bloqueio" msgid "&Ignore lock" -msgstr "&Ignorar bloqueio" +msgstr "&Ignorar o bloqueio" #, c-format msgid "Cannot create %s directory" msgstr "Não foi possível criar o diretório %s" msgid "FATAL: not a directory:" -msgstr "FATAL: não é um diretório:" +msgstr "Ocorreu um ERRO FATAL porque não é um diretório:" msgid "" "Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in " "hex)" -msgstr "Número fora da faixa (deveria ser de 0<= n <= 0xFF, em hexadecimal)" +msgstr "" +"Número está fora da faixa (deve estar no intervalo de 0<= n <= 0xFF e " +"expresso em hexadecimal)" msgid "Invalid character" -msgstr "Carácter inválido" +msgstr "O caractere não é válido" msgid "Unmatched quotes character" -msgstr "número de aspas não equivalentes" +msgstr "O número de aspas não são equivalentes" #, c-format msgid "" "Hex pattern error at position %d:\n" "%s." msgstr "" -"Erro de padrão hexa na posição %d:\n" +"Erro no padrão hexadecimal na posição %d:\n" "%s" msgid "Search string not found" -msgstr "Texto não encontrado" +msgstr "O texto não foi encontrado" msgid "Not implemented yet" -msgstr "Ainda não implementado" +msgstr "Ainda não foi implementado" msgid "Num of replace tokens not equal to num of found tokens" -msgstr "Número de tokens substituídos é igual ao número de tokens encontrados" +msgstr "" +"O número de fichas substituídas não é igual ao número de fichas encontradas" #, c-format msgid "Invalid token number %d" -msgstr "Número de token inválido %d" +msgstr "O número %d de ficha(s) não é válido" msgid "Regular expression error" -msgstr "Erro de expressão regular" +msgstr "Erro na expressão regular" msgid "No&rmal" msgstr "No&rmal" @@ -126,23 +134,23 @@ msgid "He&xadecimal" msgstr "He&xadecimal" msgid "Wil&dcard search" -msgstr "Procura por Wil&dcard" +msgstr "Pesquisa por Curinga" #, c-format msgid "" "Unable to load '%s' skin.\n" "Default skin has been loaded" msgstr "" -"Não é possível carregar a skin '%s' . \n" -"Skin padrão foi carregado" +"Não foi possível carregar a capa '%s' .\n" +"A capa padrão foi carregada" #, c-format msgid "" "Unable to parse '%s' skin.\n" "Default skin has been loaded" msgstr "" -"Não é possível analisar a skin '%s' . \n" -"Skin padrão foi carregado" +"Não é possível analisar a capa '%s' . \n" +"A capa padrão foi carregada" #, c-format msgid "" @@ -150,9 +158,10 @@ msgid "" "%s\n" "Default skin has been loaded" msgstr "" -"Não foi possível usar a skin '%s' com suporte true colors:\n" +"Não foi possível utilizar a capa '%s' com suporte a cores verdadeiras (true " +"colors):\n" "%s\n" -"A skin padrão foi carregada" +"A capa padrão foi carregada" #, c-format msgid "" @@ -160,25 +169,29 @@ msgid "" "on non-256 colors terminal.\n" "Default skin has been loaded" msgstr "" -"Não foi possível usar a skin '%s' com suporte a 256 cores\n" -"em um terminal não 256 cores.\n" -"A skin padrão foi carregada" +"Não foi possível utilizar a capa '%s' com suporte\n" +"a 256 cores em um terminal não 256 cores.\n" +"A capa padrão foi carregada" msgid "True color not supported with ncurses." -msgstr "True color não é suportado com ncurses." +msgstr "" +"As cores verdadeiras (true colors) não são suportadas pelo com ncurses." msgid "Your terminal doesn't even seem to support 256 colors." -msgstr "Seu terminal nem parece que suporta 256 cores." +msgstr "Seu terminal não parece possuir suporte para 256 cores." msgid "True color not supported in this slang version." -msgstr "True color não é suportado na versão deste dialeto." +msgstr "" +"As cores verdadeiras (true colors) não são suportadas na versão deste " +"dialeto." msgid "Set COLORTERM=truecolor if your terminal really supports true colors." msgstr "" -"Atribua COLORTERM=truecolor se seu terminal realmente suporta true colors." +"Defina a opção COLORTERM=truecolor se o seu emulador de terminal realmente " +"possui suporte as cores verdadeiras." msgid "Escape" -msgstr "Escape" +msgstr "Escapar" msgid "Function key 1" msgstr "Tecla de função 1" @@ -241,37 +254,37 @@ msgid "Function key 20" msgstr "Tecla de função 20" msgid "Completion/M-tab" -msgstr "Complemento/M-tab" +msgstr "Complemento/M+Tab" msgid "BackTab/S-tab" -msgstr "BackTab/S-tab" +msgstr "Backspace/S+Tab" msgid "Backspace" msgstr "Backspace" msgid "Up arrow" -msgstr "Seta cima" +msgstr "Seta para cima" msgid "Down arrow" -msgstr "Seta baixo" +msgstr "Seta para baixo" msgid "Left arrow" -msgstr "Seta esquerda" +msgstr "Seta para esquerda" msgid "Right arrow" -msgstr "Seta direita" +msgstr "Seta para direita" msgid "Insert" msgstr "Insert" msgid "Delete" -msgstr "Delete" +msgstr "Excluir" msgid "Home" msgstr "Home" msgid "End key" -msgstr "Tecla de Fim" +msgstr "End" msgid "Page Up" msgstr "Page Up" @@ -280,49 +293,49 @@ msgid "Page Down" msgstr "Page Down" msgid "/ on keypad" -msgstr "/ no keypad" +msgstr "/ do teclado numérico" msgid "* on keypad" -msgstr "* no teclado numérico" +msgstr "* do teclado numérico" msgid "- on keypad" -msgstr "- no teclado numérico" +msgstr "- do teclado numérico" msgid "+ on keypad" -msgstr "+ no teclado numérico" +msgstr "+ do teclado numérico" msgid "Left arrow keypad" -msgstr "Seta esquerda no teclado numérico" +msgstr "Seta para esquerda do teclado numérico" msgid "Right arrow keypad" -msgstr "Seta direita no teclado numérico" +msgstr "Seta para direita do teclado numérico" msgid "Up arrow keypad" -msgstr "seta acima no teclado numérico" +msgstr "Seta para acima do teclado numérico" msgid "Down arrow keypad" -msgstr "Seta abaixo no teclado numérico" +msgstr "Seta para baixo do teclado numérico" msgid "Home on keypad" -msgstr "Home no teclado numérico" +msgstr "Home do teclado numérico" msgid "End on keypad" -msgstr "End no teclado numérico" +msgstr "End do teclado numérico" msgid "Page Down keypad" -msgstr "Página abaixo no teclado numérico" +msgstr "Page Down do teclado numérico" msgid "Page Up keypad" -msgstr "Página acima no teclado numérico" +msgstr "Page Up do teclado numérico" msgid "Insert on keypad" -msgstr "Insert no teclado numérico" +msgstr "Insert do teclado numérico" msgid "Delete on keypad" -msgstr "Apagar no teclado numérico" +msgstr "Delete do teclado numérico" msgid "Enter on keypad" -msgstr "Enter no teclado numérico" +msgstr "Enter do teclado numérico" msgid "Function key 21" msgstr "Tecla de função 21" @@ -382,7 +395,7 @@ msgid "Question mark" msgstr "Ponto de interrogação" msgid "Ampersand" -msgstr "Ampersand" +msgstr "“E†comercial" msgid "Dollar sign" msgstr "Cifrão" @@ -391,25 +404,25 @@ msgid "Quotation mark" msgstr "Aspas" msgid "Percent sign" -msgstr "Símbolo percentagem" +msgstr "Sinal de porcentagem" msgid "Caret" -msgstr "Circunflexo" +msgstr "Acento circunflexo" msgid "Tilda" msgstr "Til" msgid "Prime" -msgstr "De primeiro" +msgstr "Primeiro" msgid "Underline" msgstr "Sublinhado" msgid "Understrike" -msgstr "Tracado" +msgstr "Riscado" msgid "Pipe" -msgstr "Bastão" +msgstr "Canal" msgid "Left parenthesis" msgstr "Abrir parêntese " @@ -424,10 +437,10 @@ msgid "Right bracket" msgstr "Fechar colchete" msgid "Left brace" -msgstr "Abrir Chave" +msgstr "Abrir chave" msgid "Right brace" -msgstr "Fechar Chave" +msgstr "Fechar chave" msgid "Enter" msgstr "Enter" @@ -464,32 +477,38 @@ msgid "The TERM environment variable is unset!\n" msgstr "A variável de ambiente TERM não foi definida!\n" msgid "Cannot check SIGWINCH pipe" -msgstr "" +msgstr "Não é possível verificar o canal do SIGWINCH" #, c-format msgid "" "\n" "Cannot create pipe for SIGWINCH: %s (%d)\n" msgstr "" +"\n" +"Não é possível criar o canal para o SIGWINCH: %s (%d)\n" #, c-format msgid "" "\n" "Cannot configure write end of SIGWINCH pipe: %s (%d)\n" msgstr "" +"\n" +"Não é possível configurar o canal para a escrita no SIGWINCH: %s (%d)\n" #, c-format msgid "" "\n" "Cannot configure read end of SIGWINCH pipe: %s (%d)\n" msgstr "" +"\n" +"Não é possível configurar o final da leitura do canal do SIGWINCH: %s (%d)\n" #, c-format msgid "" "Screen size %dx%d is not supported.\n" "Check the TERM environment variable.\n" msgstr "" -"Tamanho da tela %d x %d não é suportado. \n" +"O tamanho da tela %d x %d não é suportado. \n" "Verifique a variável de ambiente TERM.\n" msgid "B" @@ -514,47 +533,51 @@ msgid "GiB" msgstr "GiB" msgid "Cannot create pipe descriptor" -msgstr "Não foi possível criar um pipe descriptor" +msgstr "Não foi possível criar um descritivo do canal" msgid "Cannot create pipe streams" -msgstr "Não é possível criar pipe streams" +msgstr "Não foi possível criar o fluxo do canal" #, c-format msgid "" "Unexpected error in select() reading data from a child process:\n" "%s" msgstr "" -"Erro não esperado em select() lendo dados de um processo filho:\n" +"Ocorreu um erro inesperado no select() durante a leitura dos dados de um " +"processo filho:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Não foi possível fechar o descritivo do canal (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" "%s" msgstr "" -"Erro inesperado em waitpid():\n" +"Ocorreu um erro inesperado no waitpid():\n" "%s" #, c-format msgid "Directory cache expired for %s" -msgstr "Cache de dir expirou para %s" +msgstr "O diretório do cache expirou para %s" #, c-format msgid "%s: %s: %s %3d%% (%lld) bytes transferred" -msgstr "" +msgstr "%s: %s: %s %3d%% (%lld) bytes transferidos" #, c-format msgid "%s: %s: %s %lld bytes transferred" -msgstr "" +msgstr "%s: %s: %s %lld bytes transferidos" msgid "Starting linear transfer..." -msgstr "Iniciando transferência linear..." +msgstr "Iniciando a transferência linear..." msgid "Getting file" -msgstr "Obtendo arquivo" +msgstr "Obtendo o arquivo" msgid "Changes to file lost" -msgstr "Alterações no arquivo perdidas" +msgstr "As alterações feitas no arquivo foram perdidas" #, c-format msgid "%s is not a directory\n" @@ -562,35 +585,35 @@ msgstr "%s não é um diretório\n" #, c-format msgid "Directory %s is not owned by you\n" -msgstr "Diretório %s não é pertence a voçe\n" +msgstr "O diretório %s não pertence a você\n" #, c-format msgid "Cannot set correct permissions for directory %s\n" -msgstr "Não é possível definir permissões corretas para o diretório %s\n" +msgstr "Não foi possível definir as permissões corretas para o diretório %s\n" #, c-format msgid "Cannot create temporary directory %s: %s\n" -msgstr "Não é possível criar diretório temporário %s: %s\n" +msgstr "Não foi possível criar o diretório temporário %s: %s\n" #, c-format msgid "Temporary files will be created in %s\n" -msgstr "Arquivos temporários serão criados em %s\n" +msgstr "Os arquivos temporários serão criados em %s\n" #, c-format msgid "Temporary files will not be created\n" -msgstr "Arquivos temporários não será criado\n" +msgstr "Os arquivos temporários não serão criados\n" msgid "Press any key to continue..." -msgstr "Pressione uma tecla para continuar..." +msgstr "Pressione qualquer tecla para continuar..." msgid "Cannot parse:" -msgstr "Não foi possível verificar:" +msgstr "Não foi possível analisar:" msgid "More parsing errors will be ignored." -msgstr "Mais erros de verificação serão ignorados." +msgstr "Foram analisados mais erros e serão ignorados." msgid "Internal error:" -msgstr "Erro interno:" +msgstr "Ocorreu um erro interno:" msgid "Password:" msgstr "Senha:" @@ -603,10 +626,10 @@ msgstr "Histórico" #. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix msgid "DialogTitle|History cleanup" -msgstr "" +msgstr "Título da Caixa de Diálogo|Limpeza do Histórico" msgid "Do you want clean this history?" -msgstr "Você deseja limpar o histórico?" +msgstr "Você quer limpar o histórico?" msgid "&Yes" msgstr "&Sim" @@ -621,68 +644,69 @@ msgid "&Cancel" msgstr "&Cancelar" msgid "Background process:" -msgstr "Processo em segundo plano:" +msgstr "Processo que está sendo executado em segundo plano:" msgid "Error" msgstr "Erro" #, c-format msgid "%s (%d)" -msgstr "" +msgstr "%s (%d)" msgid "&Abort" -msgstr "C&Ancelar" +msgstr "&Sobre" msgid "Displays the current version" -msgstr "Mostra a versão atual" +msgstr "Exibe a versão atual" msgid "Print data directory" -msgstr "Exibir dados do diretório" +msgstr "Exibir os dados do diretório" msgid "Print extended info about used data directories" msgstr "" +"Exibir as informações detalhadas sobre os dados utilizados nos diretórios" msgid "Print configure options" -msgstr "Opções de configuração de impressão" +msgstr "Opções de configurações de impressão" msgid "Print last working directory to specified file" -msgstr "Exibir último diretório de trabalho para o arquivo especificado" +msgstr "Exibir o último diretório de trabalho para o arquivo especificado" msgid "" -msgstr "" +msgstr "" msgid "Enables subshell support (default)" -msgstr "Habilita suporte à sub interpretadores de comandos (padrão)" +msgstr "Ativa o suporte ao sub interpretador de comandos (padrão)" msgid "Disables subshell support" -msgstr "Desabilita suporte à sub interpretadores de comandos" +msgstr "Desativa o suporte ao sub interpretador de comandos" msgid "Log ftp dialog to specified file" -msgstr "Acessar diálogo FTP para um arquivo específico" +msgstr "Acessar a caixa de diálogo do FTP para o arquivo especificado" msgid "Launches the file viewer on a file" -msgstr "Lança o visualizador de arquivos" +msgstr "Inicia o visualizador de arquivos com um arquivo" msgid "Edit files" msgstr "Editar arquivos" msgid " ..." -msgstr "" +msgstr " ..." msgid "Forces xterm features" -msgstr "Força recursos do xterm" +msgstr "Força os recursos do xterm" msgid "Disable X11 support" -msgstr "Desabilitar suporte ao X11" +msgstr "Desativar o suporte ao X11" msgid "Tries to use an old highlight mouse tracking" -msgstr "" +msgstr "Tenta utilizar um rastreamento de seleção de um rato/mouse antigo" msgid "Disable mouse support in text version" -msgstr "Desabilita suporte à mouse em modo texto" +msgstr "Desativa o suporte ao rato/mouse para o modo texto" msgid "Tries to use termcap instead of terminfo" -msgstr "tenta utilizar termcap ao invés de terminfo" +msgstr "Tenta utilizar o termcap ao invés do terminfo" msgid "To run on slow terminals" msgstr "Para execução em terminais lentos" @@ -691,28 +715,30 @@ msgid "Use stickchars to draw" msgstr "Utilizar caracteres de traço para desenhar" msgid "Resets soft keys on HP terminals" -msgstr "Reinicializa teclas em terminais HP" +msgstr "Redefinir as teclas programáveis nos terminais da HP" msgid "Load definitions of key bindings from specified file" -msgstr "Carregar definições de vínculo de teclas do arquivo especificado" +msgstr "Carregar as definições de vínculos das teclas do arquivo especificado" msgid "Don't load definitions of key bindings from file, use defaults" msgstr "" +"Não carregar as definições de vínculos das teclas do arquivo, utilize os " +"padrões" msgid "Requests to run in black and white" -msgstr "Requer execução em preto e branco" +msgstr "Solicitação para execução em preto e branco" msgid "Request to run in color mode" -msgstr "Solicita para ser executado em cores" +msgstr "Solicitação para execução em cores" msgid "Specifies a color configuration" msgstr "Especifica uma configuração de cores" msgid "" -msgstr "" +msgstr "" msgid "Show mc with specified skin" -msgstr "Exibir mc com o tema especificado" +msgstr "Exibir o Midnight Commander com o tema especificado" #. TRANSLATORS: don't translate keywords msgid "" @@ -735,6 +761,25 @@ msgid "" " Viewer: viewnormal,viewbold, viewunderline, viewselected\n" " Help: helpnormal, helpitalic, helpbold, helplink, helpslink\n" msgstr "" +"--colors KEYWORD={FORE},{BACK},{ATTR}:KEYWORD2=...\n" +"\n" +"{FORE}, {BACK} e {ATTR} podem ser omitidos e o padrão será utilizado\n" +"\n" +" Palavras-chave:\n" +" Global: errors, disabled, reverse, gauge, header\n" +" input, inputmark, inputunchanged, commandlinemark\n" +" bbarhotkey, bbarbutton, statusbar\n" +" Exibição de arquivo: normal, selected, marked, markselect\n" +" Caixas de diálogo: dnormal, dfocus, dhotnormal, dhotfocus, " +"errdhotnormal,\n" +" errdhotfocus\n" +" Menus: menunormal, menuhot, menusel, menuhotsel, menuinactive\n" +" Caixas de diálogo dos menus: pmenunormal, pmenusel, pmenutitle\n" +" Editor: editnormal, editbold, editmarked, editwhitespace,\n" +" editlinestate, editbg, editframe, editframeactive\n" +" editframedrag\n" +" Visualizador: viewnormal,viewbold, viewunderline, viewselected\n" +" Ajuda: helpnormal, helpitalic, helpbold, helplink, helpslink\n" #. TRANSLATORS: don't translate color names and attributes msgid "" @@ -749,99 +794,118 @@ msgid "" "Attributes:\n" " bold, italic, underline, reverse, blink; append more with '+'\n" msgstr "" +"Cores Padrão:\n" +" black, gray, red, brightred, green, brightgreen, brown,\n" +" yellow, blue, brightblue, magenta, brightmagenta, cyan,\n" +" brightcyan, lightgray e white\n" +"\n" +"A cores disponíveis quando ativado em 256 cores são:\n" +" color16 a color255 ou rgb000 a rgb555 e gray0 a gray23\n" +"\n" +"Atributos:\n" +" bold, italic, underline, reverse, blink; anexar mais opções com um sinal " +"de '+'\n" msgid "Color options" msgstr "Opções de cores" msgid "[+lineno] file1[:lineno] [file2[:lineno]...]" -msgstr "" +msgstr "[+linha no] arquivo 1 [:linha no] [arquivo 2[:linha no]...]" msgid "file" msgstr "arquivo" msgid "file1 file2" -msgstr "" +msgstr "arquivo 1 arquivo 2" msgid "[this_dir] [other_panel_dir]" -msgstr "[esse_dir] [outro_painel_dir]" +msgstr "[este_diretório] [outro_painel_do_diretório]" msgid "" "\n" "Please send any bug reports (including the output of 'mc -V')\n" "as tickets at www.midnight-commander.org\n" msgstr "" +"\n" +"Se você identificar algum erro ou falha no Midnight Commander,\n" +"por favor, nos envie o resultado do comando 'mc -V' em um\n" +"emulador de terminal para a nossa página eletrônica\n" +"www.midnight-commander.org.\n" #, c-format msgid "GNU Midnight Commander %s\n" -msgstr "GNU Midnight Commander %s\n" +msgstr "Midnight Commander do GNU %s\n" msgid "Main options" msgstr "Opções principais" msgid "Terminal options" -msgstr "Opções do Terminal" +msgstr "Opções do terminal" msgid "Arguments parse error!" -msgstr "" +msgstr "Ocorreu um erro na análise dos argumentos!" msgid "No arguments given to the viewer." -msgstr "Nenhum argumento passado para o visualizador" +msgstr "Nenhum argumento foi passado para o visualizador" msgid "Two files are required to envoke the diffviewer." -msgstr "Dois arquivos são requeridos para evocar o diffviewer." +msgstr "" +"Dois arquivos são necessários para invocar o visualizador de diferenças " +"diffviewer." msgid "Background protocol error" -msgstr "Erro no protocolo de plano de fundo" +msgstr "Ocorreu um erro no protocolo que está sendo executado em segundo plano" msgid "Reading failed" -msgstr "Falhou a leitura" +msgstr "Ocorreu uma falha na leitura" msgid "Background process error" -msgstr "Erro no processo de plano de fundo" +msgstr "Ocorreu um erro no processo que está sendo executado em segundo plano" msgid "Unknown error in child" -msgstr "Erro desconhecido no child" +msgstr "Ocorreu um erro desconhecido no child" msgid "Child died unexpectedly" -msgstr "child terminou inesperadamente" +msgstr "O child foi finalizado inesperadamente" msgid "" "Background process sent us a request for more arguments\n" "than we can handle." msgstr "" -"Processo de plano de fundo nos enviou um requisição por\n" -"mais argumentos do que podemos lidar." +"O processo que está sendo executado em segundo plano\n" +"nos enviou um requisição por mais argumentos do que\n" +"podemos lidar." msgid "&Dismiss" msgstr "&Dispensar" msgid "Enter search string:" -msgstr "Insira a string de pesquisa:" +msgstr "Insira o termo da pesquisa:" msgid "Cas&e sensitive" -msgstr "Cas&e sensitive" +msgstr "Dif&erenciar as letras maiúsculas das minúsculas" msgid "&Backwards" msgstr "&Para trás" msgid "&Whole words" -msgstr "Palavras inteiras" +msgstr "Pala&vras inteiras" msgid "&All charsets" -msgstr "Todos os ch&arsets" +msgstr "&Todos os caracteres" msgid "Search" -msgstr "Procurar" +msgstr "Pesquisar" msgid "Search is disabled" -msgstr "Pesquisa está desabilitada" +msgstr "A pesquisa está desativada" #, c-format msgid "" "Cannot create temporary diff file\n" "%s" msgstr "" -"Não foi possível criar arquivo diff temporário\n" +"Não foi possível criar o arquivo diff temporário\n" "%s" #, c-format @@ -850,7 +914,7 @@ msgid "" "%s%s\n" "%s" msgstr "" -"Não é possível criar arquivo backup\n" +"Não é possível criar o arquivo de segurança\n" "%s%s\n" "%s" @@ -859,44 +923,44 @@ msgid "" "Cannot create temporary merge file\n" "%s" msgstr "" -"Não foi possível criar arquivo merge temporário\n" +"Não é possível criar o arquivo de mesclagem temporário\n" "%s" msgid "&Fastest (Assume large files)" -msgstr "" +msgstr "&Mais rápido (considere arquivos grandes)" msgid "&Minimal (Find a smaller set of change)" -msgstr "&Mínimo (Encontar o menor conjunto de mudança)" +msgstr "&Mínimo (Encontra o menor conjunto de alterações)" msgid "Diff algorithm" -msgstr "Algoritmo do Diff" +msgstr "Algoritmo do diff" msgid "Diff extra options" msgstr "Opções extras do diff" msgid "&Ignore case" -msgstr "&Ignorar case" +msgstr "&Ignorar o case" msgid "Ignore tab &expansion" -msgstr "Ignorar tab &expansion" +msgstr "Ignorar a aba de &expansão" msgid "Ignore &space change" -msgstr "Ignorar &space change" +msgstr "Ignorar a alteração do e&spaço" msgid "Ignore all &whitespace" -msgstr "Ignorar todos os espaços em branco" +msgstr "Ignorar todos os espaços em &branco" msgid "Strip &trailing carriage return" -msgstr "" +msgstr "Descartar a &quebra de linha no final" msgid "Diff Options" -msgstr "Opções do Diff" +msgstr "Opções do diff" msgid "Edit" msgstr "Editar" msgid "Edit is disabled" -msgstr "Edição está desabilitada" +msgstr "A edição está desativada" msgid "Goto line (left)" msgstr "Ir para linha (esquerda)" @@ -905,7 +969,7 @@ msgid "Goto line (right)" msgstr "Ir para linha (direita)" msgid "Enter line:" -msgstr "Insira linha:" +msgstr "Inserir a linha:" msgid "ButtonBar|Help" msgstr "ButtonBar|Ajuda" @@ -920,7 +984,7 @@ msgid "ButtonBar|Merge" msgstr "ButtonBar|Mesclar" msgid "ButtonBar|Search" -msgstr "ButtonBar|Pesquisa" +msgstr "ButtonBar|Pesquisar" msgid "ButtonBar|Options" msgstr "ButtonBar|Opções" @@ -932,12 +996,14 @@ msgid "Quit" msgstr "Sair" msgid "File(s) was modified. Save with exit?" -msgstr "Arquivo(s) foram modificados. Salvar ao sair?" +msgstr "O(s) arquivo(s) foi(ram) modificado(s). Você quer salvar e sair?" msgid "" "Midnight Commander is being shut down.\n" "Save modified file(s)?" msgstr "" +"O Midnight Commander está sendo desligado. Você quer salvar o(s) arquivo(s) " +"modificado(s)?" msgid "Diff:" msgstr "Diff:" @@ -951,12 +1017,14 @@ msgid "" "Cannot stat \"%s\"\n" "%s" msgstr "" +"Não é possível efetuar o estado \"%s\"\n" +"%s" msgid "Diff viewer: invalid mode" -msgstr "Diff viewer: modo inválido" +msgstr "Visualizador do diff: o modo não é válido" msgid "Two files are needed to compare" -msgstr "Dois arquivos são necessários para comparar" +msgstr "São necessários dois arquivos para fazer a comparação" #, c-format msgid "Loading: %3d%%" @@ -970,11 +1038,11 @@ msgid "Cannot open %s for reading" msgstr "Não foi possível abrir %s para leitura" msgid "Load file" -msgstr "Abrir arquivo" +msgstr "Abrir o arquivo" #, c-format msgid "Error reading %s" -msgstr "Erro na leitura de %s" +msgstr "Ocorreu um erro de leitura de %s" #, c-format msgid "Cannot get size/permissions for %s" @@ -990,124 +1058,128 @@ msgid "" "Open it anyway?" msgstr "" "O arquivo \"%s\" é muito grande.\n" -"Abrir mesmo assim?" +"Você quer abri-lo mesmo assim?" msgid "Warning" msgstr "Aviso" #, c-format msgid "Error reading from pipe: %s" -msgstr "Erro na leitura a partir do pipe: %s" +msgstr "Ocorreu um erro de leitura a partir do canal: %s" #, c-format msgid "Cannot open pipe for reading: %s" -msgstr "Não foi possível abrir pipe para leitura: %s" +msgstr "Não foi possível abrir o canal para leitura: %s" msgid "File has hard-links. Detach before saving?" -msgstr "Arquivo tem hard-links. Desatar antes de salvar?" +msgstr "" +"O arquivo tem vínculos físicos (hard-links). Você quer desvincular antes de " +"salvar?" msgid "The file has been modified in the meantime. Save anyway?" -msgstr "O arquivo foi modificado enquanto usava. Salvar mesmo assim?" +msgstr "" +"O arquivo foi modificado enquanto estava sendo utilizado. Você quer salvar " +"mesmo assim?" #, c-format msgid "Error writing to pipe: %s" -msgstr "Erro na escrita para pipe: %s" +msgstr "Ocorreu um erro de escrita para o canal: %s" #, c-format msgid "Cannot open pipe for writing: %s" -msgstr "Não foi possível abrir pipe para escrita: %s" +msgstr "Não foi possível abrir o canal para a escrita: %s" #, c-format msgid "Cannot open file for writing: %s" -msgstr "Não foi possível abrir arquivo para escrita: %s" +msgstr "Não foi possível abrir arquivo para a escrita: %s" msgid "The file you are saving does not end with a newline." -msgstr "O arquivo que você está salvando não termina com um newline." +msgstr "O arquivo que você está salvando não termina com uma nova linha." msgid "C&ontinue" msgstr "C&ontinuar" msgid "&Do not change" -msgstr "" +msgstr "&Não alterar" msgid "&Unix format (LF)" -msgstr "Formato &Unix (LF)" +msgstr "Formato do &Unix (LF)" msgid "&Windows/DOS format (CR LF)" -msgstr "Formato &Windows/DOS (CR LF)" +msgstr "Formato do &Windows/DOS (CR LF)" msgid "&Macintosh format (CR)" -msgstr "Formato &Macintosh (CR)" +msgstr "Formato do &Macintosh (CR)" msgid "Enter file name:" msgstr "Insira nome do arquivo:" msgid "Change line breaks to:" -msgstr "Alterar término de linhas para:" +msgstr "Altere o término das linhas ou as quebras de linha para:" msgid "Save As" msgstr "Salvar Como" msgid "&Quick save" -msgstr "&Quick save" +msgstr "&Salvamento rápido" msgid "&Safe save" -msgstr "&Safe save" +msgstr "&Salvamento seguro" msgid "&Do backups with following extension:" -msgstr "Faça backups com a seguinte extensão:" +msgstr "&Faça cópias de segurança com a seguinte extensão:" msgid "Check &POSIX new line" -msgstr "Verificar nova linha &POSIX" +msgstr "Verificar a nova linha &POSIX" msgid "Edit Save Mode" -msgstr "Editar Modo de Salvar" +msgstr "Editar o Modo de Salvar" msgid "Save as" msgstr "Salvar como" msgid "Cannot save: destination is not a regular file" -msgstr "" +msgstr "Não foi possível salvar: o destino não é um arquivo normal" msgid "A file already exists with this name" -msgstr "Um arquivo já existe com este nome de arquivo" +msgstr "Já existe um arquivo com este nome de arquivo" msgid "&Overwrite" msgstr "&Sobrescrever" msgid "Cannot save file" -msgstr "Não foi possível salvar arquivo" +msgstr "Não foi possível salvar o arquivo" #, c-format msgid "Confirm save file: \"%s\"" -msgstr "Confirmar salvamento de arquivo: \"%s\"" +msgstr "Confirmar o salvamento do arquivo: \"%s\"" msgid "Save file" -msgstr "Salvar arquivo" +msgstr "Salvar o arquivo" msgid "&Save" -msgstr "&Gravar" +msgstr "&Salvar" msgid "Load" msgstr "Carregar" msgid "Syntax file edit" -msgstr "Edição de arquivo de sintaxe" +msgstr "Editar a sintaxe do arquivo" msgid "Which syntax file you want to edit?" -msgstr "Qual arquivo de sintaxe você deseja editar?" +msgstr "Qual é a sintaxe do arquivo que você quer editar?" msgid "&User" msgstr "&Usuário" msgid "&System wide" -msgstr "" +msgstr "&Sistema geral" msgid "Menu edit" msgstr "Menu Editar" msgid "Which menu file do you want to edit?" -msgstr "Qual arquivo de menu você deseja editar?" +msgstr "Qual é o arquivo do menu você quer editar?" msgid "&Local" msgstr "&Local" @@ -1120,6 +1192,8 @@ msgid "" "File %s was modified.\n" "Save before close?" msgstr "" +"O arquivo %s foi modificado.\n" +"Você quer salvá-lo antes de fechar o arquivo?" msgid "Close file" msgstr "Fechar arquivo" @@ -1129,8 +1203,8 @@ msgid "" "Midnight Commander is being shut down.\n" "Save modified file %s?" msgstr "" -"Midnight Commander está fechando.\n" -"Salvar a modificação no arquivo %s?" +"O Midnight Commander está fechando.\n" +"Você quer salvar a modificação feita no arquivo %s?" msgid "This function is not implemented" msgstr "Esta função não foi implementada" @@ -1139,60 +1213,61 @@ msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" msgid "Unable to save to file" -msgstr "Não foi possível salvar para arquivo" +msgstr "Não foi possível salvar no arquivo" msgid "Cut to clipboard" msgstr "Recortar para área de transferência" msgid "Goto line" -msgstr "Ir para linha" +msgstr "Ir para a linha" msgid "Save block" -msgstr "Salvar bloco" +msgstr "Salvar o bloco" msgid "Insert file" msgstr "Inserir linha" msgid "Cannot insert file" -msgstr "Não foi possível inserir arquivo" +msgstr "Não foi possível inserir o arquivo" msgid "Sort block" -msgstr "Ordenar bloco" +msgstr "Ordenar o bloco" msgid "You must first highlight a block of text" msgstr "Você deve primeiro selecionar um bloco de texto" msgid "Run sort" -msgstr "Executar sort" +msgstr "Executar a ordenação do bloco de texto" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Insira opções do sort (veja manpage) separadamente por espaços em branco:" +"Insira as opções de ordenação (consulte a página sort(1) do manual) " +"separadas por espaços em branco:" msgid "Sort" msgstr "Ordenar" msgid "Cannot execute sort command" -msgstr "Não foi possível executar comando sort" +msgstr "Não foi possível executar o comando sort (ordenar)" #, c-format msgid "Sort returned non-zero: %s" -msgstr "Sort retornou não-zero: %s" +msgstr "O comando sort retornou diferente de zero: %s" msgid "Paste output of external command" -msgstr "Colar saída de comando externo" +msgstr "Colar a saída do comando externo" msgid "Enter shell command(s):" -msgstr "Digite comando(s) de shell:" +msgstr "Insira o(s) comando(s) do shell:" msgid "External command" msgstr "Comando externo" msgid "Cannot execute command" -msgstr "Nãi é possível executar comando" +msgstr "Não foi possível executar o comando" msgid "mail -s -c " -msgstr "" +msgstr "mail -s -c " msgid "To" msgstr "Para" @@ -1201,13 +1276,13 @@ msgid "Subject" msgstr "Assunto" msgid "Copies to" -msgstr "" +msgstr "Copia para" msgid "Mail" msgstr " Correio" msgid "Insert literal" -msgstr "Inserir literal" +msgstr "Inserir literalmente" msgid "Press any key:" msgstr "Pressione qualquer tecla:" @@ -1216,33 +1291,35 @@ msgid "" "Current text was modified without a file save.\n" "Continue discards these changes." msgstr "" +"O texto atual foi modificado sem salvar o arquivo.\n" +"Você quer continuar e descartar estas alterações." msgid "Cancel" msgstr "Cancelar" msgid "Collect completions" -msgstr "" +msgstr "Coletar as finalizações" msgid "NoName" msgstr "SemNome" msgid "Save macro" -msgstr "Salvar macro" +msgstr "Salvar o macro" msgid "Press the macro's new hotkey:" -msgstr "Pressione nova tecla de atalho da macro:" +msgstr "Pressione a nova tecla de atalho do macro:" msgid "Delete macro" -msgstr "Deletar macro" +msgstr "Excluir o macro" msgid "Press macro hotkey:" -msgstr "Pressione tecla de atalho da macro:" +msgstr "Pressione a tecla de atalho do macro:" msgid "Macro not deleted" -msgstr "Macro não deletada" +msgstr "O macro não foi excluído" msgid "Repeat last commands" -msgstr "Repetir últimos comandos" +msgstr "Repetir os últimos comandos" msgid "Repeat times:" msgstr "Número de repetições:" @@ -1257,70 +1334,70 @@ msgid "&Close" msgstr "Fechar" msgid "&History..." -msgstr "" +msgstr "&Histórico..." msgid "Save &as..." msgstr "Salvar &como..." msgid "&Insert file..." -msgstr "&Inserir arquivo..." +msgstr "&Inserir um arquivo..." msgid "Cop&y to file..." -msgstr "Cop&yar para arquivo..." +msgstr "Cop&yar para o arquivo..." msgid "&User menu..." -msgstr "" +msgstr "Menu do &usuário..." msgid "A&bout..." msgstr "S&obre" msgid "&Quit" -msgstr "&Encerrar" +msgstr "Sai&r" msgid "&Undo" -msgstr "" +msgstr "Desfa&zer" msgid "&Redo" -msgstr "" +msgstr "&Refazer" msgid "&Toggle ins/overw" -msgstr "" +msgstr "Al&ternar entre inserir/substituir" msgid "To&ggle mark" -msgstr "" +msgstr "A<ernar entre ligado/desligado" msgid "&Mark columns" -msgstr "" +msgstr "&Marcar colunas" msgid "Mark &all" -msgstr "Marcar &todos" +msgstr "M&arcar todos" msgid "Unmar&k" msgstr "Descmar&car" msgid "Cop&y" -msgstr "Cop&yar" +msgstr "Cop&iar" msgid "Mo&ve" msgstr "Mo&ver" msgid "&Delete" -msgstr "&Apagar" +msgstr "&Excluir" msgid "Co&py to clipfile" -msgstr "Co&piar para clipfile" +msgstr "&Copiar para a área de transferência" msgid "&Cut to clipfile" -msgstr "" +msgstr "&Recortar para a área de transferência" msgid "Pa&ste from clipfile" -msgstr "" +msgstr "Co&lar para a área de transferência" msgid "&Beginning" -msgstr "" +msgstr "&Início" msgid "&End" -msgstr "" +msgstr "&Fim" msgid "&Search..." msgstr "&Pesquisar..." @@ -1332,139 +1409,139 @@ msgid "&Replace..." msgstr "&Substituir..." msgid "&Toggle bookmark" -msgstr "" +msgstr "&Alterar o favorito" msgid "&Next bookmark" -msgstr "" +msgstr "Próxi&mo favorito" msgid "&Prev bookmark" -msgstr "" +msgstr "Favorito a&nterior" msgid "&Flush bookmarks" -msgstr "" +msgstr "L&impar os favoritos" msgid "&Go to line..." -msgstr "" +msgstr "Ir p&ara a linha..." msgid "&Toggle line state" -msgstr "" +msgstr "Al&terar o estado da linha" msgid "Go to matching &bracket" -msgstr "" +msgstr "Ir para o &parêntese correspondente" msgid "Toggle s&yntax highlighting" -msgstr "" +msgstr "Alterar a seleção da sinta&xe" msgid "&Find declaration" -msgstr "" +msgstr "&Pesquisar o texto declarado" msgid "Back from &declaration" -msgstr "" +msgstr "Voltar o texto &declarado" msgid "For&ward to declaration" -msgstr "" +msgstr "Encaminhar o texto &declarado" msgid "Encod&ing..." msgstr "Cod&ificando..." msgid "&Refresh screen" -msgstr "" +msgstr "&Recarregar a tela" msgid "&Start/Stop record macro" -msgstr "" +msgstr "&Iniciar/Parar a gravação do macro" msgid "Delete macr&o..." -msgstr "Deletar macr&o..." +msgstr "Excluir o macr&o..." msgid "Record/Repeat &actions" -msgstr "Gravar/Repetir &actions" +msgstr "Gravar/Repetir as &ações" msgid "S&pell check" -msgstr "" +msgstr "Verificar a or&tográfica" msgid "C&heck word" -msgstr "" +msgstr "&Verificar a palavra" msgid "Change spelling &language..." -msgstr "" +msgstr "A<erar o idioma..." msgid "&Mail..." -msgstr "" +msgstr "&Correspondência..." msgid "Insert &literal..." -msgstr "" +msgstr "Inserir &literal..." msgid "Insert &date/time" -msgstr "" +msgstr "Inserir a &data/hora" msgid "&Format paragraph" -msgstr "" +msgstr "&Formatar o parágrafo" msgid "&Sort..." -msgstr "" +msgstr "O&rdenar..." msgid "&Paste output of..." -msgstr "" +msgstr "Co&lar a saída de..." msgid "&External formatter" -msgstr "" +msgstr "Formatador &externo" msgid "&Move" msgstr "&Mover" msgid "&Resize" -msgstr "" +msgstr "&Redimensionar" msgid "&Toggle fullscreen" -msgstr "" +msgstr "Al&terar para a tela inteira" msgid "&Next" -msgstr "" +msgstr "Pró&ximo" msgid "&Previous" -msgstr "" +msgstr "Ant&erior" msgid "&List..." -msgstr "" +msgstr "&Listar..." msgid "&General..." -msgstr "" +msgstr "&Geral..." msgid "Save &mode..." -msgstr "" +msgstr "Salvar o &modo..." msgid "Learn &keys..." -msgstr "" +msgstr "Aprender as te&clas..." msgid "Syntax &highlighting..." -msgstr "Realçar sinta&xe" +msgstr "Selecionar a sinta&xe..." msgid "S&yntax file" -msgstr "" +msgstr "Arquivo da s&intaxe" msgid "&Menu file" -msgstr "" +msgstr "Arquivo do &menu" msgid "&Save setup" -msgstr "&Gravar configuração" +msgstr "&Salvar as configurações" msgid "&File" msgstr "&Arquivo" msgid "&Edit" -msgstr "" +msgstr "&Editar" msgid "&Search" -msgstr "" +msgstr "&Pesquisar" msgid "&Command" -msgstr "" +msgstr "&Comando" msgid "For&mat" -msgstr "" +msgstr "For&matar" msgid "&Window" -msgstr "" +msgstr "&Janela" msgid "&Options" msgstr "&Opções" @@ -1473,64 +1550,64 @@ msgid "&None" msgstr "&Nenhum" msgid "&Dynamic paragraphing" -msgstr "" +msgstr "Parágrafos &dinâmicos" msgid "Type &writer wrap" -msgstr "" +msgstr "Quebra da &máquina de escrever" msgid "Wrap mode" -msgstr "Modo Empacotado" +msgstr "Modo de quebra" msgid "Tabulation" msgstr "Tabulação" msgid "&Fake half tabs" -msgstr "Meias tabulações &falsas" +msgstr "&Fingir meias tabulações" msgid "&Backspace through tabs" -msgstr "&Retorna através das tabulações" +msgstr "&Voltar um espaço através das tabulações" msgid "Fill tabs with &spaces" -msgstr "preencher tabulação com e&Spaços" +msgstr "Preencher a tabulação com e&spaços" msgid "Tab spacing:" -msgstr "Espaçamento de Tab" +msgstr "Espaçamento de Tab:" msgid "Other options" msgstr "Outras opções" msgid "&Return does autoindent" -msgstr "&Return faz auto identação" +msgstr "Ente&r faz o recuo automático" msgid "Confir&m before saving" -msgstr "confir&Mar antes de Salvar" +msgstr "Confir&mar antes de salvar" msgid "Save file &position" -msgstr "" +msgstr "Salvar a &posição do arquivo" msgid "&Visible trailing spaces" -msgstr "" +msgstr "&Espaços à direita visíveis" msgid "Visible &tabs" -msgstr "" +msgstr "&Guias visíveis" msgid "Synta&x highlighting" -msgstr "Ressaltar sinta&xe" +msgstr "Selecionar a sinta&xe" msgid "C&ursor after inserted block" -msgstr "" +msgstr "Cursor após o bloco inserido" msgid "Pers&istent selection" -msgstr "" +msgstr "Seleção pers&istente" msgid "Cursor be&yond end of line" -msgstr "" +msgstr "Cursor para além do &fim da linha" msgid "&Group undo" -msgstr "Desfazer &grupo" +msgstr "Desfazer o &grupo" msgid "Word wrap line length:" -msgstr "" +msgstr "Comprimento da linha de quebra de linha:" msgid "Editor options" msgstr "Opções do editor" @@ -1539,10 +1616,10 @@ msgid "In se&lection" msgstr "Na se&leção" msgid "&Find all" -msgstr "" +msgstr "&Pesquisar todos" msgid "Enter replacement string:" -msgstr "Informe a string de substituição:" +msgstr "Informe o texto a ser substituído:" msgid "Replace" msgstr "Substituir" @@ -1560,7 +1637,7 @@ msgid "&Skip" msgstr "&Ignorar" msgid "Confirm replace" -msgstr "Confirmar substituição" +msgstr "Confirmar a substituição" #, c-format msgid "Searching %s: %3d%%" @@ -1572,15 +1649,17 @@ msgstr "Examinando %s" #, c-format msgid "%ld replacements made" -msgstr "%ld substituições feitas" +msgstr "%ld substituições foram realizadas" msgid "" "A user friendly text editor\n" "written for the Midnight Commander." msgstr "" +"Um editor de texto amigável\n" +"escrito para o Midnight Commander." msgid "Copyright (C) 1996-2022 the Free Software Foundation" -msgstr "" +msgstr "Direitos de Autor (c) 1996-2022 a Fundação Free Software Foundation" msgid "About" msgstr "Sobre" @@ -1604,28 +1683,28 @@ msgid "ButtonBar|Move" msgstr "ButtonBar|Mover" msgid "ButtonBar|Delete" -msgstr "ButtonBar|Deletar" +msgstr "ButtonBar|Excluir" msgid "ButtonBar|PullDn" -msgstr "" +msgstr "ButtonBar|Puxar para baixo" msgid "Breton" -msgstr "" +msgstr "Bretão" msgid "Czech" -msgstr "" +msgstr "Checo" msgid "Welsh" -msgstr "" +msgstr "Galês" msgid "Danish" -msgstr "" +msgstr "Dinamarquês" msgid "German" msgstr "Alemão" msgid "Greek" -msgstr "" +msgstr "Greco" msgid "English" msgstr "Inglês" @@ -1640,13 +1719,13 @@ msgid "American English" msgstr "Inglês Americano" msgid "Esperanto" -msgstr "" +msgstr "Esperanto" msgid "Spanish" msgstr "Espanhol" msgid "Faroese" -msgstr "" +msgstr "Faroesa" msgid "French" msgstr "Francês" @@ -1655,68 +1734,68 @@ msgid "Italian" msgstr "Italiano" msgid "Dutch" -msgstr "" +msgstr "Holandês" msgid "Norwegian" -msgstr "" +msgstr "Norueguês" msgid "Polish" -msgstr "" +msgstr "Polonês" msgid "Portuguese" msgstr "Português" msgid "Romanian" -msgstr "" +msgstr "Romeno" msgid "Russian" -msgstr "" +msgstr "Russo" msgid "Slovak" -msgstr "" +msgstr "Eslovaco" msgid "Swedish" -msgstr "" +msgstr "Sueco" msgid "Ukrainian" -msgstr "" +msgstr "Ucraniano" msgid "&Add word" msgstr "&Adicionar palavra" msgid "Language" -msgstr "Linguagem" +msgstr "Idioma" msgid "Misspelled" -msgstr "" +msgstr "Com erros ortográficos" msgid "Check word" -msgstr "Verificar palavra" +msgstr "Verificar a palavra" msgid "Suggest" msgstr "Sugestão" msgid "Select language" -msgstr "Selecionar linguagem" +msgstr "Selecionar idioma" msgid "Choose syntax highlighting" -msgstr "Escolha sintaxe de realce" +msgstr "Escolha o tipo de seleção da sintaxe" msgid "< Auto >" -msgstr "< Auto >" +msgstr "< Automático >" msgid "< Reload Current Syntax >" -msgstr "< Recarregar Sintaxe Atual >" +msgstr "< Recarregar a Sintaxe Atual >" msgid "Load syntax file" -msgstr "Carregar sintaxe de arquivo" +msgstr "Carregar a sintaxe do arquivo" #, c-format msgid "" "Cannot open file %s\n" "%s" msgstr "" -"Não foi possível abrir arquivo %s\n" +"Não foi possível abrir o arquivo %s\n" "%s" #, c-format @@ -1729,25 +1808,28 @@ msgid "" "deleted your working directory, or given yourself\n" "extra access permissions with the \"su\" command?" msgstr "" -"O Commander não pode alterar o diretório que a subshell\n" -"afirma que você está em. Talvez você deletou seu\n" -"diretório de trabalho, ou deu a você mesmo permissões\n" -"de acesso extras com o comando \"su\"?" +"O Commander não pode alterar o diretório que\n" +"o subshell afirma que você está. Talvez você\n" +"excluído o seu diretório de trabalho, ou deu a\n" +"você mesmo as permissões extras de acesso\n" +"com o comando \"su\"?" #, c-format msgid "Cannot fetch a local copy of %s" -msgstr "Não foi possível adquirir uma cópia local de %s" +msgstr "Não foi possível obter uma cópia local de %s" msgid "The shell is already running a command" -msgstr "A shell já está executando um comando" +msgstr "O shell já está executando um comando" msgid "" "Not an xterm or Linux console;\n" "the subshell cannot be toggled." msgstr "" +"Não é um console xterm ou GNU/Linux;\n" +"o subshell não pode ser alternado." msgid "Type 'exit' to return to the Midnight Commander" -msgstr "" +msgstr "Insira o comando 'exit' para retornar ao Midnight Commander" msgid "Set &all" msgstr "Configurar &tudo" @@ -1759,57 +1841,57 @@ msgid "&Set" msgstr "&Configurar" msgid "owner" -msgstr "Dono" +msgstr "Proprietário" msgid "group" -msgstr "grupo" +msgstr "Grupo" msgid "other" -msgstr "outro" +msgstr "Outro" msgid "Flag" msgstr "Parâmetro" #, c-format msgid "Permissions (octal): %o" -msgstr "" +msgstr "Permissões (octal): %o" msgid "Chown advanced command" -msgstr "Comando avançado de chown" +msgstr "Comando avançado do chown" #, c-format msgid "" "Cannot chmod \"%s\"\n" "%s" msgstr "" -"Não foi possível executar chmod \"%s\"\n" +"Não foi possível executar o chmod \"%s\"\n" "%s" msgid "&Ignore" -msgstr "" +msgstr "&Ignorar" msgid "Ignore &all" -msgstr "" +msgstr "Ignor&ar tudo" msgid "&Retry" -msgstr "&Tentar Novamente" +msgstr "&Tentar novamente" #, c-format msgid "" "Cannot chown \"%s\"\n" "%s" msgstr "" -"Não foi possível executar chown \"%s\"\n" +"Não foi possível executar o chown \"%s\"\n" "%s" msgid "< Default >" -msgstr "" +msgstr "< Padrão >" msgid "Skins" -msgstr "" +msgstr "Visual" msgid "Other 8 bit" -msgstr "Outro 8 bit" +msgstr "Outros de 8 bit" msgid "Running" msgstr "Em execução" @@ -1821,124 +1903,124 @@ msgid "&Never" msgstr "&Nunca" msgid "On dum&b terminals" -msgstr "" +msgstr "Em terminais &burros" msgid "Alwa&ys" msgstr "Sem&pre" msgid "File operations" -msgstr "" +msgstr "Operações no arquivo" msgid "&Verbose operation" -msgstr "Mostrar P&rogresso" +msgstr "Exibir as informações de&talhadas" msgid "Compute tota&ls" -msgstr "" +msgstr "Calcu&lar totais" msgid "Classic pro&gressbar" -msgstr "" +msgstr "Barra de pro&gresso clássica" msgid "Mkdi&r autoname" -msgstr "" +msgstr "Mkdi&r com nome automático" msgid "&Preallocate space" -msgstr "" +msgstr "&Pré-alocar o espaço" msgid "Esc key mode" -msgstr "" +msgstr "Modo da tecla Esc" msgid "S&ingle press" -msgstr "" +msgstr "Um cl&ique" msgid "Timeout:" -msgstr "" +msgstr "Tempo limite:" msgid "Pause after run" -msgstr "" +msgstr "Pausar após executar" msgid "Use internal edi&t" -msgstr "Conteúdo:" +msgstr "Utilizar a edição in&terna:" msgid "Use internal vie&w" -msgstr "" +msgstr "Utilizar a visuali&zação interna" msgid "A&sk new file name" -msgstr "" +msgstr "Per&guntar o novo nome do arquivo" msgid "Auto m&enus" -msgstr "" +msgstr "M&enus automáticos" msgid "&Drop down menus" -msgstr "Menus &Suspensos" +msgstr "Menus &suspensos" msgid "S&hell patterns" -msgstr "" +msgstr "&Padrões do shell" msgid "Co&mplete: show all" -msgstr "" +msgstr "Co&mpletar: exibir tudo" msgid "Rotating d&ash" -msgstr "" +msgstr "Traço gir&atório" msgid "Cd follows lin&ks" -msgstr "Cd segue lin&ks" +msgstr "O comando cd segue os lin&ks" msgid "Sa&fe delete" -msgstr "" +msgstr "E&xcluir com segurança" msgid "Safe overwrite" -msgstr "" +msgstr "Substituir com segurança" msgid "A&uto save setup" -msgstr "" +msgstr "Config&urações de salvamento automático" msgid "Configure options" -msgstr "Configurar Opções" +msgstr "Configurar as opções" msgid "Skin:" -msgstr "Skin:" +msgstr "Visual:" msgid "&Shadows" -msgstr "" +msgstr "&Sombras" msgid "Appearance" msgstr "Aparência" msgid "Case &insensitive" -msgstr "Case &insensitive" +msgstr "Não d&iferenciar maiúsculas de minúsculas" msgid "Use panel sort mo&de" -msgstr "" +msgstr "Utilizar o mo&do de ordenação do painel" msgid "Show mi&ni-status" -msgstr "" +msgstr "Exibir i&nformações resumidas" msgid "Use SI si&ze units" -msgstr "" +msgstr "Utilizar as unidades de medida do SI" msgid "Mi&x all files" -msgstr "" +msgstr "Misturar todos os arquivos" msgid "Show &backup files" -msgstr "Mostrar arquivos de &backup" +msgstr "Exibir os arquivos da &cópia de segurança" msgid "Show &hidden files" -msgstr "" +msgstr "Exibir os arquivos &ocultos" msgid "&Fast dir reload" -msgstr "Atualização &Rápida de Diretório" +msgstr "&Recarregar o conteúdo do diretório" msgid "Ma&rk moves down" -msgstr "" +msgstr "&Marcar e mover para baixo" msgid "Re&verse files only" -msgstr "Somente reverter arquivos" +msgstr "Apenas re&verter os arquivos" msgid "Simple s&wap" -msgstr "" +msgstr "Troca si&mples" msgid "A&uto save panels setup" -msgstr "" +msgstr "Configurações de salvamento a&utomática dos painéis" msgid "Navigation" msgstr "Navegação" @@ -1947,31 +2029,31 @@ msgid "L&ynx-like motion" msgstr "Movimentação similar ao L&ynx" msgid "Pa&ge scrolling" -msgstr "" +msgstr "Deslocamento da pá&gina" msgid "Center &scrolling" -msgstr "" +msgstr "De&slocamento central" msgid "&Mouse page scrolling" -msgstr "" +msgstr "Desloca&mento da página com o rato/mouse" msgid "File highlight" -msgstr "Realce de arquivo" +msgstr "Destaque de arquivos" msgid "File &types" -msgstr "" +msgstr "&Tipos de arquivos" msgid "&Permissions" -msgstr "" +msgstr "&Permissões" msgid "Quick search" msgstr "Pesquisa rápida" msgid "Panel options" -msgstr "" +msgstr "Opções do painel" msgid "Information" -msgstr "Informação" +msgstr "Informações" msgid "" "Using the fast reload option may not reflect the exact\n" @@ -1979,15 +2061,21 @@ msgid "" "manual reload of the directory. See the man page for\n" "the details." msgstr "" +"Utilizando a opção para recarregar o conteúdo do\n" +"diretório pode não refletir o exato conteúdo do\n" +"diretório. Neste caso, você precisará fazer um\n" +"recarregamento manual do conteúdo do diretório.\n" +"Por favor, consulte a página do manual para obter\n" +"mais informações." msgid "&Full file list" -msgstr "Lista &Completa" +msgstr "Lista &completa dos arquivos" msgid "&Brief file list:" -msgstr "" +msgstr "Lista &resumida dos arquivos:" msgid "&Long file list" -msgstr "Lista &Longa" +msgstr "Lista &detalhada dos arquivos" msgid "&User defined:" msgstr "&Personalizada:" @@ -1996,10 +2084,10 @@ msgid "columns" msgstr "colunas" msgid "User &mini status" -msgstr "" +msgstr "Exibir i&nformações resumidas do usuário" msgid "Listing format" -msgstr "" +msgstr "Formato da lista" msgid "Executable &first" msgstr "Executáveis primeiro" @@ -2015,28 +2103,28 @@ msgid "Confirmation|&Delete" msgstr "Confirmação|E&xcluir" msgid "Confirmation|O&verwrite" -msgstr "Confirmação|Sobr&escrever" +msgstr "Confirmação|Sobrescre&ver" msgid "Confirmation|&Execute" msgstr "Confirmação|&Executar" msgid "Confirmation|E&xit" -msgstr "Confirmação|S&air" +msgstr "Confirmação|&Sair" msgid "Confirmation|Di&rectory hotlist delete" -msgstr "" +msgstr "Confirmação|Excluir a lista de &atalhos do diretório" msgid "Confirmation|&History cleanup" -msgstr "" +msgstr "Confirmação|&Limpar o histórico" msgid "Confirmation" msgstr "Confirmação" msgid "&UTF-8 output" -msgstr "&UTF-8 output" +msgstr "Saída com o formato &UTF-8" msgid "&Full 8 bits output" -msgstr " Saída completa de 8 bits" +msgstr "&Saída completa de 8 bits" msgid "&ISO 8859-1" msgstr "&ISO 8859-1" @@ -2045,57 +2133,57 @@ msgid "7 &bits" msgstr "7 &bits" msgid "F&ull 8 bits input" -msgstr " Entrada completa de 8 bits " +msgstr "&Entrada completa de 8 bits " msgid "Display bits" -msgstr "" +msgstr "Exibir o bits" msgid "Input / display codepage:" -msgstr "Inserir / Exibir página de código:" +msgstr "Inserir / Exibir a página de codificação:" msgid "Directory tree" msgstr "Ãrvore de diretórios" msgid "Timeout for freeing VFSs (sec):" -msgstr "" +msgstr "Tempo limite para liberar o VFSs (seg):" msgid "FTP anonymous password:" -msgstr "" +msgstr "Senha do FTP anônimo:" msgid "FTP directory cache timeout (sec):" -msgstr "" +msgstr "Tempo limite de cache do diretório de FTP (seg):" msgid "&Always use ftp proxy:" -msgstr "" +msgstr "&Sempre utilizar o proxy no FTP:" msgid "&Use ~/.netrc" -msgstr "&Usar ~/.netrc" +msgstr "&Utilizar o ~/.netrc" msgid "Use &passive mode" -msgstr "Usar modo &passivo" +msgstr "Utilizar o modo &passivo" msgid "Use passive mode over pro&xy" -msgstr "" +msgstr "Utilizar o modo passivo sobre o pro&xy" msgid "Virtual File System Setting" -msgstr "Configurações de Virtual File System" +msgstr "Configurações do Sistema de Arquivos Virtuais" msgid "cd" msgstr "cd" msgid "Quick cd" -msgstr " cd rápido " +msgstr " Cd rápido " msgid "Existing filename (filename symlink will point to):" msgstr "" -"Nome do arquivo existente (nome do arquivo para o qual a ligação irá " -"apontar):" +"Nome do arquivo existente (nome do arquivo para o qual o vínculo simbólico " +"ou “symbolic link†irá apontar):" msgid "Symbolic link filename:" -msgstr "Nome do arquivo de ligação simbólica" +msgstr "Nome do arquivo do vínculo simbólico" msgid "Symbolic link" -msgstr "Ligação Simbólica" +msgstr "Vínculo simbólico" msgid "&Stop" msgstr "&Parar" @@ -2107,163 +2195,171 @@ msgid "&Kill" msgstr "&Finalizar" msgid "Background jobs" -msgstr "" +msgstr "Trabalhos em segundo plano" #, c-format msgid "" "Cannot chdir to \"%s\"\n" "%s" msgstr "" +"Não é possível o chdir para \"%s\"\n" +"%s" msgid "Secure deletion" -msgstr "" +msgstr "Exclusão segura" msgid "Undelete" -msgstr "" +msgstr "Desfazer a exclusão" msgid "Synchronous updates" -msgstr "" +msgstr "Atualizações síncronas" msgid "Synchronous directory updates" -msgstr "" +msgstr "Atualizações de diretório síncronas" msgid "Immutable" -msgstr "" +msgstr "Imutável" msgid "Append only" -msgstr "" +msgstr "Apenas anexar" msgid "No dump" -msgstr "" +msgstr "Sem despejo" msgid "No update atime" -msgstr "" +msgstr "Sem atualização de tempo" msgid "Compress" -msgstr "" +msgstr "Comprimir" msgid "Compressed clusters" -msgstr "" +msgstr "Clusters comprimidos" msgid "Compressed dirty file" -msgstr "" +msgstr "Arquivo sujo comprimido" msgid "Compression raw access" -msgstr "" +msgstr "Acesso bruto da compressão" msgid "Encrypted inode" -msgstr "" +msgstr "Inode criptografado" msgid "Journaled data" -msgstr "" +msgstr "Dados registrados" msgid "Indexed directory" -msgstr "" +msgstr "Diretório indexado" msgid "No tail merging" -msgstr "" +msgstr "Sem fusão da extremidade" msgid "Top of directory hierarchies" -msgstr "" +msgstr "Hierarquias superiores do diretório" msgid "Inode uses extents" -msgstr "" +msgstr "O inode utiliza as extensões" msgid "Huge_file" -msgstr "" +msgstr "Arquivo_Enorme" msgid "No COW" -msgstr "" +msgstr "Sem COW" msgid "Direct access for files" -msgstr "" +msgstr "Acesso direto aos arquivos" msgid "Casefolded file" -msgstr "" +msgstr "Arquivo dobrado" msgid "Inode has inline data" -msgstr "" +msgstr "O inode tem dados embutidos" msgid "Project hierarchy" -msgstr "" +msgstr "Hierarquia do projeto" msgid "Verity protected inode" -msgstr "" +msgstr "O inode é protegido pelo verity" msgid "&Marked all" msgstr "Marcar &todos" msgid "S&et marked" -msgstr "Configurar &Marcado" +msgstr "Configurar o item &selecionado" msgid "C&lear marked" -msgstr "Lim&peza marcada" +msgstr "Lim&par o item &selecionado" msgid "Chattr command" -msgstr "" +msgstr "Comando chattr" #, c-format msgid "" "Cannot chattr \"%s\"\n" "%s" msgstr "" +"Não foi possível o comando chattr \"%s\"\n" +"%s" msgid "Cannot change attributes on non-local filesystems" msgstr "" +"Não é possível alterar os atributos nos sistemas de arquivos que não são " +"locais" #, c-format msgid "" "Cannot get flags of \"%s\"\n" "%s" msgstr "" +"Não foi possível obter os parâmetros de \"%s\"\n" +"%s" msgid "set &user ID on execution" -msgstr "" +msgstr "Configurar o ID do &usuário na execução" msgid "set &group ID on execution" -msgstr "" +msgstr "Configurar o ID do &grupo na execução" msgid "stick&y bit" -msgstr "" +msgstr "Sinali&zador de direito de acesso" msgid "&read by owner" -msgstr "" +msgstr "&Lido pelo proprietário" msgid "&write by owner" -msgstr "" +msgstr "&Escrito pelo proprietário" msgid "e&xecute/search by owner" -msgstr "e&xecutar/procurar por owner" +msgstr "E&xecutar/procurar pelo proprietário" msgid "rea&d by group" -msgstr "" +msgstr "Li&do pelo grupo" msgid "write by grou&p" -msgstr "" +msgstr "Escri&to pelo grupo" msgid "execu&te/search by group" -msgstr "" +msgstr "Exe&cutar/procurar pelo grupo" msgid "read &by others" -msgstr "" +msgstr "Lido po&r outros" msgid "wr&ite by others" -msgstr "" +msgstr "Escrito p&or outros" msgid "execute/searc&h by others" -msgstr "" +msgstr "Executar/procurar &por outros" msgid "Name:" -msgstr "" +msgstr "Nome:" msgid "Permissions (octal):" -msgstr "" +msgstr "Permissões (octal):" msgid "Owner name:" -msgstr "" +msgstr "Nome do proprietário:" msgid "Group name:" -msgstr "" +msgstr "Nome do grupo:" msgid "Chmod command" msgstr "Comando chmod" @@ -2275,16 +2371,16 @@ msgid "File" msgstr "Arquivo" msgid "Set &groups" -msgstr "COnfigurar &grupos" +msgstr "Configurar os &grupos" msgid "Set &users" -msgstr "Configurar usuários" +msgstr "Configurar os &usuários" msgid "Name" msgstr "Nome" msgid "Owner name" -msgstr "Nome do dono" +msgstr "Nome do proprietário" msgid "Group name" msgstr "Nome do grupo" @@ -2305,149 +2401,148 @@ msgid "" msgstr "" msgid "Enter machine name (F1 for details):" -msgstr "Insira nome da máquina (F1 para mais detalhes):" +msgstr "" +"Insira o nome da máquina (pressione a tecla F1 para obter mais informações):" msgid "Files tagged, want to cd?" -msgstr "Arquivos selecionados. Deseja mudar localização?" +msgstr "Os arquivos estão selecionados. Você quer alterar a localização?" msgid "Cannot change directory" -msgstr " Impossível mudar de diretório" - -msgid "Filter" -msgstr "Filtro" - -msgid "Set expression for filtering filenames" -msgstr "Defina expressão para filtrar nome de arquivos" +msgstr "Não é possível alterar o diretório" #, c-format msgid "Link %s to:" -msgstr "" +msgstr "Vínculo %s para:" msgid "Link" -msgstr "Link" +msgstr "Vínculo" #, c-format msgid "link: %s" -msgstr "" +msgstr "Vínculo: %s" #, c-format msgid "symlink: %s" -msgstr "" +msgstr "Vínculo simbólico: %s" #, c-format msgid "Cannot chdir to \"%s\"" -msgstr "Não foi possível executar chdir para \"%s\"" +msgstr "Não foi possível executar o comando chdir para \"%s\"" msgid "View file" -msgstr "Ver arquivo" +msgstr "Visualizar o arquivo" msgid "Filename:" -msgstr "Nome de arquivo:" +msgstr "Nome do arquivo:" msgid "Filtered view" msgstr "Visualização filtrada" msgid "Filter command and arguments:" -msgstr "comando e argumentos filtrados:" +msgstr "Filtrar os comando e os argumentos:" msgid "Edit file" -msgstr "" +msgstr "Editar o arquivo" msgid "Create a new Directory" msgstr "Criar um novo diretório" msgid "Enter directory name:" -msgstr "Insira nome de diretório" +msgstr "Insira o nome do diretório" msgid "Extension file edit" -msgstr "Editar extensão de arquivos" +msgstr "Editar a extensão do arquivo" msgid "Which extension file you want to edit?" -msgstr "Qual extensão de arquivo você quer editar?" +msgstr "Qual a extensão do arquivo que você quer editar?" msgid "&System Wide" msgstr "&Todo o sistema" msgid "Highlighting groups file edit" -msgstr "Edição do arquivo de grupos de realce" +msgstr "Editar o arquivo do grupo selecionado" msgid "Which highlighting file you want to edit?" -msgstr "Qual arquivo de realce você quer editar?" +msgstr "Qual arquivo selecionado que você quer editar?" msgid "Compare directories" -msgstr "Comparar diretórios" +msgstr "Comparar os diretórios" msgid "Select compare method:" -msgstr "Selecione métodos de comparação:" +msgstr "Selecione o método de comparação:" msgid "&Quick" msgstr "&Rápido" msgid "&Size only" -msgstr "Apenas &tamanho" +msgstr "Apenas por &tamanho" msgid "&Thorough" -msgstr "&Através" +msgstr "&Minucioso" msgid "" "Both panels should be in the listing mode\n" "to use this command" msgstr "" -"Ambos painéis deveriam estar no modo de\n" -"listagem para usar este comando" +"Ambos os painéis deveriam estar no modo\n" +"de listagem para utilizar este comando" #, c-format msgid "'%s' is not a symbolic link" -msgstr "" +msgstr "'%s' não é um vínculo simbólico" #, c-format msgid "Symlink '%s' points to:" -msgstr "" +msgstr "O vínculo simbólico '%s' aponta para:" msgid "Edit symlink" -msgstr "Editar symlink" +msgstr "Editar o vínculo simbólico" #, c-format msgid "edit symlink, unable to remove %s: %s" -msgstr "Editar symlink, não foi possível remover %s: %s" +msgstr "Ao editar o vínculo simbólico, não foi possível remover o %s: %s" #, c-format msgid "edit symlink: %s" -msgstr "editar symlink: %s" +msgstr "Editar o vínculo simbólico: %s" msgid "FTP to machine" -msgstr "FTP para máquina" +msgstr "FTP para a máquina" msgid "SFTP to machine" -msgstr "" +msgstr "SFTP para a máquina" msgid "Shell link to machine" -msgstr "Link de shell para máquina" +msgstr "Vínculo do shell para a máquina" msgid "Undelete files on an ext2 file system" -msgstr "" +msgstr "Recuperar arquivos excluídos em um sistema de arquivos ext2" msgid "" "Enter device (without /dev/) to undelete\n" "files on: (F1 for details)" msgstr "" +"Insira o dispositivo (sem o /dev/) para\n" +"recuperar o arquivos em: (pressione a\n" +"tecla F1 para obter mais informações)" msgid "Directory scanning" -msgstr "Escaneando diretório" +msgstr "Analisando o diretório" msgid "Setup" -msgstr "Configuração" +msgstr "Configurações" #, c-format msgid "Setup saved to %s" -msgstr "" +msgstr "As configurações foram salvas em %s" #, c-format msgid "Unable to save setup to %s" -msgstr "" +msgstr "Não foi possível salvar as configurações em %s" msgid "Cannot execute commands on non-local filesystems" msgstr "" +"Não é possível executar comandos em sistemas de arquivos que não são locais" msgid "Parameter" msgstr "Parâmetro" @@ -2457,30 +2552,49 @@ msgid "" "Cannot create temporary command file\n" "%s" msgstr "" +"Não foi possível criar o arquivo do comando\n" +"temporário%s" msgid "Pipe failed" -msgstr "Pipe falhou" +msgstr "O canal falhou" #, c-format -msgid " %s%s file error" +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." msgstr "" +"Você tem um arquivo %s desatualizado.\n" +"O Midnight Commander agora utiliza o arquivo\n" +"%s.\n" +"Por favor, copie as suas modificações do arquivo\n" +"antigo para o novo arquivo de configurações." + +#, c-format +msgid " %s%s file error" +msgstr "Ocorreu um erro no arquivo %s%s " #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" +"O formato do arquivo %s %s mudou com a versão 4.0. Ao que parece a " +"instalação falhou. Por favor, obtenha uma cópia do novo pacote do Midnight " +"Commander." #, c-format msgid "%s file error" -msgstr "" +msgstr "Ocorreu um erro no arquivo %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" +"O formato do arquivo %s mudou com a versão 4.0. Você pode querer copiá-lo de " +"%s %s ou utilizar este arquivo como um exemplo de como escrevê-lo." msgid "DialogTitle|Copy" msgstr "TítuloDiálogo|Copiar" @@ -2489,7 +2603,7 @@ msgid "DialogTitle|Move" msgstr "TítuloDiálogo|Mover" msgid "DialogTitle|Delete" -msgstr "TítuloDiálogo|Excluír" +msgstr "TítuloDiálogo|Excluir" msgid "FileOperation|Copy" msgstr "OperacaoArquivo|Copiar" @@ -2498,11 +2612,11 @@ msgid "FileOperation|Move" msgstr "OperacaoArquivo|Mover" msgid "FileOperation|Delete" -msgstr "OperacaoArquivo|Excluír" +msgstr "OperacaoArquivo|Excluir" #, no-c-format msgid "%o %f%n\"%s\"%m" -msgstr "" +msgstr "%o %f%n\"%s\"%m" #, no-c-format msgid "%o %d %f%m" @@ -2529,23 +2643,28 @@ msgid "" "Cannot stat hardlink source file \"%s\"\n" "%s" msgstr "" +"Não foi possível estabelecer o arquivo de origem do vínculo físico " +"(hardlink) \"%s\"\n" +"%s" #, c-format msgid "" "Cannot create target hardlink \"%s\"\n" "%s" msgstr "" +"Não foi possível criar o vínculo físico (hardlink) de destino \"%s\"\n" +"%s" #, c-format msgid "Cannot create target hardlink \"%s\"" -msgstr "" +msgstr "Não foi possível criar o vínculo físico (hardlink) de destino \"%s\"" #, c-format msgid "" "Cannot read source link \"%s\"\n" "%s" msgstr "" -"Não foi possível ler o link fonte \"%s\"\n" +"Não foi possível ler o vínculo (link) de origem \"%s\"\n" "%s" msgid "" @@ -2553,13 +2672,17 @@ msgid "" "\n" "Option Stable Symlinks will be disabled" msgstr "" +"Não é possível criar os vínculos simbólicos estáveis em sistemas de arquivos " +"que não são locais:\n" +"\n" +"A opção vínculos simbólicos (Symlinks) estáveis será desativada" #, c-format msgid "" "Cannot create target symlink \"%s\"\n" "%s" msgstr "" -"Não foi possível criar alvo symlink \"%s\"\n" +"Não foi possível criar o destino do vínculo simbólico (symlink) \"%s\"\n" "%s" #, c-format @@ -2587,13 +2710,15 @@ msgstr "" "são o mesmo arquivo" msgid "Ski&p all" -msgstr "" +msgstr "I&gnorar tudo" #, c-format msgid "" "Directory \"%s\" not empty.\n" "Delete it recursively?" msgstr "" +"O diretório \"%s\" não está vazio.\n" +"Você quer excluir recursivamente?" #, c-format msgid "" @@ -2601,6 +2726,9 @@ msgid "" "Directory \"%s\" not empty.\n" "Delete it recursively?" msgstr "" +"Processo que está sendo executado em segundo plano:\n" +"O diretório \"%s\" não está vazio.\n" +"Você quer excluir recursivamente?" msgid "Non&e" msgstr "&Nenhum" @@ -2610,7 +2738,7 @@ msgid "" "Cannot remove file \"%s\"\n" "%s" msgstr "" -"Não foi possível remover arquivo \"%s\"\n" +"Não foi possível remover o arquivo \"%s\"\n" "%s" #, c-format @@ -2618,19 +2746,19 @@ msgid "" "Cannot stat file \"%s\"\n" "%s" msgstr "" -"Não foi possível pegar estado de arquivo \"%s\"\n" +"Não foi possível obter o estado do arquivo \"%s\"\n" "%s" #, c-format msgid "Cannot overwrite directory \"%s\"" -msgstr "Não foi possível sobrescrever diretório \"%s\"" +msgstr "Não foi possível sobrescrever o diretório \"%s\"" #, c-format msgid "" "Cannot move file \"%s\" to \"%s\"\n" "%s" msgstr "" -"Não foi possível mover arquivo \"%s\" para \"%s\"\n" +"Não foi possível mover o arquivo \"%s\" para \"%s\"\n" "%s" #, c-format @@ -2638,7 +2766,7 @@ msgid "" "Cannot remove directory \"%s\"\n" "%s" msgstr "" -"Não foi possível remover diretório \"%s\"\n" +"Não foi possível remover o diretório \"%s\"\n" "%s" #, c-format @@ -2673,7 +2801,7 @@ msgid "" "Cannot stat source file \"%s\"\n" "%s" msgstr "" -"Não foi possível pegar estado de arquivo fonte \"%s\"\n" +"Não foi possível obter o estado do arquivo de origem \"%s\"\n" "%s" #, c-format @@ -2681,7 +2809,7 @@ msgid "" "Cannot create special file \"%s\"\n" "%s" msgstr "" -"Não foi possível criar arquivo especial \"%s\"\n" +"Não foi possível criar o arquivo especial \"%s\"\n" "%s" #, c-format @@ -2689,7 +2817,7 @@ msgid "" "Cannot chown target file \"%s\"\n" "%s" msgstr "" -"Não foi possível executar chown em arquivo alvo \"%s\"\n" +"Não foi possível executar o chown no arquivo de destino \"%s\"\n" "%s" #, c-format @@ -2705,18 +2833,18 @@ msgid "" "Cannot open source file \"%s\"\n" "%s" msgstr "" -"Não foi possível abrir arquivo fonte \"%s\"\n" +"Não foi possível abrir arquivo de origem \"%s\"\n" "%s" msgid "Reget failed, about to overwrite file" -msgstr "nova obtenção falhou, sobrescrever arquivo" +msgstr "A nova obtenção falhou ao sobrescrever o arquivo" #, c-format msgid "" "Cannot fstat source file \"%s\"\n" "%s" msgstr "" -"Não foi possível executar fstat no arquivo fonte \"%s\"\n" +"Não foi possível executar o fstat no arquivo de origem \"%s\"\n" "%s" #, c-format @@ -2724,7 +2852,7 @@ msgid "" "Cannot create target file \"%s\"\n" "%s" msgstr "" -"Não foi possível criar arquivo alvo \"%s\"\n" +"Não foi possível o criar arquivo no destino \"%s\"\n" "%s" #, c-format @@ -2732,7 +2860,7 @@ msgid "" "Cannot fstat target file \"%s\"\n" "%s" msgstr "" -"Não foi possível executar fstat no arquivo alvo \"%s\"\n" +"Não foi possível executar o fstat no arquivo de destino \"%s\"\n" "%s" #, c-format @@ -2740,30 +2868,43 @@ msgid "" "Cannot preallocate space for target file \"%s\"\n" "%s" msgstr "" +"Não foi possível pré-alocar o espaço para o arquivo de destino \"%s\"\n" +"%s" #, c-format msgid "" "Cannot read source file \"%s\"\n" "%s" msgstr "" +"Não foi possível ler o arquivo de origem \"%s\"\n" +"%s" #, c-format msgid "" "Cannot write target file \"%s\"\n" "%s" msgstr "" -"Não foi possível escrever arquivo alvo \"%s\"\n" +"Não foi possível escrever no arquivo de destino \"%s\"\n" "%s" msgid "(stalled)" msgstr "(parado)" +msgid "Incomplete file was retrieved" +msgstr "O arquivo que está incompleto foi recuperado" + +msgid "&Keep" +msgstr "&Manter" + +msgid "&Continue copy" +msgstr "&Continuar a cópia" + #, c-format msgid "" "Cannot close source file \"%s\"\n" "%s" msgstr "" -"Não foi possível fechar arquivo fonte \"%s\"\n" +"Não foi possível fechar o arquivo de origem \"%s\"\n" "%s" #, c-format @@ -2771,21 +2912,15 @@ msgid "" "Cannot close target file \"%s\"\n" "%s" msgstr "" -"Não foi possível fechar arquivo alvo \"%s\"\n" +"Não foi possível fechar o arquivo de destino \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Arquivo incompleto foi recuperado. Manter ?" - -msgid "&Keep" -msgstr "&Manter" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" "%s" msgstr "" -"Não foi possível adquirir estado do diretório \"%s\"\n" +"Não foi possível obter o estado do diretório \"%s\"\n" "%s" #, c-format @@ -2793,7 +2928,7 @@ msgid "" "Source \"%s\" is not a directory\n" "%s" msgstr "" -"Fonte \"%s\" não é um diretório\n" +"A origem \"%s\" não é um diretório\n" "%s" #, c-format @@ -2801,7 +2936,7 @@ msgid "" "Cannot copy cyclic symbolic link\n" "\"%s\"" msgstr "" -"Não foi possível copiar link simbólico cíclico\n" +"Não foi possível copiar vínculo simbólico cíclico\n" "\"%s\"" #, c-format @@ -2809,7 +2944,7 @@ msgid "" "Destination \"%s\" must be a directory\n" "%s" msgstr "" -"Destino \"%s\" deve ser um diretório\n" +"O destino \"%s\" deve ser um diretório\n" "%s" #, c-format @@ -2817,7 +2952,7 @@ msgid "" "Cannot create target directory \"%s\"\n" "%s" msgstr "" -"Não foi possível criar um diretório alvo \"%s\"\n" +"Não foi possível criar um diretório no destino \"%s\"\n" "%s" #, c-format @@ -2825,18 +2960,20 @@ msgid "" "Cannot chown target directory \"%s\"\n" "%s" msgstr "" -"Não foi possível executar chown no diretório alvo \"%s\"\n" +"Não foi possível executar o chown no diretório de destino \"%s\"\n" "%s" #, c-format msgid "Directories: %zu, total size: %s" -msgstr "" +msgstr "Diretórios: %zu, tamanho total: %s" msgid "Sorry, I could not put the job in background" -msgstr "Desculpe, não consegui colocar o procesos em plano de fundo" +msgstr "" +"Desculpe-me, eu não consegui colocar o(s) processo(s) que está(ão) sendo " +"executados em segundo plano" msgid "S&uspend" -msgstr "" +msgstr "S&uspender" msgid "Con&tinue" msgstr "Con&tinuar" @@ -2862,13 +2999,13 @@ msgid "%ld B/s" msgstr "%ld B/s" msgid "New :" -msgstr "" +msgstr "Novo :" msgid "Existing:" -msgstr "" +msgstr "Saindo:" msgid "Overwrite this file?" -msgstr "" +msgstr "Você quer substituir este arquivo?" msgid "A&ppend" msgstr "A&dicionar" @@ -2877,57 +3014,58 @@ msgid "&Reget" msgstr "&Obter novamente" msgid "Overwrite all files?" -msgstr "" +msgstr "Você quer substituir todos os arquivo?" msgid "Don't overwrite with &zero length file" msgstr "" +"Não sobrescrever o(s) arquivo(s) que possui(em) o tamanho igual a &zero" msgid "&Older" -msgstr "" +msgstr "Antig&o" msgid "S&maller" -msgstr "" +msgstr "Peq&ueno" msgid "&Size differs" -msgstr "" +msgstr "&Diferenciar pelo tamanho" msgid "File exists" msgstr "Arquivo existe" msgid "Background process: File exists" -msgstr "Processo em plano de fundo: Arquivo existe" +msgstr "Processo que está sendo executado em segundo plano: O arquivo existe" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "" +msgid "Files processed: %zu / %zu" +msgstr "Arquivos processados: %zu / %zu" #, c-format msgid "Files processed: %zu" -msgstr "" +msgstr "Arquivos processados: %zu" #, c-format msgid "Time: %s %s" -msgstr "" +msgstr "Hora: %s %s" #, c-format msgid "Time: %s %s (%s)" -msgstr "" +msgstr "Hora: %s %s (%s)" #, c-format msgid "Time: %s" -msgstr "" +msgstr "Hora: %s" #, c-format msgid "Time: %s (%s)" -msgstr "" +msgstr "Hora: %s (%s)" #, c-format msgid " Total: %s " -msgstr "" +msgstr " Total: %s " #, c-format -msgid " Total: %s/%s " -msgstr "" +msgid " Total: %s / %s " +msgstr " Total: %s / %s " msgid "Source" msgstr "Origem" @@ -2936,299 +3074,298 @@ msgid "Target" msgstr "Destino" msgid "Deleting" -msgstr "" +msgstr "Excluindo" msgid "&Using shell patterns" -msgstr "&Usando máscaras de ambiente de trabalho" +msgstr "&Utilizando os padrões do shell" msgid "to:" msgstr "para:" msgid "Follow &links" -msgstr "" +msgstr "Seguir os &vínculos" msgid "Preserve &attributes" -msgstr "" -"Ambos painéis deveriam estar no modo de\n" -"listagem para usar este comando" +msgstr "Preservar os &atributos" msgid "Di&ve into subdir if exists" -msgstr "" +msgstr "Aprof&undar no subdiretório se existir" msgid "&Stable symlinks" -msgstr "" +msgstr "&Vínculos simbólicos estáveis" msgid "&Background" msgstr "&Segundo plano" #, c-format msgid "Invalid source pattern '%s'" -msgstr "" +msgstr "O padrão de origem '%s' não é válido" msgid "File listin&g" -msgstr "" +msgstr "Lista&gem de arquivos" msgid "&Quick view" -msgstr "" +msgstr "Visualização &rápida" msgid "&Info" -msgstr "" +msgstr "&Informações" msgid "&Tree" msgstr "&Ãrvore" msgid "&Listing format..." -msgstr "" +msgstr "Formato da &listagem..." -msgid "S&ort order..." -msgstr "" +msgid "&Sort order..." +msgstr "&Ordem de classificação..." msgid "&Filter..." msgstr "&Filtro..." msgid "&Encoding..." -msgstr "" +msgstr "&Codificação..." msgid "FT&P link..." -msgstr "Ligação FT&P..." +msgstr "Vínculo do FT&P..." msgid "S&hell link..." -msgstr "" +msgstr "Vínculo do S&hell.." -msgid "&SFTP link..." -msgstr "" +msgid "SFTP li&nk..." +msgstr "Ví&nculo do SFTP..." msgid "Paneli&ze" -msgstr "" +msgstr "No pai&nel" msgid "&Rescan" -msgstr "" +msgstr "Analisa&r novamente" msgid "&View" -msgstr "" +msgstr "&Visualizar" msgid "Vie&w file..." -msgstr "" +msgstr "Visual&izar o arquivo..." msgid "&Filtered view" -msgstr "" +msgstr "Visualização &filtrada" msgid "&Copy" -msgstr "" +msgstr "&Copiar" msgid "C&hmod" -msgstr "" +msgstr "C&hmod" msgid "&Link" -msgstr "" +msgstr "&Vínculo" msgid "&Symlink" -msgstr "" +msgstr "Vínculo &simbólico" msgid "Relative symlin&k" -msgstr "Symlin&k relativo" +msgstr "Vínculo simbólico &relativo" msgid "Edit s&ymlink" -msgstr "Editar s&ymlink" +msgstr "Editar o vínculo s&imbólico" msgid "Ch&own" -msgstr "" +msgstr "Ch&own" msgid "&Advanced chown" -msgstr "Chown &Avançado" +msgstr "Chown &avançado" msgid "Cha&ttr" -msgstr "" +msgstr "Cha&ttr" msgid "&Rename/Move" msgstr "&Renomear/Mover" msgid "&Mkdir" -msgstr "" +msgstr "&Mkdir" msgid "&Quick cd" -msgstr "" +msgstr "Cd &rápido" msgid "Select &group" -msgstr "" +msgstr "Selecionar o &grupo" msgid "U&nselect group" -msgstr "" +msgstr "Ca&ncelar a seleção do grupo" msgid "&Invert selection" -msgstr "" +msgstr "&Inverter a seleção" msgid "E&xit" -msgstr "" +msgstr "&Sair" msgid "&User menu" -msgstr "" +msgstr "Menu do &usuário" msgid "&Directory tree" -msgstr "Arvore de &Diretórios" +msgstr "Arvore de &diretórios" msgid "&Find file" -msgstr "" +msgstr "&Pesquisar arquivo" msgid "S&wap panels" -msgstr "" +msgstr "Tro&car painéis" msgid "Switch &panels on/off" -msgstr "" +msgstr "Ligar/Desligar os &painéis" msgid "&Compare directories" -msgstr "" +msgstr "&Comparar diretórios" msgid "C&ompare files" -msgstr "" +msgstr "C&omparar arquivos" msgid "E&xternal panelize" -msgstr "" +msgstr "Painéis e&xternos" msgid "Show directory s&izes" -msgstr "" +msgstr "Ex&ibir o tamanho dos diretórios" msgid "Command &history" -msgstr "" +msgstr "&Histórico de comandos" msgid "Viewed/edited files hi&story" -msgstr "" +msgstr "Hi&stórico de arquivos visualizados ou editados" msgid "Di&rectory hotlist" -msgstr "" +msgstr "Lista de di&retórios" msgid "&Active VFS list" -msgstr "" +msgstr "&Lista de VFS ativos" msgid "&Background jobs" -msgstr "" +msgstr "&Trabalhos em segundo plano" msgid "Screen lis&t" -msgstr "" +msgstr "Lis&ta de telas" msgid "&Undelete files (ext2fs only)" -msgstr "&Recuperar arquivos (apenas ext2fs)" +msgstr "&Recuperar os arquivos (apenas ext2fs)" msgid "&Listing format edit" -msgstr "Editar forma de &Listagem" +msgstr "Editar o formato da &listagem" msgid "Edit &extension file" -msgstr "Editar &extensões de arquivo" +msgstr "Editar a &extensão do arquivo" msgid "Edit &menu file" -msgstr "Editar &Menu de arquivo" +msgstr "Editar o &menu de arquivo" msgid "Edit hi&ghlighting group file" -msgstr "" +msgstr "Editar o arquivo de seleção do grupo" msgid "&Configuration..." -msgstr "&Configuração" +msgstr "&Configurações..." msgid "&Layout..." -msgstr "&Layout..." +msgstr "&Leiaute..." msgid "&Panel options..." -msgstr "" +msgstr "Opções do &painel..." msgid "C&onfirmation..." -msgstr "" +msgstr "C&onfirmação..." msgid "&Appearance..." -msgstr "" +msgstr "&Aparência..." msgid "&Display bits..." -msgstr "&Mostrar Bits..." +msgstr "&Exibir os bits..." msgid "&Virtual FS..." msgstr "Sistema de Arquivos &Virtual..." msgid "Panels:" -msgstr "Paineis" +msgstr "Painéis:" #, c-format msgid "You have %zu opened screen. Quit anyway?" msgid_plural "You have %zu opened screens. Quit anyway?" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Você tem %zu tela aberta. Você quer finalizar mesmo assim?" +msgstr[1] "Você têm %zu telas abertas. Você quer finalizar mesmo assim?" +msgstr[2] "Você têm %zu telas abertas. Você quer finalizar mesmo assim?" msgid "The Midnight Commander" msgstr "O Midnight Commander" msgid "Do you really want to quit the Midnight Commander?" -msgstr "Você deseja realmente sair do Midnight Commander?" +msgstr "Você realmente quer sair do Midnight Commander?" msgid "&Above" -msgstr "" +msgstr "&Acima" msgid "&Left" -msgstr "" +msgstr "&Esquerda" msgid "&Below" -msgstr "" +msgstr "A&baixo" msgid "&Right" -msgstr "" +msgstr "Di&reita" msgid "ButtonBar|Menu" msgstr "ButtonBar|Menu" msgid "ButtonBar|View" -msgstr "ButtonBar|Ver" +msgstr "ButtonBar|Visualizar" msgid "ButtonBar|RenMov" -msgstr "ButtonBar|RenMov" +msgstr "ButtonBar|Renomear ou Mover" msgid "ButtonBar|Mkdir" -msgstr "ButtonBar|Mkdir" +msgstr "ButtonBar|Criar um diretório" msgid "&Chdir" -msgstr "Alterar &Diretório" +msgstr "Alterar o &diretório" msgid "&Again" msgstr "&Novamente" msgid "Pane&lize" -msgstr "Mostrar em Painé&is" +msgstr "Exibir em Painé&is" msgid "&View - F3" -msgstr "&Ver - F3" +msgstr "&Visualizar - F3" msgid "&Edit - F4" msgstr "&Editar - F4" #, c-format msgid "Found: %lu" -msgstr "" +msgstr "Foi encontrado: %lu" msgid "Malformed regular expression" -msgstr "Expressão regular malformulada" +msgstr "A expressão regular foi mal formulada" msgid "File name:" -msgstr "Nome de arquivo:" +msgstr "Nome do arquivo:" msgid "&Find recursively" -msgstr "" +msgstr "&Pesquisar recursivamente" msgid "Follow s&ymlinks" -msgstr "" +msgstr "&Seguir os vínculos simbólicos" msgid "S&kip hidden" -msgstr "" +msgstr "Ign&orar os ocultos" msgid "Content:" msgstr "Conteúdo:" msgid "Sea&rch for content" -msgstr "" +msgstr "Pesquisa&r por conteúdo" msgid "Case sens&itive" -msgstr "" +msgstr "D&iferenciar as letras maiúsculas das minúsculas" msgid "A&ll charsets" -msgstr "" +msgstr "&Todos os conjuntos de caracteres" msgid "Fir&st hit" -msgstr "" +msgstr "O pri&meiro encontrado" msgid "Find File" msgstr "Procurar arquivo" @@ -3237,52 +3374,53 @@ msgid "Start at:" msgstr "Iniciar em:" msgid "Ena&ble ignore directories:" -msgstr "" +msgstr "&Ativar a opção de ignorar os diretórios:" #, c-format msgid "Grepping in %s" msgstr "Localizando em %s" msgid "Finished" -msgstr "Terminado" +msgstr "Finalizado" #, c-format msgid "Finished (ignored %zu directory)" msgid_plural "Finished (ignored %zu directories)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Foi finalizado com %zu diretório ignorado" +msgstr[1] "Foi finalizado com %zu diretórios ignorados" +msgstr[2] "Foi finalizado com %zu diretórios ignorados" #, c-format msgid "Find File: \"%s\". Content: \"%s\"" -msgstr "" +msgstr "Procurar o arquivo: \"%s\". Contendo: \"%s\"" #, c-format msgid "Find File: \"%s\"" -msgstr "" +msgstr "Procurar o arquivo: \"%s\"" msgid "Searching" msgstr "Procurando" msgid "Change &to" -msgstr "" +msgstr "&Alterar para" msgid "&Free VFSs now" -msgstr "" +msgstr "Libertar o V&Fss agora" msgid "&Refresh" -msgstr "" +msgstr "&Recarregar" msgid "&Add current" -msgstr "&Adicionar ao Atual" +msgstr "&Adicionar ao atual" msgid "&Up" msgstr "&Acima" msgid "New &group" -msgstr "" +msgstr "Novo &grupo" msgid "New &entry" -msgstr "" +msgstr "Nova &entrada" msgid "&Insert" msgstr "&Inserir" @@ -3291,26 +3429,26 @@ msgid "&Remove" msgstr "&Remover" msgid "Subgroup - press ENTER to see list" -msgstr "Subgrupo - pressione ENTER para ver lista" +msgstr "Subgrupo - pressione a tecla ENTER para visualizar a lista" msgid "Active VFS directories" -msgstr "Ativar diretório VFS" +msgstr "Ativar o diretório VFS" msgid "Directory hotlist" -msgstr "Lista de diretório " +msgstr "Lista de diretórios" msgid "Top level group" -msgstr "" +msgstr "Grupo de nível superior" msgid "Directory path" msgstr "Caminho do diretório" #, c-format msgid "Moving %s" -msgstr "" +msgstr "Movendo %s" msgid "Directory label" -msgstr " Descrição do diretório" +msgstr "Descrição do diretório" msgid "&Append" msgstr "&Adicionar" @@ -3319,74 +3457,80 @@ msgid "New hotlist entry" msgstr "Nova entrada na lista " msgid "Directory label:" -msgstr "" +msgstr " Descrição do diretório:" msgid "Directory path:" -msgstr "" +msgstr "Caminho do diretório:" msgid "New hotlist group" -msgstr "" +msgstr "Nova lista do grupo" msgid "Name of new group:" -msgstr "" +msgstr "Nome do novo grupo:" #, c-format msgid "Are you sure you want to remove entry \"%s\"?" -msgstr "" +msgstr "Você tem certeza que quer remover a entrada \"%s\"?" #, c-format msgid "" "Group \"%s\" is not empty.\n" "Remove it?" msgstr "" +"O grupo \"%s\" não está vazio.\n" +"Você quer removê-lo?" msgid "Hotlist Load" -msgstr "" +msgstr "Carregar a lista" #, c-format msgid "" "MC was unable to write %s file,\n" "your old hotlist entries were not deleted" msgstr "" +"O Midnight Commander não conseguiu\n" +"escrever ou gravar no arquivo %s, as\n" +"suas entradas antigas da lista de favoritos\n" +"não foram excluídas" #, c-format msgid "Label for \"%s\":" msgstr "Descrição para \"%s\": " msgid "Add to hotlist" -msgstr "" +msgstr "Adicionar à lista de favoritos" #, c-format msgid "Midnight Commander %s" -msgstr "Midnight commander %s" +msgstr "Midnight Commander %s" #, c-format msgid "File: %s" msgstr "Arquivo: %s" msgid "No node information" -msgstr "Sem informação de nó" +msgstr "Nenhuma informação do nó" msgid "Free nodes:" -msgstr "" +msgstr "Nós livres:" msgid "No space information" -msgstr "Sem informações sobre espaço" +msgstr "Nenhuma informação do espaço" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "" +msgid "Free space: %s / %s (%d%%)" +msgstr " Espaço livre: %s / %s (%d%%)" #, c-format msgid "Type: %s" -msgstr "" +msgstr "Tipo: %s" msgid "non-local vfs" -msgstr "vfs não local" +msgstr "VFS não local" #, c-format msgid "Device: %s" -msgstr "" +msgstr "Dispositivo: %s" #, c-format msgid "Filesystem: %s" @@ -3394,83 +3538,84 @@ msgstr "Sistema de arquivos: %s" #, c-format msgid "Accessed: %s" -msgstr "" +msgstr "Acessado: %s" #, c-format msgid "Modified: %s" -msgstr "" +msgstr "Modificado: %s" #. TRANSLATORS: Time of last status change as in stat(2) man. #, c-format msgid "Changed: %s" -msgstr "" +msgstr "Alterado: %s" #, c-format msgid "Dev. type: major %lu, minor %lu" -msgstr "" +msgstr "Dev. tipo: maior %lu, menor %lu" #, c-format msgid "Size: %s" -msgstr "" +msgstr "Tamanho: %s" #, c-format msgid " (%lu block)" msgid_plural " (%lu blocks)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] " (%lu bloco)" +msgstr[1] " (%lu blocos)" +msgstr[2] " (%lu blocos)" #, c-format msgid "Owner: %s/%s" -msgstr "" +msgstr "Proprietário: %s/%s" #, c-format msgid "Links: %d" -msgstr "Links: %d" +msgstr "Vínculos: %d" msgid "Attributes: not supported" -msgstr "" +msgstr "Atributos: não suportados" #, c-format msgid "Attributes: %s" -msgstr "" +msgstr "Atributos: %s" msgid "Attributes: unavailable" -msgstr "" +msgstr "Atributos: indisponíveis" #, c-format msgid "Mode: %s (%04o)" -msgstr "" +msgstr "Modo: %s (%04o)" #, c-format msgid "Location: %Xh:%Xh" -msgstr "" +msgstr "Localização: %Xh:%Xh" msgid "&Equal split" -msgstr "Dividir i&Gualmente" +msgstr "Dividir i&gualmente" msgid "&Menubar visible" -msgstr "Barra de &menu visível" +msgstr "Barra do &menu visível" msgid "Command &prompt" -msgstr "&Prompt de comando" +msgstr "&Prompt de comandos" msgid "&Keybar visible" -msgstr "Barra de &Teclas visível" +msgstr "Barra de &teclas visível" msgid "H&intbar visible" msgstr "Barra de dicas visível" msgid "&XTerm window title" -msgstr "" +msgstr "Título de janela do &XTerm" msgid "&Show free space" -msgstr "Mostrar espaço livre" +msgstr "Exibir o espaço livre" msgid "Panel split" -msgstr "" +msgstr "Divisão do painel" msgid "Console output" -msgstr "" +msgstr "Saída do console " msgid "&Vertical" msgstr "&Vertical" @@ -3479,13 +3624,13 @@ msgid "&Horizontal" msgstr "&Horizontal" msgid "Output lines:" -msgstr "" +msgstr "Linhas de saída:" msgid "Layout" msgstr "Disposição" msgid "Memory exhausted!" -msgstr "Memória esgotada!" +msgstr "A memória está esgotada!" #. TRANSLATORS: one single character to represent 'unsorted' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix @@ -3528,7 +3673,7 @@ msgid "&Size" msgstr "&Tamanho" msgid "Block Size" -msgstr "" +msgstr "Tamanho do bloco" #. TRANSLATORS: one single character to represent 'Modify time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix @@ -3536,7 +3681,7 @@ msgid "sort|m" msgstr "sort|m" msgid "&Modify time" -msgstr "&Hora de modificação" +msgstr "&Hora da modificação" #. TRANSLATORS: one single character to represent 'Access time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix @@ -3544,7 +3689,7 @@ msgid "sort|a" msgstr "sort|a" msgid "&Access time" -msgstr "&Hora de acesso" +msgstr "&Hora do acesso" #. TRANSLATORS: one single character to represent 'Change time' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix @@ -3552,7 +3697,7 @@ msgid "sort|h" msgstr "sort|h" msgid "C&hange time" -msgstr "" +msgstr "Al&terar a hora" msgid "Perm" msgstr "Perm" @@ -3563,7 +3708,7 @@ msgstr "Nl" #. TRANSLATORS: one single character to represent 'inode' sort mode #. TRANSLATORS: no need to translate 'sort', it's just a context prefix msgid "sort|i" -msgstr "" +msgstr "sort|i" msgid "&Inode" msgstr "&Inode" @@ -3575,43 +3720,44 @@ msgid "GID" msgstr "GID" msgid "Owner" -msgstr "Dono" +msgstr "Proprietário" msgid "Group" msgstr "Grupo" msgid "[dev]" -msgstr "" +msgstr "[dev]" msgid "UP--DIR" -msgstr "UP--DIR" +msgstr "DIRETÓRIO--ACIMA" msgid "SYMLINK" -msgstr "Você deseja realmente sair do Midnight Commander?" +msgstr "VÃNCULO SIMBÓLICO" msgid "SUB-DIR" -msgstr "SUB-DIR" +msgstr "SUBDIRETÓRIO" msgid "" -msgstr "" +msgstr "" #, c-format msgid "%s in %d file" msgid_plural "%s in %d files" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%s em %d arquivo" +msgstr[1] "%s em %d arquivos" +msgstr[2] "%s em %d arquivos" msgid "Panelize" -msgstr "" +msgstr "No painel" msgid "Unknown tag on display format:" -msgstr "" +msgstr "A descrição não é conhecida para o formato exibido:" msgid "&Files only" -msgstr "Apenas &arquivos" +msgstr "Apenas os &arquivos" msgid "&Case sensitive" -msgstr "" +msgstr "Diferen&ciar as letras maiúsculas das minúsculas" msgid "Select" msgstr "Selecionar" @@ -3619,18 +3765,22 @@ msgstr "Selecionar" msgid "Unselect" msgstr "Desselecionar" +msgid "Filter" +msgstr "Filtro" + msgid "Do you really want to execute?" -msgstr "" +msgstr "Você realmente quer executar?" msgid "Cannot read directory contents" -msgstr "" +msgstr "Não é possível ler o conteúdo do diretório" msgid "User supplied format looks invalid, reverting to default." msgstr "" -"Formato disponibilizado pelo usuário parece inválido, voltando ao padrão." +"O formato disponibilizado pelo usuário parece não ser válido, voltando para " +"o formato padrão." msgid "&Add new" -msgstr "&Adicionar Novo" +msgstr "&Adicionar novo" msgid "External panelize" msgstr "Painéis externos" @@ -3642,16 +3792,18 @@ msgid "Command" msgstr "Comando" msgid "Add to external panelize" -msgstr "" +msgstr "Adicionar ao painel externo" msgid "Enter command label:" -msgstr "" +msgstr "Insira a descrição do comando:" #, c-format msgid "" "External panelize:\n" "%s" msgstr "" +"Painel externo:\n" +"%s" #, c-format msgid "" @@ -3659,80 +3811,88 @@ msgid "" "failed to read data from child stdout:\n" "%s" msgstr "" +"Painel externo:\n" +"Ocorreu uma falha ao ler os dados do stdout filho:\n" +"%s" msgid "Cannot run external panelize in a non-local directory" msgstr "" +"Não foi possível executar o painel externo em um diretório que não seja local" msgid "Modified git files" -msgstr "" +msgstr "Arquivos do git modificados" msgid "Find rejects after patching" -msgstr "A busca foi rejeitada após a atualização" +msgstr "A pesquisa foi rejeitada após a atualização" msgid "Find *.orig after patching" -msgstr " Procurar *.orig após atualização" +msgstr "Pesquisar o arquivo *.orig após a atualização" msgid "Find SUID and SGID programs" -msgstr "Procurar programas SUID e SGID" +msgstr "Pesquisar os programas SUID e SGID" #, c-format msgid "" "Cannot open the %s file for writing:\n" "%s\n" msgstr "" -"Impossivel abrir arquivo %s para escrita:\n" +"Não é possível abrir o arquivo %s para \n" +"escrita:\n" "%s\n" #, c-format msgid "Copy \"%s\" directory to:" -msgstr "Copiar diretório \"%s\" para:" +msgstr "Copiar o diretório \"%s\" para:" #, c-format msgid "Move \"%s\" directory to:" -msgstr "Mover diretório \"%s\" para:" +msgstr "Mover o diretório \"%s\" para:" #, c-format msgid "" "Cannot stat the destination\n" "%s" msgstr "" +"Não é possível estabelecer o destino\n" +"%s" #, c-format msgid "Delete %s?" -msgstr "" +msgstr "Você quer excluir %s?" msgid "ButtonBar|Static" -msgstr "ButtonBar|Estatística" +msgstr "ButtonBar|Estatísticas" msgid "ButtonBar|Dynamc" -msgstr "ButtonBar|Dinamico" +msgstr "ButtonBar|Dinâmico" msgid "ButtonBar|Rescan" -msgstr "ButtonBar|Rescan" +msgstr "ButtonBar|Analisar" msgid "ButtonBar|Forget" msgstr "ButtonBar|Esquecer" msgid "ButtonBar|Rmdir" -msgstr "ButtonBar|Rmdir" +msgstr "ButtonBar|Remover o diretório" #, c-format msgid "" "Cannot write to the %s file:\n" "%s\n" msgstr "" -"Impossível escrever para o arquivo %s :\n" +"Não é possível escrever no arquivo %s :\n" "%s\n" msgid "Help file format error\n" -msgstr "" +msgstr "Erro no formato do arquivo de ajuda\n" msgid "Internal bug: Double start of link area" msgstr "" +"Ocorreu um problema interno devido a inicialização de duas áreas de vínculo" #, c-format msgid "Cannot find node %s in help file" -msgstr "" +msgstr "Não é possível encontrar o nó %s no arquivo de ajuda" msgid "Help" msgstr "Ajuda" @@ -3744,10 +3904,10 @@ msgid "ButtonBar|Prev" msgstr "ButtonBar|Anterior" msgid "Learn keys" -msgstr "Aprender teclas" +msgstr "Aprender a utilizar as teclas" msgid "Teach me a key" -msgstr "" +msgstr "Ensine-me a utilizar uma tecla" #, c-format msgid "" @@ -3760,21 +3920,21 @@ msgid "" "If you want to escape, press a single Escape key\n" "and wait as well." msgstr "" -"Por favor, pressione %s\n" -"e espere até essa mensagem sumir.\n" +"Por favor, pressione as teclas %s\n" +"e aguarde até que esta mensagem desapareça.\n" "\n" -"então, pressione ela de novo para ver se OK aparece\n" -"próximo ao botão.\n" +"Em seguida, pressione as teclas novamente para\n" +"verificar se o OK será exibido próximo ao botão.\n" "\n" -"Se quiser desistir, pressione um ESC simples\n" -"e aguarde." +"Se você quiser desistir, pressione a ESC ou\n" +"Escapar e aguarde." msgid "Cannot accept this key" -msgstr "" +msgstr "Não foi possível aceitar esta tecla" #, c-format msgid "You have entered \"%s\"" -msgstr "" +msgstr "Você inseriu \"%s\"" #. TRANSLATORS: This label appears near learned keys. Keep it short. msgid "OK" @@ -3784,8 +3944,9 @@ msgid "" "It seems that all your keys already\n" "work fine. That's great." msgstr "" -"Parece que todas as teclas já estão funcionando \n" -"adequadamente. OK!" +"Parece que todas as teclas já estão\n" +"funcionando adequadamente. Isso\n" +"é ótimo." msgid "&Discard" msgstr "&Descartar" @@ -3794,29 +3955,39 @@ msgid "" "Great! You have a complete terminal database!\n" "All your keys work well." msgstr "" -"Ótimo! Já temos um mapeamento de teclas completo!\n" -"todas as teclas funcionam bem." +"Ótimo! Você já tem um mapeamento de teclas completo!\n" +"Todas as suas teclas funcionam bem." msgid "" "Press all the keys mentioned here. After you have done it, check\n" "which keys are not marked with OK. Press space on the missing\n" "key, or click with the mouse to define it. Move around with Tab." msgstr "" +"Pressione todas as teclas mencionadas aqui. Depois de fazer\n" +"isso, verifique quais teclas não estão marcadas com o OK.\n" +"Pressione a tecla de espaço sobre a tecla que falta ou clique\n" +"sobre a tecla para defini-la. Você pode se movimentar com a\n" +"tecla Tab ou Tabulação." #, c-format msgid "" "Failed to run:\n" "%s\n" msgstr "" +"Ocorreu uma falha ao executar:\n" +"%s\n" msgid "Home directory path is not absolute" -msgstr "" +msgstr "O caminho do diretório pessoal não é absoluto" msgid "" "GNU Midnight Commander\n" "is already running on this terminal.\n" "Subshell support will be disabled." msgstr "" +"O Midnight Commander do GNU já\n" +"está sendo executado neste terminal.\n" +"O suporte ao subshell será desativado." #, c-format msgid "" @@ -3824,12 +3995,15 @@ msgid "" "Failed while close:\n" "%s\n" msgstr "" +"\n" +"Ocorreu uma falha ao fechar:\n" +"%s\n" msgid "Choose codepage" -msgstr "" +msgstr "Escolha a página do código" msgid "- < No translation >" -msgstr "" +msgstr "- < Sem tradução >" msgid "%b %e %Y" msgstr "%b %e %Y" @@ -3842,161 +4016,166 @@ msgid "" "Cannot save file %s:\n" "%s" msgstr "" +"Não foi possível salvar o arquivo %s:\n" +"%s" #, c-format msgid "Cannot open named pipe %s\n" -msgstr "Não foi possível abrir conexão denominada %s\n" +msgstr "Não foi possível abrir o canal de conexão denominado %s\n" msgid "The shell is still active. Quit anyway?" -msgstr "" +msgstr "O shell ainda está ativo. Você quer finalizar mesmo assim?" #, c-format msgid "Warning: Cannot change to %s.\n" -msgstr "Alerta: Impossível mudar para %s.\n" +msgstr "" +"Aviso:\n" +"Não foi possível alterar para %s.\n" msgid "With builtin Editor and Aspell support" -msgstr "" +msgstr "Com o editor integrado e o suporte ao Aspell" msgid "With builtin Editor" -msgstr "" +msgstr "Com o editor integrado" msgid "With optional subshell support" -msgstr "" +msgstr "Com suporte opcional ao subshell" msgid "With subshell support as default" -msgstr "" +msgstr "Com suporte padrão ao subshell" msgid "With support for background operations" -msgstr "" +msgstr "Com suporte para as operações em segundo plano" msgid "With mouse support on xterm and Linux console" -msgstr "" +msgstr "Com suporte ao rato/mouse no console do xterm no GNU/Linux" msgid "With mouse support on xterm" -msgstr "" +msgstr "Com suporte ao rato/mouse no xterm" msgid "With support for X11 events" -msgstr "" +msgstr "Com suporte para os eventos do X11" msgid "With internationalization support" -msgstr "" +msgstr "Com suporte à internacionalização" msgid "With multiple codepages support" -msgstr "" +msgstr "Com suporte a várias páginas de códigos" msgid "With ext2fs attributes support" -msgstr "" +msgstr "Com suporte aos atributos do ext2fs" #, c-format msgid "Built with GLib %d.%d.%d\n" -msgstr "" +msgstr "Construído com o GLib %d.%d.%d\n" #, c-format msgid "Built with S-Lang %s with terminfo database\n" -msgstr "" +msgstr "Construído com o S-Lang %s com o banco de dados do terminfo\n" #, c-format msgid "Built with ncurses %s\n" -msgstr "" +msgstr "Construído com o ncurses %s\n" msgid "Built with ncurses (unknown version)" -msgstr "" +msgstr "Construído com o ncurses (de uma versão desconhecida)" #, c-format msgid "Built with ncursesw %s\n" -msgstr "" +msgstr "Construído com o ncurses %s\n" msgid "Built with ncursesw (unknown version)" -msgstr "" +msgstr "Construído com o ncursesw (de uma versão desconhecida)" #, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "" +msgstr "Construído com o libssh2 %d.%d.%d\n" msgid "Virtual File Systems:" -msgstr "" +msgstr "Sistemas de Arquivos Virtuais:" msgid "Data types:" -msgstr "" +msgstr "Tipos de dados:" msgid "Home directory:" -msgstr "" +msgstr "Diretório pessoal:" msgid "Profile root directory:" -msgstr "" +msgstr "Diretório do perfil do superusuário (root):" msgid "System data" -msgstr "" +msgstr "Dados do sistema" msgid "Config directory:" -msgstr "" +msgstr "Diretório de configurações:" msgid "Data directory:" -msgstr "" +msgstr "Diretório de dados:" msgid "File extension handlers:" -msgstr "" +msgstr "Manipuladores da extensão dos arquivos:" msgid "VFS plugins and scripts:" -msgstr "" +msgstr "Extensões e códigos de programação do VFS:" msgid "User data" -msgstr "" +msgstr "Dados do usuário" msgid "Cache directory:" -msgstr "" +msgstr "Diretório de cache:" msgid "Debug" -msgstr "" +msgstr "Depuração" msgid "ERROR:" -msgstr "" +msgstr "ERRO:" msgid "True:" -msgstr "" +msgstr "Verdadeiro:" msgid "False:" -msgstr "" +msgstr "Falso:" msgid "Error calling program" -msgstr "Erro ao chamar programa" +msgstr "Ocorreu um erro ao chamar o programa" msgid "Warning -- ignoring file" -msgstr "" +msgstr "Aviso -- ignorando o arquivo" #, c-format msgid "" "File %s is not owned by root or you or is world writable.\n" "Using it may compromise your security" msgstr "" -"Arquivo %s não pertence ao superusuário ou a você ou pode\n" -"ser escrito por todos.\n" -"O seu uso pode comprometer a segurança" +"O arquivo %s não pertence ao superusuário (root) ou\n" +"a você ou pode ser escrito por todos.\n" +"O seu uso pode comprometer a segurança do sistema\n" +"operacional" msgid "Format error on file Extensions File" -msgstr "" +msgstr "Ocorreu um erro no formato do arquivo das extensões dos arquivos" #, c-format msgid "The %%var macro has no default" -msgstr "" +msgstr "O macro %%var não tem o padrão " #, c-format msgid "The %%var macro has no variable" -msgstr "" +msgstr "O macro %%var não tem a variável " #, c-format msgid "No suitable entries found in %s" -msgstr "" +msgstr "Nenhuma entrada adequada foi encontrada em %s" msgid "User menu" -msgstr "" +msgstr "Menu do usuário" #, c-format msgid "" "Cannot open cpio archive\n" "%s" msgstr "" -"Impossível abrir arquivo cpio\n" +"Não foi possível abrir o arquivo cpio\n" "%s" #, c-format @@ -4004,7 +4183,7 @@ msgid "" "Premature end of cpio archive\n" "%s" msgstr "" -"Final prematuro do arquivo cpio\n" +"Ocorreu o fim prematuro do arquivo cpio\n" "%s" #, c-format @@ -4014,7 +4193,7 @@ msgid "" "in cpio archive\n" "%s" msgstr "" -"Links físicos inconsistentes de\n" +"Alguns vínculos físicos (hardlinks) estão inconsistentes em\n" "%s\n" "no arquivo cpio\n" "%s" @@ -4028,7 +4207,7 @@ msgid "" "Corrupted cpio header encountered in\n" "%s" msgstr "" -"Cabeçalho cpio corrompido encontrado em\n" +"O cabeçalho do cpio está corrompido e pode ser encontrado em\n" "%s" #, c-format @@ -4036,116 +4215,128 @@ msgid "" "Unexpected end of file\n" "%s" msgstr "" -"Fim de arquivo inesperado\n" +"Ocorreu o fim inesperado do arquivo\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "O arquivo tar não é consistente" + #, c-format msgid "" "Cannot open %s archive\n" "%s:\n" "%s" msgstr "" +"Não foi possível abrir o arquivo %s\n" +"%s:\n" +"%s" #, c-format msgid "" "EXTFS virtual file system:\n" "%s" msgstr "" +"Sistema de arquivos virtual EXTFS:\n" +"%s" #, c-format msgid "Warning: cannot open %s directory\n" -msgstr "Aviso: Não pode abrir o diretório %s\n" +msgstr "" +"Aviso:\n" +"Não foi possível abrir o diretório %s\n" #, c-format msgid "fish: Disconnecting from %s" -msgstr "peixe: Desconectando de %s" +msgstr "O fish foi desconectado de %s" msgid "fish: Waiting for initial line..." -msgstr "peixe: Aguardando pela linha inicial..." +msgstr "O fish está aguardando a linha inicial..." msgid "Sorry, we cannot do password authenticated connections for now." -msgstr "Desculpe, impossível fazer autenticação de senha no momento." +msgstr "" +"Desculpe-me, não é possível fazer a autenticação por senha neste momento." #, c-format msgid "fish: Password is required for %s" -msgstr "fish: A senha é necessária para %s" +msgstr "O fish necessita da senha para %s" msgid "fish: Sending password..." -msgstr "peixe: Enviando senha..." +msgstr "O fish está enviando a senha..." msgid "fish: Sending initial line..." -msgstr "peixe: Enviando linha inicial..." +msgstr "O fish está enviando a linha inicial..." msgid "fish: Handshaking version..." -msgstr "peixe: versão de handshake..." +msgstr "A versão de protocolo(handshacking) do fish..." msgid "fish: Getting host info..." -msgstr "fish: Obtendo informações do servidor ..." +msgstr "O fish está obtendo as informações do hospedeiro..." #, c-format msgid "fish: Reading directory %s..." -msgstr "peixe: Lendo diretório %s..." +msgstr "O fish está lendo o diretório %s..." #, c-format msgid "%s: done." -msgstr "%s: feito." +msgstr "%s: foi concluído com sucesso." #, c-format msgid "%s: failure" -msgstr "%s: falha" +msgstr "%s: falhou durante o processo" #, c-format msgid "fish: store %s: sending command..." -msgstr "peixe: armazenar %s: enviando comando..." +msgstr "O fish armazenou %s e está enviando o comando..." msgid "fish: Local read failed, sending zeros" -msgstr "peixe: leitura local falhou, enviando zeros" +msgstr "Ocorreu um erro no fish durante a leitura local e será enviado zeros" msgid "fish: storing file" -msgstr "fish: armazenando arquivos" +msgstr "O fish está armazenando o(s) arquivo(s)" msgid "Aborting transfer..." -msgstr "Abortando transferência..." +msgstr "Interrompendo a transferência..." msgid "Error reported after abort." -msgstr "Erro reportado depois de abortar." +msgstr "O erro foi reportado depois será finalizado." msgid "Aborted transfer would be successful." -msgstr "Transferência abortada poderia ser bem sucedida." +msgstr "A transferência foi interrompida, mas poderia ser bem sucedida." #, c-format msgid "ftpfs: Disconnecting from %s" -msgstr "ftpfs: Desconectando de %s" +msgstr "O ftpfs foi desconectando de %s" #, c-format msgid "FTP: Password required for %s" -msgstr "FTP: Senha necessária para %s" +msgstr "O FTP necessita de uma senha para %s" msgid "ftpfs: sending login name" -msgstr "ftpfs: enviando nome de login" +msgstr "O ftpfs está enviando o nome de usuário" msgid "ftpfs: sending user password" -msgstr "ftpfs: enviando senha do usuário" +msgstr "O ftpfs está enviando a senha do usuário" #, c-format msgid "FTP: Account required for user %s" -msgstr "FTP: Conta necessários para o usuário %s" +msgstr "O FTP necessita da conta do usuário para %s" msgid "Account:" msgstr "Conta:" msgid "ftpfs: sending user account" -msgstr "ftpfs: enviando a conta do usuário" +msgstr "O ftpfs está enviando a conta do usuário" msgid "ftpfs: logged in" -msgstr "ftpfs: logado" +msgstr "O ftpfs está autenticado" #, c-format msgid "ftpfs: Login incorrect for user %s " -msgstr "ftpfs: Login incorreto para usuário %s " +msgstr "A está autenticação do ftpfs não está correta para o usuário %s " msgid "ftpfs: Invalid host name." -msgstr "ftpfs: nome de host inválido." +msgstr "O nome do hospedeiro para o ftpfs não é válido." #, c-format msgid "ftpfs: %s" @@ -4153,87 +4344,112 @@ msgstr "ftpfs: %s" #, c-format msgid "ftpfs: making connection to %s" -msgstr "ftpfs: fazendo conexão para %s" +msgstr "O ftpfs está estabelecendo a conexão para %s" msgid "ftpfs: connection interrupted by user" -msgstr "ftpfs: conexão interrompida pelo usuário" +msgstr "A conexão do ftpfs foi interrompida pelo usuário" #, c-format msgid "ftpfs: connection to server failed: %s" -msgstr "ftpfs: conexão para o servidor falhou: %s" +msgstr "A conexão do ftpfs com o servidor falhou: %s" #, c-format msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +"Aguardando para tentar novamente... %d(pressione as teclas Control+G para " +"cancelar)" + +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" +"Não foi possível o ftpfs realizar a tradução do endereço para o nome: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" +"O ftpfs está realizando a tentativa de reconectar ao servidor, tentativa %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "Não foi possível o ftpfs obter o nome do soquete: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "Não foi possível o ftpfs reconectar ao servidor" msgid "ftpfs: invalid address family" -msgstr "ftpfs: família de endereço inválido" +msgstr "A família de endereço do ftpfs não é válida" #, c-format msgid "ftpfs: could not create socket: %s" -msgstr "ftpfs: não foi possível criar socket: %s" +msgstr "Não foi possível o ftpfs criar o soquete: %s" msgid "ftpfs: could not setup passive mode" -msgstr "ftpfs: não foi possível configurar modo passivo" +msgstr "Não foi possível o ftpfs configurar modo passivo" msgid "ftpfs: aborting transfer." -msgstr "ftpfs: abortando transferência." +msgstr "O ftpfs está interrompendo a transferência." #, c-format msgid "ftpfs: abort error: %s" -msgstr "ftpfs: erro: %s" +msgstr "Ocorreu um erro no ftpfs: %s" msgid "ftpfs: abort failed" -msgstr "ftpfs: cancelamento falhou" +msgstr "O ftpfs falhou ao ser interrompido" msgid "ftpfs: CWD failed." -msgstr "ftpfs: CWD falhou." +msgstr "O ftpfs falhou no CWD." msgid "ftpfs: couldn't resolve symlink" -msgstr "ftpfs: não é possível resolver ligação simbólica" +msgstr "Não é possível o ftpfs resolver a vínculo simbólico" msgid "Resolving symlink..." -msgstr "Resolvendo ligações simbólicas..." +msgstr "Resolvendo o vínculo simbólico..." #, c-format msgid "ftpfs: Reading FTP directory %s... %s%s" -msgstr "ftpfs: Lendo diretório FTP %s... %s%s" +msgstr "O ftpfs está lendo o diretório do FTP %s... %s%s" msgid "(strict rfc959)" -msgstr "(strict rfc959)" +msgstr "(rfc959 estrito)" msgid "(chdir first)" -msgstr "(chdir primeiro)" +msgstr "(primeiro o chdir)" msgid "ftpfs: failed; nowhere to fallback to" -msgstr "ftpfs: falha; não é possível voltar" +msgstr "Ocorreu uma falha no ftpfs e não é possível voltar" msgid "ftpfs: storing file" -msgstr "ftpfs: armazenando arquivos" +msgstr "O ftpfs está armazenando os arquivos" msgid "" "~/.netrc file has incorrect mode\n" "Remove password or correct mode" msgstr "" -"~ /.netrc possui modo incorreto\n" -"Remova senha ou ajuste modo " +"O arquivo ~ /.netrc possui o modo incorreto\n" +"Remova a senha ou corrija o modo" #, c-format msgid "" "SFS virtual file system:\n" "%s" msgstr "" +"Sistema de arquivos virtuais SFS:\n" +"%s" #, c-format msgid "%s: Warning: file %s not found\n" msgstr "" +"%s\n" +"Aviso:\n" +"O arquivo %s não foi encontrado\n" #, c-format msgid "" "Warning: Invalid line in %s:\n" "%s\n" msgstr "" -"Aviso: linha inválida em %s:\n" +"Aviso:\n" +"Existe uma linha que não é válida em %s:\n" "%s\n" #, c-format @@ -4241,42 +4457,47 @@ msgid "" "Warning: Invalid flag %c in %s:\n" "%s\n" msgstr "" -"Aviso: etiqueta %c inválida em %s:\n" +"Aviso:\n" +"O parâmetro %c não é válido em %s:\n" "%s\n" #, c-format msgid "sftp: an error occurred while reading %s: %s" -msgstr "" +msgstr "Ocorreu um erro no sftp durante a leitura de %s: %s" msgid "sftp: Unable to get current user name." -msgstr "" +msgstr "Não foi possível o sftp obter o nome de usuário atual." msgid "sftp: Invalid host name." -msgstr "" +msgstr "O nome do hospedeiro para o ftpfs não é válido." #, c-format msgid "sftp: %s" -msgstr "" +msgstr "sftp: %s" msgid "sftp: failed to convert remote host IP address into text form" msgstr "" +"O sftp falhou ao converter o endereço IP do hospedeiro remoto para o formato " +"de texto" #, c-format msgid "sftp: making connection to %s" -msgstr "" +msgstr "O sftp está fazendo a conexão com %s" msgid "sftp: connection interrupted by user" -msgstr "" +msgstr "A conexão do sftp foi interrompida pelo usuário" #, c-format msgid "sftp: connection to server failed: %s" -msgstr "" +msgstr "O sftp falhou na conexão com o servidor: %s" msgid "sftp: found host key of unsupported type: RSA1" msgstr "" +"A chave do hospedeiro do sftp foi encontrada em um formato que não é " +"suportado pelo RSA1" msgid "sftp: unknown host key type:" -msgstr "" +msgstr "O formato da chave do hospedeiro não é conhecida pelo sftp:" #, c-format msgid "" @@ -4284,15 +4505,22 @@ msgid "" "%s (%s)\n" "to the list of known hosts." msgstr "" +"Foi adicionado permanentemente\n" +"%s (%s)\n" +"à lista de hospedeiros conhecidos." msgid "sftp: cannot get the remote host key" -msgstr "" +msgstr "Não foi possível o sftp obter a chave do hospedeiro remoto" msgid "sftp: unsupported key type, can't check remote host key" msgstr "" +"O formato da chave não é suportado, não é possível o sftp verificar a chave " +"do hospedeiro remoto" msgid "sftp: can't compute host key fingerprint hash" msgstr "" +"Não foi possível o sftp processar o algoritmo da impressão digital da chave " +"do hospedeiro" #, c-format msgid "" @@ -4303,6 +4531,13 @@ msgid "" "SHA1:%s.\n" "Do you want to add it to the list of known hosts and continue connecting?" msgstr "" +"A autenticidade do hospedeiro\n" +"%s (%s)\n" +"não pode ser estabelecida!\n" +"O hash da impressão digital da chave %s é\n" +"SHA1:%s.\n" +"Você quer adicioná-lo à lista de hospedeiros conhecidos e continuar a " +"conexão?" #, c-format msgid "" @@ -4312,54 +4547,59 @@ msgid "" "Are you sure you want to add it to the list of known hosts and continue " "connecting?" msgstr "" +"%s (%s)\n" +"foi encontrado na lista de hospedeiros conhecidos, mas as\n" +"CHAVES NÃO CORRESPONDEM! ISTO PODE SER UM ATAQUE MITM!\n" +"Tem certeza de que deseja adicioná-lo à lista de hospedeiros conhecidos e " +"continuar conectando?" msgid "sftp: host key verification failed" -msgstr "" +msgstr "O sftp falhou na verificação da chave do hospedeiro" #, c-format msgid "sftp: Enter passphrase for %s " -msgstr "" +msgstr "Digite a senha do sftp para %s " msgid "sftp: Passphrase is empty." -msgstr "" +msgstr "A senha do sftp está vazia ou em branco." #, c-format msgid "sftp: Enter password for %s " -msgstr "" +msgstr "Insira a senha do sftp para %s " msgid "sftp: Password is empty." -msgstr "" +msgstr "A senha do sftp está vazia ou em branco." msgid "sftp: failure establishing SSH session" -msgstr "" +msgstr "O sftp falhou ao estabelecer a sessão do SSH" msgid "sftp: No file handler data present for reading file" -msgstr "" +msgstr "O sftp falhou ao estabelecer a sessão do SSH" #, c-format msgid "sftp: socket error: %s" -msgstr "" +msgstr "Ocorreu um erro no soquete do sftp: %s" #, c-format msgid "sftp: (Ctrl-G break) Listing... %s" -msgstr "" +msgstr "O sftp está listando (pressione as teclas Ctrl+G para pausar)... %s" msgid "sftp: Listing done." -msgstr "" +msgstr "A listagem do sftp foi concluída com sucesso." #, c-format msgid "" "Cannot open tar archive\n" "%s" msgstr "" -"Impossível abrir arquivo tar\n" +"Não foi possível abrir arquivo tar\n" "%s" msgid "Inconsistent tar archive" -msgstr "Arquivo inconsistente" +msgstr "O arquivo tar não é consistente" msgid "Unexpected EOF on archive file" -msgstr "Fim de arquivo inesperado" +msgstr "Ocorreu o fim inesperado do arquivo EOF (final do arquivo)" #, c-format msgid "" @@ -4367,16 +4607,16 @@ msgid "" "doesn't look like a tar archive." msgstr "" "%s\n" -"não parece ser um arquivo 'tar'." +"não parece ser um arquivo tar." msgid "undelfs: error" -msgstr "undelfs: erro" +msgstr "Ocorreu um erro no undelfs" msgid "not enough memory" -msgstr "memória insuficiente" +msgstr "A quantidade de memória não é suficiente" msgid "while allocating block buffer" -msgstr "ao alocar buffer de bloco" +msgstr "Ao alocar o bloco de buffer" #, c-format msgid "open_inode_scan: %d" @@ -4384,131 +4624,135 @@ msgstr "open_inode_scan: %d" #, c-format msgid "while starting inode scan %d" -msgstr "ao iniciar inode scan %d" +msgstr "Ao iniciar a análise do inode %d" #, c-format msgid "undelfs: loading deleted files information %d inodes" -msgstr "undelfs: carregando informação de arquivos excluídos inodes %d" +msgstr "" +"O undelfs está carregando as informações dos arquivos excluídos pelo inodes " +"%d" #, c-format msgid "while calling ext2_block_iterate %d" -msgstr "ao chamar ext2_block_iterate %d" +msgstr "Ao chamar ext2_block_iterate %d" msgid "no more memory while reallocating array" -msgstr "faltou memória enquanto realocando vetor" +msgstr "Faltou memória enquanto estava realocando o vetor" #, c-format msgid "while doing inode scan %d" -msgstr "enquanto fazendo scan de inode %d" +msgstr "Enquanto estava fazendo a análise do inode %d" #, c-format msgid "Cannot open file %s" -msgstr "Não foi possível abrir arquivo %s" +msgstr "Não foi possível abrir o arquivo %s" msgid "undelfs: reading inode bitmap..." -msgstr "undelfs: lendo mapa de bits do inode..." +msgstr "O undelfs está lendo o mapa de bits do inode..." #, c-format msgid "" "Cannot load inode bitmap from:\n" "%s" msgstr "" -"Não foi possível carregar bitmap inode de:\n" +"Não foi possível carregar o mapa de bits do inode de:\n" "%s" msgid "undelfs: reading block bitmap..." -msgstr "undelfs: lendo mapa de bits do bloco..." +msgstr "O undelfs está lendo o mapa de bits do bloco..." #, c-format msgid "" "Cannot load block bitmap from:\n" "%s" msgstr "" -"Não foi possível carregar bitmap bloco de:\n" +"Não foi possível carregar o mapa de bits do bloco de:\n" "%s" msgid "vfs_info is not fs!" -msgstr "vfs_info não é fs!" +msgstr "O vfs_info não é o fs!" msgid "You have to chdir to extract files first" -msgstr "Você tem que executar chdir para extrair arquivos primeiro" +msgstr "Você tem que executar o chdir para extrair os arquivos primeiro" msgid "while iterating over blocks" -msgstr "enquanto houver iteração sobre blocos" +msgstr "Enquanto se faz a iteração sobre os blocos" #, c-format msgid "Cannot open file \"%s\"" -msgstr "Não foi possível arquivo arquivo \"%s\"" +msgstr "Não foi possível abrir o arquivo \"%s\"" msgid "Ext2lib error" -msgstr "erro de Ext2lib" +msgstr "Ocorreu um erro no Ext2lib" msgid "Invalid value" -msgstr "" +msgstr "O valor não é válido" msgid "File was modified. Save with exit?" -msgstr "Arquivo foi modificado. Salvar e sair?" +msgstr "O arquivo foi modificado. Você quer salvar e sair?" msgid "&Cancel quit" -msgstr "&Cancelar saida" +msgstr "&Cancelar a saída" msgid "" "Midnight Commander is being shut down.\n" "Save modified file?" msgstr "" -"Midnight Commander está sendo finalizado.\n" -"Salvar arquivo modificado?" +"O Midnight Commander está sendo finalizado.\n" +"Você quer salvar as modificações do arquivo?" msgid "&Line number" -msgstr "" +msgstr "&Número da linha" msgid "Pe&rcents" -msgstr "" +msgstr "Po&rcentagens" msgid "&Decimal offset" -msgstr "" +msgstr "Compensação &decimal" msgid "He&xadecimal offset" -msgstr "" +msgstr "Compensação he&xadecimal" msgid "Goto" -msgstr "Vai Para" +msgstr "Ir para" msgid "ButtonBar|Ascii" msgstr "ButtonBar|Ascii" msgid "ButtonBar|HxSrch" -msgstr "ButtonBar|HxSrch" +msgstr "ButtonBar|Pesquisar hexadecimal" msgid "ButtonBar|UnWrap" -msgstr "" +msgstr "ButtonBar|Desenrolar" msgid "ButtonBar|Wrap" -msgstr "" +msgstr "ButtonBar|Enrolar" msgid "ButtonBar|Hex" -msgstr "" +msgstr "ButtonBar|Hexadecimal" msgid "ButtonBar|Goto" -msgstr "" +msgstr "ButtonBar|Ir para" msgid "ButtonBar|Raw" -msgstr "" +msgstr "ButtonBar|Bruto" msgid "ButtonBar|Parse" -msgstr "" +msgstr "ButtonBar|Analisar" msgid "ButtonBar|Unform" -msgstr "" +msgstr "ButtonBar|Desenformar" msgid "ButtonBar|Format" -msgstr "" +msgstr "ButtonBar|Formatar" #, c-format msgid "" "Failed to read data from child stdout:\n" "%s" msgstr "" +"Falha ao ler os dados do stdout filho:\n" +"%s" #, c-format msgid "" @@ -4516,36 +4760,45 @@ msgid "" "%s\n" "Data may have been written or not" msgstr "" +"Ocorreu um erro ao fechar o arquivo:\n" +"%s\n" +"Os dados podem ter sido escritos ou não" #, c-format msgid "" "Cannot save file:\n" "%s" msgstr "" +"Não foi possível salvar o arquivo:\n" +"%s" msgid "View: " -msgstr "" +msgstr "Visualizar:" #, c-format msgid "" "Cannot open \"%s\"\n" "%s" msgstr "" +"Não foi possível abrir \"%s\"\n" +"%s" msgid "Cannot view: not a regular file" -msgstr "" +msgstr "Não é possível visualizar porque não é um arquivo normal" #, c-format msgid "" "Cannot open \"%s\" in parse mode\n" "%s" msgstr "" +"Não foi possível abrir \"%s\" no modo de análise\n" +"%s" msgid "Search done" -msgstr "" +msgstr "A pesquisa foi concluída com sucesso" msgid "Continue from beginning?" -msgstr "" +msgstr "Você quer continuar a partir do início?" msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt" -msgstr "" +msgstr "Não foi possível obter uma cópia local do /ftp://some.host/editme.txt" diff --git a/mcsrc/po/ro.po b/mcsrc/po/ro.po index aab1522d..37921104 100644 --- a/mcsrc/po/ro.po +++ b/mcsrc/po/ro.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Simona Iacob , 2021-2022\n" "Language-Team: Romanian (http://www.transifex.com/mc/mc/language/ro/)\n" @@ -537,6 +537,9 @@ msgstr "" "Eroare neaÈ™teptată în select() se accesează datele dintr-un proces copil :\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Nu se poate închide descriptorul de È›eavă (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1215,9 +1218,10 @@ msgstr "Mai întâi trebuie să evidenÈ›iezi un bloc de text" msgid "Run sort" msgstr "Rulează sortarea" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Introdu opÈ›iunile de sortare (vezi pagina de manual) separate prin spaÈ›iu:" +"IntroduceÈ›i opÈ›iunile de sortare (a se vedea pagina(1) de manual sort) " +"separate prin spaÈ›ii albe:" msgid "Sort" msgstr "Sortare" @@ -1634,7 +1638,7 @@ msgstr "" "creat pentru Midnight Commander." msgid "Copyright (C) 1996-2022 the Free Software Foundation" -msgstr "" +msgstr "Copyright (C) 1996-2022 FundaÈ›ia pentru Software Liber" msgid "About" msgstr "Despre" @@ -2377,12 +2381,6 @@ msgstr "Există fiÈ™iere marcate, doriÈ›i să cd?" msgid "Cannot change directory" msgstr "Nu pot deschide directorul %s" -msgid "Filter" -msgstr "Filtru" - -msgid "Set expression for filtering filenames" -msgstr "FoloseÈ™te expresia pentru filtrarea numelor de fiÈ™iere" - #, c-format msgid "Link %s to:" msgstr "Leagă %s la:" @@ -2529,18 +2527,29 @@ msgstr "" msgid "Pipe failed" msgstr "Pipe a eÈ™uat" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"AveÈ›i un fiÈ™ier neactualizat %s.\n" +"Midnight Commander foloseÈ™te acum %s fiÈ™ierul.\n" +"Vă rugăm să copiaÈ›i modificările din fiÈ™ierul vechi în cel nou." + #, c-format msgid " %s%s file error" msgstr " %s%s eroare fiÈ™ier" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Formatul fiÈ™ierului %smc.ext a fost schimbat în versiunea 3.0. Se pare că " -"instalarea a eÈ™uat. Te rog să obÈ›ii o copie din pachetul Midnight Commander." +"Formatul fiÈ™ierului %s%s s-a schimbat odată cu versiunea 4.0. Se pare că " +"instalarea a eÈ™uat. Vă rugăm să obÈ›ineÈ›i o copie nouă din pachetul Midnight " +"Commander." #, c-format msgid "%s file error" @@ -2548,11 +2557,12 @@ msgstr "%s eroare fiÈ™ier" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Formatul fiÈ™ierului %s a fost schimbat în versiunea 3.0. Vei putea să îl " -"copiezi din %smc.ext sau poÈ›i folosi acel fiÈ™ier ca exemplu." +"Formatul fiÈ™ierului %s s-a schimbat odată cu versiunea 4.0. Este posibil să " +"doriÈ›i să îl copiaÈ›i de la%s%s sau să utilizaÈ›i acest fiÈ™ier ca exemplu de " +"scriere." msgid "DialogTitle|Copy" msgstr "DialogTitle|Copiere" @@ -2846,6 +2856,15 @@ msgstr "" msgid "(stalled)" msgstr "(oprit)" +msgid "Incomplete file was retrieved" +msgstr "A fost recuperat un fiÈ™ier incomplet" + +msgid "&Keep" +msgstr "&Păstrează" + +msgid "&Continue copy" +msgstr "&ContinuaÈ›i să copiaÈ›i" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2862,12 +2881,6 @@ msgstr "" "Nu se poate închide fiÈ™ierul destinaÈ›ie \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "FiÈ™ierul a fost transferat incomplet. ÃŽl păstrez?" - -msgid "&Keep" -msgstr "&Păstrează" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2986,8 +2999,8 @@ msgid "Background process: File exists" msgstr "Sarcină în fundal: FiÈ™ierul există" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "FiÈ™iere procesate: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "FiÈ™iere prelucrate: %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3014,8 +3027,8 @@ msgid " Total: %s " msgstr " Total: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Total: %s/%s " +msgid " Total: %s / %s " +msgstr " Total: %s / %s " msgid "Source" msgstr "Sursă" @@ -3066,8 +3079,8 @@ msgstr "Arbore" msgid "&Listing format..." msgstr "formatul de &listare " -msgid "S&ort order..." -msgstr "S&ortează ordinea..." +msgid "&Sort order..." +msgstr "&Ordinea de sortare..." msgid "&Filter..." msgstr "&Filtru..." @@ -3081,8 +3094,8 @@ msgstr "Conectare FT&P..." msgid "S&hell link..." msgstr "Conectare s&hell..." -msgid "&SFTP link..." -msgstr "&SFTP legătură..." +msgid "SFTP li&nk..." +msgstr "SFTP li&nk..." msgid "Paneli&ze" msgstr "Paneli&zare" @@ -3466,8 +3479,8 @@ msgid "No space information" msgstr "Nu există date despre spaÈ›iul folosit" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "SpaÈ›iu liber: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "SpaÈ›iul liber: %s / %s (%d%%)" #, c-format msgid "Type: %s" @@ -3713,6 +3726,9 @@ msgstr "Selectează" msgid "Unselect" msgstr "Deselectează" +msgid "Filter" +msgstr "Filtru" + msgid "Do you really want to execute?" msgstr "Chiar doreÈ™ti să execuÈ›i?" @@ -4025,7 +4041,7 @@ msgstr "Construit cu ncursesw (versiune necunoscută)" #, c-format msgid "Built with libssh2 %d.%d.%d\n" -msgstr "" +msgstr "Construit cu libssh2 %d.%d.%d\n" msgid "Virtual File Systems:" msgstr "Sistem virtual de fiÈ™iere:" @@ -4152,6 +4168,10 @@ msgstr "" "SfârÈ™it de fiÈ™ier (EOF) neaÈ™teptat\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Arhivă tar trunchiată" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4286,6 +4306,21 @@ msgstr "ftpfs: conectarea la server a eÈ™uat: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Se reîncearcă... %d (Control-G pentru a renunÈ›a)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: nu a putut face traducerea de la adresă la nume: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: încercaÈ›i să vă reconectaÈ›i la server, încercaÈ›i %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: nu a putut obÈ›ine numele socket-ului: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: nu s-a putut reconecta la server" + msgid "ftpfs: invalid address family" msgstr "ftpfs: familie de adrese incorectă" diff --git a/mcsrc/po/ru.po b/mcsrc/po/ru.po index ac2b00f3..e92c4008 100644 --- a/mcsrc/po/ru.po +++ b/mcsrc/po/ru.po @@ -7,6 +7,7 @@ # AlexL , 2015-2020 # Alex Tkachenko , 1998 # and Alex Tkachenko , 1998 +# Andrei Stepanov, 2023 # Andrew Borodin , 2009-2012 # Andrew V. Samoilov , 1999,2014 # Anton Sergeevich Chumak , 2005 @@ -16,6 +17,7 @@ # Mr GreyWolf, 2016 # Mr.GreyWolf, 2016 # NaiLi (aka jamesjames) Rootaerc , 2012 +# Pavel Suravezhkin, 2022 # Piotr DrÄ…g , 2018 # Sergey Panov , 1999 # Simple88, 2016 @@ -25,18 +27,18 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Piotr DrÄ…g , 2018\n" +"Last-Translator: Andrei Stepanov, 2023\n" "Language-Team: Russian (http://www.transifex.com/mc/mc/language/ru/)\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -551,6 +553,9 @@ msgstr "" "ÐÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в select() при чтении данных из дочернего процеÑÑа:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1232,8 +1237,8 @@ msgstr "Ð’Ñ‹ должны Ñначала выделить блок текÑта" msgid "Run sort" msgstr "Выполнить Ñортировку" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Введите параметры Ñортировки (man sort(1)), разделённые пробелами:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "Введите параметры Ñортировки (Ñм. man sort(1)), разделённые пробелами:" msgid "Sort" msgstr "Сортировка" @@ -1815,8 +1820,8 @@ msgid "" "Not an xterm or Linux console;\n" "the subshell cannot be toggled." msgstr "" -"Это не xterm и не конÑоль Linux;\n" -"панели не могут быть отключены." +"Это не конÑоль xterm или Linux;\n" +"подоболочка не может быть переключена." msgid "Type 'exit' to return to the Midnight Commander" msgstr "Введите exit Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° в Midnight Commander" @@ -2192,79 +2197,79 @@ msgstr "" "%s" msgid "Secure deletion" -msgstr "" +msgstr "Ðадёжное удаление" msgid "Undelete" -msgstr "" +msgstr "ВоÑÑтановить" msgid "Synchronous updates" -msgstr "" +msgstr "Синхронные обновлениÑ" msgid "Synchronous directory updates" -msgstr "" +msgstr "Синхронные Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°" msgid "Immutable" -msgstr "" +msgstr "Ðеизменный" msgid "Append only" -msgstr "" +msgstr "Только добавить" msgid "No dump" -msgstr "" +msgstr "Дампа нет" msgid "No update atime" -msgstr "" +msgstr "Без Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ atime" msgid "Compress" -msgstr "" +msgstr "Сжатие" msgid "Compressed clusters" -msgstr "" +msgstr "Сжатые клаÑтеры" msgid "Compressed dirty file" -msgstr "" +msgstr "Сжатый неÑохранённый файл" msgid "Compression raw access" -msgstr "" +msgstr "Сжатие необработанного доÑтупа" msgid "Encrypted inode" -msgstr "" +msgstr "Зашифрованный inode" msgid "Journaled data" -msgstr "" +msgstr "Добавленные в журнал данные" msgid "Indexed directory" -msgstr "" +msgstr "ПроиндекÑированный каталог" msgid "No tail merging" -msgstr "" +msgstr "Без ÑлиÑÐ½Ð¸Ñ Ð² конец" msgid "Top of directory hierarchies" -msgstr "" +msgstr "Верх иерархии каталога" msgid "Inode uses extents" -msgstr "" +msgstr "Inode иÑпользует ÑкÑтенты" msgid "Huge_file" -msgstr "" +msgstr "Огромный_файл" msgid "No COW" -msgstr "" +msgstr "Без COW" msgid "Direct access for files" -msgstr "" +msgstr "ПрÑмой доÑтуп Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²" msgid "Casefolded file" -msgstr "" +msgstr "Файл Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ региÑтра" msgid "Inode has inline data" -msgstr "" +msgstr "Inode имеет вÑтроенные данные" msgid "Project hierarchy" -msgstr "" +msgstr "Ð˜ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°" msgid "Verity protected inode" -msgstr "" +msgstr "ИÑтинноÑÑ‚ÑŒ защищённого inode" msgid "&Marked all" msgstr "Отметить вÑ&Ñ‘" @@ -2294,6 +2299,8 @@ msgid "" "Cannot get flags of \"%s\"\n" "%s" msgstr "" +"Ðевозможно получить флаги \"%s\"\n" +"%s" msgid "set &user ID on execution" msgstr "приÑв. &UID при выполнении" @@ -2391,12 +2398,6 @@ msgstr "Файлы помечены, Ñменить каталог?" msgid "Cannot change directory" msgstr "Ðе удалоÑÑŒ Ñменить каталог" -msgid "Filter" -msgstr "Фильтр" - -msgid "Set expression for filtering filenames" -msgstr "Задайте выражение Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° имен файлов" - #, c-format msgid "Link %s to:" msgstr "Создать ÑÑылку Ñ %s на:" @@ -2543,18 +2544,23 @@ msgstr "" msgid "Pipe failed" msgstr "Сбой канала" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "ошибка файла %s%s" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Формат %smc.ext изменён Ñ Ð²ÐµÑ€Ñии 3.0. Возможно, произошёл Ñбой при " -"уÑтановке. ПожалуйÑта, возьмите Ñвежую копию из пакета Midnight Commander." #, c-format msgid "%s file error" @@ -2562,11 +2568,9 @@ msgstr "ошибка файла %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Формат файла %s изменён Ñ Ð²ÐµÑ€Ñии 3.0. Ð’Ñ‹ можете либо Ñкопировать его Ñ %s/mc." -"ext, либо иÑпользовать Ñтот файл как пример и напиÑать Ñвой." msgid "DialogTitle|Copy" msgstr "Копирование" @@ -2861,6 +2865,15 @@ msgstr "" msgid "(stalled)" msgstr "(заÑÑ‚Ñ€Ñл)" +msgid "Incomplete file was retrieved" +msgstr "Был получен неполный файл" + +msgid "&Keep" +msgstr "&Сохранить" + +msgid "&Continue copy" +msgstr "&Продолжить копирование" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2877,12 +2890,6 @@ msgstr "" "Ðе удалоÑÑŒ закрыть целевой файл \"%s\"\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Был получен неполный файл. Сохранить?" - -msgid "&Keep" -msgstr "&Сохранить" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -3001,7 +3008,7 @@ msgid "Background process: File exists" msgstr "Фоновый процеÑÑ: файл ÑущеÑтвует" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "Обработано файлов: %zu/%zu" #, c-format @@ -3029,7 +3036,7 @@ msgid " Total: %s " msgstr " Ð’Ñего: %s " #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr " Ð’Ñего: %s/%s " msgid "Source" @@ -3081,8 +3088,8 @@ msgstr "Дерев&о" msgid "&Listing format..." msgstr "Фор&мат ÑпиÑка..." -msgid "S&ort order..." -msgstr "ПорÑдок &Ñортировки..." +msgid "&Sort order..." +msgstr "ПорÑдок &Ñортировки…" msgid "&Filter..." msgstr "&Фильтр..." @@ -3096,8 +3103,8 @@ msgstr "&FTP-Ñоединение..." msgid "S&hell link..." msgstr "S&hell-Ñоединение..." -msgid "&SFTP link..." -msgstr "&SFTP-Ñоединение..." +msgid "SFTP li&nk..." +msgstr "SFTP-Ñоед&инение…" msgid "Paneli&ze" msgstr "Па&нелизациÑ" @@ -3313,7 +3320,7 @@ msgid "&Find recursively" msgstr "Ðайти ре&курÑивно" msgid "Follow s&ymlinks" -msgstr "" +msgstr "Следуйте s&ymlinks" msgid "S&kip hidden" msgstr "ПропуÑкать Ñкр&ытые" @@ -3483,7 +3490,7 @@ msgid "No space information" msgstr "Ðет информации о проÑтранÑтве" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "Своб. меÑто: %s/%s (%d%%)" #, c-format @@ -3732,6 +3739,9 @@ msgstr "Отметить группу" msgid "Unselect" msgstr "СнÑÑ‚ÑŒ отметку" +msgid "Filter" +msgstr "Фильтр" + msgid "Do you really want to execute?" msgstr "Ð’Ñ‹ дейÑтвительно хотите выполнить Ñто?" @@ -3764,6 +3774,8 @@ msgid "" "External panelize:\n" "%s" msgstr "" +"Внешнее панелизирование:\n" +"%s" #, c-format msgid "" @@ -3771,9 +3783,14 @@ msgid "" "failed to read data from child stdout:\n" "%s" msgstr "" +"Внешнее панелизирование:\n" +"не удалоÑÑŒ прочитать данные из дочернего stdout:\n" +"%s" msgid "Cannot run external panelize in a non-local directory" -msgstr "Ðе удалоÑÑŒ выполнить Ñту команду, находÑÑÑŒ не в локальном каталоге" +msgstr "" +"Ðевозможно выполнить внешнее панелизирование, находÑÑÑŒ не в локальном " +"каталоге" msgid "Modified git files" msgstr "Изменённые файлы под контролем git" @@ -4011,7 +4028,7 @@ msgid "With multiple codepages support" msgstr "С поддержкой многих кодировок" msgid "With ext2fs attributes support" -msgstr "" +msgstr "С поддержкой ext2fs атрибутов" #, c-format msgid "Built with GLib %d.%d.%d\n" @@ -4165,18 +4182,27 @@ msgstr "" "Ðеожиданный конец файла\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "ÐеÑоглаÑованный архив tar" + #, c-format msgid "" "Cannot open %s archive\n" "%s:\n" "%s" msgstr "" +"Ðевозможно открыть %s архив\n" +"%s:\n" +"%s" #, c-format msgid "" "EXTFS virtual file system:\n" "%s" msgstr "" +"EXTFS Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема:\n" +"%s" #, c-format msgid "Warning: cannot open %s directory\n" @@ -4292,6 +4318,21 @@ msgstr "ftpfs: Ñбой ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñервером: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Ожидание повтора попытки... %d (Control-G Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: не удалоÑÑŒ переподключитьÑÑ Ðº Ñерверу" + msgid "ftpfs: invalid address family" msgstr "ftpfs: неверный Ð°Ð´Ñ€ÐµÑ ÑиÑтемы." @@ -4349,6 +4390,8 @@ msgid "" "SFS virtual file system:\n" "%s" msgstr "" +"SFS Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема:\n" +"%s" #, c-format msgid "%s: Warning: file %s not found\n" @@ -4386,6 +4429,7 @@ msgstr "sftp: %s" msgid "sftp: failed to convert remote host IP address into text form" msgstr "" +"sftp: не удалоÑÑŒ преобразовать IP-Ð°Ð´Ñ€ÐµÑ ÑƒÐ´Ð°Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ хоÑта в текÑтовую форму" #, c-format msgid "sftp: making connection to %s" @@ -4399,10 +4443,10 @@ msgid "sftp: connection to server failed: %s" msgstr "sftp: Ñбой ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñервером: %s" msgid "sftp: found host key of unsupported type: RSA1" -msgstr "" +msgstr "sftp: найден ключ хоÑта неподдерживаемого типа: RSA1" msgid "sftp: unknown host key type:" -msgstr "" +msgstr "sftp: неизвеÑтный тип ключа хоÑта:" #, c-format msgid "" @@ -4410,15 +4454,19 @@ msgid "" "%s (%s)\n" "to the list of known hosts." msgstr "" +"Добавлено на поÑтоÑнной оÑнове\n" +"%s (%s)\n" +"к ÑпиÑку извеÑтных хоÑтов." msgid "sftp: cannot get the remote host key" -msgstr "" +msgstr "sftp: невозможно получить ключ удаленного хоÑта" msgid "sftp: unsupported key type, can't check remote host key" msgstr "" +"sftp: неподдерживаемый тип ключа, невозможно проверить ключ удаленного хоÑта" msgid "sftp: can't compute host key fingerprint hash" -msgstr "" +msgstr "sftp: невозможно вычиÑлить Ñ…Ñш отпечатка ключа хоÑта" #, c-format msgid "" @@ -4429,6 +4477,12 @@ msgid "" "SHA1:%s.\n" "Do you want to add it to the list of known hosts and continue connecting?" msgstr "" +"ПодлинноÑÑ‚ÑŒ хоÑта\n" +"%s (%s)\n" +"не может быть уÑтановлена!\n" +"%s Ñ…Ñш отпечатка ключа\n" +"SHA1:%s.\n" +"Ð’Ñ‹ хотите добавить его в ÑпиÑок извеÑтных хоÑтов и продолжить подключение?" #, c-format msgid "" @@ -4438,9 +4492,14 @@ msgid "" "Are you sure you want to add it to the list of known hosts and continue " "connecting?" msgstr "" +"%s (%s)\n" +"найден в ÑпиÑке извеÑтных хоÑтов, но\n" +"КЛЮЧИ ÐЕ СОВПÐДÐЮТ! ЭТО МОЖЕТ БЫТЬ MITM ÐТÐКОЙ!\n" +"Ð’Ñ‹ уверены, что хотите добавить его в ÑпиÑок извеÑтных хоÑтов и продолжить " +"подключение?" msgid "sftp: host key verification failed" -msgstr "" +msgstr "sftp: проверка ключа хоÑта не удалаÑÑŒ" #, c-format msgid "sftp: Enter passphrase for %s " @@ -4457,7 +4516,7 @@ msgid "sftp: Password is empty." msgstr "sftp: пароль пуÑÑ‚." msgid "sftp: failure establishing SSH session" -msgstr "" +msgstr "sftp: Ñбой при уÑтановлении SSH ÑеÑÑии" msgid "sftp: No file handler data present for reading file" msgstr "sftp: нет обработчика Ñчитываемого файла" diff --git a/mcsrc/po/sk.po b/mcsrc/po/sk.po index 4acb5c96..7950813c 100644 --- a/mcsrc/po/sk.po +++ b/mcsrc/po/sk.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: hualahyja, 2019\n" "Language-Team: Slovak (http://www.transifex.com/mc/mc/language/sk/)\n" @@ -529,6 +529,9 @@ msgstr "" "NeoÄakávaná chyba v select() pri Äítaní dát z procesu potomka:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1205,10 +1208,8 @@ msgstr "Musíte zvýrazniÅ¥ blok textu" msgid "Run sort" msgstr "SpustiÅ¥ zoradenie" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Zadajte možnosti zoradenia (pozri manuálovú stránku) oddelené netlaÄiteľnými " -"znakmi:" msgid "Sort" msgstr "ZoradiÅ¥" @@ -2362,12 +2363,6 @@ msgstr "Súbory oznaÄené, chcete cd?" msgid "Cannot change directory" msgstr "Nepodarilo sa zmeniÅ¥ adresár" -msgid "Filter" -msgstr "Filter" - -msgid "Set expression for filtering filenames" -msgstr "NastaviÅ¥ výraz na filtrovanie názvov súborov" - #, c-format msgid "Link %s to:" msgstr "OdkazovaÅ¥ %s na:" @@ -2514,18 +2509,23 @@ msgstr "" msgid "Pipe failed" msgstr "Pipe zlyhalo" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s chyba v súbore" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Formát súboru %smc.ext sa vo verzii 3.0 zmenil. Zdá sa, že inÅ¡talácia " -"zlyhala. Prosím, stiahnite si novú kópiu z balíka Midnight Commander." #, c-format msgid "%s file error" @@ -2533,12 +2533,9 @@ msgstr "chýba súboru %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Formát súboru %smc.ext sa vo verzii 3.0 zmenil. Mali by ste si ho buÄ " -"skopírovaÅ¥ z %smc.ext alebo použiÅ¥ tento súbor ako príklad na jeho " -"vytvorenie." msgid "DialogTitle|Copy" msgstr "DialogTitle|KopírovaÅ¥" @@ -2829,6 +2826,15 @@ msgstr "" msgid "(stalled)" msgstr "(zastavený)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "Po&nechaÅ¥" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2845,12 +2851,6 @@ msgstr "" "Nemožno zatvoriÅ¥ cieľový súbor „%s“\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Bol získaný neúplný súbor. PonechaÅ¥ ho?" - -msgid "&Keep" -msgstr "Po&nechaÅ¥" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2969,8 +2969,8 @@ msgid "Background process: File exists" msgstr "Proces na pozadí: Súbor už existuje" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Spracovaných súborov: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2997,8 +2997,8 @@ msgid " Total: %s " msgstr " Celkom: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Celkom: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Zdroj" @@ -3049,7 +3049,7 @@ msgstr "&Strom" msgid "&Listing format..." msgstr "&Formát výpisu..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3064,7 +3064,7 @@ msgstr "&Pripojenie FTP..." msgid "S&hell link..." msgstr "Pripojenie s&hell..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3451,8 +3451,8 @@ msgid "No space information" msgstr "Žiadne informácie o mieste" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Voľné miesto: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3700,6 +3700,9 @@ msgstr "VybraÅ¥" msgid "Unselect" msgstr "ZruÅ¡iÅ¥ výber" +msgid "Filter" +msgstr "Filter" + msgid "Do you really want to execute?" msgstr "SkutoÄne chcete spustiÅ¥?" @@ -4132,6 +4135,10 @@ msgstr "" "NeoÄakávaný koniec súboru\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "PoÅ¡kodený archív .tar" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4259,6 +4266,21 @@ msgstr "ftpfs: pripojenie k serveru neúspeÅ¡né: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "ÄŒaká sa pred opakovaným pokusom... %d (Ctrl-G zruší)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: neplatná rodina adries" diff --git a/mcsrc/po/sl.po b/mcsrc/po/sl.po index 0775d34c..59b5bf6f 100644 --- a/mcsrc/po/sl.po +++ b/mcsrc/po/sl.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Matej UrbanÄiÄ <>, 2012\n" "Language-Team: Slovenian (http://www.transifex.com/mc/mc/language/sl/)\n" @@ -18,8 +18,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" -"%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3);\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -513,6 +513,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1136,7 +1139,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2271,12 +2274,6 @@ msgstr "Datoteke oznaÄene, želite spremeniti imenik" msgid "Cannot change directory" msgstr "Ne morem spremeniti imenika" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "Poveži %s na:" @@ -2417,14 +2414,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2434,8 +2438,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2670,6 +2674,15 @@ msgstr "" msgid "(stalled)" msgstr "(zastoj)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Obdrži" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2682,12 +2695,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Datoteka je bila preneÅ¡ena nepopolno. Naj ostane?" - -msgid "&Keep" -msgstr "&Obdrži" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2794,7 +2801,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2822,7 +2829,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2874,7 +2881,7 @@ msgstr "&Drevo" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2889,7 +2896,7 @@ msgstr "FT&P povezava..." msgid "S&hell link..." msgstr "&Lupinska povezava..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3272,7 +3279,7 @@ msgid "No space information" msgstr "Ni podatkov o prostoru" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3521,6 +3528,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3940,6 +3950,10 @@ msgstr "" "NepriÄakovan konec datoteke\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Nekonsistenten tar arhiv" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4068,6 +4082,21 @@ msgstr "ftpfs: povezava do strežnika ni bila uspeÅ¡na: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/sr.po b/mcsrc/po/sr.po index c3a7653c..a00b9d48 100644 --- a/mcsrc/po/sr.po +++ b/mcsrc/po/sr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Slava Zanko , 2011\n" "Language-Team: Serbian (http://www.transifex.com/mc/mc/language/sr/)\n" @@ -17,8 +17,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" # "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "Warning: cannot load codepages list" @@ -517,6 +517,9 @@ msgstr "" "Ðеочекивана грешка у функцији бирања података за читање из потпроцеÑа:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1192,8 +1195,8 @@ msgstr "Морате прво да изаберете блок текÑта" msgid "Run sort" msgstr "Покрени ређање" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "УнеÑите опције ређања (видите Ñтранице упутÑтва) одвојене празнинама:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Поређај" @@ -2347,12 +2350,6 @@ msgstr "Датотеке Ñу означене, желите ли да пром msgid "Cannot change directory" msgstr "Ðе могу да променим директоријум" -msgid "Filter" -msgstr "ПропуÑник" - -msgid "Set expression for filtering filenames" -msgstr "ПоÑтавите израз за издвајање назива датотека" - #, c-format msgid "Link %s to:" msgstr "Повежите „%s“ Ñа:" @@ -2499,18 +2496,23 @@ msgstr "" msgid "Pipe failed" msgstr "Сојка није уÑпела" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s грешка датотеке" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Ð—Ð°Ð¿Ð¸Ñ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ „%smc.ext“ је измењен издањем 3.0. Изгледа да инÑталација " -"није уÑпела. Ðабавите најновији примерак из пакета Поноћног наредника." #, c-format msgid "%s file error" @@ -2518,11 +2520,9 @@ msgstr "Грешка датотеке „%s“" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Ð—Ð°Ð¿Ð¸Ñ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ „%s“ је измењен издањем 3.0. Можда желите да је умножите из " -"„%smc.ext“ или да кориÑтите ту датотеку као пример како је запиÑати." msgid "DialogTitle|Copy" msgstr "Умножите" @@ -2807,6 +2807,15 @@ msgstr "" msgid "(stalled)" msgstr "(заÑтој)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Задржи" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2823,12 +2832,6 @@ msgstr "" "Ðе могу да затворим циљну датотеку „%s“\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Датотека није у потпуноÑти преузета. Да је задржим?" - -msgid "&Keep" -msgstr "&Задржи" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2947,8 +2950,8 @@ msgid "Background process: File exists" msgstr "ПозадинÑки процеÑ: Датотека поÑтоји" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Обрађене датотеке: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2975,8 +2978,8 @@ msgid " Total: %s " msgstr " Укупно: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Укупно: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Извор" @@ -3027,7 +3030,7 @@ msgstr "&Стабло" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3042,7 +3045,7 @@ msgstr "&ФТП веза..." msgid "S&hell link..." msgstr "Веза &љуÑке..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3427,8 +3430,8 @@ msgid "No space information" msgstr "Ðема података о проÑтору" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Слободан проÑтор: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3674,6 +3677,9 @@ msgstr "Изаберите" msgid "Unselect" msgstr "Поништите избор" +msgid "Filter" +msgstr "ПропуÑник" + msgid "Do you really want to execute?" msgstr "Да ли Ñтварно желите да извршите?" @@ -4105,6 +4111,10 @@ msgstr "" "Ðеочекивани крај датотеке\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "ÐедоÑледна тар архива" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4232,6 +4242,21 @@ msgstr "ftpfs: повезивање Ñа Ñервером није уÑпело: msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Чекам да бих поново покушао... %d (Ктрл-Г да откажете)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: неиÑправна породица адреÑе" diff --git a/mcsrc/po/sv.po b/mcsrc/po/sv.po index 4b1eeb3f..41987035 100644 --- a/mcsrc/po/sv.po +++ b/mcsrc/po/sv.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Alexander Kilian , 2022\n" "Language-Team: Swedish (http://www.transifex.com/mc/mc/language/sv/)\n" @@ -532,6 +532,9 @@ msgstr "" "Oväntat fel i select() under läsning av data frÃ¥n en barnprocess:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1210,8 +1213,8 @@ msgstr "Du mÃ¥ste först markera ett textblock" msgid "Run sort" msgstr "Kör sortering" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Mata in sorteringsflaggor (se man-sidan) separerade av blanksteg:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "Sortera" @@ -2367,12 +2370,6 @@ msgstr "Filerna är markerade, vill du byta katalog?" msgid "Cannot change directory" msgstr "Kan inte byta katalog" -msgid "Filter" -msgstr "Filter" - -msgid "Set expression for filtering filenames" -msgstr "Ange uttryck för filnamnsfiltrering" - #, c-format msgid "Link %s to:" msgstr "Länka %s till:" @@ -2519,19 +2516,23 @@ msgstr "" msgid "Pipe failed" msgstr "Tunnel misslyckades" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s filfel" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Formatet pÃ¥ filen %smc.ext har ändrats i version 3.0. Det verkar som att " -"installationen har misslyckats. Hämta en ny kopia frÃ¥n Midnight Commander-" -"paketet." #, c-format msgid "%s file error" @@ -2539,11 +2540,9 @@ msgstr "%s filfel" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Formatet pÃ¥ filen %s har ändrats i version 3.0. Du kan antingen kopiera den " -"frÃ¥n %smc.ext eller använda den filen som mall för hur den ska se ut." msgid "DialogTitle|Copy" msgstr "DialogTitle|Kopiera" @@ -2837,6 +2836,15 @@ msgstr "" msgid "(stalled)" msgstr "(avstannad)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&BehÃ¥ll" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2853,12 +2861,6 @@ msgstr "" "Stängning av mÃ¥lfilen \"%s\" misslyckades\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Den Ã¥terhämtade filen är ofullständig. BehÃ¥ll den ändÃ¥?" - -msgid "&Keep" -msgstr "&BehÃ¥ll" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2977,8 +2979,8 @@ msgid "Background process: File exists" msgstr "Bakgrundsprocessen: Filen finns" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Bearbetade filer: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -3005,8 +3007,8 @@ msgid " Total: %s " msgstr " Totalt: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Totalt: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Källa" @@ -3057,7 +3059,7 @@ msgstr "&Träd" msgid "&Listing format..." msgstr "&Listformat..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3072,7 +3074,7 @@ msgstr "FT&P-länk..." msgid "S&hell link..." msgstr "S&kallänk..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3455,8 +3457,8 @@ msgid "No space information" msgstr "Ingen information om ledigt utrymme" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Fritt utr: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3700,6 +3702,9 @@ msgstr "Markera" msgid "Unselect" msgstr "Avmarkera" +msgid "Filter" +msgstr "Filter" + msgid "Do you really want to execute?" msgstr "Vill du verkligen exekvera?" @@ -4130,6 +4135,10 @@ msgstr "" "Oväntat filslut\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Inkonsistensfel i tararkivet" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4257,6 +4266,21 @@ msgstr "ftpfs: misslyckades att ansluta till servern: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Väntar pÃ¥ att försöka igen... %d (Control-G för att avbryta)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: felaktig adressfamilj" diff --git a/mcsrc/po/szl.po b/mcsrc/po/szl.po index e06bdcc4..d07b8089 100644 --- a/mcsrc/po/szl.po +++ b/mcsrc/po/szl.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Silesian (http://www.transifex.com/mc/mc/language/szl/)\n" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3258,7 +3265,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3505,6 +3512,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3893,6 +3903,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4020,6 +4033,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/ta.po b/mcsrc/po/ta.po index 521c889a..cb368719 100644 --- a/mcsrc/po/ta.po +++ b/mcsrc/po/ta.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Slava Zanko , 2011\n" "Language-Team: Tamil (http://www.transifex.com/mc/mc/language/ta/)\n" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3256,7 +3263,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3501,6 +3508,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3889,6 +3899,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4016,6 +4029,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/te.po b/mcsrc/po/te.po index ae7bc3d1..9a8b1737 100644 --- a/mcsrc/po/te.po +++ b/mcsrc/po/te.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Telugu (http://www.transifex.com/mc/mc/language/te/)\n" @@ -500,6 +500,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1123,7 +1126,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2258,12 +2261,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2404,14 +2401,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2421,8 +2425,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2657,6 +2661,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2669,12 +2682,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2781,7 +2788,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2809,7 +2816,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2861,7 +2868,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2876,7 +2883,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3255,7 +3262,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3500,6 +3507,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3888,6 +3898,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4015,6 +4028,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/tr.po b/mcsrc/po/tr.po index 4ff1307b..80ff8bb1 100644 --- a/mcsrc/po/tr.po +++ b/mcsrc/po/tr.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Serdar SaÄŸlam , 2019-2020\n" "Language-Team: Turkish (http://www.transifex.com/mc/mc/language/tr/)\n" @@ -521,6 +521,9 @@ msgstr "" "Alt iÅŸlemden select() ile veri okurken beklenmeyen hata oluÅŸtu:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1199,9 +1202,8 @@ msgstr "Önce bir metin blokunu aydınlatmalısınız" msgid "Run sort" msgstr "Sıralamayı çalıştır" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" -"Sıralama seçeneklerini (man sayfasına bakınız) boÅŸluklarla ayırarak veriniz:" msgid "Sort" msgstr "Sıralama" @@ -2358,12 +2360,6 @@ msgstr "Dosyalar iÅŸaretli, dizin deÄŸiÅŸsin mi?" msgid "Cannot change directory" msgstr "Dizin deÄŸiÅŸtirilemedi" -msgid "Filter" -msgstr "Süzgeç" - -msgid "Set expression for filtering filenames" -msgstr "Dosya isimlerini süzmede kullanılacak ifadeyi belirtin" - #, c-format msgid "Link %s to:" msgstr "%s bağı:" @@ -2510,18 +2506,23 @@ msgstr "" msgid "Pipe failed" msgstr "Boru açılamadı" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s dosya hatası" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"%smc.ext dosyası sürüm 3.0 ile deÄŸiÅŸti. Kurulum baÅŸarısız görünüyor. Lütfen, " -"Midnight Commander paketinden temiz bir kopyasıyla deÄŸiÅŸtirin." #, c-format msgid "%s file error" @@ -2529,11 +2530,9 @@ msgstr "%s dosya hatası" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Sürüm 3.0 ile ~/%s dosyası deÄŸiÅŸti. Ä°ster %smc.ext dosyasını kopyalayarak " -"ister o dosyayı örnek alarak yeniden oluÅŸturunuz." msgid "DialogTitle|Copy" msgstr "DiyalogBaÅŸlığı|Kopyala" @@ -2823,6 +2822,15 @@ msgstr "" msgid "(stalled)" msgstr "(durakladı)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Koru" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2839,12 +2847,6 @@ msgstr "" "\"%s\" hedef dosyası kapatılamıyor \n" " %s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr " Tamamlanmamış dosya alındı. Korunsun mu?" - -msgid "&Keep" -msgstr "&Koru" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2963,8 +2965,8 @@ msgid "Background process: File exists" msgstr "Artalan süreç: Dosya var" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Ä°ÅŸlenen dosyalar: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2991,8 +2993,8 @@ msgid " Total: %s " msgstr " Toplam: %s " #, c-format -msgid " Total: %s/%s " -msgstr " Toplam: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "Kaynak" @@ -3043,7 +3045,7 @@ msgstr "&AÄŸaç" msgid "&Listing format..." msgstr "&Listeleme biçimi..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3058,7 +3060,7 @@ msgstr "FT&P bağı..." msgid "S&hell link..." msgstr "&SSH bağı..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3441,8 +3443,8 @@ msgid "No space information" msgstr "Alan bilgileri yok" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "BoÅŸ alan: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3686,6 +3688,9 @@ msgstr "Seç" msgid "Unselect" msgstr "Seçme" +msgid "Filter" +msgstr "Süzgeç" + msgid "Do you really want to execute?" msgstr "Gerçekten çalıştırmak istiyor musunuz?" @@ -4117,6 +4122,10 @@ msgstr "" "%s\n" "dosyasının sonu belirsiz" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Tar arÅŸivi düzgün deÄŸil" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4245,6 +4254,21 @@ msgstr "ftpfs: Sunucuya baÄŸlantı baÅŸarısız: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "Yinelemek için bekleniyor... %d (iptal etmek için Ctrl-G)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: gereksiz adres ailesi" diff --git a/mcsrc/po/uk.po b/mcsrc/po/uk.po index b5f22729..34f61733 100644 --- a/mcsrc/po/uk.po +++ b/mcsrc/po/uk.po @@ -3,7 +3,9 @@ # This file is distributed under the same license as the mc package. # # Translators: -# Andrij Mizyk , 2021-2022 +# Andrij Mizyk , 2022 +# 1057792d4be8b9c6cf7b64c224fea2c1_7fc5896, 2022 +# f977cb811fcf66493f48eac227fd7473_b98aa5d <2419f1d8d12d92441152e78ae3e3bde0_722180>, 2021-2022 # Andriy Il , 2016-2017 # Andriy Smilyanets , 2019 # Oleksandr Natalenko , 2011, 2012 @@ -15,10 +17,10 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" -"Last-Translator: Andrij Mizyk , 2021-2022\n" +"Last-Translator: Andrij Mizyk , 2022\n" "Language-Team: Ukrainian (http://www.transifex.com/mc/mc/language/uk/)\n" "Language: uk\n" "MIME-Version: 1.0\n" @@ -542,6 +544,9 @@ msgstr "" "Виникла неÑподівана помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ select() з підлеглого процеÑу:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "Ðеможливо закрити деÑкриптор каналу (p == NULL)" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1217,8 +1222,9 @@ msgstr "Спочатку необхідно відмітити блок Ñ‚ÐµÐºÑ msgid "Run sort" msgstr "Виконати ÑортуваннÑ" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "Введіть параметри ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ (див. man sort), розділені пробілами:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" +"Уведіть параметри ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ (див. man-Ñторінку sort(1)) розділені пробілами:" msgid "Sort" msgstr "СортуваннÑ" @@ -2376,12 +2382,6 @@ msgstr "Відмічено файли, змінити каталог?" msgid "Cannot change directory" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ каталог" -msgid "Filter" -msgstr "Фільтр" - -msgid "Set expression for filtering filenames" -msgstr "Задати вираз Ð´Ð»Ñ Ð²Ñ–Ð´Ð±Ð¾Ñ€Ñƒ назв файлів" - #, c-format msgid "Link %s to:" msgstr "Створити поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° %s:" @@ -2528,18 +2528,28 @@ msgstr "" msgid "Pipe failed" msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° каналу" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" +"У Ð²Ð°Ñ Ð·Ð°Ñтарів файл %s.\n" +"Midnight Commander зараз викориÑтовує файл %s.\n" +"Скопіюйте Ñвою модифікацію Ñтарого файлу у новий." + #, c-format msgid " %s%s file error" msgstr " СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° файлу %s%s" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"Формат файлу %smc.ext було змінено у верÑÑ–Ñ– 3.0. Схоже що ÑтавÑÑ Ð·Ð±Ñ–Ð¹ при " -"вÑтановленні. Будь лаÑка, візьміть Ñвіжу копію із пакету Midnight Commander." +"Формат файлу %s%s змінено у верÑÑ–Ñ— 4.0. Схоже, що інÑталÑÑ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð°ÑÑ " +"невдало. Будь лаÑка, отримайте Ñвіжу копію з пакунка Midnight Commander." #, c-format msgid "%s file error" @@ -2547,11 +2557,11 @@ msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° файлу %s" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"Формат файлу %s змінивÑÑ Ñƒ верÑÑ–Ñ— 3.0. Можна або Ñкопіювати його з %smc.ext, " -"або викориÑтати вказаний файл Ñк приклад Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾." +"Формат файлу %s змінено у верÑÑ–Ñ— 4.0. Ви можете Ñкопіювати його з %s%s або " +"викориÑтати цей файл Ñк приклад Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑаннÑ." msgid "DialogTitle|Copy" msgstr "DialogTitle|КопіюваннÑ" @@ -2844,6 +2854,15 @@ msgstr "" msgid "(stalled)" msgstr "(проÑтоюваннÑ)" +msgid "Incomplete file was retrieved" +msgstr "Отримано неповний файл" + +msgid "&Keep" +msgstr "За&лишити" + +msgid "&Continue copy" +msgstr "&Продовжити копіюваннÑ" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2860,12 +2879,6 @@ msgstr "" "Ðе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ цільовий файл «%s»\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Отримано неповний файл. Залишити його?" - -msgid "&Keep" -msgstr "За&лишити" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2984,8 +2997,8 @@ msgid "Background process: File exists" msgstr "Фоновий процеÑ: файл Ñ–Ñнує" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "Файлів оброблено: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "Файлів оброблено: %zu / %zu" #, c-format msgid "Files processed: %zu" @@ -3012,8 +3025,8 @@ msgid " Total: %s " msgstr " УÑього: %s " #, c-format -msgid " Total: %s/%s " -msgstr " УÑього: %s/%s " +msgid " Total: %s / %s " +msgstr "УÑього: %s / %s " msgid "Source" msgstr "Джерело" @@ -3064,8 +3077,8 @@ msgstr "Д&eрево" msgid "&Listing format..." msgstr "&Формат ÑпиÑку" -msgid "S&ort order..." -msgstr "ПорÑдок &ÑортуваннÑ..." +msgid "&Sort order..." +msgstr "&ПорÑдок ÑортуваннÑ..." msgid "&Filter..." msgstr "&Фільтр…" @@ -3079,8 +3092,8 @@ msgstr "&FTP-з’єднаннÑ…" msgid "S&hell link..." msgstr "&Shell-з’єднаннÑ…" -msgid "&SFTP link..." -msgstr "S&FTP-зʼєднаннÑ..." +msgid "SFTP li&nk..." +msgstr "SFTP-&зʼєднаннÑ" msgid "Paneli&ze" msgstr "Панелі&зувати" @@ -3466,8 +3479,8 @@ msgid "No space information" msgstr "Ðемає відомоÑтей про проÑÑ‚Ñ–Ñ€" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "Вільне міÑце: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "Вільний проÑÑ‚Ñ–Ñ€: %s / %s (%d%%)" #, c-format msgid "Type: %s" @@ -3715,6 +3728,9 @@ msgstr "Вибрати" msgid "Unselect" msgstr "ЗнÑти відмітку" +msgid "Filter" +msgstr "Фільтр" + msgid "Do you really want to execute?" msgstr "Справді виконати?" @@ -4154,6 +4170,10 @@ msgstr "" "ВиÑвлено неочікуваний кінець файлу\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "ВиÑвлено неузгоджений архів tar" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4286,6 +4306,21 @@ msgstr "ftpfs: ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· Ñерве msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ… %d (щоб ÑкаÑувати, натиÑніть Ctrl+G)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "ftpfs: не можливо переклаÑти адреÑу на назву: %s" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "ftpfs: Ñпробуйте перезʼєднатиÑÑ Ð·Ñ– Ñервером, Ñпроба %u" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "ftpfs: не можливо отримати назву Ñокета: %s" + +msgid "ftpfs: could not reconnect to server" +msgstr "ftpfs: не можливо перезʼєднатиÑÑ Ð· Ñервером" + msgid "ftpfs: invalid address family" msgstr "ftpfs: виÑвлено неправильний рід адреÑи" diff --git a/mcsrc/po/uz.po b/mcsrc/po/uz.po index 36575b68..3bf6c8a3 100644 --- a/mcsrc/po/uz.po +++ b/mcsrc/po/uz.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Uzbek (http://www.transifex.com/mc/mc/language/uz/)\n" @@ -500,6 +500,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1123,7 +1126,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2258,12 +2261,6 @@ msgstr "" msgid "Cannot change directory" msgstr "" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2404,14 +2401,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2421,8 +2425,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2657,6 +2661,15 @@ msgstr "" msgid "(stalled)" msgstr "" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2669,12 +2682,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "" - -msgid "&Keep" -msgstr "" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2781,7 +2788,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2809,7 +2816,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2861,7 +2868,7 @@ msgstr "" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2876,7 +2883,7 @@ msgstr "" msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3253,7 +3260,7 @@ msgid "No space information" msgstr "" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3496,6 +3503,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3884,6 +3894,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4011,6 +4024,21 @@ msgstr "" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/vi.po b/mcsrc/po/vi.po index 2eeafaa6..ab5e0a5e 100644 --- a/mcsrc/po/vi.po +++ b/mcsrc/po/vi.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Slava Zanko , 2011\n" "Language-Team: Vietnamese (http://www.transifex.com/mc/mc/language/vi/)\n" @@ -503,6 +503,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1126,7 +1129,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2261,12 +2264,6 @@ msgstr "Äã đánh dấu các tập tin, chuyển thÆ° mục?" msgid "Cannot change directory" msgstr "Không thay đổi được thÆ° mục" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "Tạo liên kết tá»›i %s:" @@ -2407,14 +2404,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s lá»—i tập tin " #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2424,8 +2428,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2660,6 +2664,15 @@ msgstr "" msgid "(stalled)" msgstr "(bị nhốt)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&Giữ" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2672,12 +2685,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Nhận được tập tin không đầy đủ. Giữ tập tin?" - -msgid "&Keep" -msgstr "&Giữ" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2784,7 +2791,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2812,7 +2819,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2864,7 +2871,7 @@ msgstr "&Cây thÆ° mục" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2879,7 +2886,7 @@ msgstr "kết nối &FTP..." msgid "S&hell link..." msgstr "kết nối &Shell..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3256,7 +3263,7 @@ msgid "No space information" msgstr "Không có thông tin vá» khoảng trống" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3499,6 +3506,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3918,6 +3928,10 @@ msgstr "" "Kết thúc tập tin không mong đợi\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "Tập tin tar không thích hợp" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4045,6 +4059,21 @@ msgstr "ftpfs: kết nối tá»›i máy chủ không thành công: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/wa.po b/mcsrc/po/wa.po index ab43c931..b7608542 100644 --- a/mcsrc/po/wa.po +++ b/mcsrc/po/wa.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Slava Zanko , 2011\n" "Language-Team: Walloon (http://www.transifex.com/mc/mc/language/wa/)\n" @@ -501,6 +501,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1124,7 +1127,7 @@ msgstr "" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2259,12 +2262,6 @@ msgstr "Essegne metowe so les fitchîs, voloz-ve fé on cd?" msgid "Cannot change directory" msgstr "Dji n' sai candjî di ridant" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "" @@ -2405,14 +2402,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2422,8 +2426,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2658,6 +2662,15 @@ msgstr "" msgid "(stalled)" msgstr "(a djok)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "&WÃ¥rder" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2670,12 +2683,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "Dj' a rapexhî on fitchî nén etir. El fÃ¥t-i wÃ¥rder?" - -msgid "&Keep" -msgstr "&WÃ¥rder" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2782,7 +2789,7 @@ msgid "Background process: File exists" msgstr "" #, c-format -msgid "Files processed: %zu/%zu" +msgid "Files processed: %zu / %zu" msgstr "" #, c-format @@ -2810,7 +2817,7 @@ msgid " Total: %s " msgstr "" #, c-format -msgid " Total: %s/%s " +msgid " Total: %s / %s " msgstr "" msgid "Source" @@ -2862,7 +2869,7 @@ msgstr "Ã…&be" msgid "&Listing format..." msgstr "" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2877,7 +2884,7 @@ msgstr "Loyén &FTP..." msgid "S&hell link..." msgstr "" -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3256,7 +3263,7 @@ msgid "No space information" msgstr "Nole informÃ¥cion so li stindeye" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3501,6 +3508,9 @@ msgstr "" msgid "Unselect" msgstr "" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "" @@ -3911,6 +3921,9 @@ msgid "" "%s" msgstr "" +msgid "Inconsistent archive" +msgstr "" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4038,6 +4051,21 @@ msgstr "ftpfs: dj' a fwait berwete come dji m' raloyîve Ã¥ sierveu: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "" diff --git a/mcsrc/po/zh_CN.po b/mcsrc/po/zh_CN.po index 9d29de9f..f367041d 100644 --- a/mcsrc/po/zh_CN.po +++ b/mcsrc/po/zh_CN.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: Gurbuzguven <6mehmet6@gmail.com>, 2021\n" "Language-Team: Chinese (China) (http://www.transifex.com/mc/mc/language/" @@ -531,6 +531,9 @@ msgstr "" "使用 select() 从å­è¿›ç¨‹è¯»å–æ•°æ®æ—¶å‘生未知错误:\n" "%s" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1205,8 +1208,8 @@ msgstr "您必需先çªå‡ºæ˜¾ç¤ºä¸€ä¸ªæ–‡å­—å—" msgid "Run sort" msgstr "è¿è¡Œ sort" -msgid "Enter sort options (see manpage) separated by whitespace:" -msgstr "输入排åºé€‰é¡¹(查看 manpage)用空格分隔: " +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" +msgstr "" msgid "Sort" msgstr "排åº" @@ -2360,12 +2363,6 @@ msgstr "文件已ç»æ ‡è®°ï¼Œè¦æ›´æ”¹ç›®å½•å—?" msgid "Cannot change directory" msgstr "无法改å˜ç›®å½•" -msgid "Filter" -msgstr "过滤" - -msgid "Set expression for filtering filenames" -msgstr "设置过滤文件å的表达å¼" - #, c-format msgid "Link %s to:" msgstr "链接 %s 到: " @@ -2512,18 +2509,23 @@ msgstr "" msgid "Pipe failed" msgstr "管é“失败" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr " %s%s 文件错误" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" -"文件 %smc.ext çš„æ ¼å¼åœ¨3.0版本时已ç»è¢«ä¿®æ”¹ã€‚似乎安装有错误。请获å–æ–°çš„" -"Midnight Commander软件包。" #, c-format msgid "%s file error" @@ -2531,11 +2533,9 @@ msgstr "%s 文件错误" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" -"%s 文件的格å¼åœ¨ 3.0 版中已ç»æ”¹å˜ã€‚您å¯ä»¥æˆ–者将 %smc.ext 文件å¤åˆ¶è¿‡æ¥ï¼Œæˆ–者将" -"其为作为范本撰写您自己的版本。" msgid "DialogTitle|Copy" msgstr "DialogTitle|å¤åˆ¶" @@ -2827,6 +2827,15 @@ msgstr "" msgid "(stalled)" msgstr "(æš‚åœ)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "ä¿ç•™(&K)" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2843,12 +2852,6 @@ msgstr "" "无法关闭目标文件“%sâ€\n" "%s" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "文件没有完整获å–。ä¿ç•™å®ƒå—?" - -msgid "&Keep" -msgstr "ä¿ç•™(&K)" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2967,8 +2970,8 @@ msgid "Background process: File exists" msgstr "åŽå°è¿›ç¨‹: 文件已存在" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "已处ç†æ–‡ä»¶: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2995,8 +2998,8 @@ msgid " Total: %s " msgstr " 总共: %s " #, c-format -msgid " Total: %s/%s " -msgstr " 总共: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "æ¥æº" @@ -3047,7 +3050,7 @@ msgstr "æ ‘(&T)" msgid "&Listing format..." msgstr "列表格å¼(&L)…" -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -3062,7 +3065,7 @@ msgstr "FTP 链接(&P)..." msgid "S&hell link..." msgstr "S&hell 链接..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3443,8 +3446,8 @@ msgid "No space information" msgstr "没有空间信æ¯" #, c-format -msgid "Free space: %s/%s (%d%%)" -msgstr "空余空间: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" +msgstr "" #, c-format msgid "Type: %s" @@ -3686,6 +3689,9 @@ msgstr "选择" msgid "Unselect" msgstr "å–消选择" +msgid "Filter" +msgstr "过滤" + msgid "Do you really want to execute?" msgstr "您真的è¦æ‰§è¡Œå—?" @@ -4116,6 +4122,10 @@ msgstr "" "异常的文件结æŸ\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "ä¸å®Œæ•´çš„ tar 档案文件" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4243,6 +4253,21 @@ msgstr "ftpfs: 连接æœåŠ¡å™¨å¤±è´¥: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "等待é‡è¯•... %d (Ctrl-G å–消)" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: 无效的地å€æ—" diff --git a/mcsrc/po/zh_TW.po b/mcsrc/po/zh_TW.po index f8e8845b..df851a39 100644 --- a/mcsrc/po/zh_TW.po +++ b/mcsrc/po/zh_TW.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Midnight Commander\n" -"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n" -"POT-Creation-Date: 2022-03-27 13:41+0200\n" +"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n" +"POT-Creation-Date: 2023-01-14 20:00+0100\n" "PO-Revision-Date: 2010-12-29 10:19+0000\n" "Last-Translator: linwebs , 2020\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/mc/mc/language/" @@ -520,6 +520,9 @@ msgid "" "%s" msgstr "" +msgid "Cannot close pipe descriptor (p == NULL)" +msgstr "" + #, c-format msgid "" "Unexpected error in waitpid():\n" @@ -1145,7 +1148,7 @@ msgstr "您應該先高亮文字中的一個å€å¡Š" msgid "Run sort" msgstr "" -msgid "Enter sort options (see manpage) separated by whitespace:" +msgid "Enter sort options (see sort(1) manpage) separated by whitespace:" msgstr "" msgid "Sort" @@ -2286,12 +2289,6 @@ msgstr "有檔案貼上標籤了,還是è¦æ”¹è®Šç›®éŒ„?" msgid "Cannot change directory" msgstr "無法改變目錄" -msgid "Filter" -msgstr "" - -msgid "Set expression for filtering filenames" -msgstr "" - #, c-format msgid "Link %s to:" msgstr "é€£çµ %s 到:" @@ -2432,14 +2429,21 @@ msgstr "" msgid "Pipe failed" msgstr "" +#, c-format +msgid "" +"You have an outdated %s file.\n" +"Midnight Commander now uses %s file.\n" +"Please copy your modifications of the old file to the new one." +msgstr "" + #, c-format msgid " %s%s file error" msgstr "" #, c-format msgid "" -"The format of the %smc.ext file has changed with version 3.0. It seems that " -"the installation failed. Please fetch a fresh copy from the Midnight " +"The format of the %s%s file has changed with version 4.0. It seems that the " +"installation has failed. Please fetch a fresh copy from the Midnight " "Commander package." msgstr "" @@ -2449,8 +2453,8 @@ msgstr "" #, c-format msgid "" -"The format of the %s file has changed with version 3.0. You may either want " -"to copy it from %smc.ext or use that file as an example of how to write it." +"The format of the %s file has changed with version 4.0. You may either want " +"to copy it from %s%s or use that file as an example of how to write it." msgstr "" msgid "DialogTitle|Copy" @@ -2693,6 +2697,15 @@ msgstr "" msgid "(stalled)" msgstr "(æš«åœäº†)" +msgid "Incomplete file was retrieved" +msgstr "" + +msgid "&Keep" +msgstr "ä¿ç•™" + +msgid "&Continue copy" +msgstr "" + #, c-format msgid "" "Cannot close source file \"%s\"\n" @@ -2705,12 +2718,6 @@ msgid "" "%s" msgstr "" -msgid "Incomplete file was retrieved. Keep it?" -msgstr "抓回的檔案ä¸å®Œå…¨ï¼Œè¦ä¿ç•™å—Žï¼Ÿ" - -msgid "&Keep" -msgstr "ä¿ç•™" - #, c-format msgid "" "Cannot stat source directory \"%s\"\n" @@ -2817,8 +2824,8 @@ msgid "Background process: File exists" msgstr "背景處ç†ç¨‹åº: 檔案已存在" #, c-format -msgid "Files processed: %zu/%zu" -msgstr "檔案處ç†ç¨‹åº: %zu/%zu" +msgid "Files processed: %zu / %zu" +msgstr "" #, c-format msgid "Files processed: %zu" @@ -2845,8 +2852,8 @@ msgid " Total: %s " msgstr " 總共: %s " #, c-format -msgid " Total: %s/%s " -msgstr " 總共: %s/%s " +msgid " Total: %s / %s " +msgstr "" msgid "Source" msgstr "來æº" @@ -2897,7 +2904,7 @@ msgstr "樹狀" msgid "&Listing format..." msgstr "列表格å¼..." -msgid "S&ort order..." +msgid "&Sort order..." msgstr "" msgid "&Filter..." @@ -2912,7 +2919,7 @@ msgstr "é€£çµ FTP..." msgid "S&hell link..." msgstr "é€£çµ Shell..." -msgid "&SFTP link..." +msgid "SFTP li&nk..." msgstr "" msgid "Paneli&ze" @@ -3291,7 +3298,7 @@ msgid "No space information" msgstr "沒有空間資訊" #, c-format -msgid "Free space: %s/%s (%d%%)" +msgid "Free space: %s / %s (%d%%)" msgstr "" #, c-format @@ -3534,6 +3541,9 @@ msgstr "é¸å–" msgid "Unselect" msgstr "å–消é¸å–" +msgid "Filter" +msgstr "" + msgid "Do you really want to execute?" msgstr "您真的想è¦åŸ·è¡Œ?" @@ -3957,6 +3967,10 @@ msgstr "" "未é æœŸçš„檔案çµæŸ\n" "%s" +#, fuzzy +msgid "Inconsistent archive" +msgstr "ä¸å®Œæ•´çš„ tar 檔案集" + #, c-format msgid "" "Cannot open %s archive\n" @@ -4084,6 +4098,21 @@ msgstr "ftpfs: 連çµåˆ°ä¼ºæœå™¨ç™¼ç”ŸéŒ¯èª¤: %s" msgid "Waiting to retry... %d (Control-G to cancel)" msgstr "" +#, c-format +msgid "ftpfs: could not make address-to-name translation: %s" +msgstr "" + +#, c-format +msgid "ftpfs: try reconnect to server, attempt %u" +msgstr "" + +#, c-format +msgid "ftpfs: could not get socket name: %s" +msgstr "" + +msgid "ftpfs: could not reconnect to server" +msgstr "" + msgid "ftpfs: invalid address family" msgstr "ftpfs: 無效的家庭地å€" diff --git a/mcsrc/src/diffviewer/search.c b/mcsrc/src/diffviewer/search.c index 0e91fc56..93884d2f 100644 --- a/mcsrc/src/diffviewer/search.c +++ b/mcsrc/src/diffviewer/search.c @@ -6,7 +6,7 @@ Written by: Slava Zanko , 2010. - Andrew Borodin , 2012 + Andrew Borodin , 2012-2022 This file is part of the Midnight Commander. @@ -108,13 +108,14 @@ mcdiffview_dialog_search (WDiff * dview) QUICK_END /* *INDENT-ON* */ }; -#endif //WIN32 +#endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 58, - N_("Search"), "[Input Line Keys]", + WRect r = { -1, -1, 0, 58 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Search"), "[Input Line Keys]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, diff --git a/mcsrc/src/diffviewer/ydiff.c b/mcsrc/src/diffviewer/ydiff.c index 752ad349..28d92a55 100644 --- a/mcsrc/src/diffviewer/ydiff.c +++ b/mcsrc/src/diffviewer/ydiff.c @@ -7,7 +7,7 @@ Written by: Daniel Borca , 2007 Slava Zanko , 2010, 2013 - Andrew Borodin , 2010, 2012, 2013, 2016 + Andrew Borodin , 2010-2022 Ilia Maslakov , 2010 This file is part of the Midnight Commander. @@ -28,6 +28,7 @@ #include + #include #include #include /* ptrdiff_t */ @@ -2275,9 +2276,9 @@ dview_compute_areas (WDiff * dview) { Widget *w = WIDGET (dview); - dview->height = w->lines - 1; - dview->half1 = w->cols / 2; - dview->half2 = w->cols - dview->half1; + dview->height = w->rect.lines - 1; + dview->half1 = w->rect.cols / 2; + dview->half2 = w->rect.cols - dview->half1; dview_compute_split (dview, 0); } @@ -2383,11 +2384,12 @@ dview_diff_options (WDiff * dview) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 56, - N_("Diff Options"), "[Diff Options]", + WRect r = { -1, -1, 0, 56 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Diff Options"), "[Diff Options]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_START_GROUPBOX (qc, N_("Diff algorithm")); @@ -3463,6 +3465,7 @@ diff_view (const char *file1, const char *file2, const char *label1, const char Widget *w; WDialog *dview_dlg; Widget *dw; + WRect r; WGroup *g; /* Create dialog and widgets, put them on the dialog */ @@ -3471,12 +3474,14 @@ diff_view (const char *file1, const char *file2, const char *label1, const char "[Diff Viewer]", NULL); dw = WIDGET (dview_dlg); widget_want_tab (dw, TRUE); + r = dw->rect; g = GROUP (dview_dlg); dview = g_new0 (WDiff, 1); w = WIDGET (dview); - widget_init (w, dw->y, dw->x, dw->lines - 1, dw->cols, dview_callback, dview_mouse_callback); + r.lines--; + widget_init (w, &r, dview_callback, dview_mouse_callback); w->options |= WOP_SELECTABLE; w->keymap = diff_map; group_add_widget_autopos (g, w, WPOS_KEEP_ALL, NULL); diff --git a/mcsrc/src/editor/edit-impl.h b/mcsrc/src/editor/edit-impl.h index 510c1ed3..e1eba6e1 100644 --- a/mcsrc/src/editor/edit-impl.h +++ b/mcsrc/src/editor/edit-impl.h @@ -136,8 +136,7 @@ extern char *edit_window_close_char; /*** declarations of public functions ************************************************************/ -gboolean edit_add_window (WDialog * h, int y, int x, int lines, int cols, - const vfs_path_t * f, long fline); +gboolean edit_add_window (WDialog * h, const WRect * r, const vfs_path_t * f, long fline); WEdit *find_editor (const WDialog * h); gboolean edit_widget_is_editor (const Widget * w); gboolean edit_drop_hotkey_menu (WDialog * h, int key); @@ -181,11 +180,11 @@ char *edit_get_write_filter (const vfs_path_t * write_name_vpath, const vfs_path_t * filename_vpath); gboolean edit_save_confirm_cmd (WEdit * edit); gboolean edit_save_as_cmd (WEdit * edit); -WEdit *edit_init (WEdit * edit, int y, int x, int lines, int cols, - const vfs_path_t * filename_vpath, long line); +WEdit *edit_init (WEdit * edit, const WRect * r, const vfs_path_t * filename_vpath, long line); gboolean edit_clean (WEdit * edit); gboolean edit_ok_to_exit (WEdit * edit); gboolean edit_load_cmd (WDialog * h); +gboolean edit_load_file_from_filename (WDialog * h, const vfs_path_t * vpath, long line); gboolean edit_load_file_from_history (WDialog * h); gboolean edit_load_syntax_file (WDialog * h); gboolean edit_load_menu_file (WDialog * h); diff --git a/mcsrc/src/editor/edit.c b/mcsrc/src/editor/edit.c index 38beda77..30fe2110 100644 --- a/mcsrc/src/editor/edit.c +++ b/mcsrc/src/editor/edit.c @@ -7,7 +7,7 @@ Written by: Paul Sheer 1996, 1997 Ilia Maslakov 2009, 2010, 2011 - Andrew Borodin 2012, 2013 + Andrew Borodin 2012-2022 This file is part of the Midnight Commander. @@ -160,12 +160,15 @@ edit_load_status_update_cb (status_msg_t * sm) if (rsm->first) { - int wd_width; Widget *lw = WIDGET (ssm->label); - - wd_width = MAX (wd->cols, lw->cols + 6); - widget_set_size (wd, wd->y, wd->x, wd->lines, wd_width); - widget_set_size (lw, lw->y, wd->x + (wd->cols - lw->cols) / 2, lw->lines, lw->cols); + WRect r; + + r = wd->rect; + r.cols = MAX (r.cols, lw->rect.cols + 6); + widget_set_size_rect (wd, &r); + r = lw->rect; + r.x = wd->rect.x + (wd->rect.cols - r.cols) / 2; + widget_set_size_rect (lw, &r); rsm->first = FALSE; } @@ -497,7 +500,7 @@ edit_load_position (WEdit * edit, gboolean load_position) } edit_move_to_prev_col (edit, edit_buffer_get_current_bol (&edit->buffer)); - edit_move_display (edit, line - (WIDGET (edit)->lines / 2)); + edit_move_display (edit, line - (WIDGET (edit)->rect.lines / 2)); } /* --------------------------------------------------------------------------------------------- */ @@ -821,7 +824,7 @@ static void edit_end_page (WEdit * edit) { edit_update_curs_row (edit); - edit_move_down (edit, WIDGET (edit)->lines - edit->curs_row - 1, FALSE); + edit_move_down (edit, WIDGET (edit)->rect.lines - edit->curs_row - 1, FALSE); } @@ -852,7 +855,7 @@ edit_move_to_bottom (WEdit * edit) edit_move_down (edit, edit->buffer.lines - edit->curs_row, FALSE); edit->start_display = edit->buffer.size; edit->start_line = edit->buffer.lines; - edit_scroll_upward (edit, WIDGET (edit)->lines - 1); + edit_scroll_upward (edit, WIDGET (edit)->rect.lines - 1); edit->force |= REDRAW_PAGE; } } @@ -1553,7 +1556,7 @@ edit_get_bracket (WEdit * edit, gboolean in_screen, unsigned long furthest_brack break; /* count lines if searching downward */ if (inc > 0 && a == '\n') - if (n++ >= WIDGET (edit)->lines - edit->curs_row) /* out of screen */ + if (n++ >= WIDGET (edit)->rect.lines - edit->curs_row) /* out of screen */ break; } /* count bracket depth */ @@ -2078,8 +2081,7 @@ edit_insert_file (WEdit * edit, const vfs_path_t * filename_vpath) */ WEdit * -edit_init (WEdit * edit, int y, int x, int lines, int cols, const vfs_path_t * filename_vpath, - long line) +edit_init (WEdit * edit, const WRect * r, const vfs_path_t * filename_vpath, long line) { gboolean to_free = FALSE; @@ -2104,11 +2106,12 @@ edit_init (WEdit * edit, int y, int x, int lines, int cols, const vfs_path_t * f else { Widget *w; + edit = g_malloc0 (sizeof (WEdit)); to_free = TRUE; w = WIDGET (edit); - widget_init (w, y, x, lines, cols, NULL, NULL); + widget_init (w, r, NULL, NULL); w->options |= WOP_SELECTABLE | WOP_TOP_SELECT | WOP_WANT_CURSOR; w->keymap = editor_map; w->ext_keymap = editor_x_map; @@ -2241,7 +2244,7 @@ edit_reload_line (WEdit * edit, const vfs_path_t * filename_vpath, long line) e->fullscreen = edit->fullscreen; e->loc_prev = edit->loc_prev; - if (edit_init (e, w->y, w->x, w->lines, w->cols, filename_vpath, line) == NULL) + if (edit_init (e, &w->rect, filename_vpath, line) == NULL) { g_free (e); return FALSE; @@ -2898,7 +2901,7 @@ edit_scroll_downward (WEdit * edit, long i) { long lines_below; - lines_below = edit->buffer.lines - edit->start_line - (WIDGET (edit)->lines - 1); + lines_below = edit->buffer.lines - edit->start_line - (WIDGET (edit)->rect.lines - 1); if (lines_below > 0) { if (i > lines_below) @@ -3250,7 +3253,7 @@ edit_execute_key_command (WEdit * edit, long command, int char_for_insertion) void edit_execute_cmd (WEdit * edit, long command, int char_for_insertion) { - Widget *w = WIDGET (edit); + WRect *w = &WIDGET (edit)->rect; if (command == CK_WindowFullscreen) { @@ -3933,7 +3936,7 @@ edit_execute_cmd (WEdit * edit, long command, int char_for_insertion) edit_begin_end_repeat_cmd (edit); break; case CK_ExtendedKeyMap: - w->ext_mode = TRUE; + WIDGET (edit)->ext_mode = TRUE; break; default: break; diff --git a/mcsrc/src/editor/editcmd.c b/mcsrc/src/editor/editcmd.c index 126bd92c..8aa1fa2e 100644 --- a/mcsrc/src/editor/editcmd.c +++ b/mcsrc/src/editor/editcmd.c @@ -6,7 +6,7 @@ Written by: Paul Sheer, 1996, 1997 - Andrew Borodin , 2012-2021 + Andrew Borodin , 2012-2022 Ilia Maslakov , 2012 This file is part of the Midnight Commander. @@ -416,11 +416,12 @@ edit_get_save_file_as (WEdit * edit) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 64, - N_("Save As"), "[Save File As]", + WRect r = { -1, -1, 0, 64 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Save As"), "[Save File As]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, N_("Enter file name:"), input_label_above, @@ -480,23 +481,6 @@ edit_save_cmd (WEdit * edit) return TRUE; } -/* --------------------------------------------------------------------------------------------- */ -/** - * Load file content - * - * @param h screen the owner of editor window - * @param vpath vfs file path - * @return TRUE if file content was successfully loaded, FALSE otherwise - */ - -static inline gboolean -edit_load_file_from_filename (WDialog * h, const vfs_path_t * vpath) -{ - Widget *w = WIDGET (h); - - return edit_add_window (h, w->y + 1, w->x, w->lines - 2, w->cols, vpath, 0); -} - /* --------------------------------------------------------------------------------------------- */ static void @@ -906,11 +890,12 @@ edit_save_mode_cmd (void) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 38, - N_("Edit Save Mode"), "[Edit Save Mode]", + WRect r = { -1, -1, 0, 38 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Edit Save Mode"), "[Edit Save Mode]", quick_widgets, edit_save_mode_callback, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_RADIO (qc, 3, str, &option_save_mode, &edit_save_mode_radio_id), @@ -1099,7 +1084,7 @@ edit_load_cmd (WDialog * h) vfs_path_t *exp_vpath; exp_vpath = vfs_path_from_str (exp); - ret = edit_load_file_from_filename (h, exp_vpath); + ret = edit_load_file_from_filename (h, exp_vpath, 0); vfs_path_free (exp_vpath, TRUE); } @@ -1108,6 +1093,27 @@ edit_load_cmd (WDialog * h) return ret; } +/* --------------------------------------------------------------------------------------------- */ +/** + * Load file content + * + * @param h screen the owner of editor window + * @param vpath vfs file path + * @param line line number + * + * @return TRUE if file content was successfully loaded, FALSE otherwise + */ + +gboolean +edit_load_file_from_filename (WDialog * h, const vfs_path_t * vpath, long line) +{ + WRect r = WIDGET (h)->rect; + + rect_grow (&r, -1, 0); + + return edit_add_window (h, &r, vpath, line); +} + /* --------------------------------------------------------------------------------------------- */ /** * Show history od edited or viewed files and open selected file. @@ -1128,7 +1134,7 @@ edit_load_file_from_history (WDialog * h) vfs_path_t *exp_vpath; exp_vpath = vfs_path_from_str (exp); - ret = edit_load_file_from_filename (h, exp_vpath); + ret = edit_load_file_from_filename (h, exp_vpath, 0); vfs_path_free (exp_vpath, TRUE); } @@ -1137,7 +1143,6 @@ edit_load_file_from_history (WDialog * h) return ret; } - /* --------------------------------------------------------------------------------------------- */ /** * Load syntax file to edit. @@ -1158,25 +1163,25 @@ edit_load_syntax_file (WDialog * h) _("&User"), _("&System wide")); extdir_vpath = - vfs_path_build_filename (mc_global.sysconfig_dir, "syntax", "Syntax", (char *) NULL); + vfs_path_build_filename (mc_global.sysconfig_dir, EDIT_SYNTAX_FILE, (char *) NULL); if (!exist_file (vfs_path_get_last_path_str (extdir_vpath))) { vfs_path_free (extdir_vpath, TRUE); extdir_vpath = - vfs_path_build_filename (mc_global.share_data_dir, "syntax", "Syntax", (char *) NULL); + vfs_path_build_filename (mc_global.share_data_dir, EDIT_SYNTAX_FILE, (char *) NULL); } if (dir == 0) { vfs_path_t *user_syntax_file_vpath; - user_syntax_file_vpath = mc_config_get_full_vpath (EDIT_HOME_SYNTAX_FILE); + user_syntax_file_vpath = mc_config_get_full_vpath (EDIT_SYNTAX_FILE); check_for_default (extdir_vpath, user_syntax_file_vpath); - ret = edit_load_file_from_filename (h, user_syntax_file_vpath); + ret = edit_load_file_from_filename (h, user_syntax_file_vpath, 0); vfs_path_free (user_syntax_file_vpath, TRUE); } else if (dir == 1) - ret = edit_load_file_from_filename (h, extdir_vpath); + ret = edit_load_file_from_filename (h, extdir_vpath, 0); vfs_path_free (extdir_vpath, TRUE); @@ -1241,7 +1246,7 @@ edit_load_menu_file (WDialog * h) return FALSE; } - ret = edit_load_file_from_filename (h, buffer_vpath); + ret = edit_load_file_from_filename (h, buffer_vpath, 0); vfs_path_free (buffer_vpath, TRUE); vfs_path_free (menufile_vpath, TRUE); @@ -1759,7 +1764,7 @@ edit_goto_cmd (WEdit * edit) if (l < 0) l = edit->buffer.lines + l + 2; - edit_move_display (edit, l - WIDGET (edit)->lines / 2 - 1); + edit_move_display (edit, l - WIDGET (edit)->rect.lines / 2 - 1); edit_move_to_line (edit, l - 1); edit->force |= REDRAW_COMPLETELY; @@ -1858,7 +1863,7 @@ edit_sort_cmd (WEdit * edit) g_free (tmp); exp = input_dialog (_("Run sort"), - _("Enter sort options (see manpage) separated by whitespace:"), + _("Enter sort options (see sort(1) manpage) separated by whitespace:"), MC_HISTORY_EDIT_SORT, INPUT_LAST_TEXT, INPUT_COMPLETE_NONE); if (exp == NULL) @@ -2005,11 +2010,12 @@ edit_mail_dialog (WEdit * edit) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 50, - N_("Mail"), "[Input Line Keys]", + WRect r = { -1, -1, 0, 50 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Mail"), "[Input Line Keys]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABEL (qc, N_("mail -s -c "), NULL), diff --git a/mcsrc/src/editor/editcomplete.c b/mcsrc/src/editor/editcomplete.c index 28a57f10..dc4d40a3 100644 --- a/mcsrc/src/editor/editcomplete.c +++ b/mcsrc/src/editor/editcomplete.c @@ -5,7 +5,7 @@ Free Software Foundation, Inc. Written by: - Andrew Borodin , 2021 + Andrew Borodin , 2021-2022 This file is part of the Midnight Commander. @@ -348,7 +348,7 @@ edit_completion_string_free (gpointer data) char * edit_completion_dialog_show (const WEdit * edit, GQueue * compl, int max_width) { - const Widget *we = CONST_WIDGET (edit); + const WRect *we = &CONST_WIDGET (edit)->rect; int start_x, start_y, offset; char *curr = NULL; WDialog *compl_dlg; diff --git a/mcsrc/src/editor/editdraw.c b/mcsrc/src/editor/editdraw.c index 8a7d2c62..b4ec402f 100644 --- a/mcsrc/src/editor/editdraw.c +++ b/mcsrc/src/editor/editdraw.c @@ -6,7 +6,7 @@ Written by: Paul Sheer, 1996, 1997 - Andrew Borodin 2012, 2013 + Andrew Borodin 2012-2022 Slava Zanko , 2013 This file is part of the Midnight Commander. @@ -189,7 +189,7 @@ static inline void edit_status_fullscreen (WEdit * edit, int color) { Widget *h = WIDGET (WIDGET (edit)->owner); - const int w = h->cols; + const int w = h->rect.cols; const int gap = 3; /* between the filename and the status */ const int right_gap = 5; /* at the right end of the screen */ const int preferred_fname_len = 16; @@ -254,7 +254,7 @@ edit_status_window (WEdit * edit) { Widget *w = WIDGET (edit); int y, x; - int cols = w->cols; + int cols = w->rect.cols; tty_setcolor (STATUSBAR_COLOR); @@ -275,11 +275,11 @@ edit_status_window (WEdit * edit) #endif edit_move (2, 0); - tty_printf ("[%s]", str_term_trim (fname, w->cols - 8 - 6)); + tty_printf ("[%s]", str_term_trim (fname, w->rect.cols - 8 - 6)); } tty_getyx (&y, &x); - x -= w->x; + x -= w->rect.x; x += 4; if (x + 6 <= cols - 2 - 6) { @@ -292,7 +292,7 @@ edit_status_window (WEdit * edit) if (cols > 30) { - edit_move (2, w->lines - 1); + edit_move (2, w->rect.lines - 1); tty_printf ("%3ld %5ld/%ld %6ld/%ld", edit->curs_col + edit->over_col, edit->buffer.curs_line + 1, edit->buffer.lines + 1, (long) edit->buffer.curs1, @@ -306,7 +306,7 @@ edit_status_window (WEdit * edit) */ if (cols > 46) { - edit_move (32, w->lines - 1); + edit_move (32, w->rect.lines - 1); if (edit->buffer.curs1 >= edit->buffer.size) tty_print_string ("[ ]"); #ifdef HAVE_CHARSET @@ -348,12 +348,12 @@ edit_draw_frame (const WEdit * edit, int color, gboolean active) /* draw a frame around edit area */ tty_setcolor (color); /* draw double frame for active window if skin supports that */ - tty_draw_box (w->y, w->x, w->lines, w->cols, !active); + tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, !active); /* draw a drag marker */ if (edit->drag_state == MCEDIT_DRAG_NONE) { tty_setcolor (EDITOR_FRAME_DRAG); - widget_gotoyx (w, w->lines - 1, w->cols - 1); + widget_gotoyx (w, w->rect.lines - 1, w->rect.cols - 1); tty_print_alt_char (ACS_LRCORNER, TRUE); } } @@ -374,9 +374,9 @@ edit_draw_window_icons (const WEdit * edit, int color) tty_setcolor (color); if (edit->fullscreen) - widget_gotoyx (w->owner, 0, WIDGET (w->owner)->cols - 6); + widget_gotoyx (w->owner, 0, WIDGET (w->owner)->rect.cols - 6); else - widget_gotoyx (w, 0, w->cols - 8); + widget_gotoyx (w, 0, w->rect.cols - 8); g_snprintf (tmp, sizeof (tmp), "[%s][%s]", edit_window_state_char, edit_window_close_char); tty_print_string (tmp); } @@ -412,25 +412,25 @@ print_to_widget (WEdit * edit, long row, int start_col, int start_col_real, len = end_col + 1 - start_col; wrap_start = option_word_wrap_line_length + edit->start_col; - if (len > 0 && w->y + y >= 0) + if (len > 0 && w->rect.y + y >= 0) { if (!show_right_margin || wrap_start > end_col) - tty_draw_hline (w->y + y, w->x + x1, ' ', len); + tty_draw_hline (w->rect.y + y, w->rect.x + x1, ' ', len); else if (wrap_start < 0) { tty_setcolor (EDITOR_RIGHT_MARGIN_COLOR); - tty_draw_hline (w->y + y, w->x + x1, ' ', len); + tty_draw_hline (w->rect.y + y, w->rect.x + x1, ' ', len); } else { if (wrap_start > 0) - tty_draw_hline (w->y + y, w->x + x1, ' ', wrap_start); + tty_draw_hline (w->rect.y + y, w->rect.x + x1, ' ', wrap_start); len -= wrap_start; if (len > 0) { tty_setcolor (EDITOR_RIGHT_MARGIN_COLOR); - tty_draw_hline (w->y + y, w->x + x1 + wrap_start, ' ', len); + tty_draw_hline (w->rect.y + y, w->rect.x + x1 + wrap_start, ' ', len); } } } @@ -511,7 +511,7 @@ edit_draw_this_line (WEdit * edit, off_t b, long row, long start_col, long end_c int book_mark = 0; char line_stat[LINE_STATE_WIDTH + 1] = "\0"; - if (row > w->lines - 1 - EDIT_TEXT_VERTICAL_OFFSET - 2 * (edit->fullscreen ? 0 : 1)) + if (row > w->rect.lines - 1 - EDIT_TEXT_VERTICAL_OFFSET - 2 * (edit->fullscreen ? 0 : 1)) return; if (book_mark_query_color (edit, edit->start_line + row, BOOK_MARK_COLOR)) @@ -528,7 +528,7 @@ edit_draw_this_line (WEdit * edit, off_t b, long row, long start_col, long end_c if (!edit->fullscreen) { end_col--; - if (w->x + w->cols <= WIDGET (w->owner)->cols) + if (w->rect.x + w->rect.cols <= WIDGET (w->owner)->rect.cols) end_col--; } @@ -844,8 +844,9 @@ render_edit_text (WEdit * edit, long start_row, long start_column, long end_row, static long prev_curs_row = 0; static off_t prev_curs = 0; - Widget *w = WIDGET (edit); - Widget *wh = WIDGET (w->owner); + Widget *we = WIDGET (edit); + Widget *wh = WIDGET (we->owner); + WRect *w = &we->rect; int force = edit->force; int y1, x1, y2, x2; @@ -853,24 +854,24 @@ render_edit_text (WEdit * edit, long start_row, long start_column, long end_row, /* draw only visible region */ - last_line = wh->y + wh->lines - 1; + last_line = wh->rect.y + wh->rect.lines - 1; y1 = w->y; if (y1 > last_line - 1 /* buttonbar */ ) return; - last_column = wh->x + wh->cols - 1; + last_column = wh->rect.x + wh->rect.cols - 1; x1 = w->x; if (x1 > last_column) return; y2 = w->y + w->lines - 1; - if (y2 < wh->y + 1 /* menubar */ ) + if (y2 < wh->rect.y + 1 /* menubar */ ) return; x2 = w->x + w->cols - 1; - if (x2 < wh->x) + if (x2 < wh->rect.x) return; if ((force & REDRAW_IN_BOUNDS) == 0) @@ -880,17 +881,17 @@ render_edit_text (WEdit * edit, long start_row, long start_column, long end_row, if (y2 <= last_line - 1 /* buttonbar */ ) end_row = w->lines - 1; - else if (y1 >= wh->y + 1 /* menubar */ ) - end_row = wh->lines - 1 - y1 - 1; + else if (y1 >= wh->rect.y + 1 /* menubar */ ) + end_row = wh->rect.lines - 1 - y1 - 1; else - end_row = start_row + wh->lines - 1 - 1; + end_row = start_row + wh->rect.lines - 1 - 1; if (x2 <= last_column) end_column = w->cols - 1; - else if (x1 >= wh->x) - end_column = wh->cols - 1 - x1; + else if (x1 >= wh->rect.x) + end_column = wh->rect.cols - 1 - x1; else - end_column = start_column + wh->cols - 1; + end_column = start_column + wh->rect.cols - 1; } /* @@ -1049,7 +1050,7 @@ edit_status (WEdit * edit, gboolean active) void edit_scroll_screen_over_cursor (WEdit * edit) { - Widget *w = WIDGET (edit); + WRect *w = &WIDGET (edit)->rect; long p; long outby; @@ -1058,16 +1059,11 @@ edit_scroll_screen_over_cursor (WEdit * edit) if (w->lines <= 0 || w->cols <= 0) return; - w->lines -= EDIT_TEXT_VERTICAL_OFFSET; - w->cols -= EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width; + rect_resize (w, -EDIT_TEXT_VERTICAL_OFFSET, + -(EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width)); if (!edit->fullscreen) - { - w->x++; - w->cols -= 2; - w->y++; - w->lines -= 2; - } + rect_grow (w, -1, -1); r_extreme = EDIT_RIGHT_EXTREME; l_extreme = EDIT_LEFT_EXTREME; @@ -1115,15 +1111,10 @@ edit_scroll_screen_over_cursor (WEdit * edit) edit_scroll_upward (edit, outby); edit_update_curs_row (edit); - w->lines += EDIT_TEXT_VERTICAL_OFFSET; - w->cols += EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width; + rect_resize (w, EDIT_TEXT_VERTICAL_OFFSET, + EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width); if (!edit->fullscreen) - { - w->x--; - w->cols += 2; - w->y--; - w->lines += 2; - } + rect_grow (w, 1, 1); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/src/editor/editmacros.c b/mcsrc/src/editor/editmacros.c index a9b2a436..89eddb47 100644 --- a/mcsrc/src/editor/editmacros.c +++ b/mcsrc/src/editor/editmacros.c @@ -109,14 +109,13 @@ edit_delete_macro (WEdit * edit, int hotkey) char *skeyname; /* clear array of actions for current hotkey */ - while ((indx = edit_get_macro (edit, hotkey) != -1)) + while ((indx = edit_get_macro (edit, hotkey)) != -1) { macros_t *macros; macros = &g_array_index (macros_list, struct macros_t, indx); g_array_free (macros->macro, TRUE); g_array_remove_index (macros_list, indx); - edit_macro_sort_by_hotkey (); } macros_fname = mc_config_get_full_path (MC_MACRO_FILE); diff --git a/mcsrc/src/editor/editoptions.c b/mcsrc/src/editor/editoptions.c index ec7d9256..f2c66169 100644 --- a/mcsrc/src/editor/editoptions.c +++ b/mcsrc/src/editor/editoptions.c @@ -6,7 +6,7 @@ Written by: Paul Sheer, 1996, 1997 - Andrew Borodin , 2012 + Andrew Borodin , 2012-2022 This file is part of the Midnight Commander. @@ -189,11 +189,12 @@ edit_options_dialog (WDialog * h) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 74, - N_("Editor options"), "[Editor options]", + WRect r = { -1, -1, 0, 74 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Editor options"), "[Editor options]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_START_COLUMNS (qc), @@ -244,7 +245,7 @@ edit_options_dialog (WDialog * h) if (!option_cursor_beyond_eol) g_list_foreach (GROUP (h)->widgets, edit_reset_over_col, NULL); - if (p != NULL) + if (p != NULL && *p != '\0') { option_word_wrap_line_length = atoi (p); if (option_word_wrap_line_length <= 0) @@ -252,7 +253,7 @@ edit_options_dialog (WDialog * h) g_free (p); } - if (q != NULL) + if (q != NULL && *q != '\0') { option_tab_spacing = atoi (q); if (option_tab_spacing <= 0) diff --git a/mcsrc/src/editor/editsearch.c b/mcsrc/src/editor/editsearch.c index 4356fd5a..23843a2a 100644 --- a/mcsrc/src/editor/editsearch.c +++ b/mcsrc/src/editor/editsearch.c @@ -5,7 +5,7 @@ Free Software Foundation, Inc. Written by: - Andrew Borodin , 2021 + Andrew Borodin , 2021-2022 This file is part of the Midnight Commander. @@ -116,11 +116,12 @@ edit_dialog_search_show (WEdit * edit) }; #endif //WIN332 - quick_dialog_t qdlg = { - -1, -1, 58, - N_("Search"), "[Input Line Keys]", + WRect r = { -1, -1, 0, 58 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Search"), "[Input Line Keys]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, N_("Enter search string:"), input_label_above, INPUT_LAST_TEXT, @@ -226,11 +227,12 @@ edit_dialog_replace_show (WEdit * edit, const char *search_default, const char * }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 58, - N_("Replace"), "[Input Line Keys]", + WRect r = { -1, -1, 0, 58 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Replace"), "[Input Line Keys]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, N_("Enter search string:"), input_label_above, search_default, @@ -284,14 +286,14 @@ edit_dialog_replace_prompt_show (WEdit * edit, char *from_text, char *to_text, i int retval; if (xpos == -1) - xpos = w->x + option_line_state_width + 1; + xpos = w->rect.x + option_line_state_width + 1; if (ypos == -1) - ypos = w->y + w->lines / 2; + ypos = w->rect.y + w->rect.lines / 2; /* Sometimes menu can hide replaced text. I don't like it */ if ((edit->curs_row >= ypos - 1) && (edit->curs_row <= ypos + dlg_height - 1)) ypos -= dlg_height; - dlg_width = WIDGET (w->owner)->cols - xpos - 1; + dlg_width = WIDGET (w->owner)->rect.cols - xpos - 1; g_snprintf (tmp, sizeof (tmp), "\"%s\"", from_text); repl_from = g_strdup (str_trunc (tmp, dlg_width - 7)); @@ -319,11 +321,12 @@ edit_dialog_replace_prompt_show (WEdit * edit, char *from_text, char *to_text, i }; #endif //WIN32 - quick_dialog_t qdlg = { - ypos, xpos, -1, - N_("Confirm replace"), NULL, + WRect r = { ypos, xpos, 0, -1 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Confirm replace"), NULL, quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABEL (qc, repl_from, NULL); @@ -384,10 +387,10 @@ edit_get_search_line_type (mc_search_t * search) if (search->search_type != MC_SEARCH_T_REGEX) return search_line_type; - if (*search->original == '^') + if (search->original.str->str[0] == '^') search_line_type |= AT_START_LINE; - if (search->original[search->original_len - 1] == '$') + if (search->original.str->str[search->original.str->len - 1] == '$') search_line_type |= AT_END_LINE; return search_line_type; } @@ -573,9 +576,9 @@ edit_find (edit_search_status_msg_t * esm, gsize * len) { gboolean ok; - if (search_end > (off_t) (search_start + edit->search->original_len) + if (search_end > (off_t) (search_start + edit->search->original.str->len) && mc_search_is_fixed_search_str (edit->search)) - search_end = search_start + edit->search->original_len; + search_end = search_start + edit->search->original.str->len; ok = mc_search_run (edit->search, (void *) esm, search_start, search_end, len); @@ -827,12 +830,15 @@ edit_search_status_update_cb (status_msg_t * sm) if (esm->first) { - int wd_width; Widget *lw = WIDGET (ssm->label); - - wd_width = MAX (wd->cols, lw->cols + 6); - widget_set_size (wd, wd->y, wd->x, wd->lines, wd_width); - widget_set_size (lw, lw->y, wd->x + (wd->cols - lw->cols) / 2, lw->lines, lw->cols); + WRect r; + + r = wd->rect; + r.cols = MAX (r.cols, lw->rect.cols + 6); + widget_set_size_rect (wd, &r); + r = lw->rect; + r.x = wd->rect.x + (wd->rect.cols - r.cols) / 2; + widget_set_size_rect (lw, &r); esm->first = FALSE; } @@ -1009,7 +1015,7 @@ edit_replace_cmd (WEdit * edit, gboolean again) long l; int prompt; - l = edit->curs_row - WIDGET (edit)->lines / 3; + l = edit->curs_row - WIDGET (edit)->rect.lines / 3; if (l > 0) edit_scroll_downward (edit, l); if (l < 0) diff --git a/mcsrc/src/editor/editwidget.c b/mcsrc/src/editor/editwidget.c index 7aa10d32..4dd95079 100644 --- a/mcsrc/src/editor/editwidget.c +++ b/mcsrc/src/editor/editwidget.c @@ -6,7 +6,7 @@ Written by: Paul Sheer, 1996, 1997 - Andrew Borodin 2012, 2013 + Andrew Borodin 2012-2022 This file is part of the Midnight Commander. @@ -164,20 +164,21 @@ edit_about (void) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 40, - N_("About"), "[Internal File Editor]", + WRect r = { -1, -1, 0, 40 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("About"), "[Internal File Editor]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick /* *INDENT-OFF* */ qc = XQUICK_LABEL (qc, ver, NULL), qc = XQUICK_SEPARATOR (qc, TRUE), qc = XQUICK_LABEL (qc, N_("A user friendly text editor\n" - "written for the Midnight Commander."), NULL), + "written for the Midnight Commander."), NULL), qc = XQUICK_SEPARATOR (qc, FALSE), - qc = XQUICK_LABEL (qc, N_("Copyright (C) 1996-2021 the Free Software Foundation"), NULL), + qc = XQUICK_LABEL (qc, N_("Copyright (C) 1996-2022 the Free Software Foundation"), NULL), qc = XQUICK_START_BUTTONS (qc, TRUE, TRUE), qc = XQUICK_BUTTON (qc, N_("&OK"), B_ENTER, NULL, NULL), qc = XQUICK_END (qc); @@ -236,8 +237,10 @@ edit_restore_size (WEdit * edit) static void edit_window_move (WEdit * edit, long command) { - Widget *w = WIDGET (edit); - Widget *wh = WIDGET (w->owner); + Widget *we = WIDGET (edit); + Widget *wo = WIDGET (we->owner); + WRect *w = &we->rect; + const WRect *wh = &wo->rect; switch (command) { @@ -250,7 +253,7 @@ edit_window_move (WEdit * edit, long command) w->y++; break; case CK_Left: - if (w->x + w->cols > wh->x) + if (w->x + wh->cols > wh->x) w->x--; break; case CK_Right: @@ -262,7 +265,7 @@ edit_window_move (WEdit * edit, long command) } edit->force |= REDRAW_PAGE; - widget_draw (WIDGET (w->owner)); + widget_draw (wo); } /* --------------------------------------------------------------------------------------------- */ @@ -276,8 +279,10 @@ edit_window_move (WEdit * edit, long command) static void edit_window_resize (WEdit * edit, long command) { - Widget *w = WIDGET (edit); - Widget *wh = WIDGET (w->owner); + Widget *we = WIDGET (edit); + Widget *wo = WIDGET (we->owner); + WRect *w = &we->rect; + const WRect *wh = &wo->rect; switch (command) { @@ -302,7 +307,7 @@ edit_window_resize (WEdit * edit, long command) } edit->force |= REDRAW_COMPLETELY; - widget_draw (WIDGET (w->owner)); + widget_draw (wo); } /* --------------------------------------------------------------------------------------------- */ @@ -352,7 +357,8 @@ edit_window_list (const WDialog * h) vfs_path_as_str (e->filename_vpath)); listbox_add_item (listbox->list, LISTBOX_APPEND_AT_END, get_hotkey (i++), - str_term_trim (fname, WIDGET (listbox->list)->cols - 2), e, FALSE); + str_term_trim (fname, WIDGET (listbox->list)->rect.cols - 2), e, + FALSE); g_free (fname); } @@ -411,13 +417,12 @@ static cb_ret_t edit_dialog_command_execute (WDialog * h, long command) { WGroup *g = GROUP (h); - Widget *wh = WIDGET (h); cb_ret_t ret = MSG_HANDLED; switch (command) { case CK_EditNew: - edit_add_window (h, wh->y + 1, wh->x, wh->lines - 2, wh->cols, NULL, 0); + edit_load_file_from_filename (h, NULL, 0); break; case CK_EditFile: edit_load_cmd (h); @@ -901,7 +906,7 @@ edit_dialog_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) top = l; /* Handle fullscreen/close buttons in the top line */ - x = w->cols - 6; + x = w->rect.cols - 6; if (top != NULL && event->x >= x) { @@ -939,17 +944,10 @@ edit_dialog_bg_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm switch (msg) { case MSG_INIT: - { - Widget *wo = WIDGET (w->owner); - - w->y = wo->y + 1; - w->x = wo->x; - w->lines = wo->lines - 2; - w->cols = wo->cols; - w->pos_flags |= WPOS_KEEP_ALL; - - return MSG_HANDLED; - } + w->rect = WIDGET (w->owner)->rect; + rect_grow (&w->rect, -1, 0); + w->pos_flags |= WPOS_KEEP_ALL; + return MSG_HANDLED; default: return background_callback (w, sender, msg, parm, data); @@ -1035,7 +1033,8 @@ static void edit_mouse_handle_move_resize (Widget * w, mouse_msg_t msg, mouse_event_t * event) { WEdit *edit = (WEdit *) (w); - Widget *h = WIDGET (w->owner); + WRect *r = &w->rect; + const WRect *h = &CONST_WIDGET (w->owner)->rect; int global_x, global_y; if (msg == MSG_MOUSE_UP) @@ -1057,8 +1056,8 @@ edit_mouse_handle_move_resize (Widget * w, mouse_msg_t msg, mouse_event_t * even return; /* Convert point to global coordinates for easier calculations. */ - global_x = event->x + w->x; - global_y = event->y + w->y; + global_x = event->x + r->x; + global_y = event->y + r->y; /* Clamp the point to the dialog's client area. */ global_y = CLAMP (global_y, h->y + 1, h->y + h->lines - 2); /* Status line, buttonbar */ @@ -1066,13 +1065,13 @@ edit_mouse_handle_move_resize (Widget * w, mouse_msg_t msg, mouse_event_t * even if (edit->drag_state == MCEDIT_DRAG_MOVE) { - w->y = global_y; - w->x = global_x - edit->drag_state_start; + r->y = global_y; + r->x = global_x - edit->drag_state_start; } else if (edit->drag_state == MCEDIT_DRAG_RESIZE) { - w->lines = MAX (WINDOW_MIN_LINES, global_y - w->y + 1); - w->cols = MAX (WINDOW_MIN_COLS, global_x - w->x + 1); + r->lines = MAX (WINDOW_MIN_LINES, global_y - r->y + 1); + r->cols = MAX (WINDOW_MIN_COLS, global_x - r->x + 1); } edit->force |= REDRAW_COMPLETELY; /* Not really needed as WEdit's MSG_DRAW already does this. */ @@ -1099,7 +1098,7 @@ edit_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) /* location of 'Close' and 'Toggle fullscreen' pictograms */ int close_x, toggle_fullscreen_x; - close_x = (w->cols - 1) - dx - 1; + close_x = (w->rect.cols - 1) - dx - 1; toggle_fullscreen_x = close_x - 3; if (edit->drag_state != MCEDIT_DRAG_NONE) @@ -1113,7 +1112,7 @@ edit_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) * system channel it to the overlapping buttonbar instead. We have to do * this because a WEdit has the WOP_TOP_SELECT flag, which makes it above * the buttonbar in Z-order. */ - if (msg == MSG_MOUSE_DOWN && (event->y + w->y == LINES - 1)) + if (msg == MSG_MOUSE_DOWN && (event->y + w->rect.y == LINES - 1)) { event->result.abort = TRUE; return; @@ -1144,7 +1143,7 @@ edit_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) break; } - if (event->y == w->lines - 1 && event->x == w->cols - 1) + if (event->y == w->rect.lines - 1 && event->x == w->rect.cols - 1) { /* bottom-right corner -- start window resize */ edit_execute_cmd (edit, CK_WindowResize, -1); @@ -1275,7 +1274,8 @@ edit_files (const GList * files) edit_dlg->bg = WIDGET (background_new - (1, 0, wd->lines - 2, wd->cols, EDITOR_BACKGROUND, ' ', edit_dialog_bg_callback)); + (1, 0, wd->rect.lines - 2, wd->rect.cols, EDITOR_BACKGROUND, ' ', + edit_dialog_bg_callback)); group_add_widget (g, edit_dlg->bg); menubar = menubar_new (NULL); @@ -1291,8 +1291,7 @@ edit_files (const GList * files) mcedit_arg_t *f = (mcedit_arg_t *) file->data; gboolean f_ok; - f_ok = edit_add_window (edit_dlg, wd->y + 1, wd->x, wd->lines - 2, wd->cols, f->file_vpath, - f->line_number); + f_ok = edit_load_file_from_filename (edit_dlg, f->file_vpath, f->line_number); /* at least one file has been opened succefully */ ok = ok || f_ok; } @@ -1372,9 +1371,7 @@ edit_update_screen (WEdit * e) void edit_save_size (WEdit * edit) { - Widget *w = WIDGET (edit); - - rect_init (&edit->loc_prev, w->y, w->x, w->lines, w->cols); + edit->loc_prev = WIDGET (edit)->rect; } /* --------------------------------------------------------------------------------------------- */ @@ -1393,12 +1390,12 @@ edit_save_size (WEdit * edit) */ gboolean -edit_add_window (WDialog * h, int y, int x, int lines, int cols, const vfs_path_t * f, long fline) +edit_add_window (WDialog * h, const WRect * r, const vfs_path_t * f, long fline) { WEdit *edit; Widget *w; - edit = edit_init (NULL, y, x, lines, cols, f, fline); + edit = edit_init (NULL, r, f, fline); if (edit == NULL) return FALSE; @@ -1450,7 +1447,7 @@ edit_handle_move_resize (WEdit * edit, long command) * make a subsequent mouse drag pull the frame from its middle. * (We can instead choose '0' to pull it from the corner.) */ - edit->drag_state_start = w->cols / 2; + edit->drag_state_start = w->rect.cols / 2; ret = TRUE; break; case CK_WindowResize: @@ -1555,10 +1552,12 @@ edit_toggle_fullscreen (WEdit * edit) } else { - Widget *h = WIDGET (w->owner); + WRect r; edit_save_size (edit); - widget_set_size (w, h->y + 1, h->x, h->lines - 2, h->cols); + r = WIDGET (w->owner)->rect; + rect_grow (&r, -1, 0); + widget_set_size_rect (w, &r); /* follow screen size on resize */ w->pos_flags = WPOS_KEEP_ALL; edit->force |= REDRAW_PAGE; diff --git a/mcsrc/src/editor/etags.c b/mcsrc/src/editor/etags.c index ce548e7f..d87fcc08 100644 --- a/mcsrc/src/editor/etags.c +++ b/mcsrc/src/editor/etags.c @@ -12,6 +12,7 @@ Written by: Ilia Maslakov , 2009 Slava Zanko , 2009 + Andrew Borodin , 2010-2022 This file is part of the Midnight Commander. @@ -313,7 +314,7 @@ editcmd_dialog_select_definition_add (gpointer data, gpointer user_data) static void editcmd_dialog_select_definition_show (WEdit * edit, char *match_expr, GPtrArray * def_hash) { - const Widget *we = CONST_WIDGET (edit); + const WRect *w = &CONST_WIDGET (edit)->rect; int start_x, start_y, offset; char *curr = NULL; WDialog *def_dlg; @@ -324,14 +325,14 @@ editcmd_dialog_select_definition_show (WEdit * edit, char *match_expr, GPtrArray /* calculate the dialog metrics */ def_dlg_h = def_hash->len + 2; def_dlg_w = COLS - 2; /* will be clarified later */ - start_x = we->x + edit->curs_col + edit->start_col + EDIT_TEXT_HORIZONTAL_OFFSET + + start_x = w->x + edit->curs_col + edit->start_col + EDIT_TEXT_HORIZONTAL_OFFSET + (edit->fullscreen ? 0 : 1) + option_line_state_width; - start_y = we->y + edit->curs_row + EDIT_TEXT_VERTICAL_OFFSET + (edit->fullscreen ? 0 : 1) + 1; + start_y = w->y + edit->curs_row + EDIT_TEXT_VERTICAL_OFFSET + (edit->fullscreen ? 0 : 1) + 1; if (start_x < 0) start_x = 0; - if (start_x < we->x + 1) - start_x = we->x + 1 + option_line_state_width; + if (start_x < w->x + 1) + start_x = w->x + 1 + option_line_state_width; if (def_dlg_h > LINES - 2) def_dlg_h = LINES - 2; diff --git a/mcsrc/src/editor/syntax.c b/mcsrc/src/editor/syntax.c index 82442638..717de485 100644 --- a/mcsrc/src/editor/syntax.c +++ b/mcsrc/src/editor/syntax.c @@ -57,7 +57,7 @@ #include "lib/global.h" #include "lib/search.h" /* search engine */ #include "lib/skin.h" -#include "lib/fileloc.h" /* EDIT_HOME_DIR, EDIT_HOME_SYNTAX_FILE */ +#include "lib/fileloc.h" /* EDIT_SYNTAX_DIR, EDIT_SYNTAX_FILE */ #include "lib/strutil.h" /* utf string functions */ #include "lib/util.h" #include "lib/widget.h" /* Listbox, message() */ @@ -887,20 +887,14 @@ open_include_file (const char *filename) g_free (error_file_name); error_file_name = - g_build_filename (mc_config_get_data_path (), EDIT_HOME_DIR, filename, (char *) NULL); - f = fopen (error_file_name, "r"); - if (f != NULL) - return f; - - g_free (error_file_name); - error_file_name = g_build_filename (mc_global.sysconfig_dir, "syntax", filename, (char *) NULL); + g_build_filename (mc_config_get_data_path (), EDIT_SYNTAX_DIR, filename, (char *) NULL); f = fopen (error_file_name, "r"); if (f != NULL) return f; g_free (error_file_name); error_file_name = - g_build_filename (mc_global.share_data_dir, "syntax", filename, (char *) NULL); + g_build_filename (mc_global.share_data_dir, EDIT_SYNTAX_DIR, filename, (char *) NULL); return fopen (error_file_name, "r"); } @@ -1270,7 +1264,7 @@ edit_read_syntax_file (WEdit * edit, GPtrArray * pnames, const char *syntax_file f = fopen (syntax_file, "r"); if (f == NULL) { - lib_file = g_build_filename (mc_global.share_data_dir, "syntax", "Syntax", (char *) NULL); + lib_file = g_build_filename (mc_global.share_data_dir, EDIT_SYNTAX_FILE, (char *) NULL); f = fopen (lib_file, "r"); g_free (lib_file); if (f == NULL) @@ -1521,7 +1515,7 @@ edit_load_syntax (WEdit * edit, GPtrArray * pnames, const char *type) if (edit != NULL && edit->filename_vpath == NULL) return; - f = mc_config_get_full_path (EDIT_HOME_SYNTAX_FILE); + f = mc_config_get_full_path (EDIT_SYNTAX_FILE); if (edit != NULL) r = edit_read_syntax_file (edit, pnames, f, vfs_path_as_str (edit->filename_vpath), get_first_editor_line (edit), diff --git a/mcsrc/src/file_history.c b/mcsrc/src/file_history.c index 4c7fe466..780933db 100644 --- a/mcsrc/src/file_history.c +++ b/mcsrc/src/file_history.c @@ -5,7 +5,7 @@ Free Software Foundation, Inc. Written by: - Andrew Borodin , 2019. + Andrew Borodin , 2019-2022 This file is part of the Midnight Commander. @@ -217,7 +217,7 @@ show_file_history (const Widget * w, int *action) file_list = g_list_last (file_list); - history_descriptor_init (&hd, w->y, w->x, file_list, 0); + history_descriptor_init (&hd, w->rect.y, w->rect.x, file_list, 0); /* redefine list-specific functions */ hd.create = file_history_create_item; hd.release = file_history_release_item; diff --git a/mcsrc/src/filemanager/achown.c b/mcsrc/src/filemanager/achown.c index eb228d57..655abb17 100644 --- a/mcsrc/src/filemanager/achown.c +++ b/mcsrc/src/filemanager/achown.c @@ -542,22 +542,22 @@ user_group_button_cb (WButton * button, int action) if (is_owner) { title = _("owner"); - lxx = WIDGET (b_user)->x + 1; + lxx = WIDGET (b_user)->rect.x + 1; } else { title = _("group"); - lxx = WIDGET (b_group)->x + 1; + lxx = WIDGET (b_group)->rect.x + 1; } chl_dlg = - dlg_create (TRUE, wh->y - 1, lxx, wh->lines + 2, 17, WPOS_KEEP_DEFAULT, TRUE, + dlg_create (TRUE, wh->rect.y - 1, lxx, wh->rect.lines + 2, 17, WPOS_KEEP_DEFAULT, TRUE, dialog_colors, chl_callback, NULL, "[Advanced Chown]", title); /* get new listboxes */ chl_list = - listbox_new (1, 1, WIDGET (chl_dlg)->lines - 2, WIDGET (chl_dlg)->cols - 2, FALSE, - NULL); + listbox_new (1, 1, WIDGET (chl_dlg)->rect.lines - 2, WIDGET (chl_dlg)->rect.cols - 2, + FALSE, NULL); listbox_add_item (chl_list, LISTBOX_APPEND_AT_END, 0, "", NULL, FALSE); if (is_owner) { @@ -782,14 +782,15 @@ advanced_chown_dlg_create (WPanel * panel) group_add_widget (ch_grp, hline_new (y++, -1, -1)); advanced_chown_but[i].id = group_add_widget (ch_grp, button_new (y, - WIDGET (ch_dlg)->cols / 2 - + WIDGET (ch_dlg)->rect.cols / 2 - advanced_chown_but[i].len, advanced_chown_but[i].ret_cmd, advanced_chown_but[i].flags, advanced_chown_but[i].text, NULL)); i++; advanced_chown_but[i].id = group_add_widget (ch_grp, - button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, + button_new (y, + WIDGET (ch_dlg)->rect.cols / 2 + 1, advanced_chown_but[i].ret_cmd, advanced_chown_but[i].flags, advanced_chown_but[i].text, NULL)); @@ -800,14 +801,14 @@ advanced_chown_dlg_create (WPanel * panel) group_add_widget (ch_grp, hline_new (y++, -1, -1)); advanced_chown_but[i].id = group_add_widget (ch_grp, button_new (y, - WIDGET (ch_dlg)->cols / 2 - + WIDGET (ch_dlg)->rect.cols / 2 - advanced_chown_but[i].len, advanced_chown_but[i].ret_cmd, advanced_chown_but[i].flags, advanced_chown_but[i].text, NULL)); i++; advanced_chown_but[i].id = group_add_widget (ch_grp, - button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, + button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1, advanced_chown_but[i].ret_cmd, advanced_chown_but[i].flags, advanced_chown_but[i].text, NULL)); @@ -1032,7 +1033,7 @@ advanced_chown_cmd (WPanel * panel) file_idx = files_on_begin == 1 ? 1 : (files_on_begin - panel->marked + 1); label_set_textv (l_filename, "%s (%d/%d)", - str_fit_to_term (fname->str, WIDGET (ch_dlg)->cols - 20, J_LEFT_FIT), + str_fit_to_term (fname->str, WIDGET (ch_dlg)->rect.cols - 20, J_LEFT_FIT), file_idx, files_on_begin); update_ownership (); diff --git a/mcsrc/src/filemanager/boxes.c b/mcsrc/src/filemanager/boxes.c index 0e323aaa..e5aa9aea 100644 --- a/mcsrc/src/filemanager/boxes.c +++ b/mcsrc/src/filemanager/boxes.c @@ -7,7 +7,7 @@ Written by: Miguel de Icaza, 1994, 1995 Jakub Jelinek, 1995 - Andrew Borodin , 2009-2015 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -190,13 +190,11 @@ skin_dlg_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void case MSG_RESIZE: { WDialog *d = DIALOG (w); - Widget *wd = WIDGET (d->data); - int y, x; - WRect r; + const WRect *wd = &WIDGET (d->data)->rect; + WRect r = w->rect; - y = wd->y + (wd->lines - w->lines) / 2; - x = wd->x + wd->cols / 2; - rect_init (&r, y, x, w->lines, w->cols); + r.y = wd->y + (wd->lines - r.lines) / 2; + r.x = wd->x + wd->cols / 2; return dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r); } @@ -406,15 +404,16 @@ tree_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *da { case MSG_RESIZE: { - WRect r; + WRect r = w->rect; Widget *bar; - rect_init (&r, w->y, w->x, LINES - 9, COLS - 20); + r.lines = LINES - 9; + r.cols = COLS - 20; dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r); bar = WIDGET (find_buttonbar (h)); - bar->x = 0; - bar->y = LINES - 1; + bar->rect.x = 0; + bar->rect.y = LINES - 1; return MSG_HANDLED; } @@ -598,11 +597,12 @@ configure_box (void) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 60, - N_("Configure options"), "[Configuration]", + WRect r = { -1, -1, 0, 60 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Configure options"), "[Configuration]", quick_widgets, configure_callback, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_START_COLUMNS (qc), @@ -664,7 +664,12 @@ configure_box (void) #endif if (quick_dialog (&qdlg) == B_ENTER) - old_esc_mode_timeout = atoi (time_out_new); + { + if (time_out_new[0] == '\0') + old_esc_mode_timeout = 0; + else + old_esc_mode_timeout = atoi (time_out_new); + } g_free (time_out_new); } @@ -701,11 +706,12 @@ appearance_box (void) }; #endif - quick_dialog_t qdlg = { - -1, -1, 54, - N_("Appearance"), "[Appearance]", + WRect r = { -1, -1, 0, 54 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Appearance"), "[Appearance]", quick_widgets, appearance_box_callback, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_START_COLUMNS (qc), @@ -800,11 +806,12 @@ panel_options_box (void) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 60, - N_("Panel options"), "[Panel options]", + WRect r = { -1, -1, 0, 60 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Panel options"), "[Panel options]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_START_COLUMNS (qc), @@ -923,11 +930,12 @@ panel_listing_box (WPanel * panel, int num, char **userp, char **minip, gboolean }; #endif //WIN32, quick - quick_dialog_t qdlg = { - -1, -1, 48, - N_("Listing format"), "[Listing Format...]", + WRect r = { -1, -1, 0, 48 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Listing format"), "[Listing Format...]", quick_widgets, panel_listing_callback, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_START_COLUMNS (qc), @@ -1038,11 +1046,12 @@ sort_box (dir_sort_options_t * op, const panel_field_t * sort_field) }; #endif //WIN32, quick - quick_dialog_t qdlg = { - -1, -1, 40, - N_("Sort order"), "[Sort Order...]", + WRect r = { -1, -1, 0, 40 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Sort order"), "[Sort Order...]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_START_COLUMNS (qc), @@ -1095,11 +1104,12 @@ confirm_box (void) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 46, - N_("Confirmation"), "[Confirmation]", + WRect r = { -1, -1, 0, 46 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Confirmation"), "[Confirmation]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_CHECKBOX (qc, Q_("Confirmation|&Delete"), &confirm_delete, NULL), @@ -1149,11 +1159,12 @@ display_bits_box (void) }; #endif //WIN32,quick - quick_dialog_t qdlg = { - -1, -1, 46, - _("Display bits"), "[Display bits]", + WRect r = { -1, -1, 0, 46 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, _("Display bits"), "[Display bits]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_RADIO (qc, 4, display_bits_str, ¤t_mode, NULL), @@ -1299,20 +1310,20 @@ display_bits_box (void) QUICK_END /* *INDENT-ON* */ }; +#endif //WIN32,quick - quick_dialog_t qdlg = { - -1, -1, 46, - N_("Display bits"), "[Display bits]", + WRect r = { -1, -1, 0, 46 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Display bits"), "[Display bits]", +#if defined(WIN32) //WIN32, quick/alert-options + quick_widgets, display_bits_callback, NULL +#else quick_widgets, NULL, NULL - }; #endif //WIN32,quick + ); #if defined(WIN32) //WIN32, quick/alert-options - quick_dialog_t qdlg = { - -1, -1, 46, - N_("Display bits"), "[Display bits]", - quick_widgets, display_bits_callback, NULL}; - const char *visible_options[] = { N_("Invisible"), N_("Flash window"), @@ -1401,14 +1412,14 @@ tree_box (const char *current_dir) g = GROUP (dlg); wd = WIDGET (dlg); - mytree = tree_new (2, 2, wd->lines - 6, wd->cols - 5, FALSE); + mytree = tree_new (2, 2, wd->rect.lines - 6, wd->rect.cols - 5, FALSE); group_add_widget_autopos (g, mytree, WPOS_KEEP_ALL, NULL); - group_add_widget_autopos (g, hline_new (wd->lines - 4, 1, -1), WPOS_KEEP_BOTTOM, NULL); + group_add_widget_autopos (g, hline_new (wd->rect.lines - 4, 1, -1), WPOS_KEEP_BOTTOM, NULL); bar = buttonbar_new (); group_add_widget (g, bar); /* restore ButtonBar coordinates after add_widget() */ - WIDGET (bar)->x = 0; - WIDGET (bar)->y = LINES - 1; + WIDGET (bar)->rect.x = 0; + WIDGET (bar)->rect.y = LINES - 1; if (dlg_run (dlg) == B_ENTER) { @@ -1481,9 +1492,10 @@ configure_vfs_box (void) }; #endif //WIN32, quick - quick_dialog_t qdlg = { - -1, -1, 56, - N_("Virtual File System Setting"), "[Virtual FS]", + WRect r = { -1, -1, 0, 56 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Virtual File System Setting"), "[Virtual FS]", quick_widgets, #ifdef ENABLE_VFS_FTP confvfs_callback, @@ -1491,7 +1503,7 @@ configure_vfs_box (void) NULL, #endif NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, N_("Timeout for freeing VFSs (sec):"), input_label_left, @@ -1527,7 +1539,10 @@ configure_vfs_box (void) if (quick_dialog (&qdlg) != B_CANCEL) { /* cppcheck-suppress uninitvar */ - vfs_timeout = atoi (ret_timeout); + if (ret_timeout[0] == '\0') + vfs_timeout = 0; + else + vfs_timeout = atoi (ret_timeout); g_free (ret_timeout); if (vfs_timeout < 0 || vfs_timeout > 10000) @@ -1540,7 +1555,10 @@ configure_vfs_box (void) /* cppcheck-suppress uninitvar */ ftpfs_proxy_host = ret_ftp_proxy; /* cppcheck-suppress uninitvar */ - ftpfs_directory_timeout = atoi (ret_directory_timeout); + if (ret_directory_timeout[0] == '\0') + ftpfs_directory_timeout = 0; + else + ftpfs_directory_timeout = atoi (ret_directory_timeout); g_free (ret_directory_timeout); #endif } @@ -1568,15 +1586,16 @@ cd_box (const WPanel * panel) }; #endif //WIN32, quick - quick_dialog_t qdlg = { - w->y + w->lines - 6, w->x, w->cols, - N_("Quick cd"), "[Quick cd]", + WRect r = { w->rect.y + w->rect.lines - 6, w->rect.x, 0, w->rect.cols }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Quick cd"), "[Quick cd]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, N_("cd"), input_label_left, "", "input", &my_str, NULL, FALSE, TRUE, - INPUT_COMPLETE_FILENAMES | INPUT_COMPLETE_CD), + INPUT_COMPLETE_FILENAMES | INPUT_COMPLETE_CD), qc = XQUICK_END (qc); assert(qc == (quick_widgets + (sizeof(quick_widgets)/sizeof(quick_widgets[0])))); #endif //WIN32, quick @@ -1609,11 +1628,12 @@ symlink_box (const vfs_path_t * existing_vpath, const vfs_path_t * new_vpath, }; #endif //WIN32, quick - quick_dialog_t qdlg = { - -1, -1, 64, - N_("Symbolic link"), "[File Menu]", + WRect r = { -1, -1, 0, 64 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Symbolic link"), "[File Menu]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, N_("Existing filename (filename symlink will point to):"), @@ -1707,70 +1727,3 @@ jobs_box (void) #endif /* ENABLE_BACKGROUND */ /* --------------------------------------------------------------------------------------------- */ - -#ifdef ENABLE_VFS_SMB -struct smb_authinfo * -vfs_smb_get_authinfo (const char *host, const char *share, const char *domain, const char *user) -{ - char *label; - struct smb_authinfo *return_value = NULL; - - if (domain == NULL) - domain = ""; - if (user == NULL) - user = ""; - - label = g_strdup_printf (_("Password for \\\\%s\\%s"), host, share); - - { - char *ret_domain, *ret_user, *ret_password; - -#if defined(WIN32) //WIN32, quick -#error Quick widget not implementated ... -#endif - - quick_widget_t quick_widgets[] = { - /* *INDENT-OFF* */ - QUICK_LABEL (label, NULL), - QUICK_SEPARATOR (TRUE), - QUICK_START_COLUMNS, - QUICK_LABEL (N_("Domain:"), NULL), - QUICK_SEPARATOR (FALSE), - QUICK_LABEL (N_("Username:"), NULL), - QUICK_SEPARATOR (FALSE), - QUICK_LABEL (N_("Password:"), NULL), - QUICK_NEXT_COLUMN, - QUICK_INPUT (domain, "auth_domain", &ret_domain, NULL, FALSE, FALSE, INPUT_COMPLETE_HOSTNAMES), - QUICK_SEPARATOR (FALSE), - QUICK_INPUT (user, "auth_name", &ret_user, NULL, FALSE, FALSE, INPUT_COMPLETE_USERNAMES), - QUICK_SEPARATOR (FALSE), - QUICK_INPUT ("", "auth_password", &ret_password, NULL, TRUE, FALSE, INPUT_COMPLETE_NONE), - QUICK_STOP_COLUMNS, - QUICK_BUTTONS_OK_CANCEL, - QUICK_END - /* *INDENT-ON* */ - }; - - quick_dialog_t qdlg = { - -1, -1, 40, - N_("SMB authentication"), "[Smb Authinfo]", - quick_widgets, NULL, NULL - }; - - if (quick_dialog (&qdlg) != B_CANCEL) - { - return_value = vfs_smb_authinfo_new (host, share, ret_domain, ret_user, ret_password); - - g_free (ret_domain); - g_free (ret_user); - g_free (ret_password); - } - } - - g_free (label); - - return return_value; -} -#endif /* ENABLE_VFS_SMB */ - -/* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/src/filemanager/chattr.c b/mcsrc/src/filemanager/chattr.c index e38ec76b..b8967eac 100644 --- a/mcsrc/src/filemanager/chattr.c +++ b/mcsrc/src/filemanager/chattr.c @@ -5,7 +5,7 @@ Free Software Foundation, Inc. Written by: - Andrew Borodin , 2020 + Andrew Borodin , 2020-2022 This file is part of the Midnight Commander. @@ -294,19 +294,19 @@ fileattrtext_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, color = COLOR_NORMAL; tty_setcolor (color); - if (w->cols > fat->filename_width) + if (w->rect.cols > fat->filename_width) { - widget_gotoyx (w, 0, (w->cols - fat->filename_width) / 2); + widget_gotoyx (w, 0, (w->rect.cols - fat->filename_width) / 2); tty_print_string (fat->filename); } else { widget_gotoyx (w, 0, 0); - tty_print_string (str_trunc (fat->filename, w->cols)); + tty_print_string (str_trunc (fat->filename, w->rect.cols)); } /* hope that w->cols is greater than check_attr_num */ - widget_gotoyx (w, 1, (w->cols - check_attr_num) / 2); + widget_gotoyx (w, 1, (w->rect.cols - check_attr_num) / 2); for (i = 0; i < check_attr_num; i++) { /* Do not set new color for each symbol. Try to use previous color. */ @@ -334,14 +334,14 @@ fileattrtext_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, case MSG_RESIZE: { - Widget *wo = WIDGET (w->owner); + const WRect *wo = &CONST_WIDGET (w->owner)->rect; widget_default_callback (w, sender, msg, parm, data); /* intially file name may be wider than screen */ if (fat->filename_width > wo->cols - wx * 2) { - w->x = wo->x + wx; - w->cols = wo->cols - wx * 2; + w->rect.x = wo->x + wx; + w->rect.cols = wo->cols - wx * 2; } return MSG_HANDLED; } @@ -360,14 +360,15 @@ fileattrtext_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, static WFileAttrText * fileattrtext_new (int y, int x, const char *filename, unsigned long attr) { + WRect r = { y, x, 2, 1 }; WFileAttrText *fat; - int width, cols; + int width; width = str_term_width1 (filename); - cols = MAX (width, (int) check_attr_num); + r.cols = MAX (width, (int) check_attr_num); fat = g_new (WFileAttrText, 1); - widget_init (WIDGET (fat), y, x, 2, cols, fileattrtext_callback, NULL); + widget_init (WIDGET (fat), &r, fileattrtext_callback, NULL); fat->filename = g_strdup (filename); fat->filename_width = width; @@ -413,27 +414,27 @@ chattrboxes_draw_scrollbar (const WChattrBoxes * cb) int i; /* Are we at the top? */ - widget_gotoyx (w, 0, w->cols); + widget_gotoyx (w, 0, w->rect.cols); if (cb->top == 0) tty_print_one_vline (TRUE); else tty_print_char ('^'); - max_line = w->lines - 1; + max_line = w->rect.lines - 1; /* Are we at the bottom? */ - widget_gotoyx (w, max_line, w->cols); - if (cb->top + w->lines == check_attr_mod_num || w->lines >= check_attr_mod_num) + widget_gotoyx (w, max_line, w->rect.cols); + if (cb->top + w->rect.lines == check_attr_mod_num || w->rect.lines >= check_attr_mod_num) tty_print_one_vline (TRUE); else tty_print_char ('v'); /* Now draw the nice relative pointer */ - line = 1 + (cb->pos * (w->lines - 2)) / check_attr_mod_num; + line = 1 + (cb->pos * (w->rect.lines - 2)) / check_attr_mod_num; for (i = 1; i < max_line; i++) { - widget_gotoyx (w, i, w->cols); + widget_gotoyx (w, i, w->rect.cols); if (i != line) tty_print_one_vline (TRUE); else @@ -453,14 +454,14 @@ chattrboxes_draw (WChattrBoxes * cb) colors = widget_get_colors (w); tty_setcolor (colors[DLG_COLOR_NORMAL]); - tty_fill_region (w->y, w->x - 1, w->lines, w->cols + 1, ' '); + tty_fill_region (w->rect.y, w->rect.x - 1, w->rect.lines, w->rect.cols + 1, ' '); /* redraw checkboxes */ group_default_callback (w, NULL, MSG_DRAW, 0, NULL); /* draw scrollbar */ tty_setcolor (colors[DLG_COLOR_NORMAL]); - if (!mc_global.tty.slow_terminal && check_attr_mod_num > w->lines) + if (!mc_global.tty.slow_terminal && check_attr_mod_num > w->rect.lines) chattrboxes_draw_scrollbar (cb); /* mark selected checkboxes */ @@ -525,7 +526,7 @@ checkboxes_save_state (const WChattrBoxes * cb) static cb_ret_t chattrboxes_down (WChattrBoxes * cb) { - if (cb->pos == cb->top + WIDGET (cb)->lines - 1) + if (cb->pos == cb->top + WIDGET (cb)->rect.lines - 1) { /* We are on the last checkbox. Keep this position. */ @@ -570,7 +571,7 @@ chattrboxes_page_down (WChattrBoxes * cb) } else { - int i = WIDGET (cb)->lines; + int i = WIDGET (cb)->rect.lines; checkboxes_save_state (cb); @@ -608,7 +609,7 @@ chattrboxes_end (WChattrBoxes * cb) checkboxes_save_state (cb); cb->pos = check_attr_mod_num - 1; - cb->top = cb->pos - WIDGET (cb)->lines + 1; + cb->top = cb->pos - WIDGET (cb)->rect.lines + 1; l = g_list_last (GROUP (cb)->widgets); chattrboxes_rename (cb); widget_select (WIDGET (l->data)); @@ -666,7 +667,7 @@ chattrboxes_page_up (WChattrBoxes * cb) } else { - int i = WIDGET (cb)->lines; + int i = WIDGET (cb)->rect.lines; checkboxes_save_state (cb); @@ -876,26 +877,23 @@ chattrboxes_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) /* --------------------------------------------------------------------------------------------- */ static WChattrBoxes * -chattrboxes_new (int y, int x, int height, int width) +chattrboxes_new (const WRect * r) { WChattrBoxes *cb; Widget *w; WGroup *cbg; int i; - if (height <= 0) - height = 1; - cb = g_new0 (WChattrBoxes, 1); w = WIDGET (cb); cbg = GROUP (cb); - group_init (cbg, y, x, height, width, chattrboxes_callback, chattrboxes_mouse_callback); + group_init (cbg, r, chattrboxes_callback, chattrboxes_mouse_callback); w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR; w->mouse_handler = chattrboxes_handle_mouse_event; w->keymap = chattr_map; /* create checkboxes */ - for (i = 0; i < height; i++) + for (i = 0; i < r->lines; i++) { int m; WCheck *check; @@ -975,6 +973,7 @@ chattr_dlg_create (WPanel * panel, const char *fname, unsigned long attr) WGroup *dg; WChattrBoxes *cb; const int cb_scrollbar_width = 1; + WRect r; /* prepate to set up checkbox states */ for (i = 0; i < check_attr_num; i++) @@ -988,11 +987,11 @@ chattr_dlg_create (WPanel * panel, const char *fname, unsigned long attr) if (!single_set) lines += 3; - if (lines >= mw->lines - 2) + if (lines >= mw->rect.lines - 2) { int dl; - dl = lines - (mw->lines - 2); + dl = lines - (mw->rect.lines - 2); lines -= dl; checkboxes_lines -= dl; } @@ -1006,18 +1005,22 @@ chattr_dlg_create (WPanel * panel, const char *fname, unsigned long attr) y = 2; file_attr = fileattrtext_new (y, wx, fname, attr); group_add_widget_autopos (dg, file_attr, WPOS_KEEP_TOP | WPOS_CENTER_HORZ, NULL); - y += WIDGET (file_attr)->lines; + y += WIDGET (file_attr)->rect.lines; group_add_widget (dg, hline_new (y++, -1, -1)); - if (cols < WIDGET (file_attr)->cols) + if (cols < WIDGET (file_attr)->rect.cols) { - cols = WIDGET (file_attr)->cols; - cols = MIN (cols, mw->cols - wx * 2); - widget_set_size (dw, dw->y, dw->x, lines, cols + wx * 2); + r = dw->rect; + cols = WIDGET (file_attr)->rect.cols; + cols = MIN (cols, mw->rect.cols - wx * 2); + r.cols = cols + wx * 2; + r.lines = lines; + widget_set_size_rect (dw, &r); } checkboxes_lines = MIN (check_attr_mod_num, checkboxes_lines); - cb = chattrboxes_new (y++, wx, checkboxes_lines, cols); + rect_init (&r, y++, wx, checkboxes_lines > 0 ? checkboxes_lines : 1, cols); + cb = chattrboxes_new (&r); group_add_widget_autopos (dg, cb, WPOS_KEEP_TOP | WPOS_KEEP_HORZ, NULL); y += checkboxes_lines - 1; @@ -1028,38 +1031,47 @@ chattr_dlg_create (WPanel * panel, const char *fname, unsigned long attr) if (i == 0 || i == BUTTONS - 2) group_add_widget (dg, hline_new (y++, -1, -1)); - chattr_but[i].button = WIDGET (button_new (y, dw->cols / 2 + 1 - chattr_but[i].width, + chattr_but[i].button = WIDGET (button_new (y, dw->rect.cols / 2 + 1 - chattr_but[i].width, chattr_but[i].ret_cmd, chattr_but[i].flags, chattr_but[i].text, NULL)); group_add_widget (dg, chattr_but[i].button); i++; - chattr_but[i].button = WIDGET (button_new (y++, dw->cols / 2 + 2, chattr_but[i].ret_cmd, - chattr_but[i].flags, chattr_but[i].text, NULL)); + chattr_but[i].button = + WIDGET (button_new (y++, dw->rect.cols / 2 + 2, chattr_but[i].ret_cmd, + chattr_but[i].flags, chattr_but[i].text, NULL)); group_add_widget (dg, chattr_but[i].button); /* two buttons in a row */ - cols = MAX (cols, chattr_but[i - 1].button->cols + 1 + chattr_but[i].button->cols); + cols = + MAX (cols, chattr_but[i - 1].button->rect.cols + 1 + chattr_but[i].button->rect.cols); } /* adjust dialog size and button positions */ cols += 6; - if (cols > dw->cols) + if (cols > dw->rect.cols) { - widget_set_size (dw, dw->y, dw->x, lines, cols); + r = dw->rect; + r.lines = lines; + r.cols = cols; + widget_set_size_rect (dw, &r); /* dialog center */ - cols = dw->x + dw->cols / 2 + 1; + cols = dw->rect.x + dw->rect.cols / 2 + 1; for (i = single_set ? (BUTTONS - 2) : 0; i < BUTTONS; i++) { Widget *b; b = chattr_but[i++].button; - widget_set_size (b, b->y, cols - b->cols, b->lines, b->cols); + r = b->rect; + r.x = cols - r.cols; + widget_set_size_rect (b, &r); b = chattr_but[i].button; - widget_set_size (b, b->y, cols + 1, b->lines, b->cols); + r = b->rect; + r.x = cols + 1; + widget_set_size_rect (b, &r); } } diff --git a/mcsrc/src/filemanager/chmod.c b/mcsrc/src/filemanager/chmod.c index 74a482f8..9e24eb10 100644 --- a/mcsrc/src/filemanager/chmod.c +++ b/mcsrc/src/filemanager/chmod.c @@ -209,8 +209,8 @@ chmod_refresh (const WDialog * h) for (i = 0; i < BUTTONS_PERM; i++) chmod_draw_select (h, i); - y = WIDGET (file_gb)->y + 1; - x = WIDGET (file_gb)->x + 2; + y = WIDGET (file_gb)->rect.y + 1; + x = WIDGET (file_gb)->rect.x + 2; tty_gotoyx (y, x); tty_print_string (file_info_labels[0]); @@ -372,11 +372,11 @@ chmod_dlg_create (WPanel * panel, const char *fname, const struct stat *sf_stat) for (; i < BUTTONS - 2; i++) { y = lines - chmod_but[i].y; - group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 - chmod_but[i].len, + group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 - chmod_but[i].len, chmod_but[i].ret_cmd, chmod_but[i].flags, chmod_but[i].text, NULL)); i++; - group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, + group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1, chmod_but[i].ret_cmd, chmod_but[i].flags, chmod_but[i].text, NULL)); } @@ -385,11 +385,11 @@ chmod_dlg_create (WPanel * panel, const char *fname, const struct stat *sf_stat) i = BUTTONS - 2; y = lines - chmod_but[i].y; group_add_widget (g, hline_new (y - 1, -1, -1)); - group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 - chmod_but[i].len, + group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 - chmod_but[i].len, chmod_but[i].ret_cmd, chmod_but[i].flags, chmod_but[i].text, NULL)); i++; - group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, chmod_but[i].ret_cmd, + group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1, chmod_but[i].ret_cmd, chmod_but[i].flags, chmod_but[i].text, NULL)); /* select first checkbox */ diff --git a/mcsrc/src/filemanager/chown.c b/mcsrc/src/filemanager/chown.c index befa5f6f..9f6c206d 100644 --- a/mcsrc/src/filemanager/chown.c +++ b/mcsrc/src/filemanager/chown.c @@ -258,11 +258,11 @@ chown_dlg_create (WPanel * panel) i = BUTTONS - 2; y = lines - chown_but[i].y; group_add_widget (g, hline_new (y - 1, -1, -1)); - group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 - chown_but[i].len, + group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 - chown_but[i].len, chown_but[i].ret_cmd, chown_but[i].flags, chown_but[i].text, NULL)); i++; - group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, chown_but[i].ret_cmd, + group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1, chown_but[i].ret_cmd, chown_but[i].flags, chown_but[i].text, NULL)); /* select first listbox */ diff --git a/mcsrc/src/filemanager/cmd.c b/mcsrc/src/filemanager/cmd.c index eaee17cf..730f16c7 100644 --- a/mcsrc/src/filemanager/cmd.c +++ b/mcsrc/src/filemanager/cmd.c @@ -6,7 +6,7 @@ Free Software Foundation, Inc. Written by: - Andrew Borodin , 2013-2015 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -167,40 +167,6 @@ do_edit (const vfs_path_t * what_vpath) /* --------------------------------------------------------------------------------------------- */ -static void -set_panel_filter_to (WPanel * p, char *filter) -{ - MC_PTR_FREE (p->filter); - - /* Three ways to clear filter: NULL, "", "*" */ - if (filter == NULL || filter[0] == '\0' || (filter[0] == '*' && filter[1] == '\0')) - g_free (filter); - else - p->filter = filter; - reread_cmd (); -} - -/* --------------------------------------------------------------------------------------------- */ -/** Set a given panel filter expression */ - -static void -set_panel_filter (WPanel * p) -{ - char *reg_exp; - const char *x; - - x = p->filter != NULL ? p->filter : easy_patterns ? "*" : "."; - - reg_exp = input_dialog_help (_("Filter"), - _("Set expression for filtering filenames"), - "[Filter...]", MC_HISTORY_FM_PANEL_FILTER, x, FALSE, - INPUT_COMPLETE_FILENAMES); - if (reg_exp != NULL) - set_panel_filter_to (p, reg_exp); -} - -/* --------------------------------------------------------------------------------------------- */ - static int compare_files (const vfs_path_t * vpath1, const vfs_path_t * vpath2, off_t size) { @@ -264,7 +230,7 @@ compare_files (const vfs_path_t * vpath1, const vfs_path_t * vpath2, off_t size) /* --------------------------------------------------------------------------------------------- */ static void -compare_dir (WPanel * panel, WPanel * other, enum CompareMode mode) +compare_dir (WPanel * panel, const WPanel * other, enum CompareMode mode) { int i, j; @@ -277,6 +243,7 @@ compare_dir (WPanel * panel, WPanel * other, enum CompareMode mode) for (i = 0; i < panel->dir.len; i++) { file_entry_t *source = &panel->dir.list[i]; + const char *source_fname; /* Default: unmarked */ file_mark (panel, i, 0); @@ -285,10 +252,22 @@ compare_dir (WPanel * panel, WPanel * other, enum CompareMode mode) if (S_ISDIR (source->st.st_mode)) continue; + source_fname = source->fname->str; + if (panel->is_panelized) + source_fname = x_basename (source_fname); + /* Search the corresponding entry from the other panel */ for (j = 0; j < other->dir.len; j++) - if (g_string_equal (source->fname, other->dir.list[j].fname)) + { + const char *other_fname; + + other_fname = other->dir.list[j].fname->str; + if (other->is_panelized) + other_fname = x_basename (other_fname); + + if (strcmp (source_fname, other_fname) == 0) break; + } if (j >= other->dir.len) /* Not found -> mark */ @@ -656,7 +635,7 @@ view_filtered_cmd (const WPanel * panel) if (input_is_empty (cmdline)) initial_command = selection (panel)->fname->str; else - initial_command = cmdline->buffer; + initial_command = input_get_ctext (cmdline); command = input_dialog (_("Filtered view"), @@ -818,21 +797,6 @@ mkdir_cmd (WPanel * panel) g_free (dir); } -/* --------------------------------------------------------------------------------------------- */ -/** Invoked from the left/right menus */ - -void -filter_cmd (void) -{ - if (SELECTED_IS_PANEL) - { - WPanel *p; - - p = MENU_PANEL; - set_panel_filter (p); - } -} - /* --------------------------------------------------------------------------------------------- */ void @@ -861,13 +825,13 @@ ext_cmd (void) _("Which extension file you want to edit?"), D_NORMAL, 2, _("&User"), _("&System Wide")); - extdir_vpath = vfs_path_build_filename (mc_global.sysconfig_dir, MC_LIB_EXT, (char *) NULL); + extdir_vpath = vfs_path_build_filename (mc_global.sysconfig_dir, MC_EXT_FILE, (char *) NULL); if (dir == 0) { vfs_path_t *buffer_vpath; - buffer_vpath = mc_config_get_full_vpath (MC_FILEBIND_FILE); + buffer_vpath = mc_config_get_full_vpath (MC_EXT_FILE); check_for_default (extdir_vpath, buffer_vpath); do_edit (buffer_vpath); vfs_path_free (buffer_vpath, TRUE); @@ -878,7 +842,7 @@ ext_cmd (void) { vfs_path_free (extdir_vpath, TRUE); extdir_vpath = - vfs_path_build_filename (mc_global.share_data_dir, MC_LIB_EXT, (char *) NULL); + vfs_path_build_filename (mc_global.share_data_dir, MC_EXT_FILE, (char *) NULL); } do_edit (extdir_vpath); } @@ -1238,17 +1202,6 @@ fishlink_cmd (void) /* --------------------------------------------------------------------------------------------- */ -#ifdef ENABLE_VFS_SMB -void -smblink_cmd (void) -{ - nice_cd (_("SMB link to machine"), _(machine_str), - "[SMB File System]", ":smblink_cmd: SMB link to machine ", "smb://", 0, TRUE); -} -#endif /* ENABLE_VFS_SMB */ - -/* --------------------------------------------------------------------------------------------- */ - #ifdef ENABLE_VFS_UNDELFS void undelete_cmd (void) @@ -1437,7 +1390,7 @@ listing_cmd (void) p = PANEL (get_panel_widget (MENU_PANEL_IDX)); p->is_panelized = FALSE; - set_panel_filter_to (p, NULL); /* including panel reload */ + panel_set_filter (p, NULL); /* including panel reload */ } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/src/filemanager/cmd.h b/mcsrc/src/filemanager/cmd.h index 0630fe07..26bfdb7d 100644 --- a/mcsrc/src/filemanager/cmd.h +++ b/mcsrc/src/filemanager/cmd.h @@ -58,7 +58,6 @@ void edit_cmd_new (void); void edit_cmd_force_internal (const WPanel * panel); #endif void mkdir_cmd (WPanel * panel); -void filter_cmd (void); void reread_cmd (void); void vfs_list (WPanel * panel); void ext_cmd (void); diff --git a/mcsrc/src/filemanager/command.c b/mcsrc/src/filemanager/command.c index bd29a3b4..b596432d 100644 --- a/mcsrc/src/filemanager/command.c +++ b/mcsrc/src/filemanager/command.c @@ -9,7 +9,7 @@ Written by: Slava Zanko , 2013 - Andrew Borodin , 2020 + Andrew Borodin , 2011-2022 This file is part of the Midnight Commander. @@ -81,11 +81,13 @@ static input_colors_t command_colors; static cb_ret_t enter (WInput * lc_cmdline) { - char *cmd = lc_cmdline->buffer; + const char *cmd; if (!command_prompt) return MSG_HANDLED; + cmd = input_get_ctext (lc_cmdline); + /* Any initial whitespace should be removed at this point */ while (whiteness (*cmd)) cmd++; diff --git a/mcsrc/src/filemanager/dir.c b/mcsrc/src/filemanager/dir.c index cfa631e8..6494654d 100644 --- a/mcsrc/src/filemanager/dir.c +++ b/mcsrc/src/filemanager/dir.c @@ -6,7 +6,7 @@ Written by: Slava Zanko , 2013 - Andrew Borodin , 2013 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -116,6 +116,20 @@ key_collate (const char *t1, const char *t2) return ret; } +/* --------------------------------------------------------------------------------------------- */ + +static inline int +compare_by_names (file_entry_t * a, file_entry_t * b) +{ + /* create key if does not exist, key will be freed after sorting */ + if (a->sort_key == NULL) + a->sort_key = str_create_key_for_filename (a->fname->str, case_sensitive); + if (b->sort_key == NULL) + b->sort_key = str_create_key_for_filename (b->fname->str, case_sensitive); + + return key_collate (a->sort_key, b->sort_key); +} + /* --------------------------------------------------------------------------------------------- */ /** * clear keys, should be call after sorting is finished. @@ -145,10 +159,11 @@ clean_sort_keys (dir_list * list, int start, int count) */ static gboolean -handle_dirent (struct vfs_dirent *dp, const char *filter, struct stat *buf1, gboolean * link_to_dir, - gboolean * stale_link) +handle_dirent (struct vfs_dirent *dp, const file_filter_t * filter, struct stat *buf1, + gboolean * link_to_dir, gboolean * stale_link) { vfs_path_t *vpath; + gboolean ok = TRUE; if (DIR_IS_DOT (dp->d_name) || DIR_IS_DOTDOT (dp->d_name)) return FALSE; @@ -176,8 +191,15 @@ handle_dirent (struct vfs_dirent *dp, const char *filter, struct stat *buf1, gbo vfs_path_free (vpath, TRUE); - return (S_ISDIR (buf1->st_mode) || *link_to_dir || filter == NULL - || mc_search (filter, NULL, dp->d_name, MC_SEARCH_T_GLOB)); + if (filter != NULL && filter->handler != NULL) + { + gboolean files_only = (filter->flags & SELECT_FILES_ONLY) != 0; + + ok = ((S_ISDIR (buf1->st_mode) || *link_to_dir) && files_only) + || mc_search_run (filter->handler, dp->d_name, 0, strlen (dp->d_name), NULL); + } + + return ok; } /* --------------------------------------------------------------------------------------------- */ @@ -328,15 +350,7 @@ sort_name (file_entry_t * a, file_entry_t * b) int bd = MY_ISDIR (b); if (ad == bd || panels_options.mix_all_files) - { - /* create key if does not exist, key will be freed after sorting */ - if (a->sort_key == NULL) - a->sort_key = str_create_key_for_filename (a->fname->str, case_sensitive); - if (b->sort_key == NULL) - b->sort_key = str_create_key_for_filename (b->fname->str, case_sensitive); - - return key_collate (a->sort_key, b->sort_key); - } + return compare_by_names (a, b); return bd - ad; } @@ -350,7 +364,15 @@ sort_vers (file_entry_t * a, file_entry_t * b) int bd = MY_ISDIR (b); if (ad == bd || panels_options.mix_all_files) - return filevercmp (a->fname->str, b->fname->str) * reverse; + { + int result; + + result = filevercmp (a->fname->str, b->fname->str); + if (result != 0) + return result * reverse; + + return compare_by_names (a, b); + } return bd - ad; } @@ -376,7 +398,7 @@ sort_ext (file_entry_t * a, file_entry_t * b) if (r != 0) return r * reverse; - return sort_name (a, b); + return compare_by_names (a, b); } return bd - ad; @@ -397,7 +419,7 @@ sort_time (file_entry_t * a, file_entry_t * b) if (result != 0) return result * reverse; - return sort_name (a, b); + return compare_by_names (a, b); } return bd - ad; @@ -418,7 +440,7 @@ sort_ctime (file_entry_t * a, file_entry_t * b) if (result != 0) return result * reverse; - return sort_name (a, b); + return compare_by_names (a, b); } return bd - ad; @@ -439,7 +461,7 @@ sort_atime (file_entry_t * a, file_entry_t * b) if (result != 0) return result * reverse; - return sort_name (a, b); + return compare_by_names (a, b); } return bd - ad; @@ -474,7 +496,7 @@ sort_size (file_entry_t * a, file_entry_t * b) if (result != 0) return result * reverse; - return sort_name (a, b); + return compare_by_names (a, b); } return bd - ad; @@ -620,7 +642,7 @@ handle_path (const char *path, struct stat * buf1, gboolean * link_to_dir, gbool gboolean dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, - const dir_sort_options_t * sort_op, const char *filter) + const dir_sort_options_t * sort_op, const file_filter_t * filter) { DIR *dirp; struct vfs_dirent *dp; @@ -693,7 +715,7 @@ if_link_is_exe (const vfs_path_t * full_name_vpath, const file_entry_t * file) gboolean dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, - const dir_sort_options_t * sort_op, const char *filter) + const dir_sort_options_t * sort_op, const file_filter_t * filter) { DIR *dirp; struct vfs_dirent *dp; @@ -814,3 +836,14 @@ dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, } /* --------------------------------------------------------------------------------------------- */ + +void +file_filter_clear (file_filter_t * filter) +{ + MC_PTR_FREE (filter->value); + mc_search_free (filter->handler); + filter->handler = NULL; + /* keep filter->flags */ +} + +/* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/src/filemanager/dir.h b/mcsrc/src/filemanager/dir.h index 8189db5a..f6a65ee4 100644 --- a/mcsrc/src/filemanager/dir.h +++ b/mcsrc/src/filemanager/dir.h @@ -8,6 +8,7 @@ #include #include "lib/global.h" +#include "lib/search.h" #include "lib/util.h" #include "lib/vfs/vfs.h" @@ -23,6 +24,16 @@ typedef enum DIR_CLOSE } dir_list_cb_state_t; +/* selection flags */ +typedef enum +{ + SELECT_FILES_ONLY = 1 << 0, + SELECT_MATCH_CASE = 1 << 1, + SELECT_SHELL_PATTERNS = 1 << 2 +} select_flags_t; + +#define FILE_FILTER_DEFAULT_FLAGS (SELECT_FILES_ONLY | SELECT_MATCH_CASE | SELECT_SHELL_PATTERNS) + /* dir_list callback */ typedef void (*dir_list_cb_fn) (dir_list_cb_state_t state, void *data); @@ -51,6 +62,14 @@ typedef struct dir_sort_options_struct gboolean exec_first; /**< executables are at top of list */ } dir_sort_options_t; +/* filter */ +typedef struct +{ + char *value; + mc_search_t *handler; + select_flags_t flags; +} file_filter_t; + /*** global variables defined in .c file *********************************************************/ /*** declarations of public functions ************************************************************/ @@ -60,9 +79,9 @@ gboolean dir_list_append (dir_list * list, const char *fname, const struct stat gboolean link_to_dir, gboolean stale_link); gboolean dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, - const dir_sort_options_t * sort_op, const char *filter); + const dir_sort_options_t * sort_op, const file_filter_t * filter); gboolean dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, - const dir_sort_options_t * sort_op, const char *filter); + const dir_sort_options_t * sort_op, const file_filter_t * filter); void dir_list_sort (dir_list * list, GCompareFunc sort, const dir_sort_options_t * sort_op); gboolean dir_list_init (dir_list * list); void dir_list_clean (dir_list * list); @@ -83,6 +102,8 @@ int sort_inode (file_entry_t * a, file_entry_t * b); gboolean if_link_is_exe (const vfs_path_t * full_name, const file_entry_t * file); +void file_filter_clear (file_filter_t * filter); + /*** inline functions ****************************************************************************/ static inline gboolean diff --git a/mcsrc/src/filemanager/ext.c b/mcsrc/src/filemanager/ext.c index 49f65c37..96b44209 100644 --- a/mcsrc/src/filemanager/ext.c +++ b/mcsrc/src/filemanager/ext.c @@ -1,7 +1,7 @@ /* Extension dependent execution. - Copyright (C) 1994-2021 + Copyright (C) 1994-2022 Free Software Foundation, Inc. Written by: @@ -55,7 +55,9 @@ #include "lib/charsets.h" /* get_codepage_index */ #endif +#ifdef USE_FILE_CMD #include "src/setup.h" /* use_file_to_check_type */ +#endif #include "src/execute.h" #include "src/history.h" #include "src/usermenu.h" @@ -77,10 +79,11 @@ /*** file scope macro definitions ****************************************************************/ #ifdef USE_FILE_CMD -#define FILE_CMD "file -z " FILE_S FILE_L +#ifdef FILE_B +#define FILE_CMD "file -z " FILE_B FILE_S FILE_L #else -/* actually file is unused, but define some reasonable command */ -#define FILE_CMD "file " +#define FILE_CMD "file -z " FILE_S FILE_L +#endif #endif /*** file scope type declarations ****************************************************************/ @@ -93,7 +96,8 @@ typedef char *(*quote_func_t) (const char *name, gboolean quote_percent); * With this we avoid loading/parsing the file each time we * need it */ -static char *data = NULL; +static mc_config_t *ext_ini = NULL; +static gchar **ext_ini_groups = NULL; static vfs_path_t *localfilecopy_vpath = NULL; static char buffer[BUF_1K]; @@ -105,6 +109,9 @@ static gboolean is_cd = FALSE; static gboolean written_nonspace = FALSE; static gboolean do_local_copy = FALSE; +static const char *descr_group = "mc.ext.ini"; +static const char *default_group = "Default"; + /* --------------------------------------------------------------------------------------------- */ /*** file scope functions ************************************************************************/ /* --------------------------------------------------------------------------------------------- */ @@ -440,8 +447,6 @@ exec_extension (WPanel * panel, void *target, const vfs_path_t * filename_vpath, FILE *cmd_file; char *cmd = NULL; - g_return_val_if_fail (lc_data != NULL, NULL); - pbuffer = NULL; localmtime = 0; quote_func = name_quote; @@ -594,6 +599,7 @@ exec_extension (WPanel * panel, void *target, const vfs_path_t * filename_vpath, * NOTES: buf is null-terminated string. */ +#ifdef USE_FILE_CMD static int get_popen_information (const char *cmd_file, const char *args, char *buf, int buflen) { @@ -722,13 +728,9 @@ regex_check_type (const vfs_path_t * filename_vpath, const char *ptr, gboolean c mc_return_val_if_error (mcerror, FALSE); - if (!use_file_to_check_type) - return FALSE; - if (!*have_type) { vfs_path_t *localfile_vpath; - const char *realname; /* name used with "file" */ #ifdef HAVE_CHARSET static char encoding_id[21]; /* CSISO51INISCYRILLIC -- 20 */ @@ -746,7 +748,6 @@ regex_check_type (const vfs_path_t * filename_vpath, const char *ptr, gboolean c return FALSE; } - realname = vfs_path_get_last_path_str (localfile_vpath); #ifdef HAVE_CHARSET got_encoding_data = is_autodetect_codeset_enabled @@ -776,26 +777,32 @@ regex_check_type (const vfs_path_t * filename_vpath, const char *ptr, gboolean c if (got_data > 0) { char *pp; - size_t real_len; pp = strchr (content_string, '\n'); if (pp != NULL) *pp = '\0'; - real_len = strlen (realname); - - if (strncmp (content_string, realname, real_len) == 0) +#ifndef FILE_B { - /* Skip "realname: " */ - content_shift = real_len; - if (content_string[content_shift] == ':') + const char *real_name; /* name used with "file" */ + size_t real_len; + + real_name = vfs_path_get_last_path_str (localfile_vpath); + real_len = strlen (real_name); + + if (strncmp (content_string, real_name, real_len) == 0) { + /* Skip "real_name: " */ + content_shift = real_len; + /* Solaris' file prints tab(s) after ':' */ - for (content_shift++; whitespace (content_string[content_shift]); - content_shift++) - ; + if (content_string[content_shift] == ':') + for (content_shift++; whitespace (content_string[content_shift]); + content_shift++) + ; } } +#endif /* FILE_B */ } else { @@ -831,6 +838,100 @@ regex_check_type (const vfs_path_t * filename_vpath, const char *ptr, gboolean c return found; } +#endif /* USE_FILE_CMD */ + +/* --------------------------------------------------------------------------------------------- */ + +static void +check_old_extension_file (void) +{ + char *extension_old_file; + + extension_old_file = mc_config_get_full_path (MC_EXT_OLD_FILE); + if (exist_file (extension_old_file)) + message (D_ERROR, _("Warning"), + _("You have an outdated %s file.\nMidnight Commander now uses %s file.\n" + "Please copy your modifications of the old file to the new one."), + extension_old_file, MC_EXT_FILE); + g_free (extension_old_file); +} + +/* --------------------------------------------------------------------------------------------- */ + +static gboolean +load_extension_file (void) +{ + char *extension_file; + gboolean mc_user_ext = TRUE; + gboolean home_error = FALSE; + + extension_file = mc_config_get_full_path (MC_EXT_FILE); + if (!exist_file (extension_file)) + { + g_free (extension_file); + + check_old_extension_file (); + + check_stock_mc_ext: + extension_file = mc_build_filename (mc_global.sysconfig_dir, MC_EXT_FILE, (char *) NULL); + if (!exist_file (extension_file)) + { + g_free (extension_file); + extension_file = + mc_build_filename (mc_global.share_data_dir, MC_EXT_FILE, (char *) NULL); + if (!exist_file (extension_file)) + MC_PTR_FREE (extension_file); + } + mc_user_ext = FALSE; + } + + if (extension_file != NULL) + { + ext_ini = mc_config_init (extension_file, TRUE); + g_free (extension_file); + } + if (ext_ini == NULL) + return FALSE; + + /* Check version */ + if (!mc_config_has_group (ext_ini, descr_group)) + { + flush_extension_file (); + + if (!mc_user_ext) + { + char *title; + + title = g_strdup_printf (_(" %s%s file error"), mc_global.sysconfig_dir, MC_EXT_FILE); + message (D_ERROR, title, + _("The format of the %s%s file has changed with version 4.0. " + "It seems that the installation has failed. Please fetch a fresh copy " + "from the Midnight Commander package."), + mc_global.sysconfig_dir, MC_EXT_FILE); + g_free (title); + return FALSE; + } + + home_error = TRUE; + goto check_stock_mc_ext; + } + + if (home_error) + { + char *title; + + extension_file = mc_config_get_full_path (MC_EXT_FILE); + title = g_strdup_printf (_("%s file error"), extension_file); + message (D_ERROR, title, + _("The format of the %s file has changed with version 4.0. You may either want " + "to copy it from %s%s or use that file as an example of how to write it."), + extension_file, mc_global.sysconfig_dir, MC_EXT_FILE); + g_free (extension_file); + g_free (title); + } + + return TRUE; +} /* --------------------------------------------------------------------------------------------- */ /*** public functions ****************************************************************************/ @@ -839,7 +940,11 @@ regex_check_type (const vfs_path_t * filename_vpath, const char *ptr, gboolean c void flush_extension_file (void) { - MC_PTR_FREE (data); + g_strfreev (ext_ini_groups); + ext_ini_groups = NULL; + + mc_config_deinit (ext_ini); + ext_ini = NULL; } /* --------------------------------------------------------------------------------------------- */ @@ -861,17 +966,19 @@ int regex_command_for (void *target, const vfs_path_t * filename_vpath, const char *action, vfs_path_t ** script_vpath) { - char *p, *q, *r, c; const char *filename; - size_t file_len; + size_t filename_len; gboolean found = FALSE; gboolean error_flag = FALSE; int ret = 0; struct stat mystat; int view_at_line_number = 0; - char *include_target = NULL; - size_t include_target_len = 0; +#ifdef USE_FILE_CMD gboolean have_type = FALSE; /* Flag used by regex_check_type() */ +#endif + char **group_iter; + char *include_group = NULL; + const char *current_group; if (filename_vpath == NULL) return 0; @@ -886,253 +993,185 @@ regex_command_for (void *target, const vfs_path_t * filename_vpath, const char * action = "View"; } - if (data == NULL) - { - char *extension_file; - gboolean mc_user_ext = TRUE; - gboolean home_error = FALSE; + if (ext_ini == NULL && !load_extension_file ()) + return 0; - extension_file = mc_config_get_full_path (MC_FILEBIND_FILE); - if (!exist_file (extension_file)) - { - g_free (extension_file); - check_stock_mc_ext: - extension_file = mc_build_filename (mc_global.sysconfig_dir, MC_LIB_EXT, (char *) NULL); - if (!exist_file (extension_file)) - { - g_free (extension_file); - extension_file = - mc_build_filename (mc_global.share_data_dir, MC_LIB_EXT, (char *) NULL); - } - mc_user_ext = FALSE; - } + mc_stat (filename_vpath, &mystat); - g_file_get_contents (extension_file, &data, NULL, NULL); - g_free (extension_file); - if (data == NULL) - return 0; + filename = vfs_path_get_last_path_str (filename_vpath); + filename = x_basename (filename); + filename_len = strlen (filename); + + if (ext_ini_groups == NULL) + ext_ini_groups = mc_config_get_groups (ext_ini, NULL); - if (strstr (data, "default/") == NULL) + /* find matched type, regex or shell pattern */ + for (group_iter = ext_ini_groups; *group_iter != NULL && !found; group_iter++) + { + enum { - if (strstr (data, "regex/") == NULL && strstr (data, "shell/") == NULL && - strstr (data, "type/") == NULL) - { - MC_PTR_FREE (data); + TYPE_UNUSED, + TYPE_NOT_FOUND, + TYPE_FOUND + } type_state = TYPE_UNUSED; - if (!mc_user_ext) - { - char *title; - - title = g_strdup_printf (_(" %s%s file error"), - mc_global.sysconfig_dir, MC_LIB_EXT); - message (D_ERROR, title, _("The format of the %smc.ext " - "file has changed with version 3.0. It seems that " - "the installation failed. Please fetch a fresh " - "copy from the Midnight Commander package."), - mc_global.sysconfig_dir); - g_free (title); - return 0; - } + const gchar *g = *group_iter; + gchar *pattern; + gboolean ignore_case; - home_error = TRUE; - goto check_stock_mc_ext; - } - } + if (strcmp (g, descr_group) == 0 || strncmp (g, "Include/", 8) == 0 + || strcmp (g, default_group) == 0) + continue; - if (home_error) + /* The "Directory" parameter is a special case: if it's present then + "Type", "Regex", and "Shell" parameters are ignored */ + pattern = mc_config_get_string_raw (ext_ini, g, "Directory", NULL); + if (pattern != NULL) { - char *filebind_filename; - char *title; + found = S_ISDIR (mystat.st_mode) + && mc_search (pattern, MC_DEFAULT_CHARSET, vfs_path_as_str (filename_vpath), + MC_SEARCH_T_REGEX); + g_free (pattern); - filebind_filename = mc_config_get_full_path (MC_FILEBIND_FILE); - title = g_strdup_printf (_("%s file error"), filebind_filename); - message (D_ERROR, title, - _("The format of the %s file has " - "changed with version 3.0. You may either want to copy " - "it from %smc.ext or use that file as an example of how to write it."), - filebind_filename, mc_global.sysconfig_dir); - g_free (filebind_filename); - g_free (title); + continue; /* stop if found */ } - } - - mc_stat (filename_vpath, &mystat); - filename = vfs_path_get_last_path_str (filename_vpath); - filename = x_basename (filename); - file_len = strlen (filename); - - for (p = data; *p != '\0'; p++) - { - for (q = p; whitespace (*q); q++) - ; - if (*q == '\n' || *q == '\0') - p = q; /* empty line */ - if (*p == '#') /* comment */ - while (*p != '\0' && *p != '\n') - p++; - if (*p == '\n') - continue; - if (*p == '\0') - break; - if (p == q) +#ifdef USE_FILE_CMD + if (use_file_to_check_type) { - /* i.e. starts in the first column, should be keyword/descNL */ - gboolean case_insense; - - found = FALSE; - q = strchr (p, '\n'); - if (q == NULL) - q = strchr (p, '\0'); - c = *q; - *q = '\0'; - if (include_target != NULL) - { - if ((strncmp (p, "include/", 8) == 0) - && (strncmp (p + 8, include_target, include_target_len) == 0)) - found = TRUE; - } - else if (strncmp (p, "regex/", 6) == 0) + pattern = mc_config_get_string_raw (ext_ini, g, "Type", NULL); + if (pattern != NULL) { - mc_search_t *search; + GError *mcerror = NULL; - p += 6; - case_insense = (strncmp (p, "i/", 2) == 0); - if (case_insense) - p += 2; + ignore_case = mc_config_get_bool (ext_ini, g, "TypeIgnoreCase", FALSE); + type_state = + regex_check_type (filename_vpath, pattern, ignore_case, &have_type, &mcerror) + ? TYPE_FOUND : TYPE_NOT_FOUND; + g_free (pattern); - search = mc_search_new (p, MC_DEFAULT_CHARSET); - if (search != NULL) - { - search->search_type = MC_SEARCH_T_REGEX; - search->is_case_sensitive = !case_insense; - found = mc_search_run (search, filename, 0, file_len, NULL); - mc_search_free (search); - } + if (mc_error_message (&mcerror, NULL)) + error_flag = TRUE; /* leave it if file cannot be opened */ + + if (type_state == TYPE_NOT_FOUND) + continue; } - else if (strncmp (p, "directory/", 10) == 0) + } +#endif /* USE_FILE_CMD */ + + pattern = mc_config_get_string_raw (ext_ini, g, "Regex", NULL); + if (pattern != NULL) + { + mc_search_t *search; + + ignore_case = mc_config_get_bool (ext_ini, g, "RegexIgnoreCase", FALSE); + search = mc_search_new (pattern, MC_DEFAULT_CHARSET); + g_free (pattern); + + if (search != NULL) { - if (S_ISDIR (mystat.st_mode) - && mc_search (p + 10, MC_DEFAULT_CHARSET, vfs_path_as_str (filename_vpath), - MC_SEARCH_T_REGEX)) - found = TRUE; + search->search_type = MC_SEARCH_T_REGEX; + search->is_case_sensitive = !ignore_case; + found = mc_search_run (search, filename, 0, filename_len, NULL); + mc_search_free (search); } - else if (strncmp (p, "shell/", 6) == 0) + + found = found && (type_state == TYPE_UNUSED || type_state == TYPE_FOUND); + } + else + { + pattern = mc_config_get_string_raw (ext_ini, g, "Shell", NULL); + if (pattern != NULL) { #if defined(__WATCOMC__) //WIN32, calling - int (__watcall * cmp_func) (const char *s1, const char *s2, size_t n) = strncmp; + int (__watcall * cmp_func) (const char *s1, const char *s2, size_t n); #else - int (*cmp_func) (const char *s1, const char *s2, size_t n) = strncmp; + int (*cmp_func) (const char *s1, const char *s2, size_t n); #endif + size_t pattern_len; - p += 6; - case_insense = (strncmp (p, "i/", 2) == 0); - if (case_insense) - { - p += 2; - cmp_func = strncasecmp; - } + ignore_case = mc_config_get_bool (ext_ini, g, "ShellIgnoreCase", FALSE); + cmp_func = ignore_case ? strncasecmp : strncmp; + pattern_len = strlen (pattern); - if (*p == '.' && file_len >= (size_t) (q - p)) - { - if (cmp_func (p, filename + file_len - (q - p), q - p) == 0) - found = TRUE; - } + if (*pattern == '.' && filename_len >= pattern_len) + found = + cmp_func (pattern, filename + filename_len - pattern_len, pattern_len) == 0; else - { - if ((size_t) (q - p) == file_len && cmp_func (p, filename, file_len) == 0) - found = TRUE; - } - } - else if (strncmp (p, "type/", 5) == 0) - { - GError *mcerror = NULL; - - p += 5; + found = pattern_len == filename_len + && cmp_func (pattern, filename, filename_len) == 0; - case_insense = (strncmp (p, "i/", 2) == 0); - if (case_insense) - p += 2; + g_free (pattern); - found = regex_check_type (filename_vpath, p, case_insense, &have_type, &mcerror); - if (mc_error_message (&mcerror, NULL)) - error_flag = TRUE; /* leave it if file cannot be opened */ + found = found && (type_state == TYPE_UNUSED || type_state == TYPE_FOUND); } - else if (strncmp (p, "default/", 8) == 0) - found = TRUE; - - *q = c; + else + found = type_state == TYPE_FOUND; } - else - { /* List of actions */ - p = q; - q = strchr (p, '\n'); - if (q == NULL) - q = strchr (p, '\0'); - if (found && !error_flag) - { - r = strchr (p, '='); - if (r != NULL) - { - c = *r; - *r = '\0'; - if (strcmp (p, "Include") == 0) - { - char *t; + } - include_target = p + 8; - t = strchr (include_target, '\n'); + /* group is found, process actions */ + if (found) + { + char *include_value; - if (t != NULL) - include_target_len = (size_t) (t - include_target); - else - include_target_len = strlen (include_target); + group_iter--; - *r = c; - p = q; - found = FALSE; + /* "Include" parameter has the highest priority over any actions */ + include_value = mc_config_get_string_raw (ext_ini, *group_iter, "Include", NULL); + if (include_value != NULL) + { + /* find "Include/include_value" group */ + include_group = g_strconcat ("Include/", include_value, (char *) NULL); + g_free (include_value); + found = mc_config_has_group (ext_ini, include_group); + } + } - if (*p == '\0') - break; - continue; - } + if (found) + current_group = include_group != NULL ? include_group : *group_iter; + else + { + current_group = default_group; + found = mc_config_has_group (ext_ini, current_group); + } - if (strcmp (action, p) != 0) - *r = c; - else - { - *r = c; + if (found && !error_flag) + { + gchar *action_value; - for (p = r + 1; whitespace (*p); p++) - ; + action_value = mc_config_get_string_raw (ext_ini, current_group, action, NULL); + if (action_value == NULL) + { + /* Not found, try the action from default section */ + action_value = mc_config_get_string_raw (ext_ini, default_group, action, NULL); + found = (action_value != NULL && *action_value != '\0'); + } + else + { + /* If action's value is empty, ignore action from default section */ + found = (*action_value != '\0'); + } - /* Empty commands just stop searching - * through, they don't do anything - */ - if (p < q) - { - vfs_path_t *sv; + if (found) + { + vfs_path_t *sv; - sv = exec_extension (current_panel, target, filename_vpath, r + 1, - view_at_line_number); - if (script_vpath != NULL) - *script_vpath = sv; - else - exec_cleanup_script (sv); + sv = exec_extension (current_panel, target, filename_vpath, action_value, + view_at_line_number); + if (script_vpath != NULL) + *script_vpath = sv; + else + exec_cleanup_script (sv); - ret = 1; - } - break; - } - } - } + ret = 1; } - p = q; - if (*p == '\0') - break; + g_free (action_value); } + g_free (include_group); + return (error_flag ? -1 : ret); } diff --git a/mcsrc/src/filemanager/file.c b/mcsrc/src/filemanager/file.c index 2d92826e..b124f637 100644 --- a/mcsrc/src/filemanager/file.c +++ b/mcsrc/src/filemanager/file.c @@ -11,7 +11,7 @@ Jakub Jelinek, 1995, 1996 Norbert Warmuth, 1997 Pavel Machek, 1998 - Andrew Borodin , 2011-2014 + Andrew Borodin , 2011-2022 The copy code was based in GNU's cp, and was written by: Torbjorn Granlund, David MacKenzie, and Jim Meyering. @@ -121,9 +121,11 @@ struct link /* Status of the destination file */ typedef enum { - DEST_NONE = 0, /* Not created */ - DEST_SHORT = 1, /* Created, not fully copied */ - DEST_FULL = 2 /* Created, fully copied */ + DEST_NONE = 0, /**< Not created */ + DEST_SHORT_QUERY, /**< Created, not fully copied, query to do */ + DEST_SHORT_KEEP, /**< Created, not fully copied, keep it */ + DEST_SHORT_DELETE, /**< Created, not fully copied, delete it */ + DEST_FULL /**< Created, fully copied */ } dest_status_t; /* Status of hard link creation */ @@ -206,28 +208,36 @@ dirsize_status_locate_buttons (dirsize_status_msg_t * dsm) status_msg_t *sm = STATUS_MSG (dsm); Widget *wd = WIDGET (sm->dlg); int y, x; + WRect r; - y = wd->y + 5; - x = wd->x; + y = wd->rect.y + 5; + x = wd->rect.x; if (!dsm->allow_skip) { /* single button: "Abort" */ - x += (wd->cols - dsm->abort_button->cols) / 2; - widget_set_size (dsm->abort_button, y, x, - dsm->abort_button->lines, dsm->abort_button->cols); + x += (wd->rect.cols - dsm->abort_button->rect.cols) / 2; + r = dsm->abort_button->rect; + r.y = y; + r.x = x; + widget_set_size_rect (dsm->abort_button, &r); } else { /* two buttons: "Abort" and "Skip" */ int cols; - cols = dsm->abort_button->cols + dsm->skip_button->cols + 1; - x += (wd->cols - cols) / 2; - widget_set_size (dsm->abort_button, y, x, dsm->abort_button->lines, - dsm->abort_button->cols); - x += dsm->abort_button->cols + 1; - widget_set_size (dsm->skip_button, y, x, dsm->skip_button->lines, dsm->skip_button->cols); + cols = dsm->abort_button->rect.cols + dsm->skip_button->rect.cols + 1; + x += (wd->rect.cols - cols) / 2; + r = dsm->abort_button->rect; + r.y = y; + r.x = x; + widget_set_size_rect (dsm->abort_button, &r); + x += dsm->abort_button->rect.cols + 1; + r = dsm->skip_button->rect; + r.y = y; + r.x = x; + widget_set_size_rect (dsm->skip_button, &r); } } @@ -844,10 +854,39 @@ real_warn_same_file (enum OperationMode mode, const char *fmt, const char *a, co char *msg; int result = 0; const char *head_msg; + int width_a, width_b, width; head_msg = mode == Foreground ? MSG_ERROR : _("Background process error"); - msg = g_strdup_printf (fmt, a, b); + width_a = str_term_width1 (a); + width_b = str_term_width1 (b); + width = COLS - 8; + + if (width_a > width) + { + if (width_b > width) + { + char *s; + + s = g_strndup (str_trunc (a, width), width); + b = str_trunc (b, width); + msg = g_strdup_printf (fmt, s, b); + g_free (s); + } + else + { + a = str_trunc (a, width); + msg = g_strdup_printf (fmt, a, b); + } + } + else + { + if (width_b > width) + b = str_trunc (b, width); + + msg = g_strdup_printf (fmt, a, b); + } + result = query_dialog (head_msg, msg, D_ERROR, 2, _("&Skip"), _("&Abort")); g_free (msg); do_refresh (); @@ -1468,27 +1507,39 @@ recursive_erase (file_op_total_context_t * tctx, file_op_context_t * ctx, const } /* --------------------------------------------------------------------------------------------- */ -/** Return -1 on error, 1 if there are no entries besides "." and ".." - in the directory path points to, 0 else. */ - +/** + * Check if directory is empty or not. + * + * @param vpath directory handler + * + * @returns -1 on error, + * 1 if there are no entries besides "." and ".." in the directory path points to, + * 0 else. + * + * ATTENTION! Be carefull when modifying this function (like commit 25e419ba0886f)! + * Some implementations of readdir() in MC VFS (for example, vfs_s_readdir(), whuch is uded + * in FISH) don't return "." and ".." entries. + */ static int check_dir_is_empty (const vfs_path_t * vpath) { DIR *dir; struct vfs_dirent *d; - int i = 0; + int i = 1; dir = mc_opendir (vpath); if (dir == NULL) return -1; - /* https://stackoverflow.com/questions/6383584/check-if-a-directory-is-empty-using-c-on-linux */ - while ((d = mc_readdir (dir)) != NULL) - if (++i > 2) + for (d = mc_readdir (dir); d != NULL; d = mc_readdir (dir)) + if (!DIR_IS_DOT (d->d_name) && !DIR_IS_DOTDOT (d->d_name)) + { + i = 0; break; + } mc_closedir (dir); - return i <= 2 ? 1 : 0; + return i; } /* --------------------------------------------------------------------------------------------- */ @@ -2460,7 +2511,8 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, goto ret; } - dst_status = DEST_SHORT; /* file opened, but not fully copied */ + /* file opened, but not fully copied */ + dst_status = DEST_SHORT_QUERY; appending = ctx->do_append; ctx->do_append = FALSE; @@ -2648,15 +2700,36 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, mc_refresh (); return_status = check_progress_buttons (ctx); - if (return_status != FILE_CONT) { - mc_refresh (); - goto ret; + int query_res; + + query_res = + query_dialog (Q_ ("DialogTitle|Copy"), + _("Incomplete file was retrieved"), D_ERROR, 3, + _("&Delete"), _("&Keep"), _("&Continue copy")); + + switch (query_res) + { + case 0: + /* delete */ + dst_status = DEST_SHORT_DELETE; + goto ret; + + case 1: + /* keep */ + dst_status = DEST_SHORT_KEEP; + goto ret; + + default: + /* continue copy */ + break; + } } } - dst_status = DEST_FULL; /* copy successful, don't remove target file */ + /* copy successful */ + dst_status = DEST_FULL; } ret: @@ -2686,13 +2759,15 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, break; } - if (dst_status == DEST_SHORT) + if (dst_status == DEST_SHORT_QUERY) { /* Query to remove short file */ - if (query_dialog (Q_ ("DialogTitle|Copy"), _("Incomplete file was retrieved. Keep it?"), + if (query_dialog (Q_ ("DialogTitle|Copy"), _("Incomplete file was retrieved"), D_ERROR, 2, _("&Delete"), _("&Keep")) == 0) mc_unlink (dst_vpath); } + else if (dst_status == DEST_SHORT_DELETE) + mc_unlink (dst_vpath); else if (dst_status == DEST_FULL && !appending) { /* Copy has succeeded */ @@ -3093,6 +3168,7 @@ dirsize_status_init_cb (status_msg_t * sm) dirsize_status_msg_t *dsm = (dirsize_status_msg_t *) sm; WGroup *gd = GROUP (sm->dlg); Widget *wd = WIDGET (sm->dlg); + WRect r = wd->rect; const char *b1_name = N_("&Abort"); const char *b2_name = N_("&Skip"); @@ -3123,7 +3199,9 @@ dirsize_status_init_cb (status_msg_t * sm) widget_select (dsm->skip_button); } - widget_set_size (wd, wd->y, wd->x, 8, ui_width); + r.lines = 8; + r.cols = ui_width; + widget_set_size_rect (wd, &r); dirsize_status_locate_buttons (dsm); } @@ -3134,22 +3212,25 @@ dirsize_status_update_cb (status_msg_t * sm) { dirsize_status_msg_t *dsm = (dirsize_status_msg_t *) sm; Widget *wd = WIDGET (sm->dlg); + WRect r = wd->rect; /* update second (longer label) */ label_set_textv (dsm->count_size, _("Directories: %zu, total size: %s"), dsm->dir_count, size_trunc_sep (dsm->total_size, panels_options.kilobyte_si)); /* enlarge dialog if required */ - if (WIDGET (dsm->count_size)->cols + 6 > wd->cols) + if (WIDGET (dsm->count_size)->rect.cols + 6 > r.cols) { - widget_set_size (wd, wd->y, wd->x, wd->lines, WIDGET (dsm->count_size)->cols + 6); + r.cols = WIDGET (dsm->count_size)->rect.cols + 6; + widget_set_size_rect (wd, &r); dirsize_status_locate_buttons (dsm); widget_draw (wd); /* TODO: ret rid of double redraw */ } /* adjust first label */ - label_set_text (dsm->dirname, str_trunc (vfs_path_as_str (dsm->dirname_vpath), wd->cols - 6)); + label_set_text (dsm->dirname, + str_trunc (vfs_path_as_str (dsm->dirname_vpath), wd->rect.cols - 6)); switch (status_msg_common_update (sm)) { diff --git a/mcsrc/src/filemanager/filegui.c b/mcsrc/src/filemanager/filegui.c index 405d137c..173c5409 100644 --- a/mcsrc/src/filemanager/filegui.c +++ b/mcsrc/src/filemanager/filegui.c @@ -21,7 +21,7 @@ Norbert Warmuth, 1997 Pavel Machek, 1998 Slava Zanko, 2009, 2010, 2011, 2012, 2013 - Andrew Borodin , 2009, 2010, 2011, 2012, 2013 + Andrew Borodin , 2009-2022 This file is part of the Midnight Commander. @@ -168,8 +168,8 @@ gboolean classic_progressbar = TRUE; /*** file scope macro definitions ****************************************************************/ -#define truncFileString(dlg, s) str_trunc (s, WIDGET (dlg)->cols - 10) -#define truncFileStringSecure(dlg, s) path_trunc (s, WIDGET (dlg)->cols - 10) +#define truncFileString(dlg, s) str_trunc (s, WIDGET (dlg)->rect.cols - 10) +#define truncFileStringSecure(dlg, s) path_trunc (s, WIDGET (dlg)->rect.cols - 10) /*** file scope type declarations ****************************************************************/ @@ -380,6 +380,27 @@ file_bps_prepare_for_show (char *buffer, long bps) /* --------------------------------------------------------------------------------------------- */ +static cb_ret_t +file_ui_op_dlg_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data) +{ + switch (msg) + { + case MSG_ACTION: + /* Do not close the dialog because the query dialog will be shown */ + if (parm == CK_Cancel) + { + DIALOG (w)->ret_value = FILE_ABORT; /* for check_progress_buttons() */ + return MSG_HANDLED; + } + return MSG_NOT_HANDLED; + + default: + return dlg_default_callback (w, sender, msg, parm, data); + } +} + +/* --------------------------------------------------------------------------------------------- */ + /* The dialog layout: * * +---------------------- File exists -----------------------+ @@ -403,8 +424,9 @@ static replace_action_t overwrite_query_dialog (file_op_context_t * ctx, enum OperationMode mode) { #define W(i) dlg_widgets[i].widget -#define WX(i) W(i)->x -#define WCOLS(i) W(i)->cols +#define WX(i) W(i)->rect.x +#define WY(i) W(i)->rect.y +#define WCOLS(i) W(i)->rect.cols #define NEW_LABEL(i, text) \ W(i) = WIDGET (label_new (dlg_widgets[i].y, dlg_widgets[i].x, text)) @@ -643,7 +665,7 @@ overwrite_query_dialog (file_op_context_t * ctx, enum OperationMode mode) /* file info */ for (i = 0; i <= 7; i++) ADD_LABEL (i); - group_add_widget (g, hline_new (W (7)->y - wd->y + 1, -1, -1)); + group_add_widget (g, hline_new (WY (7) - wd->rect.y + 1, -1, -1)); /* label & buttons */ ADD_LABEL (8); /* Overwrite this file? */ @@ -653,14 +675,14 @@ overwrite_query_dialog (file_op_context_t * ctx, enum OperationMode mode) ADD_BUTTON (11); /* Append */ if (do_reget) ADD_BUTTON (12); /* Reget */ - group_add_widget (g, hline_new (W (10)->y - wd->y + 1, -1, -1)); + group_add_widget (g, hline_new (WY (10) - wd->rect.y + 1, -1, -1)); /* label & buttons */ ADD_LABEL (13); /* Overwrite all files? */ group_add_widget (g, dlg_widgets[14].widget); for (i = 15; i <= 19; i++) ADD_BUTTON (i); - group_add_widget (g, hline_new (W (19)->y - wd->y + 1, -1, -1)); + group_add_widget (g, hline_new (WY (19) - wd->rect.y + 1, -1, -1)); ADD_BUTTON (20); /* Abort */ @@ -722,9 +744,9 @@ place_progress_buttons (WDialog * h, gboolean suspended) buttons_width += progress_buttons[i].len; button_set_text (BUTTON (progress_buttons[i].w), progress_buttons[i].text); - progress_buttons[0].w->x = w->x + (w->cols - buttons_width) / 2; - progress_buttons[i].w->x = progress_buttons[0].w->x + progress_buttons[0].len + 1; - progress_buttons[3].w->x = progress_buttons[i].w->x + progress_buttons[i].len + 1; + progress_buttons[0].w->rect.x = w->rect.x + (w->rect.cols - buttons_width) / 2; + progress_buttons[i].w->rect.x = progress_buttons[0].w->rect.x + progress_buttons[0].len + 1; + progress_buttons[3].w->rect.x = progress_buttons[i].w->rect.x + progress_buttons[i].len + 1; } /* --------------------------------------------------------------------------------------------- */ @@ -805,6 +827,7 @@ file_op_context_create_ui (file_op_context_t * ctx, gboolean with_eta, int buttons_width; int dlg_width = 58, dlg_height = 17; int y = 2, x = 3; + WRect r; if (ctx == NULL || ctx->ui != NULL) return; @@ -826,9 +849,8 @@ file_op_context_create_ui (file_op_context_t * ctx, gboolean with_eta, ui = ctx->ui; ui->replace_result = REPLACE_YES; - ui->op_dlg = - dlg_create (TRUE, 0, 0, dlg_height, dlg_width, WPOS_CENTER, FALSE, dialog_colors, NULL, - NULL, NULL, op_names[ctx->operation]); + ui->op_dlg = dlg_create (TRUE, 0, 0, dlg_height, dlg_width, WPOS_CENTER, FALSE, dialog_colors, + file_ui_op_dlg_callback, NULL, NULL, op_names[ctx->operation]); w = WIDGET (ui->op_dlg); g = GROUP (ui->op_dlg); @@ -929,7 +951,10 @@ file_op_context_create_ui (file_op_context_t * ctx, gboolean with_eta, progress_buttons[3].len; /* adjust dialog sizes */ - widget_set_size (w, w->y, w->x, y + 3, MAX (COLS * 2 / 3, buttons_width + 6)); + r = w->rect; + r.lines = y + 3; + r.cols = MAX (COLS * 2 / 3, buttons_width + 6); + widget_set_size_rect (w, &r); place_progress_buttons (ui->op_dlg, FALSE); @@ -1019,7 +1044,7 @@ file_progress_show_count (file_op_context_t * ctx, size_t done, size_t total) return; if (ctx->progress_totals_computed) - label_set_textv (ui->total_files_processed_label, _("Files processed: %zu/%zu"), done, + label_set_textv (ui->total_files_processed_label, _("Files processed: %zu / %zu"), done, total); else label_set_textv (ui->total_files_processed_label, _("Files processed: %zu"), done); @@ -1095,7 +1120,7 @@ file_progress_show_total (file_op_total_context_t * tctx, file_op_context_t * ct else { size_trunc_len (buffer3, 5, ctx->progress_bytes, 0, panels_options.kilobyte_si); - hline_set_textv (ui->total_bytes_label, _(" Total: %s/%s "), buffer2, buffer3); + hline_set_textv (ui->total_bytes_label, _(" Total: %s / %s "), buffer2, buffer3); } } } @@ -1374,11 +1399,12 @@ file_mask_dialog (file_op_context_t * ctx, FileOperation operation, gboolean onl }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, fmd_xlen, - op_names[operation], "[Mask Copy/Rename]", + WRect r = { -1, -1, 0, fmd_xlen }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, op_names[operation], "[Mask Copy/Rename]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, fmd_buf, input_label_above, @@ -1424,7 +1450,7 @@ file_mask_dialog (file_op_context_t * ctx, FileOperation operation, gboolean onl if (ctx->op_preserve) { ctx->preserve = TRUE; - ctx->umask_kill = 0777777; + ctx->umask_kill = (mode_t)0777777; ctx->preserve_uidgid = (geteuid () == 0); } else diff --git a/mcsrc/src/filemanager/filemanager.c b/mcsrc/src/filemanager/filemanager.c index 500dff99..36c824a8 100644 --- a/mcsrc/src/filemanager/filemanager.c +++ b/mcsrc/src/filemanager/filemanager.c @@ -8,7 +8,7 @@ Miguel de Icaza, 1994, 1995, 1996, 1997 Janne Kukonlehto, 1994, 1995 Norbert Warmuth, 1997 - Andrew Borodin , 2009, 2010, 2012, 2013, 2020 + Andrew Borodin , 2009-2022 Slava Zanko , 2013 This file is part of the Midnight Commander. @@ -202,7 +202,7 @@ create_panel_menu (void) entries = g_list_prepend (entries, menu_entry_create (_("&Listing format..."), CK_SetupListingFormat)); - entries = g_list_prepend (entries, menu_entry_create (_("S&ort order..."), CK_Sort)); + entries = g_list_prepend (entries, menu_entry_create (_("&Sort order..."), CK_Sort)); entries = g_list_prepend (entries, menu_entry_create (_("&Filter..."), CK_Filter)); #ifdef HAVE_CHARSET entries = g_list_prepend (entries, menu_entry_create (_("&Encoding..."), CK_SelectCodepage)); @@ -215,7 +215,7 @@ create_panel_menu (void) entries = g_list_prepend (entries, menu_entry_create (_("S&hell link..."), CK_ConnectFish)); #endif #ifdef ENABLE_VFS_SFTP - entries = g_list_prepend (entries, menu_entry_create (_("&SFTP link..."), CK_ConnectSftp)); + entries = g_list_prepend (entries, menu_entry_create (_("SFTP li&nk..."), CK_ConnectSftp)); #endif entries = g_list_prepend (entries, menu_entry_create (_("Paneli&ze"), CK_Panelize)); entries = g_list_prepend (entries, menu_separator_create ()); @@ -924,7 +924,7 @@ create_file_manager (void) the_hint = label_new (0, 0, 0); the_hint->transparent = TRUE; the_hint->auto_adjust_cols = 0; - WIDGET (the_hint)->cols = COLS; + WIDGET (the_hint)->rect.cols = COLS; group_add_widget (g, the_hint); cmdline = command_new (0, 0, 0); @@ -1248,9 +1248,6 @@ midnight_execute_cmd (Widget * sender, long command) case CK_ExternalPanelize: external_panelize (); break; - case CK_Filter: - filter_cmd (); - break; case CK_ViewFiltered: view_filtered_cmd (current_panel); break; @@ -1368,6 +1365,7 @@ midnight_execute_cmd (Widget * sender, long command) case CK_Select: case CK_Unselect: case CK_SelectInvert: + case CK_Filter: res = send_message (current_panel, filemanager, MSG_ACTION, command, NULL); break; case CK_Shell: @@ -1481,12 +1479,12 @@ is_cmdline_mute (void) static gboolean handle_cmdline_enter (void) { - size_t i; + const char *s; - for (i = 0; cmdline->buffer[i] != '\0' && whitespace (cmdline->buffer[i]); i++) + for (s = input_get_ctext (cmdline); *s != '\0' && whitespace (*s); s++) ; - if (cmdline->buffer[i] != '\0') + if (*s != '\0') { send_message (cmdline, NULL, MSG_KEY, '\n', NULL); return TRUE; @@ -1526,7 +1524,7 @@ midnight_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void return MSG_HANDLED; case MSG_RESIZE: - widget_adjust_position (w->pos_flags, &w->y, &w->x, &w->lines, &w->cols); + widget_adjust_position (w->pos_flags, &w->rect); setup_panels (); menubar_arrange (the_menubar); return MSG_HANDLED; diff --git a/mcsrc/src/filemanager/fileopctx.c b/mcsrc/src/filemanager/fileopctx.c index c6db22df..88ff2c5b 100644 --- a/mcsrc/src/filemanager/fileopctx.c +++ b/mcsrc/src/filemanager/fileopctx.c @@ -79,7 +79,7 @@ file_op_context_new (FileOperation op) ctx->stat_func = mc_lstat; ctx->preserve = TRUE; ctx->preserve_uidgid = (geteuid () == 0); - ctx->umask_kill = 0777777; + ctx->umask_kill = (mode_t)0777777; ctx->erase_at_end = TRUE; ctx->skip_all = FALSE; diff --git a/mcsrc/src/filemanager/find.c b/mcsrc/src/filemanager/find.c index 4c8cdadc..b9d5320b 100644 --- a/mcsrc/src/filemanager/find.c +++ b/mcsrc/src/filemanager/find.c @@ -7,7 +7,7 @@ Written by: Miguel de Icaza, 1995 Slava Zanko , 2013 - Andrew Borodin , 2013 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -501,7 +501,7 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi /* check filename regexp */ if (!file_pattern_cbox->state && !input_is_empty (in_name) - && !find_check_regexp (in_name->buffer)) + && !find_check_regexp (input_get_ctext (in_name))) { /* Don't stop the dialog */ widget_set_state (w, WST_ACTIVE, TRUE); @@ -511,7 +511,8 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi } /* check content regexp */ - if (content_regexp_cbox->state && !content_is_empty && !find_check_regexp (in_with->buffer)) + if (content_regexp_cbox->state && !content_is_empty + && !find_check_regexp (input_get_ctext (in_with))) { /* Don't stop the dialog */ widget_set_state (w, WST_ACTIVE, TRUE); @@ -782,21 +783,21 @@ find_parameters (WPanel * panel, char **start_dir, ssize_t * start_dir_len, case B_TREE: { - char *temp_dir; + const char *start_cstr; + const char *temp_dir; - temp_dir = in_start->buffer; - if (*temp_dir == '\0' || DIR_IS_DOT (temp_dir)) - temp_dir = g_strdup (vfs_path_as_str (panel->cwd_vpath)); + start_cstr = input_get_ctext (in_start); + + if (input_is_empty (in_start) || DIR_IS_DOT (start_cstr)) + temp_dir = vfs_path_as_str (panel->cwd_vpath); else - temp_dir = g_strdup (temp_dir); + temp_dir = start_cstr; if (in_start_dir != INPUT_LAST_TEXT) g_free (in_start_dir); in_start_dir = tree_box (temp_dir); if (in_start_dir == NULL) - in_start_dir = temp_dir; - else - g_free (temp_dir); + in_start_dir = g_strdup (temp_dir); input_assign_text (in_start, in_start_dir); @@ -823,14 +824,14 @@ find_parameters (WPanel * panel, char **start_dir, ssize_t * start_dir_len, options.skip_hidden = skip_hidden_cbox->state; options.ignore_dirs_enable = ignore_dirs_cbox->state; g_free (options.ignore_dirs); - options.ignore_dirs = g_strdup (in_ignore->buffer); + options.ignore_dirs = input_get_text (in_ignore); - *content = !input_is_empty (in_with) ? g_strdup (in_with->buffer) : NULL; - if (!input_is_empty (in_name)) - *pattern = g_strdup (in_name->buffer); - else + *content = !input_is_empty (in_with) ? input_get_text (in_with) : NULL; + if (input_is_empty (in_name)) *pattern = g_strdup (options.file_pattern ? "*" : ".*"); - *start_dir = !input_is_empty (in_start) ? in_start->buffer : (char *) "."; + else + *pattern = input_get_text (in_name); + *start_dir = (char *) (!input_is_empty (in_start) ? input_get_ctext (in_start) : "."); if (in_start_dir != INPUT_LAST_TEXT) g_free (in_start_dir); in_start_dir = g_strdup (*start_dir); @@ -861,10 +862,10 @@ find_parameters (WPanel * panel, char **start_dir, ssize_t * start_dir_len, } if (!options.ignore_dirs_enable || input_is_empty (in_ignore) - || DIR_IS_DOT (in_ignore->buffer)) + || DIR_IS_DOT (input_get_ctext (in_ignore))) *ignore_dirs = NULL; else - *ignore_dirs = g_strdup (in_ignore->buffer); + *ignore_dirs = input_get_text (in_ignore); find_save_options (); @@ -1033,7 +1034,7 @@ search_content (WDialog * h, const char *directory, const char *filename) if (s.st_size >= MIN_REFRESH_FILE_SIZE || (tv - last_refresh) > MAX_REFRESH_INTERVAL) { g_snprintf (buffer, sizeof (buffer), _("Grepping in %s"), filename); - status_update (str_trunc (buffer, WIDGET (h)->cols - 8)); + status_update (str_trunc (buffer, WIDGET (h)->rect.cols - 8)); mc_refresh (); last_refresh = tv; status_updated = TRUE; @@ -1127,7 +1128,7 @@ search_content (WDialog * h, const char *directory, const char *filename) /* if we add results for a file, we have to ensure that name of this file is shown in status bar */ g_snprintf (result, sizeof (result), _("Grepping in %s"), filename); - status_update (str_trunc (result, WIDGET (h)->cols - 8)); + status_update (str_trunc (result, WIDGET (h)->rect.cols - 8)); mc_refresh (); last_refresh = tv; status_updated = TRUE; @@ -1255,7 +1256,7 @@ find_rotate_dash (const WDialog * h, gboolean show) colors = widget_get_colors (w); tty_setcolor (colors[DLG_COLOR_NORMAL]); - widget_gotoyx (h, w->lines - 7, w->cols - 4); + widget_gotoyx (h, w->rect.lines - 7, w->rect.cols - 4); tty_print_char (show ? rotating_dash[pos] : ' '); pos = (pos + 1) % sizeof (rotating_dash); mc_refresh (); @@ -1346,7 +1347,7 @@ do_search (WDialog * h) char buffer[BUF_MEDIUM]; g_snprintf (buffer, sizeof (buffer), _("Searching %s"), directory); - status_update (str_trunc (directory, WIDGET (h)->cols - 8)); + status_update (str_trunc (directory, WIDGET (h)->rect.cols - 8)); } dirp = mc_opendir (tmp_vpath); @@ -1486,7 +1487,7 @@ view_edit_currently_selected_file (gboolean unparsed_view, gboolean edit) static void find_calc_button_locations (const WDialog * h, gboolean all_buttons) { - const int cols = CONST_WIDGET (h)->cols; + const int cols = CONST_WIDGET (h)->rect.cols; int l1, l2; @@ -1522,10 +1523,10 @@ find_adjust_header (WDialog * h) g_snprintf (title, sizeof (title), _("Find File: \"%s\""), find_pattern); title_len = str_term_width1 (title); - if (title_len > WIDGET (h)->cols - 6) + if (title_len > WIDGET (h)->rect.cols - 6) { /* title is too wide, truncate it */ - title_len = WIDGET (h)->cols - 6; + title_len = WIDGET (h)->rect.cols - 6; title_len = str_column_to_pos (title, title_len); title_len -= 3; /* reserve space for three dots */ title_len = str_offset_to_pos (title, title_len); @@ -1546,7 +1547,7 @@ find_relocate_buttons (const WDialog * h, gboolean all_buttons) find_calc_button_locations (h, all_buttons); for (i = 0; i < fbuts_num; i++) - fbuts[i].button->x = CONST_WIDGET (h)->x + fbuts[i].x; + fbuts[i].button->rect.x = CONST_WIDGET (h)->rect.x + fbuts[i].x; } /* --------------------------------------------------------------------------------------------- */ @@ -1555,9 +1556,10 @@ static cb_ret_t find_resize (WDialog * h) { Widget *w = WIDGET (h); - WRect r; + WRect r = w->rect; - rect_init (&r, w->y, w->x, LINES - 4, COLS - 16); + r.lines = LINES - 4; + r.cols = COLS - 16; dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r); find_adjust_header (h); find_relocate_buttons (h, TRUE); @@ -1691,7 +1693,7 @@ setup_gui (void) y = 2; find_list = listbox_new (y, 2, lines - 10, cols - 4, FALSE, NULL); group_add_widget_autopos (g, find_list, WPOS_KEEP_ALL, NULL); - y += WIDGET (find_list)->lines; + y += WIDGET (find_list)->rect.lines; group_add_widget_autopos (g, hline_new (y++, -1, -1), WPOS_KEEP_BOTTOM, NULL); diff --git a/mcsrc/src/filemanager/hotlist.c b/mcsrc/src/filemanager/hotlist.c index 0944d681..24ab09d9 100644 --- a/mcsrc/src/filemanager/hotlist.c +++ b/mcsrc/src/filemanager/hotlist.c @@ -9,7 +9,7 @@ Janne Kukonlehto, 1995 Andrej Borsenkow, 1996 Norbert Warmuth, 1997 - Andrew Borodin , 2012, 2013 + Andrew Borodin , 2012-2022 Janne did the original Hotlist code, Andrej made the groupable hotlist; the move hotlist and revamped the file format and made @@ -254,11 +254,11 @@ update_path_name (void) p = g_strconcat (" ", current_group->label, " ", (char *) NULL); if (hotlist_state.moving) - groupbox_set_title (movelist_group, str_trunc (p, w->cols - 2)); + groupbox_set_title (movelist_group, str_trunc (p, w->rect.cols - 2)); else { - groupbox_set_title (hotlist_group, str_trunc (p, w->cols - 2)); - label_set_text (pname, str_trunc (text, w->cols)); + groupbox_set_title (hotlist_group, str_trunc (p, w->rect.cols - 2)); + label_set_text (pname, str_trunc (text, w->rect.cols)); } g_free (p); } @@ -609,9 +609,10 @@ hotlist_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void case MSG_RESIZE: { - WRect r; + WRect r = w->rect; - rect_init (&r, w->y, w->x, LINES - (h == hotlist_dlg ? 2 : 6), COLS - 6); + r.lines = LINES - (h == hotlist_dlg ? 2 : 6); + r.cols = COLS - 6; return dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r); } @@ -789,8 +790,8 @@ init_hotlist (hotlist_t list_type) group_add_widget_autopos (g, hotlist_widget, WPOS_KEEP_ALL, NULL); l_hotlist = - listbox_new (y + 1, UX + 1, hotlist_widget->lines - 2, hotlist_widget->cols - 2, FALSE, - hotlist_listbox_callback); + listbox_new (y + 1, UX + 1, hotlist_widget->rect.lines - 2, hotlist_widget->rect.cols - 2, + FALSE, hotlist_listbox_callback); /* Fill the hotlist with the active VFS or the hotlist */ #ifdef ENABLE_VFS @@ -807,14 +808,14 @@ init_hotlist (hotlist_t list_type) /* insert before groupbox to view scrollbar */ group_add_widget_autopos (g, l_hotlist, WPOS_KEEP_ALL, NULL); - y += hotlist_widget->lines; + y += hotlist_widget->rect.lines; - path_box = groupbox_new (y, UX, 3, hotlist_widget->cols, _("Directory path")); + path_box = groupbox_new (y, UX, 3, hotlist_widget->rect.cols, _("Directory path")); group_add_widget_autopos (g, path_box, WPOS_KEEP_BOTTOM | WPOS_KEEP_HORZ, NULL); pname = label_new (y + 1, UX + 2, ""); group_add_widget_autopos (g, pname, WPOS_KEEP_BOTTOM | WPOS_KEEP_LEFT, NULL); - y += WIDGET (path_box)->lines; + y += WIDGET (path_box)->rect.lines; group_add_widget_autopos (g, hline_new (y++, -1, -1), WPOS_KEEP_BOTTOM, NULL); @@ -861,13 +862,13 @@ init_movelist (struct hotlist *item) group_add_widget_autopos (g, movelist_widget, WPOS_KEEP_ALL, NULL); l_movelist = - listbox_new (y + 1, UX + 1, movelist_widget->lines - 2, movelist_widget->cols - 2, FALSE, - hotlist_listbox_callback); + listbox_new (y + 1, UX + 1, movelist_widget->rect.lines - 2, movelist_widget->rect.cols - 2, + FALSE, hotlist_listbox_callback); fill_listbox (l_movelist); /* insert before groupbox to view scrollbar */ group_add_widget_autopos (g, l_movelist, WPOS_KEEP_ALL, NULL); - y += movelist_widget->lines; + y += movelist_widget->rect.lines; group_add_widget_autopos (g, hline_new (y++, -1, -1), WPOS_KEEP_BOTTOM, NULL); @@ -1022,11 +1023,12 @@ add_new_entry_input (const char *header, const char *text1, const char *text2, }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 64, - header, help, + WRect r = { -1, -1, 0, 64 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, header, help, quick_widgets, NULL, NULL - }; + ); int ret; @@ -1105,11 +1107,12 @@ add_new_group_input (const char *header, const char *label, char **result) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 64, - header, "[Hotlist]", + WRect r = { -1, -1, 0, 64 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, header, "[Hotlist]", quick_widgets, NULL, NULL - }; + ); int ret; diff --git a/mcsrc/src/filemanager/info.c b/mcsrc/src/filemanager/info.c index b6389efc..cb117ac9 100644 --- a/mcsrc/src/filemanager/info.c +++ b/mcsrc/src/filemanager/info.c @@ -6,7 +6,7 @@ Written by: Slava Zanko , 2013 - Andrew Borodin , 2013 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -89,16 +89,16 @@ info_box (WInfo * info) tty_set_normal_attrs (); tty_setcolor (NORMAL_COLOR); widget_erase (w); - tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE); + tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE); - widget_gotoyx (w, 0, (w->cols - len - 2) / 2); + widget_gotoyx (w, 0, (w->rect.cols - len - 2) / 2); tty_printf (" %s ", title); widget_gotoyx (w, 2, 0); tty_print_alt_char (ACS_LTEE, FALSE); - widget_gotoyx (w, 2, w->cols - 1); + widget_gotoyx (w, 2, w->rect.cols - 1); tty_print_alt_char (ACS_RTEE, FALSE); - tty_draw_hline (w->y + 2, w->x + 1, ACS_HLINE, w->cols - 2); + tty_draw_hline (w->rect.y + 2, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2); } /* --------------------------------------------------------------------------------------------- */ @@ -106,7 +106,7 @@ info_box (WInfo * info) static void info_show_info (WInfo * info) { - Widget *w = WIDGET (info); + const WRect *w = &CONST_WIDGET (info)->rect; static int i18n_adjust = 0; static const char *file_label; GString *buff; @@ -163,11 +163,11 @@ info_show_info (WInfo * info) (myfs_stats.nfree == (uintmax_t) (-1) && myfs_stats.nodes == (uintmax_t) (-1))) tty_print_string (_("No node information")); else if (myfs_stats.nfree == (uintmax_t) (-1)) - tty_printf ("%s -/%" PRIuMAX, _("Free nodes:"), myfs_stats.nodes); + tty_printf ("%s - / %" PRIuMAX, _("Free nodes:"), myfs_stats.nodes); else if (myfs_stats.nodes == (uintmax_t) (-1)) - tty_printf ("%s %" PRIuMAX "/-", _("Free nodes:"), myfs_stats.nfree); + tty_printf ("%s %" PRIuMAX " / -", _("Free nodes:"), myfs_stats.nfree); else - tty_printf ("%s %" PRIuMAX "/%" PRIuMAX " (%d%%)", + tty_printf ("%s %" PRIuMAX " / %" PRIuMAX " (%d%%)", _("Free nodes:"), myfs_stats.nfree, myfs_stats.nodes, myfs_stats.nodes == 0 ? 0 : @@ -183,7 +183,7 @@ info_show_info (WInfo * info) size_trunc_len (buffer1, 5, myfs_stats.avail, 1, panels_options.kilobyte_si); size_trunc_len (buffer2, 5, myfs_stats.total, 1, panels_options.kilobyte_si); - tty_printf (_("Free space: %s/%s (%d%%)"), buffer1, buffer2, + tty_printf (_("Free space: %s / %s (%d%%)"), buffer1, buffer2, myfs_stats.total == 0 ? 0 : (int) (100 * (long double) myfs_stats.avail / myfs_stats.total)); } @@ -362,12 +362,13 @@ info_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *da WInfo * info_new (int y, int x, int lines, int cols) { + WRect r = { y, x, lines, cols }; WInfo *info; Widget *w; info = g_new (struct WInfo, 1); w = WIDGET (info); - widget_init (w, y, x, lines, cols, info_callback, NULL); + widget_init (w, &r, info_callback, NULL); return info; } diff --git a/mcsrc/src/filemanager/layout.c b/mcsrc/src/filemanager/layout.c index 8dcb7930..cab72c64 100644 --- a/mcsrc/src/filemanager/layout.c +++ b/mcsrc/src/filemanager/layout.c @@ -7,7 +7,7 @@ Written by: Janne Kukonlehto, 1995 Miguel de Icaza, 1995 - Andrew Borodin , 2011, 2012, 2013 + Andrew Borodin , 2011-2022 Slava Zanko , 2013 Avi Kelman , 2013 @@ -214,7 +214,7 @@ check_split (panels_layout_t * layout) } else { - int md_cols = CONST_WIDGET (filemanager)->cols; + int md_cols = CONST_WIDGET (filemanager)->rect.cols; if (layout->vertical_equal) layout->left_panel_size = md_cols / 2; @@ -252,7 +252,7 @@ update_split (const WDialog * h) if (panels_layout.horizontal_split) tty_printf ("%03d", height - panels_layout.top_panel_size); else - tty_printf ("%03d", CONST_WIDGET (filemanager)->cols - panels_layout.left_panel_size); + tty_printf ("%03d", CONST_WIDGET (filemanager)->rect.cols - panels_layout.left_panel_size); widget_gotoyx (h, 6, 12); tty_print_char ('='); @@ -363,7 +363,7 @@ layout_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void * if (mc_global.tty.console_flag == '\0') height = - mw->lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) - + mw->rect.lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) - (_menubar_visible ? 1 : 0) - _output_lines - (_message_visible ? 1 : 0); else { @@ -372,7 +372,7 @@ layout_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void * if (_output_lines < 0) _output_lines = 0; height = - mw->lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) - + mw->rect.lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) - (_menubar_visible ? 1 : 0) - _output_lines - (_message_visible ? 1 : 0); minimum = MINHEIGHT * (1 + (panels_layout.horizontal_split ? 1 : 0)); if (height < minimum) @@ -413,7 +413,7 @@ layout_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void * { eq = panels_layout.vertical_equal; if (eq) - panels_layout.left_panel_size = CONST_WIDGET (filemanager)->cols / 2; + panels_layout.left_panel_size = CONST_WIDGET (filemanager)->rect.cols / 2; } widget_disable (WIDGET (bleft_widget), eq); @@ -762,28 +762,28 @@ panel_update_cols (Widget * widget, panel_display_t frame_size) if (panels_layout.horizontal_split) { - widget->cols = mw->cols; + widget->rect.cols = mw->rect.cols; return; } if (frame_size == frame_full) { - cols = mw->cols; - x = mw->x; + cols = mw->rect.cols; + x = mw->rect.x; } else if (widget == get_panel_widget (0)) { cols = panels_layout.left_panel_size; - x = mw->x; + x = mw->rect.x; } else { - cols = mw->cols - panels_layout.left_panel_size; - x = mw->x + panels_layout.left_panel_size; + cols = mw->rect.cols - panels_layout.left_panel_size; + x = mw->rect.x + panels_layout.left_panel_size; } - widget->cols = cols; - widget->x = x; + widget->rect.cols = cols; + widget->rect.x = x; } /* --------------------------------------------------------------------------------------------- */ @@ -818,8 +818,10 @@ setup_panels (void) */ Widget *mw = WIDGET (filemanager); + const WRect *r = &CONST_WIDGET (mw)->rect; int start_y; gboolean active; + WRect rb; active = widget_get_state (mw, WST_ACTIVE); @@ -829,7 +831,7 @@ setup_panels (void) /* iniitial height of panels */ height = - mw->lines - (menubar_visible ? 1 : 0) - (mc_global.message_visible ? 1 : 0) - + r->lines - (menubar_visible ? 1 : 0) - (mc_global.message_visible ? 1 : 0) - (command_prompt ? 1 : 0) - (mc_global.keybar_visible ? 1 : 0); if (mc_global.tty.console_flag != '\0') @@ -848,11 +850,13 @@ setup_panels (void) } } - widget_set_size (WIDGET (the_menubar), mw->y, mw->x, 1, mw->cols); + rb = *r; + rb.lines = 1; + widget_set_size_rect (WIDGET (the_menubar), &rb); widget_set_visibility (WIDGET (the_menubar), menubar_visible); check_split (&panels_layout); - start_y = mw->y + (menubar_visible ? 1 : 0); + start_y = r->y + (menubar_visible ? 1 : 0); /* update columns first... */ panel_do_cols (0); @@ -861,19 +865,19 @@ setup_panels (void) /* ...then rows and origin */ if (panels_layout.horizontal_split) { - widget_set_size (panels[0].widget, start_y, mw->x, panels_layout.top_panel_size, - panels[0].widget->cols); - widget_set_size (panels[1].widget, start_y + panels_layout.top_panel_size, mw->x, - height - panels_layout.top_panel_size, panels[1].widget->cols); + widget_set_size (panels[0].widget, start_y, r->x, panels_layout.top_panel_size, + panels[0].widget->rect.cols); + widget_set_size (panels[1].widget, start_y + panels_layout.top_panel_size, r->x, + height - panels_layout.top_panel_size, panels[1].widget->rect.cols); } else { - widget_set_size (panels[0].widget, start_y, mw->x, height, panels[0].widget->cols); - widget_set_size (panels[1].widget, start_y, panels[1].widget->x, height, - panels[1].widget->cols); + widget_set_size (panels[0].widget, start_y, r->x, height, panels[0].widget->rect.cols); + widget_set_size (panels[1].widget, start_y, panels[1].widget->rect.x, height, + panels[1].widget->rect.cols); } - widget_set_size (WIDGET (the_hint), height + start_y, mw->x, 1, mw->cols); + widget_set_size (WIDGET (the_hint), height + start_y, r->x, 1, r->cols); widget_set_visibility (WIDGET (the_hint), mc_global.message_visible); /* Output window */ @@ -881,7 +885,7 @@ setup_panels (void) { unsigned char end_line; - end_line = mw->lines - (mc_global.keybar_visible ? 1 : 0) - 1; + end_line = r->lines - (mc_global.keybar_visible ? 1 : 0) - 1; output_start_y = end_line - (command_prompt ? 1 : 0) - output_lines + 1; show_console_contents (output_start_y, end_line - output_lines, end_line); } @@ -900,7 +904,10 @@ setup_panels (void) widget_hide (WIDGET (the_prompt)); } - widget_set_size (WIDGET (the_bar), mw->lines - 1, mw->x, 1, mw->cols); + rb = *r; + rb.y = r->lines - 1; + rb.lines = 1; + widget_set_size_rect (WIDGET (the_bar), &rb); widget_set_visibility (WIDGET (the_bar), mc_global.keybar_visible); update_xterm_title_path (); @@ -971,6 +978,7 @@ void setup_cmdline (void) { const Widget *mw = CONST_WIDGET (filemanager); + const WRect *r = &mw->rect; int prompt_width; int y; char *tmp_prompt = (char *) mc_prompt; @@ -993,11 +1001,11 @@ setup_cmdline (void) prompt_width = str_term_width1 (tmp_prompt); /* Check for prompts too big */ - if (mw->cols > 8 && prompt_width > mw->cols - 8) + if (r->cols > 8 && prompt_width > r->cols - 8) { int prompt_len; - prompt_width = mw->cols - 8; + prompt_width = r->cols - 8; prompt_len = str_offset_to_pos (tmp_prompt, prompt_width); tmp_prompt[prompt_len] = '\0'; } @@ -1011,11 +1019,11 @@ setup_cmdline (void) } #endif - y = mw->lines - 1 - (mc_global.keybar_visible ? 1 : 0); + y = r->lines - 1 - (mc_global.keybar_visible ? 1 : 0); - widget_set_size (WIDGET (the_prompt), y, mw->x, 1, prompt_width); + widget_set_size (WIDGET (the_prompt), y, r->x, 1, prompt_width); label_set_text (the_prompt, mc_prompt); - widget_set_size (WIDGET (cmdline), y, mw->x + prompt_width, 1, mw->cols - prompt_width); + widget_set_size (WIDGET (cmdline), y, r->x + prompt_width, 1, r->cols - prompt_width); widget_show (WIDGET (the_prompt)); widget_show (WIDGET (cmdline)); @@ -1059,7 +1067,7 @@ rotate_dash (gboolean show) if (show && !mc_time_elapsed (×tamp, delay)) return; - widget_gotoyx (w, menubar_visible ? 1 : 0, w->cols - 1); + widget_gotoyx (w, menubar_visible ? 1 : 0, w->rect.cols - 1); tty_setcolor (NORMAL_COLOR); if (!show) @@ -1111,7 +1119,7 @@ get_nth_panel_name (int num) void create_panel (int num, panel_view_mode_t type) { - int x = 0, y = 0, cols = 0, lines = 0; + WRect r = { 0, 0, 0, 0 }; unsigned int the_other = 0; /* Index to the other panel */ const char *file_name = NULL; /* For Quick view */ Widget *new_widget = NULL, *old_widget = NULL; @@ -1138,27 +1146,24 @@ create_panel (int num, panel_view_mode_t type) Widget *w = panels[num].widget; WPanel *panel = PANEL (w); - x = w->x; - y = w->y; - cols = w->cols; - lines = w->lines; + r = w->rect; old_widget = w; old_type = panels[num].type; if (old_type == view_listing && panel->frame_size == frame_full && type != view_listing) { - int md_cols = CONST_WIDGET (filemanager)->cols; + int md_cols = CONST_WIDGET (filemanager)->rect.cols; if (panels_layout.horizontal_split) { - cols = md_cols; - x = 0; + r.cols = md_cols; + r.x = 0; } else { - cols = md_cols - panels_layout.left_panel_size; + r.cols = md_cols - panels_layout.left_panel_size; if (num == 1) - x = panels_layout.left_panel_size; + r.x = panels_layout.left_panel_size; } } } @@ -1176,20 +1181,21 @@ create_panel (int num, panel_view_mode_t type) gboolean last_was_panel; last_was_panel = old_widget != NULL && get_panel_type (num) != view_listing; - new_widget = restore_into_right_dir_panel (num, last_was_panel, y, x, lines, cols); + new_widget = + restore_into_right_dir_panel (num, last_was_panel, r.y, r.x, r.lines, r.cols); break; } case view_info: - new_widget = WIDGET (info_new (y, x, lines, cols)); + new_widget = WIDGET (info_new (r.y, r.x, r.lines, r.cols)); break; case view_tree: - new_widget = WIDGET (tree_new (y, x, lines, cols, TRUE)); + new_widget = WIDGET (tree_new (r.y, r.x, r.lines, r.cols, TRUE)); break; case view_quick: - new_widget = WIDGET (mcview_new (y, x, lines, cols, TRUE)); + new_widget = WIDGET (mcview_new (r.y, r.x, r.lines, r.cols, TRUE)); the_other_panel = PANEL (panels[the_other].widget); if (the_other_panel != NULL) file_name = the_other_panel->dir.list[the_other_panel->selected].fname->str; @@ -1295,6 +1301,7 @@ swap_panels (void) panelswap (selected); panelswap (is_panelized); panelswap (dir_stat); + panelswap (sort_field); #undef panelswap panel1->quick_search.active = FALSE; @@ -1320,7 +1327,7 @@ swap_panels (void) else { WPanel *tmp_panel; - int x, y, cols, lines; + WRect r; int tmp_type; tmp_panel = right_panel; @@ -1344,20 +1351,9 @@ swap_panels (void) } } - x = panels[0].widget->x; - y = panels[0].widget->y; - cols = panels[0].widget->cols; - lines = panels[0].widget->lines; - - panels[0].widget->x = panels[1].widget->x; - panels[0].widget->y = panels[1].widget->y; - panels[0].widget->cols = panels[1].widget->cols; - panels[0].widget->lines = panels[1].widget->lines; - - panels[1].widget->x = x; - panels[1].widget->y = y; - panels[1].widget->cols = cols; - panels[1].widget->lines = lines; + r = panels[0].widget->rect; + panels[0].widget->rect = panels[1].widget->rect; + panels[1].widget->rect = r; tmp_widget = panels[0].widget; panels[0].widget = panels[1].widget; diff --git a/mcsrc/src/filemanager/panel.c b/mcsrc/src/filemanager/panel.c index b520ba0d..cd0162a2 100644 --- a/mcsrc/src/filemanager/panel.c +++ b/mcsrc/src/filemanager/panel.c @@ -8,7 +8,7 @@ Miguel de Icaza, 1995 Timur Bakeyev, 1997, 1999 Slava Zanko , 2013 - Andrew Borodin , 2013-2016 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -61,6 +61,7 @@ #include "src/selcodepage.h" /* select_charset (), SELECT_CHARSET_NO_TRANSLATE */ #endif #include "src/keymap.h" /* global_keymap_t */ +#include "src/history.h" #ifdef ENABLE_SUBSHELL #include "src/subshell/subshell.h" /* do_subshell_chdir() */ #endif @@ -117,6 +118,15 @@ mc_fhl_t *mc_filehighlight = NULL; #define MARKED_SELECTED 3 #define STATUS 5 +/* select/unselect dialog results */ +#define SELECT_RESET ((mc_search_t *)(-1)) +#define SELECT_ERROR ((mc_search_t *)(-2)) + +/* mouse position relative to file list */ +#define MOUSE_UPPER_FILE_LIST (-1) +#define MOUSE_BELOW_FILE_LIST (-2) +#define MOUSE_AFTER_LAST_FILE (-3) + /*** file scope type declarations ****************************************************************/ typedef enum @@ -402,7 +412,7 @@ static int panel_lines (const WPanel * p) { /* 3 lines are: top frame, column header, botton frame */ - return (CONST_WIDGET (p)->lines - 3 - (panels_options.show_mini_info ? 2 : 0)); + return (CONST_WIDGET (p)->rect.lines - 3 - (panels_options.show_mini_info ? 2 : 0)); } /* --------------------------------------------------------------------------------------------- */ @@ -913,7 +923,7 @@ repaint_file (WPanel * panel, int file_index, int attr, gboolean isstatus) int fln = 0; panel_is_split = !isstatus && panel->list_cols > 1; - width = w->cols - 2; + width = w->rect.cols - 2; if (panel_is_split) { @@ -923,7 +933,7 @@ repaint_file (WPanel * panel, int file_index, int attr, gboolean isstatus) offset = width * nth_column; if (nth_column + 1 >= panel->list_cols) - width = w->cols - offset - 2; + width = w->rect.cols - offset - 2; } /* Nothing to paint */ @@ -986,7 +996,7 @@ display_mini_info (WPanel * panel) { Widget *w = WIDGET (panel); - if (!panels_options.show_mini_info) + if (!panels_options.show_mini_info || panel->selected < 0) return; widget_gotoyx (w, panel_lines (panel) + 3, 1); @@ -995,7 +1005,8 @@ display_mini_info (WPanel * panel) { tty_setcolor (INPUT_COLOR); tty_print_char ('/'); - tty_print_string (str_fit_to_term (panel->quick_search.buffer->str, w->cols - 3, J_LEFT)); + tty_print_string (str_fit_to_term + (panel->quick_search.buffer->str, w->rect.cols - 3, J_LEFT)); return; } @@ -1017,10 +1028,10 @@ display_mini_info (WPanel * panel) { link_target[len] = 0; tty_print_string ("-> "); - tty_print_string (str_fit_to_term (link_target, w->cols - 5, J_LEFT_FIT)); + tty_print_string (str_fit_to_term (link_target, w->rect.cols - 5, J_LEFT_FIT)); } else - tty_print_string (str_fit_to_term (_(""), w->cols - 2, J_LEFT)); + tty_print_string (str_fit_to_term (_(""), w->rect.cols - 2, J_LEFT)); } else if (DIR_IS_DOTDOT (panel->dir.list[panel->selected].fname->str)) { @@ -1028,7 +1039,7 @@ display_mini_info (WPanel * panel) * while loading directory (dir_list_load() and dir_list_reload()), * the actual stat info about ".." directory isn't got; * so just don't display incorrect info about ".." directory */ - tty_print_string (str_fit_to_term (_("UP--DIR"), w->cols - 2, J_LEFT)); + tty_print_string (str_fit_to_term (_("UP--DIR"), w->rect.cols - 2, J_LEFT)); } else /* Default behavior */ @@ -1078,7 +1089,7 @@ display_total_marked_size (const WPanel * panel, int y, int x, gboolean size_onl return; buf = size_only ? b_bytes : buffer; - cols = w->cols - 2; + cols = w->rect.cols - 2; g_strlcpy (b_bytes, size_trunc_sep (panel->total, panels_options.kilobyte_si), sizeof (b_bytes)); @@ -1093,7 +1104,7 @@ display_total_marked_size (const WPanel * panel, int y, int x, gboolean size_onl if (x < 0) /* center in panel */ - x = (w->cols - str_term_width1 (buf)) / 2 - 1; + x = (w->rect.cols - str_term_width1 (buf)) / 2 - 1; /* * y == panel_lines (panel) + 2 for mini_info_separator @@ -1117,7 +1128,7 @@ mini_info_separator (const WPanel * panel) y = panel_lines (panel) + 2; tty_setcolor (NORMAL_COLOR); - tty_draw_hline (w->y + y, w->x + 1, ACS_HLINE, w->cols - 2); + tty_draw_hline (w->rect.y + y, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2); /* Status displays total marked size. * Centered in panel, full format. */ display_total_marked_size (panel, y, -1, FALSE); @@ -1161,10 +1172,10 @@ show_free_space (const WPanel * panel) panels_options.kilobyte_si); size_trunc_len (buffer2, sizeof (buffer2) - 1, myfs_stats.total, 1, panels_options.kilobyte_si); - g_snprintf (tmp, sizeof (tmp), " %s/%s (%d%%) ", buffer1, buffer2, + g_snprintf (tmp, sizeof (tmp), " %s / %s (%d%%) ", buffer1, buffer2, myfs_stats.total == 0 ? 0 : (int) (100 * (long double) myfs_stats.avail / myfs_stats.total)); - widget_gotoyx (w, w->lines - 1, w->cols - 2 - (int) strlen (tmp)); + widget_gotoyx (w, w->rect.lines - 1, w->rect.cols - 2 - (int) strlen (tmp)); tty_setcolor (NORMAL_COLOR); tty_print_string (tmp); } @@ -1259,7 +1270,7 @@ show_dir (const WPanel * panel) gchar *tmp; set_colors (panel); - tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE); + tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE); if (panels_options.show_mini_info) { @@ -1269,7 +1280,7 @@ show_dir (const WPanel * panel) widget_gotoyx (w, y, 0); tty_print_alt_char (ACS_LTEE, FALSE); - widget_gotoyx (w, y, w->cols - 1); + widget_gotoyx (w, y, w->rect.cols - 1); tty_print_alt_char (ACS_RTEE, FALSE); } @@ -1280,7 +1291,7 @@ show_dir (const WPanel * panel) tmp = g_strdup_printf ("%s[%s]%s", tmp, panel_history_show_list_char, panel_history_next_item_char); - widget_gotoyx (w, 0, w->cols - 6); + widget_gotoyx (w, 0, w->rect.cols - 6); tty_print_string (tmp); g_free (tmp); @@ -1306,7 +1317,7 @@ show_dir (const WPanel * panel) tty_setcolor (REVERSE_COLOR); tmp = panel_correct_path_to_show (panel); - tty_printf (" %s ", str_term_trim (tmp, MIN (MAX (w->cols - 12, 0), w->cols))); + tty_printf (" %s ", str_term_trim (tmp, MIN (MAX (w->rect.cols - 12, 0), w->rect.cols))); g_free (tmp); if (!panels_options.show_mini_info) @@ -1322,7 +1333,7 @@ show_dir (const WPanel * panel) size_trunc_sep (panel->dir.list[panel->selected].st.st_size, panels_options.kilobyte_si)); tty_setcolor (NORMAL_COLOR); - widget_gotoyx (w, w->lines - 1, 4); + widget_gotoyx (w, w->rect.lines - 1, 4); tty_print_string (buffer); } } @@ -1330,7 +1341,7 @@ show_dir (const WPanel * panel) { /* Show total size of marked files * In the bottom of panel, display size only. */ - display_total_marked_size (panel, w->lines - 1, 2, TRUE); + display_total_marked_size (panel, w->rect.lines - 1, 2, TRUE); } } @@ -1492,6 +1503,8 @@ panel_destroy (WPanel * p) } g_free (p->dir_history.name); + file_filter_clear (&p->filter); + g_slist_free_full (p->format, (GDestroyNotify) format_item_free); g_slist_free_full (p->status_format, (GDestroyNotify) format_item_free); @@ -1544,7 +1557,7 @@ panel_get_title_without_hotkey (const char *title) hkey = strchr (translated_title, '&'); if (hkey != NULL && hkey[1] != '\0') - memmove ((void *) hkey, (void *)(hkey + 1), strlen (hkey)); + memmove (hkey, hkey + 1, strlen (hkey)); } return translated_title; @@ -1564,7 +1577,7 @@ panel_print_header (const WPanel * panel) widget_gotoyx (w, 1, 1); tty_getyx (&y, &x); tty_setcolor (NORMAL_COLOR); - tty_draw_hline (y, x, ' ', w->cols - 2); + tty_draw_hline (y, x, ' ', w->rect.cols - 2); format_txt = g_string_new (""); @@ -1587,10 +1600,10 @@ panel_print_header (const WPanel * panel) g_string_append (format_txt, fi->title); - if (panel->filter != NULL && strcmp (fi->id, "name") == 0) + if (panel->filter.handler != NULL && strcmp (fi->id, "name") == 0) { g_string_append (format_txt, " ["); - g_string_append (format_txt, panel->filter); + g_string_append (format_txt, panel->filter.value); g_string_append (format_txt, "]"); } @@ -1840,7 +1853,7 @@ use_display_format (WPanel * panel, const char *format, char **error, gboolean i panel->dirty = TRUE; - usable_columns = WIDGET (panel)->cols - 2; + usable_columns = WIDGET (panel)->rect.cols - 2; /* Status needn't to be split */ if (!isstatus) { @@ -2522,17 +2535,16 @@ mark_file_left (WPanel * panel) /* --------------------------------------------------------------------------------------------- */ -static void -panel_select_unselect_files (WPanel * panel, const char *title, const char *history_name, - gboolean do_select) +static mc_search_t * +panel_select_unselect_files_dialog (select_flags_t * flags, const char *title, + const char *history_name, const char *help_section, char **str) { - gboolean files_only = (panels_options.select_flags & SELECT_FILES_ONLY) != 0; - gboolean case_sens = (panels_options.select_flags & SELECT_MATCH_CASE) != 0; - gboolean shell_patterns = (panels_options.select_flags & SELECT_SHELL_PATTERNS) != 0; + gboolean files_only = (*flags & SELECT_FILES_ONLY) != 0; + gboolean case_sens = (*flags & SELECT_MATCH_CASE) != 0; + gboolean shell_patterns = (*flags & SELECT_SHELL_PATTERNS) != 0; char *reg_exp; mc_search_t *search; - int i; #if defined(WIN32) //WIN32, quick quick_widget_t quick_widgets[8] = {0}, @@ -2553,11 +2565,12 @@ panel_select_unselect_files (WPanel * panel, const char *title, const char *hist }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 50, - title, "[Select/Unselect Files]", + WRect r = { -1, -1, 0, 50 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, title, help_section, quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_INPUT (qc, INPUT_LAST_TEXT, history_name, ®_exp, NULL, @@ -2573,12 +2586,14 @@ panel_select_unselect_files (WPanel * panel, const char *title, const char *hist #endif //WIN32 if (quick_dialog (&qdlg) == B_CANCEL) - return; + return NULL; - if (reg_exp == NULL || *reg_exp == '\0') + if (*reg_exp == '\0') { g_free (reg_exp); - return; + if (str != NULL) + *str = NULL; + return SELECT_RESET; } search = mc_search_new (reg_exp, NULL); @@ -2586,6 +2601,47 @@ panel_select_unselect_files (WPanel * panel, const char *title, const char *hist search->is_entire_line = TRUE; search->is_case_sensitive = case_sens; + if (str != NULL) + *str = reg_exp; + else + g_free (reg_exp); + + if (!mc_search_prepare (search)) + { + message (D_ERROR, MSG_ERROR, _("Malformed regular expression")); + mc_search_free (search); + return SELECT_ERROR; + } + + /* result flags */ + *flags = 0; + if (case_sens) + *flags |= SELECT_MATCH_CASE; + if (files_only) + *flags |= SELECT_FILES_ONLY; + if (shell_patterns) + *flags |= SELECT_SHELL_PATTERNS; + + return search; +} + +/* --------------------------------------------------------------------------------------------- */ + +static void +panel_select_unselect_files (WPanel * panel, const char *title, const char *history_name, + const char *help_section, gboolean do_select) +{ + mc_search_t *search; + gboolean files_only; + int i; + + search = panel_select_unselect_files_dialog (&panels_options.select_flags, title, history_name, + help_section, NULL); + if (search == NULL || search == SELECT_RESET || search == SELECT_ERROR) + return; + + files_only = (panels_options.select_flags & SELECT_FILES_ONLY) != 0; + for (i = 0; i < panel->dir.len; i++) { if (DIR_IS_DOTDOT (panel->dir.list[i].fname->str)) @@ -2599,16 +2655,6 @@ panel_select_unselect_files (WPanel * panel, const char *title, const char *hist } mc_search_free (search); - g_free (reg_exp); - - /* result flags */ - panels_options.select_flags = 0; - if (case_sens) - panels_options.select_flags |= SELECT_MATCH_CASE; - if (files_only) - panels_options.select_flags |= SELECT_FILES_ONLY; - if (shell_patterns) - panels_options.select_flags |= SELECT_SHELL_PATTERNS; } /* --------------------------------------------------------------------------------------------- */ @@ -2616,7 +2662,8 @@ panel_select_unselect_files (WPanel * panel, const char *title, const char *hist static void panel_select_files (WPanel * panel) { - panel_select_unselect_files (panel, _("Select"), ":select_cmd: Select ", TRUE); + panel_select_unselect_files (panel, _("Select"), MC_HISTORY_FM_PANEL_SELECT, + "[Select/Unselect Files]", TRUE); } /* --------------------------------------------------------------------------------------------- */ @@ -2624,7 +2671,8 @@ panel_select_files (WPanel * panel) static void panel_unselect_files (WPanel * panel) { - panel_select_unselect_files (panel, _("Unselect"), ":unselect_cmd: Unselect ", FALSE); + panel_select_unselect_files (panel, _("Unselect"), MC_HISTORY_FM_PANEL_UNSELECT, + "[Select/Unselect Files]", FALSE); } /* --------------------------------------------------------------------------------------------- */ @@ -2643,6 +2691,30 @@ panel_select_invert_files (WPanel * panel) } } +/* --------------------------------------------------------------------------------------------- */ + +static void +panel_do_set_filter (WPanel * panel) +{ +#if defined(__WATCOMC__) + file_filter_t ff = {NULL, NULL, 0); ff.flags = panel->filter.flags; +#else + file_filter_t ff = {.value = NULL,.handler = NULL,.flags = panel->filter.flags }; +#endif + + ff.handler = + panel_select_unselect_files_dialog (&ff.flags, _("Filter"), MC_HISTORY_FM_PANEL_FILTER, + "[Filter...]", &ff.value); + + if (ff.handler == NULL || ff.handler == SELECT_ERROR) + return; + + if (ff.handler == SELECT_RESET) + ff.handler = NULL; + + panel_set_filter (panel, &ff); +} + /* --------------------------------------------------------------------------------------------- */ /** Incremental search of a file name in the panel. * @param panel instance of WPanel structure @@ -3306,7 +3378,7 @@ panel_do_cd_int (WPanel * panel, const vfs_path_t * new_dir_vpath, enum cd_enum panel_clean_dir (panel); if (!dir_list_load (&panel->dir, panel->cwd_vpath, panel->sort_field->sort_routine, - &panel->sort_info, panel->filter)) + &panel->sort_info, &panel->filter)) message (D_ERROR, MSG_ERROR, _("Cannot read directory contents")); try_to_select (panel, get_parent_dir_name (panel->cwd_vpath, olddir_vpath)); @@ -3385,8 +3457,8 @@ directory_history_list (WPanel * panel) pos = g_list_position (panel->dir_history.current, panel->dir_history.list); - history_descriptor_init (&hd, WIDGET (panel)->y, WIDGET (panel)->x, panel->dir_history.list, - (int) pos); + history_descriptor_init (&hd, WIDGET (panel)->rect.y, WIDGET (panel)->rect.x, + panel->dir_history.list, (int) pos); history_show (&hd); panel->dir_history.list = hd.list; @@ -3494,6 +3566,9 @@ panel_execute_cmd (WPanel * panel, long command) case CK_Unselect: panel_unselect_files (panel); break; + case CK_Filter: + panel_do_set_filter (panel); + break; case CK_PageDown: next_page (panel); break; @@ -3763,19 +3838,30 @@ mouse_set_mark (WPanel * panel) /* --------------------------------------------------------------------------------------------- */ -static gboolean -mark_if_marking (WPanel * panel, const mouse_event_t * event) +static void +mark_if_marking (WPanel * panel, const mouse_event_t * event, int previous_selected) { - if ((event->buttons & GPM_B_RIGHT) != 0) + if ((event->buttons & GPM_B_RIGHT) == 0) + return; + + if (event->msg == MSG_MOUSE_DOWN) + mouse_toggle_mark (panel); + else { - if (event->msg == MSG_MOUSE_DOWN) - mouse_toggle_mark (panel); - else + int psel, sel1, sel2; + + psel = panel->selected; + sel1 = MIN (previous_selected, panel->selected); + sel2 = MAX (previous_selected, panel->selected); + + for (; sel1 <= sel2; sel1++) + { + panel->selected = sel1; mouse_set_mark (panel); - return TRUE; - } + } - return FALSE; + panel->selected = psel; + } } /* --------------------------------------------------------------------------------------------- */ @@ -3838,27 +3924,27 @@ mouse_sort_col (WPanel * panel, int x) static int panel_mouse_is_on_item (const WPanel * panel, int y, int x) { - int last; + int lines, col_width, col; if (y < 0) - return (-1); + return MOUSE_UPPER_FILE_LIST; - last = panel->dir.len - 1; - y += panel->top_file; + lines = panel_lines (panel); + if (y >= lines) + return MOUSE_BELOW_FILE_LIST; - if (y > last) - return (-1); + col_width = (CONST_WIDGET (panel)->rect.cols - 2) / panel->list_cols; + /* column where mouse is */ + col = x / col_width; - if (panel->list_cols > 1) - { - int width, lines; + y += panel->top_file + lines * col; - width = (CONST_WIDGET (panel)->cols - 2) / panel->list_cols; - lines = panel_lines (panel); - y += lines * (x / width); - } + /* are we below or in the next column of last file? */ + if (y > panel->dir.len) + return MOUSE_AFTER_LAST_FILE; - return (y > last ? -1 : y); + /* we are on item of the file file; return an index to select a file */ + return y; } /* --------------------------------------------------------------------------------------------- */ @@ -3880,13 +3966,13 @@ panel_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) if (event->x == 1) /* "<" button */ directory_history_prev (panel); - else if (event->x == w->cols - 2) + else if (event->x == w->rect.cols - 2) /* ">" button */ directory_history_next (panel); - else if (event->x >= w->cols - 5 && event->x <= w->cols - 3) + else if (event->x >= w->rect.cols - 5 && event->x <= w->rect.cols - 3) /* "^" button */ directory_history_list (panel); - else if (event->x == w->cols - 6) + else if (event->x == w->rect.cols - 6) /* "." button show/hide hidden files */ send_message (filemanager, NULL, MSG_ACTION, CK_ShowHidden, NULL); else @@ -3913,10 +3999,27 @@ panel_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) case MSG_MOUSE_DRAG: { int my_index; + int previous_selected; my_index = panel_mouse_is_on_item (panel, event->y - 2, event->x); - if (my_index >= 0) + previous_selected = panel->selected; + + switch (my_index) { + case MOUSE_UPPER_FILE_LIST: + move_up (panel); + mark_if_marking (panel, event, previous_selected); + break; + + case MOUSE_BELOW_FILE_LIST: + move_down (panel); + mark_if_marking (panel, event, previous_selected); + break; + + case MOUSE_AFTER_LAST_FILE: + break; /* do nothing */ + + default: if (my_index != panel->selected) { unselect_item (panel); @@ -3924,8 +4027,8 @@ panel_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) select_item (panel); } - /* This one is new */ - mark_if_marking (panel, event); + mark_if_marking (panel, event, previous_selected); + break; } } break; @@ -4070,7 +4173,7 @@ do_select (WPanel * panel, int i) { panel->dirty = TRUE; panel->selected = i; - panel->top_file = panel->selected - (WIDGET (panel)->lines - 2) / 2; + panel->top_file = panel->selected - (WIDGET (panel)->rect.lines - 2) / 2; if (panel->top_file < 0) panel->top_file = 0; } @@ -4322,6 +4425,7 @@ panel_set_lwd (WPanel * panel, const vfs_path_t * vpath) WPanel * panel_sized_empty_new (const char *panel_name, int y, int x, int lines, int cols) { + WRect r = { y, x, lines, cols }; WPanel *panel; Widget *w; char *section; @@ -4329,7 +4433,7 @@ panel_sized_empty_new (const char *panel_name, int y, int x, int lines, int cols panel = g_new0 (WPanel, 1); w = WIDGET (panel); - widget_init (w, y, x, lines, cols, panel_callback, panel_mouse_callback); + widget_init (w, &r, panel_callback, panel_mouse_callback); w->options |= WOP_SELECTABLE | WOP_TOP_SELECT; w->keymap = panel_map; @@ -4347,6 +4451,8 @@ panel_sized_empty_new (const char *panel_name, int y, int x, int lines, int cols panel->list_format = list_full; panel->user_format = g_strdup (DEFAULT_USER_FORMAT); + panel->filter.flags = FILE_FILTER_DEFAULT_FLAGS; + for (i = 0; i < LIST_FORMATS; i++) panel->user_status_format[i] = g_strdup (DEFAULT_USER_FORMAT); @@ -4372,6 +4478,21 @@ panel_sized_empty_new (const char *panel_name, int y, int x, int lines, int cols panel_load_setup (panel, section); g_free (section); + if (panel->filter.value != NULL) + { + gboolean case_sens = (panel->filter.flags & SELECT_MATCH_CASE) != 0; + gboolean shell_patterns = (panel->filter.flags & SELECT_SHELL_PATTERNS) != 0; + + panel->filter.handler = mc_search_new (panel->filter.value, NULL); + panel->filter.handler->search_type = shell_patterns ? MC_SEARCH_T_GLOB : MC_SEARCH_T_REGEX; + panel->filter.handler->is_entire_line = TRUE; + panel->filter.handler->is_case_sensitive = case_sens; + + /* FIXME: silent check -- do not display an error message */ + if (!mc_search_prepare (panel->filter.handler)) + file_filter_clear (&panel->filter); + } + /* Load format strings */ err = set_panel_formats (panel); if (err != 0) @@ -4437,17 +4558,19 @@ panel_sized_with_dir_new (const char *panel_name, int y, int x, int lines, int c /* Load the default format */ if (!dir_list_load (&panel->dir, panel->cwd_vpath, panel->sort_field->sort_routine, - &panel->sort_info, panel->filter)) + &panel->sort_info, &panel->filter)) message (D_ERROR, MSG_ERROR, _("Cannot read directory contents")); /* Restore old right path */ if (curdir != NULL) { vfs_path_t *tmp_vpath; + int err = 0; tmp_vpath = vfs_path_from_str (curdir); mc_chdir (tmp_vpath); vfs_path_free (tmp_vpath, TRUE); + (void) err; } g_free (curdir); @@ -4483,7 +4606,7 @@ panel_reload (WPanel * panel) show_dir (panel); if (!dir_list_reload (&panel->dir, panel->cwd_vpath, panel->sort_field->sort_routine, - &panel->sort_info, panel->filter)) + &panel->sort_info, &panel->filter)) message (D_ERROR, MSG_ERROR, _("Cannot read directory contents")); panel->dirty = TRUE; @@ -4555,6 +4678,22 @@ set_panel_formats (WPanel * p) /* --------------------------------------------------------------------------------------------- */ +void +panel_set_filter (WPanel * panel, const file_filter_t * filter) +{ + MC_PTR_FREE (panel->filter.value); + mc_search_free (panel->filter.handler); + panel->filter.handler = NULL; + + /* NULL to clear filter */ + if (filter != NULL) + panel->filter = *filter; + + reread_cmd (); +} + +/* --------------------------------------------------------------------------------------------- */ + /* Select current item and readjust the panel */ void select_item (WPanel * panel) diff --git a/mcsrc/src/filemanager/panel.h b/mcsrc/src/filemanager/panel.h index 03995048..f7cbfa4b 100644 --- a/mcsrc/src/filemanager/panel.h +++ b/mcsrc/src/filemanager/panel.h @@ -49,16 +49,7 @@ typedef enum UP_ONLY_CURRENT = 2 } panel_update_flags_t; -/* selection flags */ -typedef enum -{ - SELECT_FILES_ONLY = 1 << 0, - SELECT_MATCH_CASE = 1 << 1, - SELECT_SHELL_PATTERNS = 1 << 2 -} panel_select_flags_t; - /* run mode and params */ - enum cd_enum { cd_parse_command, @@ -129,7 +120,7 @@ typedef struct gboolean user_mini_status; /* Is user_status_format used */ char *user_status_format[LIST_FORMATS]; /* User format for status line */ - char *filter; /* File name filter */ + file_filter_t filter; /* File name filter */ struct { @@ -179,6 +170,8 @@ vfs_path_t *remove_encoding_from_path (const vfs_path_t * vpath); void update_panels (panel_update_flags_t flags, const char *current_file); int set_panel_formats (WPanel * p); +void panel_set_filter (WPanel * panel, const file_filter_t * filter); + void try_to_select (WPanel * panel, const char *name); void unmark_files (WPanel * panel); diff --git a/mcsrc/src/filemanager/panelize.c b/mcsrc/src/filemanager/panelize.c index b072d651..ab0dbb64 100644 --- a/mcsrc/src/filemanager/panelize.c +++ b/mcsrc/src/filemanager/panelize.c @@ -7,6 +7,7 @@ Written by: Janne Kukonlehto, 1995 Jakub Jelinek, 1995 + Andrew Borodin 2011-2022 This file is part of the Midnight Commander. @@ -186,7 +187,7 @@ init_panelize (void) listbox_select_entry (l_panelize, listbox_search_text (l_panelize, _("Other command"))); group_add_widget (g, l_panelize); - y += WIDGET (l_panelize)->lines + 1; + y += WIDGET (l_panelize)->rect.lines + 1; group_add_widget (g, label_new (y++, UX, _("Command"))); pname = input_new (y++, UX, input_colors, panelize_cols - UX * 2, "", "in", @@ -270,7 +271,7 @@ add2panelize_cmd (void) if (label == NULL || *label == '\0') g_free (label); else - add2panelize (label, g_strdup (pname->buffer)); + add2panelize (label, input_get_text (pname)); } } @@ -333,6 +334,7 @@ do_external_panelize (char *command) /* init buffers before call of mc_pread() */ external->out.len = MC_PIPE_BUFSIZE; external->err.len = MC_PIPE_BUFSIZE; + external->err.null_term = TRUE; mc_pread (external, &error); @@ -622,7 +624,7 @@ external_panelize (void) { char *cmd; - cmd = g_strdup (pname->buffer); + cmd = input_get_text (pname); widget_destroy (WIDGET (panelize_dlg)); do_external_panelize (cmd); g_free (cmd); diff --git a/mcsrc/src/filemanager/tree.c b/mcsrc/src/filemanager/tree.c index 1939d6b6..89557749 100644 --- a/mcsrc/src/filemanager/tree.c +++ b/mcsrc/src/filemanager/tree.c @@ -14,7 +14,7 @@ Norbert Warmuth, 1997 Miguel de Icaza, 1996, 1999 Slava Zanko , 2013 - Andrew Borodin , 2013, 2014, 2016 + Andrew Borodin , 2013-2022 This file is part of the Midnight Commander. @@ -82,8 +82,8 @@ gboolean xtree_mode = FALSE; /*** file scope macro definitions ****************************************************************/ -#define tlines(t) (t->is_panel ? WIDGET (t)->lines - 2 - \ - (panels_options.show_mini_info ? 2 : 0) : WIDGET (t)->lines) +#define tlines(t) (t->is_panel ? WIDGET (t)->rect.lines - 2 - \ + (panels_options.show_mini_info ? 2 : 0) : WIDGET (t)->rect.lines) /*** file scope type declarations ****************************************************************/ @@ -237,7 +237,7 @@ tree_show_mini_info (WTree * tree, int tree_lines, int tree_cols) { /* Show search string */ tty_setcolor (INPUT_COLOR); - tty_draw_hline (w->y + line, w->x + 1, ' ', tree_cols); + tty_draw_hline (w->rect.y + line, w->rect.x + 1, ' ', tree_cols); widget_gotoyx (w, line, 1); tty_print_char (PATH_SEP); tty_print_string (str_fit_to_term (tree->search_buffer->str, tree_cols - 2, J_LEFT_FIT)); @@ -251,7 +251,7 @@ tree_show_mini_info (WTree * tree, int tree_lines, int tree_cols) colors = widget_get_colors (w); tty_setcolor (tree->is_panel ? NORMAL_COLOR : colors[DLG_COLOR_NORMAL]); - tty_draw_hline (w->y + line, w->x + 1, ' ', tree_cols); + tty_draw_hline (w->rect.y + line, w->rect.x + 1, ' ', tree_cols); widget_gotoyx (w, line, 1); tty_print_string (str_fit_to_term (vfs_path_as_str (tree->selected_ptr->name), tree_cols, J_LEFT_FIT)); @@ -272,7 +272,7 @@ show_tree (WTree * tree) /* Initialize */ tree_lines = tlines (tree); - tree_cols = w->cols; + tree_cols = w->rect.cols; widget_gotoyx (w, y, x); if (tree->is_panel) @@ -339,7 +339,7 @@ show_tree (WTree * tree) tty_setcolor (tree->is_panel ? NORMAL_COLOR : colors[DLG_COLOR_NORMAL]); /* Move to the beginning of the line */ - tty_draw_hline (w->y + y + i, w->x + x, ' ', tree_cols); + tty_draw_hline (w->rect.y + y + i, w->rect.x + x, ' ', tree_cols); if (current == NULL) continue; @@ -1127,21 +1127,21 @@ tree_frame (WDialog * h, WTree * tree) const char *title = _("Directory tree"); const int len = str_term_width1 (title); - tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE); + tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE); - widget_gotoyx (w, 0, (w->cols - len - 2) / 2); + widget_gotoyx (w, 0, (w->rect.cols - len - 2) / 2); tty_printf (" %s ", title); if (panels_options.show_mini_info) { int y; - y = w->lines - 3; + y = w->rect.lines - 3; widget_gotoyx (w, y, 0); tty_print_alt_char (ACS_LTEE, FALSE); - widget_gotoyx (w, y, w->cols - 1); + widget_gotoyx (w, y, w->rect.cols - 1); tty_print_alt_char (ACS_RTEE, FALSE); - tty_draw_hline (w->y + y, w->x + 1, ACS_HLINE, w->cols - 2); + tty_draw_hline (w->rect.y + y, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2); } } } @@ -1225,7 +1225,7 @@ tree_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) { case MSG_MOUSE_DOWN: /* rest of the upper frame - call menu */ - if (tree->is_panel && event->y == WIDGET (w->owner)->y) + if (tree->is_panel && event->y == WIDGET (w->owner)->rect.y) { /* return MOU_UNHANDLED */ event->result.abort = TRUE; @@ -1280,13 +1280,14 @@ tree_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) WTree * tree_new (int y, int x, int lines, int cols, gboolean is_panel) { + WRect r = { y, x, lines, cols }; WTree *tree; Widget *w; tree = g_new (WTree, 1); w = WIDGET (tree); - widget_init (w, y, x, lines, cols, tree_callback, tree_mouse_callback); + widget_init (w, &r, tree_callback, tree_mouse_callback); w->options |= WOP_SELECTABLE | WOP_TOP_SELECT; w->keymap = tree_map; @@ -1297,7 +1298,7 @@ tree_new (int y, int x, int lines, int cols, gboolean is_panel) tree_store_add_entry_remove_hook (remove_callback, tree); tree->tree_shown = NULL; tree->search_buffer = g_string_sized_new (MC_MAXPATHLEN); - tree->topdiff = w->lines / 2; + tree->topdiff = w->rect.lines / 2; tree->searching = FALSE; load_tree (tree); diff --git a/mcsrc/src/help.c b/mcsrc/src/help.c index f9db5407..45edef46 100644 --- a/mcsrc/src/help.c +++ b/mcsrc/src/help.c @@ -564,8 +564,8 @@ help_show (WDialog * h, const char *paint_start) #ifndef HAVE_SLANG tty_print_char (acs_map[c]); #else - SLsmg_draw_object (WIDGET (h)->y + line + 2, WIDGET (h)->x + col + 2, - c); + SLsmg_draw_object (WIDGET (h)->rect.y + line + 2, + WIDGET (h)->rect.x + col + 2, c); #endif col++; } @@ -882,10 +882,11 @@ help_resize (WDialog * h) { Widget *w = WIDGET (h); WButtonBar *bb; - WRect r; + WRect r = w->rect; help_lines = MIN (LINES - 4, MAX (2 * LINES / 3, 18)); - rect_init (&r, w->y, w->x, help_lines + 4, HELP_WINDOW_WIDTH + 4); + r.lines = help_lines + 4; + r.cols = HELP_WINDOW_WIDTH + 4; dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r); bb = find_buttonbar (h); widget_set_size (WIDGET (bb), LINES - 1, 0, 1, COLS); @@ -967,7 +968,7 @@ md_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data { case MSG_RESIZE: widget_default_callback (w, NULL, MSG_RESIZE, 0, data); - w->lines = help_lines; + w->rect.lines = help_lines; return MSG_HANDLED; default: @@ -1046,12 +1047,12 @@ help_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) /* --------------------------------------------------------------------------------------------- */ static Widget * -mousedispatch_new (int y, int x, int yl, int xl) +mousedispatch_new (const WRect * r) { Widget *w; w = g_new0 (Widget, 1); - widget_init (w, y, x, yl, xl, md_callback, help_mouse_callback); + widget_init (w, r, md_callback, help_mouse_callback); w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR; return w; @@ -1081,6 +1082,7 @@ help_interactive_display (const gchar * event_group_name, const gchar * event_na char *hlpfile = NULL; char *filedata; ev_help_t *event_data = (ev_help_t *) data; + WRect r = { 1, 1, 1, 1 }; (void) event_group_name; (void) event_name; @@ -1148,10 +1150,12 @@ help_interactive_display (const gchar * event_group_name, const gchar * event_na } help_bar = buttonbar_new (); - WIDGET (help_bar)->y -= wh->y; - WIDGET (help_bar)->x -= wh->x; + WIDGET (help_bar)->rect.y -= wh->rect.y; + WIDGET (help_bar)->rect.x -= wh->rect.x; - md = mousedispatch_new (1, 1, help_lines, HELP_WINDOW_WIDTH - 2); + r.lines = help_lines; + r.cols = HELP_WINDOW_WIDTH - 2; + md = mousedispatch_new (&r); group_add_widget (g, md); group_add_widget (g, help_bar); /* FIXME */ diff --git a/mcsrc/src/history.h b/mcsrc/src/history.h index 7a8d73fa..52109b0c 100644 --- a/mcsrc/src/history.h +++ b/mcsrc/src/history.h @@ -26,6 +26,8 @@ #define MC_HISTORY_FM_TREE_MOVE "mc.fm.tree-move" #define MC_HISTORY_FM_PANELIZE_ADD "mc.fm.panelize.add" #define MC_HISTORY_FM_FILTERED_VIEW "mc.fm.filtered-view" +#define MC_HISTORY_FM_PANEL_SELECT ":select_cmd: Select " +#define MC_HISTORY_FM_PANEL_UNSELECT ":select_cmd: Unselect " #define MC_HISTORY_FM_PANEL_FILTER "mc.fm.panel-filter" #define MC_HISTORY_FM_MENU_EXEC_PARAM "mc.fm.menu.exec.parameter" diff --git a/mcsrc/src/man2hlp/man2hlp.in b/mcsrc/src/man2hlp/man2hlp.in index 4e1bc2bc..08765d88 100644 --- a/mcsrc/src/man2hlp/man2hlp.in +++ b/mcsrc/src/man2hlp/man2hlp.in @@ -1,4 +1,4 @@ -#! @PERL@ -w +#! @PERL_FOR_BUILD@ -w # # Man page to help file converter # Copyright (C) 1994, 1995, 1998, 2000, 2001, 2002, 2003, 2004, 2005, diff --git a/mcsrc/src/setup.c b/mcsrc/src/setup.c index f30af650..24fd17cb 100644 --- a/mcsrc/src/setup.c +++ b/mcsrc/src/setup.c @@ -1189,6 +1189,12 @@ panel_load_setup (WPanel * panel, const char *section) panel->user_mini_status = mc_config_get_bool (mc_global.panels_config, section, "user_mini_status", FALSE); + + panel->filter.value = + mc_config_get_string (mc_global.panels_config, section, "filter_value", NULL); + panel->filter.flags = + mc_config_get_int (mc_global.panels_config, section, "filter_flags", + (int) FILE_FILTER_DEFAULT_FLAGS); } /* --------------------------------------------------------------------------------------------- */ @@ -1228,6 +1234,14 @@ panel_save_setup (WPanel * panel, const char *section) mc_config_set_bool (mc_global.panels_config, section, "user_mini_status", panel->user_mini_status); + + /* do not save the default filter */ + if (panel->filter.handler != NULL) + mc_config_set_string (mc_global.panels_config, section, "filter_value", + panel->filter.value); + else + mc_config_del_key (mc_global.panels_config, section, "filter_value"); + mc_config_set_int (mc_global.panels_config, section, "filter_flags", (int) panel->filter.flags); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/src/setup.h b/mcsrc/src/setup.h index 6976e38d..f32b5b6d 100644 --- a/mcsrc/src/setup.h +++ b/mcsrc/src/setup.h @@ -54,7 +54,7 @@ typedef struct gboolean permission_mode; /* If TRUE, we use permission hilighting */ qsearch_mode_t qsearch_mode; /* Quick search mode */ gboolean torben_fj_mode; /* If TRUE, use some usability hacks by Torben */ - panel_select_flags_t select_flags; /* Select/unselect file flags */ + select_flags_t select_flags; /* Select/unselect file flags */ } panels_options_t; typedef struct macro_action_t @@ -96,7 +96,9 @@ extern gboolean only_leading_plus_minus; extern int cd_symlinks; extern gboolean auto_fill_mkdir_name; extern gboolean output_starts_shell; +#ifdef USE_FILE_CMD extern gboolean use_file_to_check_type; +#endif extern gboolean file_op_compute_totals; extern gboolean editor_ask_filename_before_edit; diff --git a/mcsrc/src/subshell/common.c b/mcsrc/src/subshell/common.c index abea936a..61bf5278 100644 --- a/mcsrc/src/subshell/common.c +++ b/mcsrc/src/subshell/common.c @@ -149,7 +149,7 @@ gboolean should_read_new_subshell_prompt; #define FORK_FAILURE 69 /* Arbitrary */ /* Length of the buffer for all I/O with the subshell */ -#define PTY_BUFFER_SIZE BUF_SMALL /* Arbitrary; but keep it >= 80 */ +#define PTY_BUFFER_SIZE BUF_MEDIUM /* Arbitrary; but keep it >= 80 */ /*** file scope type declarations ****************************************************************/ @@ -728,7 +728,7 @@ set_prompt_string (void) return; if (subshell_prompt_temp_buffer->len != 0) - g_string_assign (subshell_prompt, subshell_prompt_temp_buffer->str); + mc_g_string_copy (subshell_prompt, subshell_prompt_temp_buffer); setup_cmdline (); } @@ -748,8 +748,9 @@ feed_subshell (int how, gboolean fail_on_error) should_read_new_subshell_prompt = FALSE; - /* we wait up to 1 second if fail_on_error, forever otherwise */ - wtime.tv_sec = 1; + /* have more than enough time to run subshell: + wait up to 10 second if fail_on_error, forever otherwise */ + wtime.tv_sec = 10; wtime.tv_usec = 0; wptr = fail_on_error ? &wtime : NULL; @@ -1261,6 +1262,37 @@ subshell_name_quote (const char *s) return ret; } +/* --------------------------------------------------------------------------------------------- */ +/** + * This function checks the pipe from which we receive data about the current working directory. + * If there is any data waiting, we clear it. + */ + +static void +clear_cwd_pipe (void) +{ + fd_set read_set; + struct timeval wtime = { 0, 0 }; + int maxfdp; + + FD_ZERO (&read_set); + FD_SET (subshell_pipe[READ], &read_set); + maxfdp = subshell_pipe[READ]; + + if (select (maxfdp + 1, &read_set, NULL, NULL, &wtime) > 0 + && FD_ISSET (subshell_pipe[READ], &read_set)) + { + if (read (subshell_pipe[READ], subshell_cwd, sizeof (subshell_cwd)) <= 0) + { + tcsetattr (STDOUT_FILENO, TCSANOW, &shell_mode); + fprintf (stderr, "read (subshell_pipe[READ]...): %s\r\n", unix_error_string (errno)); + exit (EXIT_FAILURE); + } + + synchronize (); + } +} + /* --------------------------------------------------------------------------------------------- */ /*** public functions ****************************************************************************/ /* --------------------------------------------------------------------------------------------- */ @@ -1431,21 +1463,23 @@ invoke_subshell (const char *command, int how, vfs_path_t ** new_dir_vpath) if (use_persistent_buffer) { + const char *s; size_t i; int pos; + s = input_get_ctext (cmdline); + /* Check to make sure there are no non text characters in the command buffer, * such as tab, or newline, as this could cause problems. */ - for (i = 0; cmdline->buffer[i] != '\0'; i++) - if ((unsigned char) cmdline->buffer[i] < 32 - || (unsigned char) cmdline->buffer[i] == 127) - cmdline->buffer[i] = ' '; + for (i = 0; i < cmdline->buffer->len; i++) + if ((unsigned char) s[i] < 32 || (unsigned char) s[i] == 127) + g_string_overwrite_len (cmdline->buffer, i, " ", 1); /* Write the command buffer to the subshell. */ - write_all (mc_global.tty.subshell_pty, cmdline->buffer, strlen (cmdline->buffer)); + write_all (mc_global.tty.subshell_pty, s, cmdline->buffer->len); /* Put the cursor in the correct place in the subshell. */ - pos = str_length (cmdline->buffer) - cmdline->point; + pos = str_length (s) - cmdline->point; for (i = 0; i < (size_t) pos; i++) write_all (mc_global.tty.subshell_pty, ESC_STR "[D", 3); } @@ -1457,7 +1491,9 @@ invoke_subshell (const char *command, int how, vfs_path_t ** new_dir_vpath) /* data is there, but only if we are using one of the shells that */ /* doesn't support keeping command buffer contents, OR if there was */ /* some sort of error. */ - if (!use_persistent_buffer) + if (use_persistent_buffer) + clear_cwd_pipe (); + else { /* We don't need to call feed_subshell here if we are using fish, because of a * quirk in the behavior of that particular shell. */ diff --git a/mcsrc/src/vfs/extfs/extfs.c b/mcsrc/src/vfs/extfs/extfs.c index f5b2534c..9d5a1aa8 100644 --- a/mcsrc/src/vfs/extfs/extfs.c +++ b/mcsrc/src/vfs/extfs/extfs.c @@ -254,7 +254,7 @@ extfs_find_entry_int (struct vfs_s_inode *dir, const char *name, GSList * list, *q = '\0'; if (DIR_IS_DOTDOT (p)) - pent = pent->dir->ent; + pent = pent->dir != NULL ? pent->dir->ent : NULL; else { GList *pl; @@ -515,16 +515,12 @@ extfs_open_archive (int fstype, const char *name, struct extfs_super_t **pparc, static dev_t archive_counter = 0; mc_pipe_t *result = NULL; mode_t mode; -#if defined(WIN32) // WIN32, cmd-quoting - char *quoted_cmd; -#endif char *cmd = NULL; struct stat mystat; struct extfs_super_t *current_archive; struct vfs_s_entry *root_entry; char *tmp = NULL; vfs_path_t *local_name_vpath = NULL; - const char *local_last_path = NULL; vfs_path_t *name_vpath; memset (&mystat, 0, sizeof (mystat)); @@ -544,29 +540,29 @@ extfs_open_archive (int fstype, const char *name, struct extfs_super_t **pparc, goto ret; } - local_last_path = vfs_path_get_last_path_str (local_name_vpath); - if (local_last_path == NULL) - tmp = name_quote (vfs_path_get_last_path_str (name_vpath), FALSE); + tmp = name_quote (vfs_path_get_last_path_str (name_vpath), FALSE); } #if defined(WIN32) // WIN32, cmd-quoting - quoted_cmd = name_quote (g_strconcat (info->path, info->prefix, NULL), FALSE); - if (local_last_path != NULL) - cmd = g_strconcat (quoted_cmd, " list ", local_last_path, (char *) NULL); - else if (tmp != NULL) { - cmd = g_strconcat (quoted_cmd, " list ", tmp, (char *) NULL); - g_free (tmp); + const char *last_path_str = vfs_path_get_last_path_str (local_name_vpath); + char *quoted_cmd; + + quoted_cmd = name_quote (g_strconcat (info->path, info->prefix, NULL), FALSE); + if (last_path_str) + cmd = g_strconcat (quoted_cmd, " list ", last_path_str, (char *) NULL); + else if (tmp != NULL) + { + cmd = g_strconcat (quoted_cmd, " list ", tmp, (char *) NULL); + g_free (tmp); + } + g_free (quoted_cmd); } - g_free (quoted_cmd); #else - if (local_last_path != NULL) - cmd = g_strconcat (info->path, info->prefix, " list ", local_last_path, (char *) NULL); - else if (tmp != NULL) - { - cmd = g_strconcat (info->path, info->prefix, " list ", tmp, (char *) NULL); - g_free (tmp); - } + cmd = g_strconcat (info->path, info->prefix, " list ", + vfs_path_get_last_path_str (local_name_vpath) != NULL ? + vfs_path_get_last_path_str (local_name_vpath) : tmp, (char *) NULL); + g_free (tmp); #endif if (cmd != NULL) @@ -711,6 +707,8 @@ extfs_read_archive (mc_pipe_t * pip, struct extfs_super_t *archive, GError ** er g_string_free (err_msg, TRUE); } + else if (ret == -1) + mc_propagate_error (error, 0, "%s", _("Inconsistent archive")); return ret; } @@ -986,6 +984,8 @@ extfs_cmd (const char *str_extfs_cmd, const struct extfs_super_t *archive, return (-1); } + pip->err.null_term = TRUE; + mc_pread (pip, &error); if (error != NULL) { diff --git a/mcsrc/src/vfs/extfs/helpers/iso9660.in b/mcsrc/src/vfs/extfs/helpers/iso9660.in index f9c6e50e..5f228874 100644 --- a/mcsrc/src/vfs/extfs/helpers/iso9660.in +++ b/mcsrc/src/vfs/extfs/helpers/iso9660.in @@ -93,7 +93,11 @@ xorriso_rm() { # tested to comply with isoinfo 2.0's output test_iso () { - which isoinfo 2>/dev/null || (echo "isoinfo not found" >&2; return 1) + ISOINFO=$(which isoinfo 2>/dev/null) + if test -z "$ISOINFO"; then + echo "isoinfo not found" >&2 + return 1 + fi CHARSET=$(locale charmap 2>/dev/null) if test -z "$CHARSET"; then @@ -101,16 +105,16 @@ test_iso () { fi if test -n "$CHARSET"; then CHARSET=$(echo "$CHARSET" | tr '[A-Z]' '[a-z]' | sed -e 's/^iso-/iso/') - isoinfo -j $CHARSET -i /dev/null 2>&1 | @GREP@ "Iconv not yet supported\|Unknown charset" >/dev/null && CHARSET= + $ISOINFO -j $CHARSET -i /dev/null 2>&1 | @GREP@ "Iconv not yet supported\|Unknown charset" >/dev/null && CHARSET= fi if test -n "$CHARSET"; then JOLIET_OPT="-j $CHARSET -J" else JOLIET_OPT="-J" fi - ISOINFO="isoinfo -R" - ISOINFO_D_I="$(isoinfo -d -i "$1" 2>/dev/null)" + ISOINFO_D_I="$($ISOINFO -d -i "$1" 2>/dev/null)" + ISOINFO="$ISOINFO -R" echo "$ISOINFO_D_I" | @GREP@ "UCS level 1\|NO Joliet" > /dev/null || ISOINFO="$ISOINFO $JOLIET_OPT" diff --git a/mcsrc/src/vfs/fish/fish.c b/mcsrc/src/vfs/fish/fish.c index 1cf76174..ce47dee0 100644 --- a/mcsrc/src/vfs/fish/fish.c +++ b/mcsrc/src/vfs/fish/fish.c @@ -8,7 +8,7 @@ Written by: Pavel Machek, 1998 Michal Svec, 2000 - Andrew Borodin , 2010-2019 + Andrew Borodin , 2010-2022 Slava Zanko , 2010, 2013 Ilia Maslakov , 2010 @@ -395,13 +395,21 @@ fish_free_archive (struct vfs_class *me, struct vfs_s_super *super) fish_super_t *fish_super = FISH_SUPER (super); if ((fish_super->sockw != -1) || (fish_super->sockr != -1)) - { vfs_print_message (_("fish: Disconnecting from %s"), super->name ? super->name : "???"); + + if (fish_super->sockw != -1) + { fish_command (me, super, NONE, "#BYE\nexit\n", -1); close (fish_super->sockw); + fish_super->sockw = -1; + } + + if (fish_super->sockr != -1) + { close (fish_super->sockr); - fish_super->sockw = fish_super->sockr = -1; + fish_super->sockr = -1; } + g_free (fish_super->scr_ls); g_free (fish_super->scr_exists); g_free (fish_super->scr_mkdir); @@ -829,8 +837,176 @@ fish_archive_same (const vfs_path_element_t * vpath_element, struct vfs_s_super /* --------------------------------------------------------------------------------------------- */ +static void +fish_parse_ls (char *buffer, struct vfs_s_entry *ent) +{ +#define ST ent->ino->st + + buffer++; + + switch (buffer[-1]) + { + case ':': + { + char *filename; + char *filename_bound; + char *temp; + + filename = buffer; + + if (strcmp (filename, "\".\"") == 0 || strcmp (filename, "\"..\"") == 0) + break; /* We'll do "." and ".." ourselves */ + + filename_bound = filename + strlen (filename); + + if (S_ISLNK (ST.st_mode)) + { + char *linkname; + char *linkname_bound; + /* we expect: "escaped-name" -> "escaped-name" + // -> cannot occur in filenames, + // because it will be escaped to -\> */ + + + linkname_bound = filename_bound; + + if (*filename == '"') + ++filename; + + linkname = strstr (filename, "\" -> \""); + if (linkname == NULL) + { + /* broken client, or smth goes wrong */ + linkname = filename_bound; + if (filename_bound > filename && *(filename_bound - 1) == '"') + --filename_bound; /* skip trailing " */ + } + else + { + filename_bound = linkname; + linkname += 6; /* strlen ("\" -> \"") */ + if (*(linkname_bound - 1) == '"') + --linkname_bound; /* skip trailing " */ + } + + ent->name = g_strndup (filename, filename_bound - filename); + temp = ent->name; + ent->name = strutils_shell_unescape (ent->name); + g_free (temp); + + ent->ino->linkname = g_strndup (linkname, linkname_bound - linkname); + temp = ent->ino->linkname; + ent->ino->linkname = strutils_shell_unescape (ent->ino->linkname); + g_free (temp); + } + else + { + /* we expect: "escaped-name" */ + if (filename_bound - filename > 2) + { + /* + there is at least 2 " + and we skip them + */ + if (*filename == '"') + ++filename; + if (*(filename_bound - 1) == '"') + --filename_bound; + } + + ent->name = g_strndup (filename, filename_bound - filename); + temp = ent->name; + ent->name = strutils_shell_unescape (ent->name); + g_free (temp); + } + break; + } + + case 'S': + ST.st_size = (off_t) g_ascii_strtoll (buffer, NULL, 10); + break; + + case 'P': + { + size_t skipped; +#if defined(WIN32) //WIN32, fish + mode_t st_mode = 0; + vfs_parse_filemode (buffer, &skipped, &st_mode); + ST.st_mode = st_mode; +#else + vfs_parse_filemode (buffer, &skipped, &ST.st_mode); +#endif // WIN32 + break; + } + + case 'R': + { + /* + raw filemode: + we expect: Roctal-filemode octal-filetype uid.gid + */ + size_t skipped; + +#if defined(WIN32) //WIN32, fish + mode_t st_mode = 0; + vfs_parse_raw_filemode (buffer, &skipped, &st_mode); + ST.st_mode = st_mode; +#else + vfs_parse_raw_filemode (buffer, &skipped, &ST.st_mode); +#endif // WIN32 + break; + } + + case 'd': + vfs_split_text (buffer); + if (vfs_parse_filedate (0, &ST.st_ctime) == 0) + break; + ST.st_atime = ST.st_mtime = ST.st_ctime; +#ifdef HAVE_STRUCT_STAT_ST_MTIM + ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0; +#endif + break; + + case 'D': + { + struct tm tim; + + memset (&tim, 0, sizeof (tim)); + /* cppcheck-suppress invalidscanf */ + if (sscanf (buffer, "%d %d %d %d %d %d", &tim.tm_year, &tim.tm_mon, + &tim.tm_mday, &tim.tm_hour, &tim.tm_min, &tim.tm_sec) != 6) + break; + ST.st_atime = ST.st_mtime = ST.st_ctime = mktime (&tim); +#ifdef HAVE_STRUCT_STAT_ST_MTIM + ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0; +#endif + } + break; + + case 'E': + { + int maj, min; + + /* cppcheck-suppress invalidscanf */ + if (sscanf (buffer, "%d,%d", &maj, &min) != 2) + break; +#ifdef HAVE_STRUCT_STAT_ST_RDEV + ST.st_rdev = makedev (maj, min); +#endif + } + break; + + default: + break; + } + +#undef ST +} + +/* --------------------------------------------------------------------------------------------- */ + static int -fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path) +fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path) { struct vfs_s_super *super = dir->super; char buffer[BUF_8K] = "\0"; @@ -877,164 +1053,13 @@ fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path) } if (strncmp (buffer, "### ", 4) == 0) break; - if (buffer[0] == '\0') - { - if (ent->name != NULL) - { - vfs_s_insert_entry (me, dir, ent); - ent = vfs_s_generate_entry (me, NULL, dir, 0); - } - continue; - } -#define ST ent->ino->st - - switch (buffer[0]) + if (buffer[0] != '\0') + fish_parse_ls (buffer, ent); + else if (ent->name != NULL) { - case ':': - { - char *temp; - char *data_start = buffer + 1; - char *filename = data_start; - char *filename_bound; - - filename_bound = filename + strlen (filename); - - if (strcmp (data_start, "\".\"") == 0 || strcmp (data_start, "\"..\"") == 0) - break; /* We'll do "." and ".." ourselves */ - - if (S_ISLNK (ST.st_mode)) - { - char *linkname; - char *linkname_bound; - /* we expect: "escaped-name" -> "escaped-name" - // -> cannot occur in filenames, - // because it will be escaped to -\> */ - - - linkname_bound = filename_bound; - - if (*filename == '"') - ++filename; - - linkname = strstr (filename, "\" -> \""); - if (linkname == NULL) - { - /* broken client, or smth goes wrong */ - linkname = filename_bound; - if (filename_bound > filename && *(filename_bound - 1) == '"') - --filename_bound; /* skip trailing " */ - } - else - { - filename_bound = linkname; - linkname += 6; /* strlen ("\" -> \"") */ - if (*(linkname_bound - 1) == '"') - --linkname_bound; /* skip trailing " */ - } - - ent->name = g_strndup (filename, filename_bound - filename); - temp = ent->name; - ent->name = strutils_shell_unescape (ent->name); - g_free (temp); - - ent->ino->linkname = g_strndup (linkname, linkname_bound - linkname); - temp = ent->ino->linkname; - ent->ino->linkname = strutils_shell_unescape (ent->ino->linkname); - g_free (temp); - } - else - { - /* we expect: "escaped-name" */ - if (filename_bound - filename > 2) - { - /* - there is at least 2 " - and we skip them - */ - if (*filename == '"') - ++filename; - if (*(filename_bound - 1) == '"') - --filename_bound; - } - ent->name = g_strndup (filename, filename_bound - filename); - temp = ent->name; - ent->name = strutils_shell_unescape (ent->name); - g_free (temp); - } - break; - } - case 'S': - ST.st_size = (off_t) g_ascii_strtoll (buffer + 1, NULL, 10); - break; - case 'P': - { - size_t skipped; -#if defined(WIN32) //WIN32, fish - mode_t t_mode = 0; - vfs_parse_filemode (buffer + 1, &skipped, &t_mode); - ST.st_mode = t_mode; -#else - vfs_parse_filemode (buffer + 1, &skipped, &ST.st_mode); -#endif - break; - } - case 'R': - { - /* - raw filemode: - we expect: Roctal-filemode octal-filetype uid.gid - */ - size_t skipped; -#if defined(WIN32) //WIN32, fish - mode_t t_mode = 0; - vfs_parse_raw_filemode (buffer + 1, &skipped, &t_mode); - ST.st_mode = t_mode; -#else - vfs_parse_raw_filemode (buffer + 1, &skipped, &ST.st_mode); -#endif - break; - } - case 'd': - { - vfs_split_text (buffer + 1); - if (vfs_parse_filedate (0, &ST.st_ctime) == 0) - break; - ST.st_atime = ST.st_mtime = ST.st_ctime; -#ifdef HAVE_STRUCT_STAT_ST_MTIM - ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0; -#endif - } - break; - case 'D': - { - struct tm tim; - - memset (&tim, 0, sizeof (tim)); - /* cppcheck-suppress invalidscanf */ - if (sscanf (buffer + 1, "%d %d %d %d %d %d", &tim.tm_year, &tim.tm_mon, - &tim.tm_mday, &tim.tm_hour, &tim.tm_min, &tim.tm_sec) != 6) - break; - ST.st_atime = ST.st_mtime = ST.st_ctime = mktime (&tim); -#ifdef HAVE_STRUCT_STAT_ST_MTIM - ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0; -#endif - } - break; - case 'E': - { - int maj, min; - - /* cppcheck-suppress invalidscanf */ - if (sscanf (buffer + 1, "%d,%d", &maj, &min) != 2) - break; -#ifdef HAVE_STRUCT_STAT_ST_RDEV - ST.st_rdev = makedev (maj, min); -#endif - } - break; - default: - break; + vfs_s_insert_entry (me, dir, ent); + ent = vfs_s_generate_entry (me, NULL, dir, 0); } } diff --git a/mcsrc/src/vfs/ftpfs/ftpfs.c b/mcsrc/src/vfs/ftpfs/ftpfs.c index bef7c127..17bf3892 100644 --- a/mcsrc/src/vfs/ftpfs/ftpfs.c +++ b/mcsrc/src/vfs/ftpfs/ftpfs.c @@ -12,7 +12,7 @@ Pavel Machek, 1998 Yury V. Zaytsev, 2010 Slava Zanko , 2010, 2013 - Andrew Borodin , 2010 + Andrew Borodin , 2010-2022 This file is part of the Midnight Commander. @@ -80,6 +80,9 @@ What to do with this? #include /* POSIX-required by sys/socket.h and netdb.h */ #include /* struct hostent */ #include /* AF_INET */ +#if defined(WIN32) +#include /* EAI_SYSTEM */ +#endif #include /* struct in_addr */ #ifdef HAVE_ARPA_INET_H #include @@ -233,7 +236,6 @@ typedef struct /*** file scope variables ************************************************************************/ -static int ftpfs_errno; static int code; static char reply_str[80]; @@ -860,7 +862,7 @@ ftpfs_open_socket (struct vfs_class *me, struct vfs_s_super *super) if (super->path_element->host == NULL || *super->path_element->host == '\0') { vfs_print_message ("%s", _("ftpfs: Invalid host name.")); - ftpfs_errno = EINVAL; + me->verrno = EINVAL; return (-1); } @@ -907,7 +909,7 @@ ftpfs_open_socket (struct vfs_class *me, struct vfs_s_super *super) tty_disable_interrupt_key (); vfs_print_message (_("ftpfs: %s"), gai_strerror (e)); g_free (host); - ftpfs_errno = EINVAL; + me->verrno = EINVAL; return (-1); } @@ -924,7 +926,7 @@ ftpfs_open_socket (struct vfs_class *me, struct vfs_s_super *super) vfs_print_message (_("ftpfs: %s"), unix_error_string (errno)); g_free (host); freeaddrinfo (res); - ftpfs_errno = errno; + me->verrno = errno; return (-1); } @@ -934,7 +936,7 @@ ftpfs_open_socket (struct vfs_class *me, struct vfs_s_super *super) if (connect (my_socket, curr_res->ai_addr, curr_res->ai_addrlen) >= 0) break; - ftpfs_errno = errno; + me->verrno = errno; close (my_socket); if (errno == EINTR && tty_got_interrupt ()) @@ -999,7 +1001,7 @@ ftpfs_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) sleep (1); if (tty_got_interrupt ()) { - /* ftpfs_errno = E; */ + /* me->verrno = E; */ tty_disable_interrupt_key (); return 0; } @@ -1100,7 +1102,7 @@ ftpfs_get_current_directory (struct vfs_class *me, struct vfs_s_super *super) } } - ftpfs_errno = EIO; + me->verrno = EIO; return NULL; } @@ -1238,12 +1240,34 @@ ftpfs_setup_active (struct vfs_class *me, struct vfs_s_super *super, if (addr == NULL) ERRNOR (ENOMEM, -1); - if (getnameinfo - ((struct sockaddr *) &data_addr, data_addrlen, addr, NI_MAXHOST, NULL, 0, - NI_NUMERICHOST) != 0) + res = + getnameinfo ((struct sockaddr *) &data_addr, data_addrlen, addr, NI_MAXHOST, NULL, 0, + NI_NUMERICHOST); + if (res != 0) { + const char *err_str; + g_free (addr); - ERRNOR (EIO, -1); + +#if defined(WIN32) && !defined(EAI_SYSTEM) + me->verrno = EIO; + err_str = gai_strerror (res); +#else + if (res == EAI_SYSTEM) + { + me->verrno = errno; + err_str = unix_error_string (me->verrno); + } + else + { + me->verrno = EIO; + err_str = gai_strerror (res); + } +#endif //WIN32 + + vfs_print_message (_("ftpfs: could not make address-to-name translation: %s"), err_str); + + return (-1); } /* If we are talking to an IPV4 server, try PORT, and, only if it fails, go for EPRT */ @@ -1284,18 +1308,57 @@ static int ftpfs_init_data_socket (struct vfs_class *me, struct vfs_s_super *super, struct sockaddr_storage *data_addr, socklen_t * data_addrlen) { + const unsigned int attempts = 10; + unsigned int i; ftp_super_t *ftp_super = FTP_SUPER (super); int result; - memset (data_addr, 0, sizeof (*data_addr)); - *data_addrlen = sizeof (*data_addr); + for (i = 0; i < attempts; i++) + { + memset (data_addr, 0, sizeof (*data_addr)); + *data_addrlen = sizeof (*data_addr); - if (ftp_super->use_passive_connection) - result = getpeername (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen); - else - result = getsockname (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen); + if (ftp_super->use_passive_connection) + { + result = getpeername (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen); + if (result == 0) + break; + + me->verrno = errno; - if (result == -1) + if (me->verrno == ENOTCONN) + { + vfs_print_message (_("ftpfs: try reconnect to server, attempt %u"), i); + if (ftpfs_reconnect (me, super)) + continue; /* get name of new socket */ + } + else + { + /* error -- stop loop */ + vfs_print_message (_("ftpfs: could not get socket name: %s"), + unix_error_string (me->verrno)); + } + } + else + { + result = getsockname (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen); + if (result == 0) + break; + + me->verrno = errno; + + vfs_print_message (_("ftpfs: try reconnect to server, attempt %u"), i); + if (ftpfs_reconnect (me, super)) + continue; /* get name of new socket */ + + /* error -- stop loop */ + vfs_print_message ("%s", _("ftpfs: could not reconnect to server")); + } + + i = attempts; + } + + if (i >= attempts) return (-1); switch (data_addr->ss_family) @@ -1312,11 +1375,11 @@ ftpfs_init_data_socket (struct vfs_class *me, struct vfs_s_super *super, } result = socket (data_addr->ss_family, SOCK_STREAM, IPPROTO_TCP); - if (result < 0) { - vfs_print_message (_("ftpfs: could not create socket: %s"), unix_error_string (errno)); - return (-1); + me->verrno = errno; + vfs_print_message (_("ftpfs: could not create socket: %s"), unix_error_string (me->verrno)); + result = -1; } return result; @@ -1365,10 +1428,15 @@ ftpfs_initconn (struct vfs_class *me, struct vfs_s_super *super) if (data_sock < 0) return (-1); - if ((bind (data_sock, (struct sockaddr *) &data_addr, data_addrlen) == 0) && - (getsockname (data_sock, (struct sockaddr *) &data_addr, &data_addrlen) == 0) && - (listen (data_sock, 1) == 0) && - (ftpfs_setup_active (me, super, data_addr, data_addrlen) != 0)) + if ((bind (data_sock, (struct sockaddr *) &data_addr, data_addrlen) != 0) || + (getsockname (data_sock, (struct sockaddr *) &data_addr, &data_addrlen) != 0) || + (listen (data_sock, 1) != 0)) + { + close (data_sock); + ERRNOR (errno, -1); + } + + if (ftpfs_setup_active (me, super, data_addr, data_addrlen) != 0) return data_sock; close (data_sock); @@ -1379,7 +1447,7 @@ ftpfs_initconn (struct vfs_class *me, struct vfs_s_super *super) ftp_super->proxy != NULL ? ftpfs_use_passive_connections_over_proxy : ftpfs_use_passive_connections; - ftpfs_errno = EIO; + me->verrno = EIO; return (-1); } @@ -1412,7 +1480,7 @@ ftpfs_open_data_connection (struct vfs_class *me, struct vfs_s_super *super, con if (j != CONTINUE) { close (s); - return (-1); + ERRNOR (EIO, -1); } } @@ -1445,7 +1513,7 @@ ftpfs_open_data_connection (struct vfs_class *me, struct vfs_s_super *super, con tty_enable_interrupt_key (); data = accept (s, (struct sockaddr *) &from, &fromlen); if (data < 0) - ftpfs_errno = errno; + me->verrno = errno; tty_disable_interrupt_key (); close (s); if (data < 0) @@ -1472,7 +1540,7 @@ ftpfs_linear_abort (struct vfs_class *me, vfs_file_handler_t * fh) vfs_print_message ("%s", _("ftpfs: aborting transfer.")); - if (send (ftp_super->sock, (void *)ipbuf, sizeof (ipbuf), MSG_OOB) != sizeof (ipbuf)) + if (send (ftp_super->sock, ipbuf, sizeof (ipbuf), MSG_OOB) != sizeof (ipbuf)) { vfs_print_message (_("ftpfs: abort error: %s"), unix_error_string (errno)); if (dsock != -1) @@ -1728,7 +1796,7 @@ resolve_symlink (struct vfs_class *me, struct vfs_s_super *super, struct vfs_s_i /* --------------------------------------------------------------------------------------------- */ static int -ftpfs_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path) +ftpfs_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path) { struct vfs_s_super *super = dir->super; ftp_super_t *ftp_super = FTP_SUPER (super); @@ -1752,7 +1820,7 @@ ftpfs_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path if (cd_first && ftpfs_chdir_internal (me, super, remote_path) != COMPLETE) { - ftpfs_errno = ENOENT; + me->verrno = ENOENT; vfs_print_message ("%s", _("ftpfs: CWD failed.")); return (-1); } @@ -1770,7 +1838,7 @@ ftpfs_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path char *path; /* Trailing "/." is necessary if remote_path is a symlink */ - path = mc_build_filename (remote_path, ".", (char *) NULL); + path = g_strconcat (remote_path, PATH_SEP_STR ".", (char *) NULL); sock = ftpfs_open_data_connection (me, super, "LIST -la", path, TYPE_ASCII, 0); g_free (path); } @@ -1885,6 +1953,7 @@ ftpfs_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, cha if (fstat (h, &s) == -1) { + me->verrno = errno; close (h); return (-1); } @@ -1913,12 +1982,12 @@ ftpfs_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, cha { if (errno != EINTR) { - ftpfs_errno = errno; + me->verrno = errno; goto error_return; } if (tty_got_interrupt ()) { - ftpfs_errno = EINTR; + me->verrno = EINTR; goto error_return; } } @@ -1935,7 +2004,7 @@ ftpfs_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, cha if (errno == EINTR && !tty_got_interrupt ()) continue; - ftpfs_errno = errno; + me->verrno = errno; goto error_return; } @@ -2148,7 +2217,7 @@ ftpfs_chown (const vfs_path_t * vpath, uid_t owner, gid_t group) (void) owner; (void) group; - ftpfs_errno = EPERM; + me->verrno = EPERM; return (-1); #else /* Everyone knows it is not possible to chown remotely, so why bother them. @@ -2197,7 +2266,7 @@ ftpfs_chdir_internal (struct vfs_class *me, struct vfs_s_super *super, const cha g_free (p); if (r != COMPLETE) - ftpfs_errno = EIO; + me->verrno = EIO; else { g_free (ftp_super->current_dir); diff --git a/mcsrc/src/vfs/ftpfs/ftpfs_parse_ls.c b/mcsrc/src/vfs/ftpfs/ftpfs_parse_ls.c index 4aecf9b4..f4f137de 100644 --- a/mcsrc/src/vfs/ftpfs/ftpfs_parse_ls.c +++ b/mcsrc/src/vfs/ftpfs/ftpfs_parse_ls.c @@ -323,7 +323,7 @@ parse_ls_line (char *line, struct stat *s, char **filename, char **linkname) long long size; int n; - s->st_gid = ftpfs_get_gid (t); + s->st_gid = ftpfs_get_gid (group_or_size); if (sscanf (t, "%lld%n", &size, &n) == 1 && t[n] == '\0') s->st_size = (off_t) size; @@ -801,7 +801,7 @@ ftpfs_parse_long_list_MLSD (char *line, struct stat *s, char **filename, char ** if (owner != NULL) s->st_uid = ftpfs_get_uid (owner); if (group != NULL) - s->st_uid = ftpfs_get_gid (group); + s->st_gid = ftpfs_get_gid (group); return TRUE; } diff --git a/mcsrc/src/vfs/sfs/sfs.c b/mcsrc/src/vfs/sfs/sfs.c index 5b709e33..ad313b55 100644 --- a/mcsrc/src/vfs/sfs/sfs.c +++ b/mcsrc/src/vfs/sfs/sfs.c @@ -228,6 +228,8 @@ sfs_vfmake (const vfs_path_t * vpath, vfs_path_t * cache_vpath) return (-1); } + pip->err.null_term = TRUE; + mc_pread (pip, &error); if (error != NULL) { diff --git a/mcsrc/src/vfs/sftpfs/sftpfs.c b/mcsrc/src/vfs/sftpfs/sftpfs.c index 3faa7181..55e5ada8 100644 --- a/mcsrc/src/vfs/sftpfs/sftpfs.c +++ b/mcsrc/src/vfs/sftpfs/sftpfs.c @@ -7,7 +7,7 @@ Written by: Ilia Maslakov , 2011 Slava Zanko , 2011-2013 - Andrew Borodin , 2021 + Andrew Borodin , 2021-2022 This file is part of the Midnight Commander. @@ -800,7 +800,7 @@ sftpfs_free_archive (struct vfs_class *me, struct vfs_s_super *super) */ static int -sftpfs_cb_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path) +sftpfs_cb_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path) { (void) me; (void) dir; diff --git a/mcsrc/src/viewer/actions_cmd.c b/mcsrc/src/viewer/actions_cmd.c index 116c79f5..40c27cda 100644 --- a/mcsrc/src/viewer/actions_cmd.c +++ b/mcsrc/src/viewer/actions_cmd.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009, 2013 - Andrew Borodin , 2009, 2013 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 This file is part of the Midnight Commander. @@ -510,16 +510,16 @@ mcview_execute_cmd (WView * view, long command) mcview_move_down (view, 1); break; case CK_HalfPageUp: - mcview_move_up (view, (view->data_area.height + 1) / 2); + mcview_move_up (view, (view->data_area.lines + 1) / 2); break; case CK_HalfPageDown: - mcview_move_down (view, (view->data_area.height + 1) / 2); + mcview_move_down (view, (view->data_area.lines + 1) / 2); break; case CK_PageUp: - mcview_move_up (view, view->data_area.height); + mcview_move_up (view, view->data_area.lines); break; case CK_PageDown: - mcview_move_down (view, view->data_area.height); + mcview_move_down (view, view->data_area.lines); break; case CK_Top: mcview_moveto_top (view); @@ -601,7 +601,7 @@ mcview_handle_key (WView * view, int key) return MSG_HANDLED; #ifdef MC_ENABLE_DEBUGGING_CODE - if (c == 't') + if (key == 't') { /* mnemonic: "test" */ mcview_ccache_dump (view); return MSG_HANDLED; diff --git a/mcsrc/src/viewer/ascii.c b/mcsrc/src/viewer/ascii.c index 0099044b..52fa41d0 100644 --- a/mcsrc/src/viewer/ascii.c +++ b/mcsrc/src/viewer/ascii.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009 - Andrew Borodin , 2009-2014 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 Rewritten almost from scratch by: Egmont Koblinger , 2014 @@ -573,12 +573,9 @@ static int mcview_display_line (WView * view, mcview_state_machine_t * state, int row, gboolean * paragraph_ended, off_t * linewidth) { - const screen_dimen left = view->data_area.left; - const screen_dimen top = view->data_area.top; - const screen_dimen width = view->data_area.width; - const screen_dimen height = view->data_area.height; + const WRect *r = &view->data_area; off_t dpy_text_column = view->mode_flags.wrap ? 0 : view->dpy_text_column; - screen_dimen col = 0; + int col = 0; int cs[1 + MAX_COMBINING_CHARS]; char str[(1 + MAX_COMBINING_CHARS) * UTF8_CHAR_LEN + 1]; int i, j; @@ -586,7 +583,7 @@ mcview_display_line (WView * view, mcview_state_machine_t * state, int row, if (paragraph_ended != NULL) *paragraph_ended = TRUE; - if (!view->mode_flags.wrap && (row < 0 || row >= (int) height) && linewidth == NULL) + if (!view->mode_flags.wrap && (row < 0 || row >= r->lines) && linewidth == NULL) { /* Optimization: Fast forward to the end of the line, rather than carefully * parsing and then not actually displaying it. */ @@ -655,7 +652,7 @@ mcview_display_line (WView * view, mcview_state_machine_t * state, int row, /* In wrap mode only: We're done with this row if the character sequence wouldn't fit. * Except if at the first column, because then it wouldn't fit in the next row either. * In this extreme case let the unwrapped code below do its best to display it. */ - if (view->mode_flags.wrap && (off_t) col + charwidth > dpy_text_column + (off_t) width + if (view->mode_flags.wrap && (off_t) col + charwidth > dpy_text_column + (off_t) r->cols && col > 0) { *state = state_saved; @@ -667,14 +664,14 @@ mcview_display_line (WView * view, mcview_state_machine_t * state, int row, } /* Display, unless outside of the viewport. */ - if (row >= 0 && row < (int) height) + if (row >= 0 && row < r->lines) { if ((off_t) col >= dpy_text_column && - (off_t) col + charwidth <= dpy_text_column + (off_t) width) + (off_t) col + charwidth <= dpy_text_column + (off_t) r->cols) { /* The combining character sequence fits entirely in the viewport. Print it. */ tty_setcolor (color); - widget_gotoyx (view, top + row, left + ((off_t) col - dpy_text_column)); + widget_gotoyx (view, r->y + row, r->x + ((off_t) col - dpy_text_column)); if (cs[0] == '\t') { for (i = 0; i < charwidth; i++) @@ -700,22 +697,22 @@ mcview_display_line (WView * view, mcview_state_machine_t * state, int row, * or spaces with the correct attributes for partial Tabs. */ tty_setcolor (color); for (i = dpy_text_column; - i < (off_t) col + charwidth && i < dpy_text_column + (off_t) width; i++) + i < (off_t) col + charwidth && i < dpy_text_column + (off_t) r->cols; i++) { - widget_gotoyx (view, top + row, left + (i - dpy_text_column)); + widget_gotoyx (view, r->y + row, r->x + (i - dpy_text_column)); tty_print_anychar ((cs[0] == '\t') ? ' ' : PARTIAL_CJK_AT_LEFT_MARGIN); } } - else if ((off_t) col < dpy_text_column + (off_t) width && - (off_t) col + charwidth > dpy_text_column + (off_t) width) + else if ((off_t) col < dpy_text_column + (off_t) r->cols && + (off_t) col + charwidth > dpy_text_column + (off_t) r->cols) { /* The combining character sequence would cross the right edge of the viewport * and we're not wrapping. Print replacement character(s), * or spaces with the correct attributes for partial Tabs. */ tty_setcolor (color); - for (i = col; i < dpy_text_column + (off_t) width; i++) + for (i = col; i < dpy_text_column + (off_t) r->cols; i++) { - widget_gotoyx (view, top + row, left + (i - dpy_text_column)); + widget_gotoyx (view, r->y + row, r->x + (i - dpy_text_column)); tty_print_anychar ((cs[0] == '\t') ? ' ' : PARTIAL_CJK_AT_RIGHT_MARGIN); } } @@ -724,7 +721,7 @@ mcview_display_line (WView * view, mcview_state_machine_t * state, int row, col += charwidth; state->unwrapped_column += charwidth; - if (!view->mode_flags.wrap && (off_t) col >= dpy_text_column + (off_t) width + if (!view->mode_flags.wrap && (off_t) col >= dpy_text_column + (off_t) r->cols && linewidth == NULL) { /* Optimization: Fast forward to the end of the line, rather than carefully @@ -767,7 +764,6 @@ mcview_display_line (WView * view, mcview_state_machine_t * state, int row, static int mcview_display_paragraph (WView * view, mcview_state_machine_t * state, int row) { - const screen_dimen height = view->data_area.height; int lines = 0; while (TRUE) @@ -778,11 +774,11 @@ mcview_display_paragraph (WView * view, mcview_state_machine_t * state, int row) if (paragraph_ended) return lines; - if (row < (int) height) + if (row < view->data_area.lines) { row++; /* stop if bottom of screen reached */ - if (row >= (int) height) + if (row >= view->data_area.lines) return lines; } } @@ -848,9 +844,7 @@ mcview_wrap_fixup (WView * view) void mcview_display_text (WView * view) { - const screen_dimen left = view->data_area.left; - const screen_dimen top = view->data_area.top; - const screen_dimen height = view->data_area.height; + const WRect *r = &view->data_area; int row; mcview_state_machine_t state; gboolean again; @@ -872,7 +866,7 @@ mcview_display_text (WView * view) state = view->dpy_state_top; } - for (row = 0; row < (int) height; row += n) + for (row = 0; row < r->lines; row += n) { n = mcview_display_paragraph (view, &state, row); if (n == 0) @@ -884,7 +878,7 @@ mcview_display_text (WView * view) * charset change or enabling nroff. */ if ((view->mode_flags.wrap ? view->dpy_state_top.offset : view->dpy_start) > 0) { - mcview_ascii_move_up (view, height - row); + mcview_ascii_move_up (view, r->lines - row); again = TRUE; } break; @@ -898,9 +892,9 @@ mcview_display_text (WView * view) tty_setcolor (VIEW_NORMAL_COLOR); if (mcview_show_eof != NULL && mcview_show_eof[0] != '\0') - while (row < (int) height) + while (row < r->lines) { - widget_gotoyx (view, top + row, left); + widget_gotoyx (view, r->y + row, r->x); /* TODO: should make it no wider than the viewport */ tty_print_string (mcview_show_eof); row++; @@ -1002,7 +996,7 @@ mcview_ascii_move_up (WView * view, off_t lines) * Normally we'd jump to the next paragraph and reset paragraph_skip_lines. But for * walking backwards this is exactly what we need. */ view->dpy_paragraph_skip_lines = - mcview_display_paragraph (view, &view->dpy_state_top, view->data_area.height); + mcview_display_paragraph (view, &view->dpy_state_top, view->data_area.lines); view->force_max = -1; } @@ -1038,7 +1032,7 @@ mcview_ascii_moveto_eol (WView * view) /* Get the width of the topmost paragraph. */ mcview_state_machine_init (&state, view->dpy_start); mcview_display_line (view, &state, -1, NULL, &linewidth); - view->dpy_text_column = DOZ (linewidth, (off_t) view->data_area.width); + view->dpy_text_column = DOZ (linewidth, (off_t) view->data_area.cols); } } diff --git a/mcsrc/src/viewer/coord_cache.c b/mcsrc/src/viewer/coord_cache.c index 31de33fd..26a4fbcc 100644 --- a/mcsrc/src/viewer/coord_cache.c +++ b/mcsrc/src/viewer/coord_cache.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009 - Andrew Borodin , 2009 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 This file is part of the Midnight Commander. @@ -49,7 +49,7 @@ #include -#include /* memmove() */ +#include /* memset() */ #ifdef MC_ENABLE_DEBUGGING_CODE #include /* uintmax_t */ #endif @@ -65,37 +65,27 @@ #define VIEW_COORD_CACHE_GRANUL 1024 #define CACHE_CAPACITY_DELTA 64 +#define coord_cache_index(c, i) ((coord_cache_entry_t *) g_ptr_array_index ((c), (i))) + /*** file scope type declarations ****************************************************************/ typedef gboolean (*cmp_func_t) (const coord_cache_entry_t * a, const coord_cache_entry_t * b); /*** file scope variables ************************************************************************/ +/* --------------------------------------------------------------------------------------------- */ /*** file scope functions ************************************************************************/ /* --------------------------------------------------------------------------------------------- */ /* insert new cache entry into the cache */ -static void -mcview_ccache_add_entry (coord_cache_t * cache, size_t pos, const coord_cache_entry_t * entry) +static inline void +mcview_ccache_add_entry (GPtrArray * cache, const coord_cache_entry_t * entry) { - if ((cache == NULL) || (entry == NULL)) - return; - - pos = MIN (pos, cache->size); - - /* increase cache capacity if needed */ - if (cache->size == cache->capacity) - { - cache->capacity += CACHE_CAPACITY_DELTA; - cache->cache = g_realloc (cache->cache, cache->capacity * sizeof (*cache->cache)); - } - - /* insert new entry */ - if (pos != cache->size) - memmove (cache->cache[pos + 1], cache->cache[pos], - (cache->size - pos) * sizeof (*cache->cache)); - cache->cache[pos] = g_memdup (entry, sizeof (*entry)); - cache->size++; +#if GLIB_CHECK_VERSION (2, 68, 0) + g_ptr_array_add (cache, g_memdup2 (entry, sizeof (*entry))); +#else + g_ptr_array_add (cache, g_memdup (entry, sizeof (*entry))); +#endif } /* --------------------------------------------------------------------------------------------- */ @@ -120,7 +110,6 @@ mcview_coord_cache_entry_less_plain (const coord_cache_entry_t * a, const coord_ return FALSE; } - /* --------------------------------------------------------------------------------------------- */ static gboolean @@ -135,7 +124,6 @@ mcview_coord_cache_entry_less_nroff (const coord_cache_entry_t * a, const coord_ return FALSE; } - /* --------------------------------------------------------------------------------------------- */ /** Find and return the index of the last cache entry that is * smaller than ''coord'', according to the criterion ''sort_by''. */ @@ -144,7 +132,7 @@ static inline size_t mcview_ccache_find (WView * view, const coord_cache_entry_t * coord, cmp_func_t cmp_func) { size_t base = 0; - size_t limit = view->coord_cache->size; + size_t limit = view->coord_cache->len; g_assert (limit != 0); @@ -153,17 +141,20 @@ mcview_ccache_find (WView * view, const coord_cache_entry_t * coord, cmp_func_t size_t i; i = base + limit / 2; - if (cmp_func (coord, view->coord_cache->cache[i])) + if (cmp_func (coord, coord_cache_index (view->coord_cache, i))) { /* continue the search in the lower half of the cache */ + ; } else { /* continue the search in the upper half of the cache */ base = i; } + limit = (limit + 1) / 2; } + return base; } @@ -171,38 +162,6 @@ mcview_ccache_find (WView * view, const coord_cache_entry_t * coord, cmp_func_t /*** public functions ****************************************************************************/ /* --------------------------------------------------------------------------------------------- */ -coord_cache_t * -coord_cache_new (void) -{ - coord_cache_t *cache; - - cache = g_new (coord_cache_t, 1); - cache->size = 0; - cache->capacity = CACHE_CAPACITY_DELTA; - cache->cache = g_malloc0 (cache->capacity * sizeof (*cache->cache)); - - return cache; -} - -/* --------------------------------------------------------------------------------------------- */ - -void -coord_cache_free (coord_cache_t * cache) -{ - if (cache != NULL) - { - size_t i; - - for (i = 0; i < cache->size; i++) - g_free (cache->cache[i]); - - g_free (cache->cache); - g_free (cache); - } -} - -/* --------------------------------------------------------------------------------------------- */ - #ifdef MC_ENABLE_DEBUGGING_CODE void @@ -211,7 +170,7 @@ mcview_ccache_dump (WView * view) FILE *f; off_t offset, line, column, nextline_offset, filesize; guint i; - const coord_cache_t *cache = view->coord_cache; + const GPtrArray *cache = view->coord_cache; g_assert (cache != NULL); @@ -220,20 +179,22 @@ mcview_ccache_dump (WView * view) f = fopen ("mcview-ccache.out", "w"); if (f == NULL) return; + (void) setvbuf (f, NULL, _IONBF, 0); /* cache entries */ - for (i = 0; i < cache->size; i++) + for (i = 0; i < cache->len; i++) { + coord_cache_entry_t *e; + + e = coord_cache_index (cache, i); (void) fprintf (f, "entry %8u offset %8" PRIuMAX " line %8" PRIuMAX " column %8" PRIuMAX " nroff_column %8" PRIuMAX "\n", (unsigned int) i, - (uintmax_t) cache->cache[i]->cc_offset, - (uintmax_t) cache->cache[i]->cc_line, - (uintmax_t) cache->cache[i]->cc_column, - (uintmax_t) cache->cache[i]->cc_nroff_column); + (uintmax_t) e->cc_offset, (uintmax_t) e->cc_line, (uintmax_t) e->cc_column, + (uintmax_t) e->cc_nroff_column); } (void) fprintf (f, "\n"); @@ -281,7 +242,7 @@ void mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_type lookup_what) { size_t i; - coord_cache_t *cache; + GPtrArray *cache; coord_cache_entry_t current, next, entry; enum ccache_type sorter; off_t limit; @@ -295,17 +256,14 @@ mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_typ } nroff_state; if (view->coord_cache == NULL) - view->coord_cache = coord_cache_new (); + view->coord_cache = g_ptr_array_new_full (CACHE_CAPACITY_DELTA, g_free); cache = view->coord_cache; - if (cache->size == 0) + if (cache->len == 0) { - current.cc_offset = 0; - current.cc_line = 0; - current.cc_column = 0; - current.cc_nroff_column = 0; - mcview_ccache_add_entry (cache, 0, ¤t); + memset (¤t, 0, sizeof (current)); + mcview_ccache_add_entry (cache, ¤t); } sorter = (lookup_what == CCACHE_OFFSET) ? CCACHE_LINECOL : CCACHE_OFFSET; @@ -317,7 +275,6 @@ mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_typ else cmp_func = mcview_coord_cache_entry_less_plain; - tty_enable_interrupt_key (); retry: @@ -325,9 +282,9 @@ mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_typ i = mcview_ccache_find (view, coord, cmp_func); /* now i points to the lower neighbor in the cache */ - current = *cache->cache[i]; - if (i + 1 < view->coord_cache->size) - limit = cache->cache[i + 1]->cc_offset; + current = *coord_cache_index (cache, i); + if (i + 1 < view->coord_cache->len) + limit = coord_cache_index (cache, i + 1)->cc_offset; else limit = current.cc_offset + VIEW_COORD_CACHE_GRANUL; @@ -340,20 +297,11 @@ mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_typ if (!mcview_get_byte (view, current.cc_offset, &c)) break; - if (!cmp_func (¤t, coord)) - { - if (lookup_what == CCACHE_OFFSET && view->mode_flags.nroff - && nroff_state != NROFF_START) - { - /* don't break here */ - } - else - { - break; - } - } + if (!cmp_func (¤t, coord) && + (lookup_what != CCACHE_OFFSET || !view->mode_flags.nroff || nroff_state == NROFF_START)) + break; - /* Provide useful default values for ''next'' */ + /* Provide useful default values for 'next' */ next.cc_offset = current.cc_offset + 1; next.cc_line = current.cc_line; next.cc_column = current.cc_column + 1; @@ -381,29 +329,23 @@ mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_typ next.cc_column = 0; next.cc_nroff_column = 0; } - } else if (nroff_state == NROFF_BACKSPACE) - { next.cc_nroff_column = current.cc_nroff_column - 1; - - } else if (c == '\t') { next.cc_column = mcview_offset_rounddown (current.cc_column, 8) + 8; next.cc_nroff_column = mcview_offset_rounddown (current.cc_nroff_column, 8) + 8; - } else if (c == '\n') { next.cc_line = current.cc_line + 1; next.cc_column = 0; next.cc_nroff_column = 0; - } else { - /* Use all default values from above */ + ; /* Use all default values from above */ } switch (nroff_state) @@ -428,9 +370,9 @@ mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_typ entry = next; } - if (i + 1 == cache->size && entry.cc_offset != cache->cache[i]->cc_offset) + if (i + 1 == cache->len && entry.cc_offset != coord_cache_index (cache, i)->cc_offset) { - mcview_ccache_add_entry (cache, cache->size, &entry); + mcview_ccache_add_entry (cache, &entry); if (!tty_got_interrupt ()) goto retry; @@ -439,9 +381,7 @@ mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_typ tty_disable_interrupt_key (); if (lookup_what == CCACHE_OFFSET) - { coord->cc_offset = current.cc_offset; - } else { coord->cc_line = current.cc_line; diff --git a/mcsrc/src/viewer/dialogs.c b/mcsrc/src/viewer/dialogs.c index dd89d9fb..b2d9a812 100644 --- a/mcsrc/src/viewer/dialogs.c +++ b/mcsrc/src/viewer/dialogs.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009 - Andrew Borodin , 2009, 2012 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 This file is part of the Midnight Commander. @@ -107,11 +107,12 @@ mcview_dialog_search (WView * view) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 58, - N_("Search"), "[Input Line Keys]", + WRect r = { -1, -1, 0, 58 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Search"), "[Input Line Keys]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_LABELED_INPUT (qc, @@ -217,11 +218,12 @@ mcview_dialog_goto (WView * view, off_t * offset) }; #endif //WIN32 - quick_dialog_t qdlg = { - -1, -1, 40, - N_("Goto"), "[Input Line Keys]", + WRect r = { -1, -1, 0, 40 }; + + quick_dialog_t qdlg = QUICK_DIALOG_INIT ( + &r, N_("Goto"), "[Input Line Keys]", quick_widgets, NULL, NULL - }; + ); #if defined(WIN32) //WIN32, quick qc = XQUICK_INPUT (qc, diff --git a/mcsrc/src/viewer/display.c b/mcsrc/src/viewer/display.c index be6d60eb..fe47ec50 100644 --- a/mcsrc/src/viewer/display.c +++ b/mcsrc/src/viewer/display.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009 - Andrew Borodin , 2009, 2013 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009, 2010 This file is part of the Midnight Commander. @@ -132,9 +132,10 @@ mcview_display_percent (WView * view, off_t p) percent = mcview_calc_percent (view, p); if (percent >= 0) { - const screen_dimen top = view->status_area.top; - const screen_dimen right = view->status_area.left + view->status_area.width; + int top = view->status_area.y; + int right; + right = view->status_area.x + view->status_area.cols; widget_gotoyx (view, top, right - 4); tty_printf ("%3d%%", percent); /* avoid cursor wrapping in NCurses-base MC */ @@ -147,26 +148,23 @@ mcview_display_percent (WView * view, off_t p) static void mcview_display_status (WView * view) { - const screen_dimen top = view->status_area.top; - const screen_dimen left = view->status_area.left; - const screen_dimen width = view->status_area.width; - const screen_dimen height = view->status_area.height; + const WRect *r = &view->status_area; const char *file_label; - if (height < 1) + if (r->lines < 1) return; tty_setcolor (STATUSBAR_COLOR); - tty_draw_hline (WIDGET (view)->y + top, WIDGET (view)->x + left, ' ', width); + tty_draw_hline (WIDGET (view)->rect.y + r->y, WIDGET (view)->rect.x + r->x, ' ', r->cols); file_label = view->filename_vpath != NULL ? vfs_path_get_last_path_str (view->filename_vpath) : view->command != NULL ? view->command : ""; - if (width > 40) + if (r->cols > 40) { - widget_gotoyx (view, top, width - 32); + widget_gotoyx (view, r->y, r->cols - 32); if (view->mode_flags.hex) tty_printf ("0x%08" PRIxMAX, (uintmax_t) view->hex_cursor); else @@ -184,12 +182,12 @@ mcview_display_status (WView * view) ""); } } - widget_gotoyx (view, top, left); - if (width > 40) - tty_print_string (str_fit_to_term (file_label, width - 34, J_LEFT_FIT)); + widget_gotoyx (view, r->y, r->x); + if (r->cols > 40) + tty_print_string (str_fit_to_term (file_label, r->cols - 34, J_LEFT_FIT)); else - tty_print_string (str_fit_to_term (file_label, width - 5, J_LEFT_FIT)); - if (width > 26) + tty_print_string (str_fit_to_term (file_label, r->cols - 5, J_LEFT_FIT)); + if (r->cols > 26) mcview_display_percent (view, view->mode_flags.hex ? view->hex_cursor : view->dpy_end); } @@ -258,18 +256,18 @@ mcview_display (WView * view) void mcview_compute_areas (WView * view) { - struct area view_area; - screen_dimen height, rest, y; + WRect view_area; + int height, rest, y; /* The viewer is surrounded by a frame of size view->dpy_frame_size. * Inside that frame, there are: The status line (at the top), * the data area and an optional ruler, which is shown above or * below the data area. */ - view_area.top = view->dpy_frame_size; - view_area.left = view->dpy_frame_size; - view_area.height = DOZ ((screen_dimen) WIDGET (view)->lines, 2 * view->dpy_frame_size); - view_area.width = DOZ ((screen_dimen) WIDGET (view)->cols, 2 * view->dpy_frame_size); + view_area.y = view->dpy_frame_size; + view_area.x = view->dpy_frame_size; + view_area.lines = DOZ (WIDGET (view)->rect.lines, 2 * view->dpy_frame_size); + view_area.cols = DOZ (WIDGET (view)->rect.cols, 2 * view->dpy_frame_size); /* Most coordinates of the areas equal those of the whole viewer */ view->status_area = view_area; @@ -277,36 +275,36 @@ mcview_compute_areas (WView * view) view->data_area = view_area; /* Compute the heights of the areas */ - rest = view_area.height; + rest = view_area.lines; height = MIN (rest, 1); - view->status_area.height = height; + view->status_area.lines = height; rest -= height; height = (ruler == RULER_NONE || view->mode_flags.hex) ? 0 : 2; height = MIN (rest, height); - view->ruler_area.height = height; + view->ruler_area.lines = height; rest -= height; - view->data_area.height = rest; + view->data_area.lines = rest; /* Compute the position of the areas */ - y = view_area.top; + y = view_area.y; - view->status_area.top = y; - y += view->status_area.height; + view->status_area.y = y; + y += view->status_area.lines; if (ruler == RULER_TOP) { - view->ruler_area.top = y; - y += view->ruler_area.height; + view->ruler_area.y = y; + y += view->ruler_area.lines; } - view->data_area.top = y; - y += view->data_area.height; + view->data_area.y = y; + y += view->data_area.lines; if (ruler == RULER_BOTTOM) - view->ruler_area.top = y; + view->ruler_area.y = y; } /* --------------------------------------------------------------------------------------------- */ @@ -314,7 +312,7 @@ mcview_compute_areas (WView * view) void mcview_update_bytes_per_line (WView * view) { - const screen_dimen cols = view->data_area.width; + int cols = view->data_area.cols; int bytes; if (cols < 9 + 17) @@ -357,7 +355,7 @@ mcview_display_clean (WView * view) tty_setcolor (VIEW_NORMAL_COLOR); widget_erase (w); if (view->dpy_frame_size != 0) - tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE); + tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE); } /* --------------------------------------------------------------------------------------------- */ @@ -366,36 +364,33 @@ void mcview_display_ruler (WView * view) { static const char ruler_chars[] = "|----*----"; - const screen_dimen top = view->ruler_area.top; - const screen_dimen left = view->ruler_area.left; - const screen_dimen width = view->ruler_area.width; - const screen_dimen height = view->ruler_area.height; - const screen_dimen line_row = (ruler == RULER_TOP) ? 0 : 1; - const screen_dimen nums_row = (ruler == RULER_TOP) ? 1 : 0; + const WRect *r = &view->ruler_area; + const int line_row = (ruler == RULER_TOP) ? 0 : 1; + const int nums_row = (ruler == RULER_TOP) ? 1 : 0; char r_buff[10]; off_t cl; - screen_dimen c; + int c; - if (ruler == RULER_NONE || height < 1) + if (ruler == RULER_NONE || r->lines < 1) return; tty_setcolor (VIEW_BOLD_COLOR); - for (c = 0; c < width; c++) + for (c = 0; c < r->cols; c++) { cl = view->dpy_text_column + c; - if (line_row < height) + if (line_row < r->lines) { - widget_gotoyx (view, top + line_row, left + c); + widget_gotoyx (view, r->y + line_row, r->x + c); tty_print_char (ruler_chars[cl % 10]); } if ((cl != 0) && (cl % 10) == 0) { g_snprintf (r_buff, sizeof (r_buff), "%" PRIuMAX, (uintmax_t) cl); - if (nums_row < height) + if (nums_row < r->lines) { - widget_gotoyx (view, top + nums_row, left + c - 1); + widget_gotoyx (view, r->y + nums_row, r->x + c - 1); tty_print_string (r_buff); } } diff --git a/mcsrc/src/viewer/growbuf.c b/mcsrc/src/viewer/growbuf.c index c4ada83a..9b975369 100644 --- a/mcsrc/src/viewer/growbuf.c +++ b/mcsrc/src/viewer/growbuf.c @@ -186,6 +186,16 @@ mcview_growbuf_read_until (WView * view, off_t ofs) view->pipe_first_err_msg = FALSE; mcview_show_error (view, sp->err.buf); + + /* when switch from parse to raw mode and back, + * do not close the already closed pipe (see call to mcview_growbuf_done below). + * return from here since (sp == view->ds_stdio_pipe) would now be invalid. + * NOTE: this check was removed by ticket #4103 but the above call to + * mcview_show_error triggers the stdio pipe handle to be closed: + * mcview_close_datasource -> mcview_growbuf_done + */ + if (view->ds_stdio_pipe == NULL) + return; } if (sp->out.len > 0) diff --git a/mcsrc/src/viewer/hex.c b/mcsrc/src/viewer/hex.c index d9e417af..be79b484 100644 --- a/mcsrc/src/viewer/hex.c +++ b/mcsrc/src/viewer/hex.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009, 2013 - Andrew Borodin , 2009 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 This file is part of the Midnight Commander. @@ -96,21 +96,17 @@ mcview_hex_calculate_boldflag (WView * view, off_t from, struct hexedit_change_n void mcview_display_hex (WView * view) { - const screen_dimen top = view->data_area.top; - const screen_dimen left = view->data_area.left; - const screen_dimen height = view->data_area.height; - const screen_dimen width = view->data_area.width; - const int ngroups = view->bytes_per_line / 4; + const WRect *r = &view->data_area; + int ngroups = view->bytes_per_line / 4; /* 8 characters are used for the file offset, and every hex group * takes 13 characters. Starting at width of 80 columns, the groups * are separated by an extra vertical line. Starting at width of 81, * there is an extra space before the text column. There is always a * mostly empty column on the right, to allow overflowing CJKs. */ - const screen_dimen text_start = 8 + 13 * ngroups + - ((width < 80) ? 0 : (width == 80) ? (ngroups - 1) : (ngroups - 1 + 1)); + int text_start; - int row; + int row = 0; off_t from; mark_t boldflag_byte = MARK_NORMAL; mark_t boldflag_char = MARK_NORMAL; @@ -123,12 +119,14 @@ mcview_display_hex (WView * view) char hex_buff[10]; /* A temporary buffer for sprintf and mvwaddstr */ + text_start = 8 + 13 * ngroups + + ((r->cols < 80) ? 0 : (r->cols == 80) ? (ngroups - 1) : (ngroups - 1 + 1)); + mcview_display_clean (view); /* Find the first displayable changed byte */ /* In UTF-8 mode, go back by 1 or maybe 2 lines to handle continuation bytes properly. */ from = view->dpy_start; - row = 0; #ifdef HAVE_CHARSET if (view->utf8) { @@ -149,20 +147,20 @@ mcview_display_hex (WView * view) curr = curr->next; } - for (; mcview_get_byte (view, from, NULL) && row < (int) height; row++) + for (; mcview_get_byte (view, from, NULL) && row < r->lines; row++) { - screen_dimen col = 0; + int col = 0; int bytes; /* Number of bytes already printed on the line */ /* Print the hex offset */ if (row >= 0) { - size_t i; + int i; g_snprintf (hex_buff, sizeof (hex_buff), "%08" PRIXMAX " ", (uintmax_t) from); - widget_gotoyx (view, top + row, left); + widget_gotoyx (view, r->y + row, r->x); tty_setcolor (VIEW_BOLD_COLOR); - for (i = 0; col < width && hex_buff[i] != '\0'; col++, i++) + for (i = 0; col < r->cols && hex_buff[i] != '\0'; col++, i++) tty_print_char (hex_buff[i]); tty_setcolor (VIEW_NORMAL_COLOR); } @@ -276,13 +274,13 @@ mcview_display_hex (WView * view) view->hexview_in_text ? VIEW_SELECTED_COLOR : VIEW_UNDERLINED_COLOR); /* Print the hex number */ - widget_gotoyx (view, top + row, left + col); - if (col < width) + widget_gotoyx (view, r->y + row, r->x + col); + if (col < r->cols) { tty_print_char (hex_char[c / 16]); col += 1; } - if (col < width) + if (col < r->cols) { tty_print_char (hex_char[c % 16]); col += 1; @@ -292,7 +290,7 @@ mcview_display_hex (WView * view) tty_setcolor (VIEW_NORMAL_COLOR); if (bytes != view->bytes_per_line - 1) { - if (col < width) + if (col < r->cols) { tty_print_char (' '); col += 1; @@ -301,12 +299,12 @@ mcview_display_hex (WView * view) /* After every four bytes, print a group separator */ if (bytes % 4 == 3) { - if (view->data_area.width >= 80 && col < width) + if (view->data_area.cols >= 80 && col < r->cols) { tty_print_one_vline (TRUE); col += 1; } - if (col < width) + if (col < r->cols) { tty_print_char (' '); col += 1; @@ -347,9 +345,9 @@ mcview_display_hex (WView * view) } /* Print corresponding character on the text side */ - if (text_start + bytes < width) + if (text_start + bytes < r->cols) { - widget_gotoyx (view, top + row, left + text_start + bytes); + widget_gotoyx (view, r->y + row, r->x + text_start + bytes); #ifdef HAVE_CHARSET if (view->utf8) tty_print_anychar (ch); diff --git a/mcsrc/src/viewer/internal.h b/mcsrc/src/viewer/internal.h index 92c674eb..d6075d83 100644 --- a/mcsrc/src/viewer/internal.h +++ b/mcsrc/src/viewer/internal.h @@ -24,9 +24,6 @@ typedef unsigned char byte; -/* A width or height on the screen */ -typedef unsigned int screen_dimen; - /*** enums ***************************************************************************************/ /* data sources of the view */ @@ -62,12 +59,6 @@ struct hexedit_change_node byte value; }; -struct area -{ - screen_dimen top, left; - screen_dimen height, width; -}; - /* A cache entry for mapping offsets into line/column pairs and vice versa. * cc_offset, cc_line, and cc_column are the 0-based values of the offset, * line and column of that cache entry. cc_nroff_column is the column @@ -81,13 +72,6 @@ typedef struct off_t cc_nroff_column; } coord_cache_entry_t; -typedef struct -{ - size_t size; - size_t capacity; - coord_cache_entry_t **cache; -} coord_cache_t; - /* TODO: find a better name. This is not actually a "state machine", * but a "state machine's state", but that sounds silly. * Could be parser_state, formatter_state... */ @@ -153,10 +137,10 @@ struct WView gboolean utf8; /* It's multibyte file codeset */ #endif - coord_cache_t *coord_cache; /* Cache for mapping offsets to cursor positions */ + GPtrArray *coord_cache; /* Cache for mapping offsets to cursor positions */ /* Display information */ - screen_dimen dpy_frame_size; /* Size of the frame surrounding the real viewer */ + int dpy_frame_size; /* Size of the frame surrounding the real viewer */ off_t dpy_start; /* Offset of the displayed data (start of the paragraph in non-hex mode) */ off_t dpy_end; /* Offset after the displayed data */ off_t dpy_paragraph_skip_lines; /* Extra lines to skip in wrap mode */ @@ -165,12 +149,12 @@ struct WView gboolean dpy_wrap_dirty; /* dpy_state_top needs to be recomputed */ off_t dpy_text_column; /* Number of skipped columns in non-wrap * text mode */ - screen_dimen cursor_col; /* Cursor column */ - screen_dimen cursor_row; /* Cursor row */ + int cursor_col; /* Cursor column */ + int cursor_row; /* Cursor row */ struct hexedit_change_node *change_list; /* Linked list of changes */ - struct area status_area; /* Where the status line is displayed */ - struct area ruler_area; /* Where the ruler is displayed */ - struct area data_area; /* Where the data is displayed */ + WRect status_area; /* Where the status line is displayed */ + WRect ruler_area; /* Where the ruler is displayed */ + WRect data_area; /* Where the data is displayed */ ssize_t force_max; /* Force a max offset, or -1 */ @@ -243,10 +227,6 @@ void mcview_ascii_move_up (WView * view, off_t lines); void mcview_ascii_moveto_bol (WView * view); void mcview_ascii_moveto_eol (WView * view); -/* coord_cache.c: */ -coord_cache_t *coord_cache_new (void); -void coord_cache_free (coord_cache_t * cache); - #ifdef MC_ENABLE_DEBUGGING_CODE void mcview_ccache_dump (WView * view); #endif @@ -434,11 +414,11 @@ static inline gboolean mcview_get_byte_indexed (WView * view, off_t base, off_t ofs, int *retval) { if (base <= OFFSETTYPE_MAX - ofs) - { return mcview_get_byte (view, base + ofs, retval); - } - if (retval) + + if (retval != NULL) *retval = -1; + return FALSE; } @@ -449,9 +429,11 @@ mcview_count_backspaces (WView * view, off_t offset) { int backspaces = 0; int c; + while (offset >= 2 * backspaces && mcview_get_byte (view, offset - 2 * backspaces, &c) && c == '\b') backspaces++; + return backspaces; } diff --git a/mcsrc/src/viewer/lib.c b/mcsrc/src/viewer/lib.c index f21a2d1b..93894248 100644 --- a/mcsrc/src/viewer/lib.c +++ b/mcsrc/src/viewer/lib.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009, 2013 - Andrew Borodin , 2009, 2013, 2014 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 This file is part of the Midnight Commander. @@ -226,8 +226,8 @@ mcview_done (WView * view) mcview_close_datasource (view); /* the growing buffer is freed with the datasource */ - coord_cache_free (view->coord_cache); - view->coord_cache = NULL; + if (view->coord_cache != NULL) + view->coord_cache = (GPtrArray *) g_ptr_array_free (view->coord_cache, TRUE); if (view->converter == INVALID_CONV) view->converter = str_cnv_from_term; @@ -398,12 +398,10 @@ mcview_get_title (const WDialog * h, size_t len) int mcview_calc_percent (WView * view, off_t p) { - const screen_dimen right = view->status_area.left + view->status_area.width; - const screen_dimen height = view->status_area.height; off_t filesize; int percent; - if (height < 1 || right < 4) + if (view->status_area.cols < 1 || (view->status_area.x + view->status_area.cols) < 4) return (-1); if (mcview_may_still_grow (view)) return (-1); diff --git a/mcsrc/src/viewer/mcviewer.c b/mcsrc/src/viewer/mcviewer.c index 035eeb7e..0fdf2b73 100644 --- a/mcsrc/src/viewer/mcviewer.c +++ b/mcsrc/src/viewer/mcviewer.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009, 2013 - Andrew Borodin , 2009, 2013 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 This file is part of the Midnight Commander. @@ -89,6 +89,7 @@ static void mcview_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) { WView *view = (WView *) w; + const WRect *r = &view->data_area; gboolean ok = TRUE; switch (msg) @@ -96,7 +97,7 @@ mcview_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) case MSG_MOUSE_DOWN: if (mcview_is_in_panel (view)) { - if (event->y == WIDGET (w->owner)->y) + if (event->y == WIDGET (w->owner)->rect.y) { /* return MOU_UNHANDLED */ event->result.abort = TRUE; @@ -117,16 +118,16 @@ mcview_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) if (!view->mode_flags.wrap) { /* Scrolling left and right */ - screen_dimen x; + int x; x = event->x + 1; /* FIXME */ - if (x < view->data_area.width * 1 / 4) + if (x < r->cols * 1 / 4) { mcview_move_left (view, 1); event->result.repeat = msg == MSG_MOUSE_DOWN; } - else if (x < view->data_area.width * 3 / 4) + else if (x < r->cols * 3 / 4) { /* ignore the click */ ok = FALSE; @@ -140,20 +141,20 @@ mcview_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) else { /* Scrolling up and down */ - screen_dimen y; + int y; y = event->y + 1; /* FIXME */ - if (y < view->data_area.top + view->data_area.height * 1 / 3) + if (y < r->y + r->lines * 1 / 3) { if (mcview_mouse_move_pages) - mcview_move_up (view, view->data_area.height / 2); + mcview_move_up (view, r->lines / 2); else mcview_move_up (view, 1); event->result.repeat = msg == MSG_MOUSE_DOWN; } - else if (y < view->data_area.top + view->data_area.height * 2 / 3) + else if (y < r->y + r->lines * 2 / 3) { /* ignore the click */ ok = FALSE; @@ -161,7 +162,7 @@ mcview_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) else { if (mcview_mouse_move_pages) - mcview_move_down (view, view->data_area.height / 2); + mcview_move_down (view, r->lines / 2); else mcview_move_down (view, 1); @@ -194,12 +195,14 @@ mcview_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event) WView * mcview_new (int y, int x, int lines, int cols, gboolean is_panel) { + WRect r = { y, x, lines, cols }; WView *view; Widget *w; view = g_new0 (WView, 1); w = WIDGET (view); - widget_init (w, y, x, lines, cols, mcview_callback, mcview_mouse_callback); + + widget_init (w, &r, mcview_callback, mcview_mouse_callback); w->options |= WOP_SELECTABLE | WOP_TOP_SELECT; w->keymap = viewer_map; @@ -247,7 +250,7 @@ mcview_viewer (const char *command, const vfs_path_t * file_vpath, int start_lin g = GROUP (view_dlg); - lc_mcview = mcview_new (vw->y, vw->x, vw->lines - 1, vw->cols, FALSE); + lc_mcview = mcview_new (vw->rect.y, vw->rect.x, vw->rect.lines - 1, vw->rect.cols, FALSE); group_add_widget_autopos (g, lc_mcview, WPOS_KEEP_ALL, NULL); b = WIDGET (buttonbar_new ()); diff --git a/mcsrc/src/viewer/move.c b/mcsrc/src/viewer/move.c index 43aa2c22..97dbfb54 100644 --- a/mcsrc/src/viewer/move.c +++ b/mcsrc/src/viewer/move.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009 - Andrew Borodin , 2009, 2013 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009, 2010 This file is part of the Midnight Commander. @@ -77,7 +77,7 @@ mcview_scroll_to_cursor (WView * view) off_t topleft = view->dpy_start; off_t displaysize; - displaysize = view->data_area.height * bytes; + displaysize = view->data_area.lines * bytes; if (topleft + displaysize <= cursor) topleft = mcview_offset_rounddown (cursor, bytes) - (displaysize - bytes); if (cursor < topleft) @@ -94,11 +94,13 @@ static void mcview_movement_fixups (WView * view, gboolean reset_search) { mcview_scroll_to_cursor (view); + if (reset_search) { view->search_start = view->mode_flags.hex ? view->hex_cursor : view->dpy_start; view->search_end = view->search_start; } + view->dirty++; } @@ -109,11 +111,17 @@ mcview_movement_fixups (WView * view, gboolean reset_search) void mcview_move_up (WView * view, off_t lines) { - if (view->mode_flags.hex) + if (!view->mode_flags.hex) + mcview_ascii_move_up (view, lines); + else { - off_t bytes = lines * view->bytes_per_line; + off_t bytes; + + bytes = lines * view->bytes_per_line; - if (view->hex_cursor >= bytes) + if (view->hex_cursor < bytes) + view->hex_cursor %= view->bytes_per_line; + else { view->hex_cursor -= bytes; if (view->hex_cursor < view->dpy_start) @@ -123,15 +131,8 @@ mcview_move_up (WView * view, off_t lines) view->dpy_wrap_dirty = TRUE; } } - else - { - view->hex_cursor %= view->bytes_per_line; - } - } - else - { - mcview_ascii_move_up (view, lines); } + mcview_movement_fixups (view, TRUE); } @@ -144,7 +145,9 @@ mcview_move_down (WView * view, off_t lines) last_byte = mcview_get_filesize (view); - if (view->mode_flags.hex) + if (!view->mode_flags.hex) + mcview_ascii_move_down (view, lines); + else { off_t i, limit; @@ -153,6 +156,7 @@ mcview_move_down (WView * view, off_t lines) for (i = 0; i < lines && view->hex_cursor < limit; i++) { view->hex_cursor += view->bytes_per_line; + if (lines != 1) { view->dpy_start += view->bytes_per_line; @@ -161,10 +165,7 @@ mcview_move_down (WView * view, off_t lines) } } } - else - { - mcview_ascii_move_down (view, lines); - } + mcview_movement_fixups (view, TRUE); } @@ -180,16 +181,16 @@ mcview_move_left (WView * view, off_t columns) g_assert (columns == 1); if (view->hexview_in_text || !view->hexedit_lownibble) - { if (view->hex_cursor > 0) view->hex_cursor--; - } + if (!view->hexview_in_text) if (old_cursor > 0 || view->hexedit_lownibble) view->hexedit_lownibble = !view->hexedit_lownibble; } else if (!view->mode_flags.wrap) view->dpy_text_column = DOZ (view->dpy_text_column, columns); + mcview_movement_fixups (view, FALSE); } @@ -209,18 +210,16 @@ mcview_move_right (WView * view, off_t columns) g_assert (columns == 1); if (view->hexview_in_text || view->hexedit_lownibble) - { if (view->hex_cursor < last_byte) view->hex_cursor++; - } + if (!view->hexview_in_text) if (old_cursor < last_byte || !view->hexedit_lownibble) view->hexedit_lownibble = !view->hexedit_lownibble; } else if (!view->mode_flags.wrap) - { view->dpy_text_column += columns; - } + mcview_movement_fixups (view, FALSE); } @@ -258,12 +257,10 @@ mcview_moveto_bottom (WView * view) } else { - const off_t datalines = view->data_area.height; - view->dpy_start = filesize; view->dpy_paragraph_skip_lines = 0; view->dpy_wrap_dirty = TRUE; - mcview_move_up (view, datalines); + mcview_move_up (view, view->data_area.lines); } } @@ -272,15 +269,14 @@ mcview_moveto_bottom (WView * view) void mcview_moveto_bol (WView * view) { - if (view->mode_flags.hex) + if (!view->mode_flags.hex) + mcview_ascii_moveto_bol (view); + else { view->hex_cursor -= view->hex_cursor % view->bytes_per_line; view->dpy_text_column = 0; } - else - { - mcview_ascii_moveto_bol (view); - } + mcview_movement_fixups (view, TRUE); } @@ -291,25 +287,23 @@ mcview_moveto_eol (WView * view) { off_t bol; - if (view->mode_flags.hex) + if (!view->mode_flags.hex) + mcview_ascii_moveto_eol (view); + else { off_t filesize; bol = mcview_offset_rounddown (view->hex_cursor, view->bytes_per_line); - if (mcview_get_byte_indexed (view, bol, view->bytes_per_line - 1, NULL) == TRUE) - { + + if (mcview_get_byte_indexed (view, bol, view->bytes_per_line - 1, NULL)) view->hex_cursor = bol + view->bytes_per_line - 1; - } else { filesize = mcview_get_filesize (view); view->hex_cursor = DOZ (filesize, 1); } } - else - { - mcview_ascii_moveto_eol (view); - } + mcview_movement_fixups (view, FALSE); } @@ -331,6 +325,7 @@ mcview_moveto_offset (WView * view, off_t offset) view->dpy_paragraph_skip_lines = 0; view->dpy_wrap_dirty = TRUE; } + mcview_movement_fixups (view, TRUE); } @@ -378,12 +373,13 @@ mcview_offset_to_coord (WView * view, off_t * ret_line, off_t * ret_column, off_ void mcview_place_cursor (WView * view) { - const screen_dimen top = view->data_area.top; - const screen_dimen left = view->data_area.left; - screen_dimen col = view->cursor_col; + const WRect *r = &view->data_area; + int col = view->cursor_col; + if (!view->hexview_in_text && view->hexedit_lownibble) col++; - widget_gotoyx (view, top + view->cursor_row, left + col); + + widget_gotoyx (view, r->y + view->cursor_row, r->x + col); } /* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/src/viewer/search.c b/mcsrc/src/viewer/search.c index 4c62f20d..fae26cf4 100644 --- a/mcsrc/src/viewer/search.c +++ b/mcsrc/src/viewer/search.c @@ -14,7 +14,7 @@ Pavel Machek, 1998 Roland Illig , 2004, 2005 Slava Zanko , 2009 - Andrew Borodin , 2009, 2013 + Andrew Borodin , 2009-2022 Ilia Maslakov , 2009 This file is part of the Midnight Commander. @@ -97,12 +97,15 @@ mcview_search_status_update_cb (status_msg_t * sm) if (vsm->first) { - int wd_width; Widget *lw = WIDGET (ssm->label); - - wd_width = MAX (wd->cols, lw->cols + 6); - widget_set_size (wd, wd->y, wd->x, wd->lines, wd_width); - widget_set_size (lw, lw->y, wd->x + (wd->cols - lw->cols) / 2, lw->lines, lw->cols); + WRect r; + + r = wd->rect; + r.cols = MAX (r.cols, lw->rect.cols + 6); + widget_set_size_rect (wd, &r); + r = lw->rect; + r.x = wd->rect.x + (wd->rect.cols - r.cols) / 2; + widget_set_size_rect (lw, &r); vsm->first = FALSE; } @@ -152,9 +155,9 @@ mcview_find (mcview_search_status_msg_t * ssm, off_t search_start, off_t search_ view->search_nroff_seq->index = search_start; mcview_nroff_seq_info (view->search_nroff_seq); - if (search_end > search_start + (off_t) view->search->original_len + if (search_end > search_start + (off_t) view->search->original.str->len && mc_search_is_fixed_search_str (view->search)) - search_end = search_start + view->search->original_len; + search_end = search_start + view->search->original.str->len; ok = mc_search_run (view->search, (void *) ssm, search_start, search_end, len); if (ok && view->search->normal_offset == search_start) @@ -406,7 +409,7 @@ mcview_do_search (WView * view, off_t want_search_start) if (view->growbuf_in_use) growbufsize = mcview_growbuf_filesize (view); else - growbufsize = view->search->original_len; + growbufsize = view->search->original.str->len; if (mcview_find (&vsm, search_start, mcview_get_filesize (view), &match_len)) { @@ -422,7 +425,7 @@ mcview_do_search (WView * view, off_t want_search_start) if (view->search->error != MC_SEARCH_E_NOTFOUND) break; - search_start = growbufsize - view->search->original_len; + search_start = growbufsize - view->search->original.str->len; } while (search_start > 0 && mcview_may_still_grow (view)); diff --git a/mcsrc/tests/lib/mcconfig/user_configs_path.c b/mcsrc/tests/lib/mcconfig/user_configs_path.c index 899b33d4..d86981ab 100644 --- a/mcsrc/tests/lib/mcconfig/user_configs_path.c +++ b/mcsrc/tests/lib/mcconfig/user_configs_path.c @@ -97,8 +97,8 @@ static const struct test_user_config_paths_ds MC_USERMENU_FILE }, { /* 5. */ - CONF_MAIN, - EDIT_HOME_SYNTAX_FILE + CONF_DATA, + EDIT_SYNTAX_FILE }, { /* 6. */ CONF_MAIN, @@ -110,7 +110,7 @@ static const struct test_user_config_paths_ds }, { /* 8. */ CONF_MAIN, - MC_FILEBIND_FILE + MC_EXT_FILE }, { /* 9. */ CONF_DATA, diff --git a/mcsrc/tests/lib/strutil/filevercmp.c b/mcsrc/tests/lib/strutil/filevercmp.c index a8a368a8..c33a4bc0 100644 --- a/mcsrc/tests/lib/strutil/filevercmp.c +++ b/mcsrc/tests/lib/strutil/filevercmp.c @@ -139,6 +139,8 @@ static const char *filevercmp_test_ds2[] = { "", ".", "..", + ".0", + ".9", ".A", ".Z", ".a~", @@ -149,8 +151,6 @@ static const char *filevercmp_test_ds2[] = { ".zz~", ".zz", ".zz.~1~", - ".0", - ".9", ".zz.0", ".\1", ".\1.txt", @@ -353,17 +353,17 @@ const size_t filevercmp_test_ds5_len = G_N_ELEMENTS (filevercmp_test_ds5); START_TEST (filevercmp_test5) /* *INDENT-ON* */ { - size_t _i; + size_t ii; - for (_i = 0; _i < filevercmp_test_ds5_len; _i++) - for (; filevercmp_test_ds5[_i] != NULL; _i++) + for (ii = 0; ii < filevercmp_test_ds5_len; ii++) + for (; filevercmp_test_ds5[ii] != NULL; ii++) { - const char *i = filevercmp_test_ds5[_i]; - size_t _j; + const char *i = filevercmp_test_ds5[ii]; + size_t jj; - for (_j = _i; filevercmp_test_ds5[_j] != NULL; _j++) + for (jj = ii; filevercmp_test_ds5[jj] != NULL; jj++) { - const char *j = filevercmp_test_ds5[_j]; + const char *j = filevercmp_test_ds5[jj]; ck_assert_int_eq (test_filevercmp (i, j), 0); ck_assert_int_eq (test_filevercmp (j, i), 0); diff --git a/mcsrc/tests/lib/widget/complete_engine.c b/mcsrc/tests/lib/widget/complete_engine.c index 743b98aa..9a3e8e16 100644 --- a/mcsrc/tests/lib/widget/complete_engine.c +++ b/mcsrc/tests/lib/widget/complete_engine.c @@ -198,10 +198,8 @@ START_PARAMETRIZED_TEST (test_complete_engine_fill_completions, /* given */ WInput *w_input; - w_input = g_new (WInput, 1); - w_input->buffer = g_strdup (data->input_buffer); + w_input = input_new (1, 1, NULL, 100, data->input_buffer, NULL, data->input_completion_flags); w_input->point = data->input_point; - w_input->completion_flags = data->input_completion_flags; /* when */ complete_engine_fill_completions (w_input); diff --git a/mcsrc/tests/lib/widget/group_init_destroy.c b/mcsrc/tests/lib/widget/group_init_destroy.c index 48c16d3a..9caad4e2 100644 --- a/mcsrc/tests/lib/widget/group_init_destroy.c +++ b/mcsrc/tests/lib/widget/group_init_destroy.c @@ -5,7 +5,7 @@ The Free Software Foundation, Inc. Written by: - Andrew Borodin , 2020 + Andrew Borodin , 2020-2022 This file is part of the Midnight Commander. @@ -85,36 +85,45 @@ START_TEST (test_group_init_deinit) { WGroup *g, *g0; Widget *w0; + WRect r; g = g_new0 (WGroup, 1); - group_init (g, 0, 0, 20, 20, group_callback, NULL); + rect_init (&r, 0, 0, 20, 20); + group_init (g, &r, group_callback, NULL); g0 = g_new0 (WGroup, 1); - group_init (g0, 0, 0, 10, 10, group_callback, NULL); + rect_init (&r, 0, 0, 10, 10); + group_init (g0, &r, group_callback, NULL); group_add_widget (g, g0); w0 = g_new0 (Widget, 1); - widget_init (w0, 0, 0, 5, 5, widget_callback, NULL); + rect_init (&r, 0, 0, 5, 5); + widget_init (w0, &r, widget_callback, NULL); group_add_widget (g0, w0); w0 = g_new0 (Widget, 1); - widget_init (w0, 5, 5, 5, 5, widget_callback, NULL); + rect_init (&r, 5, 5, 5, 5); + widget_init (w0, &r, widget_callback, NULL); group_add_widget (g0, w0); g0 = g_new0 (WGroup, 1); - group_init (g0, 10, 10, 10, 10, group_callback, NULL); + rect_init (&r, 10, 10, 10, 10); + group_init (g0, &r, group_callback, NULL); group_add_widget (g, g0); w0 = g_new0 (Widget, 1); - widget_init (w0, 10, 10, 5, 5, widget_callback, NULL); + rect_init (&r, 10, 10, 5, 5); + widget_init (w0, &r, widget_callback, NULL); group_add_widget (g0, w0); w0 = g_new0 (Widget, 1); - widget_init (w0, 15, 15, 5, 5, widget_callback, NULL); + rect_init (&r, 15, 15, 5, 5); + widget_init (w0, &r, widget_callback, NULL); group_add_widget (g0, w0); w0 = g_new0 (Widget, 1); - widget_init (w0, 5, 5, 10, 10, widget_callback, NULL); + rect_init (&r, 5, 5, 10, 10); + widget_init (w0, &r, widget_callback, NULL); group_add_widget (g, w0); ck_assert_msg (w0->id == 7, "last id (%d) != 7", ref); diff --git a/mcsrc/tests/lib/widget/widget_find_by_id.c b/mcsrc/tests/lib/widget/widget_find_by_id.c index b745c3d6..9f643266 100644 --- a/mcsrc/tests/lib/widget/widget_find_by_id.c +++ b/mcsrc/tests/lib/widget/widget_find_by_id.c @@ -5,7 +5,7 @@ The Free Software Foundation, Inc. Written by: - Andrew Borodin , 2020 + Andrew Borodin , 2020-2022 This file is part of the Midnight Commander. @@ -41,36 +41,45 @@ START_TEST (test_widget_find_by_id) { WGroup *g, *g0; Widget *w0; + WRect r; g = g_new0 (WGroup, 1); - group_init (g, 0, 0, 20, 20, NULL, NULL); /* ID = 0 */ + rect_init (&r, 0, 0, 20, 20); + group_init (g, &r, NULL, NULL); /* ID = 0 */ g0 = g_new0 (WGroup, 1); - group_init (g0, 0, 0, 10, 10, NULL, NULL); /* ID = 1 */ + rect_init (&r, 0, 0, 10, 10); + group_init (g0, &r, NULL, NULL); /* ID = 1 */ group_add_widget (g, g0); w0 = g_new0 (Widget, 1); - widget_init (w0, 0, 0, 5, 5, widget_default_callback, NULL); /* ID = 2 */ + rect_init (&r, 0, 0, 5, 5); + widget_init (w0, &r, widget_default_callback, NULL); /* ID = 2 */ group_add_widget (g0, w0); w0 = g_new0 (Widget, 1); - widget_init (w0, 5, 5, 5, 5, widget_default_callback, NULL); /* ID = 3 */ + rect_init (&r, 5, 5, 5, 5); + widget_init (w0, &r, widget_default_callback, NULL); /* ID = 3 */ group_add_widget (g0, w0); g0 = g_new0 (WGroup, 1); - group_init (g0, 10, 10, 10, 10, NULL, NULL); /* ID = 4 */ + rect_init (&r, 10, 10, 10, 10); + group_init (g0, &r, NULL, NULL); /* ID = 4 */ group_add_widget (g, g0); w0 = g_new0 (Widget, 1); - widget_init (w0, 10, 10, 5, 5, widget_default_callback, NULL); /* ID = 5 */ + rect_init (&r, 10, 10, 5, 5); + widget_init (w0, &r, widget_default_callback, NULL); /* ID = 5 */ group_add_widget (g0, w0); w0 = g_new0 (Widget, 1); - widget_init (w0, 15, 15, 5, 5, widget_default_callback, NULL); /* ID = 6 */ + rect_init (&r, 15, 15, 5, 5); + widget_init (w0, &r, widget_default_callback, NULL); /* ID = 6 */ group_add_widget (g0, w0); w0 = g_new0 (Widget, 1); - widget_init (w0, 5, 5, 10, 10, widget_default_callback, NULL); /* ID = 7 */ + rect_init (&r, 5, 5, 10, 10); + widget_init (w0, &r, widget_default_callback, NULL); /* ID = 7 */ group_add_widget (g, w0); w0 = WIDGET (g); diff --git a/mcsrc/tests/lib/widget/widget_make_global_local.c b/mcsrc/tests/lib/widget/widget_make_global_local.c index aad8e2d3..9c24bf0c 100644 --- a/mcsrc/tests/lib/widget/widget_make_global_local.c +++ b/mcsrc/tests/lib/widget/widget_make_global_local.c @@ -5,7 +5,7 @@ The Free Software Foundation, Inc. Written by: - Andrew Borodin , 2021 + Andrew Borodin , 2021-2022 This file is part of the Midnight Commander. @@ -39,35 +39,42 @@ START_TEST (test_widget_make_global_local) /* *INDENT-ON* */ { + WRect r; WGroup *g0, *g1, *g2; Widget *w0, *w1, *w2; /* top level group */ g0 = g_new0 (WGroup, 1); - group_init (g0, 20, 20, 40, 40, NULL, NULL); + rect_init (&r, 20, 20, 40, 40); + group_init (g0, &r, NULL, NULL); /* g0 child */ w0 = g_new0 (Widget, 1); - widget_init (w0, 1, 1, 5, 5, widget_default_callback, NULL); + rect_init (&r, 1, 1, 5, 5); + widget_init (w0, &r, widget_default_callback, NULL); group_add_widget (g0, w0); /* g0 child */ g1 = g_new0 (WGroup, 1); - group_init (g1, 5, 5, 30, 30, NULL, NULL); + rect_init (&r, 5, 5, 30, 30); + group_init (g1, &r, NULL, NULL); /* g1 child */ w1 = g_new0 (Widget, 1); - widget_init (w1, 5, 5, 10, 10, widget_default_callback, NULL); + rect_init (&r, 5, 5, 10, 10); + widget_init (w1, &r, widget_default_callback, NULL); group_add_widget (g1, w1); /* g1 child */ g2 = g_new0 (WGroup, 1); - group_init (g2, 15, 15, 20, 20, NULL, NULL); + rect_init (&r, 15, 15, 20, 20); + group_init (g2, &r, NULL, NULL); group_add_widget (g1, g2); /* g2 child */ w2 = g_new0 (Widget, 1); - widget_init (w2, 15, 15, 5, 5, widget_default_callback, NULL); + rect_init (&r, 15, 15, 5, 5); + widget_init (w2, &r, widget_default_callback, NULL); group_add_widget (g2, w2); /* g0 child */ @@ -75,41 +82,41 @@ START_TEST (test_widget_make_global_local) /* test global coordinates */ /* w0 is a member of g0 */ - ck_assert_int_eq (w0->y, 21); - ck_assert_int_eq (w0->x, 21); + ck_assert_int_eq (w0->rect.y, 21); + ck_assert_int_eq (w0->rect.x, 21); /* g1 is a member of g0 */ - ck_assert_int_eq (WIDGET (g1)->y, 25); - ck_assert_int_eq (WIDGET (g1)->x, 25); + ck_assert_int_eq (WIDGET (g1)->rect.y, 25); + ck_assert_int_eq (WIDGET (g1)->rect.x, 25); /* w1 is a member of g1 */ - ck_assert_int_eq (w1->y, 30); - ck_assert_int_eq (w1->x, 30); + ck_assert_int_eq (w1->rect.y, 30); + ck_assert_int_eq (w1->rect.x, 30); /* g2 is a member of g1 */ - ck_assert_int_eq (WIDGET (g2)->y, 40); - ck_assert_int_eq (WIDGET (g2)->x, 40); + ck_assert_int_eq (WIDGET (g2)->rect.y, 40); + ck_assert_int_eq (WIDGET (g2)->rect.x, 40); /* w2 is a member of g2 */ - ck_assert_int_eq (w2->y, 55); - ck_assert_int_eq (w2->x, 55); + ck_assert_int_eq (w2->rect.y, 55); + ck_assert_int_eq (w2->rect.x, 55); group_remove_widget (w0); group_remove_widget (g1); /* test local coordinates */ /* w0 is not a member of g0 */ - ck_assert_int_eq (w0->y, 1); - ck_assert_int_eq (w0->x, 1); + ck_assert_int_eq (w0->rect.y, 1); + ck_assert_int_eq (w0->rect.x, 1); /* g1 is not a member of g0 */ - ck_assert_int_eq (WIDGET (g1)->y, 5); - ck_assert_int_eq (WIDGET (g1)->x, 5); + ck_assert_int_eq (WIDGET (g1)->rect.y, 5); + ck_assert_int_eq (WIDGET (g1)->rect.x, 5); /* w1 is a member of g1 */ - ck_assert_int_eq (w1->y, 10); - ck_assert_int_eq (w1->x, 10); + ck_assert_int_eq (w1->rect.y, 10); + ck_assert_int_eq (w1->rect.x, 10); /* g2 is not a member of g1 */ - ck_assert_int_eq (WIDGET (g2)->y, 20); - ck_assert_int_eq (WIDGET (g2)->x, 20); + ck_assert_int_eq (WIDGET (g2)->rect.y, 20); + ck_assert_int_eq (WIDGET (g2)->rect.x, 20); /* w2 is a member of g2 */ - ck_assert_int_eq (w2->y, 35); - ck_assert_int_eq (w2->x, 35); + ck_assert_int_eq (w2->rect.y, 35); + ck_assert_int_eq (w2->rect.x, 35); widget_destroy (w0); widget_destroy (WIDGET (g1)); diff --git a/mcsrc/tests/src/editor/edit_complete_word_cmd.c b/mcsrc/tests/src/editor/edit_complete_word_cmd.c index a402ca68..e6159b65 100644 --- a/mcsrc/tests/src/editor/edit_complete_word_cmd.c +++ b/mcsrc/tests/src/editor/edit_complete_word_cmd.c @@ -6,7 +6,7 @@ Written by: Slava Zanko , 2013 - Andrew Borodin , 2021 + Andrew Borodin , 2021-2022 This file is part of the Midnight Commander. @@ -151,6 +151,8 @@ edit_completion_dialog_show__deinit (void) static void my_setup (void) { + WRect r; + str_init_strings (NULL); vfs_init (); @@ -168,7 +170,8 @@ my_setup (void) option_filesize_threshold = (char *) "64M"; - test_edit = edit_init (NULL, 0, 0, 24, 80, vfs_path_from_str ("test-data.txt"), 1); + rect_init (&r, 0, 0, 24, 80); + test_edit = edit_init (NULL, &r, vfs_path_from_str ("test-data.txt"), 1); memset (&owner, 0, sizeof (owner)); group_add_widget (&owner, WIDGET (test_edit)); edit_completion_dialog_show__init (); diff --git a/mcsrc/tests/src/editor/editcmd__edit_complete_word_cmd.c b/mcsrc/tests/src/editor/editcmd__edit_complete_word_cmd.c deleted file mode 100644 index 85f430cf..00000000 --- a/mcsrc/tests/src/editor/editcmd__edit_complete_word_cmd.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - src/editor - tests for edit_complete_word_cmd() function - - Copyright (C) 2013-2020 - Free Software Foundation, Inc. - - Written by: - Slava Zanko , 2013 - - This file is part of the Midnight Commander. - - The Midnight Commander is free software: you can redistribute it - and/or modify it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the License, - or (at your option) any later version. - - The Midnight Commander is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - */ - -#define TEST_SUITE_NAME "/src/editor" - -#include "tests/mctest.h" - -#include - -#include "lib/timer.h" -#ifdef HAVE_CHARSET -#include "lib/charsets.h" -#endif -#include "lib/strutil.h" - -#include "src/vfs/local/local.c" -#ifdef HAVE_CHARSET -#include "src/selcodepage.h" -#endif -#include "src/editor/editwidget.h" -#include "src/editor/editcmd_dialogs.h" - - -static WEdit *test_edit; - -/* --------------------------------------------------------------------------------------------- */ -/* @Mock */ -void -mc_refresh (void) -{ -} - -/* --------------------------------------------------------------------------------------------- */ -/* @Mock */ -void -edit_load_syntax (WEdit * _edit, GPtrArray * _pnames, const char *_type) -{ - (void) _edit; - (void) _pnames; - (void) _type; -} - -/* --------------------------------------------------------------------------------------------- */ - -/* @Mock */ -int -edit_get_syntax_color (WEdit * _edit, off_t _byte_index) -{ - (void) _edit; - (void) _byte_index; - - return 0; -} - -/* --------------------------------------------------------------------------------------------- */ - -/* @Mock */ -gboolean -edit_load_macro_cmd (WEdit * _edit) -{ - (void) _edit; - - return FALSE; -} - -/* --------------------------------------------------------------------------------------------- */ - -/* @CapturedValue */ -static const WEdit *editcmd_dialog_completion_show__edit; -/* @CapturedValue */ -static int editcmd_dialog_completion_show__max_len; -/* @CapturedValue */ -static GString **editcmd_dialog_completion_show__compl; -/* @CapturedValue */ -static int editcmd_dialog_completion_show__num_compl; - -/* @ThenReturnValue */ -static char *editcmd_dialog_completion_show__return_value; - -/* @Mock */ -char * -editcmd_dialog_completion_show (const WEdit * edit, int max_len, GString ** compl, int num_compl) -{ - - editcmd_dialog_completion_show__edit = edit; - editcmd_dialog_completion_show__max_len = max_len; - editcmd_dialog_completion_show__num_compl = num_compl; - - { - int iterator; - - editcmd_dialog_completion_show__compl = g_new0 (GString *, num_compl); - - for (iterator = 0; iterator < editcmd_dialog_completion_show__num_compl; iterator++) - editcmd_dialog_completion_show__compl[iterator] = - g_string_new_len (compl[iterator]->str, compl[iterator]->len); - } - - return editcmd_dialog_completion_show__return_value; -} - -static void -editcmd_dialog_completion_show__init (void) -{ - editcmd_dialog_completion_show__edit = NULL; - editcmd_dialog_completion_show__max_len = 0; - editcmd_dialog_completion_show__compl = NULL; - editcmd_dialog_completion_show__num_compl = 0; - editcmd_dialog_completion_show__return_value = NULL; -} - -static void -editcmd_dialog_completion_show__deinit (void) -{ - if (editcmd_dialog_completion_show__compl != NULL) - { - int iterator; - - for (iterator = 0; iterator < editcmd_dialog_completion_show__num_compl; iterator++) - g_string_free (editcmd_dialog_completion_show__compl[iterator], TRUE); - - g_free (editcmd_dialog_completion_show__compl); - } -} - - -/* --------------------------------------------------------------------------------------------- */ - -/* @Before */ -static void -my_setup (void) -{ - mc_global.timer = mc_timer_new (); - str_init_strings (NULL); - - vfs_init (); - vfs_init_localfs (); - vfs_setup_work_dir (); - -#ifdef HAVE_CHARSET - mc_global.sysconfig_dir = (char *) TEST_SHARE_DIR; - load_codepages_list (); -#endif /* HAVE_CHARSET */ - - option_filesize_threshold = (char *) "64M"; - - test_edit = edit_init (NULL, 0, 0, 24, 80, vfs_path_from_str ("test-data.txt"), 1); - editcmd_dialog_completion_show__init (); -} - -/* --------------------------------------------------------------------------------------------- */ - -/* @After */ -static void -my_teardown (void) -{ - editcmd_dialog_completion_show__deinit (); - edit_clean (test_edit); - g_free (test_edit); - -#ifdef HAVE_CHARSET - free_codepages_list (); -#endif /* HAVE_CHARSET */ - - vfs_shut (); - - str_uninit_strings (); - mc_timer_destroy (mc_global.timer); -} - -/* --------------------------------------------------------------------------------------------- */ - -#ifdef HAVE_CHARSET -/* @DataSource("test_autocomplete_ds") */ -/* *INDENT-OFF* */ -static const struct test_autocomplete_ds -{ - off_t input_position; - const char *input_system_code_page; - int input_source_codepage_id; - const char *input_editor_code_page; - int input_display_codepage_id; - const char *input_completed_word; - - int expected_max_len; - int expected_compl_word_count; - int input_completed_word_start_pos; - const char *expected_completed_word; -} test_autocomplete_ds[] = -{ - { /* 0. */ - 111, - "KOI8-R", - 0, - "UTF-8", - 1, - "Ñъйцукен", - - 16, - 2, - 107, - "Ñъйцукен" - }, - { /* 1. */ - 147, - "UTF-8", - 1, - "KOI8-R", - 0, - "ÜßÊÃÕËÅÎ", - - 8, - 2, - 145, - "ÜßÊÃÕËÅÎ" - }, -}; -/* *INDENT-ON* */ - -/* @Test(dataSource = "test_autocomplete_ds") */ -/* *INDENT-OFF* */ -START_PARAMETRIZED_TEST (test_autocomplete, test_autocomplete_ds) -/* *INDENT-ON* */ -{ - /* given */ - editcmd_dialog_completion_show__return_value = g_strdup (data->input_completed_word); - - - mc_global.source_codepage = data->input_source_codepage_id; - mc_global.display_codepage = data->input_display_codepage_id; - cp_source = data->input_editor_code_page; - cp_display = data->input_system_code_page; - - do_set_codepage (0); - edit_set_codeset (test_edit); - - /* when */ - edit_cursor_move (test_edit, data->input_position); - edit_complete_word_cmd (test_edit); - - /* then */ - mctest_assert_ptr_eq (editcmd_dialog_completion_show__edit, test_edit); - mctest_assert_int_eq (editcmd_dialog_completion_show__num_compl, - data->expected_compl_word_count); - mctest_assert_int_eq (editcmd_dialog_completion_show__max_len, data->expected_max_len); - - { - off_t i = 0; - GString *actual_completed_str; - - actual_completed_str = g_string_new (""); - - while (TRUE) - { - int chr; - - chr = - edit_buffer_get_byte (&test_edit->buffer, - data->input_completed_word_start_pos + i++); - if (isspace (chr)) - break; - g_string_append_c (actual_completed_str, chr); - } - mctest_assert_str_eq (actual_completed_str->str, data->expected_completed_word); - g_string_free (actual_completed_str, TRUE); - } -} -/* *INDENT-OFF* */ -END_PARAMETRIZED_TEST -/* *INDENT-ON* */ - -/* --------------------------------------------------------------------------------------------- */ - -/* @DataSource("test_autocomplete_single_ds") */ -/* *INDENT-OFF* */ -static const struct test_autocomplete_single_ds -{ - off_t input_position; - const char *input_system_code_page; - int input_source_codepage_id; - const char *input_editor_code_page; - int input_display_codepage_id; - - int input_completed_word_start_pos; - - const char *expected_completed_word; -} test_autocomplete_single_ds[] = -{ - { /* 0. */ - 155, - "UTF-8", - 1, - "KOI8-R", - 0, - - 154, - "ÆÙ×Á" - }, -}; -/* *INDENT-ON* */ - -/* @Test(dataSource = "test_autocomplete_single_ds") */ -/* *INDENT-OFF* */ -START_PARAMETRIZED_TEST (test_autocomplete_single, test_autocomplete_single_ds) -/* *INDENT-ON* */ -{ - /* given */ - mc_global.source_codepage = data->input_source_codepage_id; - mc_global.display_codepage = data->input_display_codepage_id; - cp_source = data->input_editor_code_page; - cp_display = data->input_system_code_page; - - do_set_codepage (0); - edit_set_codeset (test_edit); - - /* when */ - edit_cursor_move (test_edit, data->input_position); - edit_complete_word_cmd (test_edit); - - /* then */ - { - off_t i = 0; - GString *actual_completed_str; - - actual_completed_str = g_string_new (""); - - while (TRUE) - { - int chr; - - chr = - edit_buffer_get_byte (&test_edit->buffer, - data->input_completed_word_start_pos + i++); - if (isspace (chr)) - break; - g_string_append_c (actual_completed_str, chr); - } - mctest_assert_str_eq (actual_completed_str->str, data->expected_completed_word); - g_string_free (actual_completed_str, TRUE); - } -} -/* *INDENT-OFF* */ -END_PARAMETRIZED_TEST -/* *INDENT-ON* */ - - -#endif /* HAVE_CHARSET */ - -/* --------------------------------------------------------------------------------------------- */ - -int -main (void) -{ - int number_failed; - - Suite *s = suite_create (TEST_SUITE_NAME); - TCase *tc_core = tcase_create ("Core"); - SRunner *sr; - - tcase_add_checked_fixture (tc_core, my_setup, my_teardown); - - /* Add new tests here: *************** */ -#ifdef HAVE_CHARSET - mctest_add_parameterized_test (tc_core, test_autocomplete, test_autocomplete_ds); - mctest_add_parameterized_test (tc_core, test_autocomplete_single, test_autocomplete_single_ds); -#endif /* HAVE_CHARSET */ - /* *********************************** */ - - suite_add_tcase (s, tc_core); - sr = srunner_create (s); - srunner_set_log (sr, "edit_complete_word_cmd.log"); - srunner_run_all (sr, CK_ENV); - number_failed = srunner_ntests_failed (sr); - srunner_free (sr); - return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; -} - -/* --------------------------------------------------------------------------------------------- */ diff --git a/mcsrc/tests/src/vfs/extfs/helpers-list/data/lslR.README b/mcsrc/tests/src/vfs/extfs/helpers-list/data/lslR.README index 7f01b732..6b1f73bc 100644 --- a/mcsrc/tests/src/vfs/extfs/helpers-list/data/lslR.README +++ b/mcsrc/tests/src/vfs/extfs/helpers-list/data/lslR.README @@ -1,7 +1,7 @@ The inputs were taken from: - http://www.midnight-commander.org/ticket/1921 + https://www.midnight-commander.org/ticket/1921 These inputs are supposed to cover: diff --git a/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.env_vars b/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.env_vars deleted file mode 100644 index abdefccc..00000000 --- a/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.env_vars +++ /dev/null @@ -1 +0,0 @@ -MC_TEST_EXTFS_UNRAR_VERSION=5 diff --git a/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.input b/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.input deleted file mode 100644 index 5039076d..00000000 --- a/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.input +++ /dev/null @@ -1,102 +0,0 @@ - -UNRAR 5.30 beta 2 freeware Copyright (c) 1993-2015 Alexander Roshal - -Archive: archive.rar -Details: RAR 4 - - Name: .viminfo - Type: File - Size: 11032 - Packed size: 2468 - Ratio: 22% - mtime: 2016-11-23 07:10:39,000 - Attributes: -rw------- - CRC32: 295ED9AB - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: .wget-hsts - Type: File - Size: 205 - Packed size: 181 - Ratio: 88% - mtime: 2016-10-26 13:14:09,000 - Attributes: -rw-rw-r-- - CRC32: 58429CA4 - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: .xboardrc - Type: File - Size: 7527 - Packed size: 2964 - Ratio: 39% - mtime: 2016-04-17 01:21:46,000 - Attributes: -rw-rw-r-- - CRC32: 1DA6AD04 - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: .xchm - Type: File - Size: 559 - Packed size: 382 - Ratio: 68% - mtime: 2016-09-29 01:08:46,000 - Attributes: -rw-rw-r-- - CRC32: 73DBF2B9 - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: .xinputrc - Type: File - Size: 130 - Packed size: 123 - Ratio: 94% - mtime: 2015-12-27 17:08:35,000 - Attributes: -rw-rw-r-- - CRC32: 70CD8EF3 - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: .dosbox/dosbox-0.74.conf - Type: File - Size: 10730 - Packed size: 4005 - Ratio: 37% - mtime: 2016-06-07 20:43:58,000 - Attributes: -rw-rw-r-- - CRC32: 1D5A9AA6 - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: log.txt - Type: File - Size: 5869937 - Packed size: 42114 - Ratio: 0% - mtime: 2016-11-23 07:43:18,000 - Attributes: -rw-rw-r-- - CRC32: E63DE4A6 - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: filename with spaces.txt - Type: File - Size: 6 - Packed size: 16 - Ratio: 266% - mtime: 2016-11-23 07:39:15,000 - Attributes: -rw-r--r-- - CRC32: 363A3020 - Host OS: Unix - Compression: RAR 3.0(v29) -m3 -md=4M - - Name: .dosbox - Type: Directory - mtime: 2016-06-07 20:43:58,000 - Attributes: drwx------ - CRC32: 00000000 - Host OS: Unix - Compression: RAR 3.0(v20) -m0 -md=0K - diff --git a/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.output b/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.output deleted file mode 100644 index 5a162621..00000000 --- a/mcsrc/tests/src/vfs/extfs/helpers-list/data/urar.v5.output +++ /dev/null @@ -1,9 +0,0 @@ -drwx------ 1 <> <> 0 2016-06-07 20:43:00 .dosbox --rw-rw-r-- 1 <> <> 10730 2016-06-07 20:43:00 .dosbox/dosbox-0.74.conf --rw------- 1 <> <> 11032 2016-11-23 07:10:00 .viminfo --rw-rw-r-- 1 <> <> 205 2016-10-26 13:14:00 .wget-hsts --rw-rw-r-- 1 <> <> 7527 2016-04-17 01:21:00 .xboardrc --rw-rw-r-- 1 <> <> 559 2016-09-29 01:08:00 .xchm --rw-rw-r-- 1 <> <> 130 2015-12-27 17:08:00 .xinputrc --rw-r--r-- 1 <> <> 6 2016-11-23 07:39:00 filename with spaces.txt --rw-rw-r-- 1 <> <> 5869937 2016-11-23 07:43:00 log.txt diff --git a/mcsrc/tests/src/vfs/extfs/helpers-list/data/uzoo.README b/mcsrc/tests/src/vfs/extfs/helpers-list/data/uzoo.README index ea3077a7..4c210062 100644 --- a/mcsrc/tests/src/vfs/extfs/helpers-list/data/uzoo.README +++ b/mcsrc/tests/src/vfs/extfs/helpers-list/data/uzoo.README @@ -1,7 +1,7 @@ The input file was created by running "zoo lq" on the archive at: - http://www.midnight-commander.org/ticket/3696 + https://www.midnight-commander.org/ticket/3696 Known bugs in our uzoo: - It doesn't support filenames with spaces. diff --git a/mcwin32/Makefile.in b/mcwin32/Makefile.in index 975dfa5b..7fc4aa5b 100644 --- a/mcwin32/Makefile.in +++ b/mcwin32/Makefile.in @@ -1,7 +1,7 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- # Midnight command WIN32 builds 4.8.28 # -# Copyright (c) 2007, 2012 - 2022 Adam Young. +# Copyright (c) 2007, 2012 - 2023 Adam Young. # # This file is part of the Midnight Commander. # @@ -37,7 +37,7 @@ PKG_TARNAME = @PACKAGE_TARNAME@ PKG_URL = @PACKAGE_URL@ PKG_VERSION = @PACKAGE_VERSION@ ifeq ("","$(PKG_VERSION)") -PKG_VERSION = 4.8.28 +PKG_VERSION = 4.8.29 endif PKG_VERSION_1 =$(word 1,$(subst ., ,$(PKG_VERSION))) PKG_VERSION_2 =$(word 2,$(subst ., ,$(PKG_VERSION))) @@ -571,7 +571,7 @@ WIN32_DOC_SRC= ./doc CFG_ETC=\ $(D_ETC)/filehighlight.ini \ - $(D_ETC)/mc.ext \ + $(D_ETC)/mc.ext.ini \ $(D_ETC)/mc.keymap \ $(D_ETC)/mc.default.keymap \ $(D_ETC)/mc.emacs.keymap \ diff --git a/mcwin32/autoupdater/Makefile.in b/mcwin32/autoupdater/Makefile.in index 683287e2..0b0e560d 100644 --- a/mcwin32/autoupdater/Makefile.in +++ b/mcwin32/autoupdater/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.8 2022/06/09 16:46:04 cvsuser Exp $ +# $Id: Makefile.in,v 1.9 2023/01/31 17:08:48 cvsuser Exp $ # libautoupdater and utils makefile # # diff --git a/mcwin32/autoupdater/mcupdater.cpp b/mcwin32/autoupdater/mcupdater.cpp index 3b37b095..f3ec0868 100644 --- a/mcwin32/autoupdater/mcupdater.cpp +++ b/mcwin32/autoupdater/mcupdater.cpp @@ -1,4 +1,4 @@ -// $Id: mcupdater.cpp,v 1.6 2022/06/09 16:46:04 cvsuser Exp $ +// $Id: mcupdater.cpp,v 1.7 2023/01/31 17:08:48 cvsuser Exp $ // // Midnight Commander AutoUpdater command line. // diff --git a/mcwin32/autoupdater/updater.rc b/mcwin32/autoupdater/updater.rc index 8a49ec92..ab992c41 100644 --- a/mcwin32/autoupdater/updater.rc +++ b/mcwin32/autoupdater/updater.rc @@ -92,7 +92,7 @@ VS_VERSION_INFO VERSIONINFO VALUE "InternalName", "WIN32 Midnight Commander" VALUE "Copyright", - "Copyright (C) 2012-2022, Adam Young. All rights reserved. \n" + "Copyright (C) 2012-2023, Adam Young. All rights reserved. \n" "Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. \n" "Copyright (c) 2001-2019 Expat maintainers. \n" "This is free software; see the source for copying conditions. \n" diff --git a/mcwin32/buildinfo.pl b/mcwin32/buildinfo.pl index 9b06354e..e191241e 100644 --- a/mcwin32/buildinfo.pl +++ b/mcwin32/buildinfo.pl @@ -1,9 +1,9 @@ #!/usr/bin/perl -w # -*- mode: perl; -*- -# $Id: buildinfo.pl,v 1.8 2022/02/14 13:00:54 cvsuser Exp $ +# $Id: buildinfo.pl,v 1.9 2023/01/31 17:07:13 cvsuser Exp $ # buildinfo generation # -# Copyright Adam Young 2018-2022 +# Copyright Adam Young 2018-2023 # All rights reserved. # # The applications are free software: you can redistribute it diff --git a/mcwin32/doc/README.win32 b/mcwin32/doc/README.win32 index b41eafed..767d17f6 100644 --- a/mcwin32/doc/README.win32 +++ b/mcwin32/doc/README.win32 @@ -8,6 +8,8 @@ the current 4.8.x development stream. Version Latest Build + 4.8.29 228 (mc merge/bugfixes) + 4.8.28 227 (mc merge) 4.8.27 226 (#21 - FISH enabled) diff --git a/mcwin32/libmbedtls/.cvsignore b/mcwin32/libmbedtls/.cvsignore index 8bd53d40..c4cfdb82 100644 --- a/mcwin32/libmbedtls/.cvsignore +++ b/mcwin32/libmbedtls/.cvsignore @@ -1,6 +1,7 @@ mbedtls-2.13.0 mbedtls-2.16.6 mbedtls-2.27.0 +mbedtls-3.2.1 .unpacked.* Makefile *.err diff --git a/mcwin32/libmbedtls/.gitignore b/mcwin32/libmbedtls/.gitignore index 13f8fe02..a40fc4fd 100644 --- a/mcwin32/libmbedtls/.gitignore +++ b/mcwin32/libmbedtls/.gitignore @@ -1,6 +1,7 @@ mbedtls-2.13.0/ mbedtls-2.16.6*/ mbedtls-2.27.0*/ +mbedtls-3.2.1*/ .unpacked.* Makefile *.err diff --git a/mcwin32/libw32/sys/statfs.h b/mcwin32/libw32/sys/statfs.h index 2b2b0db3..84c28374 100644 --- a/mcwin32/libw32/sys/statfs.h +++ b/mcwin32/libw32/sys/statfs.h @@ -1,7 +1,7 @@ #ifndef LIBW32_SYS_STATFS_H_INCLUDED #define LIBW32_SYS_STATFS_H_INCLUDED #include -__CIDENT_RCSID(gr_libw32_sys_statfs_h,"$Id: statfs.h,v 1.8 2022/06/08 09:51:45 cvsuser Exp $") +__CIDENT_RCSID(gr_libw32_sys_statfs_h,"$Id: statfs.h,v 1.9 2023/01/31 17:14:13 cvsuser Exp $") __CPRAGMA_ONCE /* -*- mode: c; indent-width: 4; -*- */ diff --git a/mcwin32/libw32/sys/statvfs.h b/mcwin32/libw32/sys/statvfs.h index 9a107d34..588b6751 100644 --- a/mcwin32/libw32/sys/statvfs.h +++ b/mcwin32/libw32/sys/statvfs.h @@ -1,7 +1,7 @@ #ifndef LIBW32_SYS_STATVFS_H #define LIBW32_SYS_STATVFS_H #include -__CIDENT_RCSID(gr_libw32_sys_statvfs_h,"$Id: statvfs.h,v 1.7 2022/02/24 15:33:51 cvsuser Exp $") +__CIDENT_RCSID(gr_libw32_sys_statvfs_h,"$Id: statvfs.h,v 1.8 2023/01/31 17:14:13 cvsuser Exp $") __CPRAGMA_ONCE /* -*- mode: c; indent-width: 4; -*- */ diff --git a/mcwin32/libw32/sys/utypes.h b/mcwin32/libw32/sys/utypes.h index c3de9f32..e84e0119 100644 --- a/mcwin32/libw32/sys/utypes.h +++ b/mcwin32/libw32/sys/utypes.h @@ -1,7 +1,7 @@ #ifndef LIBW32_SYS_UTYPES_H_INCLUDED #define LIBW32_SYS_UTYPES_H_INCLUDED #include -__CIDENT_RCSID(gr_libw32_sys_utypes_h,"$Id: utypes.h,v 1.20 2022/06/14 02:19:59 cvsuser Exp $") +__CIDENT_RCSID(gr_libw32_sys_utypes_h,"$Id: utypes.h,v 1.21 2023/01/31 17:14:13 cvsuser Exp $") __CPRAGMA_ONCE /* -*- mode: c; indent-width: 4; -*- */ @@ -174,12 +174,24 @@ typedef unsigned short mode_t; #define mode_t mode_t #endif +#elif defined(__MINGW32__) +#if !defined(uid_t) && !defined(gid_t) +typedef int uid_t; +typedef int gid_t; +#endif +#if !defined(id_t) +typedef int id_t; /* used as a general identifier; can contain least a pid_t, uid_t, or gid_t. */ +#endif + +#endif /*_MSC_VER || __MINGW32__*/ + #if !defined(_FSBLKCNT_T_DEFINED) #define _FSBLKCNT_T_DEFINED #if !defined(fsblkcnt_t) typedef unsigned long fsblkcnt_t; #endif #endif + #if !defined(_FSFILCNT_T_DEFINED) #define _FSFILCNT_T_DEFINED #if !defined(fsfilcnt_t) @@ -187,17 +199,6 @@ typedef unsigned long fsfilcnt_t; #endif #endif -#elif defined(__MINGW32__) -#if !defined(uid_t) && !defined(gid_t) -typedef int uid_t; -typedef int gid_t; -#endif -#if !defined(id_t) -typedef int id_t; /* used as a general identifier; can contain least a pid_t, uid_t, or gid_t. */ -#endif - -#endif /*_MSC_VER || __MINGW32__*/ - #if !defined(HAVE_NLINK_T) #if !defined(__WATCOMC__) || \ (defined(__WATCOMC__) && (__WATCOMC__ < 1300 /*owc20*/)) diff --git a/mcwin32/libw32/sysexit.h b/mcwin32/libw32/sysexit.h new file mode 100644 index 00000000..9bf0b7ca --- /dev/null +++ b/mcwin32/libw32/sysexit.h @@ -0,0 +1,107 @@ +/* + * Copyright (c) 1987, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)sysexits.h 8.1 (Berkeley) 6/2/93 + */ +#ifndef _SYSEXITS_H +#define _SYSEXITS_H 1 +/* + * SYSEXITS.H -- Exit status codes for system programs. + * + * This include file attempts to categorize possible error + * exit statuses for system programs, notably delivermail + * and the Berkeley network. + * + * Error numbers begin at EX__BASE to reduce the possibility of + * clashing with other exit statuses that random programs may + * already return. The meaning of the codes is approximately + * as follows: + * + * EX_USAGE -- The command was used incorrectly, e.g., with + * the wrong number of arguments, a bad flag, a bad + * syntax in a parameter, or whatever. + * EX_DATAERR -- The input data was incorrect in some way. + * This should only be used for user's data & not + * system files. + * EX_NOINPUT -- An input file (not a system file) did not + * exist or was not readable. This could also include + * errors like "No message" to a mailer (if it cared + * to catch it). + * EX_NOUSER -- The user specified did not exist. This might + * be used for mail addresses or remote logins. + * EX_NOHOST -- The host specified did not exist. This is used + * in mail addresses or network requests. + * EX_UNAVAILABLE -- A service is unavailable. This can occur + * if a support program or file does not exist. This + * can also be used as a catchall message when something + * you wanted to do doesn't work, but you don't know + * why. + * EX_SOFTWARE -- An internal software error has been detected. + * This should be limited to non-operating system related + * errors as possible. + * EX_OSERR -- An operating system error has been detected. + * This is intended to be used for such things as "cannot + * fork", "cannot create pipe", or the like. It includes + * things like getuid returning a user that does not + * exist in the passwd file. + * EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp, + * etc.) does not exist, cannot be opened, or has some + * sort of error (e.g., syntax error). + * EX_CANTCREAT -- A (user specified) output file cannot be + * created. + * EX_IOERR -- An error occurred while doing I/O on some file. + * EX_TEMPFAIL -- temporary failure, indicating something that + * is not really an error. In sendmail, this means + * that a mailer (e.g.) could not create a connection, + * and the request should be reattempted later. + * EX_PROTOCOL -- the remote system returned something that + * was "not possible" during a protocol exchange. + * EX_NOPERM -- You did not have sufficient permission to + * perform the operation. This is not intended for + * file system problems, which should use NOINPUT or + * CANTCREAT, but rather for higher level permissions. + */ +#define EX_OK 0 /* successful termination */ +#define EX__BASE 64 /* base value for error messages */ +#define EX_USAGE 64 /* command line usage error */ +#define EX_DATAERR 65 /* data format error */ +#define EX_NOINPUT 66 /* cannot open input */ +#define EX_NOUSER 67 /* addressee unknown */ +#define EX_NOHOST 68 /* host name unknown */ +#define EX_UNAVAILABLE 69 /* service unavailable */ +#define EX_SOFTWARE 70 /* internal software error */ +#define EX_OSERR 71 /* system error (e.g., can't fork) */ +#define EX_OSFILE 72 /* critical OS file missing */ +#define EX_CANTCREAT 73 /* can't create (user) output file */ +#define EX_IOERR 74 /* input/output error */ +#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ +#define EX_PROTOCOL 76 /* remote error in protocol */ +#define EX_NOPERM 77 /* permission denied */ +#define EX_CONFIG 78 /* configuration error */ +#define EX__MAX 78 /* maximum listed value */ +#endif /* sysexits.h */ diff --git a/mcwin32/makelib.in b/mcwin32/makelib.in index 56a4b3c3..e4fef031 100644 --- a/mcwin32/makelib.in +++ b/mcwin32/makelib.in @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: makelib.in,v 1.11 2022/06/14 02:21:54 cvsuser Exp $ +# $Id: makelib.in,v 1.12 2023/01/31 17:07:13 cvsuser Exp $ # -*- mode: perl; tabs: 8; indent-width: 4; -*- # makelib configuration # @@ -31,7 +31,7 @@ $PACKAGE = 'mc'; $PACKAGE_NAME = 'Midnight Commander WIN32'; -$PACKAGE_VERSION= '4.8.28'; +$PACKAGE_VERSION= '4.8.29'; $PACKAGE_URL = 'https://github.com/adamyg/mcwin32'; diff --git a/mcwin32/makelib.pl b/mcwin32/makelib.pl index 048b95c2..652f0527 100644 --- a/mcwin32/makelib.pl +++ b/mcwin32/makelib.pl @@ -1,11 +1,11 @@ #!/usr/bin/perl -# $Id: makelib.pl,v 1.24 2022/06/09 13:16:09 cvsuser Exp $ +# $Id: makelib.pl,v 1.25 2023/01/31 17:07:13 cvsuser Exp $ # Makefile generation under WIN32 (MSVC/WATCOMC/MINGW) and DJGPP. # -*- perl; tabs: 8; indent-width: 4; -*- # Automake emulation for non-unix environments. # # -# Copyright (c) 1998 - 2022, Adam Young. +# Copyright (c) 1998 - 2023, Adam Young. # All rights reserved. # # The applications are free software: you can redistribute it diff --git a/mcwin32/mc.rc b/mcwin32/mc.rc index 5391d716..d8eb94db 100644 --- a/mcwin32/mc.rc +++ b/mcwin32/mc.rc @@ -78,8 +78,8 @@ VS_VERSION_INFO VERSIONINFO VALUE "InternalName", "WIN32 Midnight Commander" VALUE "LegalCopyright", - "Copyright (C) 2012 - 2022, Adam Young. All rights reserved. \n" - "Copyright (C) 1994 - 2020, Free Software Foundation, and others. \n" + "Copyright (C) 2012 - 2023, Adam Young. All rights reserved. \n" + "Copyright (C) 1994 - 2022, Free Software Foundation, and others. \n" "Copyright (C) 1990, 1993, The Regents of the University of California. \n" "Licensed under GNU General Public License version 3.0. \n" "This is free software; see the source for copying conditions. \n" diff --git a/mcwin32/src/win32_glib.c b/mcwin32/src/win32_glib.c index 6c187680..7c71f0ec 100644 --- a/mcwin32/src/win32_glib.c +++ b/mcwin32/src/win32_glib.c @@ -17,7 +17,7 @@ Copyright (C) 2012 The Free Software Foundation, Inc. - Written by: Adam Young 2012 - 2022 + Written by: Adam Young 2012 - 2023 This file is part of the Midnight Commander. diff --git a/mcwin32/src/win32_key.c b/mcwin32/src/win32_key.c index ef01c154..8efc5248 100644 --- a/mcwin32/src/win32_key.c +++ b/mcwin32/src/win32_key.c @@ -36,7 +36,7 @@ void enable_bracketed_paste (void); void disable_bracketed_paste (void); - Written by: Adam Young 2012 - 2022 + Written by: Adam Young 2012 - 2023 This file is part of the Midnight Commander. @@ -55,7 +55,9 @@ */ +#if !defined(_WIN32_WINNT) #define _WIN32_WINNT 0x500 +#endif #include #include "libw32.h" @@ -104,11 +106,7 @@ static int __TryEnterDebugger() #include "lib/tty/win.h" #include "src/args.h" /* mc_args__nomouse */ -#if (VERSION_3 >= 27) #include "src/filemanager/filemanager.h" /* left/right panel */ -#else -#include "src/filemanager/midnight.h" -#endif extern gboolean quit_cmd_internal (int quiet); extern gboolean confirm_exit; @@ -464,11 +462,7 @@ key_shell_mode (void) // cmd seems to explicitly clear when executing in-built commands, // whereas apps this may not be the case; clear for consistency. -#if (VERSION_3 >= 27) if (tty_use_256colors(NULL)) { /* enable VT100/ANSI */ -#else - if (tty_use_256colors()) { -#endif dwNewMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; } if (dwNewMode != dwMode) { @@ -1299,7 +1293,7 @@ key_mapwin32 (unsigned long dwCtrlKeyState, unsigned wVirtKeyCode, unsigned Asci if (-1 == ch && KEY_M_ALT == mod) { if (AsciiChar >= '0' && AsciiChar <= '9') { if (AsciiChar >= '1') { - ch = KEY_F(AsciiChar - '1'); /* F1..F9 */ + ch = KEY_F(AsciiChar - '0'); /* F1..F9 */ } else { ch = KEY_F(10); /* F10 */ } diff --git a/mcwin32/src/win32_pipe.c b/mcwin32/src/win32_pipe.c index 7ae9269c..be624889 100644 --- a/mcwin32/src/win32_pipe.c +++ b/mcwin32/src/win32_pipe.c @@ -6,7 +6,7 @@ mc_pread mc_pclose - Written by: Adam Young 2015 - 2022 + Written by: Adam Young 2015 - 2023 The Midnight Commander is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/mcwin32/src/win32_tty.c b/mcwin32/src/win32_tty.c index 7ef49bd9..9308957d 100644 --- a/mcwin32/src/win32_tty.c +++ b/mcwin32/src/win32_tty.c @@ -5,7 +5,7 @@ Copyright (C) 2012 The Free Software Foundation, Inc. - Written by: Adam Young 2012 - 2022 + Written by: Adam Young 2012 - 2023 This file is part of the Midnight Commander. @@ -65,11 +65,7 @@ tty_init (gboolean mouse_enable, gboolean is_xterm) } if (NULL == getenv("COLORTERM")) { -#if (VERSION_3 >= 27) if (tty_use_256colors(NULL)) { /* TODO: command line, max colors. */ -#else - if (tty_use_256colors()) { -#endif (void) putenv("COLORTERM=24bit"); /* allow true-color skins */ } else { (void) putenv("COLORTERM=16"); diff --git a/mcwin32/src/win32_utl.c b/mcwin32/src/win32_utl.c index c64d2826..1592afcf 100644 --- a/mcwin32/src/win32_utl.c +++ b/mcwin32/src/win32_utl.c @@ -21,7 +21,7 @@ Copyright (C) 2012 The Free Software Foundation, Inc. - Written by: Adam Young 2012 - 2022 + Written by: Adam Young 2012 - 2023 Portions sourced from lib/utilunix.c, see for additional information. @@ -1874,7 +1874,11 @@ current_drive(char *path) void +#if !defined(CANON_PATH_FLAGS) +canonicalize_pathname_custom(char *orgpath, canon_path_flags_t flags) // 4.8.29 +#else custom_canonicalize_pathname(char *orgpath, CANON_PATH_FLAGS flags) +#endif { const size_t url_delim_len = strlen (VFS_PATH_URL_DELIMITER); char *lpath = orgpath; /* path without leading UNC part */ @@ -1936,8 +1940,8 @@ custom_canonicalize_pathname(char *orgpath, CANON_PATH_FLAGS flags) if (IS_PATH_SEP (p[0]) && IS_PATH_SEP (p[1]) && (p == lpath || *(p - 1) != ':')) { s = p + 1; - while (IS_PATH_SEP (*(++s))) - ; + while (*s && IS_PATH_SEP(*s)) + ++s; str_move (p + 1, s); } @@ -2135,7 +2139,11 @@ custom_canonicalize_pathname(char *orgpath, CANON_PATH_FLAGS flags) void canonicalize_pathname(char *path) { +#if !defined(CANON_PATH_FLAGS) + canonicalize_pathname_custom (path, CANON_PATH_ALL); +#else custom_canonicalize_pathname (path, CANON_PATH_ALL); +#endif } diff --git a/mcwin32/src/win32_win.c b/mcwin32/src/win32_win.c index 4e5af29e..3cab3ac4 100644 --- a/mcwin32/src/win32_win.c +++ b/mcwin32/src/win32_win.c @@ -10,7 +10,7 @@ Copyright (C) 2012 The Free Software Foundation, Inc. - Written by: Adam Young 2012 - 2022 + Written by: Adam Young 2012 - 2023 This file is part of the Midnight Commander. From 9b44c330525b7c3b15f0831948c00a74dc116295 Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 1 Feb 2023 01:19:15 +0800 Subject: [PATCH 11/39] merge 4.8.29 --- mcwin32/src/drive.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/mcwin32/src/drive.c b/mcwin32/src/drive.c index d967c71f..262431d0 100644 --- a/mcwin32/src/drive.c +++ b/mcwin32/src/drive.c @@ -11,7 +11,7 @@ Copyright (C) 2012 The Free Software Foundation, Inc. - Written by: Adam Young 2012 - 2022 + Written by: Adam Young 2012 - 2023 This file is part of the Midnight Commander. @@ -52,11 +52,7 @@ #include "lib/keybind.h" /* CK_Cancel etc */ #include "src/filemanager/panel.h" #include "src/filemanager/cmd.h" /* reread_cmd() */ -#if (VERSION_3 >= 27) #include "src/filemanager/filemanager.h" /* left/right panel */ -#else -#include "src/filemanager/midnight.h" -#endif #include "drive.h" @@ -197,8 +193,8 @@ drive_sel(WPanel *panel) } y_pos = ((LINES - 6) / 2) - 3; - x_pos = panel->widget.x + /* center relative to panel */ - ((panel->widget.cols - + x_pos = panel->widget.rect.x + /* center relative to panel */ + ((panel->widget.rect.cols - ((totaldrives > D_PERLINE ? D_PERLINE : totaldrives) * D_BUTWIDTH)) / 2) + 2; do_refresh (); @@ -278,13 +274,9 @@ drive_sel(WPanel *panel) if (get_panel_type (is_right) != view_listing) { create_panel (is_right, view_listing); } -#if (VERSION_3 >= 27) panel_do_cd (panel, cwd_vdir, cd_exact); vfs_path_free (cwd_vdir, TRUE); -#else - do_cd (cwd_vdir, cd_exact); - vfs_path_free (cwd_vdir); -#endif + } else { message (D_ERROR, MSG_ERROR, _("Cannot change drive to \"%s\"\n%s"), t_path, unix_error_string (errno)); From 34d999b6dd13fe353a23df62c8c2c13f6f2a6f72 Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 1 Feb 2023 01:44:48 +0800 Subject: [PATCH 12/39] merge 4.8.29 --- mcwin32/libw32/{sysexit.h => sysexits.h} | 0 mcwin32/libw32/unistd.h | 6 +- mcwin32/libw32/w32_time.c | 50 +++++-- mcwin32/libw32/w32_uname.c | 174 +++++++++++++++++++---- mcwin32/libw32/w32_util.c | 12 +- mcwin32/libw32/w32config.hin | 4 +- mcwin32/libw32/win32_misc.h | 3 +- 7 files changed, 199 insertions(+), 50 deletions(-) rename mcwin32/libw32/{sysexit.h => sysexits.h} (100%) diff --git a/mcwin32/libw32/sysexit.h b/mcwin32/libw32/sysexits.h similarity index 100% rename from mcwin32/libw32/sysexit.h rename to mcwin32/libw32/sysexits.h diff --git a/mcwin32/libw32/unistd.h b/mcwin32/libw32/unistd.h index 835df41a..97a0c454 100644 --- a/mcwin32/libw32/unistd.h +++ b/mcwin32/libw32/unistd.h @@ -1,7 +1,7 @@ #ifndef LIBW32_UNISTD_H_INCLUDED #define LIBW32_UNISTD_H_INCLUDED #include -__CIDENT_RCSID(gr_libw32_unistd_h,"$Id: unistd.h,v 1.36 2022/06/14 02:19:58 cvsuser Exp $") +__CIDENT_RCSID(gr_libw32_unistd_h,"$Id: unistd.h,v 1.37 2023/01/31 17:44:09 cvsuser Exp $") __CPRAGMA_ONCE /* -*- mode: c; indent-width: 4; -*- */ @@ -41,8 +41,8 @@ __CPRAGMA_ONCE #if (_MSC_VER != 1900) /* MSVC 19/2015 */ #if (_MSC_VER < 1910 || _MSC_VER > 1916) /* MSVC 2017: 19.10 .. 16 */ #if (_MSC_VER > 1929) /* MSVC 2019: 19.20 .. 29 */ -#if (_MSC_VER > 1932) /* MSVC 2022: 19.30 .. 32 */ -#error unistd.h: untested MSVC Version (2005 -- 2019.32) +#if (_MSC_VER > 1934) /* MSVC 2022: 19.30 .. 34 */ +#error unistd.h: untested MSVC Version (2005 -- 2019.34) //see: https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B #endif //2022 #endif //2019 diff --git a/mcwin32/libw32/w32_time.c b/mcwin32/libw32/w32_time.c index d7a36c10..4fbea7f7 100644 --- a/mcwin32/libw32/w32_time.c +++ b/mcwin32/libw32/w32_time.c @@ -1,5 +1,5 @@ #include -__CIDENT_RCSID(gr_w32_time_c,"$Id: w32_time.c,v 1.14 2022/06/14 07:35:18 cvsuser Exp $") +__CIDENT_RCSID(gr_w32_time_c,"$Id: w32_time.c,v 1.15 2023/01/31 17:44:09 cvsuser Exp $") /* -*- mode: c; indent-width: 4; -*- */ /* @@ -204,12 +204,41 @@ extern int gettimeofday (struct timeval *p, void *z); #endif #else -static inline long long -filetime_to_hsec(const FILETIME *ft) +typedef void (WINAPI *GetSystemTimePreciseAsFileTime_t)(LPFILETIME lpSystemTimeAsFileTime); + +static unsigned long long +GetSystemTimeNS100(void) { - // Returns the 100-nanoseconds ("hecto-nanoseconds") since the epoch. - const long long hsecs = ((long long)ft->dwHighDateTime << 32) + ft->dwLowDateTime; - return hsecs - 116444736000000000LL; // delta 01/01/1970 and 01/01/1601 + static GetSystemTimePreciseAsFileTime_t fGetSystemTimePreciseAsFileTime = NULL; + FILETIME ft = {0}; + unsigned long long ns100; + + /* + * GetSystemTime(Precise)AsFileTime returns the number of 100-nanosecond intervals since January 1, 1601 (UTC). + * + * GetSystemTimeAsFileTime has a resolution of approximately the TimerResolution (~15.6ms) on Windows XP. + * On Windows 7 it appears to have sub-millisecond resolution. GetSystemTimePreciseAsFileTime (available on + * Windows 8) has sub-microsecond resolution. + */ + if (NULL == fGetSystemTimePreciseAsFileTime) { + HINSTANCE hinst; + + if (0 == (hinst = LoadLibraryA("Kernel32")) || + NULL == (fGetSystemTimePreciseAsFileTime = + (GetSystemTimePreciseAsFileTime_t)GetProcAddress(hinst, "GetSystemTimePreciseAsFileTime"))) { + fGetSystemTimePreciseAsFileTime = + (GetSystemTimePreciseAsFileTime_t)GetProcAddress(hinst, "GetSystemTimeAsFileTime"); /*fall-back*/ + } + } + + fGetSystemTimePreciseAsFileTime(&ft); + + ns100 = ft.dwHighDateTime; + ns100 <<= 32UL; + ns100 |= ft.dwLowDateTime; + ns100 -= 116444736000000000LL; /* 1601->1970 epoch */ + + return ns100; } #endif @@ -224,13 +253,10 @@ w32_gettimeofday(struct timeval *tv, struct timezone *tz) return gettimeofday(tv, tz); #else //DEFAULT - FILETIME ft; - long long hsec; + const unsigned long long ns100 = GetSystemTimeNS100(); - (void) GetSystemTimeAsFileTime(&ft); //UTC - hsec = filetime_to_hsec(&ft); - tv->tv_sec = (long)(hsec / 10000000); - tv->tv_usec = (hsec % 10000000) / 10; + tv->tv_sec = (long)(ns100 / 10000000); + tv->tv_usec = (ns100 % 10000000) / 10; #endif return 0; } diff --git a/mcwin32/libw32/w32_uname.c b/mcwin32/libw32/w32_uname.c index 5a5e61a9..a1b14b3b 100644 --- a/mcwin32/libw32/w32_uname.c +++ b/mcwin32/libw32/w32_uname.c @@ -1,5 +1,5 @@ #include -__CIDENT_RCSID(gr_w32_uname_c,"$Id: w32_uname.c,v 1.7 2022/03/16 13:47:00 cvsuser Exp $") +__CIDENT_RCSID(gr_w32_uname_c,"$Id: w32_uname.c,v 1.8 2023/01/31 17:44:09 cvsuser Exp $") /* -*- mode: c; indent-width: 4; -*- */ /* @@ -69,18 +69,40 @@ __CIDENT_RCSID(gr_w32_uname_c,"$Id: w32_uname.c,v 1.7 2022/03/16 13:47:00 cvsuse // // No errors are defined. */ + +typedef BOOL (WINAPI *RtlGetVersion_t)(LPOSVERSIONINFOEX); +typedef BOOL (WINAPI *IsWow64Process_t)(HANDLE, PBOOL); + +struct CurrentVersion { + char ProductName[32]; + char DisplayVersion[16]; + unsigned ubr; +}; + +static BOOL IsWow64(void); +static void RegCurrentVersion(struct CurrentVersion *cv); + +#if _UTSNAME_LENGTH <= 64 +#define ULENGTH (64 + 1) +#else +#define ULENGTH _UTSNAME_LENGTH +#endif + +static char u_sysname[ULENGTH]; +static char u_version[ULENGTH]; +static char u_release[ULENGTH]; +static char u_machine[ULENGTH]; + LIBW32_API int uname(struct utsname *u) { - static char u_sysname[32], u_version[16], u_release[32], u_machine[32]; - if (u_sysname[0] == '\0') { unsigned osmajor, osminor, osbuild; char osname_unknown[ 32 ]; const char * osname = "unknown", *cpu = "unknown"; DWORD dwVersion; - OSVERSIONINFO ovi; - OSVERSIONINFOEX oviex; + OSVERSIONINFO ovi = {0}; + OSVERSIONINFOEX oviex = {0}; SYSTEM_INFO si; ovi.dwOSVersionInfoSize = sizeof(ovi); @@ -88,7 +110,6 @@ uname(struct utsname *u) /* osmajor, osminor, osbuild */ if (FALSE == GetVersionEx(&ovi)) { - // TODO: replace with RtlGetVersion() as GetVersionEx() is now defunct; 8.1+ /* * Error ... try the old way */ @@ -147,6 +168,7 @@ uname(struct utsname *u) * The following table summarizes the most recent operating system version numbers. * * Operating system Version number + * Windows 11 10.0 (build >= 22000) * Windows 10 10.0 * Windows 8.1 6.3 * Windows 8 6.2 @@ -163,19 +185,39 @@ uname(struct utsname *u) */ if (ovi.dwMajorVersion < 5) { osname = "NT"; // NT 4 or 3.51 + } else { - if (FALSE == GetVersionEx ((OSVERSIONINFO *) &oviex)) { + RtlGetVersion_t fnRtlGetVersion = NULL; + + if (FALSE == GetVersionEx((OSVERSIONINFO *) &oviex)) { oviex.dwMajorVersion = 0; } - if (ovi.dwMajorVersion >= 10) { - osname = "Windows 10"; // Windows 10 + fnRtlGetVersion = (RtlGetVersion_t) GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion"); + if (fnRtlGetVersion) { // upgrade Version + BuildNumber + fnRtlGetVersion(&oviex); + } - if (oviex.dwMinorVersion > 0) { - osname = "Windows 10+"; + if (oviex.dwMajorVersion >= 10) { + osmajor = (unsigned)oviex.dwMajorVersion; + osminor = (unsigned)oviex.dwMinorVersion; + osbuild = (unsigned)oviex.dwBuildNumber; + + if (VER_NT_WORKSTATION == oviex.wProductType) { + osname = "Windows 10"; // Windows 10+ + if (osbuild >= 21996) { + // Windows 11 is an extension of Windows 10, + // it does not increment the major/minor version + osname = "Windows 11"; + } + } else { + osname = "Windows Server 2019"; + if (osbuild >= 20348) { + osname = "Windows Server 2022"; + } } - } else if (ovi.dwMajorVersion >= 6) { + } else if (oviex.dwMajorVersion >= 6) { osname = "Vista"; // vista or greater if (0 == oviex.dwMinorVersion) { // 6.0 @@ -342,12 +384,12 @@ uname(struct utsname *u) case PROCESSOR_ARCHITECTURE_INTEL: switch (si.wProcessorLevel) { - case 3: cpu = "i386"; break; - case 4: cpu = "i486"; break; - case 5: cpu = "i586"; break; - case 6: cpu = "i686"; break; + case 3: cpu = "i386"; break; + case 4: cpu = "i486"; break; + case 5: cpu = "i586"; break; + case 6: cpu = "i686"; break; case 7: - case 15: cpu = "i786"; break; + case 15: cpu = "i786"; break; default: cpu = "ix86"; } @@ -355,9 +397,9 @@ uname(struct utsname *u) case PROCESSOR_ARCHITECTURE_PPC: switch (si.wProcessorLevel) { - case 1: cpu = "PPC 601"; break; - case 3: cpu = "PPC 603"; break; - case 4: cpu = "PPC 604"; break; + case 1: cpu = "PPC 601"; break; + case 3: cpu = "PPC 603"; break; + case 4: cpu = "PPC 604"; break; case 6: cpu = "PPC 603+"; break; case 9: cpu = "PPC 604+"; break; case 20: cpu = "PPC 620"; break; @@ -407,19 +449,37 @@ uname(struct utsname *u) case PROCESSOR_ARCHITECTURE_UNKNOWN: default: cpu = "unknown"; + break; } /* publish */ - sprintf(u_sysname, "Win%s", osname); - if (osbuild) { - sprintf(u_release, "%u.%u", osmajor, osminor); - sprintf(u_version, "Build_%u", osbuild); + { + struct CurrentVersion cv = {0}; - } else { - sprintf(u_release, "%u", osmajor); - sprintf(u_version, "%u", osminor); + RegCurrentVersion(&cv); + + if (cv.ProductName[0]) { + snprintf(u_sysname, sizeof(u_sysname), "%s%s", + cv.ProductName, cv.DisplayVersion); + } else { + if (0 == memcmp(osname, "Win", 3)) osname += 3; + snprintf(u_sysname, sizeof(u_sysname), "Win%s%s%s", + osname, cv.DisplayVersion, (IsWow64() ? " (Wow64)" : "")); + } + + if (osbuild) { + sprintf(u_release, "%u.%u", osmajor, osminor); + if (cv.ubr) { + sprintf(u_version, "Build_%u.%u", osbuild, cv.ubr); + } else { + sprintf(u_version, "Build_%u", osbuild); + } + } else { + sprintf(u_release, "%u", osmajor); + sprintf(u_version, "%u", osminor); + } + strcpy(u_machine, cpu); } - strcpy(u_machine, cpu); } /* populate */ @@ -435,4 +495,62 @@ uname(struct utsname *u) return 0; } + +/* Determine whether running under Wow64 */ +static BOOL +IsWow64(void) +{ + IsWow64Process_t fnIsWow64Process = NULL; + BOOL bIsWow64 = FALSE; + + fnIsWow64Process = (IsWow64Process_t) GetProcAddress(GetModuleHandleA("kernel32"),"IsWow64Process"); + if (fnIsWow64Process) { + fnIsWow64Process(GetCurrentProcess(), &bIsWow64); + } + return bIsWow64; +} + + +/* Current version details, optional DisplayVersion and return Update Build Revision (UBR). */ +static void +RegCurrentVersion(struct CurrentVersion *cv) +{ + const char *root = "Software\\Microsoft\\Windows NT\\CurrentVersion", *ubr = "UBR"; + DWORD extra = 0; + HKEY key = 0; + +#ifndef KEY_WOW64_64KEY +#define KEY_WOW64_64KEY (0x0100) +#endif + if (IsWow64()) extra |= KEY_WOW64_64KEY; // enable 64-bit view; values can differ + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, root, 0, KEY_QUERY_VALUE|extra, &key) == ERROR_SUCCESS) { + DWORD size, type = REG_NONE; + + if (RegQueryValueExA(key, ubr, NULL, &type, NULL, NULL) == ERROR_SUCCESS) { + if (REG_DWORD == type) { + DWORD buffer = 0; + size = (DWORD)sizeof(buffer); + if (RegQueryValueExA(key, ubr, NULL, NULL, (LPBYTE) &buffer, &size) == ERROR_SUCCESS) { + cv->ubr = buffer; + } + } + } + + if (cv) { + size = (DWORD)(sizeof(cv->ProductName) - 1); + if (RegQueryValueExA(key, "ProductName", NULL, NULL, (LPBYTE) cv->ProductName, &size) != ERROR_SUCCESS) { + cv->ProductName[0] = 0; + } + + size = (DWORD)(sizeof(cv->DisplayVersion) - 1); + cv->DisplayVersion[0] = ' '; + if (RegQueryValueExA(key, "DisplayVersion", NULL, NULL, (LPBYTE) cv->DisplayVersion + 1, &size) != ERROR_SUCCESS) { + cv->DisplayVersion[0] = 0; + } + } + + RegCloseKey(key); + } +} + /*end*/ diff --git a/mcwin32/libw32/w32_util.c b/mcwin32/libw32/w32_util.c index 4d3b08b6..a3033859 100644 --- a/mcwin32/libw32/w32_util.c +++ b/mcwin32/libw32/w32_util.c @@ -1,5 +1,5 @@ #include -__CIDENT_RCSID(gr_w32_util_c,"$Id: w32_util.c,v 1.16 2022/06/08 09:51:44 cvsuser Exp $") +__CIDENT_RCSID(gr_w32_util_c,"$Id: w32_util.c,v 1.17 2023/01/31 17:44:09 cvsuser Exp $") /* -*- mode: c; indent-width: 4; -*- */ /* @@ -532,8 +532,8 @@ w32_ostype(void) if (! platform) { OSVERSIONINFO ovi = {0}; ovi.dwOSVersionInfoSize = sizeof(ovi); - GetVersionEx(&ovi); - // TODO: replace with RtlGetVersion() as GetVersionEx() is now defunct; 8.1+. + + GetVersionEx(&ovi); // dependent on app-manifest switch (ovi.dwPlatformId) { case VER_PLATFORM_WIN32s: case VER_PLATFORM_WIN32_WINDOWS: @@ -573,7 +573,11 @@ w32_ostype(void) platform = OSTYPE_WIN_NT; // or 2000 if (ovi.dwMajorVersion >= 10) { - platform = OSTYPE_WIN_10; // Windows 10+ + if (ovi.dwBuildNumber >= 22000) { + platform = OSTYPE_WIN_11; // Windows 11 + } else { + platform = OSTYPE_WIN_10; // Windows 10 + } } else if (6 == ovi.dwMajorVersion) { platform = OSTYPE_WIN_VISTA; diff --git a/mcwin32/libw32/w32config.hin b/mcwin32/libw32/w32config.hin index 937f2fdc..9cf84c88 100644 --- a/mcwin32/libw32/w32config.hin +++ b/mcwin32/libw32/w32config.hin @@ -1,7 +1,7 @@ #ifndef WIN32_CONFIG_H_INCLUDED #define WIN32_CONFIG_H_INCLUDED /* -*- mode: c; set-indent: 4; -*- */ -/* $Id: w32config.hin,v 1.19 2022/06/14 02:19:59 cvsuser Exp $ +/* $Id: w32config.hin,v 1.20 2023/01/31 17:44:09 cvsuser Exp $ * Machine configuration. * * System dependent configuration template, @@ -51,7 +51,7 @@ #pragma warning (disable : 4996) #if defined(_CRT_NO_POSIX_ERROR_CODES) -#pragma message is incompatible with _CRT_NO_POSIX_ERROR_CODES. +#pragma message(" is incompatible with _CRT_NO_POSIX_ERROR_CODES.") #endif #elif defined(__WATCOMC__) diff --git a/mcwin32/libw32/win32_misc.h b/mcwin32/libw32/win32_misc.h index e3fbdb07..b9e68944 100644 --- a/mcwin32/libw32/win32_misc.h +++ b/mcwin32/libw32/win32_misc.h @@ -1,7 +1,7 @@ #ifndef LIBW32_WIN32_MISC_H_INCLUDED #define LIBW32_WIN32_MISC_H_INCLUDED #include -__CIDENT_RCSID(gr_libw32_win32_misc_h,"$Id: win32_misc.h,v 1.12 2022/06/14 02:19:59 cvsuser Exp $") +__CIDENT_RCSID(gr_libw32_win32_misc_h,"$Id: win32_misc.h,v 1.13 2023/01/31 17:44:09 cvsuser Exp $") __CPRAGMA_ONCE /* -*- mode: c; indent-width: 4; -*- */ @@ -39,6 +39,7 @@ __CPRAGMA_ONCE __BEGIN_DECLS enum w32ostype { /* generalised machine types, ignoring server */ + OSTYPE_WIN_11, OSTYPE_WIN_10, OSTYPE_WIN_8, OSTYPE_WIN_7, From c428f5f375b2b7bd153106409b1d96bf50c3b7fa Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 1 Feb 2023 21:04:20 +0800 Subject: [PATCH 13/39] corrected syntax --- mcwin32/ChangeLog.txt | 6 ++++++ mcwin32/packageinfo.h | 14 ++++++++++++++ mcwin32/releases/mc-inno-setup.iss | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 mcwin32/packageinfo.h diff --git a/mcwin32/ChangeLog.txt b/mcwin32/ChangeLog.txt index b1d9f397..a0e5e2c8 100644 --- a/mcwin32/ChangeLog.txt +++ b/mcwin32/ChangeLog.txt @@ -1,3 +1,9 @@ +Wed Feb 1 10:53:57 2023 adamy + + * build-228 + + * 4.8.29 merge + Sun Jun 19 15:11:13 2022 adamy * build-227 diff --git a/mcwin32/packageinfo.h b/mcwin32/packageinfo.h new file mode 100644 index 00000000..08d7940c --- /dev/null +++ b/mcwin32/packageinfo.h @@ -0,0 +1,14 @@ +// Auto-generated by Makefile Wed Feb 01 21:03:45 2023 + +#define PACKAGE "mc" +#define PACKAGE_NAME "Midnight Commander WIN32" +#define VERSION "4.8.29" +#define VERSION_1 4 +#define VERSION_2 8 +#define VERSION_3 29 +#define VERSION_4 228 +#define BUILD_DATE "20230201" +#define BUILD_NUMBER "228" +#define BUILD_TOOLCHAIN ".owc19" +#define BUILD_TYPE "debug" +#define BUILD_TYPE_DEBUG 1 diff --git a/mcwin32/releases/mc-inno-setup.iss b/mcwin32/releases/mc-inno-setup.iss index 93c7178d..e748dfb5 100644 --- a/mcwin32/releases/mc-inno-setup.iss +++ b/mcwin32/releases/mc-inno-setup.iss @@ -98,7 +98,7 @@ Root: HKLM; Subkey: "Software\Midnight-Commander"; ValueType: dword; ValueName: Source: "..\{#BinDir}\README.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\ChangeLog.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\mc.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\{#BinDir}\mc.exe"; DestDir: "{app}"; DestName: "mcedit.exe" Flags: ignoreversion +Source: "..\{#BinDir}\mc.exe"; DestDir: "{app}"; DestName: "mcedit.exe"; Flags: ignoreversion Source: "..\{#BinDir}\mc.map"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\mcupdater.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\{#BinDir}\busybox.exe"; DestDir: "{app}"; Flags: ignoreversion From 70ab4cb1f5aa801b0c6b6d6a917777af03aec164 Mon Sep 17 00:00:00 2001 From: adamyg Date: Wed, 1 Feb 2023 21:55:27 +0800 Subject: [PATCH 14/39] uniform nuls --- mcwin32/Makefile.in | 24 ++++++++++++------------ mcwin32/libglib/Makefile.in | 12 ++++++------ mcwin32/libmagic/Makefile.in | 8 ++++---- mcwin32/packageinfo.h | 14 -------------- 4 files changed, 22 insertions(+), 36 deletions(-) delete mode 100644 mcwin32/packageinfo.h diff --git a/mcwin32/Makefile.in b/mcwin32/Makefile.in index 7fc4aa5b..c40cb242 100644 --- a/mcwin32/Makefile.in +++ b/mcwin32/Makefile.in @@ -849,10 +849,10 @@ package: packageinfo .PHONY: clean clean: @echo $(BUILD_TYPE) clean - -$(RM) $(RMFLAGS) $(TARGETS) $(LIBRARIES) $(CLEAN) $(XCLEAN) >nul 2>&1 - -$(RM) $(RMFLAGS) $(OBJS) $(MC_RES) $(subst $(O),.mbr,$(OBJS) $(MC_RES)) >nul 2>&1 - -$(RM) $(RMFLAGS) $(MC_LIBMC) $(subst $(O),.mbr,$(MC_LIBMC)) $(LW)mcutil$(A) >nul 2>&1 - -$(RM) $(RMFLAGS) $(MC_LIBVFS) $(subst $(O),.mbr,$(MC_LIBVFS)) $(LW)mcvfs$(A) >nul 2>&1 + -$(RM) $(RMFLAGS) $(TARGETS) $(LIBRARIES) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 + -$(RM) $(RMFLAGS) $(OBJS) $(MC_RES) $(subst $(O),.mbr,$(OBJS) $(MC_RES)) >/dev/null 2>&1 + -$(RM) $(RMFLAGS) $(MC_LIBMC) $(subst $(O),.mbr,$(MC_LIBMC)) $(LW)mcutil$(A) >/dev/null 2>&1 + -$(RM) $(RMFLAGS) $(MC_LIBVFS) $(subst $(O),.mbr,$(MC_LIBVFS)) $(LW)mcvfs$(A) >/dev/null 2>&1 $(MAKE) -C libglib clean $(MAKE) -C libintl clean $(MAKE) -C libmbedtls clean @@ -862,16 +862,16 @@ clean: $(MAKE) -C libz clean $(MAKE) -C libw32 clean $(MAKE) -C autoupdater clean - -$(RM) $(MSGOBJS) $(MSGDIRS) >nul 2>&1 - -$(RM) $(CONFIGURATION) >nul 2>&1 - -$(RM) $(CONFIGURATION_WIN32) >nul 2>&1 - -$(RM) $(DIRECTORIES) >nul 2>&1 - -$(RMDIR) $(call reverse, $(dir $(DIRECTORIES)) $(BASEMSGDIRS) $(dir $(MSGDIRS)))) >nul 2>&1 - -$(RMDIR) $(D_OBJ) $(D_LIB) $(D_BIN) $(D_ETC) >nul 2>&1 + -$(RM) $(MSGOBJS) $(MSGDIRS) >/dev/null 2>&1 + -$(RM) $(CONFIGURATION) >/dev/null 2>&1 + -$(RM) $(CONFIGURATION_WIN32) >/dev/null 2>&1 + -$(RM) $(DIRECTORIES) >/dev/null 2>&1 + -$(RMDIR) $(call reverse, $(dir $(DIRECTORIES)) $(BASEMSGDIRS) $(dir $(MSGDIRS)))) >/dev/null 2>&1 + -$(RMDIR) $(D_OBJ) $(D_LIB) $(D_BIN) $(D_ETC) >/dev/null 2>&1 .PHONY: vclean vclean: clean - -$(RM) $(IMPORT) >nul 2>&1 + -$(RM) $(IMPORT) >/dev/null 2>&1 ######################################################################################### @@ -920,7 +920,7 @@ endif .PHONY: new_buildnumber new_buildnumber: - -@chmod +w BUILDNUMBER >nul 2>&1 + -@chmod +w BUILDNUMBER >/dev/null 2>&1 @echo incrementing build number ... -@$(BUSYBOX) sh -c "\ if [ ! -f BUILDNUMBER ]; then echo 1 >BUILDNUMBER; fi;\ diff --git a/mcwin32/libglib/Makefile.in b/mcwin32/libglib/Makefile.in index 4156b1d5..6f390703 100644 --- a/mcwin32/libglib/Makefile.in +++ b/mcwin32/libglib/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.11 2022/06/09 16:38:58 cvsuser Exp $ +# $Id: Makefile.in,v 1.12 2023/02/01 13:50:25 cvsuser Exp $ # libglib makefile. # # @@ -490,11 +490,11 @@ installheaders: Makefile ../include/.created \ clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GLIBDLL) $(GLIBDLLOBJS) >nul 2>&1) - -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GMODULEDLL) $(GMODULEDLLOBJS) >nul 2>&1) - -@$(RM) $(subst /,\,$(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >nul 2>&1) - -@$(RM) $(subst /,\,$(GLIBLIBOBJS) >nul 2>&1) - -@$(RM) $(subst /,\,$(GMODULELIBOBJS) >nul 2>&1) + -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GLIBDLL) $(GLIBDLLOBJS) >/dev/null 2>&1) + -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GMODULEDLL) $(GMODULEDLLOBJS) >/dev/null 2>&1) + -@$(RM) $(subst /,\,$(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1) + -@$(RM) $(subst /,\,$(GLIBLIBOBJS) >/dev/null 2>&1) + -@$(RM) $(subst /,\,$(GMODULELIBOBJS) >/dev/null 2>&1) ############################################################ diff --git a/mcwin32/libmagic/Makefile.in b/mcwin32/libmagic/Makefile.in index 9f2d7ecc..c356205a 100644 --- a/mcwin32/libmagic/Makefile.in +++ b/mcwin32/libmagic/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.11 2022/06/09 16:39:16 cvsuser Exp $ +# $Id: Makefile.in,v 1.12 2023/02/01 13:50:25 cvsuser Exp $ # libmagic makefile # # @@ -211,9 +211,9 @@ installinc: ../include/.created clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(MAGICDLL) $(OBJS) >nul 2>&1 - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >nul 2>&1 - -@$(RM) $(LIBOBJS) $(UTILOBJS) >nul 2>&1 + -@$(LIBTOOL) --mode=clean $(RM) $(MAGICDLL) $(OBJS) >/dev/null 2>&1 + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 + -@$(RM) $(LIBOBJS) $(UTILOBJS) >/dev/null 2>&1 $(D_OBJ)/%$(O): %$(C) $(CC) $(CFLAGS) -D_CRT_SECURE_NO_DEPRECATE -o $@ -c $< diff --git a/mcwin32/packageinfo.h b/mcwin32/packageinfo.h deleted file mode 100644 index 08d7940c..00000000 --- a/mcwin32/packageinfo.h +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated by Makefile Wed Feb 01 21:03:45 2023 - -#define PACKAGE "mc" -#define PACKAGE_NAME "Midnight Commander WIN32" -#define VERSION "4.8.29" -#define VERSION_1 4 -#define VERSION_2 8 -#define VERSION_3 29 -#define VERSION_4 228 -#define BUILD_DATE "20230201" -#define BUILD_NUMBER "228" -#define BUILD_TOOLCHAIN ".owc19" -#define BUILD_TYPE "debug" -#define BUILD_TYPE_DEBUG 1 From af3b37b8069c861a495273d8a6b73de3e6118463 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sat, 4 Feb 2023 01:10:39 +0800 Subject: [PATCH 15/39] VERBOSE option --- mcwin32/Makefile.in | 40 +++++++++++++++++++++------------ mcwin32/autoupdater/Makefile.in | 13 +++++++++-- mcwin32/libglib/Makefile.in | 27 ++++++++++++++-------- mcwin32/libintl/Makefile.in | 19 +++++++++++----- mcwin32/libmagic/Makefile.in | 19 +++++++++++----- mcwin32/libmbedtls/Makefile.in | 27 ++++++++++++++-------- mcwin32/libregex/Makefile.in | 13 +++++++++-- mcwin32/libssh2/Makefile.in | 23 +++++++++++++------ mcwin32/libw32/Makefile.in | 19 +++++++++++----- mcwin32/libz/Makefile.in | 21 ++++++++++++----- 10 files changed, 157 insertions(+), 64 deletions(-) diff --git a/mcwin32/Makefile.in b/mcwin32/Makefile.in index c40cb242..1cc06256 100644 --- a/mcwin32/Makefile.in +++ b/mcwin32/Makefile.in @@ -118,6 +118,15 @@ ifeq ($(BUSYBOX),busybox) BUSYBOX= $(shell which busybox 2>/dev/null) endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + ifeq ("$(BUILD_TYPE)","") #default .PHONY: help clean vclean build package @@ -126,11 +135,14 @@ ifneq ("$(word 1,$(MAKECMDGOALS))","debug") ifneq ("$(word 1,$(MAKECMDGOALS))","release") @$(BUSYBOX) echo -n -e '\ |\n\ - | make [release or debug] target \n\ + | make [VERBOSE=1] [release or debug] target \n\ |\n\ | Build one or more of the following targets recursively within each sub-directory\n\ | for the toolchain @TOOLCHAIN@. \n\ |\n\ + | Options: \n\ + | VERBOSE - increase run-time diagnostics; suppress stderr filtering. \n\ + |\n\ | Targets: \n\ |\n\ | build - build everything. \n\ @@ -849,10 +861,10 @@ package: packageinfo .PHONY: clean clean: @echo $(BUILD_TYPE) clean - -$(RM) $(RMFLAGS) $(TARGETS) $(LIBRARIES) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 - -$(RM) $(RMFLAGS) $(OBJS) $(MC_RES) $(subst $(O),.mbr,$(OBJS) $(MC_RES)) >/dev/null 2>&1 - -$(RM) $(RMFLAGS) $(MC_LIBMC) $(subst $(O),.mbr,$(MC_LIBMC)) $(LW)mcutil$(A) >/dev/null 2>&1 - -$(RM) $(RMFLAGS) $(MC_LIBVFS) $(subst $(O),.mbr,$(MC_LIBVFS)) $(LW)mcvfs$(A) >/dev/null 2>&1 + -$(RM) $(RMFLAGS) $(TARGETS) $(LIBRARIES) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -$(RM) $(RMFLAGS) $(OBJS) $(MC_RES) $(subst $(O),.mbr,$(OBJS) $(MC_RES)) $(QUIETOUT) + -$(RM) $(RMFLAGS) $(MC_LIBMC) $(subst $(O),.mbr,$(MC_LIBMC)) $(LW)mcutil$(A) $(QUIETOUT) + -$(RM) $(RMFLAGS) $(MC_LIBVFS) $(subst $(O),.mbr,$(MC_LIBVFS)) $(LW)mcvfs$(A) $(QUIETOUT) $(MAKE) -C libglib clean $(MAKE) -C libintl clean $(MAKE) -C libmbedtls clean @@ -862,16 +874,16 @@ clean: $(MAKE) -C libz clean $(MAKE) -C libw32 clean $(MAKE) -C autoupdater clean - -$(RM) $(MSGOBJS) $(MSGDIRS) >/dev/null 2>&1 - -$(RM) $(CONFIGURATION) >/dev/null 2>&1 - -$(RM) $(CONFIGURATION_WIN32) >/dev/null 2>&1 - -$(RM) $(DIRECTORIES) >/dev/null 2>&1 - -$(RMDIR) $(call reverse, $(dir $(DIRECTORIES)) $(BASEMSGDIRS) $(dir $(MSGDIRS)))) >/dev/null 2>&1 - -$(RMDIR) $(D_OBJ) $(D_LIB) $(D_BIN) $(D_ETC) >/dev/null 2>&1 + -$(RM) $(MSGOBJS) $(MSGDIRS) $(QUIETOUT) + -$(RM) $(CONFIGURATION) $(QUIETOUT) + -$(RM) $(CONFIGURATION_WIN32) $(QUIETOUT) + -$(RM) $(DIRECTORIES) $(QUIETOUT) + -$(RMDIR) $(call reverse, $(dir $(DIRECTORIES)) $(BASEMSGDIRS) $(dir $(MSGDIRS)))) $(QUIETOUT) + -$(RMDIR) $(D_OBJ) $(D_LIB) $(D_BIN) $(D_ETC) $(QUIETOUT) .PHONY: vclean vclean: clean - -$(RM) $(IMPORT) >/dev/null 2>&1 + -$(RM) $(IMPORT) $(QUIETOUT) ######################################################################################### @@ -920,13 +932,13 @@ endif .PHONY: new_buildnumber new_buildnumber: - -@chmod +w BUILDNUMBER >/dev/null 2>&1 + -@chmod +w BUILDNUMBER $(QUIETOUT) @echo incrementing build number ... -@$(BUSYBOX) sh -c "\ if [ ! -f BUILDNUMBER ]; then echo 1 >BUILDNUMBER; fi;\ echo $$(($$(cat BUILDNUMBER) + 1)) >BUILDNUMBER;\ " - -@chmod -w BUILDNUMBER >/dev/null 2>&1 + -@chmod -w BUILDNUMBER $(QUIETOUT) $(D_OBJ)/%.res: %.rc $(RC) -fo $@ $< diff --git a/mcwin32/autoupdater/Makefile.in b/mcwin32/autoupdater/Makefile.in index 0b0e560d..9e73b6a0 100644 --- a/mcwin32/autoupdater/Makefile.in +++ b/mcwin32/autoupdater/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.9 2023/01/31 17:08:48 cvsuser Exp $ +# $Id: Makefile.in,v 1.10 2023/02/03 17:10:09 cvsuser Exp $ # libautoupdater and utils makefile # # @@ -40,6 +40,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -215,7 +224,7 @@ installinc: include/.created @echo "do not delete, managed directory" > $@ clean: - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(OBJS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(OBJS) $(CLEAN) $(XCLEAN) $(QUIETOUT) $(D_OBJ)/%$(O): %.cpp $(CC) $(CXXFLAGS) -o $@ -c $< diff --git a/mcwin32/libglib/Makefile.in b/mcwin32/libglib/Makefile.in index 6f390703..a338eba0 100644 --- a/mcwin32/libglib/Makefile.in +++ b/mcwin32/libglib/Makefile.in @@ -1,9 +1,9 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.12 2023/02/01 13:50:25 cvsuser Exp $ +# $Id: Makefile.in,v 1.13 2023/02/03 17:10:09 cvsuser Exp $ # libglib makefile. # # -# Copyright (c) 2016 - 2022 Adam Young. +# Copyright (c) 2016 - 2023 Adam Young. # # This file is part of the Midnight Commander. # @@ -65,6 +65,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -359,7 +368,7 @@ debug: $(GLIBLIB): CLOCAL += -I. -I$(GLIBSRC) $(GLIBLIB): CEXTRA += -DGLIB_COMPILATION -DGLIB_STATIC_COMPILATION -DPCRE_STATIC $(GLIBLIB): $(GLIBLIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ @@ -373,7 +382,7 @@ $(GLIBDLL): $(GLIBDLLOBJS) $(GMODULELIB): CLOCAL += -I. -I$(GMODULESRC) -I$(GLIBSRC) $(GMODULELIB): $(GMODULELIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ @@ -490,11 +499,11 @@ installheaders: Makefile ../include/.created \ clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GLIBDLL) $(GLIBDLLOBJS) >/dev/null 2>&1) - -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GMODULEDLL) $(GMODULEDLLOBJS) >/dev/null 2>&1) - -@$(RM) $(subst /,\,$(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1) - -@$(RM) $(subst /,\,$(GLIBLIBOBJS) >/dev/null 2>&1) - -@$(RM) $(subst /,\,$(GMODULELIBOBJS) >/dev/null 2>&1) + -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GLIBDLL) $(GLIBDLLOBJS) $(QUIETOUT)) + -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(GMODULEDLL) $(GMODULEDLLOBJS) $(QUIETOUT)) + -@$(RM) $(subst /,\,$(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT)) + -@$(RM) $(subst /,\,$(GLIBLIBOBJS) $(QUIETOUT)) + -@$(RM) $(subst /,\,$(GMODULELIBOBJS) $(QUIETOUT)) ############################################################ diff --git a/mcwin32/libintl/Makefile.in b/mcwin32/libintl/Makefile.in index 12c238eb..f08c5798 100644 --- a/mcwin32/libintl/Makefile.in +++ b/mcwin32/libintl/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.9 2022/06/09 16:39:07 cvsuser Exp $ +# $Id: Makefile.in,v 1.10 2023/02/03 17:10:09 cvsuser Exp $ # libintl makefile # # @@ -39,6 +39,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -121,7 +130,7 @@ debug: $(INTLLIB): CEXTRA += -I$(INTLSRC) -DLIBINTL_STATIC -D__LIBINTL_BUILD -D_WIN32 $(INTLLIB): $(LIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $(subst /,\,$^) $(RANLIB) $@ @@ -146,9 +155,9 @@ installinc: ../include/.created clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(INTLDLL) $(DLLOBJS) >/dev/null 2>&1 - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 - -@$(RM) $(LIBOBJS) >/dev/null 2>&1 + -@$(LIBTOOL) --mode=clean $(RM) $(INTLDLL) $(DLLOBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(LIBOBJS) $(QUIETOUT) $(D_OBJ)/%$(O): %.c $(CC) $(CFLAGS) -o $@ -c $< diff --git a/mcwin32/libmagic/Makefile.in b/mcwin32/libmagic/Makefile.in index c356205a..58680a23 100644 --- a/mcwin32/libmagic/Makefile.in +++ b/mcwin32/libmagic/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.12 2023/02/01 13:50:25 cvsuser Exp $ +# $Id: Makefile.in,v 1.13 2023/02/03 17:10:09 cvsuser Exp $ # libmagic makefile # # @@ -40,6 +40,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -167,7 +176,7 @@ debug: $(MAGICLIB): CEXTRA += -D__LIBMAGIC_BUILD -DLIBMAGIC_STATIC -DBUILD_AS_WINDOWS_STATIC_LIBARAY $(MAGICLIB): $(D_OBJ)/.created $(LIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $(LIBOBJS) $(RANLIB) $@ @@ -211,9 +220,9 @@ installinc: ../include/.created clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(MAGICDLL) $(OBJS) >/dev/null 2>&1 - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 - -@$(RM) $(LIBOBJS) $(UTILOBJS) >/dev/null 2>&1 + -@$(LIBTOOL) --mode=clean $(RM) $(MAGICDLL) $(OBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(LIBOBJS) $(UTILOBJS) $(QUIETOUT) $(D_OBJ)/%$(O): %$(C) $(CC) $(CFLAGS) -D_CRT_SECURE_NO_DEPRECATE -o $@ -c $< diff --git a/mcwin32/libmbedtls/Makefile.in b/mcwin32/libmbedtls/Makefile.in index b322d412..d00d444b 100644 --- a/mcwin32/libmbedtls/Makefile.in +++ b/mcwin32/libmbedtls/Makefile.in @@ -1,9 +1,9 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.10 2022/06/09 16:39:29 cvsuser Exp $ +# $Id: Makefile.in,v 1.11 2023/02/03 17:10:09 cvsuser Exp $ # libmbedtls makefile. # # -# Copyright (c) 2017 - 2022 Adam Young. +# Copyright (c) 2017 - 2023 Adam Young. # All rights reserved. # # This file is part of the Midnight Commander. @@ -58,6 +58,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -239,7 +248,7 @@ CEXTRA += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE ####### $(MBEDCRYPTOLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDCRYPTO_SOURCE $(MBEDCRYPTOLIB): $(CRYPTO_LIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ @@ -254,7 +263,7 @@ $(MBEDCRYPTODLL): $(CRYPTO_DLLOBJS) ####### $(MBEDX509LIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDX509_SOURCE -DLIBMBEDX509 $(MBEDX509LIB): $(X509_LIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ @@ -269,7 +278,7 @@ $(MBEDX509DLL): $(X509_DLLOBJS) ####### $(MBEDTLSLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDTLS_SOURCE $(MBEDTLSLIB): $(TLS_LIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ @@ -310,10 +319,10 @@ installinc: ../include/.created ../include/mbedtls/.created clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) >/dev/null 2>&1 - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 - -@$(RM) $(LIBOBJS) >/dev/null 2>&1 - -@$(RM) ../include/mbedtls/* >/dev/null 2>&1 + -@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(LIBOBJS) $(QUIETOUT) + -@$(RM) ../include/mbedtls/* $(QUIETOUT) $(D_OBJ)/%$(O): %.c $(CC) $(CFLAGS) -o $@ -c $< diff --git a/mcwin32/libregex/Makefile.in b/mcwin32/libregex/Makefile.in index 5dd25953..5409979d 100644 --- a/mcwin32/libregex/Makefile.in +++ b/mcwin32/libregex/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.5 2022/06/09 16:39:37 cvsuser Exp $ +# $Id: Makefile.in,v 1.6 2023/02/03 17:10:09 cvsuser Exp $ # libregex makefile # # @@ -37,6 +37,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -112,7 +121,7 @@ installinc: ../include/.created clean: @echo $(BUILD_TYPE) clean - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(LIBS) $(OBJS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(LIBS) $(OBJS) $(CLEAN) $(XCLEAN) $(QUIETOUT) $(D_OBJ)/%$(O): %$(C) $(CC) $(CFLAGS) -D_CRT_SECURE_NO_DEPRECATE -o $@ -c $< diff --git a/mcwin32/libssh2/Makefile.in b/mcwin32/libssh2/Makefile.in index bffa0c65..7cfc5af1 100644 --- a/mcwin32/libssh2/Makefile.in +++ b/mcwin32/libssh2/Makefile.in @@ -1,9 +1,9 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.17 2022/06/09 16:39:43 cvsuser Exp $ +# $Id: Makefile.in,v 1.18 2023/02/03 17:10:09 cvsuser Exp $ # libssh2 makefile. # # -# Copyright (c) 2015 - 2022, Adam Young. +# Copyright (c) 2015 - 2023, Adam Young. # All rights reserved. # # @@ -59,6 +59,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -183,7 +192,7 @@ CEXTRA += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE $(SSH2LIB): CEXTRA += -DLIBSSH2_STATIC $(SSH2LIB): $(LIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ @@ -217,10 +226,10 @@ installinc: ../include/.created clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) >/dev/null 2>&1 - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 - -@$(RM) $(LIBOBJS) >/dev/null 2>&1 - -@$(RM) ../include/libssh2/*.h >/dev/null 2>&1 + -@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(LIBOBJS) $(QUIETOUT) + -@$(RM) ../include/libssh2/*.h $(QUIETOUT) $(D_OBJ)/%$(O): %.c $(CC) $(CFLAGS) -o $@ -c $< diff --git a/mcwin32/libw32/Makefile.in b/mcwin32/libw32/Makefile.in index d87e686d..e88e87c7 100644 --- a/mcwin32/libw32/Makefile.in +++ b/mcwin32/libw32/Makefile.in @@ -1,9 +1,9 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.21 2022/06/14 02:19:58 cvsuser Exp $ +# $Id: Makefile.in,v 1.22 2023/02/03 17:10:09 cvsuser Exp $ # libwin32 makefile. # # -# Copyright (c) 2007, 2012 - 2022 Adam Young. +# Copyright (c) 2007, 2012 - 2023 Adam Young. # # This file is part of the Midnight Commander. # @@ -57,6 +57,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -239,9 +248,9 @@ $(D_OBJ)/.created: clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(W32DLL) $(DLLOBJS) >/dev/null 2>&1 - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(W32LIB) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 - -@$(RM) $(RMFLAGS) $(LIBOBJS) >/dev/null 2>&1 + -@$(LIBTOOL) --mode=clean $(RM) $(W32DLL) $(DLLOBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(W32LIB) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(LIBOBJS) $(QUIETOUT) $(D_OBJ)/%$(O): %.c $(CC) $(CFLAGS) -o $@ -c $< diff --git a/mcwin32/libz/Makefile.in b/mcwin32/libz/Makefile.in index cbb7b744..94bd13e4 100644 --- a/mcwin32/libz/Makefile.in +++ b/mcwin32/libz/Makefile.in @@ -1,9 +1,9 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.9 2022/06/09 16:39:57 cvsuser Exp $ +# $Id: Makefile.in,v 1.10 2023/02/03 17:10:09 cvsuser Exp $ # libz makefile # # -# Copyright (c) 2016 - 2022 Adam Young. +# Copyright (c) 2016 - 2023 Adam Young. # # This file is part of the Midnight Commander. # @@ -63,6 +63,15 @@ ifneq ("$(BUILD_TYPE)","release") RTSUFFIX=d endif +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + # Directories D_INC= $(ROOT)/include @@ -178,7 +187,7 @@ CEXTRA += -I$(ZSRC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE $(ZLIB): CEXTRA += -DZLIB_STATIC $(ZLIB): $(LIBOBJS) - $(RM) $(RMFLAGS) $@ >/dev/null 2>&1 + $(RM) $(RMFLAGS) $@ $(QUIETOUT) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ @@ -215,9 +224,9 @@ installinc: ../include/.created clean: @echo $(BUILD_TYPE) clean - -@$(LIBTOOL) --mode=clean $(RM) $(ZDLL) $(DLLOBJS) >/dev/null 2>&1 - -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1 - -@$(RM) $(LIBOBJS) >/dev/null 2>&1 + -@$(LIBTOOL) --mode=clean $(RM) $(ZDLL) $(DLLOBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(LIBOBJS) $(QUIETOUT) $(D_OBJ)/%$(O): %.c $(CC) $(CFLAGS) -o $@ -c $< From 4a417016f05fb315a745cc27375319f17df7ed10 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 5 Feb 2023 13:54:37 +0800 Subject: [PATCH 16/39] INNO parameterized --- mcwin32/support/owcconfig.bat | 7 +++++-- mcwin32/support/sedin.pl | 18 +++++++++--------- mcwin32/support/vc2008config.bat | 12 ------------ mcwin32/support/vc2015config.bat | 6 +++++- mcwin32/support/vc2017config.bat | 6 +++++- mcwin32/support/vc2019config.bat | 6 +++++- 6 files changed, 29 insertions(+), 26 deletions(-) delete mode 100644 mcwin32/support/vc2008config.bat diff --git a/mcwin32/support/owcconfig.bat b/mcwin32/support/owcconfig.bat index 75e72163..11859306 100644 --- a/mcwin32/support/owcconfig.bat +++ b/mcwin32/support/owcconfig.bat @@ -2,11 +2,14 @@ rem rem Open Watcom C/C++ 1.9 rem +echo Configure: Open Watcom C/C++ 1.9 if not defined GNUWIN32 ( set GNUWIN32=\devl\gnuwin32 ) if not defined PERL ( set PERL=perl ) -%PERL% makelib.pl --gnuwin32=%GNUWIN32% owc %1 %2 %3 %4 - +if not defined INNO ( + set INNO="C:/Program Files (x86)/Inno Setup 5/iscc" +) +%PERL% makelib.pl --busybox=./support/busybox --inno=%INNO% owc %1 %2 %3 %4 diff --git a/mcwin32/support/sedin.pl b/mcwin32/support/sedin.pl index 025aa29c..4bcd5b15 100644 --- a/mcwin32/support/sedin.pl +++ b/mcwin32/support/sedin.pl @@ -1,9 +1,9 @@ #!/usr/bin/perl -w # -*- mode: perl; -*- -# $Id: sedin.pl,v 1.5 2020/06/10 10:55:08 cvsuser Exp $ +# $Id: sedin.pl,v 1.6 2023/02/05 05:37:57 cvsuser Exp $ # sed in processing tool, processing embedded @PERL@ @PYTHON@ etc # -# Copyright Adam Young 2017 - 2020 +# Copyright Adam Young 2017 - 2023 # # This file is part of the Midnight Commander. # @@ -111,9 +111,9 @@ sub usage { } else { if ($1 eq '@PERL@') { - $busybox = '${ENV{MC_BUSYBOX}}'; + $busybox = '${ENV{MC_BUSYBOX}}'; } else { - $busybox = 'os.environ.get(\'MC_BUSYBOX\')'; + $busybox = 'os.environ.get(\'MC_BUSYBOX\')'; } } chomp $line; @@ -125,7 +125,7 @@ sub usage { if ($verbose) { pos($line) = 1; while ($line =~ /(\@[A-Za-z_]+\@)/g) { - printf "${in} ($.): $1\n"; + printf "${in} ($.): $1\n"; } } @@ -141,10 +141,10 @@ sub usage { $line =~ s/\@ZIP\@/${busybox} zip/g; if ($line =~ /(\@[A-Za-z_]+\@)/) { - my $var = $1; - if ($var ne '@EXTHELPERSDIR@') { - printf "WARNING ${in} ($.): unknown variable (${var})\n"; - } + my $var = $1; + if ($var ne '@EXTHELPERSDIR@') { + printf "WARNING ${in} ($.): unknown variable (${var})\n"; + } } chomp $line; diff --git a/mcwin32/support/vc2008config.bat b/mcwin32/support/vc2008config.bat deleted file mode 100644 index 596194eb..00000000 --- a/mcwin32/support/vc2008config.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -rem -rem Microsoft Visual Studio C/C++ 2008+ -rem -if not defined GNUWIN32 ( - set GNUWIN32=\devl\gnuwin32 -) -if not defined PERL ( - set PERL=perl -) -%PERL% makelib.pl --gnuwin32=%GNUWIN32% --icu=auto vc2008 %1 %2 %3 %4 - diff --git a/mcwin32/support/vc2015config.bat b/mcwin32/support/vc2015config.bat index 834119a8..2ab4c932 100644 --- a/mcwin32/support/vc2015config.bat +++ b/mcwin32/support/vc2015config.bat @@ -2,11 +2,15 @@ rem rem Microsoft Visual Studio C/C++ 2015 rem +echo Configure: Microsoft Visual Studio C/C++ 2015 if not defined GNUWIN32 ( set GNUWIN32=\devl\gnuwin32 ) if not defined PERL ( set PERL=perl ) -%PERL% makelib.pl --busybox=./support/busybox "--inno=C:/Program Files (x86)/Inno Setup 5/iscc" vc2015 %1 %2 %3 %4 +if not defined INNO ( + set INNO="C:/Program Files (x86)/Inno Setup 5/iscc" +) +%PERL% makelib.pl --busybox=./support/busybox --inno=%INNO% vc2015 %1 %2 %3 %4 diff --git a/mcwin32/support/vc2017config.bat b/mcwin32/support/vc2017config.bat index cfc49d62..ad18c0e7 100644 --- a/mcwin32/support/vc2017config.bat +++ b/mcwin32/support/vc2017config.bat @@ -2,11 +2,15 @@ rem rem Microsoft Visual Studio C/C++ 2013+ rem +echo Configure: Microsoft Visual Studio C/C++ 2013 if not defined GNUWIN32 ( set GNUWIN32=\devl\gnuwin32 ) if not defined PERL ( set PERL=perl ) -%PERL% makelib.pl --gnuwin32=%GNUWIN32% --icu=auto vc2017 %1 %2 %3 %4 +if not defined INNO ( + set INNO="C:/Program Files (x86)/Inno Setup 5/iscc" +) +%PERL% makelib.pl --busybox=./support/busybox --inno=%INNO% vc2017 %1 %2 %3 %4 diff --git a/mcwin32/support/vc2019config.bat b/mcwin32/support/vc2019config.bat index 2cb95795..456effa4 100644 --- a/mcwin32/support/vc2019config.bat +++ b/mcwin32/support/vc2019config.bat @@ -2,11 +2,15 @@ rem rem Microsoft Visual Studio C/C++ 2019 rem +echo Configure: Microsoft Visual Studio C/C++ 2019 if not defined GNUWIN32 ( set GNUWIN32=\devl\gnuwin32 ) if not defined PERL ( set PERL=perl ) -%PERL% makelib.pl --gnuwin32=%GNUWIN32% --icu=auto vc2019 %1 %2 %3 %4 +if not defined INNO ( + set INNO="C:/Program Files (x86)/Inno Setup 5/iscc" +) +%PERL% makelib.pl --busybox=./support/busybox --inno=%INNO% vc2019 %1 %2 %3 %4 From e39257b5854b2aac79483390e77ab41984263199 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 5 Feb 2023 13:54:58 +0800 Subject: [PATCH 17/39] 4.8.29 updates --- INSTALL.txt | 133 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 96 insertions(+), 37 deletions(-) diff --git a/INSTALL.txt b/INSTALL.txt index 4a7ea004..4d2c8769 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -1,68 +1,127 @@ - Midnight Commander Win32 Native + Midnight Commander Win32 Native build and installation tools. Requirements: - o gnu-win32. + o Suitable compiler chain, from one of the following - o Open Watcom 1.9 - or Microsoft Visual Studio 2013 (or greater). + o Open Watcom 1.9 or the later 2.0. + o Microsoft Visual Studio 2013 (or greater). + o mingw32/64 - o perl. + o Perl - Make system generation and run-time support. - o gtk-win32 (optional). + o Unix binary tools - Make system run-time support. - o Inno Setup. + o InnoSetup - Required for the creation of installation packages. - Required for the creation of installation packages. Components: - o mcsrc Midnight Commander source (currently 4.8.21), - mc-win32 changes enclosed within "if defined(WIN32)" - and/or //WIN32 comment blocks. + o mcsrc - Midnight Commander source (currently 4.8.29). - o mcwin32 Windows specific code and build env. + mc-win32 changes enclosed within "ifdefined(WIN32)" + and/or are labelled with "//WIN32" comment blocks. - Build steps: + o mcwin32 - Windows specific code and build env. - a. Install the gnuwin32 tool set or similar. (optional) set the - PATH environment variable to include the win32 sub-directory which - contains console versions of several GNU tools, including gmake. - Source: http://unxutils.sourceforge.net/ + Build steps: - b. Compiler installation + 1. binutils - Either Open-Watcom, install the current Open Watcom 1.9 installation - or MSVC 2013 or greater is required. The installation should visible + A unix style bintools must be available, plus the installation needs to be visible within the current PATH. - c. Perl installation + Examples: + + o gnuwin32 [ http://unxutils.sourceforge.net/ ] + + Note: + These set of tools are aging, for example the gmake bundled with gnuwin32 is + an older 3.81 release, which wont function correctly. GNU make 4.0 or greater + is required, advise replacing with the bundled 'mcwin32/support/gmake-42.exe'. + + o msys2 + + Note: cygwin is not suitable nor supported. + + + 2. Compiler installation + + One of the following C/C++ toolchains needs to be installed, plus the installation + needs visible within the current PATH. + + Suitable distributions include: + + o Open Watcom 1.9 or the later 2.0. + o Microsoft Visual Studio 2013 (or greater). + o mingw32/64 [ experimental ]. + + + 3. Perl installation + + A perl installation needs be available plus the installation should visible within + the current PATH. + + Suitable perl distributions include: + + o ActiveState Perl. + o Strawberry Perl. + + + 4. InnoSetup installation, optional + + Install InnoSetup 5.6.x within its default installation path; if modified the + arguments to the support scripts below shall need to tbe adjusted to match. + + This package is optional and only required if an installer is being built. + + 6.x Inno and later is also an option, but the Installer will only function on Vista + or greater. Later versions of Inno on longer support Windows 2000, XP, and Server + 2003. + + + 4. Prime the build tree; generate makefiles + + $ cd mcwin32 + + $ support\vc2015config.bat + or $ support\vc2017config.bat + or $ support\vc2019config.bat + or $ support\owcconfig.bat + or $ support\owc20config.bat + + Note: + These scripts execute the perl module makelib.pl which generates Makefiles targeted + for the specified toolchain. + + + 5. Build the entire tree with: - A perl installation must be available, examples include ActiveState Perl, - Strawberry Perl. The installation should visible within the current PATH. + $ gmake release + or $ support\gmake-42 release - d. For older builds (pre 4.8.19), install the 'all-in-one-bundle' within the - root under the directory 'gtk'. - Source: http://www.gtk.org/download/win32.php + 6. To create the installer. - e. Prime the tree; generate makefiles + $ support\gmake-42 release package + or $ start mc-inno-setup.iss + + Note: + Alternatively copy the bin tree your desired install location, as the application + is portable. +w - cd mcwin32 - - support\vc2015config.bat - or support\vc2017config.bat - or support\vc2019config.bat - or support\owcconfig.bat + 7. Finally, please review the packaged example alternative configurations as win32 + development environments can be problematic, dependent on the host setup: - f. Build, + o .github/workflows, github build actions for latest OWC, MSVC abd MINGW toolchains. - [g]make [release] + o Appveyor CI integration notes under mcwin32/support. - g. To create the installer and/or copy the bin tree your install location. + plus other helper scripts under mcwin32/support. - start mc-inno-setup.iss +Last Update: Feb/2022 =end= From 793f5270763b1a60b7455ce91abbac7f3cef7cb3 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 5 Feb 2023 16:48:44 +0800 Subject: [PATCH 18/39] true top_builddir and top_srcdir --- mcwin32/makelib.pl | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/mcwin32/makelib.pl b/mcwin32/makelib.pl index 652f0527..d6b43aec 100644 --- a/mcwin32/makelib.pl +++ b/mcwin32/makelib.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: makelib.pl,v 1.25 2023/01/31 17:07:13 cvsuser Exp $ +# $Id: makelib.pl,v 1.26 2023/02/05 08:33:07 cvsuser Exp $ # Makefile generation under WIN32 (MSVC/WATCOMC/MINGW) and DJGPP. # -*- perl; tabs: 8; indent-width: 4; -*- # Automake emulation for non-unix environments. @@ -148,6 +148,7 @@ BEGIN }, 'mingw64' => { # MingW64 (64-bit mode) + ISWIN64 => 'yes', TOOLCHAIN => 'mingw64', TOOLCHAINEXT => '.mingw64', CC => 'gcc', @@ -243,9 +244,10 @@ BEGIN LSWITCH => '', XSWITCH => '-Fe', AR => 'lib', + RC => 'rc', # no, /nologo option CINCLUDE => '', RTLIBRARY => '-MDd', - CFLAGS => '-nologo @RTLIBRARY@', + CFLAGS => '-nologo @RTLIBRARY@ -Dinline=__inline', CXXFLAGS => '-nologo @RTLIBRARY@ -EHsc', CDEBUG => '-Zi -RTC1 -Od', CRELEASE => '-O2 -DNDEBUG', @@ -737,6 +739,7 @@ BEGIN RMDIR => '@BINPATH@rmdir.exe', ISWIN32 => 'yes', + ISWIN64 => 'no', PATHSEP => ';', DEFS => '-DHAVE_CONFIG_H -DWIN32=0x501', @@ -1173,6 +1176,7 @@ BEGIN my $x_tmpdir = undef; my $x_compiler = ''; my $x_version = ''; + my @x_include = (); my @x_sysinclude = (); my $x_command = ''; @@ -3040,6 +3044,11 @@ BEGIN } } + my $relpath = (File::Spec->file_name_is_absolute($dir) ? $CWD : + dos2unix(File::Spec->abs2rel($CWD, "${CWD}/${dir}"))); + print "relpath=${relpath}\n" + if ($o_verbose); + my $continuation = 0; while () { $_ =~ s/\s*(\n|$)//; # kill trailing whitespace & nl @@ -3179,8 +3188,8 @@ BEGIN } # replace tags - $x_tokens{top_builddir} = ($dir eq '.' ? '.' : '..'); - $x_tokens{top_srcdir} = ($dir eq '.' ? '.' : '..'); + $x_tokens{top_builddir} = $relpath; + $x_tokens{top_srcdir} = $relpath; if ($type eq 'owc') { # OpenWatcom if ('-i=' eq $x_tokens{ISWITCH}) { $x_tokens{CINCLUDE} =~ s/-I([^\s]+)/-i=\$(subst \/,\\,$1)/g; @@ -3382,7 +3391,7 @@ BEGIN sub -cannon_path($) +cannon_path($) #(name) { my $path = shift; my ($volume, $directories, $file) = File::Spec->splitpath(File::Spec->canonpath($path)); @@ -3402,6 +3411,24 @@ BEGIN } +sub +unix2dos($) #(name) +{ + my $name = shift; + $name =~ s/\//\\/g; + return $name; +} + + +sub +dos2unix($) #(name) +{ + my $name = shift; + $name =~ s/\\/\//g; + return $name; +} + + sub System($) # (cmd) { From b24724cd4a88ddfedda28107c778b36dccbeace2 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 5 Feb 2023 20:22:41 +0800 Subject: [PATCH 19/39] ci: quiet warnings --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fba5681d..2e12bac5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -87,7 +87,7 @@ jobs: .\support\gmake-42 release build - name: Package - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: package-${{ matrix.config.toolchain }} path: mcwin32/bin.${{ matrix.config.toolversion }}/release/* @@ -108,3 +108,4 @@ jobs: with: files: ./mcwin32/releases/mcwin32-build*-setup.exe draft: true + From 572b119360644fd2acafbdde6cd27ade78741718 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 5 Feb 2023 21:40:55 +0800 Subject: [PATCH 20/39] ci: warnings --- .github/workflows/build.yml | 2 +- INSTALL.txt | 46 +++++++++++++++++++++++++++---------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2e12bac5..aac7c605 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,7 +36,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Checkout submodules run: | diff --git a/INSTALL.txt b/INSTALL.txt index 4d2c8769..d73eb545 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -30,8 +30,8 @@ 1. binutils - A unix style bintools must be available, plus the installation needs to be visible - within the current PATH. + A unix style bintools needs to be available, plus the installation should be + visible within the current PATH. Examples: @@ -49,8 +49,8 @@ 2. Compiler installation - One of the following C/C++ toolchains needs to be installed, plus the installation - needs visible within the current PATH. + One of the following C/C++ toolchains needs to be available, plus the installation + should be visible within the current PATH. Suitable distributions include: @@ -58,11 +58,13 @@ o Microsoft Visual Studio 2013 (or greater). o mingw32/64 [ experimental ]. + Note: OpenWatcom is currently utlised for releases. + 3. Perl installation - A perl installation needs be available plus the installation should visible within - the current PATH. + A perl installation needs to be available plus the installation should be visible + within the current PATH. Suitable perl distributions include: @@ -73,12 +75,13 @@ 4. InnoSetup installation, optional Install InnoSetup 5.6.x within its default installation path; if modified the - arguments to the support scripts below shall need to tbe adjusted to match. + arguments to the support scripts below shall need to tbe adjusted to match, + set the envvar INNO="" prior to priming the tree. This package is optional and only required if an installer is being built. 6.x Inno and later is also an option, but the Installer will only function on Vista - or greater. Later versions of Inno on longer support Windows 2000, XP, and Server + or greater. 6.x and later versions of Inno no longer support Windows 2000, XP, and Server 2003. @@ -102,16 +105,34 @@ $ gmake release or $ support\gmake-42 release + Usage: + + | make [VERBOSE=1] [release or debug] target + | + | Build one or more of the following targets recursively within each sub-directory + | for the toolchain . + | + | Options: + | VERBOSE - increase run-time diagnostics; suppress stderr filtering. + | + | Targets: + | + | build - build everything. + | package - build package. + | clean - delete everything which can be remade. + | vclean - delete all. + | help - command line usage. + 6. To create the installer. $ support\gmake-42 release package or $ start mc-inno-setup.iss - + Note: - Alternatively copy the bin tree your desired install location, as the application - is portable. -w + Alternatively zip/copy the bin tree to your desired install location, as the + application is portable. + 7. Finally, please review the packaged example alternative configurations as win32 development environments can be problematic, dependent on the host setup: @@ -125,3 +146,4 @@ w Last Update: Feb/2022 =end= + From 3184671ecc760d86c4b98c4b178f278092f5bef3 Mon Sep 17 00:00:00 2001 From: adamyg Date: Mon, 20 Feb 2023 01:14:14 +0800 Subject: [PATCH 21/39] extended def include --- mcwin32/libtool_win32.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcwin32/libtool_win32.pl b/mcwin32/libtool_win32.pl index b7a532f4..331b9ad6 100644 --- a/mcwin32/libtool_win32.pl +++ b/mcwin32/libtool_win32.pl @@ -492,7 +492,7 @@ Error("link: $_ $val, not a valid symbol file : $!") if (! -f $val); - if ($val =~ /\.def$/i) { # + if ($val =~ /\.def$/i || $val =~ /\.def\./i) { # or ParseDefFile($val, \@EXPORTS, \$DESCRIPTION); } else { # ParseSymFile($val, \@EXPORTS); From 170246383dab41bbbd82d62080737ef3876754fd Mon Sep 17 00:00:00 2001 From: adamyg Date: Mon, 20 Feb 2023 01:15:17 +0800 Subject: [PATCH 22/39] za99 option --- mcwin32/makelib.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mcwin32/makelib.pl b/mcwin32/makelib.pl index d6b43aec..b4d0fc3b 100644 --- a/mcwin32/makelib.pl +++ b/mcwin32/makelib.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: makelib.pl,v 1.26 2023/02/05 08:33:07 cvsuser Exp $ +# $Id: makelib.pl,v 1.27 2023/02/08 17:44:24 cvsuser Exp $ # Makefile generation under WIN32 (MSVC/WATCOMC/MINGW) and DJGPP. # -*- perl; tabs: 8; indent-width: 4; -*- # Automake emulation for non-unix environments. @@ -575,7 +575,7 @@ BEGIN # (1) Use with caution, beta undocumented feature and not 100% stable. # (2) Avoid changing the call convention from #r/#s, otherwise runtime library issues. # - CFLAGS => '-q -6r -j -ei -db -zlf -bt=nt -bm -br -aa -sg', + CFLAGS => '-q -6r -j -ei -db -zlf -bt=nt -bm -br -za99 -aa -sg', CXXFLAGS => '-q -6r -j -ei -db -zlf -bt=nt -bm -br -cc++ -xs -xr', CDEBUG => '-d2 -hd -of+ ', CXXDEBUG => '-d2 -hd -od', #d2/d3 under hw generates invalid symbols @@ -706,7 +706,7 @@ BEGIN # (1) Use with caution, beta undocumented feature and not 100% stable. # (2) Avoid changing the call convention from #r/#s, otherwise runtime library issues. # - CFLAGS => '-q -6r -j -ei -db -zlf -bt=nt -bm -br -aa -sg', + CFLAGS => '-q -6r -j -ei -db -zlf -bt=nt -bm -br -za99 -aa -sg', CXXFLAGS => '-q -6r -j -ei -db -zlf -bt=nt -bm -br -cc++ -xs -xr', CDEBUG => '-d2 -hd -of+', ## CXXDEBUG => '-d2i -hd -od', From 212a97b05e4d6444d4267fdbcc3e1fafdaa9b94f Mon Sep 17 00:00:00 2001 From: adamyg Date: Mon, 20 Feb 2023 01:16:02 +0800 Subject: [PATCH 23/39] ignore packageinfo.h --- INSTALL.txt | 2 +- mcwin32/.cvsignore | 2 ++ mcwin32/.gitignore | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/INSTALL.txt b/INSTALL.txt index d73eb545..b6b04add 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -144,6 +144,6 @@ plus other helper scripts under mcwin32/support. -Last Update: Feb/2022 +Last Update: Feb/2023 =end= diff --git a/mcwin32/.cvsignore b/mcwin32/.cvsignore index 70322421..0e9c669e 100644 --- a/mcwin32/.cvsignore +++ b/mcwin32/.cvsignore @@ -9,6 +9,7 @@ objects.* obj.* Makefile buildinfo.h +packageinfo.h BUILDNUMBER midnight-commander.org owcsetup.dbg @@ -29,3 +30,4 @@ mc.aps *.sav *.bak *.orig + diff --git a/mcwin32/.gitignore b/mcwin32/.gitignore index 5c0d93aa..01bc738b 100644 --- a/mcwin32/.gitignore +++ b/mcwin32/.gitignore @@ -14,6 +14,7 @@ CVS/ bin_shortcut.lnk Makefile buildinfo.h +packageinfo.h BUILDNUMBER owcsetup.dbg testaccounts.txt From 6e0cfc916ee7551051e0dec261cb7b1ba63640ed Mon Sep 17 00:00:00 2001 From: adamyg Date: Mon, 20 Feb 2023 01:35:13 +0800 Subject: [PATCH 24/39] 2.27.0 specialisation, 3.x.x prep --- mcwin32/libmbedtls/.cvsignore | 1 + mcwin32/libmbedtls/.gitignore | 1 + mcwin32/libmbedtls/Makefile.in | 8 ++++---- .../win32/{libmbedcrypto.def => libmbedcrypto.def.2.27.0} | 4 ++-- .../win32/{libmbedtls.def => libmbedtls.def.2.27.0} | 4 ++-- mcwin32/libmbedtls/win32/libmbedtls.rc | 8 ++++---- .../win32/{libmbedx509.def => libmbedx509.def.2.27.0} | 4 ++-- mcwin32/releases/.gitignore | 2 +- 8 files changed, 17 insertions(+), 15 deletions(-) rename mcwin32/libmbedtls/win32/{libmbedcrypto.def => libmbedcrypto.def.2.27.0} (99%) rename mcwin32/libmbedtls/win32/{libmbedtls.def => libmbedtls.def.2.27.0} (98%) rename mcwin32/libmbedtls/win32/{libmbedx509.def => libmbedx509.def.2.27.0} (96%) diff --git a/mcwin32/libmbedtls/.cvsignore b/mcwin32/libmbedtls/.cvsignore index c4cfdb82..19e705a3 100644 --- a/mcwin32/libmbedtls/.cvsignore +++ b/mcwin32/libmbedtls/.cvsignore @@ -2,6 +2,7 @@ mbedtls-2.13.0 mbedtls-2.16.6 mbedtls-2.27.0 mbedtls-3.2.1 +mbedtls-3.3.0 .unpacked.* Makefile *.err diff --git a/mcwin32/libmbedtls/.gitignore b/mcwin32/libmbedtls/.gitignore index a40fc4fd..905a4627 100644 --- a/mcwin32/libmbedtls/.gitignore +++ b/mcwin32/libmbedtls/.gitignore @@ -2,6 +2,7 @@ mbedtls-2.13.0/ mbedtls-2.16.6*/ mbedtls-2.27.0*/ mbedtls-3.2.1*/ +mbedtls-3.3.0/ .unpacked.* Makefile *.err diff --git a/mcwin32/libmbedtls/Makefile.in b/mcwin32/libmbedtls/Makefile.in index d00d444b..2fbc942d 100644 --- a/mcwin32/libmbedtls/Makefile.in +++ b/mcwin32/libmbedtls/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.11 2023/02/03 17:10:09 cvsuser Exp $ +# $Id: Makefile.in,v 1.12 2023/02/19 17:10:46 cvsuser Exp $ # libmbedtls makefile. # # @@ -254,7 +254,7 @@ $(MBEDCRYPTOLIB): $(CRYPTO_LIBOBJS) INSTALLED+= $(D_BIN)/libmbedcrypto.$(VERSION).dll $(MBEDCRYPTODLL): LIBNAME=libmbedcrypto -$(MBEDCRYPTODLL): LIBDEF=-export-symbols win32/libmbedcrypto.def +$(MBEDCRYPTODLL): LIBDEF=-export-symbols win32/libmbedcrypto.def.$(VERSION) $(MBEDCRYPTODLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDCRYPTO_SOURCE -D_WINDLL $(MBEDCRYPTODLL): $(CRYPTO_DLLOBJS) $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ @@ -269,7 +269,7 @@ $(MBEDX509LIB): $(X509_LIBOBJS) INSTALLED+= $(D_BIN)/libmbedx509.$(VERSION).dll $(MBEDX509DLL): LIBNAME=libmbedx509 -$(MBEDX509DLL): LIBDEF=-export-symbols win32/libmbedx509.def +$(MBEDX509DLL): LIBDEF=-export-symbols win32/libmbedx509.def.$(VERSION) $(MBEDX509DLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDX509_SOURCE -D_WINDLL $(MBEDX509DLL): $(X509_DLLOBJS) $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ @@ -284,7 +284,7 @@ $(MBEDTLSLIB): $(TLS_LIBOBJS) INSTALLED+= $(D_BIN)/libmbedtls.$(VERSION).dll $(MBEDTLSDLL): LIBNAME=libmbedtls -$(MBEDTLSDLL): LIBDEF=-export-symbols win32/libmbedtls.def +$(MBEDTLSDLL): LIBDEF=-export-symbols win32/libmbedtls.def.$(VERSION) $(MBEDTLSDLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDTLS_SOURCE -DLIBMBEDTLS -D_WINDLL $(MBEDTLSDLL): $(TLS_DLLOBJS) $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ diff --git a/mcwin32/libmbedtls/win32/libmbedcrypto.def b/mcwin32/libmbedtls/win32/libmbedcrypto.def.2.27.0 similarity index 99% rename from mcwin32/libmbedtls/win32/libmbedcrypto.def rename to mcwin32/libmbedtls/win32/libmbedcrypto.def.2.27.0 index 34a4ad1c..f6506c9a 100644 --- a/mcwin32/libmbedtls/win32/libmbedcrypto.def +++ b/mcwin32/libmbedtls/win32/libmbedcrypto.def.2.27.0 @@ -1,6 +1,6 @@ -;$Id: libmbedcrypto.def,v 1.3 2021/11/08 13:13:02 cvsuser Exp $ +;$Id: libmbedcrypto.def.2.27.0,v 1.1 2023/02/19 17:10:37 cvsuser Exp $ ; -; libmbedcrypto library definition (4.16.6) +; libmbedcrypto library definition (2.27.0) ; DESCRIPTION "libmbedcrypto" EXPORTS diff --git a/mcwin32/libmbedtls/win32/libmbedtls.def b/mcwin32/libmbedtls/win32/libmbedtls.def.2.27.0 similarity index 98% rename from mcwin32/libmbedtls/win32/libmbedtls.def rename to mcwin32/libmbedtls/win32/libmbedtls.def.2.27.0 index a06da506..942e1984 100644 --- a/mcwin32/libmbedtls/win32/libmbedtls.def +++ b/mcwin32/libmbedtls/win32/libmbedtls.def.2.27.0 @@ -1,6 +1,6 @@ -;$Id: libmbedtls.def,v 1.3 2020/05/01 14:33:00 cvsuser Exp $ +;$Id: libmbedtls.def.2.27.0,v 1.1 2023/02/19 17:10:37 cvsuser Exp $ ; -; libmbedtls library definition (4.16.6) +; libmbedtls library definition (2.27.0) ; DESCRIPTION "libmbedtls" EXPORTS diff --git a/mcwin32/libmbedtls/win32/libmbedtls.rc b/mcwin32/libmbedtls/win32/libmbedtls.rc index c6e79a3b..3e4eb65f 100644 --- a/mcwin32/libmbedtls/win32/libmbedtls.rc +++ b/mcwin32/libmbedtls/win32/libmbedtls.rc @@ -1,4 +1,4 @@ -//$Id: libmbedtls.rc,v 1.3 2020/05/01 14:33:00 cvsuser Exp $ +//$Id: libmbedtls.rc,v 1.4 2023/02/19 17:10:37 cvsuser Exp $ // // WIN32 resource file // @@ -8,9 +8,9 @@ LANGUAGE 0x09,0x01 #define RC_VERSION VERSION_1, VERSION_2, VERSION_3, 0 - -#define __STRINGIZE(__x) #__x -#define STRINGIZE(__x) __STRINGIZE(__x) + +#define __STRINGIZE(__x) #__x +#define STRINGIZE(__x) __STRINGIZE(__x) VS_VERSION_INFO VERSIONINFO FILEVERSION RC_VERSION diff --git a/mcwin32/libmbedtls/win32/libmbedx509.def b/mcwin32/libmbedtls/win32/libmbedx509.def.2.27.0 similarity index 96% rename from mcwin32/libmbedtls/win32/libmbedx509.def rename to mcwin32/libmbedtls/win32/libmbedx509.def.2.27.0 index 15b91fe2..3c1be300 100644 --- a/mcwin32/libmbedtls/win32/libmbedx509.def +++ b/mcwin32/libmbedtls/win32/libmbedx509.def.2.27.0 @@ -1,6 +1,6 @@ -;$Id: libmbedx509.def,v 1.3 2020/05/01 14:33:00 cvsuser Exp $ +;$Id: libmbedx509.def.2.27.0,v 1.1 2023/02/19 17:10:37 cvsuser Exp $ ; -; libmbedx509 library definition (4.16.6) +; libmbedx509 library definition (2.27.0) ; DESCRIPTION "libmbedx509" EXPORTS diff --git a/mcwin32/releases/.gitignore b/mcwin32/releases/.gitignore index d2d9c776..855816d3 100644 --- a/mcwin32/releases/.gitignore +++ b/mcwin32/releases/.gitignore @@ -3,4 +3,4 @@ mcwin32.manifest.bat mcwin32.signature.bat mcwin32.manifest* *.exe - +*.zip From 73350c63c5f9bd92980a56d3dfbe28168e9daeb2 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 5 Mar 2023 12:13:54 +0800 Subject: [PATCH 25/39] libz 1.2.13 #48 --- mcwin32/libz/Makefile.in | 5 +++-- mcwin32/libz/zlib-1.2.13.tgz | Bin 0 -> 1497445 bytes 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 mcwin32/libz/zlib-1.2.13.tgz diff --git a/mcwin32/libz/Makefile.in b/mcwin32/libz/Makefile.in index 94bd13e4..479eb8f9 100644 --- a/mcwin32/libz/Makefile.in +++ b/mcwin32/libz/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.10 2023/02/03 17:10:09 cvsuser Exp $ +# $Id: Makefile.in,v 1.11 2023/03/05 04:06:36 cvsuser Exp $ # libz makefile # # @@ -129,7 +129,8 @@ ZDLL= $(D_LIB)/$(LP)z.la #VERSION= 1.2.7 #VERSION= 1.2.8 -VERSION= 1.2.11 +#VERSION= 1.2.11 +VERSION= 1.2.13 VERSIONSPEC= $(subst .,:,$(VERSION)) VERPACKED= zlib-$(VERSION).tgz diff --git a/mcwin32/libz/zlib-1.2.13.tgz b/mcwin32/libz/zlib-1.2.13.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d115fc690fa59d3be51b3442158876536140b6c2 GIT binary patch literal 1497445 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%0AaJ8l1+I?FG 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 `Wbs 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

%nJqqq(x?{j zrQ2d&d=nEEDooXsxYLLJVJ9;M;F}D(PQHMTl$zih%uMdjCWPN;X` zAsQ+!fO2EI(EHP_H5d6QQ0OcLMStpdWSkD^>wDQ9%%)=P`6uV=vtOA}z+-ev=xnH`E*dsY-BErHV& znlYttLETr#m|&64;(JQ)o~5ED%Akqt$=fM>maHm&9m8{pXPO*<>C(W> z!CWU9s>CzxOk2Ix*c&nkXFJ6PC_zuAp;-v?MHP^l&A_t`COUzG9x#C{TFyP@YHQF~ z(;nWT4m`e79oR}nE7B+d*~qq(^j3;&2@e(=Q-S<@!9#B?G$=A4T0;@qy}(!_b_7x!@&YHugYp-j)S>nb|C1bQv&Gx<2xna;fMIlV=s;l(^09!z$ zzmkbX$LQJeoxe6^JA&FMqgHEX8cPrDFfQ}=dS@o!RZ#&l1WOlF z7esr$faK-*-ADzuJTi@`eVfk|q92SYOv3_ZrQ$7TPNacq;8yJd>{WB-@QjAc>0e;4 zLjuyNXr)0-s7G@JBp%zR+Y1*vUx5T7I16BY#3YG9rKyZKDAF=Gv6!Wy&kJQ8rnoC3 zbGbpCF;SNivO9T9lM^oUo-@v&xs_Kake9sFRB3Z??ULaH>+Fc^biFU8(4w&C%r7Z0 z`t0Z6NT!|rO$i-_qxP=QP;*#u6e0#)&bO8gp-2pt6P>my4YMhj1Xrds8cUw7n5|rS z-drV>=D1gC;}B*DFJO5II8osnS&yx)%~W=6HBHneBoJDNMBo;oxIi#ZYT{E2d-s~U zbb}e0jhSyOa#=Rg1YPPJ5f0Ps4!k;wn41sdJ+}%KX=uKnp;Ff2Qc-4MSB`s{1g|6*en^8R1D9 z#tV>kpB&uncT;Sf0ESs#XQ1|6Qq)|zm`~P9yDle{Klm^n2Za_neBQFRfFTmnOmBQ| z9_O=y*E$`M+T*VVZv(*N4mERh(ZEbq(KeR@55g@SE{*th?d~Atu{^hC;OJBz1B9e}ajCjOBH{kZ=wK{}N7r)jdE*l>V?IA$^G>_&%*EPZ zKQJquS<|%im-tHsm0!Wc%EAe84mrtXnZ@^HofH4!USby>I_ipeO|y5|RTbk%*${O@ zaXU!-v~;EyVR{;J#r%Bt7-*VNZsZohczfGz^~%Ww76qOV*IU;M0-N1z;oVEOa>=MD zpbi&Yd!q7(7t-n=a9W(Bxtvb8zL0=OHml~O#Gd?RIwwsk!;Mq)oifJ-Y_Tr1(<%tS zj5J4z8^JCJs^snP#1D`Gz+)x(X|M+Pv2#z{{z&jJ`nj{53U2GdGlve^t$5*HR6dUv zsK932nYx<^F71|y%?f1(R14kheOMh<7vVe%4@gA9p*n&70{MZQP^2Ue-;S)DE`+K< zh4?O93CVi5yvVK`0G)U<1>0*`U`yblf>V4(3Vbxc?>ggDap~fXO*YGrR5lGSsPfiS zPt|`}U5h%ks`kBV6A-={-jwJqeT1cIi?+v@OIm$K(PTa&{gQS}gwB~Wl20oC$rpb8 z`G#-CfAL=;Bli54t{*=o21D3GxNIN47tui*ww8sK-Bot)?l#1&yFdMht_2;T{aP84 zCzPm_E~F}#N$tMhyU5)HychR^gFT73b56hMR#f0+z8bF;DS6Y+W88`1CP*sNwR^OF z5j`!_?#gNF8MMxvh!SdpRAOj=3MF$@y)Fg&Zd0r`MD=g!zSFi z&ae?kQXICy)46#Y$h!}$@aJ@9;TU+VmDBDv*g9|D22HSh`(}g<0N-j=xKq~KOe690 z#>r!+hLlTpD2szq_RX8M&qySufWB>;Sf|~pQV0Ne2;tm=Uk)xcc*AbK#6k@mO`eR+ z--pMCf3BDEZK&Se9(>!-xr2 zNHviEJf27$qxb1q68~Shan?^j72p7q2bK`Z?43xNaXRTIIOZ0ouHLJ)cOrwDO|)KX zKNy-8iLCA&7^CJhXVeT?E-Iy7FxaQd5UNftt$qmVmJkpE2D?t{)A%u028u{58WDGOW!hoWbC2x3A^Q%BiX zRY$KNE3>ywofa;fjwbV>bbkULgNKl+-f~--X3UcfszO5Zu7_CNPE>V0#7f{U*!2_w z!EG;H4*KEO`nhrWUfw%~vPOq+`sBiqVj;!fBg?yORRh#2q6;ceH?+%c0A7#cs2BS4zW9tx*n`r%;Gf(!RHCRb*8Me2z3XrC@ad+FvSAiSC>RW zJ;l7R0nf@)b3Xk5UfDAz1py067~AS4?v3rJ3e}LlAwi$&7QF~ki^JU@CA%pQCDi%} z%m>*0W`iZg;p^52Qa<}3^fJqwD;lCA3H-*!asm^LIlbu#^zO8*ox9hvY*+BC<0o?& zw~s3ur?H*_=>N}%nTiR;12|uXKTfAF2LJH*>jsg%z3m4B(Xk|0`S7`b&KYU_2v)Z+ z3aVmgP=m&kFAp9c9@LIhuJxu5HSm){uJWrTqfSg8(@&v?qQZ1sGuR-k8)3L(*noOh zkFGHAKrPU$cIHX|@4=R_kl6%l8j8+K7}S9;GS^6d*^ol2mVl{&AR&R@8I^MXD@qyM ziavUFkfr00+SwPh@!_2z-DPxRc1;?xX6aC}Vm&Kkirkv%{mA*+D4IDk1QU1^uw!hA ztVZ7l@oFh@imgS6mJgl-=_Wtq-Lu@5^s0;*VILfSV|zFb)gdk#og=0cM5@h4@`w<> zE*`;BXoifuSuveYDbWk&8i3LbSDGb+34Gm38@g-kIT4krH88TJ!83ubb*w>Y`3!HJ z<+%+%?4=_$@AiW}eOYUtP~)kH>zYHq+QKwc^`6a7*Afjsb!h$PGHomG|A=MLxZbdD zE(rQD@k)`zYIh{x zdbnMscYT711J!t%LA8VKEdfG$2Yw)z;C*C`*EvZ=iU-h5@EICE1GvXFEWe^j!#?JC zm*NpfA!-0pCfC*KOr;nizjZi4seP3#sReI5FM7Cb(!fcSd3U5HlBkxlzQgt8L$mBe z5i@4o%fH9QEyu$1s_T4@b0If$Pr?RasfX9{XsOt1FZMjFN9`UD&3#7eENzvI26P`e zwGr?Y3_J_u&S$H!tZ~kDekus)YPnY3yDQr2s0bJ18?PEBWzzM&_WSU$n|0S4B}}^F zW~@`~blcd~O8}c+&Kz7fsbVoOX!mTzd;%s_k4VSC{A>U*WXTw>JO-MFEAXLX=;Qq~ zf>Dh=S+GY~L&05MQQH0W)H*do4kY2`E4G@Q-=hFYWIXSWllb|o``-afqThZwjR!>j zXg$It1w2jMt6?eRdk2Aul!CBqKiP8c-#>VE+S5|n$;d!AB{2f*ge!> zMEaw4xLKNG(l89nI(1<)8r@+G*FE`XFd4VShTi|JaFphq$d~Iokq72Z&Kw`k{=iX7hObm&sUX zM&~^)%N{E-6IS#^b5L!10nHheG0G;un+6R{NH<^lB$TmtD>5~F(|zrU7(cdLr>1ov zalUEo4aj_M>YE)gw{W}BsdIdo%70^V_INjF?D@6Ku#4fe`fv``6r_4L^@Rn!njUAq zPVs^y*x(Dq4PLbBPN7Pn8uJ73fD}E3!JiTD*y#2JXUY&OV1E! zU4+;UbOw}F>olQlVFj0cP2g2WXacF=#kTJ8@b1)#y}MT{?2Itq*VG?}M}~p_w7)kB zj^1y{dGwS0Px|=2JCg4&@O}Rhz2~-2YLOOJO(}3)Y}&XQizAUO%i1ruJPpl9VPg`z zuZEg>_kTI^-0{vy!`!{oCH#p=!#SCVw=LoJ=TMpO( zHU?d7xy!jG_fR#r2OXlZ{Xj1qsfn1?X+%z|k;+)x*`(yvG7lc5lekv|q`n!hW9(@ zMJEY8Mr@bWF7Y>AEjo?W88u%mFIO7Oy5yZVKce8@I6JQ!Xsp(22GA4nGfOvpIP);4 z)YHUEnC|Hmwko9si%QtRyu-r;TO5uWR2eVQ&H{14z)tU5wAL?ctMk)J1h~v_dk35W z;7AmB&j@VI91h_#i1!BInbtGLW+IONRIjROmB9_5LHq(!Abl7g2~A|ax_pzJ$SQn3 zAEpviw>IxROdss+YS<-LueJTT*J=AR6`+T)x62W~&N8_RHkF9m*%|v+anGV4EvkS_ z!@^>WAENI5NDhVomX2?V>%#sVzxG-=f0(@9tZcKy)@ua>N(3V4#W1<2a3}{}S#|qX z=Vo|M#k6Tm7uN!(c;7)t!i9NXG#0R4Grj$~R%*oZHyj)d6K=o_G@PW-Swv|4{ZP)o zM!>VuKofE`pO>q;uASHMakhAu0Zshz@LQ?t9-6sgEf~%X=PJ1aQ)ID2H_`fz#Qrk) z=JKBGOTooxil2SRnHK$*DQ9iU1P#ojWGMwN3mq+b;gy|+cnwNyk5G}=ggE`2v@^G-8+;-Lf>0#h+y0X;^I zND0w+Vd0^K{SK%P!dxw64g$1GgmbZMgQ`(Vvzy>s_3Rakh#RjgDd!0k<5Iq0PqmI} z=x;*!2e;uE&9xBUMt$IZCalE!z(`DVTooEjFFQBg>794xz7plu&5M^pU$`2)$lolg zd1>>u+D7U{GjL#6*9g3XU^;AY%fpuzke9VrbxOwaYvOW z&!p2I%BlFxyjuQiMy?RI`UOabFzM)HdvlSPRo&MS4R{wcQFud;z+%Rm`dtIR;b=}( z-Hdkp8IduC-PJ`|422c&gwo{tiGl8H9;Mde(ygz3HM$Spb z@CJI`H4iXG@rLsX<`^ja>LU%<*! z%P~{@$4UoFB>R$FC$$uRQ(Tg(wp%<~)=-%B`pfA#1|8$M(}UO2M18o8uu>nJzx65n z84f_lR8f?E$FPx*7?^x^W`;WtKpYHuV!IKEC)zl4l0%QU2swj3fPq}|xf1=M!e-{W zuT7gyZ+kfJV`b$-x5j(%(a#~ z86er-hVwyx2+sv?occ2urjhX}2pw9DI8?J>>+XAYEt7?x2>Z{E590$1C*pBahjO|t z<=LvDK^X=N83Qb>rGu=@7anp4s)pKrMDJR=*#9^G`LbAwkr&lHt|Q8Twxjp`Y!R9Y zD^Y+3U%w2?A|s(KOK4VEU1!U6Q7+%?QdYF4lW%(PeEK8F*H|tc=uk#clvs)`ENii3 zF7hah=I#O2X6f(rDue%`$GCGh?9ab`)oOzzfWYTo`RS+kn%SXqb6Z}`jBFjA?$;9ApW2D zkhbBO%sN>Cxv50DVomx-eFLrmTLluvtf}iNk!GSLhT7YC!91`(dYV1_rVcsg@9JpW zqq|d5(z`!%`<{|rNb|;NTHBJTi$(jw?bt`L%*AGMz$x>DndbK6l0*!dpGf8>A+sm{ zghZGLZ7M<_4Ii+Ek=V^o_Vxrm{wV$nO3M09`$2lZt~{`Oo#lh#QRjCv6U*0lwJVcn z*OVfCmh)3F}Ol)HuLqKB6?}szwb8eOknO{;h6tX6tMb)@;(rWJMF=F_`X?~^$@%A+GUu@YC_aCv8P-@ydlS^kgFZ0OiS{2OiKbSsU7b0F;~gQTqSp(tHeWA@<;OQ;fT?ryh0>Hz`K^5M;_f2 zclDvZfCAlsJOpdBidwN6*xeiOx$?4jj47Fy%LsIT(|b<>^yztu?p!P!_wx8A@$W@GsW&c<^4 zbS(eK*;pobl#Rs@0$Xd*>!tVKYc!nZrQ1)6Oys=Y(T_ayU@UMBY#Dhx#Axs z3j_sXzU<5dvBn?%fJ_i1qEg*gc>8P+H6ag2XZ7EY*%|yD;N(}!&hV`_WTt?5kvbHB zT4Jo3NR>DJy3;NwG{3QkYVL(iSr;_?jq!{;vE!qGES>omH1onRsB2=e-0I~0)F?Q| z0QT+_vur^oG}^*j%DOWupsWpowfPnPJLfUD!|if%_uJ*i1PdP%Ed2i{!NNaME`n!Y zAHVwhrXsj?9s;Hx;6I~ZIS;|++yZfY^K1oCXuPs`|J2ucj=dp(y~1K&kLrE!?5QHv zUkB(O-R)^=>+ZJ)3u!LEgal#V3=$r;@fr|tP&<6gzpw43o8zIk-{?d~*Q4xkh??oe zn2cSi+t+|M?A0|Yp%k2!A{)3!x3&jy%o&$QVJM$qCWXa}3qda3=&7GBwvvWL%~e%*Wp zY^{4H?zPGFqYuUw2W2Z`y79w1NGYDHNRHF_J3`E?OnOxG#Q5Ka${7iIE@-gvAmT5c z3pRL_=k^-8H+TQQ&_`S+7S?g-xWp8jB;mnD-!Wvo_qMMH>FG9@QC~LwhpN%~?#T!X zVh9D!=XP>5dyTz$d%cXh@RzQG59X-rr09i{g2V2&M2=v>(%RDq>>i9`IT>ZnRj7;a z=+C>m^_Y1oZtxQ6g>qHJIpZN5vCnsH+&9M44!3max7p0%FiR!m0@v9@72MVJPivbA z$Y>{=<0rg5sBHofHT890HB?`yUoUt=3@O9F3udyT-4Pw&MwqjPx1QU-4pf11KxI5*J6qfTUTpOFaNN27}y zNlUHjOmwTb;3k7?vAzr8VUdloO{0#KfSTNRpZO|oUvi4Iq1M9UBO5#&6_u7tGUr4+ z6?kuilZUD_cnXy73T4v?pue=+p5o=uDrBSzJHzxIbYEN<(VZyh6BQP^$W#K`HFgI; zrFV-`+AXF=Hv$Z`Z={`XY%D(RD6Wu2-ET~82$tH$L=6O+)!T|v2g_|11m*G3HHIt@ zo2@+Jy-2%*BN~2TUs>x15;D7d<1QZzqi(Nhb8GHUoA#2fEnm;Ay1Q8whO=Rliy^DR zOZd5JJ*J(vLs7wu)j&v3Ln9*H%|fGW0oA2TFSFaw*XZO8EvQsU&_&W#6Feb%ga~v6 ztxZoJy_RI^M;p;AwMYZ5k`R^MgWDr4nF>iGT2QXvjb&-f(faXIdq|%A-*G{W3!Cod z_%ctZ6=>!OB@LaQw?DrhO4xmTpZG$fU2}}pNM9mXS|xm|R>HS`aj<>I7ZvgEQNQp9 zs6pxD3VpJ=STS%D_pa$#sZxs?4Q^3dZw;bMB_aV-gJ*bC;laKX=a;L*bn$}Mj}*#s zXM1~`4q07zJ1RvDdQD2hG4<1$Pz_^~y!d+|J%Q2#+NCi$hE~UcwS1L~#P3sg8s4#u zWasWRq9CLxif)dr$Mb#@T@MOq0!3$?w^|o50rmX#dv(5qYI1>*=iOZ|IVmEnpe*3d z<4~zJLi0%KtheP=X>I2|0vU#XbTC4l8gtG|GZOLv3arwG{X%^-&y-<}T|j-NVXZ@g zVj^&33A-Ky=%~%9qLPeLASg6%2=b@Hl-Lm>(%*-|{OR%yxw$P8o$%;oh->(~^unA~ z{K6Tshha5+&Fx^XzWPWnZ@4-2eGVngCcZ>)JCfOG8z8QoB3fJnZAUr=;BF(X-Sxev zgs$sDdya8KP0OX~RlakK+D#vb1GR2VPqGxk87c{a8d7uHj8UjdyS1p5jOORl1)gnQ z;(XDDLMWA1XQ{x^5QEP3uFG6wn=AsBE^yy~YZtiECzZ|xetrDLBLB~P%1as6yz291 zuVnyj9US9LP>3N8A8wQXW*~gy*RuCY{=rIi^c61t2;`eH626e}a1`|d+gJ5v4LKd% zkcpe)7f$}(V1&@RRHXwPVf+=a@Ak`h-|2R_c;({*)kbjCId%v*9z&9`DenAHCHLgU z)srXuF>`YZ4)6diFp0mN&xWx8s17D0Z2-V36W~oZfy@mulJpauoHc$ z3uL`NT4dy6sLlMpHI*db#e))~t+nH3tI7`d`425bE;Tep{L+aaQkZX8rRr01x zej47AAwJyS6ITzrmjO|;Fnip$LYTdO2vEJwsQLfauzFpC6WN!#;L3hYIKF>yG`?RS zjPK6G>fRlT)$W@f5ifz@f<;^3^CzZ`bC~uxjP08B$i_`qvdoq?(S|pTSG4a325#Jq zj5*wuQ`8sHbU~=!L4(v7teG!hybJB=)}-d|L!d5iM)i-mL?H0( z@=zkO)k$6cPPY8O)+q!Id9#f*M#yk5H5@fm*{S(!xUcFZE&V@q{%~*9oaZ3Lzo)Wf z^AeX%z#PeFN0}HyVL(s8c4j9{TP3)`J^x7Ui{>iKu-hTyJujUO7ZRe|g`Bn>FZjg* z=o%8OLnoN9TU-mlfTVfR)O*M_x1NW1%>aO~GW*=X{{tT`xC1a1C8)!OWPynF5a&7B zV8~X3nfz4cKGO&as}r5CH_czQ%o=lK)Kb~@oOC~R=~=K=;OC*L=HYW1<*xkcl;?DN zD;cp3`2|=OE^EN&Vnzf9qqx!LP}!xTmf3k3!0>oOvAm#?2{7GPwPR;nOt~cE?Zce7 zBxn}5W`Zp9^O;1BA`_t|D&ngoLkFIi9g}!Ua~cyv#e^c=G-Q1WpYrgoP(D7p-6 zRA^pJWd;_Cti$O2m4#PbSJ>SJf5iU!7I68IKeV4e zu*`t-Rz+jGp=42!>wEp{;kS zM?JV>J*xYnYbW68fqS6-vF;cGI(8^XiOn`#W4?FX*hnxA_yLksrtLMTrJ!?D;L>YQ zOF`xqz@`5L}80lx983y^N#orNsyanDV+4|eiO#c`E@sgcfJd87Wa-vQ_ zA(6>|sYP0YxK2bp@*B?osCU#a_m7`YstRTt1!bkutCH=1rW+x>dcVJaBM`^-T)qy{ zQ3L%N;qIh20B(KiKK%uolSB<})lQK=~`p8In$?zw+&0lP>t26&N_ zZVA1pwRbc)iS7V%5gX9wq(?+U`8?WG6v^n=F317^@U~x3kj7i#ERu_!{QsvOU-5sr zxo-NmuD=>PUv(e9*g~Daizp7U0ABIdF90vry?qV%B8KY@wlsz6zvC^fW7M=wAA$_2 zB+_nl$eVxeud(xJU&Vh;Dc+C8&`E2m# z;;jhS-Q6UvYTgyMlEp{-KEa-c1_K9^=f@WpHG>cRZ|A?HQx0= zR(dj?MFF;;zqQWtiM`xNLYG+~`!28?Ga;TtwYuW)FZmlI7;CJ{`r?ZkB+xZ{qfsi7 zQseDCmQqz;dDf#P+XOS?JLc{v8!Shr8s=KeEe?S_ZHgHNcg3|jA-Zqso@`Zi&`|kRpypzCrL9*KeXO&1{YjPwzkVOOL|Z^A9mf@H=&QWGs3?m}G8^U`5? z(B32s;4^PnWfSvqzB+#+-Qp|r7^V4w1`tjuZoS&EdQ)?j{Z+iah^`=z$VCp@YEfOt zD#C>$trf4<>+iY0DZ>SvtlO#6vvMmfW9w9yQ~Yu5aWP>1x#bs>EGngpS>tzO|4@gH z7BG`49AdPGS#6z#wdFXn`(59=-!7TX7jFlBAx%7Y69?JE1X)E9l#-|cTI{*{Nu)gY zc5Nn~u~Se)0mt%Fh6+CyIg(#iF*Ep#kp8eGyKev@k+?-A}Pa%_KSjM ziQw=m9N8k=QNh;HP2$^@&0vGNvTeM!FDcDU+7i7gtXH6{`}krGPZn4Ex})RNX>_v6 zpYq*`Z^y29f)HL6!O``b6(<7rZ(&Loc;@H7tRg(aOMIx@LmZ;P>hR3PY<z_( zaZ-s^QqkvSbH9PTlR0+%94H&)RNmwc!5?*1OSck(Xxe>NC`z6cP$~`ZDKQ>D(|v~)`W_+Cq1+orfGKbP)Om@@$E9IX^q|@JJ{|&+{_E9IzFka`Qa)&repxtbUZKpPE1FysM{$ z)GYFW1bXa1w^H6@5I*i=tv^k;?X{#F-~qu&qv#~>o^o?eI3M{gnv8a}olOQgDzYrr zWW*zgS&g>g0s3~S{fhzeLqRdcb!t}WBG$s=zE+b#_A zI6TMx45VRbV(w8j)tXVsBZImEo2dSGg8tIJ)9AsQe{_(pIz8q3{7?g zrGLaf;;HX_4ROpWKls?zsgvU0blcISOyeaTq?XSXN~@?z=zQ^PP=K+mEGwLvv?zE} zjfOPpP;_C6%J%KA=J7DCCuu{Bj0GTL+|QIbo>dl>A9TB^7g;d9kjfnQxWH>Ad1k0- z>)1hV-y@2WN+z#3PO%r&#tVI)Z(Z9{X!%ux7Prj`0!__9YUHs~LS5+)+aPK(EvqVN zyIXrWW3pt8!9cWLraAz1HOd;-Nv1K}(NA;-z`|rb_?>$53A({9FcC3B7n_t}40uFA zeXvp$Wqo1WXs=CS?@YqOeymzO*ZbkGn94U{u$IMm4iR?GsY$HsPC{!~A z9rsl68rKf3h?U#qxDR95X(f094EVuwJq{hub!)80KQG)kbL3+) z@+{Qz_roB|{Y3H>cVhW)O>pGT=O^;wX&;9cOj>`F9>wjV)XBs)b6kU6m>iKJXHAKo z;X37koPFpO%T-y|kGG}0kcSA>c{fMo$3tn$6(k|U>7;8paawW@$|vNnQSY$URlV`6 z?Eg5XFoe~-)XA*6)+qzSIGB0q_Pwgc4vX9-#6;9Gb(}Y%^s7cY#Y(4AX{zA&=Z#^s zuZebrcRfzayk~4Qd7>2wj&>YMsR5vcFxfk-SaFl%m9yw4bp-sWK3U1mdX8}i9m{PN zkN=Wxa~?I4;ilUVY}~)O{X&8DXVtoYK3SmiO*=d%h^nqIAJ_{{!0>XZo0=L;YE}uA zxQuO6PS`$-o-S`azFTfD}g z7~e3HX@Gm6whQaAYtlEi-p1@Shl!@RoJSZL47ri#Z>ym%;&>-9qM_RmR_gcYaxQ3S za7qOSoqWNX%k}mrItiAU0DhGZd8|k8@~$mgF18)6&UEC(B~OyhY_hZ7-GspY!*~>Z z`B2J62lD>{sTni=wR|7v{AjROVW)mT97FS1aN@a)p+#vP+WWjjO6x`(Rcc&mhp{%|)&O_q0>E7> zdnBT*+uhHcnfsain2VUvf8z1KBJ^cAU!2GOv+;hWkoB+%2oL`Ou`sV=1i}1qn8b{U ziT8(zm_+uGs0TVmHuIO_^-8}cCUOCckqO>O#Ddawr{Bi@p$EkRSl{a(PZD>Tf09JF zRzI2S4klZ;{r(^SaT{m@sn=o}L~oYv!uWCyji<<$XXv5(NRU~lmrg$h82*FC|LFkz zcKN@d)Qv~${NFpN%m2MI`WXNB&y@c={Vnra5@=|1EEeWHgX62kQ1Dcaj+r&skU1d5SYf6>DX(}C*g z6(^yhfnNiit6eFsxq3IG1P76uWxKpK!zIXEpB4Nji7i2;Gb{M?#+f2PqMe|-jf$zC z4^M2J-hQw6nArMbV(VYd{yZL<$rPlSj4{Q5vrjtL6PnyXhU{$+0<90tkgbGBjMFl6 zfF0ZudDHJ!95p+N$N!tB-Hvw}9F4)z@l`p$teg==Bg%~Uu4Q-p3xvSeH%v=tUSva? z=}`i1*f|J6{6n$Gsm(qU|jlVq$iqiTBG&!fx zLtMpL+?H5W&9?Gf7&H^6`f_r5BK5(Ghn z?i2G64M~-_*Xf0ow)>snI=n&5e0{EgH$L9i3d)=zTqcujI1qF-%41%86Ur5a_%bWi zD7H;S8-7b%Hy#)mG^%rTirF}$*B7Go3w09q#NdI5?u+XInq(JNNrSi<@jsULZ>6qkW3ZOG0*PJAQfa2~PtMiT7>xAr`i%)!{34 zfwJ#uiVC>S;A>Ymt*FN*a{fABIQv_nv(lnl(J03NAW+oH543bT$Rk3pna*z>S6yIi zCL3zu0Jl^wDmt#H2JKUl$L5#WJiEk2IMQ%z)fJ-oldJo()KlJ?TgGgBIdW51vqTMc7?RDibURps?M3ZO>~e!3G$a2qlb zq)}sC;k8wf5Gv#%zO5C<=1PAU?_p$oRvw60Lf|hO3D4u6;=jvmor`w8v^l0b_CTK( zy{J4~E32wiXee*Mj4ku(?)03=-Rn7;439k&XXbn{FWX@rr^T5&!Y*kA%Po8x5<~?F zSot=ViW1PI^}PQZ>8nc=de{W1FbEU6mTqQ>Gh$=GXe-`WF6S1!n0x_$m3%IVSFhadPF4)}-M9XY2}3+FmAmqwHfmGo_G)?M;_Yr^ zRiv}WDqy-md3dPwUPmRvm9MQ*Rl-{()#aQa%-rp&mDB04MX*>12fT*GaN0)m2L4q7 zG8P)6^foMNM@lt-QQ6r}wkO+mHXv})qhgrm-Q0}>Ds59BaXoCnSEW~-v_9}=4)qZ? z7+x?zQ9mu`3zN8~ZrP&_PBaY;bdJnp;ZU%*@o#E;8y}YKtD~~#2wf`n42OoBAJYuC zx=*KpCT7F&vU;d+H_gplZ)AQgfZ zyC)o`z9!OA2Q4I(rQuON2nCdBIjjRe1gsf7%whaYZ`MIW6a{u|*8PHOHW)pdDlqEM zPq{cN11(~~jv81;#5WQme8x;}dXglaMo4j{rxwZy)xK6`hn&z$l~!D2j&RQ4c01iM zl&FBgjJvgw}2A_W2F6Y%_AV$~^h)D>2$ z!r{P5+)&2N9dgyO)xc?!kY}Y&Ij-01M_4=n1E*jiCrrCpFR_dnID_hb z2dcF8L}hW7x(S>X=V)%}ag!4vLf95kLNjha=cGwx7;l=Q@02;CCi>gC>@;GOljcYP zk=X@d+i4o|1Eg>W3#}wS4b}iZcJ4`3=hkGLj(+Ycr!RjOPMSoI7|dA#o#yh&=Y#j~ zbo+Wp);rGzHDi7CFuTwtZE{e0|SMa32{b`lsy{yt5KTH19>8} zMcd<%%?Qg?Y(69Xl6Lf2XD7R8S@}=C@axYvd^7%w{}LGq;lFhK_$luiw0h|CcpSf% zRc5{8pYpnFN7+3#`kL4P(<|KxJhbC^vA(K<1VrpU#kUS}TE*z@GbYvPGG}+KCmz z*R(SJHgju83=g#-vU`$YkWtS7h&yj;-^<~c>XlMGeMd#0kItoNTD<2W8ZFWJyzejZLdExT96JIU2`ImkV zrQr8TcjG&o%>w~yw0ec`P8UqV_S&og)}oAac%{esYBj6PevVanOijnc_zc9&shg}B zUcW~xLdmn^F9*x{;OO{Eu8z@13IA5CVa*$bB8??&m?JC5vC6IRRA$!0iamv6F@98<@78eoH9I9B2hnCnv@ zi6^!vy$hedG^mHhq^sO8dsyRW%X&Q>!vJKwQcyY0!+plt!&G2Y_W8@2j2dayR;^W; ziNWrCC0oSos^&=4y#c?OwTlfw<8pKmbj;}-;Qn7AR~Qe_Htn&e!&|MVFa=}NBT@qg z1ik1?lOop6;!=py!XP6d=S-e9)^t+**{CD-?^VW%ijf+~APwYS&flI;^>jRWJn9>; zj7n#=PKHN{>tY7p2w1+QdcPGlPQcSXwFfmF!l~ z2K=h$ieqYh-w-bDLUGs3t&|`ng((9m5;6Ya+e5CUP`enA)Mq7QG*B zwoE!5-y47z<(6Hsb`u<9>aV;lvb`MwXW*E~e+n)+MV_Y9zz7RZ!f|ez;+-oluYFO% zp?JB(kv&;IW6ijiNU7vsZ`|;k2l_Je(D7q%@-{?>H^!^cUc;>(nY7uJI|&h%{5>>8 z1+Z4&L5r7H4TIw~hh0k3g-?G%6+m)>2ij;bT#b34bh!XpV{MSZsysIx>j?xstbx>= z^?zfey|p2VcU9@nSX0LqiS&-dGv6j&rP9Ozpa}NNOfA zdDFQMZQ^Y_`@zs4PzoBV0y7q+&jYKva%HuGfCe5Jbd5(XPLCPwLT=kExkRHmW{-is z9Y%M*kMG|7KJN8G!b2^**jIIgz91g{AqVNp$B;G-b9@LlP>5l|5eOAA$esN!4<2(` zg!%%tg)V)-Y6Et!2Od(_R^I&eKnn+@AN$`^d(w5srI8MAC3R4in_trRG=dAo`rkCR zs%d++*csd2wS4cwq{N+=3VSH?u;A<-wRoSy%6&`%7#ico1YLj_H z4q>8QDV824hll@fieX}~)hmLwgH>Pv)?G+}%r#xFv7Mkbp+at()Eg&pn#7X?5aU6z z%&raHW4xK3$SQS>REdvgWJ*%aR>==#I2|O*dAIq7OfKPzmGLB@zfHTvQ3_3#L} z=nO{-bK$@qNVWVyV3|P@x&y@E22g3iP#dm<&m%K+*w?ckry%mf^Vev52PvD|K#)-4 zFC^8Wzu26Boi+E|zn`wF!&{P*ukSMaJ?eZFO6!k!&lLuH_@iC+ zzf5~4eIP?&hJ~G}!H66db(b$Lgg$JmHzd50^j z^y$b&YP-N z@fv##^a5ext3S|G*_8Am(^1LPMn%ag@I{0Zk z9(S1uCj4i+@#9wgf~o!3trnBK+3r?;2BzZ8(=M%O-1Xx`09in$zd7${ zPP!GgXQDe**dE)IPF3%SYk#B4r~h=TewNj?CFRR@fwZj;+5+jQTQM{RniQV23Isen zHJ#jPmikKjRtba@{tyM@;zChW22A!XtE%oP?oz!>CjA)XjC3qOM^d}oxblvdtQ~l&Jqh19_ z`cjGBROFrBwq?lN*`0D!R5WxoHOd$`@{07m^j!%AQ@IxlfO zwBK0^=V3U_sTH*6OgD)_gO5M6QB>WdVxyEbf1M6YSk28xDP-jHW>55lt?uUQUL>{t z#O9(qyNg;D;+|GC-rgM!$9vn?(q|{D;OOeu>)yVAkxwJsD^G>9TMepqW_N!~+AEF) z$C_lw5;mUeNO(-WAFSo zh`~o-y>(-N^rnk>1t+qZV?K=&D5%y#zW^i5EYdKnf@m1|x|HTMYeomsBSOlZ1p2+KCm6>N0+ld{;QG@S5AwWjmETXKJr zmDirc*iiHui%660#P_nqeJz49L>q?YhEc&o$Oz*|I*4>ZA0yKKX48 zhgy@ltziHA{Mrw%B-nUjs22G5IsX;uJ5zrq6+N3sHU+OXew_q z$nu^Bgd4Hs2?2mU2VFA-ZjYX2=R@P3Qlilawu^Uf-mHv1b-@4XYh%P^Ssa7v~z_>oY27 z5w>+t+Dhi5(A3PXSnIc8ulmfE&$j@A zT+1}5|A$ZKkAtq?8e}j9{GF1C{6X&iQ5p{hJ3E2h$;g-Ljb@1~ zi20uDB|rtvP#?A@VazQW{oZz0YwAj3Mxm;}3hgDN5x40UxAU$=e_O#|S3CgP?cXtf zX&1_PKXRj3uz#zZXcg*;F7<0DRhyzN?8#)X<;HkC;)KN0u`HqONy{dY`Z=H`My0YP zqwKzoQ>7vVWWtTM_ChLt4NXX8?B&DG_Ta&eD>7Clg}?(@oV(+YieE!pq%!eT9_$X% z@tzY7N<|1rGe-}C7V%}b;uBY|o4))uejqE?E$uDe)RB>8O>)kIufNWC4UleTtD^(ME;(s&wQ>R z9#`6xsejj#*<>15K2UG#RL0|rh_i2>0lp38zQd%Hg0}_cw@l8K;ExJ$FOR|onMkvCZD*l7|KA=i|y6ePR98lrVWudJc{mnIk+fDWD zjZohnYudA1en5qI88zOWe*LQIwM~q97_dqgX{V zH?jt8+en@1%%RjFLaf7V?-H>OFjhd;g?Pyhj)0r2Zh{#$10#(a3Bd2Y| zy-_$+1JLG-1``Bcwr*hcc*l;s_hXlE)e=Y7QBrCky^UPvmHx{0U1___FzBDX$QGH4 z^Q3trVc*-#?}14}c3LA|CTUk+UfYH2j}O59zPmCjgIX#|UmLHhOu;*ar)i1!lclD$vIdJO6(H`#8QFOB+cDHCiKLBuyBF>ZDEo><@{!gNRe>vsO7 zyE0zvoXoz>(ZWMicV&COP#NPW(#amH+gRIfSev!&wkdm~o_bos z8)15F)2zJ?i7{WaqbfK~@TOTgyC!3-hCF-zUm&>=-d2;`;WZ>TXg=y8zap6Cd#%0>vU z%ABtauOuLE`nqGJX7%HR`gl<27Sej(2op<&qo*eYFo_=&^Q#|tpWwfP2Z}P?BHCCV zPg~M$yMuwG9X>jImBjx8rB%r}G8SN`aqq@G{NDfyPk$q!$A`yCsi~M?J@|Q#)iD{j zsB9^f1M!iN3QZjWGh3vx1)2}~cc;)!eqDoc&$UZL*j8UKa42aW+BxS{4f|tA#op-W z`e80#dVshJc}3-+2;&5HR}olU!h4iJ%FE*iNsNN>_qP0#x(MQQ?4pZPh7_mxCBdE- zb?#PGTVW4Pa}#Ks{%T3owP6i*`;SnRZRwJ&x|;I#``x0jw^{aqdKVp4k(pJ`Ey%Wk z4=X1A6w4wQ!0V6e9m5cauwe9?@-%!K%MEO#-Argpf350YdBru+Y3~bE|4=jz`F7M!e9YXeJOH_|Y$n>adMCgDoK( zcoWa1+nUwxwO*|QJ{uln706`LMjN;2zjK1E5p(lwwE#bi`5+{+f@6A^V|!=ID#aR8 zNS$KI+!Skw@GuT!iE2rPm9HyBo!%#G5l;c6Om2A1%5kdG2vDQA0?y1Xvn%P&?nYW* zQTo&s9WT;;Zo`VkXVlwk_&1Xy;yO@vVz6`nUd?8{dHzfu1-FmRG*N0-&r)5pggxFe z=@^h~G*FoQg@jdHY2P8FjQSVqI0-zPao{=@*=vq@;`oEM~6O&JkHyNut)?xK&UY({mo;a`6sgXIRnUjMYb&}LOx(S<3&!- zmCN{12*Op!70cWgYwG!otAeV3!(Rhfy*9b3)+ZC z2E@aV=&}Ko?xwa#(#pk!HQ4&3(xA!}BKNyE2l0w1{>&Sbp?*d4lEFUh!jN7=XJ>rl zOrt_v6Pck58$$^d(179*?Ll)BQ)Mp1#EftnsmYKtaz&YqgdoU8byG?F9-#p!{h6yYB4G7cR>3 z9Z#mKa<-cObj2hDwYD({0BAu6*JPW+%}uF~A8UB|+`%ZgBuYup5!%C2B~P}TO$sRm z&P=nkX4N)Lwg3>)_L$|gv_YnvRJHLUM;3AnB~dDvWDRm}`lfSDRCy+e@LGdkZ2%Kw zi$T*b5Vv@;x1a?j#NeINYP+gj9(9iRGUJBNZf>K|lRv`;MvZzN^pz6HxlzO#8ancO zTMCZ?_!iDl4JEGFH#B1TE6vOKJf6=^!OlFEwiPmAnO$lC(~8iLaiR|5GFPFiU7es} z7`Ish#XeM0w4f3XOQTVLl%3vW4MOt500uT}OEMpqUaZZri!Kn!KUd&xD@uYzIlttN zghped_XkW)7H)9b4RP<@Ec@#f|CDaO*MC@B_%r@yK>^TY%A~wxPIFe?F~8_~Qsfj; zGV>W!RO}g{MF~vu#V{^4ltv|$cRrdPi8?Z>G0VlYf<>Tk%fXX1nHVq!X8KdWot%M3{6MD#e7Dk z#*E-S-iwkAhkY5Umo7Of#3~jyX4QOw1p47HYBoFOOYjgLP@jO>$3Yg^a4sv#fgN*+ zn~wK5lq!p258quv#o>K6C#tPz;~=6W{yf0)Gg_Ty(hL7D5Yg8;Ox*mA%YP3v5H03s6M3!fai*dukj4pd&uNmrV2_~glx_!WS@GuL?N zB6j$&tIA2<@i~mg3cCQW_As81)5%1lk+vo^pOe?|S6Lz3N+P@tj)v4g_D^TP$$ln( z{`u(eOMhI>*2WN*SGm#(Oae+Moy*II_wUR94_B*UnJ@2Ou1@Y_K01)2`;xEozEHeR z4z_-YgRlO4_~KR^WR=SaI{5ui_NFyI(vO$JtQd-XAIc1IOr4jjnvLz(l9KO@m}i!M zP2wj4fm<{3Z?fkWa4UT|jPHHr4z%3vU@V(6)fUnGlo787-NWcz$Rs{^1{3xq?mf#E zLzziCTm5?0?CeOC+Jky5c4Y1s3t6Tzug+cNNBIn^StiaCA6TOIgbg+?BO?^w&DJ`Z zBw`iczZB&Ki*Cefwiw5r))GE~Bu z?yOltA13kDrM_#uNyrWYoonuHQBm1JPG00B&Zj;;!5x-hc!A+S5txU_K4>gB$So;C z+Oxw`!yD}9bSuiaJ2=j`(KKuy1@dM26fNX!Q!Ux|WN#xI4g zFgJLSzgbi=HcYh#V$HTPxgO!XUp+fgM(<8ZxNH34cFKGX>yf0|fbtyIY`gxPAs(!Z zpU|yWR6G)nN0ay%=T>yQsJDfD+XtW@YRb#m9Dzb2;t%%Y2U`*%UJtOGGaiZuH{I@w z9ez9*r9!5+{|t&C@0LE@|6XEIOp$bVvV{jvp2=80j6XYnBf96mX5?xpE8q)9`rlW1 zRV!>K3cha=H_p{o-7(@!HeL%umxLq+*uqRxRJZ5bXV?q>HQ4;VP-t(=#CjTjc9G#< zVRv;=7DHhLJh{?LE+&z7b7y#UGL8A1HnZ5xUu)R9I!T%9p4p!*@WZ+CxwtIIPJ3`MdvCpN}7G5Cde&PA5+9T)tnvtxjaF$(OsTVh;KpLCq2 z>F?4lxlyn?o{0ASJIO~r+TQtHJo+s2(wMC|3(cox2Q%phr`3^XsA$O*;ge!UOdRC z?+u!t3&?YN#lnRzt7ijyg%}y2y0+q{plyiDyA#;>X3xg6oRF#xRSsRrj@?3}f9{X@cu^p&^( zp+Q|O3Y?c=4%@E^SaB}kHxP#N(xp>gIn?vWcTqhWnD7reRFU;7~e;!bjNXzAGX{N5_DSo z#gyAqFDh|PgLBQ>4x@qn;GuPsp|_mWJT1hm;IR(!rGg_e?CXaS*BfCU9Dqgye+LOb0LJ%VaDmDqid#Jn1u2^7gPM zD~9l^HP!jdx#CZoba&+%%#$ObvL|1TK{kzh-@d{ZA^Q{+jdz6pH>i6orJo!h^tA$p z6le{r((SA0Q)E8sY=$uZ{F@`kC}K{x@MV%>QNZBg_cD42mqZo!xotWB5r2azf&Ogv z9nLo8d}C3=ZsM=Y_^n+><*!T>yI!%6;<@!=waV(ApgG4Ce}^8M=v`2edgrs%Qr5td zVEB+qvx<|1fJaLlgL} zo{jAaq$lZXzhpI|_$5jg(|ou_q>SE4FU+n6C<4|U{gpZdVEEw0J2JMz9h-2 zuF6MnZgC%vv~}pp1x&p?(WxNj`s~GQ=5II5S6C=cA)7kYt>m~x*rl1r5FMvl?~}Ln zd@gA}*N$alG_npk;;@Xqe|E$G0csh(-^`Fp{n#x*lgs#mDYok{HcnJ^rFP6z)lxv9 zxpOab^zmFJO4P1gwh=c~F-251X&cS#pU<$zpn*}iCs#E~O&d1Yfehrd=U_1SLML}* zbTNIEo41bGn~YJcRB9Efc6BK$j3k;0tZo~L4CXYGK~|w-vFOipc*{YZ9i?3q)m=pA zXRDt$TZ3j8PT=XMf7TlRgF-I2uBsytuj9K|MrbIpN@aO0@R-qClq0J1&P#?xoA}U# zz2y7H=kHMk!3~Skzhl^cFPD&n$HoQh9LuqTLzm*}i#bhfmQ%*aaO5?)NaV*}p=D3_ zr}{DsvQ-kq+$d;xL@+KK<@8{d*sy_j7)MpSe3QU37ceg?^kgsf{Nuc38UeAb!Gs-0 zLmwO$)zwpsVTf2AXjIvi=2%dj4yqPJ?W&@Bh7IeLzh6}nyv1*46ok6JhI91ZrNmyY zL{YiNwA&RkBOp;om@ffcA->r_t#}EGor{A^deyOTPGYR4#boq1!q>v z_Ue+b&%iC2`1B0pOw-~+V>H#vl$Ay=r}oXfqilz`*z?GrLAcA@16EjkY~8q=hi z@q_aWx{!5vAD_9a%vEoDTxFv>+Q^C*(}_LVsLSgqL;XQGu_I)Lkrx9anOK~$RyUII z(2(W9HF8!k zw>1;`IqMITSzU&Hm1%aFofI>fcey`^M}Aaro)Qi9U|wCo2)I}+v*;*;R(5%cW5~mJ zEOy<2xT6F=;h)3s|Iz+GT}%h^?=T&XhL@*jzqCW%c$yO>4$D>q!Pq%ir zcR$+ye~Zum$J{@F%d%wq9_X}f+qTxU*0gQgwr$(CZQHhOV@iDQda^HWMZ!KSMb0w#X;RS?^yjq7gf@j?iS+A5ch`ZvL`#hqd z+lo00Da5x~-(EzF7`A?Yy*x)u2H0y>DfFxN)2{Ehd}ZU?<7!Q-;-oa8omp6r9FF*P z7`N;deOFa`#K!oI=V~2~IKcK?9r!ddRWV?WUav6FJti9{h$?!GM;Ny&RXUZNY(&iX z?pWLDC9L*z*KX>MhnZ~5Scf5)Pq+hep?RfRIe5=^8HhqL>Beou;ugQw+#iipwirQ| z=trB!*DeGct1~u!Vn_ernfkD1(#bXW>OfB^++Ck(QQZ|=Mgp1r2o z3i{oe_kQLqkgRZzyNU9K0V!x6x$|d_r7vU20M7{^D2-1uywpS$qq~&Aog+^bEcz|b z#P)CBTmarHk$^KC%^e4L0mvVRA{BXe6WT91y%{18)k*^#*DcIRY#&%Xc^~4&@aBco zGN9BX23~3}zLk7Wc1lx#WIgy%Y3mkaZ`nzdy3@29sffKz6FklvcVU6*z>+#ExO@!S z7r}u0Ti$f^;JJEc@LpXY$!<+A^MIiGlQ*hIxWzNVjZKWr%|fd;$#L>f7G-)AIo5i4 zIpC0o|A^x#dDO?*aP70kae;)bwGIcOn{JdplktFs01pCtD=CDXi>b9fO{VAdPt*4<_=Jr z@&E`p07&F%^A9EVS=e)Oxu#<*X&47+erCC9d4q<#E$DkT)N0qOCLafuAgZ9rr@xuVD*^9SQPU=ZbFky4H-LUdx}k(I$?y-gp0Aq29W^$+Cp zVwTFR8PvxK#3=H7HaDw0Y9juUOl0`y5H%R-9GN>RQSxFiM0`XL^e<8YovuDe6&^DN zWYu{F3A*@D2sN){lh+j=C)+{y51~Uuu%6*)6y2wR=NzzKMu>i5+gW0BxFa6$Px2ze zY;Z0$vBYkugSYk7UhsS7)Gr)~!Via>a*I*#dNEV3BAx`DZ?n>Q>HN`sEJ7$EJbkC( zqP%(ymSM!y3Yq?>@C1ZG$H4o*jJO#dIQKv_$&G_uU*ep?;1qL>Jb{A|fM~E4i%?0)Uq(^$nj>1AacTW^dl+bLrT|0^`%0CGi z+5zn)3qssac2gxRuKx`%aeB8@ndL!|uNI#^N27+j*^SL1>!7FjCp{<8H9@{i|Q znY0N~dz1XaNF(ePh6Bu^=g2=B(dc0=PH0bj7fnz3FiiZy}xgA{~S ztH%J69uL3tgk-e6LV+|1vESK{i;5|vkjDp~Z(GRT@;j4GFu8#nyIvc>F6?~VoVakA z3`~qi2vMgs>(RSE{ZP(o3~L{KASe(oc)Onm$I#pvGFr^1%pzVdNEeBztPKn-z(ZR5 zg)m~AcSNk{E*Ja-1~e3_8W}^Mzg!eeT|5urLLFoBeFJP6ZUr>~++pb%$LfDW(xbWq zPl}-wtJ)L}& z-+cC59SV_NPz7WYE^XNa782asIMMw~2;HG#a?X5Gjb z?rS!Xu=Dfmugdg-@htwgvF;IVS1Z@9pGI0{H|BuN*!13QE zGXnwV|Co#fj12!{vl1{e{*TQ@z{vF9HU|MC^Z&U1tN8z_k(U>W{vR>gipEX^ntwH0 zSd@VNzlP+s|L@P5d&n1COkz~qK*FApf z&+IT?FCV!PMJC1&L*_ogv!xo7M<>5lg$rN?J;+F{{oV+UreM%XxC?>_^Z$-b}|>aG82n}qLBi+r3A5n!mY3i0D*-wh3wN&v%l5r zCwh!3wKHPxIBXM7p2y_zg9d<-Ugglnj7_v7AZ{?8Zd>wbIsztcVF7}*G4+mtt0d-o z%b6v^AdN8-13RqxQ5FPe(NOFVaP9cL4a>xKe1oatk^vjIiU~DNdqk zRmM*+Pqyy#lID<4V(DXvW+}TSeWwamR-m)IJv8OsLJyL`z{7+uDp-OtS0V z9(@fY>=6CZqkza#OeWk9J;pB;vG12Y)D@BnoBdaie6`@owti& z>Wn^b=%lRL-bj?4#K5!_c8od47Fg;8dM>o?^cLE_kG1!;gQAh|wUy)LNOHw@t2^GG zUF(mb5tojJNvp*5n8RO9TdI+E?I96V-7WhCH48v)K9^&T*~`uJl6uzbAOSL76J?@E z5lovq!M_Cdn<%`3IQ)&>>Kgn?Nu*g;}-z|SH%QV%r}1Er}86~dEQxxal(Xbi-Bawc)2-*sD`d(c}nqN8V(cH%CM(lo5wbIl{B&a z7zrh3v*hT1uHTgByBxP{4H2|m|8$`PLD-{1n+%dz69x;iMv(vfj?3ZLvU|k}B}TFD zzlo)A6H-*(*y?jD_ZX?2K5x|AIW|m>4QVTrB~4Kw%p{1x%l4L?5!)2z3&O|2v@) z*^!wqD|0_t0q$DtusL^Rd(wv|)<-uX2{tf@Z5v>I-XQcMf2@)?{7qQ`P^`AgGY5?t zT(rG~Bu~P-*35F3yg!ghuDJTs&U|x=X5hdWV|l}b3biBIntH57w-chkNK2tfQ2S>i zMs8JL&EgcS?*`0Sn-YEe9S3WqA>C@N_S_?JvsK?C9MN(3(QfK#(c)Nh$n|FQ6QR*Q z5G2uaspJNliH((%fi~#Vpzf@5tWvbgdm{5pvB!K1Fl~pk7uZs9g9OR<;udGhAPPR> z$~06Uwr>tx52j&O%sm34WVUYm`&ixqQu=yv^HSfI+l1X?&7{v5*uvLu`sHov6**8D zQ9+X-3K7&Ghz+yirzGjy&{bXa{K1Vu@+?2xqgju4nw@w&fd5i97Tx;^QF-GMVJhCk z?x;E+&nw9F-g6l*iIQGmKtC`RB%b%dz$L));rILrvLLr8M}1uhR!SYhvb4wdU&`2Y z^2tq$IwHwOiHu_@T;BG&RF?LLr1MenY9=@IY&;R+>kGmSrr&52ba6tM} zBmDGcF^3+c{a%|3r>2o%hi>55#}L2r4`%_7q<2)h>^U+;Dqj>twu_G$z^I8C0%ohA z>_i9tH&S*hRR5oQbR!w|qTZaAekB6heC>e?9fKn={?ewi)$Sw#GN@1%HifjIKe;^K zy8*DmKhxAq`ryx-ke-KPo#&gN1#5lHai97x9_{NBh?PGGyi8un{)35xV4Jj}Fia8^Iam2Kwx0KIY?vUztSmFeujzWZa)eG%?;l=& z2%w2x;TiV76OX_24nKm5y)VCsD?h*PS-p?&@BKA~N0UiZ_nF7YAeNTiXIo54y{ zEaBQD^^nA<^mMC{l?1h|oeSO?HAxEn*4tL8@sNL*3*MnPxti z@A(y4Q@}iaC8o#RQ1JJd5r#w`v_~tMMdP{gX4@i#idT?(j?rJ=Z#$48BX8x}CWnMa z{gBwtv~ZY#u~5viGvzCIRP^1>x&ncYFsX}SMsVP=MT%J=kVN-C>02!R%*wqwrY5X> zibu>N=a8VR;JKL`565G<{b_fMlAARga$5-_XJ>M$*n-@wM^vDe1xc_#%A$#fD}K^{ z-P8gJg_5F-Ik+}M$EM=pdb4$WMWeVmO6&C*2Z{}D_6mSJsJ)_-U8#B_p8jS?#b`>A zU66c2-fxMrNpEG_$f_*Ffe5*XxAtU#f#ue> zsKDk<%dAYtHGL7?%l=5w|$`c?Yr1%uy zJSaO*I%^D2^DB83(HH>!i@>-)iJGBDY)DMuE2CMd*n3e@QE`#r6y&_Wbmj$=RV!y} z%G14iqYeqEKY(A`mlOcu?NY0LwJ%%t$@%|INc6lUI5fZX zxz$eo1;>$Igb?+j=4v!g0^8+aO8CoXNsnLi6t9yepnEv>Yt+a5JYN9TSV2Sf6`e{5pfY?UKGYc zB+};;sX3lEee?MX#dd72O*{SACUWu+75>-V4Ov+ytnA}PCa7-OA-L$;IKE_O%jl>~ z?LoAhQ;%t1OJ5$NJ&;a@8$Bot7B>n7Fr5?%NX4oKcD6@*G9~qyT*Glq_Gt`6V&q@?iT}a2Ec#_bKVk8z3_Y*hN%S81$RG7pxqYJrmqQ! z24vZ=T3Q<_aZl{&=($|vea!BxIpj?e8Dq(xrHWELd}pUM$^az9K>XR~Ybp8g1;s;= z#0YA@3Q8e31{C9&Yy^m`U-}Fj4lBM?5_iWi*=_#)Ip@E`q%|SVOjd?buDH2IhNl-F&<1La(IdoyMJo0SSOmZO4FK-eWQYpO3*R^2t79Z5n zP{B>OOxZE`uL`DU4y!dJfr&vS2yIc{L0&7Wft*TGWZi0~JHsIYkX(lr1LbGLp1z_T zC9pk|cy`ZD0@WZ4`rmGM)UK!}-`c|^>mNEKJs3`2mYL^jX{=x<;Kv06p!YNi5wGI; zHBrDR*v6U8e%^-ROYI(r*e5?w&}p*-s+c@%E_X%>>kK{{)Y4P*GD(x5!RZI6qSAAg zv54#7P{GzYuS=h+T$Z$zHu9Ki?z%YP?1cFP*+l0Wiw1gH0(|KMTL6u~%3`NhZ*nr8 zGihklLMjNuonuFWC#Ok>h#YQ ztxAao6Uvv6c|!^r&%=RTzqsqHTPau8%x4;I5J<3E>7lMb+tK4c+usRLWv8ldqP^>; zS+?~>h-l){1yv^A34l1Ovdbm6bh&u&6~UScIq6k7gHpM)WL+}sujyz0323{tohaCr zv!Yw-1|nv~sjr;3v%_PxN1ujMUQ(6DsuCw(bhTr9VO-xf#CyyfhBqXm15aU1+7P z2+WjeuOeE8Qnz*;H_ne+^ByprcN-QIXU4qtQ!wr!dyEm%Un>cXMzxy6e(_6{>HXqB z)xR8KlwI1Nl6>c}>87)xEX$Yg@b~2V+%bX9y}Q~GSOMh;O)|{5(U?JseS1R_rOa<* zqUdhWarf<1OR|E)yRx!AoUR$Vpdm&$D{f~(t^h9ayxX=-e;CoZR$LjOs>n-lVi}h# z#`z$4r7vBdt*33tsgi&U-YO=!gMgY7h`@=3WWv+1T*9Hl<_TKtQ$aSx%Mi`SMHEUud3sqP`@Q4DS%Qtw^j;By0+#1;*P6(mfl+k zG?Qbi8yrH6>0V(w1klVXb;putv@WjEHX*g)*W zCd&+-#hM+Rus08xvgXZzJMFtN8E>?}CA*yn0F@A}S?p zsmtI}oTL#)_5kE89;*<<5>=0uE}?qu>Exbp2{DEKW9VGuJRuDbYtlK3-h<^|aZQ+y z34JN?R!a%71pY?o^8~--8gSioN6_y~-;nkq;)!rZg|ED@#whBvdYpLkwE< zNDl8Wf}Y4iCIZo3*m_i?(PuRE3E3$7u=0kdkFOOf1KWs}>%V58HeL~**j3}-$8l!* zf(YOSerP)n!O zE)fvr>eP9@|0ZrLGxx_Xz68Y9w3&j(t@?LLkq1zOmaaeG<)vgvz;bE69e>jA=p3-q zRD+QZZ#}~_1E`!ZC8l!>=08=@v-4{l`ZOoMFiG5u%w?cdCYuHvaj#^4OJ6@w)MWw5 zv-&7f{~iX8Mv2XMY-QBxm&A0-DUWGht>-<%2*m^Y_&L&;F2b#~n>%! z11gAEBTQgX67K@g!zUYgy@E>B`MiD@{s9P^gO~j$4|Q4p6^=8p{qH!=#PXlvI1|gi z#PR=oz9wM$JEi|OYX2R<|BKT92JinKf^+^81ZU-7_;(TfT0=5%vkkH5L-kB7`M1`A zwADnY5wa?$a*agsNzyYO2hzx(c6e6U5=Ub%@3z?;sXUUg)9H+&8nHm*(KjB zdN-`(%hQ6bqxFu0d3r~TDM9jG?wW0r9=&*KyDk@M54+HAQ;Svj7_9XgABxuLO3<&~ z+)^S3*G=sfZ=EUM_OB0`bXttaYN#rosTRqi7Y1E1L!um#5DoSE0ot;Whbt4rQnDL%WE+YL1b??kLrf8?4hH#6S_8TZ*)2drAY zwQL^$02&bmopB7pjk{+5+ysLF`v41yk*IKDX`W_wfsrPOEEDgy?BB0gOKhzmf43=L zx$7~tD8OO1KMTsbIpxw?S}en>Z$7}QKP~db|B+>h0P63L>cCc2UOx?yXxI4&4$nr7 zZqW#F(NQI4dE|_wvH)w4TvN|R)G#|TuR(#Z`3}Y3=iyWsn*#=T5hslq!&mNM%2{izs3T zYs*7=)|XmLbQl1Oi@y-U!k2)5>@23u3Dmjwh`QCMgfqy%>R2Qa5vy!_gLZNnOmzeG zoeBE0KdVdaT5OM|qIJ%rZ3Q$3+us3JVMi=HT+!-VdRr zSf7O4s)=I=4)Yf=UmsV;!re&hlg>59_0F-syzFtj7csyT>uriBi(a_AE80t;@$RA< zi6x+r%`q>j6q?Q#gZX8}c8BN^pfm{81)B2aXk`ir@*6xt@OXCN$movzYqrxZu8Fl^ zwcZ@D)z74R-*O&E+y%1#nJGr|I6b*NNjt^?1UNTAeZ2?;-wnl?*iAP`jBCnKXW8V^ zWkR8K(0YK$W0{?9SuVOeZ2rYwaZX}8CZK%XoHt*e^?`BFPc?pDOxQbYi^2dLoO`!n z;kqSOFgXPN=dE>8DVqA|JX-O!lG_Rruqourb%Yg)ME{+p<^pUD^#zX+uToRU1_UZ0 zijI|W(4&Cp#w1184=9j&d!@OF_RUxha64H|;WphRE)*`fs(SWz6r<;!QJ|fOZrcE~ zs-K;4L4f0PK0G--KL*&XoX6}ET_nSzWZ^s{TgOmgD+P!nYFHoMZ;l&Uc;2J{7{70O z*VdWJPy{buH+V`^KXI{X#!Vos0N^H|B9O5RdwSD;u^EC1T4Cn1@0GW1qPA5o-zu(x zoa7J+bo&Wm0<1><7oqwsk92_M3?+WcdlOng++hgW_FSxkkVUmMp9wv0sNiT82qb3O z3scQI|IMm!8ioZd9GS~LqeVEWCK|)9B$np-7Mzt=Xg*wr5`&bBllM|#Qeq{3B2iYy zZ)Q;;&Go|m0TVAWV0A;0ub!Y!fNQR2#ikt8&Q-^Er> z`#D|p@MhWytVGCjbqD35lNoA;E zL@E3WvIe2h0bNbm&nH^anZiOZCuR(TIetiN4KWWQb9T54RW_NUQQ8=LqA1Yiv5bqtc`*aaLn969ws2gh zi0+#hEp{f1JZe`(U4vPfagVF{f@j=RH++@>xK4ru#c=I)B?fL&+Y79yq7-v4q2BxT zQ*(=+{g!vMeoS!wQo$69kDecUrv2b9QMUt4`T3-1e;MWA!S9o zE0lLEkdt-v{1mMYChiY{8b;mrt%bjDUhL}WKVk~FjoBYA+_#-NAs2#Sc&u~n*dXWl z@EnNra9PC^MF!!8tx67s)Ap1CXZTR4PgRr%{FU=TfjnrKbz|$F=5)x-wOr;c^GVL7 zV$Wd=v?tyevI-sDT`62m48R_+pm;HbPIyO3_4dt4j+yP@p$cD&x(g*`#->OPkeu*k zv5coOu&gZ>IPwwQXAuY>0-r-_NRqEUkS0GziCvp|2$thOO~Lwirb@RDj{1bNY{`5WFJWBC}rJ8Mlw$t z9!oaP;FNleBq{QC7t_CaloHEH3+KHb(i}lZ$gGGE81Nzx zXtM&LsvM8VPXZgx5c$f7)liics-hyHJtk$hSLoIFQr%)!pY;G>K%c*M!v?3y21nnG z)HIcNC(emiAvgQ_vt$*!&h)uXe$)>V zVmgk`XfL;SM1I$|2Oiye?6oII({XVmATNNwTZ8`wW_U{^o~NgY&6KrO_z8pj{(Kfg z!;S4Tmpfg@ElJ(6?#GQl&bNIsi+W^(zm*NHLett@Gi~q|-Aw%bOB;REYCcNL_ih~K z0&nh9?(=tV);;vW-lY%cFOJ`eAEQ9PW5scy=D89&uhhb|C;jfkrXx`0unVN?*_h1J zU5Z-#XU#-m{0EKfzMbBWx;Hum?*9a{IsPSPbN&sp+5bb#X8%{1{ojE6H@5z7hW_W6 z{dYoVBVcCuj~;q6GygN<=H&RdiCatBk+>DH`?hw^UJXv4rKet#_lnAXxr9o&MwoM$ zcMhdl@;6bd*u>@6s||nsO1A6QvD^E0xmv9@yQi}iqY_S2Y#V!Uzpzs=(i!navg8o zRnvt%{YZge$br`bv&RF6j{Epl2rP8kIJZ2rJqqBo}@jqh`RdUhs486x!0d`q= z)nu2|7z4v9%e}|K#Tz7s-!=Mu+)NmGF4T@Ra1<_p5Og8q-VqE+=j=sOGsQTYpBxgm^uRvKiLfe7Iig`(J?hsk6L{e5LonJaNjrpDs3 ztkYV!f5bv--hPi1Z!cV^43r&=%T!a#O!FfJb_{_V^mnP1*1Q1+!{ONzs#YIFU!dC7 z*myf%R%+_LpIIIjMzqaeTU-mMC_$~J8as>ImWDWwD8Q<8(823VX924bvS$?1ez=ohWaId1GeDi%Ehahied1M_uYS z(YP%Jq4!Sv49-(*7A!rWjKQ^-h^zXgu^Hlwou}MrD@04TJzJeLrHsuuKL5#xVVVM< znomWJGmVf&V}tfM?#7cHyV^MH#c`m47Wr|9o*g7)-&g^k{^t{Omu49M9$fIk;Oe{V zz`jExnopXUiCQA9E_u9$qakI!p>tR1XN+n{Wvz+9OOk`?La%`+Hpa;|T!G0?Alx+W z5JwP{A&zHK+m!(&`XVglh<5Nw7lK2c0A3S9i$Wi^<#<|2BS=M}idH(pxMKhjJIPp; z@{$*K#GfZaA-rUbl=b-9w*?B00d83QLgQw#;3;WAL?ylFw;n8@(@y-W z!LspC!93f%r2M*k_WfrKVagINu7Fe8PQ#3@U6UB1b}q5au*tf1Fp`WY7*SjirDGh4 zd+Jg-L3&OY;?)vi=R2x05raCnkGqEKq=0XBHD74y@_{{8j>+S?2b+%_Xv}18((v0p zr6n8zY&{N@q%ln?LC88Ba=}%;CWf+tq?z_R5)4lVJltvgD5F`*c<}`y?8KYR_zQr&33ecv~s*H!Q z@ym>vCIPZ%MoH43@O6H{ zyQ7R(+f&B_0)A5hg4Q19s6Wo|LFA|zNgnJ__p?EdaAJ9bOqu}$*Qe*)tv=AH4ErC6 zfQbK?hLYIEGTGj=ven75+re^LHC>D;F4VB{8O2S)w@CPH=nlPPZ%P}=HL$RzfAC_U zKj+3`Uz|?Wthuk%-yi65w+DsDJiPGb5LUTtNZ|&<00>;SCTNF}u{08`6AFdJuvf>A z81UP^k0Pyp>&?GY>Ki>Ch3@f-57T($*9qZpk8vn!70OTjpST7z377j-`gES zwuF%WbRiNaqH}!~WvGbLp8dh+#s@)hI)!_umw{J%wyp(w)11)}EZWOXCFOK6+|ulw zw#(&YUx&UFd;RX1qw9l7Cx!0?6W(i4$`x}#8{iv9U4VUz(_n9G{)PU{57<67v%jq? z82@0d*AaEFA_9SeLsB4bXeB$=>?uC%=mTR*1NTpn#&Ka>3kgT+hY}DGGbNz||arVVjM~zl1VTJNx1aU}cT! z`3wBFC0k!oR)TO`p{AYP3y!#&_+mS~j{dLxMt97ZgIkC7TgR!9V9F+1z+zYVolvbK ziQ)~`I@a+hXv$u2d6n+*aRZLqrKK=t37X0xd_JRBk+P-qIyy&g){3RvSBI$iZYs>* zW`D4Btfr>XyRgpX?&4w1+E-`R ziRzvZ9Qad-n_$Y}H0<~hA+L-G5y-cDtd-6~y(|<`u)7dVx@Xtf^&+QCJfyX2*q2N-b_xYO;YrmZ|1gSvD3;1g9C}I z*F}{4jy`qCiafZ3I_EWOS*rC7C%4E`W^8@iMvYH%mlIuX%+A{QQj?waPP+xr?_$UO zk@rx#CD`ov=5%kNxbE}#ti{~Gy%)JN*6oSAK04;Lrl=GxSe0&NRNfY-J>^;CjiG2z z8rx^MXz?ng*G=kT()mq4Es1cAN2Ay+Tg8qLRSTxu<>n?Y9Qg(^bFd8UKqDub*Dvy! z)anv)XiIwFz6CQP3OP_(EX zMD%0w{LA3nP}(Z2zOd$FVxm6b2hW8?pPP8xx z`m$ufZ+yU7{5`-Bm*GnCx=L{8U}@P4o&68zzE&TZ4_>q$_1;$g4zOe8rYlKz`zx5fDudNCH9o_xob=6@>-VDQ){n=5bnD9@Te}*0 zTvebK634Rk<;+^KHxrAmWSVA*4aKXHd87O~^ncD>N;^h3qc^I*O#84~F-PKt2Pr47 zdM-me1FBcuWpeOSqIq9A-F>cnwat2ozKB-BXBY#!YLI^nFNHm5Qy9HdJddxOj*@?u z`lc%hW6p2lK3~EXnzrdLVRC-JD%M_oL{yMB+FA~a|8(>%eLMFzHr(0#5E8Bn)p3ZU zmDdf7(~t{vSlE8Me4NPcj8R_woxz#^bpZ3#()1&_kT0^KZEVRsQT|b z{?CI`{u{^teFpz$fhQ~sjQ=)+YpOdQjv)H%>h}MxTfvz1=12zjT)mX2(2B8EJ|@gm z5+ETND1k@^aeiAZJq3X98&pIoe!fBW7jP_@KV{zzyrtXm`VxSLVM>_jA71vei$=)@ zrbH=_f}tA;{2}=%3!yZmp+tL0C3kOedm>go_uU5+f8d6ZX|QkPZZR_eUV{llf7Pf<$UD1nD z^2SZWMH1a)EP}!6Tm1@k##yE_jc?#rIS{2_$&BXn9m2grua@M{Z6O>yi#5*{ z{{TQM{%;k~)>Uf4FKUxe3BJUrmbbGFoVXbjCcEp$jF+Iuh4&yJMeuhgyleFHH%MY_ zxy@L_S3q5*y$TglFZ`eVTuUjXk6>Zt-`z=6-6G3TZ3uT$6)W3imaNge6buD@VD%ss zt$BPB*amib{qca>MN)!lQ0><~3A2u`S@uKMi!HgGe7~5(j`#^sG~gio#dhZuaXdvX zJ*+zx2}$qK#e08i5k~i6oUx z2sk2CCgxK;;m+8JS0V*@sSxG&v^Bjg*Fcg<=jfZMt^B^FtCGmzl1PuX?%Xr;3#{5= zXyE3I{Oyv4Oe8SOO8CxEDnesCanpW+wf=4B+X{{-iwKfv3pf`?#hVk5ms13VQ(yWR zL|*u6h+K~7)VA?K(F!SpIq_;TT%Z2az`UaI+X@!}u+pjpPHq4Js$w;RJ2Tp9$$KQNO(*w+^ z>s)g*B)vQMQ)YBDinsCl-a0E3t>yCd;RvbXty1SXV_bS=m$#(IQCL~%~FC4`?UUKta zFx${H6|zsToxuQ+FXmFNX~nh*&gqjLN@+q$1TY&O-{Q!rRsL74eCo28MSIIF;Ne(TJ;0uZlKQ6CO-S9P{fCQf z0@9#pS7_BO`S94c@j>HDn^R^gH;!pq^1jy~$7@UGs(SZ`6J9q{YnLV$#$AEG*Nr)W zA#BOEKcZV7L<1us7G!M^b%k!)aBWJ6Y$T|oU4tqYR{4~^22 zngPv{RT3;WY%FZJ$cYRq7eE>;B!HHaHn67kRgxSy(7G+bm2yt?LaYIrK3l9odx~-vBZRPY-9owO<2;KGK+zwWJIbP+;skTytkMb5H@yM3;WMi#2VE zX>5x&)Nh*YC8Sqxi$;*J{W{E#d+4(vF7J#^>9))8Z{n?PKoYLHB}#PQw9Y86NxT=w+Vkx(1Jhq=TQj++UidN4R?;&z&i1V`g^yuD`;DSMqlNct zUetkEf>Cydrh@r*7_yh{I{sWaBS`}#=C;$Wx> zt1fX)v$Q^N`go2Vq8Rf0hl9bF6wP5tue#bR@QDU*=pTVvA~OoR<&5#%`-SIymgFrp zsk$tc;cJvQMddA6AvjPX-`~HEe9l&O_@KraK%e#*Y-W*3JGj>&h zkawZ_vH-nESkrwFGWxr0-Ji8$E9W%8z&17pQx;5g*Wm+)jE{XkUs?YpzOwxdUs?V`eEoktQsbWo zNdE`n8O;AQJcIM!o>#Z6u^qeBg6R9ITOX^zVlV_Bo)pR3WWQD9H^0P50D6ED=jz@H zT5Ozal(FZYJ|5=vz8o`Znma*_hqaIr8O8m*BAEdb`3ge8RiUhY=LP7ZyIaAiRh z{FD#>Bk>LF4N~B$IE5S|5k#^M=*&MN$Fc>=t@N|!_C`@B1i0%08T#xIaB?u|>d;JRY($S_Gh0sb>s>-dj{3Cc4}HN1%&(B>)M2hL<_ zHV?cDZw}CdEbP1s-21s(uZ-+<-3kalS;t#Ww+8vs!Q2G?9EwTcOT*lHKE`-sKdlda zrVW?3eDG&-cn}mwRrJWu#!M9&(b{KTBxiOcWgs}th>(%l1fa#-nYPC zE1=J|Y7t8$e~=7;==#ac>1K_7J3?I-BEM&*OrM80VN$N9D&rAp9K;%S@E3;>Qnp=d}|eJPlU# zFcrc9Eue!0=;W@&Sk9jck)a^08b?E-R9pk7Bv;ceR%p9R%DtJ?q9KWgyIQ|wzO=IX zJ8P%9I4ojh!NR?5doz%nCdODBHdCNoO0iWPhzlg1O9^1-irqtTYbRwH_TEDmZ`05) zQb_XAPRZ{qgM8^tNk(@)kVV+$?yW+I%RX>Q7$=qlq!i zTkE0Wua)5*o}$R?0K{JGzl^w|xnuHe@xDWDTUQvGGu zuspH=(;Oo!5|mx8sUdxXeB<6P*QOsK#92i}B$B*O6A#eh4!*7)BeD^m8Q9Ls($s+P1h3Rsa-4}BRJ6?eg2iak0T|ehT+M z#g$uephz#&MYeOT{4X;1yAu-N#F);O--IKIFGvTI*TakSZK;18Jd5*X_>DP9g1Eb3 z(kQonf8RS$vN<({7~dqI1Hh$NkbFM6Xm$v~Z9@eKHx~;c@%_UZ1lI46b$2=lum6IMFZi1Qy}z-bv3MtcuKV z{f6?CMh@62woYFJk;t5Fj6O$z!EuRtJQM9{Emx%t$-04h89TOX!;>+c51M3A0-ZpR zVh;6w4<=JLDvri_JUvq^=COJ+VaYcXxbFyp?dPMYDBApF7H*=KE3!qO{CiGgBJs>~ zwk*v$UWD~nY17U7z|u760OYr&z0u~)p|vmP z8B~*SS2KHbGohq^D6IFh;o5Ynat^T4@V5=k6Z~a;;9gHeV#EIVYbfKM`sSb3QEmC) z4a8&y)+fN)fL4_Dv&`^L?QM;NHW&?Csbzm(0t2Y(? z5RwLXE>Ea7ZLI_qeuUSVm}{UAZKPyiGGGRcgw{oB@S8nI&z!k5s&P-;m|f(zzjd(BIZE#4Xyn%tl%W1C*%P;M>qwq<4{v0$vGY(%Iu*Ay5E~MiaX8Y zhT9Z0#1<#IbDN|N6Q|^U0x2v(h?&k5JvN&UUpos6zGr|k!Jh5+u)Vd9s% zo1Rjhq*yKk`n~vU^NO`0%bgCr@B}TqIXlAH1YqBH0MEG!6z)I~1ga;$`i-~_5nHIJTz;v@E^}#5N zxqe#!erERdoPK_m`c56&veD!L~CFms*G+!0ToM^=7!A0(an~8%Jm;0FWR4=o4cH z3lY`XIIdk}KhJ?dCus-pg49x=nEK$rmxc~iuR_A>x>HyJX6OxAV}5H=pn&rk55Oz$_}v(^5X>1G$wR%f^KGVsxKq{g|n-dFS)jM!Wf( z*(d9aV>WfJsytS&xtyWYMaY1-T}k7+1{FA7D9d1C!k3pWp3 z#VJURkjac{_SM;WFUWY;=X;d3=iZFuwP*>5SjHU@Scz z_t(pjKR{UtiIx8Zv^oAIXmkDzwEw+W4Hl;V9kkj1KM&e}3yfd;_&25mVHB z`S~a37jx3svEeWir~<|$;`sdW)@u7H+_7#>80IJ+BXR`u`S6rRe-=dJWG8v;?%g`7 zjnA(`8jxQf7^OS=vh{n@Ry-f0iM@R9$0UMaCtU#$gCy)iL*X3MjKD(5W#hD879nHj&0yb|+1F%!85A+&aaQPNS%{hm1Zh!!A8{ zHEmV6w}0{P+CFYf{nW={mM-yo1PH_+ z9jqG=4H7kIgFg@@NeqgDlX75qKgxrYX7+JEhdO`MBHB&jcCa8q**HR6`ptqGq?Rl+4*UYx4k4!MioWeStYeEUA6b| z04Qr5xhq;;pkH8Wn?z*_m=r);m<1HmUMi36cZm&>$ZGt;o>lhD9Z&H!LNwb9Q{iV3 z0S2`J0fZI+^cV}7oJ!=HkQidTfE@;n=f^T*P2I$3_~?R&sN-(~q@Ei!a@DFU z>ov%=?jLcwahIRc2*W`(1c1QXB5Ca6fCGsbZpc{Y3q_oQ;hB(YSkTnTE66h7X*M}b z-ivPRo5J#q12N9Fc%kM8cu_OO#cwqFB3-_i*NG@Jo!p&dY(^7A8cB>#Q2|lck($VY{dRYYFyH z!|n;gmhdQlmEYph8W5<##J))N6KP^##@K~1F|;U8)=^s6E$;iS4Ock2z{sJdWvgh4 zN?_Dsr!|g02~q&5qKu#ci>ykqfjl6k0mYSf5EAbUogaO$(iM(S&9g68CJ6i zz8QVgxTpz>VT`I-kPw#%^Ulj5D2tMZ`T&=IaaMB@fw7PY;*L}D+JbFS0Gpi^-MBP` z0sf{MZyVpPo}-neO7==kL+nz1-M&BgS#U+G%9b_F+#3|-5hNoRo;)n{Gmdcu^V=J{ zaki+RX!`1qHTAp*F~0JE1qF$jblaM1sSCHRzzq6r$8Jhy9T<(qh=8lWgzWG`55o#Q z@#Df;kA_YD@+4-(;sRL(HqT>liXQLeGcUwdTz(P`_5=LuGri@-OSvlq0xMaP&l+2= zDh%)zVmN4O6JWpvq#H`AjreBUNnNxKc{FA^R`yy(j3;h%xJ9cx{p2PqW0H%zQV-e>I08r8>wXQR8r)2#m%M_K~|4wjpr^d6(g|ZOhHe ze1RU31u)D}(I?z4ChWIwIDIe2_ZL3iYTdfEbg7}sE{QkRwTo@*H#aGl%eBYKT&355x>l>XY@40S4&CIg zGiY+E>Wo6OV_G5!H4~ZI;eXvF#Dy$TnbughEuCJccAZ;Avhfh4W$4bdZH6aJUs)!4)gmNKA$5b#`Re`tsHTc)7fv}#t3GGDN&OiNY6Y8U7RzA`4%1wsnH zYu=W8$g27;Yw=)Zg(LA?ynEZHRz}uqq+DoILmw=@D7Cdr4ke89bF=&_>g8A|J~pp$ zbl)(xizAg?Hal)~#}_j6GM|*iD-Yt%Fg6lC6;jQK{LQp`wsyLEXLnufspTLm4gxCL zC?>Xfx7Tz`k%K$b^hLHJ%-Hap9cd~k&*0N4a(=#^{c-X{Hk7v&$IMtzKbSU5b8RTe z_UU1zQ5ElzwVB6rSiGIZkX7HIGanjAHdL-sJ7v!o^fN~$%S_kzP5HT*Re0tE?$Sl5 zsB&ME0z`Mz<8kk`HRXp2fk5ai8gE+WdsVgJMc#RM9z$C=MrDS2$i-0}W#H3ztN)M) zkw|LUx>63+ZKbtEBYf}!sw6y946ICUOQ#=P3~sF%wD-`zp06+xTu45^<@tD>xN2jL z58A(GA|jn19JnMK@6eu~=Pm&6mK=$ZOI9S!heNzNU0wT5GRsP zG;|DnB3-a>R=!C%2Jjm{vQ^DIrqjgnYodM?lUn*RXJc$ z%@o1iW1Q1<5e?*LX$wo?Z9J4FZvlaq%?DkG4rL`~%)?kY8G{pOVum9Flzf3MKp&j~ z2?}AF8sok{v~Ir?7L99LJb6nSW~X9ZKorAoTneNGK{*Pm#%KrKsO zi9T3RLkwfKhkjz0VClk6_@>enRM-~fYV+roqrh$EY@me*S{BFQbnT80C+H8rX}eTc zulduc#dNAfJo&SneT?TLV}4Uo(r#PyuFl9Xy!QeV7|9Gn*Fm!*_1kMoTECZ4pTs(| z@n=B^kFLbRvjG(mKoQjr!0!N&mB0MJHtQhk_=Ku{ ziMTR9@gM)CBp$my+QTwqge^h3&GI5MtE; zQz9TPut5JcCwI#qSfS6FT@7~($ME29l6uMg;Eq6SeXAaS;xZscUkwpB`ahmVEMn=3}^H~sd{l;Yo%A3FgH$A8;@9mx6b3qMw-e=-Qe!Tf&^Eo5n{*^c;^@FTnm zJ-`ab=n086YQ@iR^1oRbZpkbFWz*zuF;?wtNNO(Tep!8u>yi!cNT6D`_ag|SxKJ3} zPv4)yRQSFYhT-@Q_m|5OCkGpWFbT%j+RFNTV#e1x*mnh<>0%FjwLgRXrar-iEeXVz z{q}j#Bo_2A$qs-pNKniTBk`+^l#5V5bV15zR0@kiu%=yH!7m7P!7!Z?FjMkNFiLRh zg_v!c&um^(9m>_o<^E7v^EcjcV080lMHpaiKq?5cuLY~62j@dQaH2>;8E#z6m#!5> z(anbIrr6n64tbTiH;A#%Ku4D@^s1NYZY@tQf*&n+MejiuQCHMDSQeEZK~se3Gd*02 zQgBSo06lS{dv;1PQ?}3cXk5~2&N(lG%#gPXi%_Vdo|zx?(k}`x5P~mAZUFuD_5SQi z?(37?n36K}CornHGzd@A+(7h?5p{Yi>dtOZYAw>iqftm?On=JxU`p{EOA1pCdM$yh zO>@ki)(Bk{i}v@wb-NBVp%jHUc)GbR zB9Dtg2xL^GivpmPz_27hWu#`80)HQ*d=@B(HVb%$xdl-bFOlEQ<_fc}msGcJiOGtE zR}+gzYk9jkehgQEWO{GuUrijeNlHMs<+#^V#YQa_m8aHT`&5`XptLeFLJ>0el;6^c z*`x>=C4|$gjYniBRfmrbf@uuX8#djQSO$`@7)^Qs;1G0KHZ&_wV?H1dx}`1{om*hY zbXrm4(?6`r!1UWGu|r`;RGzm=&oKXEhsah>+XI;?i`tJc6p7Bm05Oe%!V41OE%MYy zK$94OgaASS^LfC72DtieYe7~HIVqxs39hGg>_}AxN2GH$E7oAK~J_P?N6uKw$KWIv+^WI;9cc#0C*KQze2FS=J2^3sgmA;$eFd5Hb?LHVRxPd zPE_SMNEhyNzyZvm7B0v{50MAIeGDh$ORWbS#+M29jbxMc{gBvNW23$U_)&f z9)FeTM2hDr&gx%Dih|K??#4kw_R{-RY-NMIR)@?iV1EMSy?T3!${` zjVVlxOUp%}n-R_7OJ0MyEh1+oqR=paJl?N*s?0iuV{0Isb+0Uk5ABO;Q;*WfpDZG5 zA7rUCGlH;BCf3Cz8U^G>6RL^~(>#BL<&+?Ep*M8K&q<7Lk+%RPE+)1m%WF(G8?gAy zdM3}cH4Q!x@9MOhx9aXtn9g%WglD@;nb3cVM!`M@xs!=i=&M6Od70$SnD zD?4$DkRig;Vu7IK@3_YWZDA`OdLI7R5mChDM-4a>B5T{|UKlW_B z=}{&9d4Yub{b6iEpa5l4H|&ob4Mt@ERmGX6C7dm9gwbZyu@}?M1`8c9!&-`iK5FO! zQ*PS{gc}#Jwu-h57`r3Ne6v&h35cn{R#GO-HBQmbyPscwf)WDHS0fWJ{VDdfa1(r| z%cZoMQl}>o%ne)OR?yT*0(6%oz2j+sY-pt9@Wf+>;*(OpCTF^4rrX2vl(M7avp@MsACs24V;B0 zgSIYy6c|j8_P=E{KXskIdPNZ}2DBW8c^m)=?a1`M;r#$LnJEaj5Wwr{elrEV>K76H)}^&v+zx~Xo8vzTUFyK8ZiXbVu>iZ(@}ryF|A-?RUqVUhw1NC6P#2xi-}LIjfzsN1ol zkLz|Y>!ZZD$d`O^v;*3E4hF|O!2}OY`eqfBd9~Ld#P;`W)cL9>fl%xq7HDV-hP9_f zndY<5;?td+@4K%7+^2zL&%Zlu`BX(jy0@_cHwvP5VvK47MZjd|v6>E~C<-!%`J_XB z1(;vw;VmZLyV0GP9nP0t1k@?}xs1k#=k!e`_BTp3oJ=KnnL+o8r8eF=bPhvwkUOsk zvy8E%w_ScRIAZq^|88~V+zw{`9lLSqKgn>j#Rb1EwZLaICY2~WDR`RdfUqlUI>V%( z^+9u-y5+!OFjvPqofy@S&CoeMKWr$P@=Ew&vHgf}W(#yRAE$31=THaJYH2dk%wdj!(M!%Z!5zMZa~2%$xU$JxG%oYzHQ2D_m;eP-XwnaW$DE%mST zZQ7B-$rtUwoAtDjk!2IM63xvt+^NQ$NmaGE&Z&yDMBeG&*yyN@rj}zoILI}B$n5gC zHn$83i(SS%d_t?p@r@JsrTiOzv-b&h=*-=BreL2%gIiEowpn#<*MI3jFFH=yah;rp zPm@%`(Oe?l3Fxm=cUDu-jh~?0CY|&}n8vVg=3y)4m%L{mpUma)X;WRdTE@^q;@8*% z^E2$kuoi6pqPlHZzHRK2`^ACGqvby@U&{9x+DTNbGVqh)_v|g>c=~H;fBY1wn>{N& zbQkB`PQ>p??Moey`55tia?A%Qz8>Yfq0n0j@7L-6*XVHD&3IoSmn<7@Y3Bv^7gc2b zy{5Lt&fqOh8zlG#=C@v&Ib6ec@@m=r*#5gwd{Or=Qhs*r7)AE74v3&TLyo81AU>%9 z#V*iHrwX@>!2srS@7*Q6lalAaqdG{f#+-SYy5T!;=EF-V>5yQ^b=bgP%SP~C7~Q^m zI=|lExda}m0`tJr%ZZN`?>txTLiNk3ATV@d2Bqh%6uzgx^=fbkB`6g`gp2AOay_v( z{N3kL9o`wYH`}ytt+!4+Z5KT|2`j^YrcGEG{@pzPRV`BaHClgCL9P8SE~#q z9)FSY@x}rXzXu#oqM1lgB@ZWA0>IYw-3I7*zB#$r%yrU>i&p|;&jlV}RR{u8pb$=n zuo3May=%2+!uINTf8Wf7C~qnT)6WOK!s?#YysKadD9aa#TWt|Qu#ZSf5D=z3U2bwLm6Qf1fe&qNQZcQ;7+0SW434=hd| zT}C<|I;j;mL6cPJMP2#~IHKIx*r*GLxq8D~Ew2={Fa!h!c|zo1HvY*OOaC&uXQL}RYbOp==uqnt03@7_>PSK@4S|H}5x z4qcML_or`tWeD}*);q=6fo9QT&#gDYnF+ARS(y!{FKT@7=e$t=kZ=H83B5My9K@!f z_#;16qByxBRxREn2?K^R`>u!nRN$1Q6aiosd-E@RZ`!I=sbBx1wZ+5w4lK5_<3u#vUC}-l03U?&osnq1|={wU4d<^@8Yv=vteOz}=%}(g| zG^%PHPV<1m(qd*Rs=g1WLfrl?3L5A;BjExdK;eP+A>6gaB$Ef>=#L>5H-XIs>M?By zo1bx_NlP^M<2Rkgk1uItvS=Xb{$i*jyj7Hb2`1U>3l}Qj*>2TvT!Cju{OnDHduz=! zd!ht=#KKGaEdX7`(9}uH=qwH;gR^t#wo_0l4HX}0wu{M$nKPo}=;U0^#52Dl9(@|q zSUL@XB|Rt6Wsvq*#G}DMn+5nmK*^AlHI6Mb{MHKvih`hQN5+Z#SEXw5e~k|wO@5K! zmQ)TfVGacs)l`%x-!rHew;Vfimx2^nMsQ`^A6Eebe_h0eG8ERD7{eApT)IhT#X33g9CVT4WVH|USYtZV`!FN;A!8K9tAjlt%6%M6H?Pa=l3O2B0~3WfN2c{U?~r?Q6Q zaFFO0FmK5q>5Tr=?OBfY8@9(MzV+@*Tcu4{P7{%Dg#LJI!Ld3U2B<&`-dWoSq(}Op z3#{KX-$MZ*1W!X*w^tbY4w-8L?gRXtR?D7N4DSjehPeaa6sWszc5;!+uIj6!9<=8N zf>I(Hn7c1X)Hi77@qCXACwg~v3Xno83NEWYX%66ME-PTq0LiQMb$XG_Lsq@$MK}TW z7TmcG!w(h6z6n_N3ZOS=D5nnuv`=huoJDaP5lanWQqg$29voyBSY18PdB_ivMzL)e zdqI*n!*vtM*Xw1nbIk14cKf&nFC^C|;-WTPc2fjA-|rcw`t0c)lvBl%W1VS_z-Cat zsy--CRf|`nH*OKiihJVvP>UQFxd9J?!Jq* zapu-bXN#^N+VOzn_C0XZt+;OF(Y7n#R?pxEHc1hRU~}R)x;XtuII{L!zm#?(1oYl2 zHRyJ@t%o%KSbIT>WErKepWgH|w8SzboU?H}aWsS5gcy3J18*%uk;jU2b9pyDTD5gs zw-^yiI4kXuR{Nz<+6B%t)nRfaKC)~5kJVv23cs`dAT%~!3M?i2-NqBC)f-!i)tB6; z4cZD*UC#?!jK|Q@d_PX7aDnE;ioDw!L;BhYjs+#fewcy%ekSy;*4xPdJ9>{hve%-{ z@{@m2;VQy%T9Gu#?{zG_P%T~Eu%~Mz^Vv&bV@HPN;NP;bzr&53d3+9OUQqk_pEq+P{SrUk>hXZH!&BlVbqky7;?CeQjGy6w7d2noR}ANpybU8b3)HL*t|*&QdKH~ z*k{Y(s32G5mJ6yY=G2uz%T<&Su;9QEA+5!Gs&8bkhR1l?sy_`lW%z0r*0X2nnf76kAthtkVeucH=@8FZpPBlc7-H6_oq0!()R zKxlhJ(^EZg+Rh2~2b4QLlW9)e0b!zO=t&yZ4+2&q`yQSIMW03hD?rr0o&>QyaNQ-V zN&|ol*n~xa>}O;>NnPVA&Mni-p;WkLN^!zelZGxWP_Io(DZ==bM54J@K|Wi7qepyW zF@zhee6g1!$XpvQbQ}7HKU+Te(Dow0Klo^FEWd13(mpa#3En9@G z@4%nAiZkFS4Ki$N?3^ua!Qx|ry_0*iAoRgm!c!-m%;&}RM*LHnN%0{rVI{QphVf8*u9C!hbf8JXjs#BDKiu>ZS^Jgs?YyD5tFlhZ5s zDlJ%W-Ge{f+&A3)RAUyQb5Q`gfkUt+SvH` zIlb`ym5yQeCJPgEAmzbWr@}x!u;=h{mFntc2MXVdX@?eoyER(Bhzo2h1C=B_3@@ToDQV(>hng;j^jy1w{H&_D+xk(9|3Q>->x(W$*O3v zvebuE4x@lr=z6;A^`cS1wmZROC@&I!_}X@~&Nu7mu#(Vjmyi})G)HV~otEtHmSV?m z$qj`(^-BUaBO-&9^?V&CsO0%>T8zt$h&D{3;D{6o&x6nK7R(d+vwd)1^{#?#P**QC z4?m%a$>0r6MS{<3omk>dkaSwSfjdPwmZ2X6q$+Yii4%LC;A%sV_X$Um>ZF?ETx~Sr zj5DQa3USsW7GDFuv;cqOEcEV!>U(E&m+Ct}r}}crbQNOtts<(2N~32&Uwq~ZWKm~z z;4AsD$ZsYdMp0|YvZn7C6e}+_sJu1_rw1cCP>g7Xy+F2T8Oq1EuT{g_!fN6O4x#CE!9@1vAnE+GRto1!WT~MnEpe z_uJ~lh=w)$g9eHc@*@&_Nl~ij(Vc6Fmc%U%^w+7!1Gr9c3Lw>CNOXgKMF$@vfaD{( zT@bi6SVNBV7#j3TWDPwA%2~+?JptkJ!yM`XaT6!*D9aHmyA z=)vN}hpd}8Eo2-rS<@I;!rNTRdLJ3~kXi%*CUPvLI59)|Ks5{iZ*3iF21b8nizI1i z1N;L!U^lNP64rqj#G?i6IphY$3=11!%DcqHp2bZN2mW@3=J#vvqZJTHwR@2%wYFHz6v9be@P<(;+QxPQnLd;l^^dVmY=C05{d(kjyHw^=3&|~dHzkI_!Djvb2ai6 z+5yGZH6{OTG?_CP>yrhQ8bQsa&amYyKz1%kuA%tT*l3?8FQGZ1BM0O`7-J}fj=PDh z<25nmU$+vpiNYN+)d4?M5WhMEBEe-Ui=Y)0+=p#dsFc(ilZmO+GHSGryrZmi22B}f zsfpk;XgB*dO}xx1z~)`Im=YEknXgy}IDOIq35f?wI36MOc$>JG(pfJ`m;lQ{K6;oq z89Qp8Fmzm4N`3tj0af5chk)@5pb}UO(I=q>&`lO+c^P+xaBNDE5gADn4L`_)zs^n+ zL0I)~gt?M6&){y)tFNf;+xphN9o%m(5kf}6!ZI3Rv0JQc%p!I)?jim$ZzljVstg)) zr$rC60`~s1-xep;WWt;KD8>2d^33_B;Z6nb;L>O;9Rm?|hE@wADnen#B`6TGMN1q& zi2VZnBQ~N~@D=xYcaOL@CE@RGHs+UQbkF|x+IpT?Bz%9}-Y>xhdb{EuFGWK$`Bd@b zsQ$kb&p0tur#85TIu(&p;Zod>W!iUF`TARkotjt*Vz|p-iQ1#l zNC8p>5%atCciaG;Q*kcIYu=R>ZA|? zfU-?eB8?)(70PgepOkyDmM?55zyH1m>WniW?suOAaK&upJ1@@zLcO>2C%Lc zlsb@Ew&a%o_3=GAwDon|v{R76WAE#~x`1shZVk{8;q-=*dLSS$-YDYrSfN$|SviVs zETU0bt@rR{kUm4Oapm6$-p3lw2eBQoiG}Gj<3A_RM5TJpZ8bDU^n8cYq&gRpXxz{p z(L}+hI7B{a(4aA;3j3>GQ6-oB3n&M;5nqy{Ky0}f;19xAh;1Y!rJA4)k@xtXp+x{B z$5jN`9Gks~ptN#~uv8GD(!isG2>eN81XZL+o#WJCKT*3o}X5Dqf~;0E3kA0%NZG%oc@chqsjokJUu^u2B)o{B+Eh)y0ag z^pbR6FUd;(ea^8xs_IPP$^wD=`Zg_9^KLB5i=;>8W-VP6QVWX@x$x1HVm34rEW?oR zX(X5ETos$i%7X|MQT@Zk8M6C%R*n;=$E2-|e9c0v18w9Qi5x6TQGEq1BJ~Hl$R7=> zDtLLBgcYPL%}_Fwm~!SF4(uSD^%x_h0r2(yqO4jo6UN+~)$S*-`{3>n`Ve$egEtS5 zF}LV>>lQUMdWWur^K!Rt%8<5bKVTumIWdTwYE=q6ZAnCvlwl|*nZ(=FNX+SyQ7k37 zt(3^;2vOR2!yw>KwrF0^4=*u#I<6^F;GLmZW!7{VRcEU3js6WE4t3ygfc8-rFdg1^xvB<6n+w6~1bLa+$5KnMSU_dZybaSA50-0npfS{OLp*C*Dz4=!`pb zC6ypxUH}YwojwtLWR5a;@;a&)+1aRyE`u6DhDh``!QWx>nP4HQReo+Kd7t!TsTef1 z=j&Z>YV!2&(6AOKk#n@$~$+gZ>#kS zRNq{6?T|+KW*lxh84~t*Du5~nb26Ac=PFv~Hd4#aM73In=qT8=PjkkhR@)xj=Kwsh zW)?*Vc<7L0W3iwGUs7D^-?nlZZ@Y&O@+SdJbk^+S6rZt8?oG1c)QUQXVGa6QEX67q zhQg4ky0;}rsftUiDM<*BqZhX{#)e2x;-n3~Ozw*oK#{c0K3TNn|&i4y5rU;Ao!*)6m0huBaY~TQ9z2X@5sUnYF8#qK9p*Gi01!M^0 zhoN7B>`$3&DuY|*tjq6r8%hKT|JDm*9B3j%h8BkmCOLs4MeL!w;3}-JWsG|lx8x^F zjcKl#pj^6DeeyuT#p_X=_J3N`7StoytHC%IB+g%h^j}hzx6a>yy$LF{B}X@=x?}L3 z=0lmxOmLAf7Qb0I2t}e-Wg6dLqI)XTJ2niqg@b3scO;w)$v(S&WI!{p47|aEP0uWQ zUdrN&qvtc>AS0p@9c62{)I#zsB?$ev34eZJy*=OO8#1&$Z6$<+- zrHG`n)$->l&_GJLPqJcJ;3WHA#kc-1#ipcZziPieCD%1Z?9p(z zjq@xxfP_c*%%wIU=Vz%(cAuBrhUXLL+RXI4uCjjD)=xChkJe~9-IekC>^ zMq3r0H0<7)^;p#lM6f6R@C{r3gCE-A@5b(_9UdqdS zFcS>o?emhh+j1GSxWTYVNwI8I6BVR(LigtvI~Iz^UUUv=jD0ep;7J0l45_$ z&f@u!X}x5btubmn^|t8&l-M!0${FH|kf*`*e6}Bme^h>Zq8rGF9 z_CRVIn=1d;-p-MJSn(@YP?UWoc zNU}>x#)!_XS~C%``#5(WZKbsty5fz=`%;9zNi%yo`yzKu{Hr}n3e{*#5s zRS|f7`Js`0AdZWukd*YPepW0gK$Q8kiwfXz4Ij)-<4K`mRlk=5%g&Gp^+@j}9>T%s z(7X$rraI1ku{`Pl2xiz_N++k@(hc~`sxG5KvDKQexCakb59|Ykc@=PMS++qeaU(84o(>%M z(G%J!N|pKZ!F{lNyn)8>mdrH4$8pH54B@Z#`+x?BrR}aH_j2c8)QtFU^RNzy=eXv< zA1LqSeeW~vBpm4(HD{q+xf$pm>!uO}n{-cQ0&V519)h0@@pGW-+wyCTgl0wtfYCjk z5It~~?!vnr6?By7B0nX8+Dk50pvOsWXCEEoE6Id{xScRriZiAytcE~lq zVF=9{vjBwgiigdMOTdc)A>Qq^$;Rht&;lg&Nzqs0#F=Ky)>|6TXev2d^=*M0Y4_elh78p^hTR<;eQ z00jp@$6|%v#1#z2vkw{J1L0wvE*(26@I-o2m8tqZ2FV@I^Cu+>w(E0Zn*|YB`S%=gY!jGBJ!hLHP}w3xZu)ag)4El$1T_=>q6HiuKk2 z~VKi zcS`52rh@;)fcXsDlD8VD;Wz3PU?{6DyRYQ(ZzJ-jqjY&`8)o=E3!bXEP^Ky~_Fz;- z?E4~VV1`IJ1k?g#T7nWG{sW|f^YAl4jjUS)s9)VlfF6h+b&xPIpxiJ;m+oQ1dJJvW z3qVHOwBd*9zhq{?0y5BYXZ@A^hB$WK>&MvD$<`i{>5-pl03g8U)#wrTA=QDRF^#C_ z7nzJ(68cujAGsB6`>h?J{nh=B;g4yKV!NVK-&9W4Q-0~;z~}fe(x)vRl$0q5t*s++ z7XWC98$>9`tbq*83)snqEf0^{UO6BBl)p9FVmL zzt*S)Fb5N;Sga?;ULFM=Ch06Man4?X;g&5$RMhLUWJ~#f2YEq>vA?4z)M8uEsKQFG zUNY-#MvmZ@0MSq2D24orUd0KxdXX`2*tE$T>JoN`xFraEhmKZ$f51JF$4L8;lHndg z8mbzQl6Z7sgg=*tHMcfGUtf`iJV7kcr$>QRlHS=J`B5OJz=q;688&Dh%4(rxOTOk% zbyjC}nm9i0@Fuf$D6npX#i})I&x^_mkh3SSm5kQ+lx7Z{gp0rYFlw1K%&^^H;fplq zT?X$I<~zByD~#LWE15xU0e+eK)BdC9;9}Y0D?x;gyMO>diJJJE6b?3n^H5L5cLZQ+ z(EKYl+j_X0UeHX{jyW+ts7G6DFKv!-d?5lPHO}`Tt}BaWVSgY1ia4> zbR*?1kbJ>L*>)fZ^B8n<=Oe|hElt^TFWqwlYI;CA_Tg)=}2kd;f3pK85>Z2bXS%Q2enjf5$J67b&?jk~wcK>05o5qHjrit}(^iER4TZz%vM zqbA@R!jf+Av%Npi(L3i0FThAxSvS8Y%w!UBbum`W`v;G(b?MKQGXfMNu4-t*nHq#S zcNz7$S1y~w&yVQC`4P*yI=-swHa)1hlK^~nP<#0zbltlpuFQaLmV#pYn_fb@mpzh@ zka}I6?ZGY~lP!Qi%dtF)8NF0gor(t(Tk6L0G zJOeg)rO3Aui;y2jV0(}xNKTQ<0agk4LaP!XFKxdsG!LjNtt109b1O_bQd>xQ6R?!( z65O?Vb?%rrihq+s${-<#x*$;`4C8HEvt=^_;n~HWm=2Dzye?aTxv_2e_%TnrLF3uB zHJwjjfahfcOga7x6K<1Zf6ed8#QOXa9Nr@av=~Z%!D5hPfZR-{i_z&lF2s})R2d~$ z$I}K~7#0)a!n@Pw{WCk?8!K~{i`JsV^bml|Wn?9SXDP_oSpJC`;bi0d z_fwFmJ8q32`kdCT9YI!^5l#WZ=>3K##66Z9mnZ5tq7sMSqZ2C#0#)GX(|GUtQg9MGk^{xOA#6*u-j*1(gv^D7@BKxLiDz91 zM+d8Q&eIhw^jEqZB~RxA@~k(%Q#}U#7iPKwUdfXZsy+x+)C=dvqF_oyx1%tKBy-_H z_LCDukU_yM96c~kp1MpJ8?5^Hh9i-hQiho85p-^n^q)N{U5Uho7PLtzKkz*3QM-h6 z>Ib>lfuMMaEfubZu`$0|j3Yi7+MijPNowIP+8NpznDHvJjEN#!2MSUuP96JrPSsBUG6twZ- zpcCMZ<=(#RS6aUA(BsK&$Ei>lUx!`F#|Vmo(ACZi+yqSbw$Ur1M(G>5R#`h&CdUJT zSBB`tV1UO&6)NAmFnsRc!ay(vCtSVEpYy#KzQPe=gy@o>@qJe!36!^R{zheoyS#Nc z2N6p8MZuk|PvTr~fOK~*h-=%o@P0$UfN|eQ03T<=NB(hf4)JEPKobD-Nq(-L>!9iBp^C49DurhtWH{+P!l`fw!s zdz_%Ea7%acqUl*lB5nzu8luWTu|f0zDEqye`6tRXGY}msgzsr`kTdFFAak+Q>*FlG z_A!2`+fAvWr^gbcQyX#fXDF-=)1}Fo~D+o+uZaVFsRG2}>r78&cir~T$ zMJ5u|h7=s$o&=ytLS`hlC`tQvTilkaKWZ*i>2?C>a6MYM_MRy#n%rtX?w}Univs9Y za(!p82D~E?YHSk=U;fl0e4#G5#}OB%ZRDp->B06O=o?U1LE1V9XKo%AtBBjlc%i%@ zf=|2WraIT3l;=}lO4eHXFEp(;=5)`Y-A-99xNo*kmo`BEPV*;eJYC);6Xs*k&PM4O-4}K`hta@FS++U$zcZn zqW3f+&Wah3vXt>O(DX-nhg!B9zK20kUQb)qW)*5a`L5VMRj)%WN$de2-t&p8FK0l! zpJH9?9>_}Q!%g=7u$~063RDz`(9%SE%CD+yxSSsp zE6E^rPo4GerbfKg-^w9SFxpGbns+Zs}$Eo>)g>|+L3!-a04 zOzlekN`|i>6$X1IlmQ$|;K?V;qv}(ZLoM-Mv%I)S@r-*DcqZ`QrGS#r{p>5O+*DR} zik*dY`52%zpo$b(2raCNzo9OP*&hxy71! z5Hg3_OZQMieb4d!%3i*k1rRwSGrY9v!mkp8KfQqhY^SN8R6s&nUfX2iLI;fQ~eLL75qSgz{|U_oU(wkxLb)PKvX1TZkbAkCkc>&>F}QuLsZ-;J)R#fH5?x zw|s59u2W3OvCIst0dsiBmYJDqi|mCUygqR=-uSS-rUJ}!A5D@ASGE#G9RdwX4F;&t zKIDF!GF*f$#gu9TCttKP<#U{etiinDsP?YuuP1cPWsc_F{ z$&a>MsQUZ)M^m}`7QibSz(6;F{XRYyPA#YcdT=V|PIrRlhYpy(tGZiJ|GLE3$6EwB z_$6-YX(aborHNyz(E@;f-hDXJfA)|o<-vCEBC%M*KRj+IeF>VUoVW}RJ#U#MQA~5c zCCAVahZPc=5hYlAt~jAZm?Ta-ZC_{_!b9w zgGpG#!tFURIA(-nM2Zbmi9?F!TN1;zsOyPFk^)lcg8_R9{KY@RGw77b(Eb1ir0=d> z6WY}Chw}Vf)HNKTYkf)cTwz9$i*HWj4j85>PBp0#Xvl7Im+j_7>EyuATO(*kt@;qW5i~o{0vCK$?sZ*o z#Dtvz2Xv~FeNn)GZqAPqeVrBM^D#X<)O7I(Hj8LJ;nFyb5VlaXt-a})h!6L!N84Tf zk;YMM@^g|s(P$lMt(caCJqVRIXC;oh_RWF8^J%rQ@b!0^fG~7@pDT1?(ViCBlyHNZ z^|jLtC&`?;fB>WC)=Vj%JNyb060a z1|xXIvY!-K_!Y_qS*#YCUwW8R7h7%mUbGyRiYw|eJhfdpAJh2FJqh%i86)1;pLKDR zUgucDy)_Nm6!kLX$#==uq4bAKI6y)ov<@57ztB4WVg>BK>7IYN8unjBI0)ES z|Ho!0VEaFiK>sWYGcz08zbk=`HPmg7{*pkewQ0ZM44z$7pVJ57D~I^6IQ(!ind(yf zo10yN&Kg|UBcE$$Rke?%#Drd82K(s!2~=Dg)dxFbPw2^QjPFlXVyg46R0!1$t<=BV zJRdF=YHI8rACp;&hn7P-p3#1+B;YDDm-%FRxZaH;10uxJ{R5=?zQLeG^j_r|GEpAo zDY#p>*aL=2jl8HNcLq(bBJB~`!9qMN3*fC$hTqOgcMa$wQcub0c^%D@rNmdNXM8m{ zRi(s0l&rj7DjzGCD`%=@aXaU-t7Qvs@$6x@V=otlox{~q?1qu#UFAn#e_g6RxSjPh z_SeWt4#Dkpq)r}gh_q*WU42JuuYGFtM+dw@?Lg#2^jFi*^7-Cl-rxLkWFd@jyV(3D z(Ukdi;2kk^895fA$qCQz*MAx5D7cj(U_klE8ssERZ#xPGr3=2Pp4p*pn;&-F%ah#B zy;IwVlXB^I@inXS$B`nUI~deLffbEoCj>DDQ57A!363LKohttjZOU_Ug~CJKqHbIF z8=%RuV|4yOLFly1_BRbqQa^g){N)G!DLCbPQk6$%bvdKeECXPNmMel2lfawWp$Vvt zm%82@fDLMk0-&z)4EL<+IN@wa7m!eREhQuz0|VMBChREBB7783-(BG$MsWhc4D6U3 zJFh(B?{9Iq^vG+MtbQkG7h>`4mwtRx2!xnIs;?UKb!%2jKc~a3SBfWxujjhE1U?uD z{#Iz?CIOX>@lYo;MNzp0;DZ{cyhEiAF!#F{Mu$4ujh03w)+yuOrl4ZS#hsyN5u)bP z=9=O_g6I4x2FtKe7G11=wPh1p^0j% zzv{eQWuP$=@=Ne;CtFvpMlXcM+@3s>r&DF}rYwwQ`lBKWpGk{<^k6Dqy3`F+crVm> zA^b~F596y?n0`Ba_ZAhC$VZ(A5l_6OCm;7ykp4qBR1h6p;i~;O$yfVnkkA%Xl|jzahHPlfl4y)+ouC<_4Pc>`T#c@|K&M`06s=9!!TVME^^@A3I#Ui z*vvp&LI{h|G^jm^ee11VK=mO6n!do2E&@z@EFoNdmn+f{zFmXaGU%$1u9A!a{`H2$ zDuj3uT@=7foXbP8jOJiW>n}e;N|CV>@k}ReJfFLa0dV=>dq@o@1sKH8`H9GK#)B?m z@7KaJwuv;#?JJ=66QxKPvfVY}J;XAKSr2F0rwcwx(MZb2FKQStVyx`?cfTy%heG|p zE<<=!6FkCmCzeew)6zR+ivafHkA_6k5eNFo4;I@Oa9u33X>MY}$k>Hh{n{W;kp*8P zk#5yv*@Lbd$G1wIW~7twcb1z{Jp<{PBKJ(9XIO7Yk9Kw?gOm#C^36vS%I*u0T-hSP zpxZEHytntydZjESNz_rmu8iwQQMRzfRrbZI=%<~QG2t@f+}P{Twoav0+@W40a!Ux& z*V%DxrDwjwKo%64*l4NPO$yD#LZFZWbQsDYI7jDC1|L;`!}pQ-Y$bx!Dxm>QomX45 z`+sqmRcZSJS?q#1)IOCVHNm)P*WQLOqKH3;y(qI5Ep#q*$SR7eo2iFOl5H5v7|=ze z&{QGj77p;=pH^2o)3g(fC>*e<)5%^`R5>ee)K;#+ksT{|(5b0!$e)(FBud|v8?yuI zShFWeja{AgB!v{WQNCC#QFZHv=18GgrANtnMYXS6W$C6|&Wg+<)F17-*Ri8m`R`4W z;rd36V&zcx6rX7|gqzDRb76}FLa(In{rTJ;M!YA|X;aEMa{kcS9M%_-c5ftWx4@*d zohUL5_HR9hXx`U?X%`9Zw?bKj5fV4E%FEF=7qk|w5Hy;_iLHVfysC&(WE`ijfHEyK zV}Rr(JnB)gbDwCrv&`)IZG>lAFgRs`rG|8tT5muW0Y;64{o9-He8L`#O+Zc9;1F#& zuu+}`BGSqLgX`U8Y9Ri$-3dlt;GstZ^Wm>Mcp!jXu0Dr>z4B!?BY6d7qGG`EGUw3- z>bMD#1LuYy-P*Frm5e^|Lkb4=#tr`W3UlZPlxmV1Ar7&#=mCEuQ_ngDmQ(&tNS^0F z+e%Z<%eO^2+@2*}u{$Eg)pteo(l6^u9X@k=U5YlE~Qu6~2}wczJ|9qMvjLd~m1!D9OB$D?B)CYpZo zVX2)03+s?bPd6?er`Cvv@_JU%d=7=-A`-C!u?p!p+a?1y-ju~=(;MRu4?89_{!KdL zwYKFMst}&#tt;O;@RsyqZtIo50OtV$ffioA9R1b_aQbdfJY?tU$HY$opM=0l*RrYC zV2f=xmp=iLX93V>nT0D2bE9$yl?OtzJ@7G2S-kZQHdaUhO=!l@kpl2bYV#;NT8 zA*ZtczY;|B?-M5bKTR>k@^2I7GPb2HPV0TA&#*UTM*wj~)_!BnSHBG~i&-Fx%Oy|@ z)Y!^8qC*N@0?y#qbN1*BkC*3C^*ILwhn zs@*^kXaGgJDE@Ihat1e-17vlZk5_!bB)8+%Y;N;LqaRh4a+~^ky4kg`8~b`%wOh^M zm3DuCCf9g#o2pI4E?=))ug1?LCGIE^V$xDWIOK-%xhi$lI&KwGi$aYm?K0_9GdG+1 zZ1*ER&i{I6G2sYW!9?lFi*EL5dL59Ms{U6Y+dXgj*ZtemI{R;5Z?=(%GuVx_p~-Rz zs;Q`P4*aCdJ4SZo_~aM7pva!Po$}*up>rLDQD^)%Vw8fJj4e+%iJ`YO)d{EX0_IbDvf(em zHLA+($lVgVEe~dtP*87zj0|pOv6x)7&T{4$@4J#Q)HV`Q31bCaXN8_VwKgi3Ihg#* zylJjOV^7}VIU`|VA|A=j-?c*4zVrf7>wSHsEISTP{;Y`z3N&^9u6cn14Bw8JT zTgsbSTXSLHm@qKoI?AK^@e%_`D$3}H5rlG0_#hjlfcbqP8@$GhlV7?RN;b{7K@S4y zsFDmV3Sv9o|8-)J_v?O<9Tu`IVZ#%E`PaKveiWy|<^z6ZP(>q2ky7YfWPpmV;6#`( zTOuUJU6PeZQu)J6?dLSrv+#*IHs;Hg%3Z`899HIry_M1Zq{f7_i>~moxU?^Xu3Dqm z_BB6A9Lqdq42bUVb3;Rab-vV)l>z{%vR=3NsYP{=c*u{)miW{-K~$8}#*h@4e6&R- zMwfzJiC%w;SWHM{nSwtR00D>&e2-F{9D{0~%QAH)gcensd>_s|SE7e0RG22{RtjMZ z)1vxGc4I-PBMRs>|EgfDT=x(>s5T58PHBIRYBRD#PpKbnl3yjVr4M%Qr)}}lU;B6;fcR=H4 zwL7If*D@O+rIC112QeJS%LjxV1aokbczKQKOP=;mTONuJzXE1!&TyUxkZ!ufIL14T z-G3+FJmu-C~) zjeL4fMRRQ4B3WNW_7ala>6MJBEfc8K6C09Q$2}X#jEOB1;Ab-4^rQz$>@1ifppbzR z((##+P*4mfXpZS>9#8}l)pUUHp$CYlcL+(g>?X!lcCV8>Z()W?qWX+blD9o=v#tjb z(bv93UP-$$X=z2VZU{~dgy#{(Y5KBvqJL1kGGmi4PDQObg~Rii*V%%N|LOx0fbQ@f zS@O2Ac9n*{%mg^9bA}T@(1VljXrMV&7LlF5im*ZTw=In_(be0=Th{1QfjDInO*6}K z$^#z!7>mEw5)EwJ8XQ~Me2`S;eV{kSP+bhZ| zy~#4P^Zx8nq`}JlK@rr4q#w%D84bRnC+;9KZY($|w2!4ysM?y1!!9p!l?zuyp{pdE z&hRDf8?8tpw6WHe+00CWSI|X^ZneJOR6;?m*)Z#a z2h@6>D)pFZESYn>uH@x%d2)^&G1uLS5P)BYj-jsK;2JaPN3yY7_|`G1%-c+&Wjyg5 z4gs=M^imxAg*og~PskoR)Gd4Ahf5eh5B6o@Ydb=*7Zo`OQsOg_p?8}d&Rx^W6Yj&i zm!)5lEGN~_Ag{R@l$-v!j(G|DUPUMK@|qiXjb zU+o0isuH=R{%`Box-KYOf;Gbn5aCLKiVJ_az!Ff?`=bVhME+fU`E3v5^$w_I3ZO*= zUZw9x3d#{GDjWNL4$S_uf8)S<{8cZkO>*Oq3Ne1G%=mPS<#i#20i~E{R3j>(GBJhI z8~>+)4~Iq5&afO-sU^4*RBP=-z5yR0Awca}l|m1|3@VkZu#5pt41AOq5=cD?Rf=>R z9Wqtz3l~9o%}T*af>BCTKA$caWFAgl#QYv?TqUz)krz?GSP>0|vaP3TuEi}NE^>VB zs8d$7-q%oWEL5WVHpcJ-3ThbgJTF>3aJ<>tis-M)&=%xX1{|Dysl_F)1q9^{c%x~q zJ24i_tt&CPssISz^iFxNjjlde9Z3dG)3m13m5SG2&m*WTJK$^=&L0TUKWz>Jk#Ok=fzNzSa>72G4waD|CCcueeOd&_V}J>5U9yj` zmNPy9l`c<|*@Ii?Qyko3{$Pj%LbcO1Bxj5jNf1rq5{gfVMq`91f4OU80Z5NY%iR2R zrUmwlPjaJ??lkj>q~socEOz0>l(fB{z&*T_<;SVMp?PhOslKq6YWHSTtU zx;ZrIRPlSX?lft3mOh;Z1B;yKp9hcEpVti-bs1VkRKhsPwL-xHBd-StAb-F`k(p=z zt{~X|WyUG?zh#_aXZX()1Utk3mlVW5%>>2F@^32$jqSwE|5_<9|F?w&;Sf0BTn_h= z4bvf+49~T3LV624cZBO`y|9k>#f;3)`;CDBRFWOnu&en7`GFxQ4O(aKm*0+7*V~0= z=a_m;u#T1%ZCk^XUHx3TzMx5D&kM<%rb*N(6`%AH+_TkJN&SSD4~}O) zlSaaV505tW@5h7LNK{oCRj8h<SAy;k})LDxBjg82iSNLe;q*zb2AP#A|elIBx0M z&dLvy03e|+0!{kcTj}LHm_^MSEn?v>@#304iYZ|+cEb$#|w zwJO8UIW8v0tbnVzim|d+%5;Hd1Ct^yB{P)>ND9_dus3MElF0hF&}^KeVPD{yL!2@~ zn;BNRu_Y$0K*&H*G(n8}B%bC*Jq1iRTA_$bD13M7k{WU1ogT!(K^-L1T{Jz2Ed>k& z@|kJG48%8tIVpdO=0G8O57ea+ww%`U0Q?gd@X6gRW+-`*zL*()qpAa<+Ha8oXf+F; z@h~PJK#+ou!?G0vSAlVwU}h!!f}~-fb!0pGyO9QXK)G&W1zR+MP8>_JBX5>W$?M}ax^V1C`aZbna9PHJJ6Dq zc;C_w#!jjBuJGJ&WY!YvldymQiDu`>6SK%XiZD|aCO={m1)%bxB5h1yc6n$Cel*gb z;@U^(sWLvXKZc1fUmQTyQ`+$!>OuGp9`^Lj6(koV7+0EuotL<~c6G)xEz3)U16{EE zRTML=v~?D8wLjLqf(bx9EM+d4BDo72!ak5dAjV6+w6c#7b^7^i2Re2lLmlKeD;s+J z0)^z#3vn)sA^l2{;T;36O`n^2EO%l_3cv63)d)~m#;Y6Pkf2!a7ENC&zL^(@J- zh*=}5(k@A#Gi?)3PWuoqgZOa~H)_I{QU#`?R)A7*@DH40xm7 zf{6YGIgL+eX`!hU`y?5c1`Iu`9P$UVZc)UBeY!UAKw2tt{0U+j)O_-oOnDaD@Eyr#Wsav2*4 z_p`w<=_s*vhrJN6y~aN17)D=so3e%rmH<-paS4k8+VDd zl7C+JFQzI;|Ij*FsN`6#2_$^y>6?nq8VcjpTNNJZX@6TwNxqw^y{bF$L97l_R|d&0fmuigTS{yxWWG zHa3@7&zvB%pdggK+-^vhMY8wOwAQSmHu$J`c0Ssi0ml@+vT$aQy-~q!(+t!P$jqJS zXj74gvu6L|E%<{FYE~#)w1LomoS3YLiqQq;7sc|3aY`?J9&u?=)lgZq^)6>mg|pzM z`*WbFBq4uz9g1Hr??cB}OMB3Mf^ z*GBs5tZ%CYw1WT0_^_iabN)i2YbCRT$UBT%#A(?>^^bQ^DqhB(S`1_1x$`3y8{`nH zrmn> zq9d7udqozhpI%n4rU{nHM*Ahg05y~^!S@)!3esa0p9R!bY6Z_UuXj2vZU+b?V6s;e ziBVckY7i8?MC}WA`Br7>9-d!c6H8mwCxJi*KGU8oE=T~s8E`zj5ooq}^_g<3$(j{fR-)_8*F6~ImvUH!c~>x((s8~?{$=f&O- zrNHNzqy4WFHjt<toEb)i=vkrCPwkN46ynm<~ zVEKuIg4t;BdSk)f$PQ<7rgGrwud9eYgSbu&30-ay4j+ZAK86sm9qt%Le0Z7NPN)V` zjj|5rf%N3GA>Xpev&G_hf4cd8dw=v_!hyKDr4i7n-7iI%cp(Vzk1^5ncH{l5_jxxn z2eSP7$yLs1ta^_RTKDO%92SCXR<}73e|cH+&N8%R6q+nA!wVx-v73W% zLvW@FQ)^o#sfoWEW=E(02KM#RO!_Az%Hh$t|4FJSMh;fye}AP1Xv^AoaGR!{yEJz6TUvt?iRC1YsF1?`7YA)(LPC@XKFiB#HV*G_1y{tzxqM) zgAhL^HNKqL9}(FhjxnI<==y`;>o$;z$4i+P3Z8^1;@p5YIBX7B5D|UqYfqaq%6(8T z$z&PXzMbkAHa<+D8BcJ+^bL&w1d|91Q$!S-{VH}Wf+?yFR|Mg70`{Yn6Z# z3CREgqm!QL^6^X!@!~y^4O7~5m>%119u6i&Zk z_2J2W7{ZELZLhmZRG;iiXVphGXd;G4<}3sn5_i$$cFul_&B-7Iu^KEr5yYaH(5G>Z zGnC#Mz_Oq8TLk1<%d0XjGX^9PuF2cDVF@Ir1p=8#w+-H7DiAi6rBMCIN@y8q9m6kS z*=e8+pr%bA7y<)nKWR=IG-m(&f^0Sly|soAqhi}zqD28bU?KFX{?(Tm3jCaDqA;?R zJBvM78-G^u09M&h=iHd`!3>f<59D3#8!`W95oSRGHNxD0O&D6C`_eRc1|p0D;0Iij zi#wgOM1q{7VA`%eq^>^XaphkQ$AIk$RdH19%IPc)*Li4PP7d30kvquEENQ`lG4ioT zE4<8(#GQ92z*Y^BGLZ$>5mBHKS3~X3zeJt)IKm-FV+_rSMkfN@16_@|yv=N_^ufO| zY=_2B-y*UJT1zI_wkxeX@zZDgdeHmzZP9)e*~=l7I#+WlZd3tLD24E?huY;#dB`Mk}W785Kjp3g-;0h zQcEz9L=9nK0foJLZ@@gp1nssOCht>%Zmz+IWipwv>*>Hm)Qlh<4E_>^$G0MM>1osA zjh!kZ5HqR{`gHrm8rsveopL%?VNRbVJ5=Vyt}S^?*PQvJYJh=7mQX3|MOarZ{uM|o zYF)a~1|NvEHWlZcRl~L-zruC1y=>rvUfE<>HyYwrV<=EZnU;dqH%)3blzw0B#M;}P zt$B+=H$g86Hi8vCaI%LjU$PnNGKAhoPU8U02~^0aE^Ew6No7y6B_!)nN=%;tY$~uc z&Zfv*bVSDalS+SLv#sYCCa{)^QDgI~jah(dOV%F8a;ln5 z=k$x#lbCh~Dekc%ZlkqxXy%4W2ni!RgMs968HC4`HrLCAGh4e;X13Jxb$yTpN)ec& zii3T4czBR1X`pjpcv!df(0HA!Q)f#51cFL$yec6PcN=cU)0*%q?T#S0;GswmWI@H{ zeZ||`_cp_#*jxaqDJVg|gf)p`K%q4>fpqMGyPo+4v>;i>rQaykCUE?#Ib*a1AY->| zh?_*?A&$1m-LOaMadT4ba(-f^qWF#X;I`p>ERKXI?@6wyA5%K;QtwN`^-MD^BjI^_ z@Myv6$+}L!YW2-167OZJ^o!0`Ne2p{x=T^VLuT`_oqnQ6e;?_R?WH*@oaF2aCa)3A z5uSZ9e43m+M!~vP`?u$HZfUzDx5{nu6^BlT>RA2FsWT$ju80W6aGX6%wXo|5p)$I| z@=(eQg~7xU$#O=7VIDF-iUhT;NVyvI*V)M9jsBkXBz*eJgcDfs-djgBL{;JS zonKMFjCsbCKq>XeVF7`W-6tsJrngS0@>kbX2RfaKG}XV7m$D8<*Rqhn1+h7kTsV)Z zB?(m+-{y55^sq2zevu?xKqEKQZZe3c>bndJ7cuS2>#q8XJUi%}2f#`C#jFEz^`8)@ zS0rA?Fs0w$S@A2o30+~>2;oWYew;565kxyEDnz<1(ViH#4SEhOB`84WlgrZ55_%%? zU1V%T&!*OoK#M?u|Kth48FFL#48i?TVf-w9k)QFo}I092uc1Rd$0%Ckeav z?kq3R>|3MiXfSsCFk$NL{AqHS*5u5ZA&ca8#8BF!GVX?YH~i{#7hb>3`EvNaqOL^9 zb^9l5!u~JWgyU~)!uB7s3ERIv_wL^bJpCJ|{QC^T!T8UDO<5TJeFl+?-4y*tN_R6` z6a(i!+tS#)S02cEu88DnFma%4o_k_hm;)%Bgyr@pySC4PNSPMhRvQihSz`5(+sn^y z6&(?OHm4(PdsiD#iW4T*r?;aRLXwu4DNzcfrfgIif5{yklSt@U-w2U?cCV7liAGWF4=@eS^=k}@Josnvzi&DRFV02(ADEF z6d>RTTE1IuKx_nxpy4>ouHF=3l(YvDqdH2QnZnk9cg}`Flq-lQKD~GD)pQkC#r7Dk zSx2Qajs(J~XkTO7E*rzIy9jHWciCf3pkzuyo1PRX4!hK zo;7!HS5TEZ5P{R?b5RgccbR47SY-pMekqoaPB64rQfB+5c_O(XXwGm=cZ^LiuCOn% z$xusN>5O0AyFAImLT;h9Lafnw02q+-`HnS~49MA4L|FnQ<;N+_xd)hg{2z&AzG&G5 zoM4Payywfl1&gNwr5H5Vo415&1*Ll8xOl6qC89!ZY#B;u9uJ?kJxzgyy^m8Ne$nfc8+7<=I;yBICgPV|>nBnq;&;Z63jA<{NSZ;5 z+Njeb=Jd#H<7%fwIwCLVYqtk6BvEXPS(=9PlKf!jBkNdFy5&nkvTB)$uT5>aFcJvR z`4#r3_g2iOFk~~_o>^U;8)sB+)K{%0OkFjVa%e0Y8m1)c26 zJ+cYiJOOB1WAa`cjbmzPD?S!_EvJVWqJ&g7Jr-$TqmlfQZ#pJ6Ysy+qh!Yyz_+GIC zbhm}JZEU}$!I|OII@?%f9=gtaJLh{)jC`Y_7HL``I3A6QT-H%^;;2tUWRz&kA4%81 zt#G{Nt<%X7vcC4fKK=dgRBZO(!ZJLfKijdhQi6FUyJx=(fm)*O+FxnuL<|u6xW`i_ zyR4_PPRuiZI?jV_FGd`vk(1Z)t@XJ8F9fk8jVqI9?vj zJ#s89IBp(W<^={fOiUG;JESIy!k?_$QDLaB7^^qU&|OhSmujLb*Uv;npC>}Zh=Ix-SqAqWvkcQAV=f#V2pYs0_<}E5>l7@^R?;~4>S-@f~G^5X76%* z(UaEDQ5(>456>7iA_fWcE5WGgNG_@mX$2vFA0Xe$uf|~WBx#!BZnQ_t!#VG*HfH7f zFf>4E{<6uNw}(2}h1Ua+p=k9D0b`gKTLnLN3;<0(nJ;Pm&Fa`@pwT**H?w_WDx0$fe#GzB zp&a8N{rzIa?t!`thEOb$V%1TBzEGaW`E%z1lP!4pV9ch`)vM`?yd*NnAE_&;dAf{( zR4POetubQ|;;##w-_W9H^8(Qs(rP&yrejC(8gh;yG9RB8eD!&;h&a>LrUxvr1wLU0 zWSOs%-QfmsSryaw$XWsS$mI~YD|a!aM1tj&#YBlp%Io)kNMo$|LDc)tfblkw0f!@N=fa8Byg_NWHMm^C(yIZ9z40s;gDB297y}%g7OG& z+a^GY#ft|CwguYPkBZQ_zMpZ}mih*AOlShoim{q$Cu{H~q23v<+lkkkN;RPKJWH7$ zq2D{rY{CmJC4**M2w#czqZ8bf)Qfcvu9IHBOZ{eACH{Pei>*2yL9A$aC7{#`FS6p7;EUwiLB^dJfWVs;CrMMUf3Qhf4#u z+$5mvJgBEhNxyAc_ushjZl=6U6D$_ZikJOSJ7_Q(y(a7h7tP+Op4d}2(KL|M40Nux z)Xzv^v1)5qL0$Zq#&^5Oh%{-^HZ?xSd!`C4)j2MaSSffH6wmr>wz^E6X#g9s(A{cM znJq!ypyxt+PNd8e`H%^|?rO(nYe61&>l&QqG2UP#bm(u!? zB5>Avr^@~ux{SDl5B`zrZ{EboY`>jUc0T>E=tZ?&P8>^%kDjnpj^lG5O$7WD8>V5!t}b|o{szhZqI;l`8#TI{L3^C9E^WM zP0s%iH97w?)cn_Y`QI@5pFR5G_-APzSU4E}{gs5&6F2{Bj+5R_-+}}8tG+sX%!*8M zc9}wXwL--Kw;YK}FjOpSZ1a_F?hU5j5F-hHL{VEq4g}C3r$nKGuToKq5ALR4!r8M4ewD;;0yOhAIA3z&bbp*@;$u=zM^KAI$@5^H zJjTuyG1*E)8HfbxmKDU?fYghkS@W{}k{AA^ei5j=>cy8UbTP&3Fq$c`bQ3pXV5I`%lR%Y)fx)grw`Fx5Q+$;$T zDki#8l`It`3cucJo=jd?*gPR=oow|WSwC0OB{a&=U*&sk~e+#r3wb`a-SJ%{(e!PbSV7XTG*HWYa|5 zys=W|)mt)__R7`_brLp1sU=R@JXrU`?%WguQAih{Qw+wN;GEgWAw?)e-HMaZ)8joWC<=lVweW}V3Tzl3W;-1 zt0+KIDFS6wQu3an6Kb_ODU($BJ25i-6$UUXPHOQ2{lje)*+2 zKfmt7o5T~+e8(mb(Li9E*$I6Q^6Emm>`%au9oXA6&Vh!(V9*NmV=9$2lEX{If153Y zjQ-}ireG7!)`6M<0|MP~COL9q7}iYTuP_;yj6TX(XPVcHjfdHRP)rw<%2*Aog89|7 z+uS8SWMW@PW8nn3{ezo+?S}+dDGX3bXUlF02c9v)?)St+hP(F*%^aS%141^pz{RA! za(%szwAKW15lkwjps>As7L_E-TT|D8&1v;y+Mo=Kmf|+Z;*)^j`2~I>G-InKutppF zx%oV=yljt!35P&Enq5m2R0JH=>33P)daXZIiT^-rUg@rnJmwJQ%9UX(Ws{YMxZN-G z$C~m`gnhsd;A1=P)Ct{!Eg5R{;8!;AQNHc|@tooyHnz)% zfN95AE$NGZ(Tb^xzdWfwl)vXF;yjGK5y~1v#@IR2zE{Yc-rfrlJ{ps@)WGr%Cl8oL z?)YM-hY%;5+i4Ij?;u-t0Yp1Qivr(RG2xyl>ujYTb*KKu$}w6T73Z3s++VP7YX_rI zGsxEp$-6_a*_lOGv}(?Q8HA1fEWjADq8h(jXVR{2SQnByNkAT97xaz5!(s?~1f8#f z3NHa$*~0+y$4}N&evO4*1V%R$F3t(wc>)iZkb4h()Ygwr(*>nrX0o)ijA7`nY<6rs z%g@`oQfAbkIa2i#D+zJlJqU%vFL`rAwdsi_2uIlCF9St z_X7u}6Buy#p*v^tF8t+1CD=?hk!F+flOSTKWsGW5gl77Suv)|dY)H>jIR~4lnVYRr zDctFCw6nQ8631F9W_ekhj!WWPZerA(rOrUlZxbkvSWs!jX=QmM3AuC5Q8cZ9c7Vn6 zh@etoSa4Y)%)J0Lr(~yJyVe$TuqXo}VjUT}?*OjWXiM|PGN$~6N0e}FCrc9y8#)|gN0WYD{6kWYV&5Qv?osFK1LoKjvre6BAmImI zZ9Mm@Lnd-Vhrvdjl>X3(Q^V*TWyBxDsPV2{>dO-8?Lw#xkcnJ?L@?DzPyi!BEwwaT z{y5Apmq{cMpREyjYj$QL%MIqyM?m56<1T%AWL=R>2cA5iFpcu_V!ELnb}6%&g8O#Y zp?@?gL^JHeGDAsO;;D;V#(5XSKYB5=gg2n7tV$#-^e&`P_B$^v<(iu6hpzA1+EH%C zJKdd^is=pljDtvuM_03S{bXt9kVeyWWIVFbMmq=!@D8#=9Chnx2Mq``3IqWXXL@@m zbNCFGXy1#`2m8JNi(?-$*qmO;kERoqpmH*;`0A-5)T-;Ez7t^^*Of>)l+?Q`1Fy;r#$FXz!d6NLi}88@+=?bIyOY^rM~-2 zX_`g9Qn7(%NrWyIr%;zVX<_20>!mW=`1c(NTCWGvC4F3pMqc@teCobVcHEzQlYPf@ z52lOvyiz|>BI@v-^}40ZyB7<$;?-S;ch9_AUSV;fLO;vRRW)0~c@FB{Gbj(b!Y?ZLhbGGe>uBF2sDd0H zI{J%}Sy`DEfOe0n9$)yqo1Z{-f|MF*N;8bZ`!f0W?oY^8X8b%?}AfgylwT_(j@9i*ou^~;)7&3=3yowY0#z?+6B=A-DH-2Vie1ch_MM)i{ zk~2xPgAP62g4|ua63{8$(u?04yJ!egj6mcHuVosQ!t7vW9=BWqLIsOSO&gD?a8DYt zc1P#Hh+y?MFJ&dOcSI#w+sdP&?6FnHcN>46A3adF&Odv-K!WixwwH)CjT|tCitq*C zMKSSs=PDecpuB@W=0)`NMqn&Cc{sXHpP4tx8?q9rB{#11B?Y-tLqV|y8M|mKCzz&u z*k(a{#C)|)p>6-%!R{F+jchTHZe~4LPr+7N+mGq7=}LtrUd0~pRb%Avsnf87QY^h| zB2DcNqVsKazwv>#tHb>h24?=34E(q0{~Z6`^nVW4|BZn;nEwBhfjRyO1G96o{QC?n znYhV@)H7SV7hh42(1m~btbbT#NiE)!2&p1W{AH&-a|4@3lmWyOcDoCvZvgh6!GhL`wr zesP!1Fs@7kMiAtS$vrb;2%9jrvh#zDBZ6qSeSyUsu53x+PTi;N@@t9Q z0m%f1*}eHZ_JL~3EV(^U^G)XzgF*3F$6b?(@~oiZL!7XAqBCv2NvW1IbbAGl1FCcT z2(OX0O^`;bg^;>K&rCzJJw|XZ7x9$^An3dl`_Zg$b$oECN^`tf0kJfPuEipJrUDpk z2z`PW>8h!fD`c8pW)(Fo<6OZchCNlyysyden@}lr(AX(Es89TR6+6{|tO!2qfr*xn z#!zNiuv;Zg=`dn{xD&c>hEUGB0`Dus+AM9wK@Oy z_0Q!J8wR1YhPNuEjN&dQ37sek^Try&fQ?5YY_|5d)8*k(Xcmf$`Y6XZa*U9YkUojm z-{`$R;*Ee?AB=^<9GTniDTOdA!wgHo`Y)TqwdlLVYwXXIF2y)&8H*oR$%9AMiqFD> zXt1rJYnPov8FB;3lNf45sFSRWlzc)(`*}*u%bw|TR7&%tTCfrD;e@CJSl~_h8_mM| z75jln+O0}29{?|+=+mW!;_g5 z&79HW(PJSqsZ>e9|fS+`oGIIZW$3%h9PO{c+u7LVI$ovM3m@*&1X%~l}&Zn2|!!8@eMKnAp zUEzjynLKR{eDaEK1U9m{?7cMl-F?zCIOU9n;WFRDy@RX-F0Svzx;J3uYe0ps4N4L7 zEr=1L8jXCM75Pz4cu*6ej)>xlkw%Fu-FdEiFV*5@O9ERn*=YOC+B(4XqS;E#!sAaM zY)G2zG?!nDOD7qiWW=SI-3!jGrpSULTwqa*wS8(266E>$p_q5vNI8i_>G>zh zH5{;VJV+RPjsshb2f^LE+(EE^DeU1CG*ZKV|xmY_}xRaDL@2ZQ}|*S3C95x7;O_DmG1^5j-h1<^ODLW^aUH* zB|Miwj>jr`7>-Pr0wtc^z~bcK_BRr{xqyIk0F8zx91zCj(Yks`x%tv9al>e_)g3Ew z=4Ed}?2fhOFkp1~%3RRknL#gP{Eloo&=RYBA-opgr|zMgqY`SGi%qxBO>WJ>Lp>UF zWGWR2CO7pl(TwjmPIzlvR(XdnU&;t1_gNA)kCdreCzC`4mVN#?O%QK zLyzy0OP#Wg9KTAXv=H-pCgZZ%T7LP|rV`<-fM;sad>i;y6IXKMSgzu?uZR zu3cs_2>KJq#F;%kIBdm;^*jRH#h`Y7?z`0;KSDx2aCVyAq+Mv7pFPe{gF+baG zm2Vhn@Zl;x+S)HJCE#R3c-|&;^=Ls8qBJHIDpcJ+!`Iv>VjmU79`mdmxtnvROP%Dp z`aIClmyOg1-IoLbO7g6vCiL*=;R9%m*6`;Jk;R;KNUs!Xj2vdv*rY7SZfx`(@@nIW zxC)4aQ{Gg5SE3Si>Rrf+Zz*ag8C3Thm!`#f`X&PSTr|2WyXary#XyoB0qlZ?@}<;w ztssW`{NCvcw2^+!g;Fo+ja7~*(-MZAiUHy)f}r~y2DBIbRmXJ+*NtdMISifz7pQ}y zYt1X86El(INxWt#LVO)ppLC-7n@muhf%0PDJ<_a;z{cE*ESXUeoo5-wyfh}2jWTX@ zHu5vXwg7e&6)c7pfSJ~mIIhAP&h!ktk?y&0@TKmqhVU4|i1 zr|LNNJ518^M2?if<&!o4j(Wo2QT*c4W== zjZ%_6`s(E|QZU-|3+?H2WD+`7=?}M!vK;1AD;kJJU+F|BL)YRB!d>MkFh{@W#)|lh z0KCt7dMkD5b9M?W59-$3?>()$xia)Q4U^sURZtM)QQvX1aKs5yw}86^(TDsZQP_pz zc5~6eb#lRLMUI-WE!6{>SEc>43`C@SlyTbVZl9UfRvgq(ED#-N8{Twk9r403FjSJj z7HB`5nkQ%N4te>=3Y+=34m4sA5Psjq{>hM@@|Y>#CY<=f-7;aC9yc4HDJdLu>*kbu zydTudw*#;JXDX$9=9M|xHs~(;Pz^>&mJ-7bkv7snQhej{76 zSW`U#j%shelwkOK|JH_I&KRH685!@R1_w?RG#hSqi(S4R+W;~OckUCo2d+0nmu=C< z0X#0?0%J4>D*-QUxpIexu`@j{?RKPGRer6k?4Acj>hO(`dX)c^qt>lMuV1nO+qx4G7(gys`!Bl!-P8sjEHOqFr=>o2fiBV4-7(JX%@xQ2wpCr zCjWtfMp4J&Pz_POJSaQ?jUq*Bt3!RxY7;g4$$E5F2Qe-^eJ0U#k=ughR==K+r2&O9|gL$eeHy2 zI!O9Sx6T{?j*XiIxV`wHstGmT5?9_QJXb?i&l$dA4?WQu)1eIY4&c~j>wd&`{NGdZ zcEU}=@qyVe4;JA2pBvDP0mt`gigzias|Wh{xK|NFxWq~Kj`7XR*EAT*UXcP#-1OnA zKcezoaOhv-ZM&K1hh`#g$Qp>R@2SP8`^K1j-KgzUJmAw_Gd%kU>3+!xUeg1M{I*)! zeJsVO7T3ctwSs4&z?nu+YQcW}McUV#L9{$xqsu=4iANT?|3o~n|4Z?}@i+0n_8*D| zw*Mec@_&#!?5`8y;QaT+1Lr?U;lRwo#Q1L~3DdH+#c4(SzR|UxE=5I}&)WA~JPOPP zvx_UTz8C<+0godkMI};?A<>rV27#9T z(E}8vj;gy`;zCCoMUU0#S%^gLcwZK*O!_=f3DKGJEmUxdd>r1z|GJ*9rAA6q3JVca zE3U4N9|L(}gEUmSv!_Q&2?3Hqs3)YrR+#l%6Fcm>Js26211U}{PZXQ*`1ONUO_Iay z`}8IW5t*kjSLgP<2t+`M9w#=xiKWHOr{0CLw}$}JwtwEA-#UnjyKU!Xhaq?**?(WW zcbtHoBmNWpWP9XBrCL+uOZTOCjxYZ6wULH=-Wzv#yrD?G;7j!N>%4X(s#nI4AY>o> z`l-M2RF~(^<0B;*Fhy*A^=`^%oWLEj@#4wv-FeX7|?&Z`Dy z=9%eHKYkON``kz@hcQc(VHhW3+P-|FoWm{#4lgH%)DDd45VxtC#U4$pSYGI=Q%Hu0 zDE(B|N#mi{izII+FGmwgLfMdB>k}}sBs!ug_}f12Wr}Hi|BzIFAya?M;#)b9dNfqm zb%GUjc!W{2B1y{UN{HKDLJ!}EnLwL4kuGrJ+Y|!3F4BknTT1ayJq#FUPeEbKpsAwO zf;#!?dQ&kRMk??VNOUwH-)+I&c^8S6;IZOGyfAaPyLj7C5;J9QGpV?n!t3GGZRM1= zNhjo#i&(sykhGo+IMSRccqm-~2Bp+s?2;d9wsg%zpcx9*>TsY65-Of>ElV}gzP}-! zu&jgwgwABcOJCIKJBvOd_k&0dALB4NaaKe4nq8V!fv0-u(+IR0s(!oI4@ zf6QW={ZOmoicI@<3mkx|p%ENg7$EWH09e$KXL{zL*L|v&3(tKZS%u!`hU`W8t7t!r z$1x%EN7-*E0x3dGNtnm^IVLbB=OH#rnCbW>>zTcHb614dI#)V`DoAap6|wvR-F|BL z_vEiE>|Zd9ohS>aI{b7IP%+X55PhbqQ#r|qD5##pIwUISS*=I6Ug&%p;z}3?fk2l` zzk#GFz%cM058?|Q2Um-rr*ef97Ku5bLIY?xq6c8CLwt`zQgTa0B)0B~I$B}6K|UZ_ z1>IA!?eBmpvrM?)jzZuDLGNW#xB}daXx*p`)T{PW?_)U7;^z6(gQ9D0EuD)|udKiGl$UY}9~REvcblVT-j3&N1LH zE+o%Z?%yDJp2#`Cw9np=r+S|E=N;X}#MLA|@Ch4H-OYJG`%OGo)%H~JiRbZ>)Zvuv zac0s43P*)o7&(Z)a2FJ^>uStd8kkp-V`^1ovg2mhSSG@f0O1>%)O`q$F!UHuh%22Q ztehZNw#V+p5Wx71tomUBjIvYP5O7Tbb1J}ayBk`l6)ef*_u0ujD&^i_r*28)kpt{F z=DjAN>;}=1|KJp81O(5P?gzO__WEWUt~YLdj!38IO)-RE{gIa{|D<620`**<-<4p= z8lV}gBh8i{RBGzt)}E7u?f~IQum(CZS>?#zw0j((}Xd8fHPXKW{48WjXMf z5~(>D1xDFKwc6_De=CO!6s?&K&^-r;^UPTa;_v6#0&XNZzpMhiNo7{=!>x!X{e=lIEwfot)^s@` z!ID@erD=((7!KSo6U-|vAcn2(mmWSmrmsHRg+)0fJ4q&oCK(2A18svnu2s-yJ*Bq> zZ(IB$^M`$*v|0FsXfQQtUvkQ?W{AvvUeU3~{+=S%tJgjr*``RcH47gZgo1y3z=#(f z2(%8;MK}v(aP&BB)yg%b6ViZ0z}6)}P>b$Rv%fSoK(@BXcR(CoRtgw)(AD9H+ZMHT zgP$)-8#C4f2{k#4pF|P>>^r}Y)mTcT@7pH$mig>;MLKW2s1$F{&Srv`L0>Xy8z zUMKPW-rK;OL>@7cT_O|7;V(xm(LJ04Vaq3`mtxw|ssyW21x%Wz6mxXuP-0esS@=Er z$p)uKMx#-GW{)T;Mm$c9;HSrTQXh?{%5h?k{(Ll3lRJ13uF@C#HoJULXeGjMrVNdn5!+3ZIOx4wup*@rBCcnVA4J~{MQ)AB!>Eo2;*sGxK4CdN zWw;!Jal&~gDpr3c(jASc_G45-JZYCF|J5twnw9*iaY(G8*u=;$u=}pTI9ybX5swr{ zdBIQbP3_{;z&bGMTd+2;Wo4ZM-G3e6gH_o@ONp4p5@ycRP~opBOthZtX+|cWj)BAl zb4bVNlJ5e9!uS+STunlST*$@`IX7>$@3O!fkc|fI(-U`S+3rC0#qMCV1!q4X6vwx_ zu_y_)UP9_GKN+>m7Y_3NoY>XsosrpaJAIckwrjohYh3LX@Z8ZOkRj9K#Ci;CWJOec z8{N4%p)5>R5kp^cEjWd-McgxjFrl3IH?E@s>GEs;>lRQ!uIjjp2*EVTNxKkWC{+E> z#+gZbqW+W#Q;RSf1x#UC72CO)vTjOKvY_zQSB=@zfghqX{9aR7T3Q#gFXiK)F^r>SWA*FployckaUh{=Hy|-F>8i@(r(R)aCwz5vANtJ`f)s{DP92^3SESM1+|W;c_wdKLh$IKqwc#xT z#jYyHRf-U5?+Fs)`ZS<00WJ4Jr~usukR(Ybm!`I|7iad zFqdG-X%Z@^{^57S`c_6-D8@f^QKA$9-L|9BbTl2dqwB@XZ-s?W-lU6v75m)p@X!V# zYdk$ULZfZoFyNbhd-npC&XuVKgYt7)8ytvpsigZ@5X&2&p;N}M%!syBD5*Ap)CU@%(*q0 zk^cPc%6H;D;mp1GkFD4)51OP-Af&Frj5^gtkNJaCP)}DiulWGKs;BKUq1+SpTpg(} z%H;QR!+-G|Jyh1_o?O7Bbm*>3b@>z$-aCVG{B;@sOdp>a@-(o*SBZPhnYw9p!_^Ho z>_0$r8TAH#789`Z7SgszyBKG_Jr+08_+xH6YFs~)VvEpK+zv*lK%rvVzqe!eqBUpv zu+{zMjG-=O>#cRb!ElwdRI<;21B9`xIu5HVX@C;P}$=W%^|DZ6y{{(RBv^6lZ^x-+vdvr%%rkIb8pLW1h| zjbB%eI(@dG^&5L-3(@}H^(yDT%mBjqw+tYh4F8#4<^2Cr1`tlxe-^>T{BJMR+zqQjHx7OcODFFY$%a(`t8YO!9v)9^BZyc`h2hw5D3sIhx72% z=JxYPqHWzJUihkzJ_murw)fxP5bFNKK9nqW=1IA;7GLqXJOE)iT%SDysq2J z$zgA8`p3&Py+yY;(n;=B`Ex74Z>;beiRRfzlA$VS4yH|rRl*hP zC$}vsiRZ{I!K>^WzUr$tKSo77i!wPjA24k#5CpA%I}*H4;aGGMI-(#u?g=u2C*V2F z=cKtzyPu_RrFxGmMTUMi7ci$iu2QkfpKJdb>+b9z%}m7lHqtrmS)|j?%*F7yn?ho?@Pf&vcrm#g}XW$auMGvNrtXm5Nbo-Mtln~$-({w)D~S+0Ht81Hb-$u@ba9gZ#qzN*NlU>2u{-kJ$ z*`PwW!URnbNX?-a9j5XJIaY1EEdcmuJRl%PZ4cSL@2@j%o>`32hF)>~9T6BBvf36> zq(dM6wb|Pv`M?KZ4qyVw>d#Tv*!s2pOBC^>75uw9jDK%RL-ddBH>I&!D+nqwoYwu= z(ye&Kv08iK@%%@UZ)HOK#7vBf1A@ooQaDU+sZrFge)^#=UrGtYM~$9=&h0s7#mQiG zHy1W$WRK0smG8C;T49v=)Vq=X@e~XaPrUXJU-5|jpdVKUOc|phbu9qSpzw=&gI!RK z0>Ao%l-sde&vp(gJVN>3o)EltMYg&vUhcf9I}I8Z4mXxVxX)71ebegvpSZv<;L4r> z*poZ@5QMG4 z+PkYM<}$cD;bhBf=&_8@9fCJYol|WpS))=}rw#zIqNC~vp0=Hhm!xPN`m4_=sC#9f zKqor_OC|u81Y)B!t9A_a*$hiLN2*7-U0=HZnK&lvri{j95E}*Xg2ww;6T#dbIiPXB z6g5UU8w-}0gGhvDz^z1`OR_PR@!xR0FbWxGexAZP&92b{e`g8%Zwlfp*FXuDX#qAI ziv!?%w4WN|ZV}jQ2;@;VqB{0(jchTtq)I>uIe7w(T%lJ(=bfqupoEGL)j@hP=D1n9gH6jW`%j7Q z14Vw#(THm)P%+4*?%<~fECmiPrtQ_HTgwy6@!X5m%uE%v42a}fv)W;T5eI0RVQ;m! zG{9m(dnltd&@ja^NzRb-^U&$i?9#jH0N_I-!Y*&d=O*a~uN90LKFK=7;9;X2iSs6) zbCprF3yYStB8~Z7{89xUp2OjyCx2gUEzeQfS1&NkJ|SQq|L{ymJ1zD=MEAf>Df&^n zg3QBJw6|z#0^6L!qA-WGAwX=);D-1EBn6F-roGv|)(-VGFZT=oBYG-BwtlS#S zDt9)68P_~2Dit~;mqEY+6|;NC|JqN6F&bm~ikXB~m|dzL!5m-fc(aD*iQDrrhh3>K zB|b8sA@nTBNQugFiSZil*ePucB{p#ELAlSWq;^=pOxx`7qn5}YEPp}Gyad8D zjYPy{w zXb^xm(I_7`ol7Al+8JVj{Z>~r@&|{O3!=#>2(^4*?$l{YND7sMCmg~=3^!16tl1CL ze-tG7?(XA!@z=1W)>#AqG*u2aj5I0~)z)M34x^rWiY;&oA!mQXR8SMtXZiR8X2G7F z66~B6G{IQtfK5O3A1wnUGrB$x?=ltb-M!D=Tk;GbD^eSyeCVoBrQxQjCXTrWFxmYZUi(};e z0n4>zF-Zzk^c2tfAm_AsE zK4*;f8BaCNndV#VQ!L(kBpW9u}1OPnFG)3w!#;k9l(=t;-o2#|%l? zOfi87UvkUManhCCd>1vx`VXDIt~=>7w*TZ;noW$nJ{{vlUKn&NyrQyun7Oq7c|6fY zpC8^xvr8=7fqz{_V|uN0#`!hhc_qEc3^9Q>Fvz4Ax-t23}cOGKjm| zet)EWk=5pgQMUuqCenxELjX&2JN@=BeUY1iP1mFk1?!j3e$CH^**8}&dA9XNVZ z(vsVe-=3p~{+kl+A*K@8YeY(qpflkxQRlHlB&UDSCvl&L6k3VgL z$)yPli{aCrVntFXSd5@tTJYq$RlE3CA4?_*m7T7x4Y>e17V-9%w`Y~>z&3hVMqF0< z%&kfCXg><-lD8&rnU*@i6T|1))x?dMzw%dYT1ly*=A5D|fp|bcMWik3hc{Z+*ZV7; zCE5CVhJ99|M6@dzl6M&ig2Tpg%G6xy0@jUlO^4M@h^KyoD}wAVM)aA0VW;RoCpj-@ z{Fdtv((THSKQSHwGXx1EaTgS8t1}`@@LaFKRM#-UI`%<1d#|AxE^@4{3&61bHxr!^ z2F;hw{F9z|V%n(1QT>q6mjj5WP$dO>s}$i>nC!1DG;u~qxouRk&?Oib)8K|Dl&eGf zSc^bNXtKbgYjc>Fpk3&%2~9_9hS3;uP2ShkVEb`C-3fD>bd>s!bHel%`U4yiU449J zjw@g(C(KOD4;7F%70HkuavXY35*J#VBv6SIJgkqJF_x01vp0}TBclW|b{X(Iqc&7J z!7(okN*@Ji`fLCXVk7P(i`)jRv1@w$!tQ+$H%45!W>?(vYBM8mH<~#qSvBsw)!&Nf z{tD@ctxf5$J377SGs~sBp80JEes>Yu^&=!&a{ZmVsY1=l^Af$J_ma4%kyW`vFvh_ULu;&_LuE{D?ge$y3XiAz?G zrj`kJC`Y}0zJpUQjpG?gNNGJWoIigoL2{;a7f(%=4~r%u=hdHq&^S};+K})8I>O(+pW4lanYI5-T0%q_n`9C)h1+gJU#&EH%S@R zbCD?4XC@(VL&cNxt>gwo_+Es3?K7JRuBlJ;N0D3&sYw(8-qJ;~22E2WCtNu$J&ke0 zW1o*!V~B;XyA#E{G6{A}QYvGd{JB~(T+i`KCa5BWL5W_7T6`-FN7}z|wCDL=Bs^jdCNDZNP*$7z%Ubth41K~G#jZ|{LZzn*$}`|>uKy!!X0=jO zzokXL2?q65A=0oNuP?%56ywI*c?XX&M}+KH|YZ{PJ#}0k3pumHivsL-K)qCG2Y>RdPausu}&jMM{xNbM|t$r?R`C9q9cA$ z3L^unZ*DHsMt-{j%cWmP{^_KKWxxG#64njqO#5zB_O{??_H_G3wI@x@h$8ER{m3@W962^T z!o&MPU?2KPpsDSE8S{%QmQ=c!vKyDHAOf$8sUo&(#Qr16E0Qkp zC7K=YzEh%m`qKRu3-H*nH2xT9<#jz>ha~8WIi8K#@6vGFDJszhiKE5{z%9YdgW@xc z8jm)3oN?_0?0$S}Sv-=HP`+d$GJ@TxWb2j*BOZve^>W@U0I`Dj=Tw{AU(=(@EoFdV zamp0FDZaSPz|AB1dz{eD@ABg!DW@)o`ei7Q! z`+HZS9E6f1(R0X(Ou9+2yl;lmB!YMu0`#ws7WF?rqZ_k4;C7vbQHG&O2@GBBPXG)p zIV3*Dk0UpAp!6D@87X#=I&#-x)H*!NvL6!6VGR+K1`()w7+`jp`|te$F!qu-;|06MWBcU$cuXks*$9hh;6t?b`SkqSiU=N8(yg=4 z)IDIlh#He}^YjE>u^V*$E{HL^!z*r5A-8mQ%RZZ-SsAB=b!;7@9X@v=H#Xe5N_|2g z2r?1WzjC6lm2cnmNR>@eD4no`FDTf)FL0Wv&wEg)^CftKx8 zEJbgbXC=0>13?=W97aw7G!=Z1V$x_jdnE#qBJ(>M41edLv4odmWM-=6d}I{!&awNQ z7|Talos*fpSbt8}ZYB#MOZ^G_l#!N}0PlCemHm@)tmDhpVM-1?$9`v&Zcn(_ak8dc zg4YA(yB{S-AcXgka+o-Ad!F3rS-F`M#7elQKc(HA`=b1;QHNCDNkB~^y}lc#jashkUY=MrCLhSKNnfmsv03uK*v0KB;~uDA0g0=($okn?7?V=- z;Qc5v*~}-Cc7h1;PLchmGq5Ej4p@KEMZd%RZC6j;g&A~b_2QkfgR$M80TJw*#B)RR?}2GY(w(N)s1gezCaK`*GxHuWr6{wVMSq(T%M81 zMv4*Z;%J#fUz_@TzfL)d3$mL5t}j|CUjFjlrj@zjmExOp8zQD6CKYv!C8i^lPQoka z$OjU3eVli7FvPbuoSbSo#CJtsob^arP=XAGUNa-&SPu9o-<5?*oWMT}*CQfhcV|P( zppj- zYAKEY*mg$pmyk&|UR}m7T}(|y&p>5irnX>ewPM-VP)MgTv&$ISPx)GGs;_31Zpmty zHuxj=^panZQxYKCNH)mVaiub>i4BpW(0^=qhge2Kx^GT3=uRY4F2R`v9x2S7c9COW zha#Jh=0#UQ#%{OHB0er|_-Bsgc#FM;pI-CrrMpp$(N{E530l*SG+4=FGKqthzHy|+ zD!h^F@Ck1?N;G_@n99O(Y+LR3kO_rmiaQuodo#Ps0gGX$gga{m*iAtb(d({BEAj}r zRG@Pri6FMH-LkO`T}Q=JVo$QWT;+5&oFz^yZkU|Uru^<(_r)Wdm6H~`dwrq*0~W*x z$3+f>Oib=*JrNoGl#sr?wv?1BKtPrVOY|Eai0X{%6KIw>Mc!qHFGU}KwodXj3jq_& zR((J4f#3b_yEBls0Ws4?V?)b2sOr;LTmP}*f_RybLv}M&2I3u|-Su_VUI8W`d!lBc zh5~LhVsTXX$M44%6wn1Tmi3IGb@-*&c)o{*hd1>Ya>TorstRfQAVC?r2W5<_M<6*? z_`}j^oV*Ak>7MVaKPFS-igDTgwpo4eom3fHz!YITPr6lAnW-g=vT)OIir(se0Xz;ewu*42Hf2HC zRT|6Qrf>t;-tdin#W6ZW^CZ35+c_VMAihAY+NsM_zYF&Cc7ayBnQ;OI7OH7BYtEUs zked?hrDk}}t@p{d=pSeP6t7aOEs9$!!g11q5-W^_4P#6O!GL+0c`R0St1-;%)joRp3dIO3)-2(1o-9kME1AeVHVlfL5Mr0ytifDyW^c0TCMl*}9ynQB5PU3M{(&QJ zDj`Dk%mVnCBUvvTLSOt7Rs~q3>h=rrzTevrNHFk3n!q^wd$?`F0j3)A{IhG%`c@66 z4DV|IRilf(qwA&Um2hIx;k1;{On+!tK4{3ZpUZN^S(O$`k=`FF&a5xfxf_za%&Kbs zX9j_3I~3E^Fg4!=EtsDRnJ|FCts4!B`GZY+1FqI{ zwV|S@VSj6b4GN?}Cg=tlLWL5>!?}YP>TiMhI*(AmToXc9-%cKvYO^sQj7=LBBqhf4sNF=nWzAU^_NVWcGCx1-_ zbGS!rVR=ET^I|{0k_Y8wrm5Obc1_dZLC7ZTU$=z7$?IHWS|rUq7@qicC1ZaK_*XTR zhU0jiN?zJ|_%gk_10?v1xYNRIxGH;Kva!J{O+ET5<=h_JHY6LI}H~sF`;uf7|%C?o-WecphJAlM2Z8? z?xb~C1WShyRbdpXpyl`u?UT?)qiX}Zg!B_ho=Q%Gr-SrMMp0furu;`o#oJs9VOo># zU@Hvvv}Pnpc5V6SweDbuO?rVwJ_V(PQG2;5 zR7bQv4+^TQ6`nZPk+I&uTwO(^Sxq*-)1ov^4L?5#{@Hv@|Fn83j#0O&sMK@rZjh>#Tg$*Y%FJ}n*;9bxpGXXLl;kRK!=K2KsNo_>-Kx2=K=eL}Q2Ez4n*j zP&jxOff#IH0Z9jufU)nPvT;L)hMTJ+Qrl{DTZHiJpH!kfYl%eF&tPt-bWAnei)eN- zz`k>%Q*l^AtpeENI4}bj78FOyV}%>8U?CMQ6m2l0?F>;%S6kG6ttf&HE;vBaYprLyD|+jCxU^#FTBk@SDfrU`;C7*>!`T7Doe$6@tLT% zG$vsS+1`~$@?A2taoswL!c)y`T z1D^epMfn&R{$&c4zfk9Ic*gl3;u+`v$#Y5;hQI1&`X`G+a}uyH{GXuOKU)TxiG%6i zMYU~B_1H}|1fN}9!Xt4}gOJyFBKYYS{skKk>vh+}eX_(WGF~VfiRrJ{2#c%;pg>>RO)xHzhI9dh5|Rp{x3t7$e} z8cah<_XahGnZ-$6bfx0do5{@KgbNn>9lQwb7Tx36tyNuJZ({f7A+}%ZE5nzU=;*sT zx}V+xNH9NQf=!~L<^aQC%sEvq=)T<}<5*a_Bp8f^iLu9pok0q9%Io+xiMw<@=S~I) z@>KDA{tHY?klZr}=*sA`e;5fw3CIY*KzvHdBKwtnJbWpA!D*bTyhSK2Jzdi*5AF~lyIm4|J3_F;2JTCzrK94ummHAm2>PO$ubF{ z6KxG|kJG@2fDvKlP7U~RGPoIw(KtGLv>Q2bryk~)`{4zh2`Z)%2Q}dxjhR8~^4<;c z%$-9}#uZfHUh1c;|NbRDGUASKi#`ZLNz>^Q@A;?r(uL^DXTC+ZOR&E>6k}_?Bej;B z%0D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�S0q56X-kMuK9NN(E=hu1$=GJVEer;%ZJv?Xc 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

ZW^e-98QoOozP&yhiKUos&l0WM> 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�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�s;bI9&?(xT8Iu9Hzxgl^QH(J0<%TBa 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

yx%k6{t73E&KfY@{1tG1W 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

1!8m}I6#k}*w`Fn^B#E4>}hK7Fbizrd8H`( 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

fxSz3%VQ1=ezG%2A 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 P2u1iiwxiA500=_>ZW{F5 literal 0 HcmV?d00001 From c0a8bc2103cc81fdd68de9b1ae2c776ce7c9b0c2 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 5 Mar 2023 12:15:35 +0800 Subject: [PATCH 26/39] libz 1.2.13 --- mcwin32/libz/README.txt | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/mcwin32/libz/README.txt b/mcwin32/libz/README.txt index 23a5353d..dcca5632 100644 --- a/mcwin32/libz/README.txt +++ b/mcwin32/libz/README.txt @@ -1,16 +1,28 @@ - Source: http://www.zlib.net/ +Source: http://www.zlib.net/ + +Copyright notice: - o zlib 1.2.8 + (C) 1995-2022 Jean-loup Gailly and Mark Adler - patch + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. - _ #if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) - + #if (defined(MSDOS) && !defined(WIN32)) || (defined(WINDOWS) && !defined(WIN32)) + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: - o zlib 1.2.11 + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + - patch - #if defined(WIN32) && !defined(__CYGWIN__) - + # undef OS_CODE From 469fcbdc3ad7b8ca806472698f334cca65b204c8 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 10 Sep 2023 18:38:05 +0800 Subject: [PATCH 27/39] expat legacy --- mcwin32/autoupdater/expat_legacy/COPYING | 22 + mcwin32/autoupdater/expat_legacy/README | 137 + .../autoupdater/expat_legacy/amigaconfig.h | 32 + mcwin32/autoupdater/expat_legacy/ascii.h | 92 + mcwin32/autoupdater/expat_legacy/asciitab.h | 36 + mcwin32/autoupdater/expat_legacy/expat.h | 1014 +++ .../autoupdater/expat_legacy/expat_external.h | 115 + mcwin32/autoupdater/expat_legacy/iasciitab.h | 37 + mcwin32/autoupdater/expat_legacy/internal.h | 73 + mcwin32/autoupdater/expat_legacy/latin1tab.h | 36 + mcwin32/autoupdater/expat_legacy/macconfig.h | 53 + mcwin32/autoupdater/expat_legacy/nametab.h | 150 + mcwin32/autoupdater/expat_legacy/utf8tab.h | 37 + mcwin32/autoupdater/expat_legacy/winconfig.h | 30 + mcwin32/autoupdater/expat_legacy/xmlparse.c | 6290 +++++++++++++++++ mcwin32/autoupdater/expat_legacy/xmlrole.c | 1336 ++++ mcwin32/autoupdater/expat_legacy/xmlrole.h | 114 + mcwin32/autoupdater/expat_legacy/xmltok.c | 1651 +++++ mcwin32/autoupdater/expat_legacy/xmltok.h | 316 + .../autoupdater/expat_legacy/xmltok_impl.c | 1787 +++++ .../autoupdater/expat_legacy/xmltok_impl.h | 46 + mcwin32/autoupdater/expat_legacy/xmltok_ns.c | 115 + 22 files changed, 13519 insertions(+) create mode 100644 mcwin32/autoupdater/expat_legacy/COPYING create mode 100644 mcwin32/autoupdater/expat_legacy/README create mode 100644 mcwin32/autoupdater/expat_legacy/amigaconfig.h create mode 100644 mcwin32/autoupdater/expat_legacy/ascii.h create mode 100644 mcwin32/autoupdater/expat_legacy/asciitab.h create mode 100644 mcwin32/autoupdater/expat_legacy/expat.h create mode 100644 mcwin32/autoupdater/expat_legacy/expat_external.h create mode 100644 mcwin32/autoupdater/expat_legacy/iasciitab.h create mode 100644 mcwin32/autoupdater/expat_legacy/internal.h create mode 100644 mcwin32/autoupdater/expat_legacy/latin1tab.h create mode 100644 mcwin32/autoupdater/expat_legacy/macconfig.h create mode 100644 mcwin32/autoupdater/expat_legacy/nametab.h create mode 100644 mcwin32/autoupdater/expat_legacy/utf8tab.h create mode 100644 mcwin32/autoupdater/expat_legacy/winconfig.h create mode 100644 mcwin32/autoupdater/expat_legacy/xmlparse.c create mode 100644 mcwin32/autoupdater/expat_legacy/xmlrole.c create mode 100644 mcwin32/autoupdater/expat_legacy/xmlrole.h create mode 100644 mcwin32/autoupdater/expat_legacy/xmltok.c create mode 100644 mcwin32/autoupdater/expat_legacy/xmltok.h create mode 100644 mcwin32/autoupdater/expat_legacy/xmltok_impl.c create mode 100644 mcwin32/autoupdater/expat_legacy/xmltok_impl.h create mode 100644 mcwin32/autoupdater/expat_legacy/xmltok_ns.c diff --git a/mcwin32/autoupdater/expat_legacy/COPYING b/mcwin32/autoupdater/expat_legacy/COPYING new file mode 100644 index 00000000..dcb45064 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/COPYING @@ -0,0 +1,22 @@ +Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + and Clark Cooper +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mcwin32/autoupdater/expat_legacy/README b/mcwin32/autoupdater/expat_legacy/README new file mode 100644 index 00000000..fda282a8 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/README @@ -0,0 +1,137 @@ + + Expat, Release 2.0.1 + +This is Expat, a C library for parsing XML, written by James Clark. +Expat is a stream-oriented XML parser. This means that you register +handlers with the parser before starting the parse. These handlers +are called when the parser discovers the associated structures in the +document being parsed. A start tag is an example of the kind of +structures for which you may register handlers. + +Windows users should use the expat_win32bin package, which includes +both precompiled libraries and executables, and source code for +developers. + +Expat is free software. You may copy, distribute, and modify it under +the terms of the License contained in the file COPYING distributed +with this package. This license is the same as the MIT/X Consortium +license. + +Versions of Expat that have an odd minor version (the middle number in +the release above), are development releases and should be considered +as beta software. Releases with even minor version numbers are +intended to be production grade software. + +If you are building Expat from a check-out from the CVS repository, +you need to run a script that generates the configure script using the +GNU autoconf and libtool tools. To do this, you need to have +autoconf 2.52 or newer and libtool 1.4 or newer (1.5 or newer preferred). +Run the script like this: + + ./buildconf.sh + +Once this has been done, follow the same instructions as for building +from a source distribution. + +To build Expat from a source distribution, you first run the +configuration shell script in the top level distribution directory: + + ./configure + +There are many options which you may provide to configure (which you +can discover by running configure with the --help option). But the +one of most interest is the one that sets the installation directory. +By default, the configure script will set things up to install +libexpat into /usr/local/lib, expat.h into /usr/local/include, and +xmlwf into /usr/local/bin. If, for example, you'd prefer to install +into /home/me/mystuff/lib, /home/me/mystuff/include, and +/home/me/mystuff/bin, you can tell configure about that with: + + ./configure --prefix=/home/me/mystuff + +Another interesting option is to enable 64-bit integer support for +line and column numbers and the over-all byte index: + + ./configure CPPFLAGS=-DXML_LARGE_SIZE + +However, such a modification would be a breaking change to the ABI +and is therefore not recommended for general use - e.g. as part of +a Linux distribution - but rather for builds with special requirements. + +After running the configure script, the "make" command will build +things and "make install" will install things into their proper +location. Have a look at the "Makefile" to learn about additional +"make" options. Note that you need to have write permission into +the directories into which things will be installed. + +If you are interested in building Expat to provide document +information in UTF-16 rather than the default UTF-8, follow these +instructions (after having run "make distclean"): + + 1. For UTF-16 output as unsigned short (and version/error + strings as char), run: + + ./configure CPPFLAGS=-DXML_UNICODE + + For UTF-16 output as wchar_t (incl. version/error strings), + run: + + ./configure CFLAGS="-g -O2 -fshort-wchar" \ + CPPFLAGS=-DXML_UNICODE_WCHAR_T + + 2. Edit the MakeFile, changing: + + LIBRARY = libexpat.la + + to: + + LIBRARY = libexpatw.la + + (Note the additional "w" in the library name.) + + 3. Run "make buildlib" (which builds the library only). + Or, to save step 2, run "make buildlib LIBRARY=libexpatw.la". + + 4. Run "make installlib" (which installs the library only). + Or, if step 2 was omitted, run "make installlib LIBRARY=libexpatw.la". + +Using DESTDIR or INSTALL_ROOT is enabled, with INSTALL_ROOT being the default +value for DESTDIR, and the rest of the make file using only DESTDIR. +It works as follows: + $ make install DESTDIR=/path/to/image +overrides the in-makefile set DESTDIR, while both + $ INSTALL_ROOT=/path/to/image make install + $ make install INSTALL_ROOT=/path/to/image +use DESTDIR=$(INSTALL_ROOT), even if DESTDIR eventually is defined in the +environment, because variable-setting priority is +1) commandline +2) in-makefile +3) environment + +Note for Solaris users: The "ar" command is usually located in +"/usr/ccs/bin", which is not in the default PATH. You will need to +add this to your path for the "make" command, and probably also switch +to GNU make (the "make" found in /usr/ccs/bin does not seem to work +properly -- appearantly it does not understand .PHONY directives). If +you're using ksh or bash, use this command to build: + + PATH=/usr/ccs/bin:$PATH make + +When using Expat with a project using autoconf for configuration, you +can use the probing macro in conftools/expat.m4 to determine how to +include Expat. See the comments at the top of that file for more +information. + +A reference manual is available in the file doc/reference.html in this +distribution. + +The homepage for this project is http://www.libexpat.org/. There +are links there to connect you to the bug reports page. If you need +to report a bug when you don't have access to a browser, you may also +send a bug report by email to expat-bugs@mail.libexpat.org. + +Discussion related to the direction of future expat development takes +place on expat-discuss@mail.libexpat.org. Archives of this list and +other Expat-related lists may be found at: + + http://mail.libexpat.org/mailman/listinfo/ diff --git a/mcwin32/autoupdater/expat_legacy/amigaconfig.h b/mcwin32/autoupdater/expat_legacy/amigaconfig.h new file mode 100644 index 00000000..86c61150 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/amigaconfig.h @@ -0,0 +1,32 @@ +#ifndef AMIGACONFIG_H +#define AMIGACONFIG_H + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#define BYTEORDER 4321 + +/* Define to 1 if you have the `bcopy' function. */ +#define HAVE_BCOPY 1 + +/* Define to 1 if you have the header file. */ +#undef HAVE_CHECK_H + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* whether byteorder is bigendian */ +#define WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#define XML_CONTEXT_BYTES 1024 + +/* Define to make parameter entity parsing functionality available. */ +#define XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#define XML_NS + +#endif /* AMIGACONFIG_H */ diff --git a/mcwin32/autoupdater/expat_legacy/ascii.h b/mcwin32/autoupdater/expat_legacy/ascii.h new file mode 100644 index 00000000..d10530b0 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/ascii.h @@ -0,0 +1,92 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#define ASCII_A 0x41 +#define ASCII_B 0x42 +#define ASCII_C 0x43 +#define ASCII_D 0x44 +#define ASCII_E 0x45 +#define ASCII_F 0x46 +#define ASCII_G 0x47 +#define ASCII_H 0x48 +#define ASCII_I 0x49 +#define ASCII_J 0x4A +#define ASCII_K 0x4B +#define ASCII_L 0x4C +#define ASCII_M 0x4D +#define ASCII_N 0x4E +#define ASCII_O 0x4F +#define ASCII_P 0x50 +#define ASCII_Q 0x51 +#define ASCII_R 0x52 +#define ASCII_S 0x53 +#define ASCII_T 0x54 +#define ASCII_U 0x55 +#define ASCII_V 0x56 +#define ASCII_W 0x57 +#define ASCII_X 0x58 +#define ASCII_Y 0x59 +#define ASCII_Z 0x5A + +#define ASCII_a 0x61 +#define ASCII_b 0x62 +#define ASCII_c 0x63 +#define ASCII_d 0x64 +#define ASCII_e 0x65 +#define ASCII_f 0x66 +#define ASCII_g 0x67 +#define ASCII_h 0x68 +#define ASCII_i 0x69 +#define ASCII_j 0x6A +#define ASCII_k 0x6B +#define ASCII_l 0x6C +#define ASCII_m 0x6D +#define ASCII_n 0x6E +#define ASCII_o 0x6F +#define ASCII_p 0x70 +#define ASCII_q 0x71 +#define ASCII_r 0x72 +#define ASCII_s 0x73 +#define ASCII_t 0x74 +#define ASCII_u 0x75 +#define ASCII_v 0x76 +#define ASCII_w 0x77 +#define ASCII_x 0x78 +#define ASCII_y 0x79 +#define ASCII_z 0x7A + +#define ASCII_0 0x30 +#define ASCII_1 0x31 +#define ASCII_2 0x32 +#define ASCII_3 0x33 +#define ASCII_4 0x34 +#define ASCII_5 0x35 +#define ASCII_6 0x36 +#define ASCII_7 0x37 +#define ASCII_8 0x38 +#define ASCII_9 0x39 + +#define ASCII_TAB 0x09 +#define ASCII_SPACE 0x20 +#define ASCII_EXCL 0x21 +#define ASCII_QUOT 0x22 +#define ASCII_AMP 0x26 +#define ASCII_APOS 0x27 +#define ASCII_MINUS 0x2D +#define ASCII_PERIOD 0x2E +#define ASCII_COLON 0x3A +#define ASCII_SEMI 0x3B +#define ASCII_LT 0x3C +#define ASCII_EQUALS 0x3D +#define ASCII_GT 0x3E +#define ASCII_LSQB 0x5B +#define ASCII_RSQB 0x5D +#define ASCII_UNDERSCORE 0x5F +#define ASCII_LPAREN 0x28 +#define ASCII_RPAREN 0x29 +#define ASCII_FF 0x0C +#define ASCII_SLASH 0x2F +#define ASCII_HASH 0x23 +#define ASCII_PIPE 0x7C +#define ASCII_COMMA 0x2C diff --git a/mcwin32/autoupdater/expat_legacy/asciitab.h b/mcwin32/autoupdater/expat_legacy/asciitab.h new file mode 100644 index 00000000..79a15c28 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/asciitab.h @@ -0,0 +1,36 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, +/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, +/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, +/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, +/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, +/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, +/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, +/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, +/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, +/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, +/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/mcwin32/autoupdater/expat_legacy/expat.h b/mcwin32/autoupdater/expat_legacy/expat.h new file mode 100644 index 00000000..20a8278f --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/expat.h @@ -0,0 +1,1014 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef Expat_INCLUDED +#define Expat_INCLUDED 1 + +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler +#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler +#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler +#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg +#endif + +#include +#include "expat_external.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct XML_ParserStruct; +typedef struct XML_ParserStruct *XML_Parser; + +/* Should this be defined using stdbool.h when C99 is available? */ +typedef unsigned char XML_Bool; +#define XML_TRUE ((XML_Bool) 1) +#define XML_FALSE ((XML_Bool) 0) + +/* The XML_Status enum gives the possible return values for several + API functions. The preprocessor #defines are included so this + stanza can be added to code that still needs to support older + versions of Expat 1.95.x: + + #ifndef XML_STATUS_OK + #define XML_STATUS_OK 1 + #define XML_STATUS_ERROR 0 + #endif + + Otherwise, the #define hackery is quite ugly and would have been + dropped. +*/ +enum XML_Status { + XML_STATUS_ERROR = 0, +#define XML_STATUS_ERROR XML_STATUS_ERROR + XML_STATUS_OK = 1, +#define XML_STATUS_OK XML_STATUS_OK + XML_STATUS_SUSPENDED = 2 +#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED +}; + +enum XML_Error { + XML_ERROR_NONE, + XML_ERROR_NO_MEMORY, + XML_ERROR_SYNTAX, + XML_ERROR_NO_ELEMENTS, + XML_ERROR_INVALID_TOKEN, + XML_ERROR_UNCLOSED_TOKEN, + XML_ERROR_PARTIAL_CHAR, + XML_ERROR_TAG_MISMATCH, + XML_ERROR_DUPLICATE_ATTRIBUTE, + XML_ERROR_JUNK_AFTER_DOC_ELEMENT, + XML_ERROR_PARAM_ENTITY_REF, + XML_ERROR_UNDEFINED_ENTITY, + XML_ERROR_RECURSIVE_ENTITY_REF, + XML_ERROR_ASYNC_ENTITY, + XML_ERROR_BAD_CHAR_REF, + XML_ERROR_BINARY_ENTITY_REF, + XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, + XML_ERROR_MISPLACED_XML_PI, + XML_ERROR_UNKNOWN_ENCODING, + XML_ERROR_INCORRECT_ENCODING, + XML_ERROR_UNCLOSED_CDATA_SECTION, + XML_ERROR_EXTERNAL_ENTITY_HANDLING, + XML_ERROR_NOT_STANDALONE, + XML_ERROR_UNEXPECTED_STATE, + XML_ERROR_ENTITY_DECLARED_IN_PE, + XML_ERROR_FEATURE_REQUIRES_XML_DTD, + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, + /* Added in 1.95.7. */ + XML_ERROR_UNBOUND_PREFIX, + /* Added in 1.95.8. */ + XML_ERROR_UNDECLARING_PREFIX, + XML_ERROR_INCOMPLETE_PE, + XML_ERROR_XML_DECL, + XML_ERROR_TEXT_DECL, + XML_ERROR_PUBLICID, + XML_ERROR_SUSPENDED, + XML_ERROR_NOT_SUSPENDED, + XML_ERROR_ABORTED, + XML_ERROR_FINISHED, + XML_ERROR_SUSPEND_PE, + /* Added in 2.0. */ + XML_ERROR_RESERVED_PREFIX_XML, + XML_ERROR_RESERVED_PREFIX_XMLNS, + XML_ERROR_RESERVED_NAMESPACE_URI +}; + +enum XML_Content_Type { + XML_CTYPE_EMPTY = 1, + XML_CTYPE_ANY, + XML_CTYPE_MIXED, + XML_CTYPE_NAME, + XML_CTYPE_CHOICE, + XML_CTYPE_SEQ +}; + +enum XML_Content_Quant { + XML_CQUANT_NONE, + XML_CQUANT_OPT, + XML_CQUANT_REP, + XML_CQUANT_PLUS +}; + +/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be + XML_CQUANT_NONE, and the other fields will be zero or NULL. + If type == XML_CTYPE_MIXED, then quant will be NONE or REP and + numchildren will contain number of elements that may be mixed in + and children point to an array of XML_Content cells that will be + all of XML_CTYPE_NAME type with no quantification. + + If type == XML_CTYPE_NAME, then the name points to the name, and + the numchildren field will be zero and children will be NULL. The + quant fields indicates any quantifiers placed on the name. + + CHOICE and SEQ will have name NULL, the number of children in + numchildren and children will point, recursively, to an array + of XML_Content cells. + + The EMPTY, ANY, and MIXED types will only occur at top level. +*/ + +typedef struct XML_cp XML_Content; + +struct XML_cp { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char * name; + unsigned int numchildren; + XML_Content * children; +}; + + +/* This is called for an element declaration. See above for + description of the model argument. It's the caller's responsibility + to free model when finished with it. +*/ +typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, + const XML_Char *name, + XML_Content *model); + +XMLPARSEAPI(void) +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl); + +/* The Attlist declaration handler is called for *each* attribute. So + a single Attlist declaration with multiple attributes declared will + generate multiple calls to this handler. The "default" parameter + may be NULL in the case of the "#IMPLIED" or "#REQUIRED" + keyword. The "isrequired" parameter will be true and the default + value will be NULL in the case of "#REQUIRED". If "isrequired" is + true and default is non-NULL, then this is a "#FIXED" default. +*/ +typedef void (XMLCALL *XML_AttlistDeclHandler) ( + void *userData, + const XML_Char *elname, + const XML_Char *attname, + const XML_Char *att_type, + const XML_Char *dflt, + int isrequired); + +XMLPARSEAPI(void) +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl); + +/* The XML declaration handler is called for *both* XML declarations + and text declarations. The way to distinguish is that the version + parameter will be NULL for text declarations. The encoding + parameter may be NULL for XML declarations. The standalone + parameter will be -1, 0, or 1 indicating respectively that there + was no standalone parameter in the declaration, that it was given + as no, or that it was given as yes. +*/ +typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); + +XMLPARSEAPI(void) +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler xmldecl); + + +typedef struct { + void *(*malloc_fcn)(size_t size); + void *(*realloc_fcn)(void *ptr, size_t size); + void (*free_fcn)(void *ptr); +} XML_Memory_Handling_Suite; + +/* Constructs a new parser; encoding is the encoding specified by the + external protocol or NULL if there is none specified. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate(const XML_Char *encoding); + +/* Constructs a new parser and namespace processor. Element type + names and attribute names that belong to a namespace will be + expanded; unprefixed attribute names are never expanded; unprefixed + element type names are expanded only if there is a default + namespace. The expanded name is the concatenation of the namespace + URI, the namespace separator character, and the local part of the + name. If the namespace separator is '\0' then the namespace URI + and the local part will be concatenated without any separator. + It is a programming error to use the separator '\0' with namespace + triplets (see XML_SetReturnNSTriplet). +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); + + +/* Constructs a new parser using the memory management suite referred to + by memsuite. If memsuite is NULL, then use the standard library memory + suite. If namespaceSeparator is non-NULL it creates a parser with + namespace processing as described above. The character pointed at + will serve as the namespace separator. + + All further memory operations used for the created parser will come from + the given suite. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +/* Prepare a parser object to be re-used. This is particularly + valuable when memory allocation overhead is disproportionatly high, + such as when a large number of small documnents need to be parsed. + All handlers are cleared from the parser, except for the + unknownEncodingHandler. The parser's external state is re-initialized + except for the values of ns and ns_triplets. + + Added in Expat 1.95.3. +*/ +XMLPARSEAPI(XML_Bool) +XML_ParserReset(XML_Parser parser, const XML_Char *encoding); + +/* atts is array of name/value pairs, terminated by 0; + names and values are 0 terminated. +*/ +typedef void (XMLCALL *XML_StartElementHandler) (void *userData, + const XML_Char *name, + const XML_Char **atts); + +typedef void (XMLCALL *XML_EndElementHandler) (void *userData, + const XML_Char *name); + + +/* s is not 0 terminated. */ +typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, + const XML_Char *s, + int len); + +/* target and data are 0 terminated */ +typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( + void *userData, + const XML_Char *target, + const XML_Char *data); + +/* data is 0 terminated */ +typedef void (XMLCALL *XML_CommentHandler) (void *userData, + const XML_Char *data); + +typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); +typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); + +/* This is called for any characters in the XML document for which + there is no applicable handler. This includes both characters that + are part of markup which is of a kind that is not reported + (comments, markup declarations), or characters that are part of a + construct which could be reported but for which no handler has been + supplied. The characters are passed exactly as they were in the XML + document except that they will be encoded in UTF-8 or UTF-16. + Line boundaries are not normalized. Note that a byte order mark + character is not passed to the default handler. There are no + guarantees about how characters are divided between calls to the + default handler: for example, a comment might be split between + multiple calls. +*/ +typedef void (XMLCALL *XML_DefaultHandler) (void *userData, + const XML_Char *s, + int len); + +/* This is called for the start of the DOCTYPE declaration, before + any DTD or internal subset is parsed. +*/ +typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( + void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); + +/* This is called for the start of the DOCTYPE declaration when the + closing > is encountered, but after processing any external + subset. +*/ +typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); + +/* This is called for entity declarations. The is_parameter_entity + argument will be non-zero if the entity is a parameter entity, zero + otherwise. + + For internal entities (), value will + be non-NULL and systemId, publicID, and notationName will be NULL. + The value string is NOT nul-terminated; the length is provided in + the value_length argument. Since it is legal to have zero-length + values, do not use this argument to test for internal entities. + + For external entities, value will be NULL and systemId will be + non-NULL. The publicId argument will be NULL unless a public + identifier was provided. The notationName argument will have a + non-NULL value only for unparsed entity declarations. + + Note that is_parameter_entity can't be changed to XML_Bool, since + that would break binary compatibility. +*/ +typedef void (XMLCALL *XML_EntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity, + const XML_Char *value, + int value_length, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +XMLPARSEAPI(void) +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler); + +/* OBSOLETE -- OBSOLETE -- OBSOLETE + This handler has been superceded by the EntityDeclHandler above. + It is provided here for backward compatibility. + + This is called for a declaration of an unparsed (NDATA) entity. + The base argument is whatever was set by XML_SetBase. The + entityName, systemId and notationName arguments will never be + NULL. The other arguments may be. +*/ +typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +/* This is called for a declaration of notation. The base argument is + whatever was set by XML_SetBase. The notationName will never be + NULL. The other arguments can be. +*/ +typedef void (XMLCALL *XML_NotationDeclHandler) ( + void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* When namespace processing is enabled, these are called once for + each namespace declaration. The call to the start and end element + handlers occur between the calls to the start and end namespace + declaration handlers. For an xmlns attribute, prefix will be + NULL. For an xmlns="" attribute, uri will be NULL. +*/ +typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix, + const XML_Char *uri); + +typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix); + +/* This is called if the document is not standalone, that is, it has an + external subset or a reference to a parameter entity, but does not + have standalone="yes". If this handler returns XML_STATUS_ERROR, + then processing will not continue, and the parser will return a + XML_ERROR_NOT_STANDALONE error. + If parameter entity parsing is enabled, then in addition to the + conditions above this handler will only be called if the referenced + entity was actually read. +*/ +typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); + +/* This is called for a reference to an external parsed general + entity. The referenced entity is not automatically parsed. The + application can parse it immediately or later using + XML_ExternalEntityParserCreate. + + The parser argument is the parser parsing the entity containing the + reference; it can be passed as the parser argument to + XML_ExternalEntityParserCreate. The systemId argument is the + system identifier as specified in the entity declaration; it will + not be NULL. + + The base argument is the system identifier that should be used as + the base for resolving systemId if systemId was relative; this is + set by XML_SetBase; it may be NULL. + + The publicId argument is the public identifier as specified in the + entity declaration, or NULL if none was specified; the whitespace + in the public identifier will have been normalized as required by + the XML spec. + + The context argument specifies the parsing context in the format + expected by the context argument to XML_ExternalEntityParserCreate; + context is valid only until the handler returns, so if the + referenced entity is to be parsed later, it must be copied. + context is NULL only when the entity is a parameter entity. + + The handler should return XML_STATUS_ERROR if processing should not + continue because of a fatal error in the handling of the external + entity. In this case the calling parser will return an + XML_ERROR_EXTERNAL_ENTITY_HANDLING error. + + Note that unlike other handlers the first argument is the parser, + not userData. +*/ +typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( + XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* This is called in two situations: + 1) An entity reference is encountered for which no declaration + has been read *and* this is not an error. + 2) An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler has been called. + Note: skipped parameter entities in declarations and skipped general + entities in attribute values cannot be reported, because + the event would be out of sync with the reporting of the + declarations or attribute values +*/ +typedef void (XMLCALL *XML_SkippedEntityHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity); + +/* This structure is filled in by the XML_UnknownEncodingHandler to + provide information to the parser about encodings that are unknown + to the parser. + + The map[b] member gives information about byte sequences whose + first byte is b. + + If map[b] is c where c is >= 0, then b by itself encodes the + Unicode scalar value c. + + If map[b] is -1, then the byte sequence is malformed. + + If map[b] is -n, where n >= 2, then b is the first byte of an + n-byte sequence that encodes a single Unicode scalar value. + + The data member will be passed as the first argument to the convert + function. + + The convert function is used to convert multibyte sequences; s will + point to a n-byte sequence where map[(unsigned char)*s] == -n. The + convert function must return the Unicode scalar value represented + by this byte sequence or -1 if the byte sequence is malformed. + + The convert function may be NULL if the encoding is a single-byte + encoding, that is if map[b] >= -1 for all bytes b. + + When the parser is finished with the encoding, then if release is + not NULL, it will call release passing it the data member; once + release has been called, the convert function will not be called + again. + + Expat places certain restrictions on the encodings that are supported + using this mechanism. + + 1. Every ASCII character that can appear in a well-formed XML document, + other than the characters + + $@\^`{}~ + + must be represented by a single byte, and that byte must be the + same byte that represents that character in ASCII. + + 2. No character may require more than 4 bytes to encode. + + 3. All characters encoded must have Unicode scalar values <= + 0xFFFF, (i.e., characters that would be encoded by surrogates in + UTF-16 are not allowed). Note that this restriction doesn't + apply to the built-in support for UTF-8 and UTF-16. + + 4. No Unicode character may be encoded by more than one distinct + sequence of bytes. +*/ +typedef struct { + int map[256]; + void *data; + int (XMLCALL *convert)(void *data, const char *s); + void (XMLCALL *release)(void *data); +} XML_Encoding; + +/* This is called for an encoding that is unknown to the parser. + + The encodingHandlerData argument is that which was passed as the + second argument to XML_SetUnknownEncodingHandler. + + The name argument gives the name of the encoding as specified in + the encoding declaration. + + If the callback can provide information about the encoding, it must + fill in the XML_Encoding structure, and return XML_STATUS_OK. + Otherwise it must return XML_STATUS_ERROR. + + If info does not describe a suitable encoding, then the parser will + return an XML_UNKNOWN_ENCODING error. +*/ +typedef int (XMLCALL *XML_UnknownEncodingHandler) ( + void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + +XMLPARSEAPI(void) +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end); + +XMLPARSEAPI(void) +XML_SetStartElementHandler(XML_Parser parser, + XML_StartElementHandler handler); + +XMLPARSEAPI(void) +XML_SetEndElementHandler(XML_Parser parser, + XML_EndElementHandler handler); + +XMLPARSEAPI(void) +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +XMLPARSEAPI(void) +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); +XMLPARSEAPI(void) +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler); + +XMLPARSEAPI(void) +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +XMLPARSEAPI(void) +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start); + +XMLPARSEAPI(void) +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end); + +/* This sets the default handler and also inhibits expansion of + internal entities. These entity references will be passed to the + default handler, or to the skipped entity handler, if one is set. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler); + +/* This sets the default handler but does not inhibit expansion of + internal entities. The entity reference will not be passed to the + default handler. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler); + +XMLPARSEAPI(void) +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler); + +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +/* If a non-NULL value for arg is specified here, then it will be + passed as the first argument to the external entity ref handler + instead of the parser object. +*/ +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, + void *arg); + +XMLPARSEAPI(void) +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler); + +XMLPARSEAPI(void) +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + +/* This can be called within a handler for a start element, end + element, processing instruction or character data. It causes the + corresponding markup to be passed to the default handler. +*/ +XMLPARSEAPI(void) +XML_DefaultCurrent(XML_Parser parser); + +/* If do_nst is non-zero, and namespace processing is in effect, and + a name has a prefix (i.e. an explicit namespace qualifier) then + that name is returned as a triplet in a single string separated by + the separator character specified when the parser was created: URI + + sep + local_name + sep + prefix. + + If do_nst is zero, then namespace information is returned in the + default manner (URI + sep + local_name) whether or not the name + has a prefix. + + Note: Calling XML_SetReturnNSTriplet after XML_Parse or + XML_ParseBuffer has no effect. +*/ + +XMLPARSEAPI(void) +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +/* This value is passed as the userData argument to callbacks. */ +XMLPARSEAPI(void) +XML_SetUserData(XML_Parser parser, void *userData); + +/* Returns the last value set by XML_SetUserData or NULL. */ +#define XML_GetUserData(parser) (*(void **)(parser)) + +/* This is equivalent to supplying an encoding argument to + XML_ParserCreate. On success XML_SetEncoding returns non-zero, + zero otherwise. + Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer + has no effect and returns XML_STATUS_ERROR. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); + +/* If this function is called, then the parser will be passed as the + first argument to callbacks instead of userData. The userData will + still be accessible using XML_GetUserData. +*/ +XMLPARSEAPI(void) +XML_UseParserAsHandlerArg(XML_Parser parser); + +/* If useDTD == XML_TRUE is passed to this function, then the parser + will assume that there is an external subset, even if none is + specified in the document. In such a case the parser will call the + externalEntityRefHandler with a value of NULL for the systemId + argument (the publicId and context arguments will be NULL as well). + Note: For the purpose of checking WFC: Entity Declared, passing + useDTD == XML_TRUE will make the parser behave as if the document + had a DTD with an external subset. + Note: If this function is called, then this must be done before + the first call to XML_Parse or XML_ParseBuffer, since it will + have no effect after that. Returns + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. + Note: If the document does not have a DOCTYPE declaration at all, + then startDoctypeDeclHandler and endDoctypeDeclHandler will not + be called, despite an external subset being parsed. + Note: If XML_DTD is not defined when Expat is compiled, returns + XML_ERROR_FEATURE_REQUIRES_XML_DTD. +*/ +XMLPARSEAPI(enum XML_Error) +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); + + +/* Sets the base to be used for resolving relative URIs in system + identifiers in declarations. Resolving relative identifiers is + left to the application: this value will be passed through as the + base argument to the XML_ExternalEntityRefHandler, + XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base + argument will be copied. Returns XML_STATUS_ERROR if out of memory, + XML_STATUS_OK otherwise. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetBase(XML_Parser parser, const XML_Char *base); + +XMLPARSEAPI(const XML_Char *) +XML_GetBase(XML_Parser parser); + +/* Returns the number of the attribute/value pairs passed in last call + to the XML_StartElementHandler that were specified in the start-tag + rather than defaulted. Each attribute/value pair counts as 2; thus + this correspondds to an index into the atts array passed to the + XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetSpecifiedAttributeCount(XML_Parser parser); + +/* Returns the index of the ID attribute passed in the last call to + XML_StartElementHandler, or -1 if there is no ID attribute. Each + attribute/value pair counts as 2; thus this correspondds to an + index into the atts array passed to the XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetIdAttributeIndex(XML_Parser parser); + +/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is + detected. The last call to XML_Parse must have isFinal true; len + may be zero for this call (or any other). + + Though the return values for these functions has always been + described as a Boolean value, the implementation, at least for the + 1.95.x series, has always returned exactly one of the XML_Status + values. +*/ +XMLPARSEAPI(enum XML_Status) +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +XMLPARSEAPI(void *) +XML_GetBuffer(XML_Parser parser, int len); + +XMLPARSEAPI(enum XML_Status) +XML_ParseBuffer(XML_Parser parser, int len, int isFinal); + +/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. + Must be called from within a call-back handler, except when aborting + (resumable = 0) an already suspended parser. Some call-backs may + still follow because they would otherwise get lost. Examples: + - endElementHandler() for empty elements when stopped in + startElementHandler(), + - endNameSpaceDeclHandler() when stopped in endElementHandler(), + and possibly others. + + Can be called from most handlers, including DTD related call-backs, + except when parsing an external parameter entity and resumable != 0. + Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. + Possible error codes: + - XML_ERROR_SUSPENDED: when suspending an already suspended parser. + - XML_ERROR_FINISHED: when the parser has already finished. + - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. + + When resumable != 0 (true) then parsing is suspended, that is, + XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. + Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() + return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. + + *Note*: + This will be applied to the current parser instance only, that is, if + there is a parent parser then it will continue parsing when the + externalEntityRefHandler() returns. It is up to the implementation of + the externalEntityRefHandler() to call XML_StopParser() on the parent + parser (recursively), if one wants to stop parsing altogether. + + When suspended, parsing can be resumed by calling XML_ResumeParser(). +*/ +XMLPARSEAPI(enum XML_Status) +XML_StopParser(XML_Parser parser, XML_Bool resumable); + +/* Resumes parsing after it has been suspended with XML_StopParser(). + Must not be called from within a handler call-back. Returns same + status codes as XML_Parse() or XML_ParseBuffer(). + Additional error code XML_ERROR_NOT_SUSPENDED possible. + + *Note*: + This must be called on the most deeply nested child parser instance + first, and on its parent parser only after the child parser has finished, + to be applied recursively until the document entity's parser is restarted. + That is, the parent parser will not resume by itself and it is up to the + application to call XML_ResumeParser() on it at the appropriate moment. +*/ +XMLPARSEAPI(enum XML_Status) +XML_ResumeParser(XML_Parser parser); + +enum XML_Parsing { + XML_INITIALIZED, + XML_PARSING, + XML_FINISHED, + XML_SUSPENDED +}; + +typedef struct { + enum XML_Parsing parsing; + XML_Bool finalBuffer; +} XML_ParsingStatus; + +/* Returns status of parser with respect to being initialized, parsing, + finished, or suspended and processing the final buffer. + XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, + XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED +*/ +XMLPARSEAPI(void) +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); + +/* Creates an XML_Parser object that can parse an external general + entity; context is a '\0'-terminated string specifying the parse + context; encoding is a '\0'-terminated string giving the name of + the externally specified encoding, or NULL if there is no + externally specified encoding. The context string consists of a + sequence of tokens separated by formfeeds (\f); a token consisting + of a name specifies that the general entity of the name is open; a + token of the form prefix=uri specifies the namespace for a + particular prefix; a token of the form =uri specifies the default + namespace. This can be called at any point after the first call to + an ExternalEntityRefHandler so longer as the parser has not yet + been freed. The new parser is completely independent and may + safely be used in a separate thread. The handlers and userData are + initialized from the parser argument. Returns NULL if out of memory. + Otherwise returns a new XML_Parser object. +*/ +XMLPARSEAPI(XML_Parser) +XML_ExternalEntityParserCreate(XML_Parser parser, + const XML_Char *context, + const XML_Char *encoding); + +enum XML_ParamEntityParsing { + XML_PARAM_ENTITY_PARSING_NEVER, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, + XML_PARAM_ENTITY_PARSING_ALWAYS +}; + +/* Controls parsing of parameter entities (including the external DTD + subset). If parsing of parameter entities is enabled, then + references to external parameter entities (including the external + DTD subset) will be passed to the handler set with + XML_SetExternalEntityRefHandler. The context passed will be 0. + + Unlike external general entities, external parameter entities can + only be parsed synchronously. If the external parameter entity is + to be parsed, it must be parsed during the call to the external + entity ref handler: the complete sequence of + XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and + XML_ParserFree calls must be made during this call. After + XML_ExternalEntityParserCreate has been called to create the parser + for the external parameter entity (context must be 0 for this + call), it is illegal to make any calls on the old parser until + XML_ParserFree has been called on the newly created parser. + If the library has been compiled without support for parameter + entity parsing (ie without XML_DTD being defined), then + XML_SetParamEntityParsing will return 0 if parsing of parameter + entities is requested; otherwise it will return non-zero. + Note: If XML_SetParamEntityParsing is called after XML_Parse or + XML_ParseBuffer, then it has no effect and will always return 0. +*/ +XMLPARSEAPI(int) +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then + XML_GetErrorCode returns information about the error. +*/ +XMLPARSEAPI(enum XML_Error) +XML_GetErrorCode(XML_Parser parser); + +/* These functions return information about the current parse + location. They may be called from any callback called to report + some parse event; in this case the location is the location of the + first of the sequence of characters that generated the event. When + called from callbacks generated by declarations in the document + prologue, the location identified isn't as neatly defined, but will + be within the relevant markup. When called outside of the callback + functions, the position indicated will be just past the last parse + event (regardless of whether there was an associated callback). + + They may also be called after returning from a call to XML_Parse + or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then + the location is the location of the character at which the error + was detected; otherwise the location is the location of the last + parse event, as described above. +*/ +XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); +XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); +XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); + +/* Return the number of bytes in the current event. + Returns 0 if the event is in an internal entity. +*/ +XMLPARSEAPI(int) +XML_GetCurrentByteCount(XML_Parser parser); + +/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets + the integer pointed to by offset to the offset within this buffer + of the current parse position, and sets the integer pointed to by size + to the size of this buffer (the number of input bytes). Otherwise + returns a NULL pointer. Also returns a NULL pointer if a parse isn't + active. + + NOTE: The character pointer returned should not be used outside + the handler that makes the call. +*/ +XMLPARSEAPI(const char *) +XML_GetInputContext(XML_Parser parser, + int *offset, + int *size); + +/* For backwards compatibility with previous versions. */ +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex + +/* Frees the content model passed to the element declaration handler */ +XMLPARSEAPI(void) +XML_FreeContentModel(XML_Parser parser, XML_Content *model); + +/* Exposing the memory handling functions used in Expat */ +XMLPARSEAPI(void *) +XML_MemMalloc(XML_Parser parser, size_t size); + +XMLPARSEAPI(void *) +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); + +XMLPARSEAPI(void) +XML_MemFree(XML_Parser parser, void *ptr); + +/* Frees memory used by the parser. */ +XMLPARSEAPI(void) +XML_ParserFree(XML_Parser parser); + +/* Returns a string describing the error. */ +XMLPARSEAPI(const XML_LChar *) +XML_ErrorString(enum XML_Error code); + +/* Return a string containing the version number of this expat */ +XMLPARSEAPI(const XML_LChar *) +XML_ExpatVersion(void); + +typedef struct { + int major; + int minor; + int micro; +} XML_Expat_Version; + +/* Return an XML_Expat_Version structure containing numeric version + number information for this version of expat. +*/ +XMLPARSEAPI(XML_Expat_Version) +XML_ExpatVersionInfo(void); + +/* Added in Expat 1.95.5. */ +enum XML_FeatureEnum { + XML_FEATURE_END = 0, + XML_FEATURE_UNICODE, + XML_FEATURE_UNICODE_WCHAR_T, + XML_FEATURE_DTD, + XML_FEATURE_CONTEXT_BYTES, + XML_FEATURE_MIN_SIZE, + XML_FEATURE_SIZEOF_XML_CHAR, + XML_FEATURE_SIZEOF_XML_LCHAR, + XML_FEATURE_NS, + XML_FEATURE_LARGE_SIZE + /* Additional features must be added to the end of this enum. */ +}; + +typedef struct { + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; +} XML_Feature; + +XMLPARSEAPI(const XML_Feature *) +XML_GetFeatureList(void); + + +/* Expat follows the GNU/Linux convention of odd number minor version for + beta/development releases and even number minor version for stable + releases. Micro is bumped with each release, and set to 0 with each + change to major or minor version. +*/ +#define XML_MAJOR_VERSION 2 +#define XML_MINOR_VERSION 0 +#define XML_MICRO_VERSION 1 + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_INCLUDED */ diff --git a/mcwin32/autoupdater/expat_legacy/expat_external.h b/mcwin32/autoupdater/expat_legacy/expat_external.h new file mode 100644 index 00000000..2c03284e --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/expat_external.h @@ -0,0 +1,115 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef Expat_External_INCLUDED +#define Expat_External_INCLUDED 1 + +/* External API definitions */ + +#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) +#define XML_USE_MSC_EXTENSIONS 1 +#endif + +/* Expat tries very hard to make the API boundary very specifically + defined. There are two macros defined to control this boundary; + each of these can be defined before including this header to + achieve some different behavior, but doing so it not recommended or + tested frequently. + + XMLCALL - The calling convention to use for all calls across the + "library boundary." This will default to cdecl, and + try really hard to tell the compiler that's what we + want. + + XMLIMPORT - Whatever magic is needed to note that a function is + to be imported from a dynamically loaded library + (.dll, .so, or .sl, depending on your platform). + + The XMLCALL macro was added in Expat 1.95.7. The only one which is + expected to be directly useful in client code is XMLCALL. + + Note that on at least some Unix versions, the Expat library must be + compiled with the cdecl calling convention as the default since + system headers may assume the cdecl convention. +*/ +#ifndef XMLCALL +#if defined(_MSC_VER) +#define XMLCALL __cdecl +#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER) +#define XMLCALL __attribute__((cdecl)) +#else +/* For any platform which uses this definition and supports more than + one calling convention, we need to extend this definition to + declare the convention used on that platform, if it's possible to + do so. + + If this is the case for your platform, please file a bug report + with information on how to identify your platform via the C + pre-processor and how to specify the same calling convention as the + platform's malloc() implementation. +*/ +#define XMLCALL +#endif +#endif /* not defined XMLCALL */ + + +#if !defined(XML_STATIC) && !defined(XMLIMPORT) +#ifndef XML_BUILDING_EXPAT +/* using Expat from an application */ + +#ifdef XML_USE_MSC_EXTENSIONS +#define XMLIMPORT __declspec(dllimport) +#endif + +#endif +#endif /* not defined XML_STATIC */ + + +/* If we didn't define it above, define it away: */ +#ifndef XMLIMPORT +#define XMLIMPORT +#endif + + +#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef XML_UNICODE_WCHAR_T +#define XML_UNICODE +#endif + +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +#ifdef XML_UNICODE_WCHAR_T +typedef wchar_t XML_Char; +typedef wchar_t XML_LChar; +#else +typedef unsigned short XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ +typedef char XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE */ + +#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +typedef __int64 XML_Index; +typedef unsigned __int64 XML_Size; +#else +typedef long long XML_Index; +typedef unsigned long long XML_Size; +#endif +#else +typedef long XML_Index; +typedef unsigned long XML_Size; +#endif /* XML_LARGE_SIZE */ + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_External_INCLUDED */ diff --git a/mcwin32/autoupdater/expat_legacy/iasciitab.h b/mcwin32/autoupdater/expat_legacy/iasciitab.h new file mode 100644 index 00000000..24a1d5cc --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/iasciitab.h @@ -0,0 +1,37 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ +/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, +/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, +/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, +/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, +/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, +/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, +/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, +/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, +/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, +/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, +/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/mcwin32/autoupdater/expat_legacy/internal.h b/mcwin32/autoupdater/expat_legacy/internal.h new file mode 100644 index 00000000..dd545483 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/internal.h @@ -0,0 +1,73 @@ +/* internal.h + + Internal definitions used by Expat. This is not needed to compile + client code. + + The following calling convention macros are defined for frequently + called functions: + + FASTCALL - Used for those internal functions that have a simple + body and a low number of arguments and local variables. + + PTRCALL - Used for functions called though function pointers. + + PTRFASTCALL - Like PTRCALL, but for low number of arguments. + + inline - Used for selected internal functions for which inlining + may improve performance on some platforms. + + Note: Use of these macros is based on judgement, not hard rules, + and therefore subject to change. +*/ + +#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) +/* We'll use this version by default only where we know it helps. + + regparm() generates warnings on Solaris boxes. See SF bug #692878. + + Instability reported with egcs on a RedHat Linux 7.3. + Let's comment out: + #define FASTCALL __attribute__((stdcall, regparm(3))) + and let's try this: +*/ +#define FASTCALL __attribute__((regparm(3))) +#define PTRFASTCALL __attribute__((regparm(3))) +#endif + +/* Using __fastcall seems to have an unexpected negative effect under + MS VC++, especially for function pointers, so we won't use it for + now on that platform. It may be reconsidered for a future release + if it can be made more effective. + Likely reason: __fastcall on Windows is like stdcall, therefore + the compiler cannot perform stack optimizations for call clusters. +*/ + +/* Make sure all of these are defined if they aren't already. */ + +#ifndef FASTCALL +#define FASTCALL +#endif + +#ifndef PTRCALL +#define PTRCALL +#endif + +#ifndef PTRFASTCALL +#define PTRFASTCALL +#endif + +#ifndef XML_MIN_SIZE +#if !defined(__cplusplus) && !defined(inline) +#ifdef __GNUC__ +#define inline __inline +#endif /* __GNUC__ */ +#endif +#endif /* XML_MIN_SIZE */ + +#ifdef __cplusplus +#define inline inline +#else +#ifndef inline +#define inline +#endif +#endif diff --git a/mcwin32/autoupdater/expat_legacy/latin1tab.h b/mcwin32/autoupdater/expat_legacy/latin1tab.h new file mode 100644 index 00000000..53c25d76 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/latin1tab.h @@ -0,0 +1,36 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, +/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, +/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, +/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, diff --git a/mcwin32/autoupdater/expat_legacy/macconfig.h b/mcwin32/autoupdater/expat_legacy/macconfig.h new file mode 100644 index 00000000..2725caaf --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/macconfig.h @@ -0,0 +1,53 @@ +/*================================================================ +** Copyright 2000, Clark Cooper +** All rights reserved. +** +** This is free software. You are permitted to copy, distribute, or modify +** it under the terms of the MIT/X license (contained in the COPYING file +** with this distribution.) +** +*/ + +#ifndef MACCONFIG_H +#define MACCONFIG_H + + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#define BYTEORDER 4321 + +/* Define to 1 if you have the `bcopy' function. */ +#undef HAVE_BCOPY + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* whether byteorder is bigendian */ +#define WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#undef XML_CONTEXT_BYTES + +/* Define to make parameter entity parsing functionality available. */ +#define XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#define XML_NS + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `long' if does not define. */ +#define off_t long + +/* Define to `unsigned' if does not define. */ +#undef size_t + + +#endif /* ifndef MACCONFIG_H */ diff --git a/mcwin32/autoupdater/expat_legacy/nametab.h b/mcwin32/autoupdater/expat_legacy/nametab.h new file mode 100644 index 00000000..b05e62c7 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/nametab.h @@ -0,0 +1,150 @@ +static const unsigned namingBitmap[] = { +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE, +0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, +0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF, +0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, +0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, +0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, +0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, +0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, +0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, +0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000, +0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, +0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, +0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003, +0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, +0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, +0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003, +0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, +0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, +0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003, +0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000, +0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, +0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, +0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB, +0x40000000, 0xF580C900, 0x00000007, 0x02010800, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, +0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, +0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, +0x00000000, 0x00004C40, 0x00000000, 0x00000000, +0x00000007, 0x00000000, 0x00000000, 0x00000000, +0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, +0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF, +0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000, +0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, +0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, +0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, +0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, +0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, +0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, +0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, +0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, +0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, +0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, +0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF, +0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, +0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, +0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0, +0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, +0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, +0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80, +0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, +0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, +0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, +0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000, +0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, +0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, +0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, +0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF, +}; +static const unsigned char nmstrtPages[] = { +0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, +0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, +0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, +0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +static const unsigned char namePages[] = { +0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, +0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, +0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, +0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/mcwin32/autoupdater/expat_legacy/utf8tab.h b/mcwin32/autoupdater/expat_legacy/utf8tab.h new file mode 100644 index 00000000..7bb3e776 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/utf8tab.h @@ -0,0 +1,37 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + + +/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, +/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, diff --git a/mcwin32/autoupdater/expat_legacy/winconfig.h b/mcwin32/autoupdater/expat_legacy/winconfig.h new file mode 100644 index 00000000..c1b791d6 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/winconfig.h @@ -0,0 +1,30 @@ +/*================================================================ +** Copyright 2000, Clark Cooper +** All rights reserved. +** +** This is free software. You are permitted to copy, distribute, or modify +** it under the terms of the MIT/X license (contained in the COPYING file +** with this distribution.) +*/ + +#ifndef WINCONFIG_H +#define WINCONFIG_H + +#define WIN32_LEAN_AND_MEAN +#include +#undef WIN32_LEAN_AND_MEAN + +#include +#include + +#define XML_NS 1 +#define XML_DTD 1 +#define XML_CONTEXT_BYTES 1024 + +/* we will assume all Windows platforms are little endian */ +#define BYTEORDER 1234 + +/* Windows has memmove() available. */ +#define HAVE_MEMMOVE + +#endif /* ndef WINCONFIG_H */ diff --git a/mcwin32/autoupdater/expat_legacy/xmlparse.c b/mcwin32/autoupdater/expat_legacy/xmlparse.c new file mode 100644 index 00000000..98c4fa77 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmlparse.c @@ -0,0 +1,6290 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include +#include /* memset(), memcpy() */ +#include + +#define XML_BUILDING_EXPAT 1 + +#ifdef COMPILED_FROM_DSP +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos4__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#elif defined(HAVE_EXPAT_CONFIG_H) +#include +#endif /* ndef COMPILED_FROM_DSP */ + +#include "ascii.h" +#include "expat.h" + +#ifdef XML_UNICODE +#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX +#define XmlConvert XmlUtf16Convert +#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding +#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS +#define XmlEncode XmlUtf16Encode +/* Using pointer subtraction to convert to integer type. */ +#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1)) +typedef unsigned short ICHAR; +#else +#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX +#define XmlConvert XmlUtf8Convert +#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding +#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS +#define XmlEncode XmlUtf8Encode +#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) +typedef char ICHAR; +#endif + + +#ifndef XML_NS + +#define XmlInitEncodingNS XmlInitEncoding +#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding +#undef XmlGetInternalEncodingNS +#define XmlGetInternalEncodingNS XmlGetInternalEncoding +#define XmlParseXmlDeclNS XmlParseXmlDecl + +#endif + +#ifdef XML_UNICODE + +#ifdef XML_UNICODE_WCHAR_T +#define XML_T(x) (const wchar_t)x +#define XML_L(x) L ## x +#else +#define XML_T(x) (const unsigned short)x +#define XML_L(x) x +#endif + +#else + +#define XML_T(x) x +#define XML_L(x) x + +#endif + +/* Round up n to be a multiple of sz, where sz is a power of 2. */ +#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) + +/* Handle the case where memmove() doesn't exist. */ +#ifndef HAVE_MEMMOVE +#ifdef HAVE_BCOPY +#define memmove(d,s,l) bcopy((s),(d),(l)) +#else +#error memmove does not exist on this platform, nor is a substitute available +#endif /* HAVE_BCOPY */ +#endif /* HAVE_MEMMOVE */ + +#include "internal.h" +#include "xmltok.h" +#include "xmlrole.h" + +typedef const XML_Char *KEY; + +typedef struct { + KEY name; +} NAMED; + +typedef struct { + NAMED **v; + unsigned char power; + size_t size; + size_t used; + const XML_Memory_Handling_Suite *mem; +} HASH_TABLE; + +/* Basic character hash algorithm, taken from Python's string hash: + h = h * 1000003 ^ character, the constant being a prime number. + +*/ +#ifdef XML_UNICODE +#define CHAR_HASH(h, c) \ + (((h) * 0xF4243) ^ (unsigned short)(c)) +#else +#define CHAR_HASH(h, c) \ + (((h) * 0xF4243) ^ (unsigned char)(c)) +#endif + +/* For probing (after a collision) we need a step size relative prime + to the hash table size, which is a power of 2. We use double-hashing, + since we can calculate a second hash value cheaply by taking those bits + of the first hash value that were discarded (masked out) when the table + index was calculated: index = hash & mask, where mask = table->size - 1. + We limit the maximum step size to table->size / 4 (mask >> 2) and make + it odd, since odd numbers are always relative prime to a power of 2. +*/ +#define SECOND_HASH(hash, mask, power) \ + ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2)) +#define PROBE_STEP(hash, mask, power) \ + ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) + +typedef struct { + NAMED **p; + NAMED **end; +} HASH_TABLE_ITER; + +#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ +#define INIT_DATA_BUF_SIZE 1024 +#define INIT_ATTS_SIZE 16 +#define INIT_ATTS_VERSION 0xFFFFFFFF +#define INIT_BLOCK_SIZE 1024 +#define INIT_BUFFER_SIZE 1024 + +#define EXPAND_SPARE 24 + +typedef struct binding { + struct prefix *prefix; + struct binding *nextTagBinding; + struct binding *prevPrefixBinding; + const struct attribute_id *attId; + XML_Char *uri; + int uriLen; + int uriAlloc; +} BINDING; + +typedef struct prefix { + const XML_Char *name; + BINDING *binding; +} PREFIX; + +typedef struct { + const XML_Char *str; + const XML_Char *localPart; + const XML_Char *prefix; + int strLen; + int uriLen; + int prefixLen; +} TAG_NAME; + +/* TAG represents an open element. + The name of the element is stored in both the document and API + encodings. The memory buffer 'buf' is a separately-allocated + memory area which stores the name. During the XML_Parse()/ + XMLParseBuffer() when the element is open, the memory for the 'raw' + version of the name (in the document encoding) is shared with the + document buffer. If the element is open across calls to + XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to + contain the 'raw' name as well. + + A parser re-uses these structures, maintaining a list of allocated + TAG objects in a free list. +*/ +typedef struct tag { + struct tag *parent; /* parent of this element */ + const char *rawName; /* tagName in the original encoding */ + int rawNameLength; + TAG_NAME name; /* tagName in the API encoding */ + char *buf; /* buffer for name components */ + char *bufEnd; /* end of the buffer */ + BINDING *bindings; +} TAG; + +typedef struct { + const XML_Char *name; + const XML_Char *textPtr; + int textLen; /* length in XML_Chars */ + int processed; /* # of processed bytes - when suspended */ + const XML_Char *systemId; + const XML_Char *base; + const XML_Char *publicId; + const XML_Char *notation; + XML_Bool open; + XML_Bool is_param; + XML_Bool is_internal; /* true if declared in internal subset outside PE */ +} ENTITY; + +typedef struct { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + const XML_Char * name; + int firstchild; + int lastchild; + int childcnt; + int nextsib; +} CONTENT_SCAFFOLD; + +#define INIT_SCAFFOLD_ELEMENTS 32 + +typedef struct block { + struct block *next; + int size; + XML_Char s[1]; +} BLOCK; + +typedef struct { + BLOCK *blocks; + BLOCK *freeBlocks; + const XML_Char *end; + XML_Char *ptr; + XML_Char *start; + const XML_Memory_Handling_Suite *mem; +} STRING_POOL; + +/* The XML_Char before the name is used to determine whether + an attribute has been specified. */ +typedef struct attribute_id { + XML_Char *name; + PREFIX *prefix; + XML_Bool maybeTokenized; + XML_Bool xmlns; +} ATTRIBUTE_ID; + +typedef struct { + const ATTRIBUTE_ID *id; + XML_Bool isCdata; + const XML_Char *value; +} DEFAULT_ATTRIBUTE; + +typedef struct { + unsigned long version; + unsigned long hash; + const XML_Char *uriName; +} NS_ATT; + +typedef struct { + const XML_Char *name; + PREFIX *prefix; + const ATTRIBUTE_ID *idAtt; + int nDefaultAtts; + int allocDefaultAtts; + DEFAULT_ATTRIBUTE *defaultAtts; +} ELEMENT_TYPE; + +typedef struct { + HASH_TABLE generalEntities; + HASH_TABLE elementTypes; + HASH_TABLE attributeIds; + HASH_TABLE prefixes; + STRING_POOL pool; + STRING_POOL entityValuePool; + /* false once a parameter entity reference has been skipped */ + XML_Bool keepProcessing; + /* true once an internal or external PE reference has been encountered; + this includes the reference to an external subset */ + XML_Bool hasParamEntityRefs; + XML_Bool standalone; +#ifdef XML_DTD + /* indicates if external PE has been read */ + XML_Bool paramEntityRead; + HASH_TABLE paramEntities; +#endif /* XML_DTD */ + PREFIX defaultPrefix; + /* === scaffolding for building content model === */ + XML_Bool in_eldecl; + CONTENT_SCAFFOLD *scaffold; + unsigned contentStringLen; + unsigned scaffSize; + unsigned scaffCount; + int scaffLevel; + int *scaffIndex; +} DTD; + +typedef struct open_internal_entity { + const char *internalEventPtr; + const char *internalEventEndPtr; + struct open_internal_entity *next; + ENTITY *entity; + int startTagLevel; + XML_Bool betweenDecl; /* WFC: PE Between Declarations */ +} OPEN_INTERNAL_ENTITY; + +typedef enum XML_Error PTRCALL Processor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr); + +static Processor prologProcessor; +static Processor prologInitProcessor; +static Processor contentProcessor; +static Processor cdataSectionProcessor; +#ifdef XML_DTD +static Processor ignoreSectionProcessor; +static Processor externalParEntProcessor; +static Processor externalParEntInitProcessor; +static Processor entityValueProcessor; +static Processor entityValueInitProcessor; +#endif /* XML_DTD */ +static Processor epilogProcessor; +static Processor errorProcessor; +static Processor externalEntityInitProcessor; +static Processor externalEntityInitProcessor2; +static Processor externalEntityInitProcessor3; +static Processor externalEntityContentProcessor; +static Processor internalEntityProcessor; + +static enum XML_Error +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); +static enum XML_Error +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next); +static enum XML_Error +initializeEncoding(XML_Parser parser); +static enum XML_Error +doProlog(XML_Parser parser, const ENCODING *enc, const char *s, + const char *end, int tok, const char *next, const char **nextPtr, + XML_Bool haveMore); +static enum XML_Error +processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl); +static enum XML_Error +doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, + const char *start, const char *end, const char **endPtr, + XML_Bool haveMore); +static enum XML_Error +doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore); +#ifdef XML_DTD +static enum XML_Error +doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore); +#endif /* XML_DTD */ + +static enum XML_Error +storeAtts(XML_Parser parser, const ENCODING *, const char *s, + TAG_NAME *tagNamePtr, BINDING **bindingsPtr); +static enum XML_Error +addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr); +static int +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, + XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); +static enum XML_Error +storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, + const char *, const char *, STRING_POOL *); +static enum XML_Error +appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, + const char *, const char *, STRING_POOL *); +static ATTRIBUTE_ID * +getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static int +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); +static enum XML_Error +storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static int +reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int +reportComment(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static void +reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); + +static const XML_Char * getContext(XML_Parser parser); +static XML_Bool +setContext(XML_Parser parser, const XML_Char *context); + +static void FASTCALL normalizePublicId(XML_Char *s); + +static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms); +/* do not call if parentParser != NULL */ +static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); +static void +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms); +static int +dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms); +static int +copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *); + +static NAMED * +lookup(HASH_TABLE *table, KEY name, size_t createSize); +static void FASTCALL +hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms); +static void FASTCALL hashTableClear(HASH_TABLE *); +static void FASTCALL hashTableDestroy(HASH_TABLE *); +static void FASTCALL +hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); +static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *); + +static void FASTCALL +poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms); +static void FASTCALL poolClear(STRING_POOL *); +static void FASTCALL poolDestroy(STRING_POOL *); +static XML_Char * +poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Char * +poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); +static const XML_Char * FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s); +static const XML_Char * +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); +static const XML_Char * FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s); + +static int FASTCALL nextScaffoldPart(XML_Parser parser); +static XML_Content * build_model(XML_Parser parser); +static ELEMENT_TYPE * +getElementType(XML_Parser parser, const ENCODING *enc, + const char *ptr, const char *end); + +static XML_Parser +parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, + DTD *dtd); +static void +parserInit(XML_Parser parser, const XML_Char *encodingName); + +#define poolStart(pool) ((pool)->start) +#define poolEnd(pool) ((pool)->ptr) +#define poolLength(pool) ((pool)->ptr - (pool)->start) +#define poolChop(pool) ((void)--(pool->ptr)) +#define poolLastChar(pool) (((pool)->ptr)[-1]) +#define poolDiscard(pool) ((pool)->ptr = (pool)->start) +#define poolFinish(pool) ((pool)->start = (pool)->ptr) +#define poolAppendChar(pool, c) \ + (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ + ? 0 \ + : ((*((pool)->ptr)++ = c), 1)) + +struct XML_ParserStruct { + /* The first member must be userData so that the XML_GetUserData + macro works. */ + void *m_userData; + void *m_handlerArg; + char *m_buffer; + const XML_Memory_Handling_Suite m_mem; + /* first character to be parsed */ + const char *m_bufferPtr; + /* past last character to be parsed */ + char *m_bufferEnd; + /* allocated end of buffer */ + const char *m_bufferLim; + XML_Index m_parseEndByteIndex; + const char *m_parseEndPtr; + XML_Char *m_dataBuf; + XML_Char *m_dataBufEnd; + XML_StartElementHandler m_startElementHandler; + XML_EndElementHandler m_endElementHandler; + XML_CharacterDataHandler m_characterDataHandler; + XML_ProcessingInstructionHandler m_processingInstructionHandler; + XML_CommentHandler m_commentHandler; + XML_StartCdataSectionHandler m_startCdataSectionHandler; + XML_EndCdataSectionHandler m_endCdataSectionHandler; + XML_DefaultHandler m_defaultHandler; + XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; + XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; + XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; + XML_NotationDeclHandler m_notationDeclHandler; + XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; + XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; + XML_NotStandaloneHandler m_notStandaloneHandler; + XML_ExternalEntityRefHandler m_externalEntityRefHandler; + XML_Parser m_externalEntityRefHandlerArg; + XML_SkippedEntityHandler m_skippedEntityHandler; + XML_UnknownEncodingHandler m_unknownEncodingHandler; + XML_ElementDeclHandler m_elementDeclHandler; + XML_AttlistDeclHandler m_attlistDeclHandler; + XML_EntityDeclHandler m_entityDeclHandler; + XML_XmlDeclHandler m_xmlDeclHandler; + const ENCODING *m_encoding; + INIT_ENCODING m_initEncoding; + const ENCODING *m_internalEncoding; + const XML_Char *m_protocolEncodingName; + XML_Bool m_ns; + XML_Bool m_ns_triplets; + void *m_unknownEncodingMem; + void *m_unknownEncodingData; + void *m_unknownEncodingHandlerData; + void (XMLCALL *m_unknownEncodingRelease)(void *); + PROLOG_STATE m_prologState; + Processor *m_processor; + enum XML_Error m_errorCode; + const char *m_eventPtr; + const char *m_eventEndPtr; + const char *m_positionPtr; + OPEN_INTERNAL_ENTITY *m_openInternalEntities; + OPEN_INTERNAL_ENTITY *m_freeInternalEntities; + XML_Bool m_defaultExpandInternalEntities; + int m_tagLevel; + ENTITY *m_declEntity; + const XML_Char *m_doctypeName; + const XML_Char *m_doctypeSysid; + const XML_Char *m_doctypePubid; + const XML_Char *m_declAttributeType; + const XML_Char *m_declNotationName; + const XML_Char *m_declNotationPublicId; + ELEMENT_TYPE *m_declElementType; + ATTRIBUTE_ID *m_declAttributeId; + XML_Bool m_declAttributeIsCdata; + XML_Bool m_declAttributeIsId; + DTD *m_dtd; + const XML_Char *m_curBase; + TAG *m_tagStack; + TAG *m_freeTagList; + BINDING *m_inheritedBindings; + BINDING *m_freeBindingList; + int m_attsSize; + int m_nSpecifiedAtts; + int m_idAttIndex; + ATTRIBUTE *m_atts; + NS_ATT *m_nsAtts; + unsigned long m_nsAttsVersion; + unsigned char m_nsAttsPower; + POSITION m_position; + STRING_POOL m_tempPool; + STRING_POOL m_temp2Pool; + char *m_groupConnector; + unsigned int m_groupSize; + XML_Char m_namespaceSeparator; + XML_Parser m_parentParser; + XML_ParsingStatus m_parsingStatus; +#ifdef XML_DTD + XML_Bool m_isParamEntity; + XML_Bool m_useForeignDTD; + enum XML_ParamEntityParsing m_paramEntityParsing; +#endif +}; + +#define MALLOC(s) (parser->m_mem.malloc_fcn((s))) +#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s))) +#define FREE(p) (parser->m_mem.free_fcn((p))) + +#define userData (parser->m_userData) +#define handlerArg (parser->m_handlerArg) +#define startElementHandler (parser->m_startElementHandler) +#define endElementHandler (parser->m_endElementHandler) +#define characterDataHandler (parser->m_characterDataHandler) +#define processingInstructionHandler \ + (parser->m_processingInstructionHandler) +#define commentHandler (parser->m_commentHandler) +#define startCdataSectionHandler \ + (parser->m_startCdataSectionHandler) +#define endCdataSectionHandler (parser->m_endCdataSectionHandler) +#define defaultHandler (parser->m_defaultHandler) +#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler) +#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler) +#define unparsedEntityDeclHandler \ + (parser->m_unparsedEntityDeclHandler) +#define notationDeclHandler (parser->m_notationDeclHandler) +#define startNamespaceDeclHandler \ + (parser->m_startNamespaceDeclHandler) +#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler) +#define notStandaloneHandler (parser->m_notStandaloneHandler) +#define externalEntityRefHandler \ + (parser->m_externalEntityRefHandler) +#define externalEntityRefHandlerArg \ + (parser->m_externalEntityRefHandlerArg) +#define internalEntityRefHandler \ + (parser->m_internalEntityRefHandler) +#define skippedEntityHandler (parser->m_skippedEntityHandler) +#define unknownEncodingHandler (parser->m_unknownEncodingHandler) +#define elementDeclHandler (parser->m_elementDeclHandler) +#define attlistDeclHandler (parser->m_attlistDeclHandler) +#define entityDeclHandler (parser->m_entityDeclHandler) +#define xmlDeclHandler (parser->m_xmlDeclHandler) +#define encoding (parser->m_encoding) +#define initEncoding (parser->m_initEncoding) +#define internalEncoding (parser->m_internalEncoding) +#define unknownEncodingMem (parser->m_unknownEncodingMem) +#define unknownEncodingData (parser->m_unknownEncodingData) +#define unknownEncodingHandlerData \ + (parser->m_unknownEncodingHandlerData) +#define unknownEncodingRelease (parser->m_unknownEncodingRelease) +#define protocolEncodingName (parser->m_protocolEncodingName) +#define ns (parser->m_ns) +#define ns_triplets (parser->m_ns_triplets) +#define prologState (parser->m_prologState) +#define processor (parser->m_processor) +#define errorCode (parser->m_errorCode) +#define eventPtr (parser->m_eventPtr) +#define eventEndPtr (parser->m_eventEndPtr) +#define positionPtr (parser->m_positionPtr) +#define position (parser->m_position) +#define openInternalEntities (parser->m_openInternalEntities) +#define freeInternalEntities (parser->m_freeInternalEntities) +#define defaultExpandInternalEntities \ + (parser->m_defaultExpandInternalEntities) +#define tagLevel (parser->m_tagLevel) +#define buffer (parser->m_buffer) +#define bufferPtr (parser->m_bufferPtr) +#define bufferEnd (parser->m_bufferEnd) +#define parseEndByteIndex (parser->m_parseEndByteIndex) +#define parseEndPtr (parser->m_parseEndPtr) +#define bufferLim (parser->m_bufferLim) +#define dataBuf (parser->m_dataBuf) +#define dataBufEnd (parser->m_dataBufEnd) +#define _dtd (parser->m_dtd) +#define curBase (parser->m_curBase) +#define declEntity (parser->m_declEntity) +#define doctypeName (parser->m_doctypeName) +#define doctypeSysid (parser->m_doctypeSysid) +#define doctypePubid (parser->m_doctypePubid) +#define declAttributeType (parser->m_declAttributeType) +#define declNotationName (parser->m_declNotationName) +#define declNotationPublicId (parser->m_declNotationPublicId) +#define declElementType (parser->m_declElementType) +#define declAttributeId (parser->m_declAttributeId) +#define declAttributeIsCdata (parser->m_declAttributeIsCdata) +#define declAttributeIsId (parser->m_declAttributeIsId) +#define freeTagList (parser->m_freeTagList) +#define freeBindingList (parser->m_freeBindingList) +#define inheritedBindings (parser->m_inheritedBindings) +#define tagStack (parser->m_tagStack) +#define atts (parser->m_atts) +#define attsSize (parser->m_attsSize) +#define nSpecifiedAtts (parser->m_nSpecifiedAtts) +#define idAttIndex (parser->m_idAttIndex) +#define nsAtts (parser->m_nsAtts) +#define nsAttsVersion (parser->m_nsAttsVersion) +#define nsAttsPower (parser->m_nsAttsPower) +#define tempPool (parser->m_tempPool) +#define temp2Pool (parser->m_temp2Pool) +#define groupConnector (parser->m_groupConnector) +#define groupSize (parser->m_groupSize) +#define namespaceSeparator (parser->m_namespaceSeparator) +#define parentParser (parser->m_parentParser) +#define ps_parsing (parser->m_parsingStatus.parsing) +#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer) +#ifdef XML_DTD +#define isParamEntity (parser->m_isParamEntity) +#define useForeignDTD (parser->m_useForeignDTD) +#define paramEntityParsing (parser->m_paramEntityParsing) +#endif /* XML_DTD */ + +XML_Parser XMLCALL +XML_ParserCreate(const XML_Char *encodingName) +{ + return XML_ParserCreate_MM(encodingName, NULL, NULL); +} + +XML_Parser XMLCALL +XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) +{ + XML_Char tmp[2]; + *tmp = nsSep; + return XML_ParserCreate_MM(encodingName, NULL, tmp); +} + +static const XML_Char implicitContext[] = { + ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p, + ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, + ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, + ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, + ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, + ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' +}; + +XML_Parser XMLCALL +XML_ParserCreate_MM(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep) +{ + XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL); + if (parser != NULL && ns) { + /* implicit context only set for root parser, since child + parsers (i.e. external entity parsers) will inherit it + */ + if (!setContext(parser, implicitContext)) { + XML_ParserFree(parser); + return NULL; + } + } + return parser; +} + +static XML_Parser +parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, + DTD *dtd) +{ + XML_Parser parser; + + if (memsuite) { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser) + memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = memsuite->malloc_fcn; + mtemp->realloc_fcn = memsuite->realloc_fcn; + mtemp->free_fcn = memsuite->free_fcn; + } + } + else { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = malloc; + mtemp->realloc_fcn = realloc; + mtemp->free_fcn = free; + } + } + + if (!parser) + return parser; + + buffer = NULL; + bufferLim = NULL; + + attsSize = INIT_ATTS_SIZE; + atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE)); + if (atts == NULL) { + FREE(parser); + return NULL; + } + dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); + if (dataBuf == NULL) { + FREE(atts); + FREE(parser); + return NULL; + } + dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; + + if (dtd) + _dtd = dtd; + else { + _dtd = dtdCreate(&parser->m_mem); + if (_dtd == NULL) { + FREE(dataBuf); + FREE(atts); + FREE(parser); + return NULL; + } + } + + freeBindingList = NULL; + freeTagList = NULL; + freeInternalEntities = NULL; + + groupSize = 0; + groupConnector = NULL; + + unknownEncodingHandler = NULL; + unknownEncodingHandlerData = NULL; + + namespaceSeparator = ASCII_EXCL; + ns = XML_FALSE; + ns_triplets = XML_FALSE; + + nsAtts = NULL; + nsAttsVersion = 0; + nsAttsPower = 0; + + poolInit(&tempPool, &(parser->m_mem)); + poolInit(&temp2Pool, &(parser->m_mem)); + parserInit(parser, encodingName); + + if (encodingName && !protocolEncodingName) { + XML_ParserFree(parser); + return NULL; + } + + if (nameSep) { + ns = XML_TRUE; + internalEncoding = XmlGetInternalEncodingNS(); + namespaceSeparator = *nameSep; + } + else { + internalEncoding = XmlGetInternalEncoding(); + } + + return parser; +} + +static void +parserInit(XML_Parser parser, const XML_Char *encodingName) +{ + processor = prologInitProcessor; + XmlPrologStateInit(&prologState); + protocolEncodingName = (encodingName != NULL + ? poolCopyString(&tempPool, encodingName) + : NULL); + curBase = NULL; + XmlInitEncoding(&initEncoding, &encoding, 0); + userData = NULL; + handlerArg = NULL; + startElementHandler = NULL; + endElementHandler = NULL; + characterDataHandler = NULL; + processingInstructionHandler = NULL; + commentHandler = NULL; + startCdataSectionHandler = NULL; + endCdataSectionHandler = NULL; + defaultHandler = NULL; + startDoctypeDeclHandler = NULL; + endDoctypeDeclHandler = NULL; + unparsedEntityDeclHandler = NULL; + notationDeclHandler = NULL; + startNamespaceDeclHandler = NULL; + endNamespaceDeclHandler = NULL; + notStandaloneHandler = NULL; + externalEntityRefHandler = NULL; + externalEntityRefHandlerArg = parser; + skippedEntityHandler = NULL; + elementDeclHandler = NULL; + attlistDeclHandler = NULL; + entityDeclHandler = NULL; + xmlDeclHandler = NULL; + bufferPtr = buffer; + bufferEnd = buffer; + parseEndByteIndex = 0; + parseEndPtr = NULL; + declElementType = NULL; + declAttributeId = NULL; + declEntity = NULL; + doctypeName = NULL; + doctypeSysid = NULL; + doctypePubid = NULL; + declAttributeType = NULL; + declNotationName = NULL; + declNotationPublicId = NULL; + declAttributeIsCdata = XML_FALSE; + declAttributeIsId = XML_FALSE; + memset(&position, 0, sizeof(POSITION)); + errorCode = XML_ERROR_NONE; + eventPtr = NULL; + eventEndPtr = NULL; + positionPtr = NULL; + openInternalEntities = NULL; + defaultExpandInternalEntities = XML_TRUE; + tagLevel = 0; + tagStack = NULL; + inheritedBindings = NULL; + nSpecifiedAtts = 0; + unknownEncodingMem = NULL; + unknownEncodingRelease = NULL; + unknownEncodingData = NULL; + parentParser = NULL; + ps_parsing = XML_INITIALIZED; +#ifdef XML_DTD + isParamEntity = XML_FALSE; + useForeignDTD = XML_FALSE; + paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif +} + +/* moves list of bindings to freeBindingList */ +static void FASTCALL +moveToFreeBindingList(XML_Parser parser, BINDING *bindings) +{ + while (bindings) { + BINDING *b = bindings; + bindings = bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + } +} + +XML_Bool XMLCALL +XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) +{ + TAG *tStk; + OPEN_INTERNAL_ENTITY *openEntityList; + if (parentParser) + return XML_FALSE; + /* move tagStack to freeTagList */ + tStk = tagStack; + while (tStk) { + TAG *tag = tStk; + tStk = tStk->parent; + tag->parent = freeTagList; + moveToFreeBindingList(parser, tag->bindings); + tag->bindings = NULL; + freeTagList = tag; + } + /* move openInternalEntities to freeInternalEntities */ + openEntityList = openInternalEntities; + while (openEntityList) { + OPEN_INTERNAL_ENTITY *openEntity = openEntityList; + openEntityList = openEntity->next; + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + moveToFreeBindingList(parser, inheritedBindings); + FREE(unknownEncodingMem); + if (unknownEncodingRelease) + unknownEncodingRelease(unknownEncodingData); + poolClear(&tempPool); + poolClear(&temp2Pool); + parserInit(parser, encodingName); + dtdReset(_dtd, &parser->m_mem); + return setContext(parser, implicitContext); +} + +enum XML_Status XMLCALL +XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) +{ + /* Block after XML_Parse()/XML_ParseBuffer() has been called. + XXX There's no way for the caller to determine which of the + XXX possible error cases caused the XML_STATUS_ERROR return. + */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return XML_STATUS_ERROR; + if (encodingName == NULL) + protocolEncodingName = NULL; + else { + protocolEncodingName = poolCopyString(&tempPool, encodingName); + if (!protocolEncodingName) + return XML_STATUS_ERROR; + } + return XML_STATUS_OK; +} + +XML_Parser XMLCALL +XML_ExternalEntityParserCreate(XML_Parser oldParser, + const XML_Char *context, + const XML_Char *encodingName) +{ + XML_Parser parser = oldParser; + DTD *newDtd = NULL; + DTD *oldDtd = _dtd; + XML_StartElementHandler oldStartElementHandler = startElementHandler; + XML_EndElementHandler oldEndElementHandler = endElementHandler; + XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; + XML_ProcessingInstructionHandler oldProcessingInstructionHandler + = processingInstructionHandler; + XML_CommentHandler oldCommentHandler = commentHandler; + XML_StartCdataSectionHandler oldStartCdataSectionHandler + = startCdataSectionHandler; + XML_EndCdataSectionHandler oldEndCdataSectionHandler + = endCdataSectionHandler; + XML_DefaultHandler oldDefaultHandler = defaultHandler; + XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler + = unparsedEntityDeclHandler; + XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; + XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler + = startNamespaceDeclHandler; + XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler + = endNamespaceDeclHandler; + XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; + XML_ExternalEntityRefHandler oldExternalEntityRefHandler + = externalEntityRefHandler; + XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler; + XML_UnknownEncodingHandler oldUnknownEncodingHandler + = unknownEncodingHandler; + XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; + XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; + XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; + XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; + ELEMENT_TYPE * oldDeclElementType = declElementType; + + void *oldUserData = userData; + void *oldHandlerArg = handlerArg; + XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities; + XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; +#ifdef XML_DTD + enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; + int oldInEntityValue = prologState.inEntityValue; +#endif + XML_Bool oldns_triplets = ns_triplets; + +#ifdef XML_DTD + if (!context) + newDtd = oldDtd; +#endif /* XML_DTD */ + + /* Note that the magical uses of the pre-processor to make field + access look more like C++ require that `parser' be overwritten + here. This makes this function more painful to follow than it + would be otherwise. + */ + if (ns) { + XML_Char tmp[2]; + *tmp = namespaceSeparator; + parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); + } + else { + parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); + } + + if (!parser) + return NULL; + + startElementHandler = oldStartElementHandler; + endElementHandler = oldEndElementHandler; + characterDataHandler = oldCharacterDataHandler; + processingInstructionHandler = oldProcessingInstructionHandler; + commentHandler = oldCommentHandler; + startCdataSectionHandler = oldStartCdataSectionHandler; + endCdataSectionHandler = oldEndCdataSectionHandler; + defaultHandler = oldDefaultHandler; + unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; + notationDeclHandler = oldNotationDeclHandler; + startNamespaceDeclHandler = oldStartNamespaceDeclHandler; + endNamespaceDeclHandler = oldEndNamespaceDeclHandler; + notStandaloneHandler = oldNotStandaloneHandler; + externalEntityRefHandler = oldExternalEntityRefHandler; + skippedEntityHandler = oldSkippedEntityHandler; + unknownEncodingHandler = oldUnknownEncodingHandler; + elementDeclHandler = oldElementDeclHandler; + attlistDeclHandler = oldAttlistDeclHandler; + entityDeclHandler = oldEntityDeclHandler; + xmlDeclHandler = oldXmlDeclHandler; + declElementType = oldDeclElementType; + userData = oldUserData; + if (oldUserData == oldHandlerArg) + handlerArg = userData; + else + handlerArg = parser; + if (oldExternalEntityRefHandlerArg != oldParser) + externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; + defaultExpandInternalEntities = oldDefaultExpandInternalEntities; + ns_triplets = oldns_triplets; + parentParser = oldParser; +#ifdef XML_DTD + paramEntityParsing = oldParamEntityParsing; + prologState.inEntityValue = oldInEntityValue; + if (context) { +#endif /* XML_DTD */ + if (!dtdCopy(_dtd, oldDtd, &parser->m_mem) + || !setContext(parser, context)) { + XML_ParserFree(parser); + return NULL; + } + processor = externalEntityInitProcessor; +#ifdef XML_DTD + } + else { + /* The DTD instance referenced by _dtd is shared between the document's + root parser and external PE parsers, therefore one does not need to + call setContext. In addition, one also *must* not call setContext, + because this would overwrite existing prefix->binding pointers in + _dtd with ones that get destroyed with the external PE parser. + This would leave those prefixes with dangling pointers. + */ + isParamEntity = XML_TRUE; + XmlPrologStateInitExternalEntity(&prologState); + processor = externalParEntInitProcessor; + } +#endif /* XML_DTD */ + return parser; +} + +static void FASTCALL +destroyBindings(BINDING *bindings, XML_Parser parser) +{ + for (;;) { + BINDING *b = bindings; + if (!b) + break; + bindings = b->nextTagBinding; + FREE(b->uri); + FREE(b); + } +} + +void XMLCALL +XML_ParserFree(XML_Parser parser) +{ + TAG *tagList; + OPEN_INTERNAL_ENTITY *entityList; + if (parser == NULL) + return; + /* free tagStack and freeTagList */ + tagList = tagStack; + for (;;) { + TAG *p; + if (tagList == NULL) { + if (freeTagList == NULL) + break; + tagList = freeTagList; + freeTagList = NULL; + } + p = tagList; + tagList = tagList->parent; + FREE(p->buf); + destroyBindings(p->bindings, parser); + FREE(p); + } + /* free openInternalEntities and freeInternalEntities */ + entityList = openInternalEntities; + for (;;) { + OPEN_INTERNAL_ENTITY *openEntity; + if (entityList == NULL) { + if (freeInternalEntities == NULL) + break; + entityList = freeInternalEntities; + freeInternalEntities = NULL; + } + openEntity = entityList; + entityList = entityList->next; + FREE(openEntity); + } + + destroyBindings(freeBindingList, parser); + destroyBindings(inheritedBindings, parser); + poolDestroy(&tempPool); + poolDestroy(&temp2Pool); +#ifdef XML_DTD + /* external parameter entity parsers share the DTD structure + parser->m_dtd with the root parser, so we must not destroy it + */ + if (!isParamEntity && _dtd) +#else + if (_dtd) +#endif /* XML_DTD */ + dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem); + FREE((void *)atts); + FREE(groupConnector); + FREE(buffer); + FREE(dataBuf); + FREE(nsAtts); + FREE(unknownEncodingMem); + if (unknownEncodingRelease) + unknownEncodingRelease(unknownEncodingData); + FREE(parser); +} + +void XMLCALL +XML_UseParserAsHandlerArg(XML_Parser parser) +{ + handlerArg = parser; +} + +enum XML_Error XMLCALL +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) +{ +#ifdef XML_DTD + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; + useForeignDTD = useDTD; + return XML_ERROR_NONE; +#else + return XML_ERROR_FEATURE_REQUIRES_XML_DTD; +#endif +} + +void XMLCALL +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return; + ns_triplets = do_nst ? XML_TRUE : XML_FALSE; +} + +void XMLCALL +XML_SetUserData(XML_Parser parser, void *p) +{ + if (handlerArg == userData) + handlerArg = userData = p; + else + userData = p; +} + +enum XML_Status XMLCALL +XML_SetBase(XML_Parser parser, const XML_Char *p) +{ + if (p) { + p = poolCopyString(&_dtd->pool, p); + if (!p) + return XML_STATUS_ERROR; + curBase = p; + } + else + curBase = NULL; + return XML_STATUS_OK; +} + +const XML_Char * XMLCALL +XML_GetBase(XML_Parser parser) +{ + return curBase; +} + +int XMLCALL +XML_GetSpecifiedAttributeCount(XML_Parser parser) +{ + return nSpecifiedAtts; +} + +int XMLCALL +XML_GetIdAttributeIndex(XML_Parser parser) +{ + return idAttIndex; +} + +void XMLCALL +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end) +{ + startElementHandler = start; + endElementHandler = end; +} + +void XMLCALL +XML_SetStartElementHandler(XML_Parser parser, + XML_StartElementHandler start) { + startElementHandler = start; +} + +void XMLCALL +XML_SetEndElementHandler(XML_Parser parser, + XML_EndElementHandler end) { + endElementHandler = end; +} + +void XMLCALL +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler) +{ + characterDataHandler = handler; +} + +void XMLCALL +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler) +{ + processingInstructionHandler = handler; +} + +void XMLCALL +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler) +{ + commentHandler = handler; +} + +void XMLCALL +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end) +{ + startCdataSectionHandler = start; + endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start) { + startCdataSectionHandler = start; +} + +void XMLCALL +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end) { + endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler) +{ + defaultHandler = handler; + defaultExpandInternalEntities = XML_FALSE; +} + +void XMLCALL +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler) +{ + defaultHandler = handler; + defaultExpandInternalEntities = XML_TRUE; +} + +void XMLCALL +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end) +{ + startDoctypeDeclHandler = start; + endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start) { + startDoctypeDeclHandler = start; +} + +void XMLCALL +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end) { + endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler) +{ + unparsedEntityDeclHandler = handler; +} + +void XMLCALL +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler) +{ + notationDeclHandler = handler; +} + +void XMLCALL +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end) +{ + startNamespaceDeclHandler = start; + endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start) { + startNamespaceDeclHandler = start; +} + +void XMLCALL +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end) { + endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler) +{ + notStandaloneHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler) +{ + externalEntityRefHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) +{ + if (arg) + externalEntityRefHandlerArg = (XML_Parser)arg; + else + externalEntityRefHandlerArg = parser; +} + +void XMLCALL +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler) +{ + skippedEntityHandler = handler; +} + +void XMLCALL +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *data) +{ + unknownEncodingHandler = handler; + unknownEncodingHandlerData = data; +} + +void XMLCALL +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl) +{ + elementDeclHandler = eldecl; +} + +void XMLCALL +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl) +{ + attlistDeclHandler = attdecl; +} + +void XMLCALL +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler) +{ + entityDeclHandler = handler; +} + +void XMLCALL +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler handler) { + xmlDeclHandler = handler; +} + +int XMLCALL +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing peParsing) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return 0; +#ifdef XML_DTD + paramEntityParsing = peParsing; + return 1; +#else + return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; +#endif +} + +enum XML_Status XMLCALL +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) +{ + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + default: + ps_parsing = XML_PARSING; + } + + if (len == 0) { + ps_finalBuffer = (XML_Bool)isFinal; + if (!isFinal) + return XML_STATUS_OK; + positionPtr = bufferPtr; + parseEndPtr = bufferEnd; + + /* If data are left over from last buffer, and we now know that these + data are the final chunk of input, then we have to check them again + to detect errors based on that fact. + */ + errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + + if (errorCode == XML_ERROR_NONE) { + switch (ps_parsing) { + case XML_SUSPENDED: + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return XML_STATUS_SUSPENDED; + case XML_INITIALIZED: + case XML_PARSING: + ps_parsing = XML_FINISHED; + /* fall through */ + default: + return XML_STATUS_OK; + } + } + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } +#ifndef XML_CONTEXT_BYTES + else if (bufferPtr == bufferEnd) { + const char *end; + int nLeftOver; + enum XML_Error result; + parseEndByteIndex += len; + positionPtr = s; + ps_finalBuffer = (XML_Bool)isFinal; + + errorCode = processor(parser, s, parseEndPtr = s + len, &end); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + result = XML_STATUS_OK; + if (isFinal) { + ps_parsing = XML_FINISHED; + return result; + } + } + } + + XmlUpdatePosition(encoding, positionPtr, end, &position); + nLeftOver = s + len - end; + if (nLeftOver) { + if (buffer == NULL || nLeftOver > bufferLim - buffer) { + /* FIXME avoid integer overflow */ + char *temp; + temp = (buffer == NULL + ? (char *)MALLOC(len * 2) + : (char *)REALLOC(buffer, len * 2)); + if (temp == NULL) { + errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + buffer = temp; + if (!buffer) { + errorCode = XML_ERROR_NO_MEMORY; + eventPtr = eventEndPtr = NULL; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + bufferLim = buffer + len * 2; + } + memcpy(buffer, end, nLeftOver); + } + bufferPtr = buffer; + bufferEnd = buffer + nLeftOver; + positionPtr = bufferPtr; + parseEndPtr = bufferEnd; + eventPtr = bufferPtr; + eventEndPtr = bufferPtr; + return result; + } +#endif /* not defined XML_CONTEXT_BYTES */ + else { + void *buff = XML_GetBuffer(parser, len); + if (buff == NULL) + return XML_STATUS_ERROR; + else { + memcpy(buff, s, len); + return XML_ParseBuffer(parser, len, isFinal); + } + } +} + +enum XML_Status XMLCALL +XML_ParseBuffer(XML_Parser parser, int len, int isFinal) +{ + const char *start; + enum XML_Status result = XML_STATUS_OK; + + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + default: + ps_parsing = XML_PARSING; + } + + start = bufferPtr; + positionPtr = start; + bufferEnd += len; + parseEndPtr = bufferEnd; + parseEndByteIndex += len; + ps_finalBuffer = (XML_Bool)isFinal; + + errorCode = processor(parser, start, parseEndPtr, &bufferPtr); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (isFinal) { + ps_parsing = XML_FINISHED; + return result; + } + default: ; /* should not happen */ + } + } + + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return result; +} + +void * XMLCALL +XML_GetBuffer(XML_Parser parser, int len) +{ + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return NULL; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return NULL; + default: ; + } + + if (len > bufferLim - bufferEnd) { + /* FIXME avoid integer overflow */ + int neededSize = len + (int)(bufferEnd - bufferPtr); +#ifdef XML_CONTEXT_BYTES + int keep = (int)(bufferPtr - buffer); + + if (keep > XML_CONTEXT_BYTES) + keep = XML_CONTEXT_BYTES; + neededSize += keep; +#endif /* defined XML_CONTEXT_BYTES */ + if (neededSize <= bufferLim - buffer) { +#ifdef XML_CONTEXT_BYTES + if (keep < bufferPtr - buffer) { + int offset = (int)(bufferPtr - buffer) - keep; + memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); + bufferEnd -= offset; + bufferPtr -= offset; + } +#else + memmove(buffer, bufferPtr, bufferEnd - bufferPtr); + bufferEnd = buffer + (bufferEnd - bufferPtr); + bufferPtr = buffer; +#endif /* not defined XML_CONTEXT_BYTES */ + } + else { + char *newBuf; + int bufferSize = (int)(bufferLim - bufferPtr); + if (bufferSize == 0) + bufferSize = INIT_BUFFER_SIZE; + do { + bufferSize *= 2; + } while (bufferSize < neededSize); + newBuf = (char *)MALLOC(bufferSize); + if (newBuf == 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + bufferLim = newBuf + bufferSize; +#ifdef XML_CONTEXT_BYTES + if (bufferPtr) { + int keep = (int)(bufferPtr - buffer); + if (keep > XML_CONTEXT_BYTES) + keep = XML_CONTEXT_BYTES; + memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); + FREE(buffer); + buffer = newBuf; + bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; + bufferPtr = buffer + keep; + } + else { + bufferEnd = newBuf + (bufferEnd - bufferPtr); + bufferPtr = buffer = newBuf; + } +#else + if (bufferPtr) { + memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); + FREE(buffer); + } + bufferEnd = newBuf + (bufferEnd - bufferPtr); + bufferPtr = buffer = newBuf; +#endif /* not defined XML_CONTEXT_BYTES */ + } + } + return bufferEnd; +} + +enum XML_Status XMLCALL +XML_StopParser(XML_Parser parser, XML_Bool resumable) +{ + switch (ps_parsing) { + case XML_SUSPENDED: + if (resumable) { + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + } + ps_parsing = XML_FINISHED; + break; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + default: + if (resumable) { +#ifdef XML_DTD + if (isParamEntity) { + errorCode = XML_ERROR_SUSPEND_PE; + return XML_STATUS_ERROR; + } +#endif + ps_parsing = XML_SUSPENDED; + } + else + ps_parsing = XML_FINISHED; + } + return XML_STATUS_OK; +} + +enum XML_Status XMLCALL +XML_ResumeParser(XML_Parser parser) +{ + enum XML_Status result = XML_STATUS_OK; + + if (ps_parsing != XML_SUSPENDED) { + errorCode = XML_ERROR_NOT_SUSPENDED; + return XML_STATUS_ERROR; + } + ps_parsing = XML_PARSING; + + errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (ps_finalBuffer) { + ps_parsing = XML_FINISHED; + return result; + } + default: ; + } + } + + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return result; +} + +void XMLCALL +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) +{ + assert(status != NULL); + *status = parser->m_parsingStatus; +} + +enum XML_Error XMLCALL +XML_GetErrorCode(XML_Parser parser) +{ + return errorCode; +} + +XML_Index XMLCALL +XML_GetCurrentByteIndex(XML_Parser parser) +{ + if (eventPtr) + return parseEndByteIndex - (parseEndPtr - eventPtr); + return -1; +} + +int XMLCALL +XML_GetCurrentByteCount(XML_Parser parser) +{ + if (eventEndPtr && eventPtr) + return (int)(eventEndPtr - eventPtr); + return 0; +} + +const char * XMLCALL +XML_GetInputContext(XML_Parser parser, int *offset, int *size) +{ +#ifdef XML_CONTEXT_BYTES + if (eventPtr && buffer) { + *offset = (int)(eventPtr - buffer); + *size = (int)(bufferEnd - buffer); + return buffer; + } +#endif /* defined XML_CONTEXT_BYTES */ + return (char *) 0; +} + +XML_Size XMLCALL +XML_GetCurrentLineNumber(XML_Parser parser) +{ + if (eventPtr && eventPtr >= positionPtr) { + XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); + positionPtr = eventPtr; + } + return position.lineNumber + 1; +} + +XML_Size XMLCALL +XML_GetCurrentColumnNumber(XML_Parser parser) +{ + if (eventPtr && eventPtr >= positionPtr) { + XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); + positionPtr = eventPtr; + } + return position.columnNumber; +} + +void XMLCALL +XML_FreeContentModel(XML_Parser parser, XML_Content *model) +{ + FREE(model); +} + +void * XMLCALL +XML_MemMalloc(XML_Parser parser, size_t size) +{ + return MALLOC(size); +} + +void * XMLCALL +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) +{ + return REALLOC(ptr, size); +} + +void XMLCALL +XML_MemFree(XML_Parser parser, void *ptr) +{ + FREE(ptr); +} + +void XMLCALL +XML_DefaultCurrent(XML_Parser parser) +{ + if (defaultHandler) { + if (openInternalEntities) + reportDefault(parser, + internalEncoding, + openInternalEntities->internalEventPtr, + openInternalEntities->internalEventEndPtr); + else + reportDefault(parser, encoding, eventPtr, eventEndPtr); + } +} + +const XML_LChar * XMLCALL +XML_ErrorString(enum XML_Error code) +{ + static const XML_LChar* const message[] = { + 0, + XML_L("out of memory"), + XML_L("syntax error"), + XML_L("no element found"), + XML_L("not well-formed (invalid token)"), + XML_L("unclosed token"), + XML_L("partial character"), + XML_L("mismatched tag"), + XML_L("duplicate attribute"), + XML_L("junk after document element"), + XML_L("illegal parameter entity reference"), + XML_L("undefined entity"), + XML_L("recursive entity reference"), + XML_L("asynchronous entity"), + XML_L("reference to invalid character number"), + XML_L("reference to binary entity"), + XML_L("reference to external entity in attribute"), + XML_L("XML or text declaration not at start of entity"), + XML_L("unknown encoding"), + XML_L("encoding specified in XML declaration is incorrect"), + XML_L("unclosed CDATA section"), + XML_L("error in processing external entity reference"), + XML_L("document is not standalone"), + XML_L("unexpected parser state - please send a bug report"), + XML_L("entity declared in parameter entity"), + XML_L("requested feature requires XML_DTD support in Expat"), + XML_L("cannot change setting once parsing has begun"), + XML_L("unbound prefix"), + XML_L("must not undeclare prefix"), + XML_L("incomplete markup in parameter entity"), + XML_L("XML declaration not well-formed"), + XML_L("text declaration not well-formed"), + XML_L("illegal character(s) in public id"), + XML_L("parser suspended"), + XML_L("parser not suspended"), + XML_L("parsing aborted"), + XML_L("parsing finished"), + XML_L("cannot suspend in external parameter entity"), + XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"), + XML_L("reserved prefix (xmlns) must not be declared or undeclared"), + XML_L("prefix must not be bound to one of the reserved namespace names") + }; + if (code > 0 && code < sizeof(message)/sizeof(message[0])) + return message[code]; + return NULL; +} + +const XML_LChar * XMLCALL +XML_ExpatVersion(void) { + + /* V1 is used to string-ize the version number. However, it would + string-ize the actual version macro *names* unless we get them + substituted before being passed to V1. CPP is defined to expand + a macro, then rescan for more expansions. Thus, we use V2 to expand + the version macros, then CPP will expand the resulting V1() macro + with the correct numerals. */ + /* ### I'm assuming cpp is portable in this respect... */ + +#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c) +#define V2(a,b,c) XML_L("expat_")V1(a,b,c) + + return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); + +#undef V1 +#undef V2 +} + +XML_Expat_Version XMLCALL +XML_ExpatVersionInfo(void) +{ + XML_Expat_Version version; + + version.major = XML_MAJOR_VERSION; + version.minor = XML_MINOR_VERSION; + version.micro = XML_MICRO_VERSION; + + return version; +} + +const XML_Feature * XMLCALL +XML_GetFeatureList(void) +{ + static const XML_Feature features[] = { + {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), + sizeof(XML_Char)}, + {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), + sizeof(XML_LChar)}, +#ifdef XML_UNICODE + {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, +#endif +#ifdef XML_UNICODE_WCHAR_T + {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, +#endif +#ifdef XML_DTD + {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, +#endif +#ifdef XML_CONTEXT_BYTES + {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), + XML_CONTEXT_BYTES}, +#endif +#ifdef XML_MIN_SIZE + {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, +#endif +#ifdef XML_NS + {XML_FEATURE_NS, XML_L("XML_NS"), 0}, +#endif +#ifdef XML_LARGE_SIZE + {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, +#endif + {XML_FEATURE_END, NULL, 0} + }; + + return features; +} + +/* Initially tag->rawName always points into the parse buffer; + for those TAG instances opened while the current parse buffer was + processed, and not yet closed, we need to store tag->rawName in a more + permanent location, since the parse buffer is about to be discarded. +*/ +static XML_Bool +storeRawNames(XML_Parser parser) +{ + TAG *tag = tagStack; + while (tag) { + int bufSize; + int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); + char *rawNameBuf = tag->buf + nameLen; + /* Stop if already stored. Since tagStack is a stack, we can stop + at the first entry that has already been copied; everything + below it in the stack is already been accounted for in a + previous call to this function. + */ + if (tag->rawName == rawNameBuf) + break; + /* For re-use purposes we need to ensure that the + size of tag->buf is a multiple of sizeof(XML_Char). + */ + bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); + if (bufSize > tag->bufEnd - tag->buf) { + char *temp = (char *)REALLOC(tag->buf, bufSize); + if (temp == NULL) + return XML_FALSE; + /* if tag->name.str points to tag->buf (only when namespace + processing is off) then we have to update it + */ + if (tag->name.str == (XML_Char *)tag->buf) + tag->name.str = (XML_Char *)temp; + /* if tag->name.localPart is set (when namespace processing is on) + then update it as well, since it will always point into tag->buf + */ + if (tag->name.localPart) + tag->name.localPart = (XML_Char *)temp + (tag->name.localPart - + (XML_Char *)tag->buf); + tag->buf = temp; + tag->bufEnd = temp + bufSize; + rawNameBuf = temp + nameLen; + } + memcpy(rawNameBuf, tag->rawName, tag->rawNameLength); + tag->rawName = rawNameBuf; + tag = tag->parent; + } + return XML_TRUE; +} + +static enum XML_Error PTRCALL +contentProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doContent(parser, 0, encoding, start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result == XML_ERROR_NONE) { + if (!storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + processor = externalEntityInitProcessor2; + return externalEntityInitProcessor2(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor2(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(encoding, start, end, &next); + switch (tok) { + case XML_TOK_BOM: + /* If we are at the end of the buffer, this would cause the next stage, + i.e. externalEntityInitProcessor3, to pass control directly to + doContent (by detecting XML_TOK_NONE) without processing any xml text + declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. + */ + if (next == end && !ps_finalBuffer) { + *endPtr = next; + return XML_ERROR_NONE; + } + start = next; + break; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + eventPtr = start; + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + eventPtr = start; + return XML_ERROR_PARTIAL_CHAR; + } + processor = externalEntityInitProcessor3; + return externalEntityInitProcessor3(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor3(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + int tok; + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + eventPtr = start; + tok = XmlContentTok(encoding, start, end, &next); + eventEndPtr = next; + + switch (tok) { + case XML_TOK_XML_DECL: + { + enum XML_Error result; + result = processXmlDecl(parser, 1, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (ps_parsing) { + case XML_SUSPENDED: + *endPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + start = next; + } + } + break; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + } + processor = externalEntityContentProcessor; + tagLevel = 1; + return externalEntityContentProcessor(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityContentProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doContent(parser, 1, encoding, start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result == XML_ERROR_NONE) { + if (!storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error +doContent(XML_Parser parser, + int startTagLevel, + const ENCODING *enc, + const char *s, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + /* save one level of indirection */ + DTD * const dtd = _dtd; + + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + + for (;;) { + const char *next = s; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_TRAILING_CR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + *eventEndPP = end; + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) + return XML_ERROR_NO_ELEMENTS; + if (tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (startTagLevel > 0) { + if (tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_NO_ELEMENTS; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_ENTITY_REF: + { + const XML_Char *name; + ENTITY *entity; + XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (ch) { + if (characterDataHandler) + characterDataHandler(handlerArg, &ch, 1); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + name = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0); + poolDiscard(&dtd->pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity or default handler. + */ + if (!dtd->hasParamEntityRefs || dtd->standalone) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->notation) + return XML_ERROR_BINARY_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + if (!defaultExpandInternalEntities) { + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, entity->name, 0); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + result = processInternalEntity(parser, entity, XML_FALSE); + if (result != XML_ERROR_NONE) + return result; + } + else if (externalEntityRefHandler) { + const XML_Char *context; + entity->open = XML_TRUE; + context = getContext(parser); + entity->open = XML_FALSE; + if (!context) + return XML_ERROR_NO_MEMORY; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + context, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + poolDiscard(&tempPool); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + case XML_TOK_START_TAG_NO_ATTS: + /* fall through */ + case XML_TOK_START_TAG_WITH_ATTS: + { + TAG *tag; + enum XML_Error result; + XML_Char *toPtr; + if (freeTagList) { + tag = freeTagList; + freeTagList = freeTagList->parent; + } + else { + tag = (TAG *)MALLOC(sizeof(TAG)); + if (!tag) + return XML_ERROR_NO_MEMORY; + tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE); + if (!tag->buf) { + FREE(tag); + return XML_ERROR_NO_MEMORY; + } + tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; + } + tag->bindings = NULL; + tag->parent = tagStack; + tagStack = tag; + tag->name.localPart = NULL; + tag->name.prefix = NULL; + tag->rawName = s + enc->minBytesPerChar; + tag->rawNameLength = XmlNameLength(enc, tag->rawName); + ++tagLevel; + { + const char *rawNameEnd = tag->rawName + tag->rawNameLength; + const char *fromPtr = tag->rawName; + toPtr = (XML_Char *)tag->buf; + for (;;) { + int bufSize; + int convLen; + XmlConvert(enc, + &fromPtr, rawNameEnd, + (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); + convLen = (int)(toPtr - (XML_Char *)tag->buf); + if (fromPtr == rawNameEnd) { + tag->name.strLen = convLen; + break; + } + bufSize = (int)(tag->bufEnd - tag->buf) << 1; + { + char *temp = (char *)REALLOC(tag->buf, bufSize); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + tag->buf = temp; + tag->bufEnd = temp + bufSize; + toPtr = (XML_Char *)temp + convLen; + } + } + } + tag->name.str = (XML_Char *)tag->buf; + *toPtr = XML_T('\0'); + result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); + if (result) + return result; + if (startElementHandler) + startElementHandler(handlerArg, tag->name.str, + (const XML_Char **)atts); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&tempPool); + break; + } + case XML_TOK_EMPTY_ELEMENT_NO_ATTS: + /* fall through */ + case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: + { + const char *rawName = s + enc->minBytesPerChar; + enum XML_Error result; + BINDING *bindings = NULL; + XML_Bool noElmHandlers = XML_TRUE; + TAG_NAME name; + name.str = poolStoreString(&tempPool, enc, rawName, + rawName + XmlNameLength(enc, rawName)); + if (!name.str) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + result = storeAtts(parser, enc, s, &name, &bindings); + if (result) + return result; + poolFinish(&tempPool); + if (startElementHandler) { + startElementHandler(handlerArg, name.str, (const XML_Char **)atts); + noElmHandlers = XML_FALSE; + } + if (endElementHandler) { + if (startElementHandler) + *eventPP = *eventEndPP; + endElementHandler(handlerArg, name.str); + noElmHandlers = XML_FALSE; + } + if (noElmHandlers && defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&tempPool); + while (bindings) { + BINDING *b = bindings; + if (endNamespaceDeclHandler) + endNamespaceDeclHandler(handlerArg, b->prefix->name); + bindings = bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } + } + if (tagLevel == 0) + return epilogProcessor(parser, next, end, nextPtr); + break; + case XML_TOK_END_TAG: + if (tagLevel == startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + else { + int len; + const char *rawName; + TAG *tag = tagStack; + tagStack = tag->parent; + tag->parent = freeTagList; + freeTagList = tag; + rawName = s + enc->minBytesPerChar*2; + len = XmlNameLength(enc, rawName); + if (len != tag->rawNameLength + || memcmp(tag->rawName, rawName, len) != 0) { + *eventPP = rawName; + return XML_ERROR_TAG_MISMATCH; + } + --tagLevel; + if (endElementHandler) { + const XML_Char *localPart; + const XML_Char *prefix; + XML_Char *uri; + localPart = tag->name.localPart; + if (ns && localPart) { + /* localPart and prefix may have been overwritten in + tag->name.str, since this points to the binding->uri + buffer which gets re-used; so we have to add them again + */ + uri = (XML_Char *)tag->name.str + tag->name.uriLen; + /* don't need to check for space - already done in storeAtts() */ + while (*localPart) *uri++ = *localPart++; + prefix = (XML_Char *)tag->name.prefix; + if (ns_triplets && prefix) { + *uri++ = namespaceSeparator; + while (*prefix) *uri++ = *prefix++; + } + *uri = XML_T('\0'); + } + endElementHandler(handlerArg, tag->name.str); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + while (tag->bindings) { + BINDING *b = tag->bindings; + if (endNamespaceDeclHandler) + endNamespaceDeclHandler(handlerArg, b->prefix->name); + tag->bindings = tag->bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } + if (tagLevel == 0) + return epilogProcessor(parser, next, end, nextPtr); + } + break; + case XML_TOK_CHAR_REF: + { + int n = XmlCharRefNumber(enc, s); + if (n < 0) + return XML_ERROR_BAD_CHAR_REF; + if (characterDataHandler) { + XML_Char buf[XML_ENCODE_MAX]; + characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + case XML_TOK_DATA_NEWLINE: + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_CDATA_SECT_OPEN: + { + enum XML_Error result; + if (startCdataSectionHandler) + startCdataSectionHandler(handlerArg); +#if 0 + /* Suppose you doing a transformation on a document that involves + changing only the character data. You set up a defaultHandler + and a characterDataHandler. The defaultHandler simply copies + characters through. The characterDataHandler does the + transformation and writes the characters out escaping them as + necessary. This case will fail to work if we leave out the + following two lines (because & and < inside CDATA sections will + be incorrectly escaped). + + However, now we have a start/endCdataSectionHandler, so it seems + easier to let the user deal with this. + */ + else if (characterDataHandler) + characterDataHandler(handlerArg, dataBuf, 0); +#endif + else if (defaultHandler) + reportDefault(parser, enc, s, next); + result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (!next) { + processor = cdataSectionProcessor; + return result; + } + } + break; + case XML_TOK_TRAILING_RSQB: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (characterDataHandler) { + if (MUST_CONVERT(enc, s)) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + characterDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + } + else + characterDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)end - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) { + *eventPP = end; + return XML_ERROR_NO_ELEMENTS; + } + if (tagLevel != startTagLevel) { + *eventPP = end; + return XML_ERROR_ASYNC_ENTITY; + } + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_DATA_CHARS: + { + XML_CharacterDataHandler charDataHandler = characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + if (s == next) + break; + *eventPP = s; + } + } + else + charDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_PI: + if (!reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (!reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + default: + if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + *eventPP = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } + /* not reached */ +} + +/* Precondition: all arguments must be non-NULL; + Purpose: + - normalize attributes + - check attributes for well-formedness + - generate namespace aware attribute names (URI, prefix) + - build list of attributes for startElementHandler + - default attributes + - process namespace declarations (check and report them) + - generate namespace aware element name (URI, prefix) +*/ +static enum XML_Error +storeAtts(XML_Parser parser, const ENCODING *enc, + const char *attStr, TAG_NAME *tagNamePtr, + BINDING **bindingsPtr) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + ELEMENT_TYPE *elementType; + int nDefaultAtts; + const XML_Char **appAtts; /* the attribute list for the application */ + int attIndex = 0; + int prefixLen; + int i; + int n; + XML_Char *uri; + int nPrefixes = 0; + BINDING *binding; + const XML_Char *localPart; + + /* lookup the element type name */ + elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, tagNamePtr->str,0); + if (!elementType) { + const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); + if (!name) + return XML_ERROR_NO_MEMORY; + elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, name, + sizeof(ELEMENT_TYPE)); + if (!elementType) + return XML_ERROR_NO_MEMORY; + if (ns && !setElementTypePrefix(parser, elementType)) + return XML_ERROR_NO_MEMORY; + } + nDefaultAtts = elementType->nDefaultAtts; + + /* get the attributes from the tokenizer */ + n = XmlGetAttributes(enc, attStr, attsSize, atts); + if (n + nDefaultAtts > attsSize) { + int oldAttsSize = attsSize; + ATTRIBUTE *temp; + attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; + temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + atts = temp; + if (n > oldAttsSize) + XmlGetAttributes(enc, attStr, n, atts); + } + + appAtts = (const XML_Char **)atts; + for (i = 0; i < n; i++) { + /* add the name and value to the attribute list */ + ATTRIBUTE_ID *attId = getAttributeId(parser, enc, atts[i].name, + atts[i].name + + XmlNameLength(enc, atts[i].name)); + if (!attId) + return XML_ERROR_NO_MEMORY; + /* Detect duplicate attributes by their QNames. This does not work when + namespace processing is turned on and different prefixes for the same + namespace are used. For this case we have a check further down. + */ + if ((attId->name)[-1]) { + if (enc == encoding) + eventPtr = atts[i].name; + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + (attId->name)[-1] = 1; + appAtts[attIndex++] = attId->name; + if (!atts[i].normalized) { + enum XML_Error result; + XML_Bool isCdata = XML_TRUE; + + /* figure out whether declared as other than CDATA */ + if (attId->maybeTokenized) { + int j; + for (j = 0; j < nDefaultAtts; j++) { + if (attId == elementType->defaultAtts[j].id) { + isCdata = elementType->defaultAtts[j].isCdata; + break; + } + } + } + + /* normalize the attribute value */ + result = storeAttributeValue(parser, enc, isCdata, + atts[i].valuePtr, atts[i].valueEnd, + &tempPool); + if (result) + return result; + appAtts[attIndex] = poolStart(&tempPool); + poolFinish(&tempPool); + } + else { + /* the value did not need normalizing */ + appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, + atts[i].valueEnd); + if (appAtts[attIndex] == 0) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + } + /* handle prefixed attribute names */ + if (attId->prefix) { + if (attId->xmlns) { + /* deal with namespace declarations here */ + enum XML_Error result = addBinding(parser, attId->prefix, attId, + appAtts[attIndex], bindingsPtr); + if (result) + return result; + --attIndex; + } + else { + /* deal with other prefixed names later */ + attIndex++; + nPrefixes++; + (attId->name)[-1] = 2; + } + } + else + attIndex++; + } + + /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ + nSpecifiedAtts = attIndex; + if (elementType->idAtt && (elementType->idAtt->name)[-1]) { + for (i = 0; i < attIndex; i += 2) + if (appAtts[i] == elementType->idAtt->name) { + idAttIndex = i; + break; + } + } + else + idAttIndex = -1; + + /* do attribute defaulting */ + for (i = 0; i < nDefaultAtts; i++) { + const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; + if (!(da->id->name)[-1] && da->value) { + if (da->id->prefix) { + if (da->id->xmlns) { + enum XML_Error result = addBinding(parser, da->id->prefix, da->id, + da->value, bindingsPtr); + if (result) + return result; + } + else { + (da->id->name)[-1] = 2; + nPrefixes++; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } + else { + (da->id->name)[-1] = 1; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } + } + appAtts[attIndex] = 0; + + /* expand prefixed attribute names, check for duplicates, + and clear flags that say whether attributes were specified */ + i = 0; + if (nPrefixes) { + int j; /* hash table index */ + unsigned long version = nsAttsVersion; + int nsAttsSize = (int)1 << nsAttsPower; + /* size of hash table must be at least 2 * (# of prefixed attributes) */ + if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */ + NS_ATT *temp; + /* hash table size must also be a power of 2 and >= 8 */ + while (nPrefixes >> nsAttsPower++); + if (nsAttsPower < 3) + nsAttsPower = 3; + nsAttsSize = (int)1 << nsAttsPower; + temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT)); + if (!temp) + return XML_ERROR_NO_MEMORY; + nsAtts = temp; + version = 0; /* force re-initialization of nsAtts hash table */ + } + /* using a version flag saves us from initializing nsAtts every time */ + if (!version) { /* initialize version flags when version wraps around */ + version = INIT_ATTS_VERSION; + for (j = nsAttsSize; j != 0; ) + nsAtts[--j].version = version; + } + nsAttsVersion = --version; + + /* expand prefixed names and check for duplicates */ + for (; i < attIndex; i += 2) { + const XML_Char *s = appAtts[i]; + if (s[-1] == 2) { /* prefixed */ + ATTRIBUTE_ID *id; + const BINDING *b; + unsigned long uriHash = 0; + ((XML_Char *)s)[-1] = 0; /* clear flag */ + id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, s, 0); + b = id->prefix->binding; + if (!b) + return XML_ERROR_UNBOUND_PREFIX; + + /* as we expand the name we also calculate its hash value */ + for (j = 0; j < b->uriLen; j++) { + const XML_Char c = b->uri[j]; + if (!poolAppendChar(&tempPool, c)) + return XML_ERROR_NO_MEMORY; + uriHash = CHAR_HASH(uriHash, c); + } + while (*s++ != XML_T(ASCII_COLON)) + ; + do { /* copies null terminator */ + const XML_Char c = *s; + if (!poolAppendChar(&tempPool, *s)) + return XML_ERROR_NO_MEMORY; + uriHash = CHAR_HASH(uriHash, c); + } while (*s++); + + { /* Check hash table for duplicate of expanded name (uriName). + Derived from code in lookup(HASH_TABLE *table, ...). + */ + unsigned char step = 0; + unsigned long mask = nsAttsSize - 1; + j = uriHash & mask; /* index into hash table */ + while (nsAtts[j].version == version) { + /* for speed we compare stored hash values first */ + if (uriHash == nsAtts[j].hash) { + const XML_Char *s1 = poolStart(&tempPool); + const XML_Char *s2 = nsAtts[j].uriName; + /* s1 is null terminated, but not s2 */ + for (; *s1 == *s2 && *s1 != 0; s1++, s2++); + if (*s1 == 0) + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + if (!step) + step = PROBE_STEP(uriHash, mask, nsAttsPower); + j < step ? (j += nsAttsSize - step) : (j -= step); + } + } + + if (ns_triplets) { /* append namespace separator and prefix */ + tempPool.ptr[-1] = namespaceSeparator; + s = b->prefix->name; + do { + if (!poolAppendChar(&tempPool, *s)) + return XML_ERROR_NO_MEMORY; + } while (*s++); + } + + /* store expanded name in attribute list */ + s = poolStart(&tempPool); + poolFinish(&tempPool); + appAtts[i] = s; + + /* fill empty slot with new version, uriName and hash value */ + nsAtts[j].version = version; + nsAtts[j].hash = uriHash; + nsAtts[j].uriName = s; + + if (!--nPrefixes) { + i += 2; + break; + } + } + else /* not prefixed */ + ((XML_Char *)s)[-1] = 0; /* clear flag */ + } + } + /* clear flags for the remaining attributes */ + for (; i < attIndex; i += 2) + ((XML_Char *)(appAtts[i]))[-1] = 0; + for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) + binding->attId->name[-1] = 0; + + if (!ns) + return XML_ERROR_NONE; + + /* expand the element type name */ + if (elementType->prefix) { + binding = elementType->prefix->binding; + if (!binding) + return XML_ERROR_UNBOUND_PREFIX; + localPart = tagNamePtr->str; + while (*localPart++ != XML_T(ASCII_COLON)) + ; + } + else if (dtd->defaultPrefix.binding) { + binding = dtd->defaultPrefix.binding; + localPart = tagNamePtr->str; + } + else + return XML_ERROR_NONE; + prefixLen = 0; + if (ns_triplets && binding->prefix->name) { + for (; binding->prefix->name[prefixLen++];) + ; /* prefixLen includes null terminator */ + } + tagNamePtr->localPart = localPart; + tagNamePtr->uriLen = binding->uriLen; + tagNamePtr->prefix = binding->prefix->name; + tagNamePtr->prefixLen = prefixLen; + for (i = 0; localPart[i++];) + ; /* i includes null terminator */ + n = i + binding->uriLen + prefixLen; + if (n > binding->uriAlloc) { + TAG *p; + uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); + if (!uri) + return XML_ERROR_NO_MEMORY; + binding->uriAlloc = n + EXPAND_SPARE; + memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); + for (p = tagStack; p; p = p->parent) + if (p->name.str == binding->uri) + p->name.str = uri; + FREE(binding->uri); + binding->uri = uri; + } + /* if namespaceSeparator != '\0' then uri includes it already */ + uri = binding->uri + binding->uriLen; + memcpy(uri, localPart, i * sizeof(XML_Char)); + /* we always have a namespace separator between localPart and prefix */ + if (prefixLen) { + uri += i - 1; + *uri = namespaceSeparator; /* replace null terminator */ + memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); + } + tagNamePtr->str = binding->uri; + return XML_ERROR_NONE; +} + +/* addBinding() overwrites the value of prefix->binding without checking. + Therefore one must keep track of the old value outside of addBinding(). +*/ +static enum XML_Error +addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr) +{ + static const XML_Char xmlNamespace[] = { + ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, + ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, + ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, + ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, + ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, + ASCII_e, '\0' + }; + static const int xmlLen = + (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1; + static const XML_Char xmlnsNamespace[] = { + ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, + ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, + ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, + ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, + ASCII_SLASH, '\0' + }; + static const int xmlnsLen = + (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1; + + XML_Bool mustBeXML = XML_FALSE; + XML_Bool isXML = XML_TRUE; + XML_Bool isXMLNS = XML_TRUE; + + BINDING *b; + int len; + + /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */ + if (*uri == XML_T('\0') && prefix->name) + return XML_ERROR_UNDECLARING_PREFIX; + + if (prefix->name + && prefix->name[0] == XML_T(ASCII_x) + && prefix->name[1] == XML_T(ASCII_m) + && prefix->name[2] == XML_T(ASCII_l)) { + + /* Not allowed to bind xmlns */ + if (prefix->name[3] == XML_T(ASCII_n) + && prefix->name[4] == XML_T(ASCII_s) + && prefix->name[5] == XML_T('\0')) + return XML_ERROR_RESERVED_PREFIX_XMLNS; + + if (prefix->name[3] == XML_T('\0')) + mustBeXML = XML_TRUE; + } + + for (len = 0; uri[len]; len++) { + if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) + isXML = XML_FALSE; + + if (!mustBeXML && isXMLNS + && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) + isXMLNS = XML_FALSE; + } + isXML = isXML && len == xmlLen; + isXMLNS = isXMLNS && len == xmlnsLen; + + if (mustBeXML != isXML) + return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML + : XML_ERROR_RESERVED_NAMESPACE_URI; + + if (isXMLNS) + return XML_ERROR_RESERVED_NAMESPACE_URI; + + if (namespaceSeparator) + len++; + if (freeBindingList) { + b = freeBindingList; + if (len > b->uriAlloc) { + XML_Char *temp = (XML_Char *)REALLOC(b->uri, + sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + b->uri = temp; + b->uriAlloc = len + EXPAND_SPARE; + } + freeBindingList = b->nextTagBinding; + } + else { + b = (BINDING *)MALLOC(sizeof(BINDING)); + if (!b) + return XML_ERROR_NO_MEMORY; + b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (!b->uri) { + FREE(b); + return XML_ERROR_NO_MEMORY; + } + b->uriAlloc = len + EXPAND_SPARE; + } + b->uriLen = len; + memcpy(b->uri, uri, len * sizeof(XML_Char)); + if (namespaceSeparator) + b->uri[len - 1] = namespaceSeparator; + b->prefix = prefix; + b->attId = attId; + b->prevPrefixBinding = prefix->binding; + /* NULL binding when default namespace undeclared */ + if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix) + prefix->binding = NULL; + else + prefix->binding = b; + b->nextTagBinding = *bindingsPtr; + *bindingsPtr = b; + /* if attId == NULL then we are not starting a namespace scope */ + if (attId && startNamespaceDeclHandler) + startNamespaceDeclHandler(handlerArg, prefix->name, + prefix->binding ? uri : 0); + return XML_ERROR_NONE; +} + +/* The idea here is to avoid using stack for each CDATA section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +cdataSectionProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doCdataSection(parser, encoding, &start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + if (parentParser) { /* we are parsing an external entity */ + processor = externalEntityContentProcessor; + return externalEntityContentProcessor(parser, start, end, endPtr); + } + else { + processor = contentProcessor; + return contentProcessor(parser, start, end, endPtr); + } + } + return result; +} + +/* startPtr gets set to non-null if the section is closed, and to null if + the section is not yet closed. +*/ +static enum XML_Error +doCdataSection(XML_Parser parser, + const ENCODING *enc, + const char **startPtr, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + *eventPP = s; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + *startPtr = NULL; + + for (;;) { + const char *next; + int tok = XmlCdataSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_CDATA_SECT_CLOSE: + if (endCdataSectionHandler) + endCdataSectionHandler(handlerArg); +#if 0 + /* see comment under XML_TOK_CDATA_SECT_OPEN */ + else if (characterDataHandler) + characterDataHandler(handlerArg, dataBuf, 0); +#endif + else if (defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_DATA_NEWLINE: + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_DATA_CHARS: + { + XML_CharacterDataHandler charDataHandler = characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = next; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + if (s == next) + break; + *eventPP = s; + } + } + else + charDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_CDATA_SECTION; + default: + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + } + + *eventPP = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } + /* not reached */ +} + +#ifdef XML_DTD + +/* The idea here is to avoid using stack for each IGNORE section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +ignoreSectionProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + processor = prologProcessor; + return prologProcessor(parser, start, end, endPtr); + } + return result; +} + +/* startPtr gets set to non-null is the section is closed, and to null + if the section is not yet closed. +*/ +static enum XML_Error +doIgnoreSection(XML_Parser parser, + const ENCODING *enc, + const char **startPtr, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + const char *next; + int tok; + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + *eventPP = s; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + *startPtr = NULL; + tok = XmlIgnoreSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_IGNORE_SECT: + if (defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ + default: + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + } + /* not reached */ +} + +#endif /* XML_DTD */ + +static enum XML_Error +initializeEncoding(XML_Parser parser) +{ + const char *s; +#ifdef XML_UNICODE + char encodingBuf[128]; + if (!protocolEncodingName) + s = NULL; + else { + int i; + for (i = 0; protocolEncodingName[i]; i++) { + if (i == sizeof(encodingBuf) - 1 + || (protocolEncodingName[i] & ~0x7f) != 0) { + encodingBuf[0] = '\0'; + break; + } + encodingBuf[i] = (char)protocolEncodingName[i]; + } + encodingBuf[i] = '\0'; + s = encodingBuf; + } +#else + s = protocolEncodingName; +#endif + if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) + return XML_ERROR_NONE; + return handleUnknownEncoding(parser, protocolEncodingName); +} + +static enum XML_Error +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next) +{ + const char *encodingName = NULL; + const XML_Char *storedEncName = NULL; + const ENCODING *newEncoding = NULL; + const char *version = NULL; + const char *versionend; + const XML_Char *storedversion = NULL; + int standalone = -1; + if (!(ns + ? XmlParseXmlDeclNS + : XmlParseXmlDecl)(isGeneralTextEntity, + encoding, + s, + next, + &eventPtr, + &version, + &versionend, + &encodingName, + &newEncoding, + &standalone)) { + if (isGeneralTextEntity) + return XML_ERROR_TEXT_DECL; + else + return XML_ERROR_XML_DECL; + } + if (!isGeneralTextEntity && standalone == 1) { + _dtd->standalone = XML_TRUE; +#ifdef XML_DTD + if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) + paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif /* XML_DTD */ + } + if (xmlDeclHandler) { + if (encodingName != NULL) { + storedEncName = poolStoreString(&temp2Pool, + encoding, + encodingName, + encodingName + + XmlNameLength(encoding, encodingName)); + if (!storedEncName) + return XML_ERROR_NO_MEMORY; + poolFinish(&temp2Pool); + } + if (version) { + storedversion = poolStoreString(&temp2Pool, + encoding, + version, + versionend - encoding->minBytesPerChar); + if (!storedversion) + return XML_ERROR_NO_MEMORY; + } + xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); + } + else if (defaultHandler) + reportDefault(parser, encoding, s, next); + if (protocolEncodingName == NULL) { + if (newEncoding) { + if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { + eventPtr = encodingName; + return XML_ERROR_INCORRECT_ENCODING; + } + encoding = newEncoding; + } + else if (encodingName) { + enum XML_Error result; + if (!storedEncName) { + storedEncName = poolStoreString( + &temp2Pool, encoding, encodingName, + encodingName + XmlNameLength(encoding, encodingName)); + if (!storedEncName) + return XML_ERROR_NO_MEMORY; + } + result = handleUnknownEncoding(parser, storedEncName); + poolClear(&temp2Pool); + if (result == XML_ERROR_UNKNOWN_ENCODING) + eventPtr = encodingName; + return result; + } + } + + if (storedEncName || storedversion) + poolClear(&temp2Pool); + + return XML_ERROR_NONE; +} + +static enum XML_Error +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) +{ + if (unknownEncodingHandler) { + XML_Encoding info; + int i; + for (i = 0; i < 256; i++) + info.map[i] = -1; + info.convert = NULL; + info.data = NULL; + info.release = NULL; + if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, + &info)) { + ENCODING *enc; + unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); + if (!unknownEncodingMem) { + if (info.release) + info.release(info.data); + return XML_ERROR_NO_MEMORY; + } + enc = (ns + ? XmlInitUnknownEncodingNS + : XmlInitUnknownEncoding)(unknownEncodingMem, + info.map, + info.convert, + info.data); + if (enc) { + unknownEncodingData = info.data; + unknownEncodingRelease = info.release; + encoding = enc; + return XML_ERROR_NONE; + } + } + if (info.release != NULL) + info.release(info.data); + } + return XML_ERROR_UNKNOWN_ENCODING; +} + +static enum XML_Error PTRCALL +prologInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + processor = prologProcessor; + return prologProcessor(parser, s, end, nextPtr); +} + +#ifdef XML_DTD + +static enum XML_Error PTRCALL +externalParEntInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + + /* we know now that XML_Parse(Buffer) has been called, + so we consider the external parameter entity read */ + _dtd->paramEntityRead = XML_TRUE; + + if (prologState.inEntityValue) { + processor = entityValueInitProcessor; + return entityValueInitProcessor(parser, s, end, nextPtr); + } + else { + processor = externalParEntProcessor; + return externalParEntProcessor(parser, s, end, nextPtr); + } +} + +static enum XML_Error PTRCALL +entityValueInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + int tok; + const char *start = s; + const char *next = start; + eventPtr = start; + + for (;;) { + tok = XmlPrologTok(encoding, start, end, &next); + eventEndPtr = next; + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, encoding, s, end); + } + else if (tok == XML_TOK_XML_DECL) { + enum XML_Error result; + result = processXmlDecl(parser, 0, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + *nextPtr = next; + } + /* stop scanning for text declaration - we found one */ + processor = entityValueProcessor; + return entityValueProcessor(parser, next, end, nextPtr); + } + /* If we are at the end of the buffer, this would cause XmlPrologTok to + return XML_TOK_NONE on the next call, which would then cause the + function to exit with *nextPtr set to s - that is what we want for other + tokens, but not for the BOM - we would rather like to skip it; + then, when this routine is entered the next time, XmlPrologTok will + return XML_TOK_INVALID, since the BOM is still in the buffer + */ + else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) { + *nextPtr = next; + return XML_ERROR_NONE; + } + start = next; + eventPtr = start; + } +} + +static enum XML_Error PTRCALL +externalParEntProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *next = s; + int tok; + + tok = XmlPrologTok(encoding, s, end, &next); + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + } + /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. + However, when parsing an external subset, doProlog will not accept a BOM + as valid, and report a syntax error, so we have to skip the BOM + */ + else if (tok == XML_TOK_BOM) { + s = next; + tok = XmlPrologTok(encoding, s, end, &next); + } + + processor = prologProcessor; + return doProlog(parser, encoding, s, end, tok, next, + nextPtr, (XML_Bool)!ps_finalBuffer); +} + +static enum XML_Error PTRCALL +entityValueProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *start = s; + const char *next = s; + const ENCODING *enc = encoding; + int tok; + + for (;;) { + tok = XmlPrologTok(enc, start, end, &next); + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, enc, s, end); + } + start = next; + } +} + +#endif /* XML_DTD */ + +static enum XML_Error PTRCALL +prologProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *next = s; + int tok = XmlPrologTok(encoding, s, end, &next); + return doProlog(parser, encoding, s, end, tok, next, + nextPtr, (XML_Bool)!ps_finalBuffer); +} + +static enum XML_Error +doProlog(XML_Parser parser, + const ENCODING *enc, + const char *s, + const char *end, + int tok, + const char *next, + const char **nextPtr, + XML_Bool haveMore) +{ +#ifdef XML_DTD + static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' }; +#endif /* XML_DTD */ + static const XML_Char atypeCDATA[] = + { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; + static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' }; + static const XML_Char atypeIDREF[] = + { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; + static const XML_Char atypeIDREFS[] = + { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; + static const XML_Char atypeENTITY[] = + { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; + static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N, + ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; + static const XML_Char atypeNMTOKEN[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; + static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, + ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; + static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T, + ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' }; + static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' }; + static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' }; + + /* save one level of indirection */ + DTD * const dtd = _dtd; + + const char **eventPP; + const char **eventEndPP; + enum XML_Content_Quant quant; + + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + + for (;;) { + int role; + XML_Bool handleDefault = XML_TRUE; + *eventPP = s; + *eventEndPP = next; + if (tok <= 0) { + if (haveMore && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; + case XML_TOK_NONE: +#ifdef XML_DTD + /* for internal PE NOT referenced between declarations */ + if (enc != encoding && !openInternalEntities->betweenDecl) { + *nextPtr = s; + return XML_ERROR_NONE; + } + /* WFC: PE Between Declarations - must check that PE contains + complete markup, not only for external PEs, but also for + internal PEs if the reference occurs between declarations. + */ + if (isParamEntity || enc != encoding) { + if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) + == XML_ROLE_ERROR) + return XML_ERROR_INCOMPLETE_PE; + *nextPtr = s; + return XML_ERROR_NONE; + } +#endif /* XML_DTD */ + return XML_ERROR_NO_ELEMENTS; + default: + tok = -tok; + next = end; + break; + } + } + role = XmlTokenRole(&prologState, tok, s, next, enc); + switch (role) { + case XML_ROLE_XML_DECL: + { + enum XML_Error result = processXmlDecl(parser, 0, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = encoding; + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_DOCTYPE_NAME: + if (startDoctypeDeclHandler) { + doctypeName = poolStoreString(&tempPool, enc, s, next); + if (!doctypeName) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + doctypePubid = NULL; + handleDefault = XML_FALSE; + } + doctypeSysid = NULL; /* always initialize to NULL */ + break; + case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: + if (startDoctypeDeclHandler) { + startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, + doctypePubid, 1); + doctypeName = NULL; + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + break; +#ifdef XML_DTD + case XML_ROLE_TEXT_DECL: + { + enum XML_Error result = processXmlDecl(parser, 1, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = encoding; + handleDefault = XML_FALSE; + } + break; +#endif /* XML_DTD */ + case XML_ROLE_DOCTYPE_PUBLIC_ID: +#ifdef XML_DTD + useForeignDTD = XML_FALSE; + declEntity = (ENTITY *)lookup(&dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (startDoctypeDeclHandler) { + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + doctypePubid = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!doctypePubid) + return XML_ERROR_NO_MEMORY; + normalizePublicId((XML_Char *)doctypePubid); + poolFinish(&tempPool); + handleDefault = XML_FALSE; + goto alreadyChecked; + } + /* fall through */ + case XML_ROLE_ENTITY_PUBLIC_ID: + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + alreadyChecked: + if (dtd->keepProcessing && declEntity) { + XML_Char *tem = poolStoreString(&dtd->pool, + enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + declEntity->publicId = tem; + poolFinish(&dtd->pool); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_DOCTYPE_CLOSE: + if (doctypeName) { + startDoctypeDeclHandler(handlerArg, doctypeName, + doctypeSysid, doctypePubid, 0); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + /* doctypeSysid will be non-NULL in the case of a previous + XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler + was not set, indicating an external subset + */ +#ifdef XML_DTD + if (doctypeSysid || useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (paramEntityParsing && externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!entity) + return XML_ERROR_NO_MEMORY; + if (useForeignDTD) + entity->base = curBase; + dtd->paramEntityRead = XML_FALSE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else if (!doctypeSysid) + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + useForeignDTD = XML_FALSE; + } +#endif /* XML_DTD */ + if (endDoctypeDeclHandler) { + endDoctypeDeclHandler(handlerArg); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_INSTANCE_START: +#ifdef XML_DTD + /* if there is no DOCTYPE declaration then now is the + last chance to read the foreign DTD + */ + if (useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (paramEntityParsing && externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!entity) + return XML_ERROR_NO_MEMORY; + entity->base = curBase; + dtd->paramEntityRead = XML_FALSE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + } +#endif /* XML_DTD */ + processor = contentProcessor; + return contentProcessor(parser, s, end, nextPtr); + case XML_ROLE_ATTLIST_ELEMENT_NAME: + declElementType = getElementType(parser, enc, s, next); + if (!declElementType) + return XML_ERROR_NO_MEMORY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_NAME: + declAttributeId = getAttributeId(parser, enc, s, next); + if (!declAttributeId) + return XML_ERROR_NO_MEMORY; + declAttributeIsCdata = XML_FALSE; + declAttributeType = NULL; + declAttributeIsId = XML_FALSE; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_CDATA: + declAttributeIsCdata = XML_TRUE; + declAttributeType = atypeCDATA; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ID: + declAttributeIsId = XML_TRUE; + declAttributeType = atypeID; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREF: + declAttributeType = atypeIDREF; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: + declAttributeType = atypeIDREFS; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: + declAttributeType = atypeENTITY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: + declAttributeType = atypeENTITIES; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: + declAttributeType = atypeNMTOKEN; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: + declAttributeType = atypeNMTOKENS; + checkAttListDeclHandler: + if (dtd->keepProcessing && attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTRIBUTE_ENUM_VALUE: + case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: + if (dtd->keepProcessing && attlistDeclHandler) { + const XML_Char *prefix; + if (declAttributeType) { + prefix = enumValueSep; + } + else { + prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE + ? notationPrefix + : enumValueStart); + } + if (!poolAppendString(&tempPool, prefix)) + return XML_ERROR_NO_MEMORY; + if (!poolAppend(&tempPool, enc, s, next)) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: + case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + if (!defineAttribute(declElementType, declAttributeId, + declAttributeIsCdata, declAttributeIsId, + 0, parser)) + return XML_ERROR_NO_MEMORY; + if (attlistDeclHandler && declAttributeType) { + if (*declAttributeType == XML_T(ASCII_LPAREN) + || (*declAttributeType == XML_T(ASCII_N) + && declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) + || !poolAppendChar(&tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + poolFinish(&tempPool); + } + *eventEndPP = s; + attlistDeclHandler(handlerArg, declElementType->name, + declAttributeId->name, declAttributeType, + 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: + case XML_ROLE_FIXED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + const XML_Char *attVal; + enum XML_Error result = + storeAttributeValue(parser, enc, declAttributeIsCdata, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar, + &dtd->pool); + if (result) + return result; + attVal = poolStart(&dtd->pool); + poolFinish(&dtd->pool); + /* ID attributes aren't allowed to have a default */ + if (!defineAttribute(declElementType, declAttributeId, + declAttributeIsCdata, XML_FALSE, attVal, parser)) + return XML_ERROR_NO_MEMORY; + if (attlistDeclHandler && declAttributeType) { + if (*declAttributeType == XML_T(ASCII_LPAREN) + || (*declAttributeType == XML_T(ASCII_N) + && declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) + || !poolAppendChar(&tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + poolFinish(&tempPool); + } + *eventEndPP = s; + attlistDeclHandler(handlerArg, declElementType->name, + declAttributeId->name, declAttributeType, + attVal, + role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_ENTITY_VALUE: + if (dtd->keepProcessing) { + enum XML_Error result = storeEntityValue(parser, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (declEntity) { + declEntity->textPtr = poolStart(&dtd->entityValuePool); + declEntity->textLen = (int)(poolLength(&dtd->entityValuePool)); + poolFinish(&dtd->entityValuePool); + if (entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + declEntity->is_param, + declEntity->textPtr, + declEntity->textLen, + curBase, 0, 0, 0); + handleDefault = XML_FALSE; + } + } + else + poolDiscard(&dtd->entityValuePool); + if (result != XML_ERROR_NONE) + return result; + } + break; + case XML_ROLE_DOCTYPE_SYSTEM_ID: +#ifdef XML_DTD + useForeignDTD = XML_FALSE; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (startDoctypeDeclHandler) { + doctypeSysid = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (doctypeSysid == NULL) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } +#ifdef XML_DTD + else + /* use externalSubsetName to make doctypeSysid non-NULL + for the case where no startDoctypeDeclHandler is set */ + doctypeSysid = externalSubsetName; +#endif /* XML_DTD */ + if (!dtd->standalone +#ifdef XML_DTD + && !paramEntityParsing +#endif /* XML_DTD */ + && notStandaloneHandler + && !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; +#ifndef XML_DTD + break; +#else /* XML_DTD */ + if (!declEntity) { + declEntity = (ENTITY *)lookup(&dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + declEntity->publicId = NULL; + } + /* fall through */ +#endif /* XML_DTD */ + case XML_ROLE_ENTITY_SYSTEM_ID: + if (dtd->keepProcessing && declEntity) { + declEntity->systemId = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!declEntity->systemId) + return XML_ERROR_NO_MEMORY; + declEntity->base = curBase; + poolFinish(&dtd->pool); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_COMPLETE: + if (dtd->keepProcessing && declEntity && entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + declEntity->is_param, + 0,0, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + 0); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_NOTATION_NAME: + if (dtd->keepProcessing && declEntity) { + declEntity->notation = poolStoreString(&dtd->pool, enc, s, next); + if (!declEntity->notation) + return XML_ERROR_NO_MEMORY; + poolFinish(&dtd->pool); + if (unparsedEntityDeclHandler) { + *eventEndPP = s; + unparsedEntityDeclHandler(handlerArg, + declEntity->name, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + declEntity->notation); + handleDefault = XML_FALSE; + } + else if (entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + 0,0,0, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + declEntity->notation); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_GENERAL_ENTITY_NAME: + { + if (XmlPredefinedEntityName(enc, s, next)) { + declEntity = NULL; + break; + } + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (!name) + return XML_ERROR_NO_MEMORY; + declEntity = (ENTITY *)lookup(&dtd->generalEntities, name, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + if (declEntity->name != name) { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + else { + poolFinish(&dtd->pool); + declEntity->publicId = NULL; + declEntity->is_param = XML_FALSE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + declEntity->is_internal = !(parentParser || openInternalEntities); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + } + else { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + } + break; + case XML_ROLE_PARAM_ENTITY_NAME: +#ifdef XML_DTD + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (!name) + return XML_ERROR_NO_MEMORY; + declEntity = (ENTITY *)lookup(&dtd->paramEntities, + name, sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + if (declEntity->name != name) { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + else { + poolFinish(&dtd->pool); + declEntity->publicId = NULL; + declEntity->is_param = XML_TRUE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + declEntity->is_internal = !(parentParser || openInternalEntities); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + } + else { + poolDiscard(&dtd->pool); + declEntity = NULL; + } +#else /* not XML_DTD */ + declEntity = NULL; +#endif /* XML_DTD */ + break; + case XML_ROLE_NOTATION_NAME: + declNotationPublicId = NULL; + declNotationName = NULL; + if (notationDeclHandler) { + declNotationName = poolStoreString(&tempPool, enc, s, next); + if (!declNotationName) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_PUBLIC_ID: + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + if (declNotationName) { /* means notationDeclHandler != NULL */ + XML_Char *tem = poolStoreString(&tempPool, + enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + declNotationPublicId = tem; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_SYSTEM_ID: + if (declNotationName && notationDeclHandler) { + const XML_Char *systemId + = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!systemId) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + notationDeclHandler(handlerArg, + declNotationName, + curBase, + systemId, + declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&tempPool); + break; + case XML_ROLE_NOTATION_NO_SYSTEM_ID: + if (declNotationPublicId && notationDeclHandler) { + *eventEndPP = s; + notationDeclHandler(handlerArg, + declNotationName, + curBase, + 0, + declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&tempPool); + break; + case XML_ROLE_ERROR: + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: + /* PE references in internal subset are + not allowed within declarations. */ + return XML_ERROR_PARAM_ENTITY_REF; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + default: + return XML_ERROR_SYNTAX; + } +#ifdef XML_DTD + case XML_ROLE_IGNORE_SECT: + { + enum XML_Error result; + if (defaultHandler) + reportDefault(parser, enc, s, next); + handleDefault = XML_FALSE; + result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (!next) { + processor = ignoreSectionProcessor; + return result; + } + } + break; +#endif /* XML_DTD */ + case XML_ROLE_GROUP_OPEN: + if (prologState.level >= groupSize) { + if (groupSize) { + char *temp = (char *)REALLOC(groupConnector, groupSize *= 2); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + groupConnector = temp; + if (dtd->scaffIndex) { + int *temp = (int *)REALLOC(dtd->scaffIndex, + groupSize * sizeof(int)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex = temp; + } + } + else { + groupConnector = (char *)MALLOC(groupSize = 32); + if (!groupConnector) + return XML_ERROR_NO_MEMORY; + } + } + groupConnector[prologState.level] = 0; + if (dtd->in_eldecl) { + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex[dtd->scaffLevel] = myindex; + dtd->scaffLevel++; + dtd->scaffold[myindex].type = XML_CTYPE_SEQ; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_GROUP_SEQUENCE: + if (groupConnector[prologState.level] == ASCII_PIPE) + return XML_ERROR_SYNTAX; + groupConnector[prologState.level] = ASCII_COMMA; + if (dtd->in_eldecl && elementDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_GROUP_CHOICE: + if (groupConnector[prologState.level] == ASCII_COMMA) + return XML_ERROR_SYNTAX; + if (dtd->in_eldecl + && !groupConnector[prologState.level] + && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + != XML_CTYPE_MIXED) + ) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_CHOICE; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + groupConnector[prologState.level] = ASCII_PIPE; + break; + case XML_ROLE_PARAM_ENTITY_REF: +#ifdef XML_DTD + case XML_ROLE_INNER_PARAM_ENTITY_REF: + dtd->hasParamEntityRefs = XML_TRUE; + if (!paramEntityParsing) + dtd->keepProcessing = dtd->standalone; + else { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0); + poolDiscard(&dtd->pool); + /* first, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity handler + */ + if (prologState.documentEntity && + (dtd->standalone + ? !openInternalEntities + : !dtd->hasParamEntityRefs)) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + dtd->keepProcessing = dtd->standalone; + /* cannot report skipped entities in declarations */ + if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) { + skippedEntityHandler(handlerArg, name, 1); + handleDefault = XML_FALSE; + } + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + XML_Bool betweenDecl = + (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); + result = processInternalEntity(parser, entity, betweenDecl); + if (result != XML_ERROR_NONE) + return result; + handleDefault = XML_FALSE; + break; + } + if (externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) { + entity->open = XML_FALSE; + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + } + entity->open = XML_FALSE; + handleDefault = XML_FALSE; + if (!dtd->paramEntityRead) { + dtd->keepProcessing = dtd->standalone; + break; + } + } + else { + dtd->keepProcessing = dtd->standalone; + break; + } + } +#endif /* XML_DTD */ + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + break; + + /* Element declaration stuff */ + + case XML_ROLE_ELEMENT_NAME: + if (elementDeclHandler) { + declElementType = getElementType(parser, enc, s, next); + if (!declElementType) + return XML_ERROR_NO_MEMORY; + dtd->scaffLevel = 0; + dtd->scaffCount = 0; + dtd->in_eldecl = XML_TRUE; + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ANY: + case XML_ROLE_CONTENT_EMPTY: + if (dtd->in_eldecl) { + if (elementDeclHandler) { + XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); + if (!content) + return XML_ERROR_NO_MEMORY; + content->quant = XML_CQUANT_NONE; + content->name = NULL; + content->numchildren = 0; + content->children = NULL; + content->type = ((role == XML_ROLE_CONTENT_ANY) ? + XML_CTYPE_ANY : + XML_CTYPE_EMPTY); + *eventEndPP = s; + elementDeclHandler(handlerArg, declElementType->name, content); + handleDefault = XML_FALSE; + } + dtd->in_eldecl = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_PCDATA: + if (dtd->in_eldecl) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_MIXED; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ELEMENT: + quant = XML_CQUANT_NONE; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_OPT: + quant = XML_CQUANT_OPT; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_REP: + quant = XML_CQUANT_REP; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_PLUS: + quant = XML_CQUANT_PLUS; + elementContent: + if (dtd->in_eldecl) { + ELEMENT_TYPE *el; + const XML_Char *name; + int nameLen; + const char *nxt = (quant == XML_CQUANT_NONE + ? next + : next - enc->minBytesPerChar); + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + dtd->scaffold[myindex].type = XML_CTYPE_NAME; + dtd->scaffold[myindex].quant = quant; + el = getElementType(parser, enc, s, nxt); + if (!el) + return XML_ERROR_NO_MEMORY; + name = el->name; + dtd->scaffold[myindex].name = name; + nameLen = 0; + for (; name[nameLen++]; ); + dtd->contentStringLen += nameLen; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_GROUP_CLOSE: + quant = XML_CQUANT_NONE; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_OPT: + quant = XML_CQUANT_OPT; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_REP: + quant = XML_CQUANT_REP; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_PLUS: + quant = XML_CQUANT_PLUS; + closeGroup: + if (dtd->in_eldecl) { + if (elementDeclHandler) + handleDefault = XML_FALSE; + dtd->scaffLevel--; + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; + if (dtd->scaffLevel == 0) { + if (!handleDefault) { + XML_Content *model = build_model(parser); + if (!model) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + elementDeclHandler(handlerArg, declElementType->name, model); + } + dtd->in_eldecl = XML_FALSE; + dtd->contentStringLen = 0; + } + } + break; + /* End element declaration stuff */ + + case XML_ROLE_PI: + if (!reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_COMMENT: + if (!reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_NONE: + switch (tok) { + case XML_TOK_BOM: + handleDefault = XML_FALSE; + break; + } + break; + case XML_ROLE_DOCTYPE_NONE: + if (startDoctypeDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ENTITY_NONE: + if (dtd->keepProcessing && entityDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_NOTATION_NONE: + if (notationDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTLIST_NONE: + if (dtd->keepProcessing && attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ELEMENT_NONE: + if (elementDeclHandler) + handleDefault = XML_FALSE; + break; + } /* end of big switch */ + + if (handleDefault && defaultHandler) + reportDefault(parser, enc, s, next); + + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + s = next; + tok = XmlPrologTok(enc, s, end, &next); + } + } + /* not reached */ +} + +static enum XML_Error PTRCALL +epilogProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + processor = epilogProcessor; + eventPtr = s; + for (;;) { + const char *next = NULL; + int tok = XmlPrologTok(encoding, s, end, &next); + eventEndPtr = next; + switch (tok) { + /* report partial linebreak - it might be the last token */ + case -XML_TOK_PROLOG_S: + if (defaultHandler) { + reportDefault(parser, encoding, s, next); + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + } + *nextPtr = next; + return XML_ERROR_NONE; + case XML_TOK_NONE: + *nextPtr = s; + return XML_ERROR_NONE; + case XML_TOK_PROLOG_S: + if (defaultHandler) + reportDefault(parser, encoding, s, next); + break; + case XML_TOK_PI: + if (!reportProcessingInstruction(parser, encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (!reportComment(parser, encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_INVALID: + eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + default: + return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; + } + eventPtr = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } +} + +static enum XML_Error +processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl) +{ + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity; + + if (freeInternalEntities) { + openEntity = freeInternalEntities; + freeInternalEntities = openEntity->next; + } + else { + openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY)); + if (!openEntity) + return XML_ERROR_NO_MEMORY; + } + entity->open = XML_TRUE; + entity->processed = 0; + openEntity->next = openInternalEntities; + openInternalEntities = openEntity; + openEntity->entity = entity; + openEntity->startTagLevel = tagLevel; + openEntity->betweenDecl = betweenDecl; + openEntity->internalEventPtr = NULL; + openEntity->internalEventEndPtr = NULL; + textStart = (char *)entity->textPtr; + textEnd = (char *)(entity->textPtr + entity->textLen); + +#ifdef XML_DTD + if (entity->is_param) { + int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, internalEncoding, textStart, textEnd, tok, + next, &next, XML_FALSE); + } + else +#endif /* XML_DTD */ + result = doContent(parser, tagLevel, internalEncoding, textStart, + textEnd, &next, XML_FALSE); + + if (result == XML_ERROR_NONE) { + if (textEnd != next && ps_parsing == XML_SUSPENDED) { + entity->processed = (int)(next - textStart); + processor = internalEntityProcessor; + } + else { + entity->open = XML_FALSE; + openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + } + return result; +} + +static enum XML_Error PTRCALL +internalEntityProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + ENTITY *entity; + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities; + if (!openEntity) + return XML_ERROR_UNEXPECTED_STATE; + + entity = openEntity->entity; + textStart = ((char *)entity->textPtr) + entity->processed; + textEnd = (char *)(entity->textPtr + entity->textLen); + +#ifdef XML_DTD + if (entity->is_param) { + int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, internalEncoding, textStart, textEnd, tok, + next, &next, XML_FALSE); + } + else +#endif /* XML_DTD */ + result = doContent(parser, openEntity->startTagLevel, internalEncoding, + textStart, textEnd, &next, XML_FALSE); + + if (result != XML_ERROR_NONE) + return result; + else if (textEnd != next && ps_parsing == XML_SUSPENDED) { + entity->processed = (int)(next - (char *)entity->textPtr); + return result; + } + else { + entity->open = XML_FALSE; + openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + +#ifdef XML_DTD + if (entity->is_param) { + int tok; + processor = prologProcessor; + tok = XmlPrologTok(encoding, s, end, &next); + return doProlog(parser, encoding, s, end, tok, next, nextPtr, + (XML_Bool)!ps_finalBuffer); + } + else +#endif /* XML_DTD */ + { + processor = contentProcessor; + /* see externalEntityContentProcessor vs contentProcessor */ + return doContent(parser, parentParser ? 1 : 0, encoding, s, end, + nextPtr, (XML_Bool)!ps_finalBuffer); + } +} + +static enum XML_Error PTRCALL +errorProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + return errorCode; +} + +static enum XML_Error +storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, + STRING_POOL *pool) +{ + enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, + end, pool); + if (result) + return result; + if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) + poolChop(pool); + if (!poolAppendChar(pool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + return XML_ERROR_NONE; +} + +static enum XML_Error +appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, + STRING_POOL *pool) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + for (;;) { + const char *next; + int tok = XmlAttributeValueTok(enc, ptr, end, &next); + switch (tok) { + case XML_TOK_NONE: + return XML_ERROR_NONE; + case XML_TOK_INVALID: + if (enc == encoding) + eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_CHAR_REF: + { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, ptr); + if (n < 0) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; + } + if (!isCdata + && n == 0x20 /* space */ + && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + n = XmlEncode(n, (ICHAR *)buf); + if (!n) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; + } + for (i = 0; i < n; i++) { + if (!poolAppendChar(pool, buf[i])) + return XML_ERROR_NO_MEMORY; + } + } + break; + case XML_TOK_DATA_CHARS: + if (!poolAppend(pool, enc, ptr, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_TRAILING_CR: + next = ptr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_ATTRIBUTE_VALUE_S: + case XML_TOK_DATA_NEWLINE: + if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + if (!poolAppendChar(pool, 0x20)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_ENTITY_REF: + { + const XML_Char *name; + ENTITY *entity; + char checkEntityDecl; + XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (ch) { + if (!poolAppendChar(pool, ch)) + return XML_ERROR_NO_MEMORY; + break; + } + name = poolStoreString(&temp2Pool, enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0); + poolDiscard(&temp2Pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal. + */ + if (pool == &dtd->pool) /* are we called from prolog? */ + checkEntityDecl = +#ifdef XML_DTD + prologState.documentEntity && +#endif /* XML_DTD */ + (dtd->standalone + ? !openInternalEntities + : !dtd->hasParamEntityRefs); + else /* if (pool == &tempPool): we are called from content */ + checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone; + if (checkEntityDecl) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + /* Cannot report skipped entity here - see comments on + skippedEntityHandler. + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + */ + /* Cannot call the default handler because this would be + out of sync with the call to the startElementHandler. + if ((pool == &tempPool) && defaultHandler) + reportDefault(parser, enc, ptr, next); + */ + break; + } + if (entity->open) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_RECURSIVE_ENTITY_REF; + } + if (entity->notation) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BINARY_ENTITY_REF; + } + if (!entity->textPtr) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; + } + else { + enum XML_Error result; + const XML_Char *textEnd = entity->textPtr + entity->textLen; + entity->open = XML_TRUE; + result = appendAttributeValue(parser, internalEncoding, isCdata, + (char *)entity->textPtr, + (char *)textEnd, pool); + entity->open = XML_FALSE; + if (result) + return result; + } + } + break; + default: + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_UNEXPECTED_STATE; + } + ptr = next; + } + /* not reached */ +} + +static enum XML_Error +storeEntityValue(XML_Parser parser, + const ENCODING *enc, + const char *entityTextPtr, + const char *entityTextEnd) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + STRING_POOL *pool = &(dtd->entityValuePool); + enum XML_Error result = XML_ERROR_NONE; +#ifdef XML_DTD + int oldInEntityValue = prologState.inEntityValue; + prologState.inEntityValue = 1; +#endif /* XML_DTD */ + /* never return Null for the value argument in EntityDeclHandler, + since this would indicate an external entity; therefore we + have to make sure that entityValuePool.start is not null */ + if (!pool->blocks) { + if (!poolGrow(pool)) + return XML_ERROR_NO_MEMORY; + } + + for (;;) { + const char *next; + int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: +#ifdef XML_DTD + if (isParamEntity || enc != encoding) { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&tempPool, enc, + entityTextPtr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0); + poolDiscard(&tempPool); + if (!entity) { + /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ + /* cannot report skipped entity here - see comments on + skippedEntityHandler + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + */ + dtd->keepProcessing = dtd->standalone; + goto endEntityValue; + } + if (entity->open) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_RECURSIVE_ENTITY_REF; + goto endEntityValue; + } + if (entity->systemId) { + if (externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) { + entity->open = XML_FALSE; + result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; + goto endEntityValue; + } + entity->open = XML_FALSE; + if (!dtd->paramEntityRead) + dtd->keepProcessing = dtd->standalone; + } + else + dtd->keepProcessing = dtd->standalone; + } + else { + entity->open = XML_TRUE; + result = storeEntityValue(parser, + internalEncoding, + (char *)entity->textPtr, + (char *)(entity->textPtr + + entity->textLen)); + entity->open = XML_FALSE; + if (result) + goto endEntityValue; + } + break; + } +#endif /* XML_DTD */ + /* In the internal subset, PE references are not legal + within markup declarations, e.g entity values in this case. */ + eventPtr = entityTextPtr; + result = XML_ERROR_PARAM_ENTITY_REF; + goto endEntityValue; + case XML_TOK_NONE: + result = XML_ERROR_NONE; + goto endEntityValue; + case XML_TOK_ENTITY_REF: + case XML_TOK_DATA_CHARS: + if (!poolAppend(pool, enc, entityTextPtr, next)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + break; + case XML_TOK_TRAILING_CR: + next = entityTextPtr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_DATA_NEWLINE: + if (pool->end == pool->ptr && !poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = 0xA; + break; + case XML_TOK_CHAR_REF: + { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, entityTextPtr); + if (n < 0) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; + } + n = XmlEncode(n, (ICHAR *)buf); + if (!n) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; + } + for (i = 0; i < n; i++) { + if (pool->end == pool->ptr && !poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = buf[i]; + } + } + break; + case XML_TOK_PARTIAL: + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + case XML_TOK_INVALID: + if (enc == encoding) + eventPtr = next; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + default: + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_UNEXPECTED_STATE; + goto endEntityValue; + } + entityTextPtr = next; + } +endEntityValue: +#ifdef XML_DTD + prologState.inEntityValue = oldInEntityValue; +#endif /* XML_DTD */ + return result; +} + +static void FASTCALL +normalizeLines(XML_Char *s) +{ + XML_Char *p; + for (;; s++) { + if (*s == XML_T('\0')) + return; + if (*s == 0xD) + break; + } + p = s; + do { + if (*s == 0xD) { + *p++ = 0xA; + if (*++s == 0xA) + s++; + } + else + *p++ = *s++; + } while (*s); + *p = XML_T('\0'); +} + +static int +reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + const XML_Char *target; + XML_Char *data; + const char *tem; + if (!processingInstructionHandler) { + if (defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + start += enc->minBytesPerChar * 2; + tem = start + XmlNameLength(enc, start); + target = poolStoreString(&tempPool, enc, start, tem); + if (!target) + return 0; + poolFinish(&tempPool); + data = poolStoreString(&tempPool, enc, + XmlSkipS(enc, tem), + end - enc->minBytesPerChar*2); + if (!data) + return 0; + normalizeLines(data); + processingInstructionHandler(handlerArg, target, data); + poolClear(&tempPool); + return 1; +} + +static int +reportComment(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + XML_Char *data; + if (!commentHandler) { + if (defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + data = poolStoreString(&tempPool, + enc, + start + enc->minBytesPerChar * 4, + end - enc->minBytesPerChar * 3); + if (!data) + return 0; + normalizeLines(data); + commentHandler(handlerArg, data); + poolClear(&tempPool); + return 1; +} + +static void +reportDefault(XML_Parser parser, const ENCODING *enc, + const char *s, const char *end) +{ + if (MUST_CONVERT(enc, s)) { + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + do { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); + *eventPP = s; + } while (s != end); + } + else + defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); +} + + +static int +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, + XML_Bool isId, const XML_Char *value, XML_Parser parser) +{ + DEFAULT_ATTRIBUTE *att; + if (value || isId) { + /* The handling of default attributes gets messed up if we have + a default which duplicates a non-default. */ + int i; + for (i = 0; i < type->nDefaultAtts; i++) + if (attId == type->defaultAtts[i].id) + return 1; + if (isId && !type->idAtt && !attId->xmlns) + type->idAtt = attId; + } + if (type->nDefaultAtts == type->allocDefaultAtts) { + if (type->allocDefaultAtts == 0) { + type->allocDefaultAtts = 8; + type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts + * sizeof(DEFAULT_ATTRIBUTE)); + if (!type->defaultAtts) + return 0; + } + else { + DEFAULT_ATTRIBUTE *temp; + int count = type->allocDefaultAtts * 2; + temp = (DEFAULT_ATTRIBUTE *) + REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE))); + if (temp == NULL) + return 0; + type->allocDefaultAtts = count; + type->defaultAtts = temp; + } + } + att = type->defaultAtts + type->nDefaultAtts; + att->id = attId; + att->value = value; + att->isCdata = isCdata; + if (!isCdata) + attId->maybeTokenized = XML_TRUE; + type->nDefaultAtts += 1; + return 1; +} + +static int +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name; + for (name = elementType->name; *name; name++) { + if (*name == XML_T(ASCII_COLON)) { + PREFIX *prefix; + const XML_Char *s; + for (s = elementType->name; s != name; s++) { + if (!poolAppendChar(&dtd->pool, *s)) + return 0; + } + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return 0; + prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool), + sizeof(PREFIX)); + if (!prefix) + return 0; + if (prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + elementType->prefix = prefix; + + } + } + return 1; +} + +static ATTRIBUTE_ID * +getAttributeId(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + ATTRIBUTE_ID *id; + const XML_Char *name; + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + name = poolStoreString(&dtd->pool, enc, start, end); + if (!name) + return NULL; + /* skip quotation mark - its storage will be re-used (like in name[-1]) */ + ++name; + id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, name, sizeof(ATTRIBUTE_ID)); + if (!id) + return NULL; + if (id->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (!ns) + ; + else if (name[0] == XML_T(ASCII_x) + && name[1] == XML_T(ASCII_m) + && name[2] == XML_T(ASCII_l) + && name[3] == XML_T(ASCII_n) + && name[4] == XML_T(ASCII_s) + && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { + if (name[5] == XML_T('\0')) + id->prefix = &dtd->defaultPrefix; + else + id->prefix = (PREFIX *)lookup(&dtd->prefixes, name + 6, sizeof(PREFIX)); + id->xmlns = XML_TRUE; + } + else { + int i; + for (i = 0; name[i]; i++) { + /* attributes without prefix are *not* in the default namespace */ + if (name[i] == XML_T(ASCII_COLON)) { + int j; + for (j = 0; j < i; j++) { + if (!poolAppendChar(&dtd->pool, name[j])) + return NULL; + } + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + id->prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool), + sizeof(PREFIX)); + if (id->prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + break; + } + } + } + } + return id; +} + +#define CONTEXT_SEP XML_T(ASCII_FF) + +static const XML_Char * +getContext(XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + HASH_TABLE_ITER iter; + XML_Bool needSep = XML_FALSE; + + if (dtd->defaultPrefix.binding) { + int i; + int len; + if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = dtd->defaultPrefix.binding->uriLen; + if (namespaceSeparator) + len--; + for (i = 0; i < len; i++) + if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i])) + return NULL; + needSep = XML_TRUE; + } + + hashTableIterInit(&iter, &(dtd->prefixes)); + for (;;) { + int i; + int len; + const XML_Char *s; + PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); + if (!prefix) + break; + if (!prefix->binding) + continue; + if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + return NULL; + for (s = prefix->name; *s; s++) + if (!poolAppendChar(&tempPool, *s)) + return NULL; + if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = prefix->binding->uriLen; + if (namespaceSeparator) + len--; + for (i = 0; i < len; i++) + if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) + return NULL; + needSep = XML_TRUE; + } + + + hashTableIterInit(&iter, &(dtd->generalEntities)); + for (;;) { + const XML_Char *s; + ENTITY *e = (ENTITY *)hashTableIterNext(&iter); + if (!e) + break; + if (!e->open) + continue; + if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + return NULL; + for (s = e->name; *s; s++) + if (!poolAppendChar(&tempPool, *s)) + return 0; + needSep = XML_TRUE; + } + + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return NULL; + return tempPool.start; +} + +static XML_Bool +setContext(XML_Parser parser, const XML_Char *context) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *s = context; + + while (*context != XML_T('\0')) { + if (*s == CONTEXT_SEP || *s == XML_T('\0')) { + ENTITY *e; + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + e = (ENTITY *)lookup(&dtd->generalEntities, poolStart(&tempPool), 0); + if (e) + e->open = XML_TRUE; + if (*s != XML_T('\0')) + s++; + context = s; + poolDiscard(&tempPool); + } + else if (*s == XML_T(ASCII_EQUALS)) { + PREFIX *prefix; + if (poolLength(&tempPool) == 0) + prefix = &dtd->defaultPrefix; + else { + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&tempPool), + sizeof(PREFIX)); + if (!prefix) + return XML_FALSE; + if (prefix->name == poolStart(&tempPool)) { + prefix->name = poolCopyString(&dtd->pool, prefix->name); + if (!prefix->name) + return XML_FALSE; + } + poolDiscard(&tempPool); + } + for (context = s + 1; + *context != CONTEXT_SEP && *context != XML_T('\0'); + context++) + if (!poolAppendChar(&tempPool, *context)) + return XML_FALSE; + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + if (addBinding(parser, prefix, NULL, poolStart(&tempPool), + &inheritedBindings) != XML_ERROR_NONE) + return XML_FALSE; + poolDiscard(&tempPool); + if (*context != XML_T('\0')) + ++context; + s = context; + } + else { + if (!poolAppendChar(&tempPool, *s)) + return XML_FALSE; + s++; + } + } + return XML_TRUE; +} + +static void FASTCALL +normalizePublicId(XML_Char *publicId) +{ + XML_Char *p = publicId; + XML_Char *s; + for (s = publicId; *s; s++) { + switch (*s) { + case 0x20: + case 0xD: + case 0xA: + if (p != publicId && p[-1] != 0x20) + *p++ = 0x20; + break; + default: + *p++ = *s; + } + } + if (p != publicId && p[-1] == 0x20) + --p; + *p = XML_T('\0'); +} + +static DTD * +dtdCreate(const XML_Memory_Handling_Suite *ms) +{ + DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); + if (p == NULL) + return p; + poolInit(&(p->pool), ms); + poolInit(&(p->entityValuePool), ms); + hashTableInit(&(p->generalEntities), ms); + hashTableInit(&(p->elementTypes), ms); + hashTableInit(&(p->attributeIds), ms); + hashTableInit(&(p->prefixes), ms); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableInit(&(p->paramEntities), ms); +#endif /* XML_DTD */ + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + p->scaffIndex = NULL; + p->scaffold = NULL; + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; + return p; +} + +static void +dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableClear(&(p->generalEntities)); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableClear(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableClear(&(p->elementTypes)); + hashTableClear(&(p->attributeIds)); + hashTableClear(&(p->prefixes)); + poolClear(&(p->pool)); + poolClear(&(p->entityValuePool)); + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + + ms->free_fcn(p->scaffIndex); + p->scaffIndex = NULL; + ms->free_fcn(p->scaffold); + p->scaffold = NULL; + + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; +} + +static void +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableDestroy(&(p->generalEntities)); +#ifdef XML_DTD + hashTableDestroy(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableDestroy(&(p->elementTypes)); + hashTableDestroy(&(p->attributeIds)); + hashTableDestroy(&(p->prefixes)); + poolDestroy(&(p->pool)); + poolDestroy(&(p->entityValuePool)); + if (isDocEntity) { + ms->free_fcn(p->scaffIndex); + ms->free_fcn(p->scaffold); + } + ms->free_fcn(p); +} + +/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. + The new DTD has already been initialized. +*/ +static int +dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + + /* Copy the prefix table. */ + + hashTableIterInit(&iter, &(oldDtd->prefixes)); + for (;;) { + const XML_Char *name; + const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); + if (!oldP) + break; + name = poolCopyString(&(newDtd->pool), oldP->name); + if (!name) + return 0; + if (!lookup(&(newDtd->prefixes), name, sizeof(PREFIX))) + return 0; + } + + hashTableIterInit(&iter, &(oldDtd->attributeIds)); + + /* Copy the attribute id table. */ + + for (;;) { + ATTRIBUTE_ID *newA; + const XML_Char *name; + const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); + + if (!oldA) + break; + /* Remember to allocate the scratch byte before the name. */ + if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) + return 0; + name = poolCopyString(&(newDtd->pool), oldA->name); + if (!name) + return 0; + ++name; + newA = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), name, + sizeof(ATTRIBUTE_ID)); + if (!newA) + return 0; + newA->maybeTokenized = oldA->maybeTokenized; + if (oldA->prefix) { + newA->xmlns = oldA->xmlns; + if (oldA->prefix == &oldDtd->defaultPrefix) + newA->prefix = &newDtd->defaultPrefix; + else + newA->prefix = (PREFIX *)lookup(&(newDtd->prefixes), + oldA->prefix->name, 0); + } + } + + /* Copy the element type table. */ + + hashTableIterInit(&iter, &(oldDtd->elementTypes)); + + for (;;) { + int i; + ELEMENT_TYPE *newE; + const XML_Char *name; + const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!oldE) + break; + name = poolCopyString(&(newDtd->pool), oldE->name); + if (!name) + return 0; + newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name, + sizeof(ELEMENT_TYPE)); + if (!newE) + return 0; + if (oldE->nDefaultAtts) { + newE->defaultAtts = (DEFAULT_ATTRIBUTE *) + ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + if (!newE->defaultAtts) { + ms->free_fcn(newE); + return 0; + } + } + if (oldE->idAtt) + newE->idAtt = (ATTRIBUTE_ID *) + lookup(&(newDtd->attributeIds), oldE->idAtt->name, 0); + newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; + if (oldE->prefix) + newE->prefix = (PREFIX *)lookup(&(newDtd->prefixes), + oldE->prefix->name, 0); + for (i = 0; i < newE->nDefaultAtts; i++) { + newE->defaultAtts[i].id = (ATTRIBUTE_ID *) + lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); + newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; + if (oldE->defaultAtts[i].value) { + newE->defaultAtts[i].value + = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); + if (!newE->defaultAtts[i].value) + return 0; + } + else + newE->defaultAtts[i].value = NULL; + } + } + + /* Copy the entity tables. */ + if (!copyEntityTable(&(newDtd->generalEntities), + &(newDtd->pool), + &(oldDtd->generalEntities))) + return 0; + +#ifdef XML_DTD + if (!copyEntityTable(&(newDtd->paramEntities), + &(newDtd->pool), + &(oldDtd->paramEntities))) + return 0; + newDtd->paramEntityRead = oldDtd->paramEntityRead; +#endif /* XML_DTD */ + + newDtd->keepProcessing = oldDtd->keepProcessing; + newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs; + newDtd->standalone = oldDtd->standalone; + + /* Don't want deep copying for scaffolding */ + newDtd->in_eldecl = oldDtd->in_eldecl; + newDtd->scaffold = oldDtd->scaffold; + newDtd->contentStringLen = oldDtd->contentStringLen; + newDtd->scaffSize = oldDtd->scaffSize; + newDtd->scaffLevel = oldDtd->scaffLevel; + newDtd->scaffIndex = oldDtd->scaffIndex; + + return 1; +} /* End dtdCopy */ + +static int +copyEntityTable(HASH_TABLE *newTable, + STRING_POOL *newPool, + const HASH_TABLE *oldTable) +{ + HASH_TABLE_ITER iter; + const XML_Char *cachedOldBase = NULL; + const XML_Char *cachedNewBase = NULL; + + hashTableIterInit(&iter, oldTable); + + for (;;) { + ENTITY *newE; + const XML_Char *name; + const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); + if (!oldE) + break; + name = poolCopyString(newPool, oldE->name); + if (!name) + return 0; + newE = (ENTITY *)lookup(newTable, name, sizeof(ENTITY)); + if (!newE) + return 0; + if (oldE->systemId) { + const XML_Char *tem = poolCopyString(newPool, oldE->systemId); + if (!tem) + return 0; + newE->systemId = tem; + if (oldE->base) { + if (oldE->base == cachedOldBase) + newE->base = cachedNewBase; + else { + cachedOldBase = oldE->base; + tem = poolCopyString(newPool, cachedOldBase); + if (!tem) + return 0; + cachedNewBase = newE->base = tem; + } + } + if (oldE->publicId) { + tem = poolCopyString(newPool, oldE->publicId); + if (!tem) + return 0; + newE->publicId = tem; + } + } + else { + const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, + oldE->textLen); + if (!tem) + return 0; + newE->textPtr = tem; + newE->textLen = oldE->textLen; + } + if (oldE->notation) { + const XML_Char *tem = poolCopyString(newPool, oldE->notation); + if (!tem) + return 0; + newE->notation = tem; + } + newE->is_param = oldE->is_param; + newE->is_internal = oldE->is_internal; + } + return 1; +} + +#define INIT_POWER 6 + +static XML_Bool FASTCALL +keyeq(KEY s1, KEY s2) +{ + for (; *s1 == *s2; s1++, s2++) + if (*s1 == 0) + return XML_TRUE; + return XML_FALSE; +} + +static unsigned long FASTCALL +hash(KEY s) +{ + unsigned long h = 0; + while (*s) + h = CHAR_HASH(h, *s++); + return h; +} + +static NAMED * +lookup(HASH_TABLE *table, KEY name, size_t createSize) +{ + size_t i; + if (table->size == 0) { + size_t tsize; + if (!createSize) + return NULL; + table->power = INIT_POWER; + /* table->size is a power of 2 */ + table->size = (size_t)1 << INIT_POWER; + tsize = table->size * sizeof(NAMED *); + table->v = (NAMED **)table->mem->malloc_fcn(tsize); + if (!table->v) { + table->size = 0; + return NULL; + } + memset(table->v, 0, tsize); + i = hash(name) & ((unsigned long)table->size - 1); + } + else { + unsigned long h = hash(name); + unsigned long mask = (unsigned long)table->size - 1; + unsigned char step = 0; + i = h & mask; + while (table->v[i]) { + if (keyeq(name, table->v[i]->name)) + return table->v[i]; + if (!step) + step = PROBE_STEP(h, mask, table->power); + i < step ? (i += table->size - step) : (i -= step); + } + if (!createSize) + return NULL; + + /* check for overflow (table is half full) */ + if (table->used >> (table->power - 1)) { + unsigned char newPower = table->power + 1; + size_t newSize = (size_t)1 << newPower; + unsigned long newMask = (unsigned long)newSize - 1; + size_t tsize = newSize * sizeof(NAMED *); + NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); + if (!newV) + return NULL; + memset(newV, 0, tsize); + for (i = 0; i < table->size; i++) + if (table->v[i]) { + unsigned long newHash = hash(table->v[i]->name); + size_t j = newHash & newMask; + step = 0; + while (newV[j]) { + if (!step) + step = PROBE_STEP(newHash, newMask, newPower); + j < step ? (j += newSize - step) : (j -= step); + } + newV[j] = table->v[i]; + } + table->mem->free_fcn(table->v); + table->v = newV; + table->power = newPower; + table->size = newSize; + i = h & newMask; + step = 0; + while (table->v[i]) { + if (!step) + step = PROBE_STEP(h, newMask, newPower); + i < step ? (i += newSize - step) : (i -= step); + } + } + } + table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); + if (!table->v[i]) + return NULL; + memset(table->v[i], 0, createSize); + table->v[i]->name = name; + (table->used)++; + return table->v[i]; +} + +static void FASTCALL +hashTableClear(HASH_TABLE *table) +{ + size_t i; + for (i = 0; i < table->size; i++) { + table->mem->free_fcn(table->v[i]); + table->v[i] = NULL; + } + table->used = 0; +} + +static void FASTCALL +hashTableDestroy(HASH_TABLE *table) +{ + size_t i; + for (i = 0; i < table->size; i++) + table->mem->free_fcn(table->v[i]); + table->mem->free_fcn(table->v); +} + +static void FASTCALL +hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) +{ + p->power = 0; + p->size = 0; + p->used = 0; + p->v = NULL; + p->mem = ms; +} + +static void FASTCALL +hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) +{ + iter->p = table->v; + iter->end = iter->p + table->size; +} + +static NAMED * FASTCALL +hashTableIterNext(HASH_TABLE_ITER *iter) +{ + while (iter->p != iter->end) { + NAMED *tem = *(iter->p)++; + if (tem) + return tem; + } + return NULL; +} + +static void FASTCALL +poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) +{ + pool->blocks = NULL; + pool->freeBlocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; + pool->mem = ms; +} + +static void FASTCALL +poolClear(STRING_POOL *pool) +{ + if (!pool->freeBlocks) + pool->freeBlocks = pool->blocks; + else { + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + p->next = pool->freeBlocks; + pool->freeBlocks = p; + p = tem; + } + } + pool->blocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; +} + +static void FASTCALL +poolDestroy(STRING_POOL *pool) +{ + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } + p = pool->freeBlocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } +} + +static XML_Char * +poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end) +{ + if (!pool->ptr && !poolGrow(pool)) + return NULL; + for (;;) { + XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); + if (ptr == end) + break; + if (!poolGrow(pool)) + return NULL; + } + return pool->start; +} + +static const XML_Char * FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s) +{ + do { + if (!poolAppendChar(pool, *s)) + return NULL; + } while (*s++); + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char * +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) +{ + if (!pool->ptr && !poolGrow(pool)) + return NULL; + for (; n > 0; --n, s++) { + if (!poolAppendChar(pool, *s)) + return NULL; + } + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char * FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s) +{ + while (*s) { + if (!poolAppendChar(pool, *s)) + return NULL; + s++; + } + return pool->start; +} + +static XML_Char * +poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end) +{ + if (!poolAppend(pool, enc, ptr, end)) + return NULL; + if (pool->ptr == pool->end && !poolGrow(pool)) + return NULL; + *(pool->ptr)++ = 0; + return pool->start; +} + +static XML_Bool FASTCALL +poolGrow(STRING_POOL *pool) +{ + if (pool->freeBlocks) { + if (pool->start == 0) { + pool->blocks = pool->freeBlocks; + pool->freeBlocks = pool->freeBlocks->next; + pool->blocks->next = NULL; + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + pool->ptr = pool->start; + return XML_TRUE; + } + if (pool->end - pool->start < pool->freeBlocks->size) { + BLOCK *tem = pool->freeBlocks->next; + pool->freeBlocks->next = pool->blocks; + pool->blocks = pool->freeBlocks; + pool->freeBlocks = tem; + memcpy(pool->blocks->s, pool->start, + (pool->end - pool->start) * sizeof(XML_Char)); + pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + return XML_TRUE; + } + } + if (pool->blocks && pool->start == pool->blocks->s) { + int blockSize = (int)(pool->end - pool->start)*2; + pool->blocks = (BLOCK *) + pool->mem->realloc_fcn(pool->blocks, + (offsetof(BLOCK, s) + + blockSize * sizeof(XML_Char))); + if (pool->blocks == NULL) + return XML_FALSE; + pool->blocks->size = blockSize; + pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->start = pool->blocks->s; + pool->end = pool->start + blockSize; + } + else { + BLOCK *tem; + int blockSize = (int)(pool->end - pool->start); + if (blockSize < INIT_BLOCK_SIZE) + blockSize = INIT_BLOCK_SIZE; + else + blockSize *= 2; + tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s) + + blockSize * sizeof(XML_Char)); + if (!tem) + return XML_FALSE; + tem->size = blockSize; + tem->next = pool->blocks; + pool->blocks = tem; + if (pool->ptr != pool->start) + memcpy(tem->s, pool->start, + (pool->ptr - pool->start) * sizeof(XML_Char)); + pool->ptr = tem->s + (pool->ptr - pool->start); + pool->start = tem->s; + pool->end = tem->s + blockSize; + } + return XML_TRUE; +} + +static int FASTCALL +nextScaffoldPart(XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + CONTENT_SCAFFOLD * me; + int next; + + if (!dtd->scaffIndex) { + dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); + if (!dtd->scaffIndex) + return -1; + dtd->scaffIndex[0] = 0; + } + + if (dtd->scaffCount >= dtd->scaffSize) { + CONTENT_SCAFFOLD *temp; + if (dtd->scaffold) { + temp = (CONTENT_SCAFFOLD *) + REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize *= 2; + } + else { + temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS + * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; + } + dtd->scaffold = temp; + } + next = dtd->scaffCount++; + me = &dtd->scaffold[next]; + if (dtd->scaffLevel) { + CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]]; + if (parent->lastchild) { + dtd->scaffold[parent->lastchild].nextsib = next; + } + if (!parent->childcnt) + parent->firstchild = next; + parent->lastchild = next; + parent->childcnt++; + } + me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; + return next; +} + +static void +build_node(XML_Parser parser, + int src_node, + XML_Content *dest, + XML_Content **contpos, + XML_Char **strpos) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + dest->type = dtd->scaffold[src_node].type; + dest->quant = dtd->scaffold[src_node].quant; + if (dest->type == XML_CTYPE_NAME) { + const XML_Char *src; + dest->name = *strpos; + src = dtd->scaffold[src_node].name; + for (;;) { + *(*strpos)++ = *src; + if (!*src) + break; + src++; + } + dest->numchildren = 0; + dest->children = NULL; + } + else { + unsigned int i; + int cn; + dest->numchildren = dtd->scaffold[src_node].childcnt; + dest->children = *contpos; + *contpos += dest->numchildren; + for (i = 0, cn = dtd->scaffold[src_node].firstchild; + i < dest->numchildren; + i++, cn = dtd->scaffold[cn].nextsib) { + build_node(parser, cn, &(dest->children[i]), contpos, strpos); + } + dest->name = NULL; + } +} + +static XML_Content * +build_model (XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + XML_Content *ret; + XML_Content *cpos; + XML_Char * str; + int allocsize = (dtd->scaffCount * sizeof(XML_Content) + + (dtd->contentStringLen * sizeof(XML_Char))); + + ret = (XML_Content *)MALLOC(allocsize); + if (!ret) + return NULL; + + str = (XML_Char *) (&ret[dtd->scaffCount]); + cpos = &ret[1]; + + build_node(parser, 0, ret, &cpos, &str); + return ret; +} + +static ELEMENT_TYPE * +getElementType(XML_Parser parser, + const ENCODING *enc, + const char *ptr, + const char *end) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); + ELEMENT_TYPE *ret; + + if (!name) + return NULL; + ret = (ELEMENT_TYPE *) lookup(&dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); + if (!ret) + return NULL; + if (ret->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (!setElementTypePrefix(parser, ret)) + return NULL; + } + return ret; +} diff --git a/mcwin32/autoupdater/expat_legacy/xmlrole.c b/mcwin32/autoupdater/expat_legacy/xmlrole.c new file mode 100644 index 00000000..9c5e25b1 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmlrole.c @@ -0,0 +1,1336 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include + +#ifdef COMPILED_FROM_DSP +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos4__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#else +#ifdef HAVE_EXPAT_CONFIG_H +#include +#endif +#endif /* ndef COMPILED_FROM_DSP */ + +#include "expat_external.h" +#include "internal.h" +#include "xmlrole.h" +#include "ascii.h" + +/* Doesn't check: + + that ,| are not mixed in a model group + content of literals + +*/ + +static const char KW_ANY[] = { + ASCII_A, ASCII_N, ASCII_Y, '\0' }; +static const char KW_ATTLIST[] = { + ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; +static const char KW_CDATA[] = { + ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_DOCTYPE[] = { + ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; +static const char KW_ELEMENT[] = { + ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; +static const char KW_EMPTY[] = { + ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; +static const char KW_ENTITIES[] = { + ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, + '\0' }; +static const char KW_ENTITY[] = { + ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; +static const char KW_FIXED[] = { + ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; +static const char KW_ID[] = { + ASCII_I, ASCII_D, '\0' }; +static const char KW_IDREF[] = { + ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; +static const char KW_IDREFS[] = { + ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; +#ifdef XML_DTD +static const char KW_IGNORE[] = { + ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; +#endif +static const char KW_IMPLIED[] = { + ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; +#ifdef XML_DTD +static const char KW_INCLUDE[] = { + ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; +#endif +static const char KW_NDATA[] = { + ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_NMTOKEN[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; +static const char KW_NMTOKENS[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, + '\0' }; +static const char KW_NOTATION[] = + { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, + '\0' }; +static const char KW_PCDATA[] = { + ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_PUBLIC[] = { + ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; +static const char KW_REQUIRED[] = { + ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, + '\0' }; +static const char KW_SYSTEM[] = { + ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; + +#ifndef MIN_BYTES_PER_CHAR +#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) +#endif + +#ifdef XML_DTD +#define setTopLevel(state) \ + ((state)->handler = ((state)->documentEntity \ + ? internalSubset \ + : externalSubset1)) +#else /* not XML_DTD */ +#define setTopLevel(state) ((state)->handler = internalSubset) +#endif /* not XML_DTD */ + +typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc); + +static PROLOG_HANDLER + prolog0, prolog1, prolog2, + doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, + internalSubset, + entity0, entity1, entity2, entity3, entity4, entity5, entity6, + entity7, entity8, entity9, entity10, + notation0, notation1, notation2, notation3, notation4, + attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, + attlist7, attlist8, attlist9, + element0, element1, element2, element3, element4, element5, element6, + element7, +#ifdef XML_DTD + externalSubset0, externalSubset1, + condSect0, condSect1, condSect2, +#endif /* XML_DTD */ + declClose, + error; + +static int FASTCALL common(PROLOG_STATE *state, int tok); + +static int PTRCALL +prolog0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + state->handler = prolog1; + return XML_ROLE_NONE; + case XML_TOK_XML_DECL: + state->handler = prolog1; + return XML_ROLE_XML_DECL; + case XML_TOK_PI: + state->handler = prolog1; + return XML_ROLE_PI; + case XML_TOK_COMMENT: + state->handler = prolog1; + return XML_ROLE_COMMENT; + case XML_TOK_BOM: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (!XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_DOCTYPE)) + break; + state->handler = doctype0; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +prolog1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_BOM: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (!XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_DOCTYPE)) + break; + state->handler = doctype0; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +prolog2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +doctype0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = doctype1; + return XML_ROLE_DOCTYPE_NAME; + } + return common(state, tok); +} + +static int PTRCALL +doctype1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = internalSubset; + return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = doctype3; + return XML_ROLE_DOCTYPE_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = doctype2; + return XML_ROLE_DOCTYPE_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +doctype2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_LITERAL: + state->handler = doctype3; + return XML_ROLE_DOCTYPE_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +doctype3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_LITERAL: + state->handler = doctype4; + return XML_ROLE_DOCTYPE_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +doctype4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = internalSubset; + return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + } + return common(state, tok); +} + +static int PTRCALL +doctype5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + } + return common(state, tok); +} + +static int PTRCALL +internalSubset(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_ENTITY)) { + state->handler = entity0; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_ATTLIST)) { + state->handler = attlist0; + return XML_ROLE_ATTLIST_NONE; + } + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_ELEMENT)) { + state->handler = element0; + return XML_ROLE_ELEMENT_NONE; + } + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_NOTATION)) { + state->handler = notation0; + return XML_ROLE_NOTATION_NONE; + } + break; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_PARAM_ENTITY_REF: + return XML_ROLE_PARAM_ENTITY_REF; + case XML_TOK_CLOSE_BRACKET: + state->handler = doctype5; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_NONE: + return XML_ROLE_NONE; + } + return common(state, tok); +} + +#ifdef XML_DTD + +static int PTRCALL +externalSubset0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + state->handler = externalSubset1; + if (tok == XML_TOK_XML_DECL) + return XML_ROLE_TEXT_DECL; + return externalSubset1(state, tok, ptr, end, enc); +} + +static int PTRCALL +externalSubset1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_COND_SECT_OPEN: + state->handler = condSect0; + return XML_ROLE_NONE; + case XML_TOK_COND_SECT_CLOSE: + if (state->includeLevel == 0) + break; + state->includeLevel -= 1; + return XML_ROLE_NONE; + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_CLOSE_BRACKET: + break; + case XML_TOK_NONE: + if (state->includeLevel) + break; + return XML_ROLE_NONE; + default: + return internalSubset(state, tok, ptr, end, enc); + } + return common(state, tok); +} + +#endif /* XML_DTD */ + +static int PTRCALL +entity0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_PERCENT: + state->handler = entity1; + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = entity2; + return XML_ROLE_GENERAL_ENTITY_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = entity7; + return XML_ROLE_PARAM_ENTITY_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = entity4; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = entity3; + return XML_ROLE_ENTITY_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +entity3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity4; + return XML_ROLE_ENTITY_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity5; + return XML_ROLE_ENTITY_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ENTITY_COMPLETE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { + state->handler = entity6; + return XML_ROLE_ENTITY_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +entity6(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_NOTATION_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity7(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = entity9; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = entity8; + return XML_ROLE_ENTITY_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +entity8(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity9; + return XML_ROLE_ENTITY_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity9(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity10; + return XML_ROLE_ENTITY_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity10(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ENTITY_COMPLETE; + } + return common(state, tok); +} + +static int PTRCALL +notation0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_NAME: + state->handler = notation1; + return XML_ROLE_NOTATION_NAME; + } + return common(state, tok); +} + +static int PTRCALL +notation1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = notation3; + return XML_ROLE_NOTATION_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = notation2; + return XML_ROLE_NOTATION_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +notation2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = notation4; + return XML_ROLE_NOTATION_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +notation3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; + return XML_ROLE_NOTATION_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +notation4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; + return XML_ROLE_NOTATION_SYSTEM_ID; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_NOTATION_NO_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +attlist0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist1; + return XML_ROLE_ATTLIST_ELEMENT_NAME; + } + return common(state, tok); +} + +static int PTRCALL +attlist1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist2; + return XML_ROLE_ATTRIBUTE_NAME; + } + return common(state, tok); +} + +static int PTRCALL +attlist2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + { + static const char * const types[] = { + KW_CDATA, + KW_ID, + KW_IDREF, + KW_IDREFS, + KW_ENTITY, + KW_ENTITIES, + KW_NMTOKEN, + KW_NMTOKENS, + }; + int i; + for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) + if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { + state->handler = attlist8; + return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; + } + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { + state->handler = attlist5; + return XML_ROLE_ATTLIST_NONE; + } + break; + case XML_TOK_OPEN_PAREN: + state->handler = attlist3; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NMTOKEN: + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist4; + return XML_ROLE_ATTRIBUTE_ENUM_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = attlist8; + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OR: + state->handler = attlist3; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OPEN_PAREN: + state->handler = attlist6; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist6(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + state->handler = attlist7; + return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist7(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = attlist8; + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OR: + state->handler = attlist6; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +/* default value */ +static int PTRCALL +attlist8(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_POUND_NAME: + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_IMPLIED)) { + state->handler = attlist1; + return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; + } + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_REQUIRED)) { + state->handler = attlist1; + return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; + } + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_FIXED)) { + state->handler = attlist9; + return XML_ROLE_ATTLIST_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = attlist1; + return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist9(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_LITERAL: + state->handler = attlist1; + return XML_ROLE_FIXED_ATTRIBUTE_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +element0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element1; + return XML_ROLE_ELEMENT_NAME; + } + return common(state, tok); +} + +static int PTRCALL +element1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_CONTENT_EMPTY; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_CONTENT_ANY; + } + break; + case XML_TOK_OPEN_PAREN: + state->handler = element2; + state->level = 1; + return XML_ROLE_GROUP_OPEN; + } + return common(state, tok); +} + +static int PTRCALL +element2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_POUND_NAME: + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_PCDATA)) { + state->handler = element3; + return XML_ROLE_CONTENT_PCDATA; + } + break; + case XML_TOK_OPEN_PAREN: + state->level = 2; + state->handler = element6; + return XML_ROLE_GROUP_OPEN; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT; + case XML_TOK_NAME_QUESTION: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_OPT; + case XML_TOK_NAME_ASTERISK: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_REP; + case XML_TOK_NAME_PLUS: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_PLUS; + } + return common(state, tok); +} + +static int PTRCALL +element3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_OR: + state->handler = element4; + return XML_ROLE_ELEMENT_NONE; + } + return common(state, tok); +} + +static int PTRCALL +element4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element5; + return XML_ROLE_CONTENT_ELEMENT; + } + return common(state, tok); +} + +static int PTRCALL +element5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_OR: + state->handler = element4; + return XML_ROLE_ELEMENT_NONE; + } + return common(state, tok); +} + +static int PTRCALL +element6(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_OPEN_PAREN: + state->level += 1; + return XML_ROLE_GROUP_OPEN; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT; + case XML_TOK_NAME_QUESTION: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_OPT; + case XML_TOK_NAME_ASTERISK: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_REP; + case XML_TOK_NAME_PLUS: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_PLUS; + } + return common(state, tok); +} + +static int PTRCALL +element7(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_CLOSE_PAREN_QUESTION: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_OPT; + case XML_TOK_CLOSE_PAREN_PLUS: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_PLUS; + case XML_TOK_COMMA: + state->handler = element6; + return XML_ROLE_GROUP_SEQUENCE; + case XML_TOK_OR: + state->handler = element6; + return XML_ROLE_GROUP_CHOICE; + } + return common(state, tok); +} + +#ifdef XML_DTD + +static int PTRCALL +condSect0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { + state->handler = condSect1; + return XML_ROLE_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { + state->handler = condSect2; + return XML_ROLE_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +condSect1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = externalSubset1; + state->includeLevel += 1; + return XML_ROLE_NONE; + } + return common(state, tok); +} + +static int PTRCALL +condSect2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = externalSubset1; + return XML_ROLE_IGNORE_SECT; + } + return common(state, tok); +} + +#endif /* XML_DTD */ + +static int PTRCALL +declClose(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return state->role_none; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return state->role_none; + } + return common(state, tok); +} + +static int PTRCALL +error(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + return XML_ROLE_NONE; +} + +static int FASTCALL +common(PROLOG_STATE *state, int tok) +{ +#ifdef XML_DTD + if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) + return XML_ROLE_INNER_PARAM_ENTITY_REF; +#endif + state->handler = error; + return XML_ROLE_ERROR; +} + +void +XmlPrologStateInit(PROLOG_STATE *state) +{ + state->handler = prolog0; +#ifdef XML_DTD + state->documentEntity = 1; + state->includeLevel = 0; + state->inEntityValue = 0; +#endif /* XML_DTD */ +} + +#ifdef XML_DTD + +void +XmlPrologStateInitExternalEntity(PROLOG_STATE *state) +{ + state->handler = externalSubset0; + state->documentEntity = 0; + state->includeLevel = 0; +} + +#endif /* XML_DTD */ diff --git a/mcwin32/autoupdater/expat_legacy/xmlrole.h b/mcwin32/autoupdater/expat_legacy/xmlrole.h new file mode 100644 index 00000000..4dd9f06f --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmlrole.h @@ -0,0 +1,114 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef XmlRole_INCLUDED +#define XmlRole_INCLUDED 1 + +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt +#endif + +#include "xmltok.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + XML_ROLE_ERROR = -1, + XML_ROLE_NONE = 0, + XML_ROLE_XML_DECL, + XML_ROLE_INSTANCE_START, + XML_ROLE_DOCTYPE_NONE, + XML_ROLE_DOCTYPE_NAME, + XML_ROLE_DOCTYPE_SYSTEM_ID, + XML_ROLE_DOCTYPE_PUBLIC_ID, + XML_ROLE_DOCTYPE_INTERNAL_SUBSET, + XML_ROLE_DOCTYPE_CLOSE, + XML_ROLE_GENERAL_ENTITY_NAME, + XML_ROLE_PARAM_ENTITY_NAME, + XML_ROLE_ENTITY_NONE, + XML_ROLE_ENTITY_VALUE, + XML_ROLE_ENTITY_SYSTEM_ID, + XML_ROLE_ENTITY_PUBLIC_ID, + XML_ROLE_ENTITY_COMPLETE, + XML_ROLE_ENTITY_NOTATION_NAME, + XML_ROLE_NOTATION_NONE, + XML_ROLE_NOTATION_NAME, + XML_ROLE_NOTATION_SYSTEM_ID, + XML_ROLE_NOTATION_NO_SYSTEM_ID, + XML_ROLE_NOTATION_PUBLIC_ID, + XML_ROLE_ATTRIBUTE_NAME, + XML_ROLE_ATTRIBUTE_TYPE_CDATA, + XML_ROLE_ATTRIBUTE_TYPE_ID, + XML_ROLE_ATTRIBUTE_TYPE_IDREF, + XML_ROLE_ATTRIBUTE_TYPE_IDREFS, + XML_ROLE_ATTRIBUTE_TYPE_ENTITY, + XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, + XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, + XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, + XML_ROLE_ATTRIBUTE_ENUM_VALUE, + XML_ROLE_ATTRIBUTE_NOTATION_VALUE, + XML_ROLE_ATTLIST_NONE, + XML_ROLE_ATTLIST_ELEMENT_NAME, + XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, + XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, + XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, + XML_ROLE_FIXED_ATTRIBUTE_VALUE, + XML_ROLE_ELEMENT_NONE, + XML_ROLE_ELEMENT_NAME, + XML_ROLE_CONTENT_ANY, + XML_ROLE_CONTENT_EMPTY, + XML_ROLE_CONTENT_PCDATA, + XML_ROLE_GROUP_OPEN, + XML_ROLE_GROUP_CLOSE, + XML_ROLE_GROUP_CLOSE_REP, + XML_ROLE_GROUP_CLOSE_OPT, + XML_ROLE_GROUP_CLOSE_PLUS, + XML_ROLE_GROUP_CHOICE, + XML_ROLE_GROUP_SEQUENCE, + XML_ROLE_CONTENT_ELEMENT, + XML_ROLE_CONTENT_ELEMENT_REP, + XML_ROLE_CONTENT_ELEMENT_OPT, + XML_ROLE_CONTENT_ELEMENT_PLUS, + XML_ROLE_PI, + XML_ROLE_COMMENT, +#ifdef XML_DTD + XML_ROLE_TEXT_DECL, + XML_ROLE_IGNORE_SECT, + XML_ROLE_INNER_PARAM_ENTITY_REF, +#endif /* XML_DTD */ + XML_ROLE_PARAM_ENTITY_REF +}; + +typedef struct prolog_state { + int (PTRCALL *handler) (struct prolog_state *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc); + unsigned level; + int role_none; +#ifdef XML_DTD + unsigned includeLevel; + int documentEntity; + int inEntityValue; +#endif /* XML_DTD */ +} PROLOG_STATE; + +void XmlPrologStateInit(PROLOG_STATE *); +#ifdef XML_DTD +void XmlPrologStateInitExternalEntity(PROLOG_STATE *); +#endif /* XML_DTD */ + +#define XmlTokenRole(state, tok, ptr, end, enc) \ + (((state)->handler)(state, tok, ptr, end, enc)) + +#ifdef __cplusplus +} +#endif + +#endif /* not XmlRole_INCLUDED */ diff --git a/mcwin32/autoupdater/expat_legacy/xmltok.c b/mcwin32/autoupdater/expat_legacy/xmltok.c new file mode 100644 index 00000000..068afdec --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmltok.c @@ -0,0 +1,1651 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include + +#ifdef COMPILED_FROM_DSP +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos4__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#else +#ifdef HAVE_EXPAT_CONFIG_H +#include +#endif +#endif /* ndef COMPILED_FROM_DSP */ + +#include "expat_external.h" +#include "internal.h" +#include "xmltok.h" +#include "nametab.h" + +#ifdef XML_DTD +#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) +#else +#define IGNORE_SECTION_TOK_VTABLE /* as nothing */ +#endif + +#define VTABLE1 \ + { PREFIX(prologTok), PREFIX(contentTok), \ + PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ + { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ + PREFIX(sameName), \ + PREFIX(nameMatchesAscii), \ + PREFIX(nameLength), \ + PREFIX(skipS), \ + PREFIX(getAtts), \ + PREFIX(charRefNumber), \ + PREFIX(predefinedEntityName), \ + PREFIX(updatePosition), \ + PREFIX(isPublicId) + +#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) + +#define UCS2_GET_NAMING(pages, hi, lo) \ + (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) + +/* A 2 byte UTF-8 representation splits the characters 11 bits between + the bottom 5 and 6 bits of the bytes. We need 8 bits to index into + pages, 3 bits to add to that index and 5 bits to generate the mask. +*/ +#define UTF8_GET_NAMING2(pages, byte) \ + (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ + + ((((byte)[0]) & 3) << 1) \ + + ((((byte)[1]) >> 5) & 1)] \ + & (1 << (((byte)[1]) & 0x1F))) + +/* A 3 byte UTF-8 representation splits the characters 16 bits between + the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index + into pages, 3 bits to add to that index and 5 bits to generate the + mask. +*/ +#define UTF8_GET_NAMING3(pages, byte) \ + (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ + + ((((byte)[1]) >> 2) & 0xF)] \ + << 3) \ + + ((((byte)[1]) & 3) << 1) \ + + ((((byte)[2]) >> 5) & 1)] \ + & (1 << (((byte)[2]) & 0x1F))) + +#define UTF8_GET_NAMING(pages, p, n) \ + ((n) == 2 \ + ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ + : ((n) == 3 \ + ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ + : 0)) + +/* Detection of invalid UTF-8 sequences is based on Table 3.1B + of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ + with the additional restriction of not allowing the Unicode + code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE). + Implementation details: + (A & 0x80) == 0 means A < 0x80 + and + (A & 0xC0) == 0xC0 means A > 0xBF +*/ + +#define UTF8_INVALID2(p) \ + ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) + +#define UTF8_INVALID3(p) \ + (((p)[2] & 0x80) == 0 \ + || \ + ((*p) == 0xEF && (p)[1] == 0xBF \ + ? \ + (p)[2] > 0xBD \ + : \ + ((p)[2] & 0xC0) == 0xC0) \ + || \ + ((*p) == 0xE0 \ + ? \ + (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ + : \ + ((p)[1] & 0x80) == 0 \ + || \ + ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) + +#define UTF8_INVALID4(p) \ + (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ + || \ + ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ + || \ + ((*p) == 0xF0 \ + ? \ + (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ + : \ + ((p)[1] & 0x80) == 0 \ + || \ + ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) + +static int PTRFASTCALL +isNever(const ENCODING *enc, const char *p) +{ + return 0; +} + +static int PTRFASTCALL +utf8_isName2(const ENCODING *enc, const char *p) +{ + return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isName3(const ENCODING *enc, const char *p) +{ + return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); +} + +#define utf8_isName4 isNever + +static int PTRFASTCALL +utf8_isNmstrt2(const ENCODING *enc, const char *p) +{ + return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isNmstrt3(const ENCODING *enc, const char *p) +{ + return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); +} + +#define utf8_isNmstrt4 isNever + +static int PTRFASTCALL +utf8_isInvalid2(const ENCODING *enc, const char *p) +{ + return UTF8_INVALID2((const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isInvalid3(const ENCODING *enc, const char *p) +{ + return UTF8_INVALID3((const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isInvalid4(const ENCODING *enc, const char *p) +{ + return UTF8_INVALID4((const unsigned char *)p); +} + +struct normal_encoding { + ENCODING enc; + unsigned char type[256]; +#ifdef XML_MIN_SIZE + int (PTRFASTCALL *byteType)(const ENCODING *, const char *); + int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); + int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); + int (PTRCALL *charMatches)(const ENCODING *, const char *, int); +#endif /* XML_MIN_SIZE */ + int (PTRFASTCALL *isName2)(const ENCODING *, const char *); + int (PTRFASTCALL *isName3)(const ENCODING *, const char *); + int (PTRFASTCALL *isName4)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); +}; + +#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) + +#ifdef XML_MIN_SIZE + +#define STANDARD_VTABLE(E) \ + E ## byteType, \ + E ## isNameMin, \ + E ## isNmstrtMin, \ + E ## byteToAscii, \ + E ## charMatches, + +#else + +#define STANDARD_VTABLE(E) /* as nothing */ + +#endif + +#define NORMAL_VTABLE(E) \ + E ## isName2, \ + E ## isName3, \ + E ## isName4, \ + E ## isNmstrt2, \ + E ## isNmstrt3, \ + E ## isNmstrt4, \ + E ## isInvalid2, \ + E ## isInvalid3, \ + E ## isInvalid4 + +static int FASTCALL checkCharRefNumber(int); + +#include "xmltok_impl.h" +#include "ascii.h" + +#ifdef XML_MIN_SIZE +#define sb_isNameMin isNever +#define sb_isNmstrtMin isNever +#endif + +#ifdef XML_MIN_SIZE +#define MINBPC(enc) ((enc)->minBytesPerChar) +#else +/* minimum bytes per character */ +#define MINBPC(enc) 1 +#endif + +#define SB_BYTE_TYPE(enc, p) \ + (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) + +#ifdef XML_MIN_SIZE +static int PTRFASTCALL +sb_byteType(const ENCODING *enc, const char *p) +{ + return SB_BYTE_TYPE(enc, p); +} +#define BYTE_TYPE(enc, p) \ + (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) +#else +#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) +#endif + +#ifdef XML_MIN_SIZE +#define BYTE_TO_ASCII(enc, p) \ + (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) +static int PTRFASTCALL +sb_byteToAscii(const ENCODING *enc, const char *p) +{ + return *p; +} +#else +#define BYTE_TO_ASCII(enc, p) (*(p)) +#endif + +#define IS_NAME_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) +#define IS_NMSTRT_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) +#define IS_INVALID_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) + +#ifdef XML_MIN_SIZE +#define IS_NAME_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) +#else +#define IS_NAME_CHAR_MINBPC(enc, p) (0) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) +#endif + +#ifdef XML_MIN_SIZE +#define CHAR_MATCHES(enc, p, c) \ + (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) +static int PTRCALL +sb_charMatches(const ENCODING *enc, const char *p, int c) +{ + return *p == c; +} +#else +/* c is an ASCII character */ +#define CHAR_MATCHES(enc, p, c) (*(p) == c) +#endif + +#define PREFIX(ident) normal_ ## ident +#define XML_TOK_IMPL_C +#include "xmltok_impl.c" +#undef XML_TOK_IMPL_C + +#undef MINBPC +#undef BYTE_TYPE +#undef BYTE_TO_ASCII +#undef CHAR_MATCHES +#undef IS_NAME_CHAR +#undef IS_NAME_CHAR_MINBPC +#undef IS_NMSTRT_CHAR +#undef IS_NMSTRT_CHAR_MINBPC +#undef IS_INVALID_CHAR + +enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ + UTF8_cval1 = 0x00, + UTF8_cval2 = 0xc0, + UTF8_cval3 = 0xe0, + UTF8_cval4 = 0xf0 +}; + +static void PTRCALL +utf8_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + char *to; + const char *from; + if (fromLim - *fromP > toLim - *toP) { + /* Avoid copying partial characters. */ + for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--) + if (((unsigned char)fromLim[-1] & 0xc0) != 0x80) + break; + } + for (to = *toP, from = *fromP; from != fromLim; from++, to++) + *to = *from; + *fromP = from; + *toP = to; +} + +static void PTRCALL +utf8_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) +{ + unsigned short *to = *toP; + const char *from = *fromP; + while (from != fromLim && to != toLim) { + switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { + case BT_LEAD2: + *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); + from += 2; + break; + case BT_LEAD3: + *to++ = (unsigned short)(((from[0] & 0xf) << 12) + | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); + from += 3; + break; + case BT_LEAD4: + { + unsigned long n; + if (to + 1 == toLim) + goto after; + n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) + | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); + n -= 0x10000; + to[0] = (unsigned short)((n >> 10) | 0xD800); + to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); + to += 2; + from += 4; + } + break; + default: + *to++ = *from++; + break; + } + } +after: + *fromP = from; + *toP = to; +} + +#ifdef XML_NS +static const struct normal_encoding utf8_encoding_ns = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#include "asciitab.h" +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; +#endif + +static const struct normal_encoding utf8_encoding = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; + +#ifdef XML_NS + +static const struct normal_encoding internal_utf8_encoding_ns = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#include "iasciitab.h" +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; + +#endif + +static const struct normal_encoding internal_utf8_encoding = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "iasciitab.h" +#undef BT_COLON +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; + +static void PTRCALL +latin1_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + for (;;) { + unsigned char c; + if (*fromP == fromLim) + break; + c = (unsigned char)**fromP; + if (c & 0x80) { + if (toLim - *toP < 2) + break; + *(*toP)++ = (char)((c >> 6) | UTF8_cval2); + *(*toP)++ = (char)((c & 0x3f) | 0x80); + (*fromP)++; + } + else { + if (*toP == toLim) + break; + *(*toP)++ = *(*fromP)++; + } + } +} + +static void PTRCALL +latin1_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) +{ + while (*fromP != fromLim && *toP != toLim) + *(*toP)++ = (unsigned char)*(*fromP)++; +} + +#ifdef XML_NS + +static const struct normal_encoding latin1_encoding_ns = { + { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, + { +#include "asciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(sb_) +}; + +#endif + +static const struct normal_encoding latin1_encoding = { + { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(sb_) +}; + +static void PTRCALL +ascii_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + while (*fromP != fromLim && *toP != toLim) + *(*toP)++ = *(*fromP)++; +} + +#ifdef XML_NS + +static const struct normal_encoding ascii_encoding_ns = { + { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, + { +#include "asciitab.h" +/* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) +}; + +#endif + +static const struct normal_encoding ascii_encoding = { + { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +/* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) +}; + +static int PTRFASTCALL +unicode_byte_type(char hi, char lo) +{ + switch ((unsigned char)hi) { + case 0xD8: case 0xD9: case 0xDA: case 0xDB: + return BT_LEAD4; + case 0xDC: case 0xDD: case 0xDE: case 0xDF: + return BT_TRAIL; + case 0xFF: + switch ((unsigned char)lo) { + case 0xFF: + case 0xFE: + return BT_NONXML; + } + break; + } + return BT_NONASCII; +} + +#define DEFINE_UTF16_TO_UTF8(E) \ +static void PTRCALL \ +E ## toUtf8(const ENCODING *enc, \ + const char **fromP, const char *fromLim, \ + char **toP, const char *toLim) \ +{ \ + const char *from; \ + for (from = *fromP; from != fromLim; from += 2) { \ + int plane; \ + unsigned char lo2; \ + unsigned char lo = GET_LO(from); \ + unsigned char hi = GET_HI(from); \ + switch (hi) { \ + case 0: \ + if (lo < 0x80) { \ + if (*toP == toLim) { \ + *fromP = from; \ + return; \ + } \ + *(*toP)++ = lo; \ + break; \ + } \ + /* fall through */ \ + case 0x1: case 0x2: case 0x3: \ + case 0x4: case 0x5: case 0x6: case 0x7: \ + if (toLim - *toP < 2) { \ + *fromP = from; \ + return; \ + } \ + *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + default: \ + if (toLim - *toP < 3) { \ + *fromP = from; \ + return; \ + } \ + /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ + *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ + *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ + if (toLim - *toP < 4) { \ + *fromP = from; \ + return; \ + } \ + plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ + *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ + *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ + from += 2; \ + lo2 = GET_LO(from); \ + *(*toP)++ = (((lo & 0x3) << 4) \ + | ((GET_HI(from) & 0x3) << 2) \ + | (lo2 >> 6) \ + | 0x80); \ + *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ + break; \ + } \ + } \ + *fromP = from; \ +} + +#define DEFINE_UTF16_TO_UTF16(E) \ +static void PTRCALL \ +E ## toUtf16(const ENCODING *enc, \ + const char **fromP, const char *fromLim, \ + unsigned short **toP, const unsigned short *toLim) \ +{ \ + /* Avoid copying first half only of surrogate */ \ + if (fromLim - *fromP > ((toLim - *toP) << 1) \ + && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ + fromLim -= 2; \ + for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \ + *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ +} + +#define SET2(ptr, ch) \ + (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) +#define GET_LO(ptr) ((unsigned char)(ptr)[0]) +#define GET_HI(ptr) ((unsigned char)(ptr)[1]) + +DEFINE_UTF16_TO_UTF8(little2_) +DEFINE_UTF16_TO_UTF16(little2_) + +#undef SET2 +#undef GET_LO +#undef GET_HI + +#define SET2(ptr, ch) \ + (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) +#define GET_LO(ptr) ((unsigned char)(ptr)[1]) +#define GET_HI(ptr) ((unsigned char)(ptr)[0]) + +DEFINE_UTF16_TO_UTF8(big2_) +DEFINE_UTF16_TO_UTF16(big2_) + +#undef SET2 +#undef GET_LO +#undef GET_HI + +#define LITTLE2_BYTE_TYPE(enc, p) \ + ((p)[1] == 0 \ + ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ + : unicode_byte_type((p)[1], (p)[0])) +#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) +#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) +#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) +#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) + +#ifdef XML_MIN_SIZE + +static int PTRFASTCALL +little2_byteType(const ENCODING *enc, const char *p) +{ + return LITTLE2_BYTE_TYPE(enc, p); +} + +static int PTRFASTCALL +little2_byteToAscii(const ENCODING *enc, const char *p) +{ + return LITTLE2_BYTE_TO_ASCII(enc, p); +} + +static int PTRCALL +little2_charMatches(const ENCODING *enc, const char *p, int c) +{ + return LITTLE2_CHAR_MATCHES(enc, p, c); +} + +static int PTRFASTCALL +little2_isNameMin(const ENCODING *enc, const char *p) +{ + return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); +} + +static int PTRFASTCALL +little2_isNmstrtMin(const ENCODING *enc, const char *p) +{ + return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); +} + +#undef VTABLE +#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 + +#else /* not XML_MIN_SIZE */ + +#undef PREFIX +#define PREFIX(ident) little2_ ## ident +#define MINBPC(enc) 2 +/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ +#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) +#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) +#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) +#define IS_NAME_CHAR(enc, p, n) 0 +#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) +#define IS_NMSTRT_CHAR(enc, p, n) (0) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) + +#define XML_TOK_IMPL_C +#include "xmltok_impl.c" +#undef XML_TOK_IMPL_C + +#undef MINBPC +#undef BYTE_TYPE +#undef BYTE_TO_ASCII +#undef CHAR_MATCHES +#undef IS_NAME_CHAR +#undef IS_NAME_CHAR_MINBPC +#undef IS_NMSTRT_CHAR +#undef IS_NMSTRT_CHAR_MINBPC +#undef IS_INVALID_CHAR + +#endif /* not XML_MIN_SIZE */ + +#ifdef XML_NS + +static const struct normal_encoding little2_encoding_ns = { + { VTABLE, 2, 0, +#if BYTEORDER == 1234 + 1 +#else + 0 +#endif + }, + { +#include "asciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) +}; + +#endif + +static const struct normal_encoding little2_encoding = { + { VTABLE, 2, 0, +#if BYTEORDER == 1234 + 1 +#else + 0 +#endif + }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) +}; + +#if BYTEORDER != 4321 + +#ifdef XML_NS + +static const struct normal_encoding internal_little2_encoding_ns = { + { VTABLE, 2, 0, 1 }, + { +#include "iasciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) +}; + +#endif + +static const struct normal_encoding internal_little2_encoding = { + { VTABLE, 2, 0, 1 }, + { +#define BT_COLON BT_NMSTRT +#include "iasciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) +}; + +#endif + + +#define BIG2_BYTE_TYPE(enc, p) \ + ((p)[0] == 0 \ + ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ + : unicode_byte_type((p)[0], (p)[1])) +#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) +#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) +#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) +#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) + +#ifdef XML_MIN_SIZE + +static int PTRFASTCALL +big2_byteType(const ENCODING *enc, const char *p) +{ + return BIG2_BYTE_TYPE(enc, p); +} + +static int PTRFASTCALL +big2_byteToAscii(const ENCODING *enc, const char *p) +{ + return BIG2_BYTE_TO_ASCII(enc, p); +} + +static int PTRCALL +big2_charMatches(const ENCODING *enc, const char *p, int c) +{ + return BIG2_CHAR_MATCHES(enc, p, c); +} + +static int PTRFASTCALL +big2_isNameMin(const ENCODING *enc, const char *p) +{ + return BIG2_IS_NAME_CHAR_MINBPC(enc, p); +} + +static int PTRFASTCALL +big2_isNmstrtMin(const ENCODING *enc, const char *p) +{ + return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); +} + +#undef VTABLE +#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 + +#else /* not XML_MIN_SIZE */ + +#undef PREFIX +#define PREFIX(ident) big2_ ## ident +#define MINBPC(enc) 2 +/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ +#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) +#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) +#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) +#define IS_NAME_CHAR(enc, p, n) 0 +#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) +#define IS_NMSTRT_CHAR(enc, p, n) (0) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) + +#define XML_TOK_IMPL_C +#include "xmltok_impl.c" +#undef XML_TOK_IMPL_C + +#undef MINBPC +#undef BYTE_TYPE +#undef BYTE_TO_ASCII +#undef CHAR_MATCHES +#undef IS_NAME_CHAR +#undef IS_NAME_CHAR_MINBPC +#undef IS_NMSTRT_CHAR +#undef IS_NMSTRT_CHAR_MINBPC +#undef IS_INVALID_CHAR + +#endif /* not XML_MIN_SIZE */ + +#ifdef XML_NS + +static const struct normal_encoding big2_encoding_ns = { + { VTABLE, 2, 0, +#if BYTEORDER == 4321 + 1 +#else + 0 +#endif + }, + { +#include "asciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) +}; + +#endif + +static const struct normal_encoding big2_encoding = { + { VTABLE, 2, 0, +#if BYTEORDER == 4321 + 1 +#else + 0 +#endif + }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) +}; + +#if BYTEORDER != 1234 + +#ifdef XML_NS + +static const struct normal_encoding internal_big2_encoding_ns = { + { VTABLE, 2, 0, 1 }, + { +#include "iasciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) +}; + +#endif + +static const struct normal_encoding internal_big2_encoding = { + { VTABLE, 2, 0, 1 }, + { +#define BT_COLON BT_NMSTRT +#include "iasciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) +}; + +#endif + +#undef PREFIX + +static int FASTCALL +streqci(const char *s1, const char *s2) +{ + for (;;) { + char c1 = *s1++; + char c2 = *s2++; + if (ASCII_a <= c1 && c1 <= ASCII_z) + c1 += ASCII_A - ASCII_a; + if (ASCII_a <= c2 && c2 <= ASCII_z) + c2 += ASCII_A - ASCII_a; + if (c1 != c2) + return 0; + if (!c1) + break; + } + return 1; +} + +static void PTRCALL +initUpdatePosition(const ENCODING *enc, const char *ptr, + const char *end, POSITION *pos) +{ + normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); +} + +static int +toAscii(const ENCODING *enc, const char *ptr, const char *end) +{ + char buf[1]; + char *p = buf; + XmlUtf8Convert(enc, &ptr, end, &p, p + 1); + if (p == buf) + return -1; + else + return buf[0]; +} + +static int FASTCALL +isSpace(int c) +{ + switch (c) { + case 0x20: + case 0xD: + case 0xA: + case 0x9: + return 1; + } + return 0; +} + +/* Return 1 if there's just optional white space or there's an S + followed by name=val. +*/ +static int +parsePseudoAttribute(const ENCODING *enc, + const char *ptr, + const char *end, + const char **namePtr, + const char **nameEndPtr, + const char **valPtr, + const char **nextTokPtr) +{ + int c; + char open; + if (ptr == end) { + *namePtr = NULL; + return 1; + } + if (!isSpace(toAscii(enc, ptr, end))) { + *nextTokPtr = ptr; + return 0; + } + do { + ptr += enc->minBytesPerChar; + } while (isSpace(toAscii(enc, ptr, end))); + if (ptr == end) { + *namePtr = NULL; + return 1; + } + *namePtr = ptr; + for (;;) { + c = toAscii(enc, ptr, end); + if (c == -1) { + *nextTokPtr = ptr; + return 0; + } + if (c == ASCII_EQUALS) { + *nameEndPtr = ptr; + break; + } + if (isSpace(c)) { + *nameEndPtr = ptr; + do { + ptr += enc->minBytesPerChar; + } while (isSpace(c = toAscii(enc, ptr, end))); + if (c != ASCII_EQUALS) { + *nextTokPtr = ptr; + return 0; + } + break; + } + ptr += enc->minBytesPerChar; + } + if (ptr == *namePtr) { + *nextTokPtr = ptr; + return 0; + } + ptr += enc->minBytesPerChar; + c = toAscii(enc, ptr, end); + while (isSpace(c)) { + ptr += enc->minBytesPerChar; + c = toAscii(enc, ptr, end); + } + if (c != ASCII_QUOT && c != ASCII_APOS) { + *nextTokPtr = ptr; + return 0; + } + open = (char)c; + ptr += enc->minBytesPerChar; + *valPtr = ptr; + for (;; ptr += enc->minBytesPerChar) { + c = toAscii(enc, ptr, end); + if (c == open) + break; + if (!(ASCII_a <= c && c <= ASCII_z) + && !(ASCII_A <= c && c <= ASCII_Z) + && !(ASCII_0 <= c && c <= ASCII_9) + && c != ASCII_PERIOD + && c != ASCII_MINUS + && c != ASCII_UNDERSCORE) { + *nextTokPtr = ptr; + return 0; + } + } + *nextTokPtr = ptr + enc->minBytesPerChar; + return 1; +} + +static const char KW_version[] = { + ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0' +}; + +static const char KW_encoding[] = { + ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0' +}; + +static const char KW_standalone[] = { + ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, + ASCII_n, ASCII_e, '\0' +}; + +static const char KW_yes[] = { + ASCII_y, ASCII_e, ASCII_s, '\0' +}; + +static const char KW_no[] = { + ASCII_n, ASCII_o, '\0' +}; + +static int +doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, + const char *, + const char *), + int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingName, + const ENCODING **encoding, + int *standalone) +{ + const char *val = NULL; + const char *name = NULL; + const char *nameEnd = NULL; + ptr += 5 * enc->minBytesPerChar; + end -= 2 * enc->minBytesPerChar; + if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) + || !name) { + *badPtr = ptr; + return 0; + } + if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { + if (!isGeneralTextEntity) { + *badPtr = name; + return 0; + } + } + else { + if (versionPtr) + *versionPtr = val; + if (versionEndPtr) + *versionEndPtr = ptr; + if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + *badPtr = ptr; + return 0; + } + if (!name) { + if (isGeneralTextEntity) { + /* a TextDecl must have an EncodingDecl */ + *badPtr = ptr; + return 0; + } + return 1; + } + } + if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { + int c = toAscii(enc, val, end); + if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) { + *badPtr = val; + return 0; + } + if (encodingName) + *encodingName = val; + if (encoding) + *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); + if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + *badPtr = ptr; + return 0; + } + if (!name) + return 1; + } + if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) + || isGeneralTextEntity) { + *badPtr = name; + return 0; + } + if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { + if (standalone) + *standalone = 1; + } + else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { + if (standalone) + *standalone = 0; + } + else { + *badPtr = val; + return 0; + } + while (isSpace(toAscii(enc, ptr, end))) + ptr += enc->minBytesPerChar; + if (ptr != end) { + *badPtr = ptr; + return 0; + } + return 1; +} + +static int FASTCALL +checkCharRefNumber(int result) +{ + switch (result >> 8) { + case 0xD8: case 0xD9: case 0xDA: case 0xDB: + case 0xDC: case 0xDD: case 0xDE: case 0xDF: + return -1; + case 0: + if (latin1_encoding.type[result] == BT_NONXML) + return -1; + break; + case 0xFF: + if (result == 0xFFFE || result == 0xFFFF) + return -1; + break; + } + return result; +} + +int FASTCALL +XmlUtf8Encode(int c, char *buf) +{ + enum { + /* minN is minimum legal resulting value for N byte sequence */ + min2 = 0x80, + min3 = 0x800, + min4 = 0x10000 + }; + + if (c < 0) + return 0; + if (c < min2) { + buf[0] = (char)(c | UTF8_cval1); + return 1; + } + if (c < min3) { + buf[0] = (char)((c >> 6) | UTF8_cval2); + buf[1] = (char)((c & 0x3f) | 0x80); + return 2; + } + if (c < min4) { + buf[0] = (char)((c >> 12) | UTF8_cval3); + buf[1] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[2] = (char)((c & 0x3f) | 0x80); + return 3; + } + if (c < 0x110000) { + buf[0] = (char)((c >> 18) | UTF8_cval4); + buf[1] = (char)(((c >> 12) & 0x3f) | 0x80); + buf[2] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[3] = (char)((c & 0x3f) | 0x80); + return 4; + } + return 0; +} + +int FASTCALL +XmlUtf16Encode(int charNum, unsigned short *buf) +{ + if (charNum < 0) + return 0; + if (charNum < 0x10000) { + buf[0] = (unsigned short)charNum; + return 1; + } + if (charNum < 0x110000) { + charNum -= 0x10000; + buf[0] = (unsigned short)((charNum >> 10) + 0xD800); + buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00); + return 2; + } + return 0; +} + +struct unknown_encoding { + struct normal_encoding normal; + CONVERTER convert; + void *userData; + unsigned short utf16[256]; + char utf8[256][4]; +}; + +#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) + +int +XmlSizeOfUnknownEncoding(void) +{ + return sizeof(struct unknown_encoding); +} + +static int PTRFASTCALL +unknown_isName(const ENCODING *enc, const char *p) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + if (c & ~0xFFFF) + return 0; + return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); +} + +static int PTRFASTCALL +unknown_isNmstrt(const ENCODING *enc, const char *p) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + if (c & ~0xFFFF) + return 0; + return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); +} + +static int PTRFASTCALL +unknown_isInvalid(const ENCODING *enc, const char *p) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; +} + +static void PTRCALL +unknown_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + char buf[XML_UTF8_ENCODE_MAX]; + for (;;) { + const char *utf8; + int n; + if (*fromP == fromLim) + break; + utf8 = uenc->utf8[(unsigned char)**fromP]; + n = *utf8++; + if (n == 0) { + int c = uenc->convert(uenc->userData, *fromP); + n = XmlUtf8Encode(c, buf); + if (n > toLim - *toP) + break; + utf8 = buf; + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); + } + else { + if (n > toLim - *toP) + break; + (*fromP)++; + } + do { + *(*toP)++ = *utf8++; + } while (--n != 0); + } +} + +static void PTRCALL +unknown_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + while (*fromP != fromLim && *toP != toLim) { + unsigned short c = uenc->utf16[(unsigned char)**fromP]; + if (c == 0) { + c = (unsigned short) + uenc->convert(uenc->userData, *fromP); + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); + } + else + (*fromP)++; + *(*toP)++ = c; + } +} + +ENCODING * +XmlInitUnknownEncoding(void *mem, + int *table, + CONVERTER convert, + void *userData) +{ + int i; + struct unknown_encoding *e = (struct unknown_encoding *)mem; + for (i = 0; i < (int)sizeof(struct normal_encoding); i++) + ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; + for (i = 0; i < 128; i++) + if (latin1_encoding.type[i] != BT_OTHER + && latin1_encoding.type[i] != BT_NONXML + && table[i] != i) + return 0; + for (i = 0; i < 256; i++) { + int c = table[i]; + if (c == -1) { + e->normal.type[i] = BT_MALFORM; + /* This shouldn't really get used. */ + e->utf16[i] = 0xFFFF; + e->utf8[i][0] = 1; + e->utf8[i][1] = 0; + } + else if (c < 0) { + if (c < -4) + return 0; + e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); + e->utf8[i][0] = 0; + e->utf16[i] = 0; + } + else if (c < 0x80) { + if (latin1_encoding.type[c] != BT_OTHER + && latin1_encoding.type[c] != BT_NONXML + && c != i) + return 0; + e->normal.type[i] = latin1_encoding.type[c]; + e->utf8[i][0] = 1; + e->utf8[i][1] = (char)c; + e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); + } + else if (checkCharRefNumber(c) < 0) { + e->normal.type[i] = BT_NONXML; + /* This shouldn't really get used. */ + e->utf16[i] = 0xFFFF; + e->utf8[i][0] = 1; + e->utf8[i][1] = 0; + } + else { + if (c > 0xFFFF) + return 0; + if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) + e->normal.type[i] = BT_NMSTRT; + else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff)) + e->normal.type[i] = BT_NAME; + else + e->normal.type[i] = BT_OTHER; + e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); + e->utf16[i] = (unsigned short)c; + } + } + e->userData = userData; + e->convert = convert; + if (convert) { + e->normal.isName2 = unknown_isName; + e->normal.isName3 = unknown_isName; + e->normal.isName4 = unknown_isName; + e->normal.isNmstrt2 = unknown_isNmstrt; + e->normal.isNmstrt3 = unknown_isNmstrt; + e->normal.isNmstrt4 = unknown_isNmstrt; + e->normal.isInvalid2 = unknown_isInvalid; + e->normal.isInvalid3 = unknown_isInvalid; + e->normal.isInvalid4 = unknown_isInvalid; + } + e->normal.enc.utf8Convert = unknown_toUtf8; + e->normal.enc.utf16Convert = unknown_toUtf16; + return &(e->normal.enc); +} + +/* If this enumeration is changed, getEncodingIndex and encodings +must also be changed. */ +enum { + UNKNOWN_ENC = -1, + ISO_8859_1_ENC = 0, + US_ASCII_ENC, + UTF_8_ENC, + UTF_16_ENC, + UTF_16BE_ENC, + UTF_16LE_ENC, + /* must match encodingNames up to here */ + NO_ENC +}; + +static const char KW_ISO_8859_1[] = { + ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, + ASCII_MINUS, ASCII_1, '\0' +}; +static const char KW_US_ASCII[] = { + ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, + '\0' +}; +static const char KW_UTF_8[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' +}; +static const char KW_UTF_16[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' +}; +static const char KW_UTF_16BE[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, + '\0' +}; +static const char KW_UTF_16LE[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, + '\0' +}; + +static int FASTCALL +getEncodingIndex(const char *name) +{ + static const char * const encodingNames[] = { + KW_ISO_8859_1, + KW_US_ASCII, + KW_UTF_8, + KW_UTF_16, + KW_UTF_16BE, + KW_UTF_16LE, + }; + int i; + if (name == NULL) + return NO_ENC; + for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) + if (streqci(name, encodingNames[i])) + return i; + return UNKNOWN_ENC; +} + +/* For binary compatibility, we store the index of the encoding + specified at initialization in the isUtf16 member. +*/ + +#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) +#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) + +/* This is what detects the encoding. encodingTable maps from + encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of + the external (protocol) specified encoding; state is + XML_CONTENT_STATE if we're parsing an external text entity, and + XML_PROLOG_STATE otherwise. +*/ + + +static int +initScan(const ENCODING * const *encodingTable, + const INIT_ENCODING *enc, + int state, + const char *ptr, + const char *end, + const char **nextTokPtr) +{ + const ENCODING **encPtr; + + if (ptr == end) + return XML_TOK_NONE; + encPtr = enc->encPtr; + if (ptr + 1 == end) { + /* only a single byte available for auto-detection */ +#ifndef XML_DTD /* FIXME */ + /* a well-formed document entity must have more than one byte */ + if (state != XML_CONTENT_STATE) + return XML_TOK_PARTIAL; +#endif + /* so we're parsing an external text entity... */ + /* if UTF-16 was externally specified, then we need at least 2 bytes */ + switch (INIT_ENC_INDEX(enc)) { + case UTF_16_ENC: + case UTF_16LE_ENC: + case UTF_16BE_ENC: + return XML_TOK_PARTIAL; + } + switch ((unsigned char)*ptr) { + case 0xFE: + case 0xFF: + case 0xEF: /* possibly first byte of UTF-8 BOM */ + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC + && state == XML_CONTENT_STATE) + break; + /* fall through */ + case 0x00: + case 0x3C: + return XML_TOK_PARTIAL; + } + } + else { + switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { + case 0xFEFF: + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC + && state == XML_CONTENT_STATE) + break; + *nextTokPtr = ptr + 2; + *encPtr = encodingTable[UTF_16BE_ENC]; + return XML_TOK_BOM; + /* 00 3C is handled in the default case */ + case 0x3C00: + if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC + || INIT_ENC_INDEX(enc) == UTF_16_ENC) + && state == XML_CONTENT_STATE) + break; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + case 0xFFFE: + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC + && state == XML_CONTENT_STATE) + break; + *nextTokPtr = ptr + 2; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XML_TOK_BOM; + case 0xEFBB: + /* Maybe a UTF-8 BOM (EF BB BF) */ + /* If there's an explicitly specified (external) encoding + of ISO-8859-1 or some flavour of UTF-16 + and this is an external text entity, + don't look for the BOM, + because it might be a legal data. + */ + if (state == XML_CONTENT_STATE) { + int e = INIT_ENC_INDEX(enc); + if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC + || e == UTF_16LE_ENC || e == UTF_16_ENC) + break; + } + if (ptr + 2 == end) + return XML_TOK_PARTIAL; + if ((unsigned char)ptr[2] == 0xBF) { + *nextTokPtr = ptr + 3; + *encPtr = encodingTable[UTF_8_ENC]; + return XML_TOK_BOM; + } + break; + default: + if (ptr[0] == '\0') { + /* 0 isn't a legal data character. Furthermore a document + entity can only start with ASCII characters. So the only + way this can fail to be big-endian UTF-16 if it it's an + external parsed general entity that's labelled as + UTF-16LE. + */ + if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) + break; + *encPtr = encodingTable[UTF_16BE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + } + else if (ptr[1] == '\0') { + /* We could recover here in the case: + - parsing an external entity + - second byte is 0 + - no externally specified encoding + - no encoding declaration + by assuming UTF-16LE. But we don't, because this would mean when + presented just with a single byte, we couldn't reliably determine + whether we needed further bytes. + */ + if (state == XML_CONTENT_STATE) + break; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + } + break; + } + } + *encPtr = encodingTable[INIT_ENC_INDEX(enc)]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); +} + + +#define NS(x) x +#define ns(x) x +#define XML_TOK_NS_C +#include "xmltok_ns.c" +#undef XML_TOK_NS_C +#undef NS +#undef ns + +#ifdef XML_NS + +#define NS(x) x ## NS +#define ns(x) x ## _ns + +#define XML_TOK_NS_C +#include "xmltok_ns.c" +#undef XML_TOK_NS_C + +#undef NS +#undef ns + +ENCODING * +XmlInitUnknownEncodingNS(void *mem, + int *table, + CONVERTER convert, + void *userData) +{ + ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); + if (enc) + ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; + return enc; +} + +#endif /* XML_NS */ diff --git a/mcwin32/autoupdater/expat_legacy/xmltok.h b/mcwin32/autoupdater/expat_legacy/xmltok.h new file mode 100644 index 00000000..ca867aa6 --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmltok.h @@ -0,0 +1,316 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef XmlTok_INCLUDED +#define XmlTok_INCLUDED 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* The following token may be returned by XmlContentTok */ +#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be + start of illegal ]]> sequence */ +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_NONE -4 /* The string to be scanned is empty */ +#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; + might be part of CRLF sequence */ +#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ +#define XML_TOK_PARTIAL -1 /* only part of a token */ +#define XML_TOK_INVALID 0 + +/* The following tokens are returned by XmlContentTok; some are also + returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. +*/ +#define XML_TOK_START_TAG_WITH_ATTS 1 +#define XML_TOK_START_TAG_NO_ATTS 2 +#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ +#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 +#define XML_TOK_END_TAG 5 +#define XML_TOK_DATA_CHARS 6 +#define XML_TOK_DATA_NEWLINE 7 +#define XML_TOK_CDATA_SECT_OPEN 8 +#define XML_TOK_ENTITY_REF 9 +#define XML_TOK_CHAR_REF 10 /* numeric character reference */ + +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_PI 11 /* processing instruction */ +#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ +#define XML_TOK_COMMENT 13 +#define XML_TOK_BOM 14 /* Byte order mark */ + +/* The following tokens are returned only by XmlPrologTok */ +#define XML_TOK_PROLOG_S 15 +#define XML_TOK_DECL_OPEN 16 /* */ +#define XML_TOK_NAME 18 +#define XML_TOK_NMTOKEN 19 +#define XML_TOK_POUND_NAME 20 /* #name */ +#define XML_TOK_OR 21 /* | */ +#define XML_TOK_PERCENT 22 +#define XML_TOK_OPEN_PAREN 23 +#define XML_TOK_CLOSE_PAREN 24 +#define XML_TOK_OPEN_BRACKET 25 +#define XML_TOK_CLOSE_BRACKET 26 +#define XML_TOK_LITERAL 27 +#define XML_TOK_PARAM_ENTITY_REF 28 +#define XML_TOK_INSTANCE_START 29 + +/* The following occur only in element type declarations */ +#define XML_TOK_NAME_QUESTION 30 /* name? */ +#define XML_TOK_NAME_ASTERISK 31 /* name* */ +#define XML_TOK_NAME_PLUS 32 /* name+ */ +#define XML_TOK_COND_SECT_OPEN 33 /* */ +#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ +#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ +#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ +#define XML_TOK_COMMA 38 + +/* The following token is returned only by XmlAttributeValueTok */ +#define XML_TOK_ATTRIBUTE_VALUE_S 39 + +/* The following token is returned only by XmlCdataSectionTok */ +#define XML_TOK_CDATA_SECT_CLOSE 40 + +/* With namespace processing this is returned by XmlPrologTok for a + name with a colon. +*/ +#define XML_TOK_PREFIXED_NAME 41 + +#ifdef XML_DTD +#define XML_TOK_IGNORE_SECT 42 +#endif /* XML_DTD */ + +#ifdef XML_DTD +#define XML_N_STATES 4 +#else /* not XML_DTD */ +#define XML_N_STATES 3 +#endif /* not XML_DTD */ + +#define XML_PROLOG_STATE 0 +#define XML_CONTENT_STATE 1 +#define XML_CDATA_SECTION_STATE 2 +#ifdef XML_DTD +#define XML_IGNORE_SECTION_STATE 3 +#endif /* XML_DTD */ + +#define XML_N_LITERAL_TYPES 2 +#define XML_ATTRIBUTE_VALUE_LITERAL 0 +#define XML_ENTITY_VALUE_LITERAL 1 + +/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ +#define XML_UTF8_ENCODE_MAX 4 +/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ +#define XML_UTF16_ENCODE_MAX 2 + +typedef struct position { + /* first line and first column are 0 not 1 */ + XML_Size lineNumber; + XML_Size columnNumber; +} POSITION; + +typedef struct { + const char *name; + const char *valuePtr; + const char *valueEnd; + char normalized; +} ATTRIBUTE; + +struct encoding; +typedef struct encoding ENCODING; + +typedef int (PTRCALL *SCANNER)(const ENCODING *, + const char *, + const char *, + const char **); + +struct encoding { + SCANNER scanners[XML_N_STATES]; + SCANNER literalScanners[XML_N_LITERAL_TYPES]; + int (PTRCALL *sameName)(const ENCODING *, + const char *, + const char *); + int (PTRCALL *nameMatchesAscii)(const ENCODING *, + const char *, + const char *, + const char *); + int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); + const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); + int (PTRCALL *getAtts)(const ENCODING *enc, + const char *ptr, + int attsMax, + ATTRIBUTE *atts); + int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); + int (PTRCALL *predefinedEntityName)(const ENCODING *, + const char *, + const char *); + void (PTRCALL *updatePosition)(const ENCODING *, + const char *ptr, + const char *end, + POSITION *); + int (PTRCALL *isPublicId)(const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr); + void (PTRCALL *utf8Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + char **toP, + const char *toLim); + void (PTRCALL *utf16Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + unsigned short **toP, + const unsigned short *toLim); + int minBytesPerChar; + char isUtf8; + char isUtf16; +}; + +/* Scan the string starting at ptr until the end of the next complete + token, but do not scan past eptr. Return an integer giving the + type of token. + + Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. + + Return XML_TOK_PARTIAL when the string does not contain a complete + token; nextTokPtr will not be set. + + Return XML_TOK_INVALID when the string does not start a valid + token; nextTokPtr will be set to point to the character which made + the token invalid. + + Otherwise the string starts with a valid token; nextTokPtr will be + set to point to the character following the end of that token. + + Each data character counts as a single token, but adjacent data + characters may be returned together. Similarly for characters in + the prolog outside literals, comments and processing instructions. +*/ + + +#define XmlTok(enc, state, ptr, end, nextTokPtr) \ + (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) + +#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) + +#define XmlContentTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) + +#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) + +#ifdef XML_DTD + +#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) + +#endif /* XML_DTD */ + +/* This is used for performing a 2nd-level tokenization on the content + of a literal that has already been returned by XmlTok. +*/ +#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ + (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) + +#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) + +#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ + (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) + +#define XmlNameLength(enc, ptr) \ + (((enc)->nameLength)(enc, ptr)) + +#define XmlSkipS(enc, ptr) \ + (((enc)->skipS)(enc, ptr)) + +#define XmlGetAttributes(enc, ptr, attsMax, atts) \ + (((enc)->getAtts)(enc, ptr, attsMax, atts)) + +#define XmlCharRefNumber(enc, ptr) \ + (((enc)->charRefNumber)(enc, ptr)) + +#define XmlPredefinedEntityName(enc, ptr, end) \ + (((enc)->predefinedEntityName)(enc, ptr, end)) + +#define XmlUpdatePosition(enc, ptr, end, pos) \ + (((enc)->updatePosition)(enc, ptr, end, pos)) + +#define XmlIsPublicId(enc, ptr, end, badPtr) \ + (((enc)->isPublicId)(enc, ptr, end, badPtr)) + +#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) + +#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) + +typedef struct { + ENCODING initEnc; + const ENCODING **encPtr; +} INIT_ENCODING; + +int XmlParseXmlDecl(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, + int *standalonePtr); + +int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncoding(void); +const ENCODING *XmlGetUtf16InternalEncoding(void); +int FASTCALL XmlUtf8Encode(int charNumber, char *buf); +int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); +int XmlSizeOfUnknownEncoding(void); + + +typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); + +ENCODING * +XmlInitUnknownEncoding(void *mem, + int *table, + CONVERTER convert, + void *userData); + +int XmlParseXmlDeclNS(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, + int *standalonePtr); + +int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncodingNS(void); +const ENCODING *XmlGetUtf16InternalEncodingNS(void); +ENCODING * +XmlInitUnknownEncodingNS(void *mem, + int *table, + CONVERTER convert, + void *userData); +#ifdef __cplusplus +} +#endif + +#endif /* not XmlTok_INCLUDED */ diff --git a/mcwin32/autoupdater/expat_legacy/xmltok_impl.c b/mcwin32/autoupdater/expat_legacy/xmltok_impl.c new file mode 100644 index 00000000..332dc9ac --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmltok_impl.c @@ -0,0 +1,1787 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#if defined(__WATCOMC__) +#pragma disable_message(201) /* Unreachable code */ +#endif + +/* This file is included! */ +#ifdef XML_TOK_IMPL_C + +#ifndef IS_INVALID_CHAR +#define IS_INVALID_CHAR(enc, ptr, n) (0) +#endif + +#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_INVALID_CHAR(enc, ptr, n)) { \ + *(nextTokPtr) = (ptr); \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +#define INVALID_CASES(ptr, nextTokPtr) \ + INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ + case BT_NONXML: \ + case BT_MALFORM: \ + case BT_TRAIL: \ + *(nextTokPtr) = (ptr); \ + return XML_TOK_INVALID; + +#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (!IS_NAME_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + case BT_NMSTRT: \ + case BT_HEX: \ + case BT_DIGIT: \ + case BT_NAME: \ + case BT_MINUS: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) + +#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + case BT_NMSTRT: \ + case BT_HEX: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) + +#ifndef PREFIX +#define PREFIX(ident) ident +#endif + +/* ptr points to character following " */ + switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { + case BT_S: case BT_CR: case BT_LF: case BT_PERCNT: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + /* fall through */ + case BT_S: case BT_CR: case BT_LF: + *nextTokPtr = ptr; + return XML_TOK_DECL_OPEN; + case BT_NMSTRT: + case BT_HEX: + ptr += MINBPC(enc); + break; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, + const char *end, int *tokPtr) +{ + int upper = 0; + *tokPtr = XML_TOK_PI; + if (end - ptr != MINBPC(enc)*3) + return 1; + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_x: + break; + case ASCII_X: + upper = 1; + break; + default: + return 1; + } + ptr += MINBPC(enc); + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_m: + break; + case ASCII_M: + upper = 1; + break; + default: + return 1; + } + ptr += MINBPC(enc); + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_l: + break; + case ASCII_L: + upper = 1; + break; + default: + return 1; + } + if (upper) + return 0; + *tokPtr = XML_TOK_XML_DECL; + return 1; +} + +/* ptr points to character following " 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_RSQB: + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_PARTIAL; + if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + break; + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_PARTIAL; + if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr -= MINBPC(enc); + break; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CDATA_SECT_CLOSE; + case BT_CR: + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_PARTIAL; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + case BT_LF: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + INVALID_CASES(ptr, nextTokPtr) + default: + ptr += MINBPC(enc); + break; + } + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NONXML: + case BT_MALFORM: + case BT_TRAIL: + case BT_CR: + case BT_LF: + case BT_RSQB: + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +/* ptr points to character following " 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_LT: + return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_AMP: + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_CR: + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + case BT_LF: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + case BT_RSQB: + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_TRAILING_RSQB; + if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + break; + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_TRAILING_RSQB; + if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr -= MINBPC(enc); + break; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + INVALID_CASES(ptr, nextTokPtr) + default: + ptr += MINBPC(enc); + break; + } + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_RSQB: + if (ptr + MINBPC(enc) != end) { + if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { + ptr += MINBPC(enc); + break; + } + if (ptr + 2*MINBPC(enc) != end) { + if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) { + ptr += MINBPC(enc); + break; + } + *nextTokPtr = ptr + 2*MINBPC(enc); + return XML_TOK_INVALID; + } + } + /* fall through */ + case BT_AMP: + case BT_LT: + case BT_NONXML: + case BT_MALFORM: + case BT_TRAIL: + case BT_CR: + case BT_LF: + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +/* ptr points to character following "%" */ + +static int PTRCALL +PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + if (ptr == end) + return -XML_TOK_PERCENT; + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + case BT_S: case BT_LF: case BT_CR: case BT_PERCNT: + *nextTokPtr = ptr; + return XML_TOK_PERCENT; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_SEMI: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_PARAM_ENTITY_REF; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + if (ptr == end) + return XML_TOK_PARTIAL; + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_CR: case BT_LF: case BT_S: + case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR: + *nextTokPtr = ptr; + return XML_TOK_POUND_NAME; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return -XML_TOK_POUND_NAME; +} + +static int PTRCALL +PREFIX(scanLit)(int open, const ENCODING *enc, + const char *ptr, const char *end, + const char **nextTokPtr) +{ + while (ptr != end) { + int t = BYTE_TYPE(enc, ptr); + switch (t) { + INVALID_CASES(ptr, nextTokPtr) + case BT_QUOT: + case BT_APOS: + ptr += MINBPC(enc); + if (t != open) + break; + if (ptr == end) + return -XML_TOK_LITERAL; + *nextTokPtr = ptr; + switch (BYTE_TYPE(enc, ptr)) { + case BT_S: case BT_CR: case BT_LF: + case BT_GT: case BT_PERCNT: case BT_LSQB: + return XML_TOK_LITERAL; + default: + return XML_TOK_INVALID; + } + default: + ptr += MINBPC(enc); + break; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + int tok; + if (ptr == end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_QUOT: + return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_APOS: + return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_LT: + { + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_PARTIAL; + switch (BYTE_TYPE(enc, ptr)) { + case BT_EXCL: + return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_QUEST: + return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_NMSTRT: + case BT_HEX: + case BT_NONASCII: + case BT_LEAD2: + case BT_LEAD3: + case BT_LEAD4: + *nextTokPtr = ptr - MINBPC(enc); + return XML_TOK_INSTANCE_START; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + case BT_CR: + if (ptr + MINBPC(enc) == end) { + *nextTokPtr = end; + /* indicate that this might be part of a CR/LF pair */ + return -XML_TOK_PROLOG_S; + } + /* fall through */ + case BT_S: case BT_LF: + for (;;) { + ptr += MINBPC(enc); + if (ptr == end) + break; + switch (BYTE_TYPE(enc, ptr)) { + case BT_S: case BT_LF: + break; + case BT_CR: + /* don't split CR/LF pair */ + if (ptr + MINBPC(enc) != end) + break; + /* fall through */ + default: + *nextTokPtr = ptr; + return XML_TOK_PROLOG_S; + } + } + *nextTokPtr = ptr; + return XML_TOK_PROLOG_S; + case BT_PERCNT: + return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_COMMA: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_COMMA; + case BT_LSQB: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OPEN_BRACKET; + case BT_RSQB: + ptr += MINBPC(enc); + if (ptr == end) + return -XML_TOK_CLOSE_BRACKET; + if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { + if (ptr + MINBPC(enc) == end) + return XML_TOK_PARTIAL; + if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { + *nextTokPtr = ptr + 2*MINBPC(enc); + return XML_TOK_COND_SECT_CLOSE; + } + } + *nextTokPtr = ptr; + return XML_TOK_CLOSE_BRACKET; + case BT_LPAR: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OPEN_PAREN; + case BT_RPAR: + ptr += MINBPC(enc); + if (ptr == end) + return -XML_TOK_CLOSE_PAREN; + switch (BYTE_TYPE(enc, ptr)) { + case BT_AST: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_ASTERISK; + case BT_QUEST: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_QUESTION; + case BT_PLUS: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_PLUS; + case BT_CR: case BT_LF: case BT_S: + case BT_GT: case BT_COMMA: case BT_VERBAR: + case BT_RPAR: + *nextTokPtr = ptr; + return XML_TOK_CLOSE_PAREN; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + case BT_VERBAR: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OR; + case BT_GT: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DECL_CLOSE; + case BT_NUM: + return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NAME; \ + break; \ + } \ + if (IS_NAME_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NMTOKEN; \ + break; \ + } \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NMSTRT: + case BT_HEX: + tok = XML_TOK_NAME; + ptr += MINBPC(enc); + break; + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: +#ifdef XML_NS + case BT_COLON: +#endif + tok = XML_TOK_NMTOKEN; + ptr += MINBPC(enc); + break; + case BT_NONASCII: + if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { + ptr += MINBPC(enc); + tok = XML_TOK_NAME; + break; + } + if (IS_NAME_CHAR_MINBPC(enc, ptr)) { + ptr += MINBPC(enc); + tok = XML_TOK_NMTOKEN; + break; + } + /* fall through */ + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_GT: case BT_RPAR: case BT_COMMA: + case BT_VERBAR: case BT_LSQB: case BT_PERCNT: + case BT_S: case BT_CR: case BT_LF: + *nextTokPtr = ptr; + return tok; +#ifdef XML_NS + case BT_COLON: + ptr += MINBPC(enc); + switch (tok) { + case XML_TOK_NAME: + if (ptr == end) + return XML_TOK_PARTIAL; + tok = XML_TOK_PREFIXED_NAME; + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + default: + tok = XML_TOK_NMTOKEN; + break; + } + break; + case XML_TOK_PREFIXED_NAME: + tok = XML_TOK_NMTOKEN; + break; + } + break; +#endif + case BT_PLUS: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_PLUS; + case BT_AST: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_ASTERISK; + case BT_QUEST: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_QUESTION; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return -tok; +} + +static int PTRCALL +PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) +{ + const char *start; + if (ptr == end) + return XML_TOK_NONE; + start = ptr; + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_AMP: + if (ptr == start) + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_LT: + /* this is for inside entity references */ + *nextTokPtr = ptr; + return XML_TOK_INVALID; + case BT_LF: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_CR: + if (ptr == start) { + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_S: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_ATTRIBUTE_VALUE_S; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +static int PTRCALL +PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) +{ + const char *start; + if (ptr == end) + return XML_TOK_NONE; + start = ptr; + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_AMP: + if (ptr == start) + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_PERCNT: + if (ptr == start) { + int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), + end, nextTokPtr); + return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_LF: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_CR: + if (ptr == start) { + ptr += MINBPC(enc); + if (ptr == end) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +#ifdef XML_DTD + +static int PTRCALL +PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) +{ + int level = 0; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + end = ptr + n; + } + } + while (ptr != end) { + switch (BYTE_TYPE(enc, ptr)) { + INVALID_CASES(ptr, nextTokPtr) + case BT_LT: + if ((ptr += MINBPC(enc)) == end) + return XML_TOK_PARTIAL; + if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { + if ((ptr += MINBPC(enc)) == end) + return XML_TOK_PARTIAL; + if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { + ++level; + ptr += MINBPC(enc); + } + } + break; + case BT_RSQB: + if ((ptr += MINBPC(enc)) == end) + return XML_TOK_PARTIAL; + if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { + if ((ptr += MINBPC(enc)) == end) + return XML_TOK_PARTIAL; + if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr += MINBPC(enc); + if (level == 0) { + *nextTokPtr = ptr; + return XML_TOK_IGNORE_SECT; + } + --level; + } + } + break; + default: + ptr += MINBPC(enc); + break; + } + } + return XML_TOK_PARTIAL; +} + +#endif /* XML_DTD */ + +static int PTRCALL +PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, + const char **badPtr) +{ + ptr += MINBPC(enc); + end -= MINBPC(enc); + for (; ptr != end; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_DIGIT: + case BT_HEX: + case BT_MINUS: + case BT_APOS: + case BT_LPAR: + case BT_RPAR: + case BT_PLUS: + case BT_COMMA: + case BT_SOL: + case BT_EQUALS: + case BT_QUEST: + case BT_CR: + case BT_LF: + case BT_SEMI: + case BT_EXCL: + case BT_AST: + case BT_PERCNT: + case BT_NUM: +#ifdef XML_NS + case BT_COLON: +#endif + break; + case BT_S: + if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { + *badPtr = ptr; + return 0; + } + break; + case BT_NAME: + case BT_NMSTRT: + if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f)) + break; + default: + switch (BYTE_TO_ASCII(enc, ptr)) { + case 0x24: /* $ */ + case 0x40: /* @ */ + break; + default: + *badPtr = ptr; + return 0; + } + break; + } + } + return 1; +} + +/* This must only be called for a well-formed start-tag or empty + element tag. Returns the number of attributes. Pointers to the + first attsMax attributes are stored in atts. +*/ + +static int PTRCALL +PREFIX(getAtts)(const ENCODING *enc, const char *ptr, + int attsMax, ATTRIBUTE *atts) +{ + enum { other, inName, inValue } state = inName; + int nAtts = 0; + int open = 0; /* defined when state == inValue; + initialization just to shut up compilers */ + + for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { +#define START_NAME \ + if (state == other) { \ + if (nAtts < attsMax) { \ + atts[nAtts].name = ptr; \ + atts[nAtts].normalized = 1; \ + } \ + state = inName; \ + } +#define LEAD_CASE(n) \ + case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NONASCII: + case BT_NMSTRT: + case BT_HEX: + START_NAME + break; +#undef START_NAME + case BT_QUOT: + if (state != inValue) { + if (nAtts < attsMax) + atts[nAtts].valuePtr = ptr + MINBPC(enc); + state = inValue; + open = BT_QUOT; + } + else if (open == BT_QUOT) { + state = other; + if (nAtts < attsMax) + atts[nAtts].valueEnd = ptr; + nAtts++; + } + break; + case BT_APOS: + if (state != inValue) { + if (nAtts < attsMax) + atts[nAtts].valuePtr = ptr + MINBPC(enc); + state = inValue; + open = BT_APOS; + } + else if (open == BT_APOS) { + state = other; + if (nAtts < attsMax) + atts[nAtts].valueEnd = ptr; + nAtts++; + } + break; + case BT_AMP: + if (nAtts < attsMax) + atts[nAtts].normalized = 0; + break; + case BT_S: + if (state == inName) + state = other; + else if (state == inValue + && nAtts < attsMax + && atts[nAtts].normalized + && (ptr == atts[nAtts].valuePtr + || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE + || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE + || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) + atts[nAtts].normalized = 0; + break; + case BT_CR: case BT_LF: + /* This case ensures that the first attribute name is counted + Apart from that we could just change state on the quote. */ + if (state == inName) + state = other; + else if (state == inValue && nAtts < attsMax) + atts[nAtts].normalized = 0; + break; + case BT_GT: + case BT_SOL: + if (state != inValue) + return nAtts; + break; + default: + break; + } + } + /* not reached */ +} + +static int PTRFASTCALL +PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) +{ + int result = 0; + /* skip &# */ + ptr += 2*MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_x)) { + for (ptr += MINBPC(enc); + !CHAR_MATCHES(enc, ptr, ASCII_SEMI); + ptr += MINBPC(enc)) { + int c = BYTE_TO_ASCII(enc, ptr); + switch (c) { + case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: + case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9: + result <<= 4; + result |= (c - ASCII_0); + break; + case ASCII_A: case ASCII_B: case ASCII_C: + case ASCII_D: case ASCII_E: case ASCII_F: + result <<= 4; + result += 10 + (c - ASCII_A); + break; + case ASCII_a: case ASCII_b: case ASCII_c: + case ASCII_d: case ASCII_e: case ASCII_f: + result <<= 4; + result += 10 + (c - ASCII_a); + break; + } + if (result >= 0x110000) + return -1; + } + } + else { + for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { + int c = BYTE_TO_ASCII(enc, ptr); + result *= 10; + result += (c - ASCII_0); + if (result >= 0x110000) + return -1; + } + } + return checkCharRefNumber(result); +} + +static int PTRCALL +PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, + const char *end) +{ + switch ((end - ptr)/MINBPC(enc)) { + case 2: + if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_l: + return ASCII_LT; + case ASCII_g: + return ASCII_GT; + } + } + break; + case 3: + if (CHAR_MATCHES(enc, ptr, ASCII_a)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_m)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_p)) + return ASCII_AMP; + } + } + break; + case 4: + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_q: + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_u)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_o)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_t)) + return ASCII_QUOT; + } + } + break; + case ASCII_a: + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_p)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_o)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_s)) + return ASCII_APOS; + } + } + break; + } + } + return 0; +} + +static int PTRCALL +PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) +{ + for (;;) { + switch (BYTE_TYPE(enc, ptr1)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (*ptr1++ != *ptr2++) \ + return 0; + LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2) +#undef LEAD_CASE + /* fall through */ + if (*ptr1++ != *ptr2++) + return 0; + break; + case BT_NONASCII: + case BT_NMSTRT: +#ifdef XML_NS + case BT_COLON: +#endif + case BT_HEX: + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: + if (*ptr2++ != *ptr1++) + return 0; + if (MINBPC(enc) > 1) { + if (*ptr2++ != *ptr1++) + return 0; + if (MINBPC(enc) > 2) { + if (*ptr2++ != *ptr1++) + return 0; + if (MINBPC(enc) > 3) { + if (*ptr2++ != *ptr1++) + return 0; + } + } + } + break; + default: + if (MINBPC(enc) == 1 && *ptr1 == *ptr2) + return 1; + switch (BYTE_TYPE(enc, ptr2)) { + case BT_LEAD2: + case BT_LEAD3: + case BT_LEAD4: + case BT_NONASCII: + case BT_NMSTRT: +#ifdef XML_NS + case BT_COLON: +#endif + case BT_HEX: + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: + return 0; + default: + return 1; + } + } + } + /* not reached */ +} + +static int PTRCALL +PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, + const char *end1, const char *ptr2) +{ + for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { + if (ptr1 == end1) + return 0; + if (!CHAR_MATCHES(enc, ptr1, *ptr2)) + return 0; + } + return ptr1 == end1; +} + +static int PTRFASTCALL +PREFIX(nameLength)(const ENCODING *enc, const char *ptr) +{ + const char *start = ptr; + for (;;) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NONASCII: + case BT_NMSTRT: +#ifdef XML_NS + case BT_COLON: +#endif + case BT_HEX: + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: + ptr += MINBPC(enc); + break; + default: + return (int)(ptr - start); + } + } +} + +static const char * PTRFASTCALL +PREFIX(skipS)(const ENCODING *enc, const char *ptr) +{ + for (;;) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_LF: + case BT_CR: + case BT_S: + ptr += MINBPC(enc); + break; + default: + return ptr; + } + } +} + +static void PTRCALL +PREFIX(updatePosition)(const ENCODING *enc, + const char *ptr, + const char *end, + POSITION *pos) +{ + while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + ptr += n; \ + break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_LF: + pos->columnNumber = (XML_Size)-1; + pos->lineNumber++; + ptr += MINBPC(enc); + break; + case BT_CR: + pos->lineNumber++; + ptr += MINBPC(enc); + if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + pos->columnNumber = (XML_Size)-1; + break; + default: + ptr += MINBPC(enc); + break; + } + pos->columnNumber++; + } +} + +#undef DO_LEAD_CASE +#undef MULTIBYTE_CASES +#undef INVALID_CASES +#undef CHECK_NAME_CASE +#undef CHECK_NAME_CASES +#undef CHECK_NMSTRT_CASE +#undef CHECK_NMSTRT_CASES + +#endif /* XML_TOK_IMPL_C */ diff --git a/mcwin32/autoupdater/expat_legacy/xmltok_impl.h b/mcwin32/autoupdater/expat_legacy/xmltok_impl.h new file mode 100644 index 00000000..da0ea60a --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmltok_impl.h @@ -0,0 +1,46 @@ +/* +Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd +See the file COPYING for copying permission. +*/ + +enum { + BT_NONXML, + BT_MALFORM, + BT_LT, + BT_AMP, + BT_RSQB, + BT_LEAD2, + BT_LEAD3, + BT_LEAD4, + BT_TRAIL, + BT_CR, + BT_LF, + BT_GT, + BT_QUOT, + BT_APOS, + BT_EQUALS, + BT_QUEST, + BT_EXCL, + BT_SOL, + BT_SEMI, + BT_NUM, + BT_LSQB, + BT_S, + BT_NMSTRT, + BT_COLON, + BT_HEX, + BT_DIGIT, + BT_NAME, + BT_MINUS, + BT_OTHER, /* known not to be a name or name start character */ + BT_NONASCII, /* might be a name or name start character */ + BT_PERCNT, + BT_LPAR, + BT_RPAR, + BT_AST, + BT_PLUS, + BT_COMMA, + BT_VERBAR +}; + +#include diff --git a/mcwin32/autoupdater/expat_legacy/xmltok_ns.c b/mcwin32/autoupdater/expat_legacy/xmltok_ns.c new file mode 100644 index 00000000..c3b88fdf --- /dev/null +++ b/mcwin32/autoupdater/expat_legacy/xmltok_ns.c @@ -0,0 +1,115 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* This file is included! */ +#ifdef XML_TOK_NS_C + +const ENCODING * +NS(XmlGetUtf8InternalEncoding)(void) +{ + return &ns(internal_utf8_encoding).enc; +} + +const ENCODING * +NS(XmlGetUtf16InternalEncoding)(void) +{ +#if BYTEORDER == 1234 + return &ns(internal_little2_encoding).enc; +#elif BYTEORDER == 4321 + return &ns(internal_big2_encoding).enc; +#else + const short n = 1; + return (*(const char *)&n + ? &ns(internal_little2_encoding).enc + : &ns(internal_big2_encoding).enc); +#endif +} + +static const ENCODING * const NS(encodings)[] = { + &ns(latin1_encoding).enc, + &ns(ascii_encoding).enc, + &ns(utf8_encoding).enc, + &ns(big2_encoding).enc, + &ns(big2_encoding).enc, + &ns(little2_encoding).enc, + &ns(utf8_encoding).enc /* NO_ENC */ +}; + +static int PTRCALL +NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + return initScan(NS(encodings), (const INIT_ENCODING *)enc, + XML_PROLOG_STATE, ptr, end, nextTokPtr); +} + +static int PTRCALL +NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + return initScan(NS(encodings), (const INIT_ENCODING *)enc, + XML_CONTENT_STATE, ptr, end, nextTokPtr); +} + +int +NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, + const char *name) +{ + int i = getEncodingIndex(name); + if (i == UNKNOWN_ENC) + return 0; + SET_INIT_ENC_INDEX(p, i); + p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); + p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); + p->initEnc.updatePosition = initUpdatePosition; + p->encPtr = encPtr; + *encPtr = &(p->initEnc); + return 1; +} + +static const ENCODING * +NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) +{ +#define ENCODING_MAX 128 + char buf[ENCODING_MAX]; + char *p = buf; + int i; + XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); + if (ptr != end) + return 0; + *p = 0; + if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) + return enc; + i = getEncodingIndex(buf); + if (i == UNKNOWN_ENC) + return 0; + return NS(encodings)[i]; +} + +int +NS(XmlParseXmlDecl)(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingName, + const ENCODING **encoding, + int *standalone) +{ + return doParseXmlDecl(NS(findEncoding), + isGeneralTextEntity, + enc, + ptr, + end, + badPtr, + versionPtr, + versionEndPtr, + encodingName, + encoding, + standalone); +} + +#endif /* XML_TOK_NS_C */ From 20c5943e1ede4c1d948b641a00419aeba42506e2 Mon Sep 17 00:00:00 2001 From: adamyg Date: Sun, 10 Sep 2023 18:38:44 +0800 Subject: [PATCH 28/39] mbedtls 3.3.0 --- mcwin32/libmbedtls/Makefile.3.3.0 | 414 ++++++++++++++++++++++++ mcwin32/libmbedtls/Makefile.in | 143 ++++++-- mcwin32/libmbedtls/Makefile.in.2.27.0 | 339 +++++++++++++++++++ mcwin32/libmbedtls/Makefile.in.3_3_0 | 413 +++++++++++++++++++++++ mcwin32/libmbedtls/mbedtls-3.3.0.gr.tgz | Bin 0 -> 4392915 bytes mcwin32/libmbedtls/readme_3_3_0.txt | 151 +++++++++ 6 files changed, 1425 insertions(+), 35 deletions(-) create mode 100644 mcwin32/libmbedtls/Makefile.3.3.0 create mode 100644 mcwin32/libmbedtls/Makefile.in.2.27.0 create mode 100644 mcwin32/libmbedtls/Makefile.in.3_3_0 create mode 100644 mcwin32/libmbedtls/mbedtls-3.3.0.gr.tgz create mode 100644 mcwin32/libmbedtls/readme_3_3_0.txt diff --git a/mcwin32/libmbedtls/Makefile.3.3.0 b/mcwin32/libmbedtls/Makefile.3.3.0 new file mode 100644 index 00000000..58d4acfc --- /dev/null +++ b/mcwin32/libmbedtls/Makefile.3.3.0 @@ -0,0 +1,414 @@ +# Generated by makelib.pl, Tue Feb 07 00:24:46 2023 +# -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- +# $Id: Makefile.in,v 1.11 2023/02/03 17:10:09 cvsuser Exp $ +# libmbedtls makefile. +# +# +# Copyright (c) 2017 - 2023 Adam Young. +# All rights reserved. +# +# This file is part of the Midnight Commander. +# +# The Midnight Commander is free software: you can redistribute it +# and/or modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# The Midnight Commander is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# ==end== +# + +MAKEFLAGS= +ROOT= D:/devl/mc/mcwin32 +top_builddir= .. + +# File extensions + +E= .exe +O= .obj +H= .h +A= .lib +LP= lib + +CLEAN= *.err *.bak *~ *.BAK *.swp *.tmp core *.core a.out +XCLEAN= *.pdb *.ilk $(D_OBJ)/*.mbr + +# Compilers, programs + +CC= wcl386 +AR= lib +RANLIB= @echo +RM= rm.exe +PERL= perl +LIBTOOL= perl D:/devl/mc/mcwin32/libtool_win32.pl +RC= rc /nologo + +# Configuration + +ifeq ("$(BUILD_TYPE)","") #default +BUILD_TYPE= debug +MAKEFLAGS+= BUILD_TYPE=debug +endif +ifneq ("$(BUILD_TYPE)","release") +RTSUFFIX=d +endif + +QUIETOUT:= >NUL 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + +# Directories + +D_INC= $(ROOT)/include +D_BIN= $(ROOT)/bin.owc19/$(BUILD_TYPE) +D_LIB= $(ROOT)/lib.owc19/$(BUILD_TYPE) +D_OBJ= $(ROOT)/obj.owc19/$(BUILD_TYPE)/libmbedtls + +# Common flags + +XFLAGS= + +CFLAGS= -q -6r -j -ei -db -zlf -bt=nt -bm -br -za99 -aa -sg +CWARN= -W3 +CDEBUG= -d2 -hd -of+ +CRELEASE= -ox -DNDEBUG +LDDEBUG= -d2 -hd +LDRELEASE= + +CINCLUDE= -i=$(subst /,\,.) -i=$(subst /,\,$(D_INC)) -i=$(subst /,\,$(ROOT)/libw32) -i=$(subst /,\,$(ROOT)/include) +CEXTRA= -DHAVE_CONFIG_H=1 -DWIN32_WINNT=0x501 -D__STDC_WANT_LIB_EXT1__=1 +ifeq ("$(BUILD_TYPE)","release") +CFLAGS+= $(CRELEASE) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS) +LDFLAGS= $(LDRELEASE) -q -6r -db -bt=nt -bm -br +else +CFLAGS+= $(CDEBUG) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS) +LDFLAGS= $(LDDEBUG) -q -6r -db -bt=nt -bm -br +endif +LDLIBS= -"LIBPATH $(subst /,\,$(D_LIB))" libw32.lib advapi32.lib gdi32.lib shlwapi.lib shell32.lib psapi.lib ole32.lib userenv.lib user32.lib ws2_32.lib wsock32.lib + +ARFLAGS=-nologo +RMFLAGS= -f + + +######################################################################################### +# Targets + +MBEDCRYPTOLIB= $(D_LIB)/$(LP)mbedcrypto_static$(A) +MBEDCRYPTODLL= $(D_LIB)/$(LP)mbedcrypto.la + +MBEDX509LIB= $(D_LIB)/$(LP)mbedx509_static$(A) +MBEDX509DLL= $(D_LIB)/$(LP)mbedx509.la + +MBEDTLSLIB= $(D_LIB)/$(LP)mbedtls_static$(A) +MBEDTLSDLL= $(D_LIB)/$(LP)mbedtls.la + +VERSION= 3.3.0 +VERSION_1 =$(word 1,$(subst ., ,$(VERSION))) +VERSION_2 =$(word 2,$(subst ., ,$(VERSION))) +VERSION_3 =$(word 3,$(subst ., ,$(VERSION))) +VERSIONSPEC= $(subst .,:,$(VERSION)) +VERPACKED= mbedtls-$(VERSION).gr.tgz + +MBEDBASE= ./mbedtls-$(VERSION) +MBEDSRC= $(MBEDBASE)/library +MBEDINCLUDE= $(MBEDBASE)/include + +CINCLUDE+= -i=$(subst /,\,./win32) -i=$(subst /,\,$(MBEDINCLUDE)) +CEXTRA+= -DLIBMBED_WIN32 -DLIBMBED_HAVE_ZLIB +CEXTRA+= -DMBEDTLS_EXPORTS -DKRML_VERIFIED_UINT128 + +VPATH+= $(MBEDSRC) +VPATH+= $(MBEDBASE)/programs/test +VPATH+= ./win32 + +#see: library/CMakelists.txt +CRYPTO_SOURCES= \ + aes.c \ + aesni.c \ + aria.c \ + asn1parse.c \ + asn1write.c \ + base64.c \ + bignum.c \ + bignum_core.c \ + bignum_mod.c \ + bignum_mod_raw.c \ + camellia.c \ + ccm.c \ + chacha20.c \ + chachapoly.c \ + cipher.c \ + cipher_wrap.c \ + constant_time.c \ + cmac.c \ + ctr_drbg.c \ + des.c \ + dhm.c \ + ecdh.c \ + ecdsa.c \ + ecjpake.c \ + ecp.c \ + ecp_curves.c \ + entropy.c \ + entropy_poll.c \ + error.c \ + gcm.c \ + hash_info.c \ + hkdf.c \ + hmac_drbg.c \ + lmots.c \ + lms.c \ + md.c \ + md5.c \ + memory_buffer_alloc.c \ + nist_kw.c \ + oid.c \ + padlock.c \ + pem.c \ + pk.c \ + pk_wrap.c \ + pkcs12.c \ + pkcs5.c \ + pkparse.c \ + pkwrite.c \ + platform.c \ + platform_util.c \ + poly1305.c \ + psa_crypto.c \ + psa_crypto_aead.c \ + psa_crypto_cipher.c \ + psa_crypto_client.c \ + psa_crypto_driver_wrappers.c \ + psa_crypto_ecp.c \ + psa_crypto_hash.c \ + psa_crypto_mac.c \ + psa_crypto_pake.c \ + psa_crypto_rsa.c \ + psa_crypto_se.c \ + psa_crypto_slot_management.c \ + psa_crypto_storage.c \ + psa_its_file.c \ + ripemd160.c \ + rsa.c \ + rsa_alt_helpers.c \ + sha1.c \ + sha256.c \ + sha512.c \ + threading.c \ + timing.c \ + version.c \ + version_features.c + +X509_SOURCES=\ + pkcs7.c \ + x509.c \ + x509_create.c \ + x509_crl.c \ + x509_crt.c \ + x509_csr.c \ + x509write_crt.c \ + x509write_csr.c \ + +TLS_SOURCES=\ + debug.c \ + mps_reader.c \ + mps_trace.c \ + net_sockets.c \ + ssl_cache.c \ + ssl_ciphersuites.c \ + ssl_client.c \ + ssl_cookie.c \ + ssl_debug_helpers_generated.c \ + ssl_msg.c \ + ssl_ticket.c \ + ssl_tls.c \ + ssl_tls12_client.c \ + ssl_tls12_server.c \ + ssl_tls13_keys.c \ + ssl_tls13_server.c \ + ssl_tls13_client.c \ + ssl_tls13_generic.c + +####### +CRYPTO_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(CRYPTO_SOURCES))) +CRYPTO_DLLOBJS=\ + $(subst $(O),.lo,$(CRYPTO_LIBOBJS)) \ + $(D_OBJ)/crypto_globals.lo +ifeq ("win32","win32") +ifeq (mingw,$(findstring mingw,"owc19")) +CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls_res.o +else +CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls.res +endif +endif + +####### +X509_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(X509_SOURCES))) +X509_DLLOBJS=\ + $(subst $(O),.lo,$(X509_LIBOBJS)) \ + $(D_OBJ)/x509_globals.lo +ifeq ("win32","win32") +ifeq (mingw,$(findstring mingw,"owc19")) +X509_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o +else +X509_DLLOBJS+= $(D_OBJ)/libmbedtls.res +endif +endif + +####### +TLS_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(TLS_SOURCES))) +TLS_DLLOBJS=\ + $(subst $(O),.lo,$(TLS_LIBOBJS)) +ifeq ("win32","win32") +ifeq (mingw,$(findstring mingw,"owc19")) +TLS_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o +else +TLS_DLLOBJS+= $(D_OBJ)/libmbedtls.res +endif +endif + +### +LIBOBJS= $(CRYPTO_LIBOBJS) \ + $(X509_LIBOBJS) \ + $(TLS_LIBOBJS) + +DLLOBJS= $(CRYPTO_DLLOBJS) \ + $(X509_DLLOBJS) \ + $(TLS_DLLOBJS) + +LIBS= $(MBEDCRYPTOLIB) \ + $(MBEDX509LIB) \ + $(MBEDTLSLIB) + +DLLS= $(MBEDCRYPTODLL) \ + $(MBEDX509DLL) \ + $(MBEDTLSDLL) + +TARGET= mbedtls_selftest$(E) +TARGETOBJS= $(D_OBJ)/selftest$(O) + +TSKS= $(D_BIN)/$(TARGET) +INSTALLED= + + +######################################################################################### +# Rules + +.PHONY: build release debug +build: source unpacked +unpacked: object $(LIBS) $(DLLS) $(TSKS) installinc + +release: + $(MAKE) BUILD_TYPE=release $(filter-out release, $(MAKECMDGOALS)) +debug: + $(MAKE) BUILD_TYPE=debug $(filter-out debug, $(MAKECMDGOALS)) + +CEXTRA += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE + +####### +$(MBEDCRYPTOLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDCRYPTO_SOURCE +$(MBEDCRYPTOLIB): $(CRYPTO_LIBOBJS) + $(RM) $(subst /,\,$(RMFLAGS) $@ $(QUIETOUT)) + $(AR) $(ARFLAGS) /OUT:$@ $(subst /,\,$^) + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedcrypto.$(VERSION).dll +$(MBEDCRYPTODLL): LIBNAME=libmbedcrypto +$(MBEDCRYPTODLL): LIBDEF=-export-symbols win32/libmbedcrypto.def.$(VERSION) +$(MBEDCRYPTODLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDCRYPTO_SOURCE -D_WINDLL +$(MBEDCRYPTODLL): $(CRYPTO_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ $(LDLIBS) + +####### +$(MBEDX509LIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDX509_SOURCE -DLIBMBEDX509 +$(MBEDX509LIB): $(X509_LIBOBJS) + $(RM) $(subst /,\,$(RMFLAGS) $@ $(QUIETOUT)) + $(AR) $(ARFLAGS) /OUT:$@ $(subst /,\,$^) + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedx509.$(VERSION).dll +$(MBEDX509DLL): LIBNAME=libmbedx509 +$(MBEDX509DLL): LIBDEF=-export-symbols win32/libmbedx509.def.$(VERSION) +$(MBEDX509DLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDX509_SOURCE -D_WINDLL +$(MBEDX509DLL): $(X509_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -lmbedcrypto $(LDLIBS) + +####### +$(MBEDTLSLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDTLS_SOURCE +$(MBEDTLSLIB): $(TLS_LIBOBJS) + $(RM) $(subst /,\,$(RMFLAGS) $@ $(QUIETOUT)) + $(AR) $(ARFLAGS) /OUT:$@ $(subst /,\,$^) + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedtls.$(VERSION).dll +$(MBEDTLSDLL): LIBNAME=libmbedtls +$(MBEDTLSDLL): LIBDEF=-export-symbols win32/libmbedtls.def.$(VERSION) +$(MBEDTLSDLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDTLS_SOURCE -DLIBMBEDTLS -D_WINDLL +$(MBEDTLSDLL): $(TLS_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -lmbedcrypto -lmbedx509 $(LDLIBS) + +####### +$(D_BIN)/$(TARGET): MAPFILE=$(basename $@).map +$(D_BIN)/$(TARGET): $(D_OBJ)/.created $(TARGETOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(TARGETOBJS) $(LDFLAGS) -lmbedtls -lmbedcrypto -lmbedx509 $(LDLIBS) -fm=$(MAPFILE) + +####### +source: .unpacked.$(VERSION) + $(MAKE) unpacked + +.unpacked.$(VERSION): $(VERPACKED) + @echo "do not delete, managed file" > $@ + @echo "unpacking source $VERPACKED" + @gzip -c -d $(VERPACKED) | tar.exe -xvf - + +.PHONY: object +object: $(D_OBJ)/.created + +.PHONY: installinc +installinc: ../include/.created ../include/mbedtls/.created + @echo publishing headers ... + -cp.exe $(MBEDINCLUDE)/mbedtls/*.h ../include/mbedtls + -cp.exe ./win32/*.h ../include/mbedtls + +%/.created: + -@mkdir.exe $(@D) + @echo "do not delete, managed directory" > $@ + +clean: + @echo $(BUILD_TYPE) clean + -@$(LIBTOOL) --mode=clean $(RM) $(subst /,\,$(DLLS) $(DLLOBJS) $(QUIETOUT)) + -@$(RM) $(subst /,\,$(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT)) + -@$(RM) $(subst /,\,$(LIBOBJS) $(QUIETOUT)) + -@$(RM) $(subst /,\,../include/mbedtls/* $(QUIETOUT)) + +$(D_OBJ)/%$(O): %.c + $(CC) $(CFLAGS) -Fo=$(subst /,\,$@) -c $(subst /,\,$<) + +$(D_OBJ)/%.lo: %.c + $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -o $@ -c $< + +$(D_OBJ)/%.res: %.rc + $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -fo $@ $(subst /,\,$<) + +$(D_OBJ)/%_res.o: %.rc + $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -o $@ $(subst /,\,$<) + +#end + diff --git a/mcwin32/libmbedtls/Makefile.in b/mcwin32/libmbedtls/Makefile.in index 2fbc942d..65adc329 100644 --- a/mcwin32/libmbedtls/Makefile.in +++ b/mcwin32/libmbedtls/Makefile.in @@ -1,5 +1,5 @@ # -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- -# $Id: Makefile.in,v 1.12 2023/02/19 17:10:46 cvsuser Exp $ +# $Id: Makefile.in,v 1.14 2023/09/10 10:00:42 cvsuser Exp $ # libmbedtls makefile. # # @@ -112,7 +112,7 @@ MBEDX509DLL= $(D_LIB)/$(LP)mbedx509.la MBEDTLSLIB= $(D_LIB)/$(LP)mbedtls_static$(A) MBEDTLSDLL= $(D_LIB)/$(LP)mbedtls.la -VERSION= 2.27.0 +VERSION= 3.3.0 VERSION_1 =$(word 1,$(subst ., ,$(VERSION))) VERSION_2 =$(word 2,$(subst ., ,$(VERSION))) VERSION_3 =$(word 3,$(subst ., ,$(VERSION))) @@ -132,39 +132,112 @@ VPATH+= $(MBEDBASE)/programs/test VPATH+= ./win32 #see: library/CMakelists.txt -CRYPTO_SOURCES= aes.c aesni.c arc4.c \ - aria.c asn1parse.c asn1write.c \ - base64.c bignum.c blowfish.c \ - camellia.c ccm.c chacha20.c \ - chachapoly.c cipher.c cipher_wrap.c \ - cmac.c ctr_drbg.c des.c \ - dhm.c ecdh.c ecdsa.c \ - ecjpake.c ecp.c \ - ecp_curves.c entropy.c entropy_poll.c \ - error.c gcm.c havege.c \ - hkdf.c \ - hmac_drbg.c md.c md2.c \ - md4.c md5.c \ - memory_buffer_alloc.c nist_kw.c \ - oid.c padlock.c pem.c \ - pk.c pk_wrap.c pkcs12.c \ - pkcs5.c pkparse.c pkwrite.c \ - platform.c platform_util.c poly1305.c \ - ripemd160.c rsa_internal.c rsa.c \ - sha1.c sha256.c sha512.c \ - threading.c timing.c version.c \ - version_features.c xtea.c - -X509_SOURCES= certs.c pkcs11.c x509.c \ - x509_create.c x509_crl.c x509_crt.c \ - x509_csr.c x509write_crt.c x509write_csr.c - -TLS_SOURCES= debug.c net_sockets.c \ - ssl_cache.c ssl_ciphersuites.c \ - ssl_cli.c ssl_cookie.c \ - ssl_msg.c \ - ssl_srv.c ssl_ticket.c \ - ssl_tls.c ssl_tls13_keys.c +CRYPTO_SOURCES= \ + aes.c \ + aesni.c \ + aria.c \ + asn1parse.c \ + asn1write.c \ + base64.c \ + bignum.c \ + bignum_core.c \ + bignum_mod.c \ + bignum_mod_raw.c \ + camellia.c \ + ccm.c \ + chacha20.c \ + chachapoly.c \ + cipher.c \ + cipher_wrap.c \ + constant_time.c \ + cmac.c \ + ctr_drbg.c \ + des.c \ + dhm.c \ + ecdh.c \ + ecdsa.c \ + ecjpake.c \ + ecp.c \ + ecp_curves.c \ + entropy.c \ + entropy_poll.c \ + error.c \ + gcm.c \ + hash_info.c \ + hkdf.c \ + hmac_drbg.c \ + lmots.c \ + lms.c \ + md.c \ + md5.c \ + memory_buffer_alloc.c \ + nist_kw.c \ + oid.c \ + padlock.c \ + pem.c \ + pk.c \ + pk_wrap.c \ + pkcs12.c \ + pkcs5.c \ + pkparse.c \ + pkwrite.c \ + platform.c \ + platform_util.c \ + poly1305.c \ + psa_crypto.c \ + psa_crypto_aead.c \ + psa_crypto_cipher.c \ + psa_crypto_client.c \ + psa_crypto_driver_wrappers.c \ + psa_crypto_ecp.c \ + psa_crypto_hash.c \ + psa_crypto_mac.c \ + psa_crypto_pake.c \ + psa_crypto_rsa.c \ + psa_crypto_se.c \ + psa_crypto_slot_management.c \ + psa_crypto_storage.c \ + psa_its_file.c \ + ripemd160.c \ + rsa.c \ + rsa_alt_helpers.c \ + sha1.c \ + sha256.c \ + sha512.c \ + threading.c \ + timing.c \ + version.c \ + version_features.c + +X509_SOURCES=\ + pkcs7.c \ + x509.c \ + x509_create.c \ + x509_crl.c \ + x509_crt.c \ + x509_csr.c \ + x509write_crt.c \ + x509write_csr.c \ + +TLS_SOURCES=\ + debug.c \ + mps_reader.c \ + mps_trace.c \ + net_sockets.c \ + ssl_cache.c \ + ssl_ciphersuites.c \ + ssl_client.c \ + ssl_cookie.c \ + ssl_debug_helpers_generated.c \ + ssl_msg.c \ + ssl_ticket.c \ + ssl_tls.c \ + ssl_tls12_client.c \ + ssl_tls12_server.c \ + ssl_tls13_keys.c \ + ssl_tls13_server.c \ + ssl_tls13_client.c \ + ssl_tls13_generic.c ####### CRYPTO_LIBOBJS=\ diff --git a/mcwin32/libmbedtls/Makefile.in.2.27.0 b/mcwin32/libmbedtls/Makefile.in.2.27.0 new file mode 100644 index 00000000..e4579bda --- /dev/null +++ b/mcwin32/libmbedtls/Makefile.in.2.27.0 @@ -0,0 +1,339 @@ +# -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- +# $Id: Makefile.in.2.27.0,v 1.1 2023/09/10 10:00:42 cvsuser Exp $ +# libmbedtls makefile. +# +# +# Copyright (c) 2017 - 2023 Adam Young. +# All rights reserved. +# +# This file is part of the Midnight Commander. +# +# The Midnight Commander is free software: you can redistribute it +# and/or modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# The Midnight Commander is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# ==end== +# + +@SET_MAKE@ +ROOT= @abs_top_builddir@ +top_builddir= @top_builddir@ + +# File extensions + +E= +O= .o +H= .h +A= .a +LP= lib + +CLEAN= *.bak *~ *.BAK *.swp *.tmp core *.core a.out +XCLEAN= + +# Compilers, programs + +CC= @CC@ +AR= @AR@ +RANLIB= @RANLIB@ +RM= @RM@ +PERL= @PERL@ +LIBTOOL= @LIBTOOL@ +RC= @RC@ + +# Configuration + +ifeq ("$(BUILD_TYPE)","") #default +BUILD_TYPE= debug +MAKEFLAGS+= BUILD_TYPE=debug +endif +ifneq ("$(BUILD_TYPE)","release") +RTSUFFIX=d +endif + +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + +# Directories + +D_INC= $(ROOT)/include +D_BIN= $(ROOT)/bin@TOOLCHAINEXT@/$(BUILD_TYPE) +D_LIB= $(ROOT)/lib@TOOLCHAINEXT@/$(BUILD_TYPE) +D_OBJ= $(ROOT)/obj@TOOLCHAINEXT@/$(BUILD_TYPE)/libmbedtls + +# Common flags + +XFLAGS= + +CFLAGS= @CFLAGS@ +CWARN= @CWARN@ +CDEBUG= @CDEBUG@ +CRELEASE= @CRELEASE@ +LDDEBUG= @LDDEBUG@ +LDRELEASE= @LDRELEASE@ + +CINCLUDE= -I. -I$(D_INC) @CINCLUDE@ +CEXTRA= @DEFS@ +ifeq ("$(BUILD_TYPE)","release") +CFLAGS+= $(CRELEASE) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS) +LDFLAGS= $(LDRELEASE) @LDFLAGS@ +else +CFLAGS+= $(CDEBUG) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS) +LDFLAGS= $(LDDEBUG) @LDFLAGS@ +endif +LDLIBS= -L$(D_LIB) @LIBS@ @LIBM@ @EXTRALIBS@ + +ARFLAGS= rcv +RMFLAGS= -f + + +######################################################################################### +# Targets + +MBEDCRYPTOLIB= $(D_LIB)/$(LP)mbedcrypto_static$(A) +MBEDCRYPTODLL= $(D_LIB)/$(LP)mbedcrypto.la + +MBEDX509LIB= $(D_LIB)/$(LP)mbedx509_static$(A) +MBEDX509DLL= $(D_LIB)/$(LP)mbedx509.la + +MBEDTLSLIB= $(D_LIB)/$(LP)mbedtls_static$(A) +MBEDTLSDLL= $(D_LIB)/$(LP)mbedtls.la + +VERSION= 2.27.0 +VERSION_1 =$(word 1,$(subst ., ,$(VERSION))) +VERSION_2 =$(word 2,$(subst ., ,$(VERSION))) +VERSION_3 =$(word 3,$(subst ., ,$(VERSION))) +VERSIONSPEC= $(subst .,:,$(VERSION)) +VERPACKED= mbedtls-$(VERSION).gr.tgz + +MBEDBASE= ./mbedtls-$(VERSION) +MBEDSRC= $(MBEDBASE)/library +MBEDINCLUDE= $(MBEDBASE)/include + +CINCLUDE+= -I./win32 -I$(MBEDINCLUDE) +CEXTRA+= -DLIBMBED_WIN32 -DLIBMBED_HAVE_ZLIB +CEXTRA+= -DMBEDTLS_EXPORTS -DKRML_VERIFIED_UINT128 + +VPATH+= $(MBEDSRC) +VPATH+= $(MBEDBASE)/programs/test +VPATH+= ./win32 + +#see: library/CMakelists.txt +CRYPTO_SOURCES= aes.c aesni.c arc4.c \ + aria.c asn1parse.c asn1write.c \ + base64.c bignum.c blowfish.c \ + camellia.c ccm.c chacha20.c \ + chachapoly.c cipher.c cipher_wrap.c \ + cmac.c ctr_drbg.c des.c \ + dhm.c ecdh.c ecdsa.c \ + ecjpake.c ecp.c \ + ecp_curves.c entropy.c entropy_poll.c \ + error.c gcm.c havege.c \ + hkdf.c \ + hmac_drbg.c md.c md2.c \ + md4.c md5.c \ + memory_buffer_alloc.c nist_kw.c \ + oid.c padlock.c pem.c \ + pk.c pk_wrap.c pkcs12.c \ + pkcs5.c pkparse.c pkwrite.c \ + platform.c platform_util.c poly1305.c \ + ripemd160.c rsa_internal.c rsa.c \ + sha1.c sha256.c sha512.c \ + threading.c timing.c version.c \ + version_features.c xtea.c + +X509_SOURCES= certs.c pkcs11.c x509.c \ + x509_create.c x509_crl.c x509_crt.c \ + x509_csr.c x509write_crt.c x509write_csr.c + +TLS_SOURCES= debug.c net_sockets.c \ + ssl_cache.c ssl_ciphersuites.c \ + ssl_cli.c ssl_cookie.c \ + ssl_msg.c \ + ssl_srv.c ssl_ticket.c \ + ssl_tls.c ssl_tls13_keys.c + +####### +CRYPTO_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(CRYPTO_SOURCES))) +CRYPTO_DLLOBJS=\ + $(subst $(O),.lo,$(CRYPTO_LIBOBJS)) \ + $(D_OBJ)/crypto_globals.lo +ifeq ("win32","@build_os@") +ifeq (mingw,$(findstring mingw,"@TOOLCHAIN@")) +CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls_res.o +else +CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls.res +endif +endif + +####### +X509_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(X509_SOURCES))) +X509_DLLOBJS=\ + $(subst $(O),.lo,$(X509_LIBOBJS)) \ + $(D_OBJ)/x509_globals.lo +ifeq ("win32","@build_os@") +ifeq (mingw,$(findstring mingw,"@TOOLCHAIN@")) +X509_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o +else +X509_DLLOBJS+= $(D_OBJ)/libmbedtls.res +endif +endif + +####### +TLS_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(TLS_SOURCES))) +TLS_DLLOBJS=\ + $(subst $(O),.lo,$(TLS_LIBOBJS)) +ifeq ("win32","@build_os@") +ifeq (mingw,$(findstring mingw,"@TOOLCHAIN@")) +TLS_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o +else +TLS_DLLOBJS+= $(D_OBJ)/libmbedtls.res +endif +endif + +### +LIBOBJS= $(CRYPTO_LIBOBJS) \ + $(X509_LIBOBJS) \ + $(TLS_LIBOBJS) + +DLLOBJS= $(CRYPTO_DLLOBJS) \ + $(X509_DLLOBJS) \ + $(TLS_DLLOBJS) + +LIBS= $(MBEDCRYPTOLIB) \ + $(MBEDX509LIB) \ + $(MBEDTLSLIB) + +DLLS= $(MBEDCRYPTODLL) \ + $(MBEDX509DLL) \ + $(MBEDTLSDLL) + +TARGET= mbedtls_selftest$(E) +TARGETOBJS= $(D_OBJ)/selftest$(O) + +TSKS= $(D_BIN)/$(TARGET) +INSTALLED= + + +######################################################################################### +# Rules + +.PHONY: build release debug +build: source unpacked +unpacked: object $(LIBS) $(DLLS) $(TSKS) installinc + +release: + $(MAKE) BUILD_TYPE=release $(filter-out release, $(MAKECMDGOALS)) +debug: + $(MAKE) BUILD_TYPE=debug $(filter-out debug, $(MAKECMDGOALS)) + +CEXTRA += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE + +####### +$(MBEDCRYPTOLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDCRYPTO_SOURCE +$(MBEDCRYPTOLIB): $(CRYPTO_LIBOBJS) + $(RM) $(RMFLAGS) $@ $(QUIETOUT) + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedcrypto.$(VERSION).dll +$(MBEDCRYPTODLL): LIBNAME=libmbedcrypto +$(MBEDCRYPTODLL): LIBDEF=-export-symbols win32/libmbedcrypto.def.$(VERSION) +$(MBEDCRYPTODLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDCRYPTO_SOURCE -D_WINDLL +$(MBEDCRYPTODLL): $(CRYPTO_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ $(LDLIBS) + +####### +$(MBEDX509LIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDX509_SOURCE -DLIBMBEDX509 +$(MBEDX509LIB): $(X509_LIBOBJS) + $(RM) $(RMFLAGS) $@ $(QUIETOUT) + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedx509.$(VERSION).dll +$(MBEDX509DLL): LIBNAME=libmbedx509 +$(MBEDX509DLL): LIBDEF=-export-symbols win32/libmbedx509.def.$(VERSION) +$(MBEDX509DLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDX509_SOURCE -D_WINDLL +$(MBEDX509DLL): $(X509_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -lmbedcrypto $(LDLIBS) + +####### +$(MBEDTLSLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDTLS_SOURCE +$(MBEDTLSLIB): $(TLS_LIBOBJS) + $(RM) $(RMFLAGS) $@ $(QUIETOUT) + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedtls.$(VERSION).dll +$(MBEDTLSDLL): LIBNAME=libmbedtls +$(MBEDTLSDLL): LIBDEF=-export-symbols win32/libmbedtls.def.$(VERSION) +$(MBEDTLSDLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDTLS_SOURCE -DLIBMBEDTLS -D_WINDLL +$(MBEDTLSDLL): $(TLS_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -lmbedcrypto -lmbedx509 $(LDLIBS) + +####### +$(D_BIN)/$(TARGET): MAPFILE=$(basename $@).map +$(D_BIN)/$(TARGET): $(D_OBJ)/.created $(TARGETOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(TARGETOBJS) $(LDFLAGS) -lmbedtls -lmbedcrypto -lmbedx509 $(LDLIBS) @LDMAPFILE@ + +####### +source: .unpacked.$(VERSION) + $(MAKE) unpacked + +.unpacked.$(VERSION): $(VERPACKED) + @echo "do not delete, managed file" > $@ + @echo "unpacking source $VERPACKED" + @gzip -c -d $(VERPACKED) | tar -xvf - + +.PHONY: object +object: $(D_OBJ)/.created + +.PHONY: installinc +installinc: ../include/.created ../include/mbedtls/.created + @echo publishing headers ... + -cp $(MBEDINCLUDE)/mbedtls/*.h ../include/mbedtls + -cp ./win32/*.h ../include/mbedtls + +%/.created: + -@mkdir $(@D) + @echo "do not delete, managed directory" > $@ + +clean: + @echo $(BUILD_TYPE) clean + -@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(LIBOBJS) $(QUIETOUT) + -@$(RM) ../include/mbedtls/* $(QUIETOUT) + +$(D_OBJ)/%$(O): %.c + $(CC) $(CFLAGS) -o $@ -c $< + +$(D_OBJ)/%.lo: %.c + $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -o $@ -c $< + +$(D_OBJ)/%.res: %.rc + $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -fo $@ $< + +$(D_OBJ)/%_res.o: %.rc + $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -o $@ $< + +#end diff --git a/mcwin32/libmbedtls/Makefile.in.3_3_0 b/mcwin32/libmbedtls/Makefile.in.3_3_0 new file mode 100644 index 00000000..f12c3d4f --- /dev/null +++ b/mcwin32/libmbedtls/Makefile.in.3_3_0 @@ -0,0 +1,413 @@ +# -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*- +# $Id: Makefile.in,v 1.11 2023/02/03 17:10:09 cvsuser Exp $ +# libmbedtls makefile. +# +# +# Copyright (c) 2017 - 2023 Adam Young. +# All rights reserved. +# +# This file is part of the Midnight Commander. +# +# The Midnight Commander is free software: you can redistribute it +# and/or modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# The Midnight Commander is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# ==end== +# + +@SET_MAKE@ +ROOT= @abs_top_builddir@ +top_builddir= @top_builddir@ + +# File extensions + +E= +O= .o +H= .h +A= .a +LP= lib + +CLEAN= *.bak *~ *.BAK *.swp *.tmp core *.core a.out +XCLEAN= + +# Compilers, programs + +CC= @CC@ +AR= @AR@ +RANLIB= @RANLIB@ +RM= @RM@ +PERL= @PERL@ +LIBTOOL= @LIBTOOL@ +RC= @RC@ + +# Configuration + +ifeq ("$(BUILD_TYPE)","") #default +BUILD_TYPE= debug +MAKEFLAGS+= BUILD_TYPE=debug +endif +ifneq ("$(BUILD_TYPE)","release") +RTSUFFIX=d +endif + +QUIETOUT:= >/dev/null 2>&1 +ifeq ($(VERBOSE),1) +QUIETOUT:= +else ifeq ($(VERBOSE),0) +else ifeq ($(VERBOSE),) +else +$(error VERBOSE: unexpected value 0 or 1 required, $(VERBOSE) given])) +endif + +# Directories + +D_INC= $(ROOT)/include +D_BIN= $(ROOT)/bin@TOOLCHAINEXT@/$(BUILD_TYPE) +D_LIB= $(ROOT)/lib@TOOLCHAINEXT@/$(BUILD_TYPE) +D_OBJ= $(ROOT)/obj@TOOLCHAINEXT@/$(BUILD_TYPE)/libmbedtls + +# Common flags + +XFLAGS= + +CFLAGS= @CFLAGS@ +CWARN= @CWARN@ +CDEBUG= @CDEBUG@ +CRELEASE= @CRELEASE@ +LDDEBUG= @LDDEBUG@ +LDRELEASE= @LDRELEASE@ + +CINCLUDE= -I. -I$(D_INC) @CINCLUDE@ +CEXTRA= @DEFS@ +ifeq ("$(BUILD_TYPE)","release") +CFLAGS+= $(CRELEASE) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS) +LDFLAGS= $(LDRELEASE) @LDFLAGS@ +else +CFLAGS+= $(CDEBUG) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS) +LDFLAGS= $(LDDEBUG) @LDFLAGS@ +endif +LDLIBS= -L$(D_LIB) @LIBS@ @LIBM@ @EXTRALIBS@ + +ARFLAGS= rcv +RMFLAGS= -f + + +######################################################################################### +# Targets + +MBEDCRYPTOLIB= $(D_LIB)/$(LP)mbedcrypto_static$(A) +MBEDCRYPTODLL= $(D_LIB)/$(LP)mbedcrypto.la + +MBEDX509LIB= $(D_LIB)/$(LP)mbedx509_static$(A) +MBEDX509DLL= $(D_LIB)/$(LP)mbedx509.la + +MBEDTLSLIB= $(D_LIB)/$(LP)mbedtls_static$(A) +MBEDTLSDLL= $(D_LIB)/$(LP)mbedtls.la + +VERSION= 3.3.0 +VERSION_1 =$(word 1,$(subst ., ,$(VERSION))) +VERSION_2 =$(word 2,$(subst ., ,$(VERSION))) +VERSION_3 =$(word 3,$(subst ., ,$(VERSION))) +VERSIONSPEC= $(subst .,:,$(VERSION)) +VERPACKED= mbedtls-$(VERSION).gr.tgz + +MBEDBASE= ./mbedtls-$(VERSION) +MBEDSRC= $(MBEDBASE)/library +MBEDINCLUDE= $(MBEDBASE)/include + +CINCLUDE+= -I./win32 -I$(MBEDINCLUDE) +CEXTRA+= -DLIBMBED_WIN32 -DLIBMBED_HAVE_ZLIB +CEXTRA+= -DMBEDTLS_EXPORTS -DKRML_VERIFIED_UINT128 + +VPATH+= $(MBEDSRC) +VPATH+= $(MBEDBASE)/programs/test +VPATH+= ./win32 + +#see: library/CMakelists.txt +CRYPTO_SOURCES= \ + aes.c \ + aesni.c \ + aria.c \ + asn1parse.c \ + asn1write.c \ + base64.c \ + bignum.c \ + bignum_core.c \ + bignum_mod.c \ + bignum_mod_raw.c \ + camellia.c \ + ccm.c \ + chacha20.c \ + chachapoly.c \ + cipher.c \ + cipher_wrap.c \ + constant_time.c \ + cmac.c \ + ctr_drbg.c \ + des.c \ + dhm.c \ + ecdh.c \ + ecdsa.c \ + ecjpake.c \ + ecp.c \ + ecp_curves.c \ + entropy.c \ + entropy_poll.c \ + error.c \ + gcm.c \ + hash_info.c \ + hkdf.c \ + hmac_drbg.c \ + lmots.c \ + lms.c \ + md.c \ + md5.c \ + memory_buffer_alloc.c \ + nist_kw.c \ + oid.c \ + padlock.c \ + pem.c \ + pk.c \ + pk_wrap.c \ + pkcs12.c \ + pkcs5.c \ + pkparse.c \ + pkwrite.c \ + platform.c \ + platform_util.c \ + poly1305.c \ + psa_crypto.c \ + psa_crypto_aead.c \ + psa_crypto_cipher.c \ + psa_crypto_client.c \ + psa_crypto_driver_wrappers.c \ + psa_crypto_ecp.c \ + psa_crypto_hash.c \ + psa_crypto_mac.c \ + psa_crypto_pake.c \ + psa_crypto_rsa.c \ + psa_crypto_se.c \ + psa_crypto_slot_management.c \ + psa_crypto_storage.c \ + psa_its_file.c \ + ripemd160.c \ + rsa.c \ + rsa_alt_helpers.c \ + sha1.c \ + sha256.c \ + sha512.c \ + threading.c \ + timing.c \ + version.c \ + version_features.c + +X509_SOURCES=\ + pkcs7.c \ + x509.c \ + x509_create.c \ + x509_crl.c \ + x509_crt.c \ + x509_csr.c \ + x509write_crt.c \ + x509write_csr.c \ + +TLS_SOURCES=\ + debug.c \ + mps_reader.c \ + mps_trace.c \ + net_sockets.c \ + ssl_cache.c \ + ssl_ciphersuites.c \ + ssl_client.c \ + ssl_cookie.c \ + ssl_debug_helpers_generated.c \ + ssl_msg.c \ + ssl_ticket.c \ + ssl_tls.c \ + ssl_tls12_client.c \ + ssl_tls12_server.c \ + ssl_tls13_keys.c \ + ssl_tls13_server.c \ + ssl_tls13_client.c \ + ssl_tls13_generic.c + +####### +CRYPTO_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(CRYPTO_SOURCES))) +CRYPTO_DLLOBJS=\ + $(subst $(O),.lo,$(CRYPTO_LIBOBJS)) \ + $(D_OBJ)/crypto_globals.lo +ifeq ("win32","@build_os@") +ifeq (mingw,$(findstring mingw,"@TOOLCHAIN@")) +CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls_res.o +else +CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls.res +endif +endif + +####### +X509_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(X509_SOURCES))) +X509_DLLOBJS=\ + $(subst $(O),.lo,$(X509_LIBOBJS)) \ + $(D_OBJ)/x509_globals.lo +ifeq ("win32","@build_os@") +ifeq (mingw,$(findstring mingw,"@TOOLCHAIN@")) +X509_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o +else +X509_DLLOBJS+= $(D_OBJ)/libmbedtls.res +endif +endif + +####### +TLS_LIBOBJS=\ + $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(TLS_SOURCES))) +TLS_DLLOBJS=\ + $(subst $(O),.lo,$(TLS_LIBOBJS)) +ifeq ("win32","@build_os@") +ifeq (mingw,$(findstring mingw,"@TOOLCHAIN@")) +TLS_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o +else +TLS_DLLOBJS+= $(D_OBJ)/libmbedtls.res +endif +endif + +### +LIBOBJS= $(CRYPTO_LIBOBJS) \ + $(X509_LIBOBJS) \ + $(TLS_LIBOBJS) + +DLLOBJS= $(CRYPTO_DLLOBJS) \ + $(X509_DLLOBJS) \ + $(TLS_DLLOBJS) + +LIBS= $(MBEDCRYPTOLIB) \ + $(MBEDX509LIB) \ + $(MBEDTLSLIB) + +DLLS= $(MBEDCRYPTODLL) \ + $(MBEDX509DLL) \ + $(MBEDTLSDLL) + +TARGET= mbedtls_selftest$(E) +TARGETOBJS= $(D_OBJ)/selftest$(O) + +TSKS= $(D_BIN)/$(TARGET) +INSTALLED= + + +######################################################################################### +# Rules + +.PHONY: build release debug +build: source unpacked +unpacked: object $(LIBS) $(DLLS) $(TSKS) installinc + +release: + $(MAKE) BUILD_TYPE=release $(filter-out release, $(MAKECMDGOALS)) +debug: + $(MAKE) BUILD_TYPE=debug $(filter-out debug, $(MAKECMDGOALS)) + +CEXTRA += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE + +####### +$(MBEDCRYPTOLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDCRYPTO_SOURCE +$(MBEDCRYPTOLIB): $(CRYPTO_LIBOBJS) + $(RM) $(RMFLAGS) $@ $(QUIETOUT) + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedcrypto.$(VERSION).dll +$(MBEDCRYPTODLL): LIBNAME=libmbedcrypto +$(MBEDCRYPTODLL): LIBDEF=-export-symbols win32/libmbedcrypto.def.$(VERSION) +$(MBEDCRYPTODLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDCRYPTO_SOURCE -D_WINDLL +$(MBEDCRYPTODLL): $(CRYPTO_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ $(LDLIBS) + +####### +$(MBEDX509LIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDX509_SOURCE -DLIBMBEDX509 +$(MBEDX509LIB): $(X509_LIBOBJS) + $(RM) $(RMFLAGS) $@ $(QUIETOUT) + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedx509.$(VERSION).dll +$(MBEDX509DLL): LIBNAME=libmbedx509 +$(MBEDX509DLL): LIBDEF=-export-symbols win32/libmbedx509.def.$(VERSION) +$(MBEDX509DLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDX509_SOURCE -D_WINDLL +$(MBEDX509DLL): $(X509_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -lmbedcrypto $(LDLIBS) + +####### +$(MBEDTLSLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDTLS_SOURCE +$(MBEDTLSLIB): $(TLS_LIBOBJS) + $(RM) $(RMFLAGS) $@ $(QUIETOUT) + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ + +INSTALLED+= $(D_BIN)/libmbedtls.$(VERSION).dll +$(MBEDTLSDLL): LIBNAME=libmbedtls +$(MBEDTLSDLL): LIBDEF=-export-symbols win32/libmbedtls.def.$(VERSION) +$(MBEDTLSDLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDTLS_SOURCE -DLIBMBEDTLS -D_WINDLL +$(MBEDTLSDLL): $(TLS_DLLOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \ + -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -lmbedcrypto -lmbedx509 $(LDLIBS) + +####### +$(D_BIN)/$(TARGET): MAPFILE=$(basename $@).map +$(D_BIN)/$(TARGET): $(D_OBJ)/.created $(TARGETOBJS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(TARGETOBJS) $(LDFLAGS) -lmbedtls -lmbedcrypto -lmbedx509 $(LDLIBS) @LDMAPFILE@ + +####### +source: .unpacked.$(VERSION) + $(MAKE) unpacked + +.unpacked.$(VERSION): $(VERPACKED) + @echo "do not delete, managed file" > $@ + @echo "unpacking source $VERPACKED" + @gzip -c -d $(VERPACKED) | tar -xvf - + +.PHONY: object +object: $(D_OBJ)/.created + +.PHONY: installinc +installinc: ../include/.created ../include/mbedtls/.created + @echo publishing headers ... + -cp $(MBEDINCLUDE)/mbedtls/*.h ../include/mbedtls + -cp ./win32/*.h ../include/mbedtls + +%/.created: + -@mkdir $(@D) + @echo "do not delete, managed directory" > $@ + +clean: + @echo $(BUILD_TYPE) clean + -@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) $(QUIETOUT) + -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(INSTALLED) $(LIBS) $(CLEAN) $(XCLEAN) $(QUIETOUT) + -@$(RM) $(LIBOBJS) $(QUIETOUT) + -@$(RM) ../include/mbedtls/* $(QUIETOUT) + +$(D_OBJ)/%$(O): %.c + $(CC) $(CFLAGS) -o $@ -c $< + +$(D_OBJ)/%.lo: %.c + $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -o $@ -c $< + +$(D_OBJ)/%.res: %.rc + $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -fo $@ $< + +$(D_OBJ)/%_res.o: %.rc + $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -o $@ $< + +#end + diff --git a/mcwin32/libmbedtls/mbedtls-3.3.0.gr.tgz b/mcwin32/libmbedtls/mbedtls-3.3.0.gr.tgz new file mode 100644 index 0000000000000000000000000000000000000000..03a763a524fdc908b018d3aa699e135761ef370b GIT binary patch literal 4392915 zcmV)2K+L}%iwFpADB)uS0BvGrWOQtEEi*1NE-)@>nKL?o{@6Uu;#jD%(3R*xrjJq$mgt z{{>p`|4f7PueI&a2t(g)Mj;PgJX6AaJ~{uD-F=$>-TmFl!8Vnv>}+jsy9@6u>+_S_+M?tz`~2_h?;fn?e;Fy){5PYv?(?4Khg#QqF>{)t|10=6H2?cMJC&9G zUq&jGN(I;G@+0;tYBM>>1*7Rj;Ssy_;up+dAc0NRbGQ+3G7KCRcI<%cg05Bw?a%>& zwY7p{G`SOquVhrTUC!lGf$Ax|_uhM~5p}zU-!By6$9@pg~TY;9(&vj z0oddnM-`hY6Qwx$z?z2K-^o>+OAAiIXUBa4((yS1Fn zRV@$-Dsrj4LDZuz2-VT%)O3egc3?&U=_l=K-xhyh0l1NaD+6YUl1);uVTUshOD%F5w>_8(%xj64L^?`ZtOfCU zEzl%8vop}q9p^ocm0X9LcS27WO6*7WmThd9;Qlsuy!OTh!@A|(wz#!Pt3KD0GRgM2 zm6UE8<{c?m6t+BwHXnDweH7F?F;>hzv_K&cR_&y2Wz|F?YgoxBrj`sEoI zt+>f}fHj|u@$FN6g=Dxy1FvsbQorX1+T5aVl>Z^3J)ggL#x%|UbFjBJ#Q)os75^_M zy~l1~pL$(zIk&`?4>Nsk2wwvTk5s;t4uP;^1EUL#Pn^{Djc!mNC;|fiu>{He{_3`iS#g~B9f}Z>sVZV) zns{|XvuwW%j&LmQOV+jBQt0!z9q`pef$Yjf7{-9|76T-jh>BHVniAz ztm^lBp@)eFlh|a)3I-BR)JQfzQVG7xW>YnL9vfBS&N{Xrd=qKUMIHEoKuF*R-e>&1kt&{BPAN@49g|SNiXAzdJKio+St}v&FH1xG-|J%$8!lJ>?^Sm9M)d!|{)+#Xk$${5Y24Os-WDMA z!&1ld?vB^&F1b}`PyJ*1qmf+Dj9!ns*80m>I=n2xgZtyFlSaMz7KZA#d<`bLcgG%V z$dI5z@UR_($!hp*VKXx!P&AbO(RS|*$F@rJ=50Y0DEaNj;~$OEZ~9yMyH)x~f4lKM z*}*4{gDrHqz!K|F*eC)~)3D^;yY0R$(1S8qf@9n5!SEGrV?E)zA?rN|eOmNv!txK< z11HbXTH**IM@yG^u2^d%n5d$g!2(X7O2MFSr^VR1h?4ZWoS}0OMx!N46h%Y3*kVJ) zrKAaO3(40~7fT_ByX~-ZT-l-~UwSO+k(11^;e(>Ox*Q81D;`32E!dQOvaMCLE!Ht; zah`>sx_7q547EfvZlHhP-uyE&)?GvmI9%38t|kgxKvS_~vW%d^)@k@$w9=*Joaxcz z`?3Wlxyl?)o-@()+YU!;DGEGvyo~E$lRR+fmVtg?&D5lD3Db!zxkNIM+2MZNj4>UN z8KNWW>%%lt{A2yclhP034Ltd{cd^}e;o@qEVSaPWaTJde#b)Co^s=y@f`0=#XsGnWF%}kvjRKq1| zRm)j+z*Jy&TubPAC2V;1OXO^!HE1agM9)HmOKZcQQx8Xq7%E z?=N?0PJz$vM%}@hLBy&qiA26R-iB5{eHXPxuZ{(t!Wa|I=&Z+KmV+;Iz;--TEvtqH}^aXZ>S(gC1fR;j+{dj(Lc81-8x2!42 zP*9*!Wq}&cPmi~??V=<`2rTTyLXvQ7=etK><9K$&tiuH+2G9sR$u2frW?g|9tt2HN zL&qvdco!#$Nh-XGd`&e>D6vhgK=WO067l%`QV+gM#jl}pM{*1QeJ?`&L==W)Nv%VI zK@Q1Ff_W+CjyN~j{v{MNX?FsLNuE9ohl#BlUofsge1^D@SS%cm$dMs2viTJ2ZVnFR z=5U`Ny>4pPS2wo}5?ZH1t5`N@tPe5-1~|0MKogtWqPfC-sug6oWpM0zK=94UP5tE6 zd99I3T)E~-bOv}?Y`WRL&>n;u&~lgzH&xD3flA<#vbJD=z|Gt*CCG$=(X|a!-KbyG z&r$ttUDjTgE?8+820|nVo{^hh0Za}MFNlLwi*(nP;nmOGyw;QuDB$+|n_ij3b|^!&{oL8Ax)Hd~Nek{dqmVhumHuGX-YLqSjjF(Gx5GJ#ImaJC~inWejKqKZLbhSmX|~& zVk;4)Oz~ML{Ngn!Hc_n}2E!DaMqryV(m?KCigh3-+s4cWhX*Q{&%y#gpo^b-As&*X z{9x*xtg7us#6bv)7 zGNTxvB%{X?+A|J|xnDxS0hQxUiMGsCr)fn`{Y*=X{im|pX{3!P(E`~slhd{@`(A&NHkY~!!AnHkecdO?_ zL1BPyS_onpq>#7~9;_8nMf_|*lcP9U4vUbGV2n~_>nXY#ohULam_gP!wm4<~K9oE5 zumJ^;qwO7O{J62%E5~dz#gUj#VY2Fp3keO6p>jiMJy{+n)o%#D$phBy87#_7Pxe%$ z5mFTl|LHNSYzg)|X&CM%^IR=&a=lyocG>fu)0j5b|0IJLYDMxi?tw1}A?U(8S| zuHZ=npcs)eH_DuJ5ke|;OFby(h;W7sVi5x@cf--oxM$hsHatSaAF;!1+OX`=76&GN zLTixp(o&9(xNOFCXHei!2?s&r{ECU*(fUccNl;<7=Okvig_n{#>>z`JjA1cgp)~F7 zF4^@IUnVA*eM?roh#2d7_ksumE`3;n?J}rHcv=xz=vqc1bhBXwmM*r(hqJ5IBCB`z;MyB-}o{37+nrF$%t;zp&ewx=#TTs@E744 z#{&FndySo+z5~>2LwylLp1w=GX=Qp}#tgUU%S4Hpi98UbAL`QU)a#Fe1WpMDo*)M@ zQ*hy7Md2y}mJ-4Bk|i!Yw2$abt$O-}2(c4V)b4da+}cP5M0Z9g1b8pOSmJE$^3D1A zPk#`S(qu&=4b_t4VSNTu0@3LMEsgmqU3*tgE^6oJ^%KG9N!6kU;4~UXEPKd6zuwGpND5M~V zJRuu^NE}h?!dwHbzf|Lz+IwdFrpd9=PGY~Z_J|1qq0H^gfl!0)2n`#nt7p zY#+r=O*XLlJ>he4J{Et|z6_UCIaV%B%#(c!pvx#dvHt9Mvmdbj3>>M znhL-k(*W#s`(BD_;rcW}X!fY5W$Sbh!^`%@v?8WTy&DKKfEvK=E4vlcJ{XF%jkwQ3 z!GOH-^_VG+3i%kPASXF?l_`tAQLCLESLA~{Gz8ju`DLwI^`reSP8z+he%QJ?Z++1@ zY?Z(IuJhHM~Nf?V0!M!S3GoXPxsO>c9NvRqVsC-?%e*^&4yV@cQsulYf8q+lQ~q z&F=RH{)gTD*6YjY@wDNcoi)DUC%fnFFZbQ<;q~h`*TCXgr{8?!db`Ij3x$OEsT1!@ zf=XxDcJg)F}; zh&(SnjG=QnGj*h7Y$-1IIZSK{dZzNR(T%4rj0+vxaI}edG@5lJw3~eI!zAlaFak)! zJsNEA%9ZrYY0&?(<6Awr5c`YX_^{~x4~YL+-T$$aG=Bb{_aMMT|6dvaHgf;R-rmap zw~SP#m}%GwtH`bYXPUtOB9#7I9({fcUo4iU@&E4b!4UuN?(VMce_2YB&NQyW2BiJV z_3G8d#mVIb37`)i<}aANeOTs~0C<)%5C{o15C@t=_nLb5pJ9 zr}djZ%bKRFcXe$_ZpB#`IzKun!GF6kvH=v8{Q6Q>)Q@g1(@Oep%J7suy zbABtb=><8i;2SK$wr;Jz|GRwplhwX{b8^nMiiOx`tK+y|vPfJ-fJ+JD3Gzk547EBkLL3CF_x3(HN9%{yJ0ScnwMRCoR6)p@zn#FxB!X8uhe*?@WVOfJNRZXESVBRZBSz- z4N_IRD)L3`%1%$$QFNc#MF4*p4^<(ZW}BerP_BCiYe~s0?4f( z$)GSec8b&#{`2}PnlF^f(fhH3_^((sJT3nf$1JuEnBD&0Jy`jFmy>eN|3d4*+2?*gVutjz{kJ`G{{vp(V`cv>Bb7G_IFiBYbhrVB5NO9=o}Fm{G@%wx4l&4cS8*Ygv&p`R4+8;;ty6)Qan{S?$Ktx>uF)5` zTu+=&iti`19g2!Gd5_LbW$tQ;1M1QmGy(j*L=@lM%nU&E@YKqdWQH0VanUI5{(5+L z&2V#wPo=4o~l!TY>G{lbf59OFI9- zu5Rc6-f8_-T0pPa$>sO#tNP_B?kKY;O2O%3F2GQIdDF@{-6?`2J{Wur@7N$SzW6bYEF__13Q zi>DmSiBI{9!h14AZ!`x$v2bKBW2vZ?MxB=eBO%mvlcJ01e}OJ0@-gVum+be#d%~J6 z;NB?F_)}3!AV&ug_9mAkrq0}ms5*AX`?A3l8${?iE=Di>PR8?a1Er4~%caI9GEvJX z>?-mF1|XOWar;HB4j2JJA!P)ST=4aM z0OSzqajY9N!^e+PbOMdaQ@DXqjnYp|-v(lpx5HFLEq8xJ<{!FhL@gX|OAFsD8ajF^3}v(}=f05D~`JGbpHYy(rJ3 zqTSiUsG`2H_`+-h$709nJ}bfgWJlGJOI&#zgeg*WNtY4d{_JCth_A(f*T!K}5ulNc z*e+G&PofPp{i@2LIYU2bK1JMFTE6Y~blZx{~m5T}kPRCE5 zj||y*odVS-vu-@sMXji20agT`EDaFm9(Cix(6IozjtO!dgiwrWbZpCh>e1w?DV5hb zIK-)a@Gy7N;AFIEa~uZIbN(pqX55SqdZeA{>7pGv4R*@(KLt?E*@S{xCog+unbO16 z6=^B;Qynct?IPQxD-ngof?N5rP|c{7!EK3?1VS)V4i0GzlpUx+-jpE*bSh*^_uX~^ zd2@M|%viQmZ@84|<}4y(w9tu*a;ciVxzRxs`gh-b$HV~vVP_MPIJ9-5+{x;M9Gnch z5T^)qJkZR5V5X(W758#mV#e48MlnIr%!dJuUS}I}u#4+V$f1qRVZ;g6Vh)rNhnSfe zL=y%n;PMoWjA+1<6cQr>Xe=+zB$S?1jkt&t>zi3*(z7$>AdB@p%#ymlI6f<`m`L1} zGlqR&q-HS0=T=0YJlMpq`XNbid4!$H#^@xXne^?mFwaE(Az3;D|4b)NaeQW&yanTo z&*JVZcEE~=S48};Ct|f2Gu(lx6@DeWjF+<$NmQ6;iW*}&6f6-NdjUB@aGyr9P@ZCR zN^YT9mltrDqE+I|qq^2Yycvr|j5;SvMl_$Qi`$=FQKBJaymLQ3BEg@B8OE-JsP2LC z^a3Sm#InU`NiIrF_An6S5vv?2{{Y>NKXw$hjz%2<|0D*%rrr$vA!&TTOh(Uoh7C%` zm+Aa7(FGy~eFjdMYdKXF9Pw_JQ$tdJy;l4iZ(-JB32V!11?VOK_)=q2Fy8+nCs$WhG&*<@tq;1m#4Zw7akLEz z3lb{1M7-*9NB-jLog|8p^xE^q4VqcYZj*i;Wx!PEM$R%_Y41Sk{r|jZ5R0ZR$vqFJ z{wLMmm~F{F)m~)$iLJlU-A;_@zag4!m1a#d#{UdO`sRxRniBuLT^aiQcf8qNo&Q)) zDsN<>dDhM1v^XA(ZX#u(IK`|8rA}t<6A?QUprdjre1Hs>Ot8j-G4vZ-U-|sv9NwKz z#{7`p>jq})942=hXzhLqai2io;%v{1uU0O1@vC|%;o`$?^%WF8yADnznuj0ZFG!xd z;^wI!zKN-0Sh#Jq)ZqrYG67Y`^3C%Oqs!avu0h!1i|9)c1bJoq@VW8VClv%wmWYbW zqzWm(Ty+yLQ^$cmoAKR7dFr6pogjC?GHzj}!Wt`?2%JIatQ31O~bxQKY4!=y)SDRB-Z^lIWbcj|j_Q zrQpu)mE?_Qf=-e;%D4|llT_g)FGs|kN!0dwLtWQ)#J2W6vYK1wVTKCR%#SMj=FWj( z${3?G%1GCT@TPG_8G{V^~>66Y&5KlgMVq7QUAx}H(MO|%<Uc}M z;;_APaWFt!*T1@{UEpkBYO-bDjaq7MSp+P&hEtYDVPUyFRfvM8gYjidolGrqVFpwp z@z+o)Z=}tb$y+m@{Fm!6{Y_mgbhOSQ^1rgTw=;bHXM1;lb^d25=|8*v*R*F^F$pyE@ndDRNBIkL7q*2?jxYH--q|pmn))GegMK1w zd}+EGL%;Px{T0^DQ;J-RFmC#hoTm#;=mGy#R5CGlDt?riFyQ!=0My=mDwpG$)(LoD z+2J?hQitK}R7p(E+1VbSHxY>UoHd^=u*dDlwmG?_`@55d zbv#xvA6{VRCnmJt5`klR3g1qw_rim1?76n7f5DC3_%dnE=ydm{qV0puzTi0vHfXbT zY{{wlDW-4jkjx%#O+%zNZl@N31{+`I6k|Vu09>2gdJ}Tbo|p@ZRztxVcZUm{dk;gM zd?hwsCzP9z+kn-rpL<>}cpC0%v_MtDO{Vz6@mXI1%|+*NwV{5q@oGh6g$lm z6)6^U<7q7=_mOI1xbZkebi-7x9n*OIwcPU`&bWmI2YvSRgh12BH1$kQ{ec-x*N3Ay z1U1fl!`o5QE!SeP5ZOf1aNrMCrR%h^)%A-z6p(KaDc03-7VKetuxMOBT?Ws2@#ERi zc3|n|!K;o4k1aa%mJR^tDF+L8Le<9Rgo>KQNw^CmxOK6tAt%T4)xt(=>3YxDi$MUo z;`I4&7e;U|VT4f2I~^hX(1hW>Q}mCX|1QzLTkJ4YCZW%ZCFt0#PH{*4eqyl6W1$!hfA>@WxmBON}_#4Llq}y9&bzc}u?cFQG zUuJdZSaH&ysp3Lu(>d!o!?_7S#Gg~UIKDQan#Lfn!BOl??Lm%VqYB2fK5wgY)-a|E zxuzf|`X@T@?njFH@eH-(QM?Ft+u2T)?PG>&`ZM6rA8=M=0FC?}qnWg<|CffuX=Sba z`8oDR;N-Y_@ov(z`~NF@yF>SX;uoP1|8xFg3F&{n|GV)1KNusso0DaV{mjGEAc0l- zThbEdf7<=8dt3X%@t+6#`#Y=nk7cA){Kr2g{v&?*cf^0l;~x|NGJl}R{_cnA!_Ic* zp|YQOSVfbpqDfZKB&%qWRW!*enq(DCvWg~IMU#w=CYfc0B_1*%C-Z_oS6qrPCv%^4 zP%gx4vITYIvw_CDA5SZBpYhghWqgwH+o96*mUh{~b%ib$80_L~HJdDbsN?}oqazkW z)Abf;2jV9d0)CE80L@~ZfRA<|;OFQB&@9{u{21Q-{0J5T1~1MJEP`Yf=(>!8SqOeX zaF|FliHuBm$!NVh+xhBEB42XhASpWt&wtI+=TW$JI4>NZ573#jLMLB^6Zpw?qhS1` zsu3R6D-uS>CBP^;7HblWlH?khRyB*GaOv1R2{^3M0%6Y#;t0L?^-QGdwG>nqGeJJ3 zM#cEJQ%jJB{*LECdWiJ3p{cve2r zaP2wkgR+j?V|^%vqt6ufnmTn|v~C4~N?!Uk((_r(=hJ5)FG8Pk-{gG956L>GPxL zdUMtfjW##nq74U%`5O);G&kU)4F`&a8cqsuKH#|lp*80N6dH5Ru1ak=H|zqS(31H% zepp2wPSub@7*hS12f>i`po4JJ`#A#C4(9^mb3i%sRORHUYTQ_++VC)kGCUmCg`*e~ zO{nsWv^C9Q3Nt)X;HL>|K;oPj*bZ|FJT9|KmYrb^qg1(%%yQKYW|&rC!5Tv?rHo1k<>z zY#5S^|LS}?K46JX7(8n#(~*U``sFE7zg4Y87s!emX}6D<&cdk)*@5w*}rGdZHxI&S@;*ScP0fBcbo`xkrH-rP71#QFO^g(w3gB}wzT z-lH5$ukAsHUVGCAl&8mWoYvsj!FFhKz<1}jl4Z-Xoj7T)yyAgeE$yzP)oQg`t>nFL zzxd|x7|D-5U@T#$Xc3s1A$)Rn$;sMohVbs2H%A9L1=kt;0;6W@&W*HZD52t%L5_jXC+!52JJc$cZA?hWWv>6nFxT{Oc56K%V=Amxm|%g97?5ovQ-i zfleG?8fCreo$b=9BP&ClfXk~+@cF6(rKsw8V1g{GI)IC+-s_fD9a$Ob1YBNqg3nhS zC`DDz0~2IP)g`bherLXG22NNcg5lKD1u&e2TVw?Lb43q=TP|pnJ4dWuBDY+QkULLs zK)PH^D7RcFh;+FWQ0}~L2kG)orrh!_CDP@6NV)k=qnY64*?wWKy$Wm_c{!bQY)3`O z`+<4od#~JCQCBA#D_6?N#P&e0nu`0z@o<1EWVP34U+>kC%CDLimv@uqzkGRe$$H!E z_Y2zd`fSg@C({Ju)u37ELX=b7mwcfXLiUYmc_~Q6tFDLiBc%;@Jm57iLe|yRp zQ1d(6E69*eVih6E(&%+p5F?$$DuR@yv63WZNmLXievH+z*uc4J3gyB^rt1!H;DCRo zvPc8I{Pz67I62)vI5i9|GT9{d;srC}mzRfMNNd>OWskqcz+KP~lgaFg59d7OMk4bG!BZrQTZHZ$f7kJ~J zH$`*w9$3`9r2?_~6OSOnu;n>7!>IkvR(}LRmiiTq$R1DF3#$AMTj7xeYc)aXv(H$! zkG^K@+ctk*y~21`v!BXb%4@fgTS!nP`st?g85=p|`1j_TJG6^uQ z^Geo9TKJq6mr=3(Qi#eFrR;eUqP)&@`KsbwsLi9p^Yf#FRC89Dk=!{dYp_;X|4@}R z$f~SCsLTj9MctF7a!YWKj7b1Gx^up?Xbaqb4*INCNoix4Q`oH)1@%sM12YLP>`~NR54v)?civs}CJTi1&!FGjnz_$>3cXMrfY#PG(DQ{N! zm~P<{+1%i+=&H|b*Niznwrk`>#y9^*EcC}VyMmw8bVKIFU+x{)Ky)GpR`gqLUc=V6 zdE>{X<2C3nkHw>g-8e2?50hMX$k`kPGa`iiUziIAEHl|CzBNvMz1RsEg*H5=CXp2< z2|AGx*QZ9w^_}JC-n))}3(T^7@3+?V%HzMg-D&INfBVTg{^voSf5`aX+dVqM_o%;4 z6+mI;y9w+$!@!QCc4#E>HMzLL$QkgB4_5hkSAjj>&^@VMgzBZr!!WF&ZMiHoN47iT zy277E?8Xm*8L32bK(9^&rG(ei2Y}uJ!Bln9J~tGVa2Evl-@P$sA(PMrhWrAdjlq2~rHDd}EMnh`3d`;pF7Y0@l|iD$N$m=;9Y(G?`?P1^Z!FUf9w4J)#>XaWAEhko89wt;@48k zBYfE|L-CGH9`|JWzBVH{>Yy}a#4fKoha&<4jOH&M+J);THyh9_q!mY|MKeB4uV^uk z_nHL$RbY-oWOGnzLVEDV0^NvN*Ji*r)$=*Z*&HNHttjiXc5Uw}x`rb;Lttn|CY-HI zxyVw4G%3_11yR_<4;%5Ho*5;7`rcbR@Z~E|&^|nLJ*9yjv3{|KlxjrE`JmH-^NZ7C zY(Lz6pKIu|yXA;qwoN zKX@ArI_Y&t;nP+F#q@`lweH89Z7)AtsgJoEg*3qz< zh7F`!<}?(`$Duu;Hhb2L0qGkQaTb?}z*O5rgK2fgTo_f{%rZylA9hB@nKPOZd_x2- zm_w|BMK%#e`4iuz&nTEK<7YVFSqM?I4Q~3L-IDH5wM=2&7z2Jyy%EAGTT{RLo3k6S zFva8<_?8nPg_=zFd)p}!XpN7+a3NgeU;ZBavzk2lM{15gA-H;rU4-^%>I$cHBwR2c z#}#A)jYHFTTahTdOMxxQ3R|N8MUZ)u{39my*Qjv4ts2R%PEKF%p4Tqx%=kit(be$M zVAUU*)MO~YbGFgG{jmLXgTZ{ceYy;pJVAd-}zy@}8CT%c^LL2~tPh zE5Tm(o(XRE?~!24!u#VPXW@Nz3TNRx6Ws3KCqYHlr`|7~f8#;mb5npPPgtk}K^R10 zwO+eieyJ`NMt2H5Eh5Osi#m;bgG@6PuhMImt1Jgg*V7wfIft1Qd|QHYDM57>Ddubub*Zm-vW5Apm%)_><1 zY6q$lIG+Wy{E6CZn&U72T20A^ZCnT2bPHFMGTPytttnrpZfv=7+75yAH*N!95pT2xmLFyymqtyZhfMxxm@^b5F1 zUgEEJX@)y9jC7XBvy=R~#l(@p>{}PK_R2`eEM_et@#^&8 zAV)xEuu)*!bCAyuUms+T^GD9umRnHC)(e;YnH>R)g%i{raqOnxx3!TX6E5>80rEi*B66tbc>@ASN*ji0=U zb>SuZdiF4J)Rb+3q}v@JSh!`;U%_50+!Bx-VBbzKGlr;?(gV_42G`HnZ2A+@=6=A{ zni-D*s6{CZrU&Jy5R!+A#5_%ItyVHWOw2GO*A+8Eg26ksD{byX^N|pTHnkq*`+WE1 z$?16w+lJ%tYWamk%z#?Hhh)vn0X%X_$9x!;bdIP&g9sM&&|_q6)@l*ktm_J-M!fJx zwWy9qc7XWWaQunOQ5cCyh#-lNW)M((lM~9dHu48NQtIOnec?@E69)j~C){lzXd$+J z_kDB=n_iKVGMIWz8hVVo8(EEFLxDoFU|lCYV*%bK%fiEmtcxC)6G3B$o$oIX_P#RC z4!=79KX<=)y~~z*gpeC=0`qEY);7q$Idse`&kwl{!XE)f%?}&RZ^#O23cKfrjg7j9 zT3KA3R9D7u8W`^p!*;>d@a+;(^^Ww%y)aeZIIf9C;@BdZSZANHG=a+CyT@BB;Y1w| z`+bRZDO>T$Y#hHfZ=LaU97jt>=D>}|fPHJ(_7HA-F+edd$hc*7KY1fZP^#CvxIh$w zsUEn?o^bZ-S>?`$VJyK!7}We{0?@`Zg0W3b&Wochm>V;R8~2aT`>8;v9MWB?6r zgq|?+j4;hM&QC9n_jb<@Qpk9$FHK*P&*v@lGpwI~=5uHN4=ttdw*TLI((CB{pKgC0 z|NkJ*-|GM2TIc-RHwR~_=O>d`>4U`5>yvj5kvVuyIKnRD5r4MBqsh%d$Uo%VkWuR7 z#1P&Kd8|iSWWbg~h`b-bf>TJ1{UOw-Mgi1k$c^u10L4(hMmwX6I zBFJ|YBa5KH=fF!o03s3OyNZ!T(BKpBdDo<8$v@Spr_fno3Cm^dgn~V$%Jx5tXxTke-Z$TF;@F{o#KlG<$Cn_I* zH%9bZDg}Gj__6SlLXcI*Hsc~rjM2~tY;)MiCXv|NO2IskV>9^*zcHM7JH=tP^7HR# zhx%eU-5g^VStzQs$=5+^ej34e+#=9&6RHbxWoM)ohSWve|`VQLp-bX|Cgra8hcZW zeK_Yk&+fMV@3yzM_3wXl+ugPPe~9Pr*Z)xHGP;3ZTb%5kd|GgKF*kjV5F;loksmktQn0bLnmOjT$MB}PN20lfUQ2o zOh14)K}tyDv{H@pVl!nGk08-vb_NIKRdo+>hzWgy`Z17<;E9*L6{kL`>m>4o@L9sx{?xF z9Qj*8i1~xa1iT513EoC3Br_vfZ!&pc@!Z_pv`k)Ke#?t1;KHq=!@Yy!vjerI7oKZ} zq3j!OKw;kj7<|9qHTmaD%&Q>2uZ%Vq0v-$2V8rB`_!b{FbV6|jiey@*hEA9P@F_xx zZS0=0!?O+ca`)`;45!-;&%ZpmIOo*9**!hoJw87?IAbTLZ0`hjub(5(5pS>9?(w(m ztHa~{M!Xjz!}u3npZZvqQC{d2Q#4ynR&=mNYcdV zP>hT8p5~e+r84W0AT3C}MCy^9ADyw9G)AE;Ta-#2Q-72VXNDg#-ncTvIFNH{QI@ue z3`Au-+7Y1|Fzp)&;JkdWat05U)R(Bdiq~a|4UE*IMVU*Kau1o#_^f~n1LBxEO(Ix^jmlG{sf^WB&Jzpdi$T~7aZ`kihk=l_4Q-v4`$C)WQ5 zd;4Ds6=sp!r%9JujOj*WJwAYZOb$|RG1}G&eXY>{%L@JV%Y%Ku8kd^eHlL9m>aZs6 zG^GC@(RZE#Fm-Q({Vuh2j>5s-8-xDcyEy&&fKy}b+s?48q^}OX6^9t;OF?I>*QEs@ zZ|**a4+TH{X<*q>DA5IefKJ93r>kdMkJNxN8$R|&6vD#vqDUhcCl{v>1jbOvr|e`J za00+DML7TR;1DPR0WnX6AS*Jl<2z*kWbv$H+zM3N8eSWrgHWxcJwFTr2lY!IA|}8o z7%T#J23Y_oSUILdMW8(sBS`ns47RMT^SO}3(s1NNBbBUPh zMes}pRxKgE!<3Kig_t8F@U9Zf)8j7^eyC6r9V#bB@$tyy`N3jsn!Um)|7KaM5NOu} zT&i+UPr2H?yu1|OVH5XXlkl33n`jdZbzS7>Hf@8~G@L7r4aN_C;f1;ci{rvaS23I5 zT7o&4i|BY5u$zLX^_qyBZRq4At$H~ffyueP#1H}pLYvRVw7wUgiWAbDA1FnGLk^zR zB|R&%q?VP_u4Kirvrcr@BVmekRn8P6%EPNEwE#!3bE@~M@M1x=@IYH>brLjyP zDXhAZK$b~>h^y8mhf88{7I?9Qq=a?^3vH60#h~#0F_NWCQl>@^BPh{CV_GmJy+}x& z(3?Dze&U*mwX;Bd3!$WbmWT4mYH1L~*iH(0N)eg#Ty-d_kK*F`qZZ=ICUH`m=07`# z$fU(glSoTw+ZlScHECT}9{`YVVkr2j3NlKU7-@CH^%^P|8CL?V+)xDObJlq-?L2wj zCHJ(S=PkQ`(4e@oqe^3f3wVl+-Z0RliRnPh@dw7t+^5ur<-A^EkPPj>`7PF`_ASX^ z+&LIRP$X{vd6-Ha#lKb)isOrfbD(m;bZr zv6A(^$K`%i>pir=-(j)&F2|H&zTcO&|Ca{~vY=2`Nq z4k9u0lnkQ91E|Vc;k@d?fVxSYV@lvv*{vwI_a(Dr^jDJE<&1t^Rv|uxZp}ZXFH`wC zx!e^(jqki6wSFG-S+M_y;N!pyW=kIUx%2s-$M|o3{^uc{iv1tIx2*S8coyCNiUUAe z|8H;i*WdqrkSE^%JtPm>i2Nv#&u1dx;&>DIKigKs4n+5_H++H_+Mle5tScGMRxYSuyo^iAHhVs zr-$ey;{cJu2WR;Ac=zSe!G8Tw#%_#DGC~-mlhkCSdP{>bhLMXM!oCV7h687BygTfS zYBK5l7n$wr{Wt3Fbv>~J>;TOH0YX(&dMI z2NPeU3{|^v?%rC8-e8<%j94JrE*uXH;aMo}BEC#oqKg){zjUi)Rb1N}z5_;P+MS}u zEJT^*JR{fneX{J14tBkInv4BTyeoI!1D5~sBGGbEy`~{C?DK_nm(RS&8ut9oWJJ8p zJb6H$7Kww{;RzS&IPPbtA`NRDw{U1G9KBB+SGkK8x4)ui=-xS_G=$}~7B97&4eI7d z6*jCTbzy%f99;lVK(D`EQd7TR6=Rj`@3qtLZ+j~Gf3zC`mh%J6_y0WZZMPrm@&DVM zwg2Zqp7s4N_jY5;h;IFaW2PD3#&_TJ7hl4%z7gi1d?QTi<;o6kp9`d=(Pn9Zapsyc8dAOAs)|{vC<9{*~$7kw$p!j3R?8 zu>wN9ZdE#xf4&hzsO&B86N#RX^|Ny*}tAA4kS(e>io0 zn0i4lLlq_|k<9_OC{sd%J`Bgf_x+0>cQVOsp4`@x`v%g1^ASsE*4wvFM#^)c5dsF0 z`$WO$JiEZ4s)5dDpCMU(9qDoBq7GzH9bS$hUfc9aq{s-BpI$0!{HsZT=39|L-h6}h zIyfT@g$Ymy*z#9pYm)~7aNeYX;-GZy*seJ!KCNf_Vuv~GQ?=$i!ZzY+&HQ7Z}va7W`yB+^ld z@A2113ZRvvGcssrq>8W?4qvr63+RND8><3P))G)kcLZ&oTUJE?i&h}Rs@!Q1 zX{q0B^q!p?(VA{U;i-V-H5|PXyxz^)+^1#RQC~nVsTng5ad|?{xO%$-&y;D{Ygz3+hc1ot07BPFFU?AnfQVnGGoyu zwiSKU3_z;(%F+Q+e(s8>Hao>b-QW_Mh@(M$KtgEbr^-)0F`Q&y6+{h3Q>2QXzL0&c z7Yayjo9*P&Ff8(LMiC$qb(wGHlREjNBFs*bRzXdm+tM!V%2BX*zK$fQFk+>O#}g|! zsoUt$OjpU?MbjYD3|NV$E6DV{)T*T?%38McNR^xRKs9St4y2R|j;7RQawkphD9O|= z{8q39hz1A7bWPf|ynX5!4?<-L7p>dUYUq61ucznr%k7RK>VgVoWTtzO1?dn-XD$e8hU#e`cvS^cL+N*(5mJ8v6krIn zuyo1wu&tYW01vb=0#ZoqXo;vZc&Cx;WXTQN5;I4xtBu2;r#GiwR6sXZK%Q36DJeBi zu2)2^r(t%A$^bdeUX5VCh+scQFkcD^pi+n&MuHf5=pOmr5$_%O-WBf&d{4ah6ZwnSv_#j*9qE)nLyuyQ z*SbTs#?PQrxz-%Iktuy1W32W{MOaw@m{){A5LgwNFSR95muSkpaO-hggqi38&@Aun zIlaAXXIoTzRHt&?!Otvn7W9IkZ&jn8c0qOsR4Sul8_LRT3C=9pIU6MDX1Za9tg3V1Xz0*+Xxp>w3XLpw(dM^X($`M*wVQqI zX}iw4w|7uxjt!(KmS2C#9kWjS-i_b8@jKS^a!FjUo|B~Vo7wH#-Y9*xpI&6w-YB;m zdXz$U1$4I>bWcF{szJ-8-(u)H?1w$BydRdA-n{&x+A=SdVdOM{xSaQJBsMnYE@=kJ zOL(7V@_6!24CV2px~cr`b_yiryujR((4>Xrg(p>UDpz!-+{&;3JSj`?Z{O>gkQy5BeDV};09uw;cjA)+{rrB7M_OdnPQ6|_ zw^ivolPnHdES1JlOM0Uc*(^y%xF$4KEuc|_Qw||X8B)22nyd2#YYNbvM@!Z`GXqw_ z)|NUTrlpk7p3fXoS5=4k>h8S^re19!5?)D83H@3TLY)dMZ}BUBAEhzE(R|Yzmb6+A zYLrmIXHPdf;muW|Nm8s^a!D1mWcxzfPRS4gmQJQqNT$=(=yWwY9i2|Mn9ehePEVuL z)#((H>Gm};eT__3AqpP1t8Hj#Sezf7?3CTRSe6RsMmI}kdub{?qSDJ!=`2m9PgMFE zmF{9P>Mo9CslJmVnWm(7mGrKX-c!3xFdmUY_ef(?yBwijDWTqSg!-j~`pXfbC2g%n ze?e{q*Xr>fUHL~({?X6&Bgs2{X(eCYEir0clPQkcDM!Uqf=c=xzpJ2$*YM6!W z@Odi>*?Y<%JK8dt)&kxM{xxm%MA39a&dgx%qA*BkEp z(}8P)K2T@1Ow}iohW7qzHbKkRvwt1`I(ek`!LQT_l#^xCEsfF1L}RK*EbkUVq(O_C zX_#^9d{lzTi^78PCJ=Dy>0FU%#v(cDm&=hKI9InqV)7ZH>?)yrx8_5imcsVh z7iG23%lnJH>wj*WhT^~PuP|^2$(FXUoppr*ciq}TkFmkp^5r=2If>gE(m0KsTUx&S z?R=hO*|Kcea+($x&2CLBy>EK&NqYKXsjm|4S4yNpRVC_DRf5H5C7;&-c|M&)NBz-F z!Y{=He0l%PQmv8d-WBXbWaQ=fd&yuui~rEE=DB+Q0-NilUXm14;$GdBEEU6*s7#k8rYhUYY};99 z>E@!YvIQ2p$>cPl!u{b?SUh?{eiD;*gf9&<$oJ zFak;2oZ_494$h)y%qzDG-4HhZr>NClb;DU`%mOJ>D*CSer9U1AbMN@lpG;mx5mrlq zig=2iy$KTd3Ur}8onG~n=UFMmDS@a-84BCgbDgO1z%WdTCr5MuR2&UFgV7a~<~86B z#J8Bpj0K}m7xJ{M;0W%RBMap@A=55S1X2SmyR^usr!OUD<5>zsYtO-1V z9#=HzLeuzCMv12@aVuL?aIYgdX_}# z1P(W-FyG}hKet)3C_gw@N*MZaP&K0imG$dpWyJVH9h|1AwL@qc-s^TlQB0f3#6wbz z6|N)!elJwm;3wBn1eY@V%Cl>$0CowYoZ|2lWu9zTe*YBJTc}$$cRuRj+49?`Y^os0 z_acK4OK|NhrO#5brM(?Ci@I}~!6TcYN%^+(EYC-+;9!5`0NVqR&vl*afU`!5D6$la z2lBRfbw2ND$pC7rKyc+83^CyEB7Lc`JwDZq87f>Vps2<8G);D9^#q)Yo1_2H&h3nRwtUY=kR3>pC`0zLOP=cewql10#RB%!c3*Rapv>Ytix?C^@K?!&g zocp8etuj*~dM#mu8uhjMI3#hGGAoO267Yu$;pYEF0zVbZ6KbTZtxr7pM3npwkz(e*hsbw^dKaLSA>rj(uTtih^4)g zDDj?S8mR#UgD3>GNf^ZSfSM8nR|*p)w~;IH!)UH# zOPz#1$91anv`8#0(m2*Ui00!!BgYpPQLLePFo$BtFQfBtqyorcnog}6s$`ES4$Ykj z@{i%dNniqeqUHN_gn@1}4M*OWfj_H+(dWS2vqrMl@Ut%iLqMdBeyfCR%+D!(A12cv zhLM^GdB-P>An3WOVfLYWjRQyuo&O+0HO(I{{cD^n#()6Ym{#@IUVs=L7Yr@@2Y!p1D z1HtNK+*oTXg!c~paI%<}YUK$cH}q%q20>4s`qX+Z^C}vY?s_i;RwFOS%vyw4VK#s! zX*3r~dEN{Ywx0L(ZvfyaA?BexZxX%jRNg&h5kdeh1++9Lt^>_eH-U*|!S)<45c96c zl2GOS9U9i7XbOO7!gibSUGAL>R6gutSm4v~tzWDT{Y8fL2m85!pX|BYRbH8QPfa8- z<=tF>{Lq?e-IZ@-tA+!e>I^PWbtcl!FvMU>YCc&W3#>!>?%|QFLeJtyl?oIj_SMDG zT&@A4uP@%CQt>=Cn56mQcdDS37vsHKwp575i{afCZ$l{_p2ZJs@p=NceeoWZig#bG zdUpj)TRGG6!ec#J?)k44*U)WmQ8QDHdeyaT@7dj#s|r(@scQQ}Mca60KUUWuWL`$| zyOjACMdn}DA@kje{D&g)AL|eq!%3aYMxy%p8NZTId$2p2^Kji?b z+|eVQU->i%&ZG^47oikRO`=}TIxfa_7a_K(B9V55O(GV@RSLHOn65!oR~E{f2h_Z` zm#v9#2ZRV8XssJ!K_uM}s`pw|Hrl@$tGidl=G9DepYQRsELuesncB8nZM~UAdX425 zisg=%w%()-?t_XKLY~!?H1X%>fw__zs*HR*UN0{)^tw@5Gj7upWo0mzo}2j7YEe{6 zH~5uL_K=;y7@w(J!f#vkX!&H727xyM)F7md!&(~zlIm_+1fqQVCV{B@+uDT2QfnIm z(Ni*uuC-MlzUyula#{5)L9ftw+_qhyQru_5K>TjiG7y34rePRG69px>S}_>o0&q7X zw;u8!_d{VJO5*cP8qVj*Z8>vK5b@m~m~c{gLmn<6!1#DYC(UF%(tK(r&8PL!KsUi! z#4%OQXN}rfk36R8N#!vgzNLp2tte#ucv;>hUwu>(Z%b1ME0sNc{ID8DG{d~;-QL}j zC*alFL3ramX}6;u*Hu{>6#6fdQVSiy*G#}cR>NMNr|b6qL$cn^?xGWoM1Iz-8V-AX zlb%=rR1+ia975-P$i%ZzhY_`_fOk8V2-6lP1URlK+-tuidunzg+|| zZE9Gv9QnLyYl*OsAfs30IY(Xem(EN~F)TA3>( z67DXH2D#cAZSQinP6^n|Y%2l2^w+8aKF!)jfam^v%>uOJ|1yYU`qS91iNT9ttet6S z!~KhS;3vU6{chBRkqm51v&&=CDxL?}$2e&$ZX2ZsS9*4)MQg+Fyry_Ywrs;}k{A?j z{W?XI(oo1dV2ZIz<1G0CX|!ehEw;hQ<%DUo#v@~Lc@09VK@!6 zvtY7}c+BSGDkU%h-1SEHRN&EozEu6)s%57O7NDtp%6eB9fLz zKBUsoGG~&H3k*tCEYliGBp7J&^}_+$*G_N4#mRgzO02IuFN^-`e#FH?2hQT8c+%W- zTzF0{iqB^*F*jtE)fZFg9+iBW-=#&X!vIs=8^1I6HfCYs@RA+jB)4)nZLZ{h%X%LW zU?yH#!_L%eYe>}cZ(Jg+Z!o=ewwNhb!-g|=vUPZv6_4f%8cjDiGdNrq4+C4+z+%{& zYQ22xW?5<#U3yuTT3eGm3l(=weEzD-sBC!ll;MTqz8Ljdf55w z@xxoC4{wz|yjA+}R_ViAr4MhFKD<@>@K))=Tczn+rFZgTXudx~|B9k|-#dFdvUqt~ zIK_fH<^8p^o+xK!%Gh2s_cCA*`$M1>!KTP90;?}xN;3@vy`k`wH)W{1Oxl*VAlfxj zhDw>1kdxAv(95-whsEbKZ=*U-V2kGxjVt5{9)A?ED&%0$pm9}|=OI&o=@ptmYqYAa z58+X`kjRyHmC8!RbJ>NET5=)fENlU1dU*I7b0xN-dT1GeC3(mRfHZN)&Xw)F`WPBC!MZ#{O2m?e>&Ut!}*{0@o8s&<)quS zod5px84i0_&wuYf-F{gAxsT5~yZ%$To+Gfy$W2yNnE?@33;Xxa{V`IRrXfh_?O>1L>g)ds@^5>(A&!%ks#@YbZFpBYGGG@7F zlO)R4z?Q5@*%&bbn_EM6NnW<`1}cDI;Jy1)`;3^rkEnyvjb;)=aPuyEJmpuLa&Z_Rk3aV5kw~$z zN;pL`99YUFclkZ4vpI@C;x}`7bjt+a`6Sq9*T-voRK80-cdQVSu&XyZp;dgdf7imM zLb()3A(&8^p37ee*SH8FG1fnYq;-5CCwoNc8~tt>^0&X+Xeh=5zha5}EeU6nkoWwa z{(UE*JlV+5n3@zn`ezgf>2eLq6Vh$8D_YTI*wa>OC(ubN}tH*jg9*==lUbP|ogLEo1U?OsLO zV~GO5D;m3sd7tBG3SH?~9j>XKH8OV|c%2YFfENX&rc7znAx>Tu%1yhthfnpeHTaky ztom7@dRrTsdpsp6Z}I{VfsHC}vLp!7^^JTZoXF&z2dMzSj{A*06L?lCr`XE zdrb^Pz0jm_md_&)9wLjPJIZ3PTc6)=$RBu31OTAcsD3%gu7L6?z_K)hh6zrQJBTCd zSaYP32v9y=;GK#{>9dr6p29~7mE*U{p zyww<*XaftBPz@`(x!8$3vJpvQbdx0+jb=pKk((w|`Zkel=gGE|Od7;rgZPSQFkqYd z2cT4q+VD~O(%fAo_KZxL{-li1p*ab`E*W;AU1*6wIB|GI0^_JW&c)C2KL8)r^9`@CK@ z9d26x?kV+@bPuvC$r;ZE@Te&o+Oy z#k0eo9r5h)XIDHA`18Oh#w|9~tF+VlpsX$+s}06#12H8CQv)zH_)-I}hJK0_lot;M zF$uITX8`13mQcSKw{mmR^PPuSJiO9}R;z?ncMwwL{t11E1Syqj!PPWLjIp4=X8#N>#5Z=gJm@uLaK+oRMF-$q?H6A!o*i+OCJo%4SM%R zc`*-0;mjMcFWCsiI(DP3NG{HPa{9{bRu1l?aVD5zYSK@WttSPI6`_VzKsHpZ(6SXY z<$2UsL{jk;bOn3&k%8hnKElGAUa>_q!%X@>1-gXm$hhi!By0GfJp*I2u)u}365#4(l~`YbA^!3v!I$c(;Zf`WRCco>#J z$D@t~Yu*XoH(D1t!*WYUYD;@^%enG8c=H~Dd@BvX`I;RALy^uPkgxnWeumE2@^jQw=aA?O2+U3x$8MGK`HbdWHb^WRF>U!CG%l-?o zMPBa1$k_m5yGi&nz9d>ZTpCIb@qGl>hL9cz z(e4%YU#VdfELYxCRfrXQ(XA9Ch^$5{Z~t?qG!qKMUjWxts8Q6wvX%-#${30a(Ln*8 z#SZ)lKy7t(D?QP@PVaT_Sh~ZjtL@rNY)Agq6KshaL)BQrh-{H$x&c^GRRawZO@)M{ zM5)~1pA~QY*x;bMk6KDz==6=Sm60BZDJdG-^~#~<%CwrVJ{MZRRK?~lG1cT~=y$3R zy2Mal;=^cu=_lSTPjQ& zj&i(7Ybq{Laf?*!)>H;WWuQ=Tn#stEW8_MMkkSW@^$G11 z9d3kQ;XD?h>CBJCLX)mWCBm`F+maGH%d*uhC(ClwEH}$?)vQ65H7N1&ke9I0c2d1q zDa*`&TexuIFbp<42df79fZ)=2EjYLg#bq3vMh=e01!}`#z)%K^gWJf#^|(OI95U+@ zJd3Pzt8+C-X%0_w!`_I)d?z)XtYzx~mN`vgJb6a)jJM`^h}KY*4tbZ!3I# zTjA^53SZw=`1-bj-am&Vx*H(-J)LHQG1R6~g5a7vL~R`*d@2YzT0%}cLavsO+m6sc zOK8xJ5DjTN9j^Bexz@Vr4@dlP#g9SJj^yw7OCx!`SyI%l;!_OO)}!L1L3J3avkI!q zP~BBf2Ml#!jw)ARzg&TRTWxt!Cbi*(tfh9>Z`JN5(LCU1Uo{T!|7~$Y)aPNtr=J#^ zN9zwrScJ4$zg2{EcNnCt46|HiK<2RSt%&M8WvI$%(b-l|UDgX0QEi8zy2@~s54tlu zNN;5p)2Sd8^CUY8x>F5iZ!2&vhtmw+nRD>*I%eac@2;9^Bh@aYI!JX&sV-7o^Jv!4 zDUE_|7Eo{`^Ekj1i8@acI9}C6Va#It^sUS2%$s38PSOd_kaa=;YDIlaGtn%gxZ~-RQ%BYPH)D3W-Phb%ed~ zcyBu1j~2s80Qx|^F75}O&3el7m6D)5D%n?;S2NljTudY*P)<=zONWf0B;N2uMRf|I z%V4e)%rvzgm0&7dp&n@l2PaFHSmqf`el*bgQG`XerSKy)gY!1o$+*;mIx6hVjTYAJ zpX#Jg`Sn$z{Yr^csH#L=s!Fiw$Xt#1fVQ|#6jzi@CyANI(SHxclJ4^ zma-$T6#&&|Z)zYwqRLJvVS}9-4VCHA#8hQlneDpkEZtnxRdxVFH<_F!RJb32X^wcc zG~@*zfUqlysoCQUF{=DZxK5qV>0Pc|LmbjF6}rKU1V$ifn^Qa{#Id)x8S~2BQa6N+ z|0!yMhGjn-KP{|~+Ch!P)T+yHlP2)=$C7!Ott!z=j&Ax^1 z??d0c!gicT^1hSMXx9m5U#ibglDT-4(nhb`>kN%)F&0(kbWU3`u4U%+P+Y#XrNO3X zHYM^n`;-%xrvRpQ?=H=|vOR4RdjC z5B)f(n$dyE`gOB1V*H^FPSe!dAv6u|b-SS`rp;vHA*sd+SCRm~7biD{rrW@uou+Ff7~b(W`#)@?7ej0ujlqMidz^og-W##uZ1x2U?d1|8r)Pb~ z58}6gWpxPP{WRi9q| z>FIP5#B{aB)gqkp3o-l|JI8YfNhkhWE1FyW`8+^g5|PYr=V1bC^ej^HTg*`r9d@Po zJRB|(p|pa8VO#)+P?D+j{@$^5bo{>ceDC<^xMzKTbn@lv(-TJR`@J`B_FkPF9UNP) z-&ikRzuG@KIePsHPlwjts~@eej$ZBetN)`(0sx{sVY^nIL zI_tZ=H%HK#cktc8n}cI~zuJ5L@?gI!vG_D?fVYCt_yRYzb4KrV1U-+vd-(d$J9>3O zuRnQ=TREAAYW6k;XdiG){`MmH9vvPX?0csi?$HOq6!U{JeV*8YF5-buAhd2muf0L9=LQ05TITJYzzTSzevKd})an4#kaT zyN{Ynuu{ghhxr&PHsJvdmhl#Dh4~nxeN@geyUX+3)}mM*)u=rq_mi<9gDH*wKg#Ry$5+p zoIj`Y02>}7r0=&`nmZ|?1*JN)MK#M|FH*|WNZ8u++F zoVsw0_daW`X{++$6BiYYEirGb;kgG}PZ}NA(9Y*UVq|7!vm84Z&Ai`&>zNX|(P(>6S@Sy7C%Y&mg$Db%BDoD;J zEh#PzFr7H{=P=2KD8mtC@Fc|q_FsY7}$59XyxZpYsfQ5N7gy5hRhcwCz6YIi{dF}I|XxbykZ%HJKPKQg@ zWrB2fi-|Lq*rxB_eYEzDf8{Pysal{XwElfK;{!#^NpNT~0n|DDD6uAZqCCQceIpuf zTWr0^iWkH4d9;{Wj39Jq5)!wnQdPZq+p2lT9XpH9`E=~NTQv*uc}YssAl>TI)Vk4d z&7{Hn_s09SX}sT5>$~q*kZrA_GUB^F&Nix!?c!{;8p@G1OIR(YHncx;a+1LyobDQM zDO4r!s12pfBWbm@OlQBSiz&|F(Uh9W#2vbncWphZVg2W8^d>Zix*1MaTl;BV|LOM! zPoFC5KTn@-KYdvLxsT7umq&lIcdbipEJrwh!&7V}sR|^LKmudzT&gh0HiR zNDFK%w2Ed0CaF~AY4R5NnHR~EL~nck6vool6%oI2+K(o9d!OixeW=j`xw|Lo$Y zID!Xn-W~SOzx}=TQKz#=3u@eb^jrP=%UbD+)N5-7kAt(Ho?e^`PG0<=e{cb8vR|xy z6|h$MCiU-5B@I98#Qbc#^n&^|7!NrJ{@c#}7o7jI{{G={zjHhK%0KYWXU>1G+wCRi ze`mM1^Z)bz@A&89reG(TgG?<->Hqw|AS7hS9C3o#uU3Y8jw8OtSIR{Cpd&u~y`Et<{4R2mNqwUL_ zRdNjJZg6M0PDV33$mo%L1~{*)TXY;U%n@MTp*>BGky+PKHnN{n&O?cy=w!e+XFo?c z2h-`B2k~pTiZ*X^tf7CYe;AP6z*_UDKY#hH;PYGx{)#|R3;At>yum;BFV8>TLErq} z=)m=s=at~IUj z?Ht1v1mL!nNgyLxjR2G4186mKa*h*X9IkLp*jIprRqJH^PZTmxVteA6C2NV@o)x@- zA3p8vejv2@x54ht2cSuVT@Q!k#2*qtwYb6i(#?VPLAKrlSLcri&DlohzwvVXANXha z{r}IA`@iu1$92Dx-v8aL|Hps*TmCU}_u8kHOW!D@XYCc>jm}moR(` z-W;7@Y#_$OOY!)s*?nWF-uQpc@E`n7^ZdVnoeLGu&;LPz|8F|~-QI3*D>?t&-R=L& z|NoYMzMdWDkY4Z~`KD(11Twi>TiYj>%Y!&lSX$-G+ItdX?nv;N%t1Iaj;LGg-ZHWU zSuaaRq6->7Ut4RlsP*#?A{l>JD#RXxCfkqOv^%aQ*KH6@5ZSZ!Hy7s{fkd9u5Dx7p*ayTYG=VSfM|PkT)k06|*N|)h z+k?geVWF{c%Gi3H-rnD`bGF|Gbdw(!pd%u!2GwI9p(2wuX{i35y^)jrwh##$8${S+ zGscfgh|9H7ePaV{D~r zy?XX_$8w4fciC+@F(*I~TrWD;oi*wPc(n4{o%K)O?#e;Phac~Ah$ty_w$9}Aga zm?Hm3-PaoE;7dAntHu=D03eY%w$s@XfTXUODZWUjNW+&CLyv{~4rsaXC+bs8gk95M zR~UFigf*t6|N7Un7k)M_JFpZ-h+&tzWf%Axf14&?jJ&4&#f%Qz=ljbii&FtA4=UD~%tMy#e1G7q!Oniv#7Czx^b zdH^xe@E~ntW6{l&#k(#hY-V`i;FcWaCWhpo#Mb0?=d*Pp-QrUYI}nz(m|)ilMI!vt z`9JbCasOV=^65=E#E{q342yXi$xF^}Akz4Stac6*w9|&&H@d-;UK-TT2^=_!1vcAr zmQMB>H!^W;w)w0H*3!*hsoX-c0aDR7o#B!Hs}fj^whs+rlC`&{+~_ugGu&E5FH4gq2y{N|IPBmj{R zgelQ3DI_gOfpsgfo)|C^_C2WM#tvCJ@8AV&S{sSF6Uj=ml%zez3ZNaI+y@Jq7v-|J z$$>Oo?gmR)$SW{uZdYZvx`#zU%hMA4(HG!_M8t57-EP|cC^td4 z-d%G-BxRrh3-Yy<6K4*^Dd1&Ll_0M{z|$JTM~iI}lxK;}`!{K#NlJ*r`zJ-!C>yHa)0;>Zex9u@6RxX!NfAxOy0X>QIeqc(D& zceYZfqvoNg;|i{zV>$e9Qhn9fLS707XbAN!48YmG3#dLEn+e?W^m*z6CpTWLoFb`cFB$|Txr6~ z34@w7;_E60yn7P<6BZBkSi}}(U<}1GM3I{W2ftZ$yu!>*^5BL*fU@`9#{8Ra3$l!5om0AY^nRX zDC&QMK|(rgthN6x%NhFpvkW(DW-hompzUQj#f}3%-T*K@qV(QYZ-;h;#INsu$w*$* z$B_B;<{dM=-uJQQ?_4pH)tt|+`P8Ts0v2U#lJ=P8i?-8$zZW&J|G#_nPqzJk-u{o0 z0Xqx!|K8Tq|J(on9sht?{BTm;OW*@B3i}uMV!YvrxPM;Hz;~ozz^k%;J-__211jJ= zb2=;Nf)&0Gv+vrPw?&aE@{xY~=3OD`gfy^NKn$h>sJzTuk*Vq%DbU?c2FD}*hKR#} z@Pi{6R-Hf!6aM+aDg5QS@q=wV4+hIt)?jKa>P?J)(b^r3bB|0j#qeYH^S@)cSm7)R zh*20xELil7#FFG=l4&0xG8bg*6GJ%J^+@t*WqM_$k&B z?A-jd(ZqJAlbs6upVR$Xlkn;huO@##!FiaYN=-%{4&B*dyMBYltWF2R=sjdcTK|tY z4r@0=X%%1?m6_z1MY60mFjr$uNq1hKRFgI@!^WeFU{+9JUsm`Z!WErZ<7F)V%8UcGTU1)K zSmfa2g79L#k2%1)B^R$N>$&i0{2O51ddu**bTvc)f3@J&ITKqC5l55ke~g8a(ZeMI ztDPEEH14vP@T3OvF|xv8w8qz+=>w_mGWNZN#H8aRUSm|VkygS<&GCf<>oOQ=oX1!R z>Ua83-*AZRXpT+%wF3b`TfEJ~p@1jZISd75U%)gXjDKBDex3Kco!|WkkRN|EAn|8?!_(h8_jtnrO>%uh8dtN=w;do@o#a>=VeO^Z z<~(ZWUKE(Qd@yxxfS<+STO4}L&7!A_#B^rK-A=C~ohk6+xp>@)NF(!!94A^^42(@s zl4%JglHc2x3i#Uj>;1F-;rF`P`APpL7X!fmo~!&HKY6nCEdC|=I{2H1C6Hee7&dBI zN0RUe{DqcZ!)JbpIeoxq;ufgNP@kU&}E=*hA`WS;h(?9RGU9FM6E%hSeZB#Pg}tzcNq zNOjD8S#f}l-(|>?dIZQ?O~;GaqGbvsHS#!xv!P6c8k)`zODNPbcoWrT`!-Mm$cQY6}x=;b=uP5@O+oMKt^%Zvkm3fqf z!C*SVu-4H<5TQRe!fkVmn*}@|+{po<)BZ78gq=i?fu@NVu&$D|qGP)3_^|zC)mVyA zI^>fjV``bYR6JJ?UNys#POAy+fk-WU{!%ACZJL17AP@N~+V`E^dMzxWwN&L99n?McI5@WgfHj=L02+JAB&|MVK&q$QO9!paq5m4w* zw{e!0WQZv~XCf4uk&$Qvm!H}6jN(q;@VmG_ib^YuTTOE;oOs&2k7f#7^E!Oysv$PW zOR>eQmPnsMZhujb=Oj(m8UPe7x9vEl_+yUGGu#1n`!{na>+{<-B{PW=2%fRFaAx;# z3ymF-dgkV2VW!a2t{+PlP8ihzaV!pBCv7&h2on|AOxqB?K)wzKayp*@Cx3uQ1VW=| zV7Fn5)TAKRmIFcZUKO=~SjWT$xLYQCzzB(?+*d+@~ za}{7+Sh&&Gk=w@+Z(#o!Wpi0QWHOQf4Fcd7oM)?Er?@$Gk%*>A)F%B0(xn5*(Z*J2 z1A-2L1ZvG_F%%OoIA)j5EtM?AaUld3cDQ|Vv22sEa$;{wH#O>5GMGx6j62p4L ziOEl~0<=TC$FjV-tnn143rtw((q@o;{8p%(LyKFzI0LC(Wsc^!Dj-*YMAG!w?&%e#nHhJ``GKq`u&Iy z+66xLUE0%`NCq)Ei5{`!~?uDUiLwJtyx}+1CWm&W0VLHi1hKnR}#GdIY7q0 z<8NWH>_V?n8L|k{`dYK(8ZJmiX)pwGz+?a{20&oI2&`{Bj=R1hrr*r8v3Eh~aG%%r*4bUp;6L9uDu$X4`1&cBaLyYzWgZ5BFs2B|BBK|5?86n=1enTUvWtSIKr~MEK zLEkd~H?C?E(t}xmsv;eOF%2b&m2V^JBA|3&qA!t7#Zu&Xf-->SsqY{BfH2oXA69sU zbh$!up_XvQPbS_2e*{2IY+@{TMKhiV7dVmG(I*8AiHS&fCuqwR7?&s&2+Q?^br2J-=Z}JmbfdsMWa~>kh!zLp zfnMj1xRjWbvGBe=0A1m5dz(n5LWv%><~yi#Lym0%7ApHf<7&v~*ne7JTx+vCHP_yi zpi40sX(qoP0zbxu_HUyXEpjZ3(xMUIN$1Xz!I`KE5J!=Yl|&hD7;oz;R^6~ZJX|RV1yOo zWVEmMx;sxh@!+USnkf(?w`-Cg4=CzD@2i-5rkSf(`M!vx|~kE zK}-Bq7y>v1JH966#L_IXLF|Fol$sC;UsnY4;r6m3iITzxF;6sg#rP`DM57ki>jKz< zJ%_r3yc6dFszPL^M^a2h=2VU4WOIp#^&QH$B6&hu=)Lc-pv6qMIDMwcDTqF0hy0Di zfvTp4Z^6|^5)sSe(o`fs6yJiJ6~IjO(y&e4XWcC`IeW2>p_L*b29QC^@*2tIIR9BSc_9 z1;HPUyr3FRH8EbWYuWUv%e4yPu$a_bGD;I%qldUE$TC!bT9j( zIUJ4^nAZ3%$2wvccei@UaaSj!+6(oFTo&~`YiK4$YB(-IrqLJ4=q$5cDuwzqq0ofx z2XTSa+COfvBpo;)xe6ad!=yY%!)*C2w>Jx6fEzNnpT2&f5%LbIkFHMO#X zMwkZize1frL{qfQx{ix}&{MIS(?k^u8*yJ$#v3oo#H})LbFvbBHNDDSh5VugxBjxTeg|Kx3&4><&D1ot2?5j&E zgBAk+v9dBly+c{6UkQ_30YHp(>YHDd}anjfm%?7wZpgkaV|p&rUswiUKA$+AIED&#xoMGh=r)Mu& zSZ!cN(&0^Bj1fgVas|x`tN)~H&#>O#izafjUweDjFp*foha3-FSL*!p*6n=krH91- zrC5iN*LAbK|LL+Efv4JouTj(D3t5!YNIzcRkc1rXPCkliH=jR`hm_I48@Za>z`>(CMSm4fxRn^M_w>=#SGJI)8Q@gSL#E)*ARDRmKbS5q304lIT?2CbusNW0}VChVQGt!M;L{h6nm zt+)3#=>6?);|DO)Kk>udTKh1xY-JKyJrZ+=I{s)SK*njL1CI2(Kp!C@umphyWYvC) zuI$Me!f}Qrp!2Rc8(eua0I^j0R1A6y&AQr&&zo8R54^-8eBScol2T~E*1{0uFbho# zP6r>Af)uYaZZ(PvU?NlcNe_$c_$AxdHBxPPsFmXr8XgpkWML)vMEUS{tUqwL_juXn z6vblwxPncv#A3 z?2J!HtL^|Lb_Xjh>H))^*;zU^pdWyxm30WRJvl#bzr?K=`P!3bPya!@CF}*##0wtA z$kY-WUFe_cu?7>9dBR59)+alK4_0$NFpX%vAd_Hx!iz4EF^u}7V1?zx5yEhlW+!VK zQe78WBJn@LX@7Pb%bPZJ$K9>HXDo~NcIZd1i(i(HEriJ4S6|)T`fi^P8-}tw;_3fZ1(Cz8(FV}eO;^64?HJ*HU+26l-ch(=g zd%OQ0k6w^xjX{|_WGRN>fHR6CCAk3z7F?biu=TXv?KMrbkigpcD5#0*Emn)D*6}6% zWmJG!4{nMvd5;I7VQ087{MPE>yPr!<(DNv^ICjC6cUnj5o<#!TAiAuy(2HvvgJzE2 zgBwk*>l<9$A;dN7N{F;hkfm-{q9JasATkKuYdDKQ;la^eF2_+RBqCl93B6z|zxREV zQ5@RY-s(OUoNlq9>6+{Zp>{p$aulmiY?lZJPYXB+uBuUMO4Ur;nbJO3{US7MQ7iI< zMX#tDJ*?|893oJ9@NF(?<>&niyk0_<7LAx++2(lv;OyjYh!H1BBoqg?`KN&osZKom zNxO1l+La_#-c_^YT1?>LgD-~NXxmBAUL@!FbO4hxZOuC;*5@2Ynz$T>($&Jp+C{!l zsY+RZhA>NzS24CuVV6aZ_cHC56kOqAil%^*XPfyb1o1R?E6P|T4r0Dzict8P!6h}0 zDB6H0t$~V!txXY$&Sx`$m0_)iXGeG-<~%IOX9)%(C#n{?o%gIOWWuN?A_%lqT9 zaI|&jOT<(40$LlcwLx#k3itXY%9lA*!8mSzBg1jJ?gYa#k!2&kCr zhgCCmE`h@pI>Lo|tJMl|vp@JGGb)7|Ezvt$PtDLeaFn!1Yy=t5NHFbx5*s8=trkDk zu+CA5%TX>g8&(j?Ud4dWqGs!5(sRi=?7umEtG*L!*AeTFi!GO_k`8QErb4Jv5fJDT z`Aq9s954*jvKx=(gphD`T{`S}>_B_9c(iGh!SHf@BQc$aFi%+_%+v4?>LmIy*!)n$ z-sLe&H*SEs0z3*9n^2I4_CyIHde*NcBzoE5v@ov)rkj+yclC@yXR`CRM?yd}h6dvk z+_(Vit0#|JZa%{#;vC}%mpD3AJv8xzwJ750jOW;dX?S&WMZ6iVS8wh}LwD#~Y#@a? z4khDACV^(r*Rl;yiVNf!)1r;J3h}ryuDOnGDbs$OvcS$P1@(KZekRg=m6t#)W625UtN{^Q0WGNUIrw&%P@kOsEe4DhVFo^dF!b5 z@lU`~TpKMStA^qlMu$1iUDSpuIJ{S$HiHRvWD2pmu|1>&>?N5L%O?fWkt17<8e~I~ zJU-8cF;=o1MN4DZfU=TIm_l}fxw954baNsOM{-cJix2h<)pE^Uv-%wK+CgBv$)`^1 zx9RzJ+*uDgvEQ&{OE%j5lg0Cx`K*Cno(I;IkC7C4bLrKnC#oNdmlmJEeiwoSA*KG1 z0tAoGF=CJpO~4ZXF}_rvx{byiz5mr4fjyeeYl6zrwugPly89I4=bvgkxgawE%6Xji zFFdfDD&``Ko+|;8Nyb+yMI(Ih<SKk7!79!(3x7e4DbaXHaQ@21?ZVhA!Uyo>?eCq3_`De zc=)o7Y+W&0hresGL{ev05bLeegl64!#F?+SL8-<5+40?;B;zLc??mKr{GP-bM6=93 z)lc8uSq?sN!+{!7Ne$GcA9+#DtpFw8idc45z-WIa3#P&%%kBwyO<`g|W0+6rWB`ef z;wVuQe9SbNTTYu^Gu0%R`ziX*Iu}GtWORbZm{cpxK1Fwr^NI-xifvbp1Z|bv6*>G) zW*@fCuhvDCyRqe755MmHVuc3!*hX1t=13T|Z~-)M)M1H$>5pWO`bl!U8A-aNSn2|x zODI(y|CSR3qg|ctV zeTQ!|Fq_%|*QGAB=PPd6(PY5=7P$}s*=&94-7Lh|f?*s^Dx)C%zx$==YttsVf0lrSPNKQF+&g$B^MjjO6HAnn8UBM-kIVP7xHlfpA&YR# zx71*;*&I$&KZ;ROiC{FEfkn!MxAqp&cz#yQDoXwsJwVhHPj5TM&WYht%u~QBP2SUD z=GY@1O^q5-!dK(_nD_97;0lGPK|d;N5G2^dI69{luLp`573DSN8jU3uQL~jav5ZF> zaUxP@NrqAq#z@QCJi(N9LdSG{Bc5>^l%|nd_*L9ziLk6*sYMp3jw#wjT3WRSYp`bX zV9*_aMIDuuM4PwJh8B71m&$QKeW5n+yc|h8z)`6*S*t6O-E{t>;gz?`2H;qJt%3251f(HzJL>~r zXy_saQH&w6MXY++w@sQa=gi1VSIz7)qs^jqmuSr{-Lkc!rLcmuhRESNl{9(Yt8(Vv z9Q6@cK$Rg8fQ}{AMT8CW;-3=DFm^c%YW2cHdKPp^}nNl_%?U#Rr zgmwl$uvKI)e9&$xeJ3c{7`abx@r9xg%RWCT9SE($hVKTb9(;~zxfRw-xM z&daE(@dQ=U?zSeNm>mxq8m6hE)BX!I`fztA`}l(9jx85g5f;dvi`Wg=G>Ac_o~s2Z zzoj%CdI@Jv8>`jkuNL}YdM-kxG37;v>q==6hOimQQnK{&auinz8<#g#dF>(w6y9|48yga z+YvOB&1OsK+ALBnWG}!k%~MZgaL)aF7?uSdYV#(!pNGY8OqK<)8^>ravXUZwVsL)3 ze>Qjv-FE+#DH?$p=?hm{u%;#lGOc2C<*M*mOQ5)_pa=nUxSx!MfBn_;JCBQF@ zn-M}mt)b5a7c%oYbL2Ewn5GR{ zk`ocx4XiP30a5Oe0I{3NUlt(hYB zL4JMlg}#zj%9KQSE+VXIrs=)l8O;qeTHdqnLZOoF#BQbqNmKn%7jwm?EwlVIW1P#H z$u8EZ9Z_Vli~faoM~BUHOLbvA>p_SK_SFG;^pv_ucO{`j z$uYn|s?|=a@`nhJL^cP>fMGTLr$6lXPY0)c3fSnMT^zkUqN)?oUbfQLYKo?*Ig}ha zdNIIUelul7gdNy>+Ou@AI%A*6!j?ZHC909>JmLGA(OH?p znXUViLh@-d7yGvIX`}Gdz`lkdf~&44r)n{CTUeM-0+kNWdM3SICrnmD*t6jX4GCSl z+j~2pNSy}hFiv!5RzC_i1$680p$tHd`z&*SFGzJxj7)A`>@j`Q(=lXNqT#r)iWTa0$ZHEk1`zK6|OZA_P*+ts1jOV|9|cH%lN6uIS}u32q^`B-=OI3z6)PGjvW%E{^YGwk^MJI>yAt9) z$Cjok!_d2$*{P<4TUz9Js8*`5BaN4L=o%d3QygmhW=+c&qCJbplx+0wlETQuezmf7 zdFxpXNqgS6RsL4w2gcpA4X4p#T9B3I(iYflokW{tT_6K*KtlYl%j3hwI>32P&M1xv#* z)R{s%T@kggqYHYM3N;e^fT}3hAh5d7k_^`cl^cXYUfl`#Z*PTQRfnrzi+34w7Mi`g zc-h{wdMBM!V~Mgi*_>YXkCrVT$CGK@oW#5pVaRPzPG0@kTR;xqyop6w1dNU4#LrN> z(#BU~U>mIToKrJjP3A`e;SiEygLoCRtxu+oS*|YNn`Up0UVsAOQ+Wde($QI5aGFDS zY7CP>A>GgrozPa`X$L+~E1nK-k&w3(hSthW@sNmxW>%amsMw%wv1_NX5BdVQ+)L@E zDN~iomaan3$otaaJ|cTVV9jaiLurjAn|!PdvD-?f^2RxxFLHX49P5WH3AHNPlqM86 zF;*Y+^XK0Zlq5vVaYP&wlD5DiB%x=4HsnleLXe(hedhfoDd04ZVzM;ue0Oh;>k!-; z6Wj7a09}5g@aftb&VDlm9y#E)!Vk?Fl@y*gN+jTe1+$8r16$CD`lXHlIwB#=F;>=! zc2|i|(ydm8;x*~D0+!2 zi-MM{ZuVdHX%%) za~f#NG}Xf0Y7-Hem4@0sf7^-1D6#u!=my^_fFKWSC^URBvgTW;t|9MNm*({3{OBi} z?Bq&RbTU(JD6RXPzh&jitBM-AfbVHNn6ReL&NNwTuR|2`(vj_Pk_9o1RlK zItbADMC`yQX%<}&@Ilb-nMZ++Q*l82t&Qqge-t^>hzlQhBeV{==a4{()bnux0t1cXTuMEh>$*1&v{E& zgd((ppA=?P4;BN_ihhckeT3>;WB%jrbi;kIJFH z;CUW96S(ot-X6VurNsbrPK2o#A|slz_5#apK)ej2WQa;dtqdXFVu%@Od_VJ3ts^dw z^kp4jAOmXK5nUld>Wdn{R%c7{OF~@E5lkINuinCyeg3)?K7D)g zwl9Ct=Ytn-POwaf5PNkYjnp(kuBR3GQwaF^R(n#l>-^fAFw~V61HccOuZDHE+Z3R~ z^>|QF=$o$j%%pT8VbzrG;+n`4)G5CuHqhOT5F}R4CS62VrX#8%6Buu&#MEA5D5=>9 zMCCHFOAUgeMKslt2QZutZ>K`ZfC7oTCWfJchcDSsx@xj4>DCmTz+|O5F|?A8Y}2w8 zLHGjqVt`u(Ni6hK8`SsGb#p4`^C&ebua zEU2WJo*nJ4O5f0cIH3u+vnh=+5M?YcqL0%E|JE~W**{y>IMQ)yd`?w#Yn_a>4xLV@r#M`@gx++XHA&_sf)Pv`A%Z(W?QjFiK(?D z331olY34y!&{F+TCTUt8p`YF{QUQsPrD0gR%w>#$WkxoJ`waj#rE0fF+xx4+*n#8dgLqR^zFf#PFX^Sym`c zy1bK9V!!l`oMlVF&{wU;-?0=7Z|QpceM=$m?0Te2p(bEyfYzL6CWZ!Hf(*R`&~dzRAin?7DRiJv~NtEt!!L**%>S+K4>u7GmnS21v7cYDj| zBd^}RW2b{YD|lCts>=_+Z_^%6qd%~&{1-k?HHn!M5k+ovGT}E0i4yt7d^+PuX~!a> z_)g&k=j)qtGXJzB#B1lNy8b!D8>5I5u>g6qR}yrq#kC~FQ_E-e-*TiWy<>%98IU4> z){nGg8@@X|L^wdw?jCEQf!wnG`NTeDtASRQ#G5b4`qwD@1E)(Km>HTFn-KDI$YyJF zlEZijPgW70s*!+4_uw|Kh7e0THvnvuXe&Qz58iH}$3=gi9Bu^7OV5bTuJPTg5HB+1 zj1+Hj3Db*2gWVm8wU#Ol{1WZ$u5@*!+Hbx zUO8~-_7ar4-Q5;Z%O3xD)_ux9Z0Yf&2%~Jqb1u}13cP<~(7F$W2g%vGn9G8W0bgG1 zJomL`+AKwNd07w-VzeNnZc)GrGu5CG;@Bt`Ec6O_QX9@hVb4mu>qU7&&W-lJXs8g^p7=*@r{2sEC8gw)bB@Uf*&{$ zi;#V&Kf0&4cAqpH!UXM`xd+7&M4KWLC!$4sA6-rSf%Y0jg|Ko#73=!MN$Qb+QwciA znKHIYTl%S>f=`vWLm2I6ACLzkgrzOUjXz-pm`^G8Fu_Nx`pw6>^-XtK9F+m=xGSh; z_2Mip1nJH`S{&{2G41&^1WKP|s#BY!T}pYYM5vqKehx7p^@T1MoOyk)05pXgO)LqH zhqAP9i_W;DrT`P;M6P-(kWKu(o_ukBaVEbUzB@kt>GI?wwJDw9Ckoy*cT6IO z^!lG&mbK&`;Gp{*HVo4^*5QNoePxm~HJVXjyDq%u&Y(20N1p|enX}_S+#JqS)TK(g z!Jrt&XF%!92K#S+Iyff=T305W$YNw9lAT=@9&LrQDVQQ5t0q^9SGBe}GRI+@LpIuJ z(1l8_K_ZBVYV;}1nXiHe32c-(5r?Evsfr#?d@3{?7?!afCb0v&A^N_HYc9nP56-*q zyHCWhc((uJ=uy&UoHIu21vs*{>CBfJC^LS1)M>r!ah#`1-m}#Ullao_Xlq--n0`N? zIj?UldsUk@`rbs%OSBC8oxNNi1Ze?|np|i7!|!!lIyjBn%#Ts$y+(dZff_nu3+)Jn z2Q0<%%smyZu7|fFWhus+;@l*D)$%SpH_hoSyAj7GBsoP!3c7(@Nv~oRvHDi^vT-?YC>{}}V=z&*}_HjVHXDcd1 zXz`3?5t~vThHf}ECRbD11{d$Zk3-k(r58CcYQ)M=?5{`-i!sVZL9H=(cuP4Zc{?-_ zs*K}kXiqtd??lM~Pu>#jZb$B7v$e0rIi{fo{CDU3uljPjj{E2I2eA_qnm`6N25jXw zI#M{I^f(02EQ|m^pVC>Ax)EDBdoNB=#`B1U2ac$zY4E58&YGxme zXMCAaq9cjI_NnJ38Oog*M>p03#2pVv)dx4#+E1NO@EssL1mWO&yq`DYnUEPquvX&OLydFC*bSkIJ3lKdt7c zMLiH6L|+L!`@KkUgM5TcA;E0(S|7)0lKBhk)$sDqlla*6-tu=U-Y;CgFQ*f_5XrX9mtFn@?vn)m3?Mq}9tBsS=pLRutD z-9k!;$G_4wA400kU9HIj0?1@2W{&|e7jSn+CrFww2gQ^eHnVAL{{A?n{#3&VmGAoo z=82|En7`QhEjjD>gU1ME}|JaEYY9Uvd#Vm1r$Uu6ZT+V@x;F94J@8; z4N?cCS&y$?Ao0~DyTB&(q( z8cNACee*q+H{Y#hA_FF`zT~0s>rxLP&pQrnT@ePP?ug7bDITg3f+g)$bf+^YTV65x zWAQ-)d>O7OpMLe=UEi1`KJlPv{o-cCDDURHpvG#JRviO&ElgXtAZxCp5osmXwvX*%J_$bB8z7(%@M!g zkHrlwBo~9oS6XK!CIxHyDszOYcxbfypdew`dc zk;pay#XD+zlZ+mZHg%x2e467IcE%4X4voM~hefQGhR@jPFI{iydg`8UZqoQ|AkYDn z5lDz40y<^2Sxh#^IbATDA1^l{613}T6S%cK5^cfJ;p6bpw5rCNv91U$zpadzf zBtXz)HRw#oO#~>IOpkr=cv{(y5P||E1x5k0`4VbDiyiroa$%KL(L`vDP$SvOBzsNF z5{ap?{4G{cK@bi!9(&NSGr5ZDL^~P^Cq5z^ru?c941tGOaMBn2U~bXXCa@Z-V6Mye z!uD6S$`FcJj`heA78s1cCfB)OX|lj*ok!;VFlE}CCN)3=y1KH9xG8`dG2%YuL45;& zOGlBSde!IYcYfw_^HG|frWII$ozMlT1`RL+Ow547U;6r-Li4&!d4~gP7g`~BqSV!W zZ9HR|Gdz>XTDe|nRqgb@=^`j$7b7F}gUiQTS&choQuYv+{)&ANNOm*Qbr$T?mA;$| zZs%A~Dx~TrC4SLTStGKo(ih715D%c6@h!6z>TyIH8$K1PC_?_f>)HB>GQfITcl!L@ zDJco`_xqk!Reart+kIoz5CnP~kkY6n`fYnH+jLH==rL$y1Beh z$!|Hs#j9`Cnu(;bvUDy~5?5=zeTE-{R<1~6Yo+#?prm;!Rn5a{#}HWd@kR5d17*Yn z7l8PXgsj*q1z3?Ey*q*#_d^UjN!x3ppW3O&6#YRT_EFP|bXT1yT(Igu1Q?>E2BME6 zMma5SkXqRPKuFmr=*50%8q9~}y}pYOcogZ=rft9${iNITHkVfNu`oXSVeiSVZ%e2p z-;lgdo(1z38xcGMu{A=lbhBIzgKT-ALN}eu{j4F_`qF+3Vi#y>sg0bU$)F7NYR13z zdOPgo0Dwl4`IS^%RaHcNArcpxrdY%rf&Tdghdd9!fzM7(f9emMKWXL-(!D)h_(b%A>Sj*U5w2A1R`?u0yM`@$zSk0K&SQ)UbhTT zB2mJs;;<3}dV4~@;Q%*JRx@fxS_}@X{Y4EeF6pR`=Q0-3(KttmN!z@Tv^n7vo5%CL zwY~7Hm&LBv`#Z7g^}Y-{GzFuz1{qfGB~Tx~%2L}>*BTzlrR1}9x_^VRt6#Q{4zZi~ zW=Zvxjg(V?gGcE)C&8u7o+x?gQ#K4AY6(7tcyuW80JjxVmKIu6y<|CID4|0imiS{n zEb?dY(jxK~SvNSMBU`k>g}y0k)C{$h+J?lxl;LQ!pnb~&os&ogKucel*N!%b=)Lch z3`c63In<=f2sjvD4DSr;*N6gs5Dl1FhS<=(;pynmv{Yt>_8yc~m}lh@Nj z(&4%s6~IpJJ*%0kce4@?BpQeQ89HlToZ&c6Le08rW?gio45TrgmgS0^k?cVdsi~Ka z#*=`kMmg!nw(Rqw4_jc-%42!3D>G4aN+)t3o41qT#1N8RS0Xh7qRQP5Xo_vs39Lw} zqxn)9ol5LKbWeju%Gx;h)H9AT+{bdNQ%9p#cxTugwI$w$RCU5Dns|fmC;dY_W^e@M z`{WcwUvawST^{cU=Ns@cV^go7V#`2CBcS0M;5#jIK+^9VbE=K64%?t^ztrI;>uM{9 zYs2hp|5&{220E=Q=zUSFRh7go#Qn2`$yr5LFvh{DyYl@DDT?ieH%iX>(4P?s-e-5Zo}DGxedaDm@3ENSF~DBY3%N!ke5M+qal6P1ak>^D zCJyM3ukhlPzQDeeZ6&GREtNHv3-hC!TOub?{V9N&YD)slu_Rolnt4WN*Q@9o)s2{X!YFbH#4(Lu3Xh6HMKr@Xg zz<{}$zS$%kYOlCTt-Y=>&}epf9dt8xI7KZfl!eN;EEJ8o;3kS2-s|?vg^d#uS4>vB z<{CrZBj?L~s819<)*<(8aP=4-JyN;c6Y=kbOFLVa-Na6jts)kevUTqB5IROgs+cXj z02nL#X^~+XOHEyzr&!i>?BJmauZJI;T}UL%`I*Lj#L0ih^B-yvc?~&F=@S*jL;LSE zID-h_*cyhC(qK8ELqlNrSpZpPe>qe8<{P2{!hwkLS&}-F=8ga`BmgT9>Ps3;eL-FE zK%ptNKVK}(A~jZ_81SU5fpz*(zs$>-MpCUR(Y5q*^1NvD-6ETkcs6S1@OykqTE|)4 zT$++<(l}M2v%UY~y`Lr?EV9uYS^}mK=(zc}IF<2Rsts098xRy1OT2H%^GDJ_Op;PY3}Y;o zSdTW}88%sjkBp=bVP-gf^iVK8kYMbBb{K{eO9k_&#xS#}sk!tuew>x`BU~$F6JuV8 zuhTO+a=F$@)%nOl`GST9w6%pMTH#6>)R`~l3oDIJfQ9QH188NsuN_yeUaZrlXVu?YUz257m1RBf&XVz%(Mjvzc-26uw&4e;$^!G8MY+rcmW?FpkRsqj)OQHWbn1MLwRK>JV~H- z-sWr45Bgku;|_+*U6+Nkkq6-2q?T3_VI3j0Et--aM0B9)5n?^}MBAc@g9mKagO?rJ z`xMfiFU9_Y_9==HYUn^*nI8h$kExU==#_gyc#@zFp{>8tcI`=RJV*HdoI;hVR3If` z1Qf$pLbKTp%~eN%D2~d^5cx3G>S%mBhAo zcb+{x{rvjP@x^85;tWx;oA405^v2v>m%7NwS(1Ncsc_u;~Ub)`a*}>)9-K;Y!lx?Dq$; z*Dh0NhPFFzg0tm2f0%ddXhdE-O$Hlv&VEp|fLq|%(mL!pP*d}^!ITA#Z;Xyvhc^P& zR16)mQAIRc0V>ZxL>0@hF^pZEosW*KOo5ce z%!ZPJHhq7@#x`dt!(}ZL(H1;~)HZbvzv*#Uv#PM60s(b^C9{%;0zsbXM7!FU52nv+* z`DiZq0Mb-)W=?FnbGV^$gDLIGrIz+yhru=5uxM8I$#}$V0A%Op#+I&zEsZ_Y@A<}V z#u4Hm9)be&SavUtULL$Vxm0wHUx-txk0=HoUl6dzefBcrlAWdv`fTx^ck0z^ZX$rY zqLM7szG;ZV$UM1TpH+xd)CJj27)ISGt_!(??KS3Me9%ld+N!l){7}y|7?QkvY(b&TtR3Ym zzcd>G{sx|%TZs+WsHfLY?kcn@AI3;v6s19u!NJ`Wzir|_TRR&!v)i#>X17%?O33y_ zcV&BNw$9O;gXbqlgI^pSybi!77w?X7jFtvnrA^*J9kBn`L2ae?B&o5QX!Jr5_>_Y% zfL}w%^p1)4!rzXo52ZZ*t<&{#cjBzV#W7<>-EUjojcj_}JmQvmbv)Py$opSwSd2S_DHo9J=q}qOZqrGSz+24-3)Zg@kXYV8+ui?hMj=FZ;WtoxN0UM+7%Hgjb&eBqlkv%UFj3(Y+I!q=PG+1%e{ zGpk>CWyi|Xzo&W}+3&~5E{2vEg{yd~z)%h2(hkc7y|JP#EGEqr${Kus{dRwOm@-Tc-SC&b z_VR+iI@#2J6~xZxhq1QJ9WKt9B0hYex$WZc;(hW?5V&nt$3?fL@nOn_nP6fbC8tbw z6RG}FEPmr-ZC9g5HY*S(Gn&odDEr;k6U>$yb8&WZe0hnTk=ZS_@e;Ss^8;YK$_n@u zTr{&ULAbse(mxp&l`JFYD_YTycs=wno-d}8(`@+VSqhI>X7+|Lp6sA96K3WPk zN|VNxNZ2tQu7{E4ffX*8M+cN5fvTa&`o+V?ME~*}ipaqs$|#&3Uv^k!ZBcO8+-|pp z#nAS)^FaCUxA)UnmEdc=9{l3?@@E72U~u%}Na+CrMn*#{Uud8l-{_O0|LB`>e4h{T$#i-FNvT zi79r=*56(n+p@iT_a*z(~Ga?JhOQWq2dvUqg;Te_Y9XIb}sBo z#jocmYThQPV(F!g9t{Yxnz;hKQZGV)kHt*c&V!B$P9jlSXIB&EGEfdnQXfct&jBuk zMUh`pd52>%Tqw9Y~LWWKlI zf-xM8<}rba=ymQKM!SKHZug z!_DX@Yp_9c2JeUFtT8!=n!FdQrqR}=z9dJ_A!;4F1h4U^_ThWTPFQ zT-vr>thTm$rvOesvA^{l?G;uD*MmwKm{WRS-{wd~$jWhfR%68e7g1C{7w4_~<*XaSQS1t`uE>7D z_|aAJ#+K>2)|j0pV98oL{&gR)G%mi-0llJzgv$!+WfSrhCBUZ*LuR4B6|3JY z4aPJ&&!500tPibi9MkE29v5OOHE(pA5NZKGV%d`{av0^gE-OZ|(4Fo#hB6d@jzYs1 zm_1Jtc(8+a4~3qV!{6P(6DC50g*Xh14WPePc?#=C-=L2fe~@H4)vB;r-=+=SgDH&f z9~JZOInio#I}bPKV++#o&5gp~+4~eFlLg4QQW+lVu_|Og^Qx$rvLO-nbb8rd^iIp^ z$1!*wPM8sl_tBWtf)*rkY~;$(W5F0LnMGJMoi!ZK(3CBMk$)Qm`sEnGSH4d!8UrL6e7DBNLSt|?8s6DzB6X)coOlIgN(ZU$Su-0+e z_kL4CG<-@fa1eo;<-S797KJAxA$3KF=_MK!r8 z)IyA>Rp-|tk$&^FH461h++If>y`I(99TD4kVU4WX9)gJa`yF3<&#J0g6f|buPQggY z@BkAgQjy)+`=|(!4vALycphmF0OoC5AvWpoc<6ATi@wjD+`Pj$Z@OaPeZ`L zKpZx9V@NDrWEnB=xG95IN2fnGMVCcK&Ca0akj3|D5irp3S)C;3lY`5bZ_iJGrj3ef zz3%x6Lllq9@>{g`*|5-n& zMj zygd?o?IjdrXp_v|BB(Lm9gWLuRkgXVFYWSG?eA{oxYX(Twj5k#PSFB3t2Jwv^ubVZ zEq&a(q7P7O%tV_>|JnXl>cpbpibk^~7XhDH{=!8onixJG8pdfbdQ1q4n^kk=bWPpa zbWu+rOY+=u6q%jLlQ@TYJ(c`w#xlgh6)XtQR=%WC0tTv%GU+kJ>2|)|+x)fwq^|fB zN}&8n#UXownYJ3#O-8F_3kVBhhN@LeYnYVRrohqjX(Ve8HytYL&bB9kyxxtCxo!44 z2OYmXMaiGR=`VjRHg2*(iqAe{>RD>tXgMsp3)8V4h@e$iWYnG)6Jl~3%h)Nt7Q%?- zwjCuT4+jr-ON4klFU%ov%dc$APYHQ8W zUp(W)50{X;gtb&P31*GTUc2NBj!`J~D#U!xrZu6%0`!Q#J84mh&)}3!O|65_qt*V6 zk-`1>N;oY$yzjR)~GEo(s(+yLxb|R|& zWlHcjLoMdkgS^}mXJha1;1uX^#|J%tg!Eu_>KX6}SzCfPbSO#|Wr;W9st6%52DHRr z^Y>U$33n-Bm#jVCNP@p-^z!iDxm=!Y#j;#7GV6*sEq;QwjO@o3%5kmjJE(tWS2dEZ zCo#BK8#6rd?XAI#f{0=kG(dQ!FG30(K?D;l=H96*|Kn>DDCw9bys^-9B?;1-q&5iK z%WY%d*ZQZ8rOSDP1=z418B2mO#{e-$Qv$WN!dp@NK0TRl8rE08IV^5P?Jv^D-8B5n zy{Y81bRNmfudpvG!)8<@`cxJ1Y|>kTx1#CVXP$Q?`O)32LS?KrA}{7kw;_4!Ts?bVopF1y2$6y6R@NN9&6OOS|zRYyMhyTRoljs% z(N2IDxUA%l4&GC;q^S?UUl#SLARGK>GwGAzNh0ufTE+$QNOh)KHrd@ED1)4{bC90_ zm0oNSymouwRXdsR3M~_;7EZ8TOQWfR5nO6+YfP8OZ8G5$0PQDF+ zr9)*bI(-)R$N1F@0JeP5dpZBZAG{{%>qGfLUk^uXuet}_=d5l;v0tY797Jpe16KMT zF+(`QktOi43|1Nql(ofrd?PC zY1>&dOPJ@zR@X)(d)d>ZUZ!hU7}uTHZu(3r}RysrAAPhr-X)}=Ax53*tC%+;z z=ENrno2pkdv3O8dc_qe>s;ULT#CcG&UfVG}flQs&*rUpSFUn=P_H}V~n#u*D$B=0S zM!At}Fsyk&h8$yHr&>BmrDp}4Gr6!b_QbX*?r+>AA7GMZ)U#5Itr5R}UWp)DTRBxN z0Y_a1Hw3@dAP4cfBxw`2~>3wxBU+#@JzjbW|+k@0Z6-G!ZuVR@DzXr5GldTyblBw3pkVTt8ONJ|Nn<8lJ zk{ZyU^}4C3nK58;V`v9-X!Vl&j|zvdw07p`o5le`rwXL8-3jzZU(XWbaiv)5W5j*c zw^WT&32!m*>fngWm()2`TvGL*5D_jX81HSZ%D} z-p#AG*VFLVZpuQpAGRKjF6hkfni)u!2qkb&*%&Cs>2+02Ui~8F!rQes&=T3FNZ1%0 zAe2{JL&sVtn=Wykkg{hbWqZ^GX^8AJ9qD8aS2-+fXPL%pH^4)PX@~GgoE^M)A;Wof zegG^e*flPHwKSK+GEugdy|2q`z(DlR&L?)C_;|p)=hY3mnB(nKBw18%PcD&(dCN4y z@?n|&g_fhw5a%O`q7H`@X^swCRjiAdPUL!AU29&fuT3_rc?=ijG4Rb|>XDoBN8s}& z_J7T702Y!YLVVy~rGVyzQfrSwRTW&pB0G~|!_@z#o|&*2KoKy}T$u?Go=M|^c+jpH zrHopPs@e#jk=jD(8wj6h(GG7l<27>c%*KA|=Aq@{;Y2Pz<;o;@bE1!7OjeAuW3SNs zH*-j5co$PQdD;RNlY6Q&!Y0qm1epRGlr7OD?L~7c*W9uU*bYl(0tB8Xit;y?K?mF+ zT%x!pGxY&MAT+)+t!1CB|GAh%a_cvZD>2~O65p`Cy!*7m!$up)zm+%8eywWqB9oNT zY(WlHk7$Qq(bAkXzpOFn3_%;muK`5-GlV5G$arv-R0S=+4=@u_o2?q|0~2=h(Jsy} z3Ge1ZMZcbNAXVk%@hkPtrxjI&dT~X$qhWX!1we;ubANkPkGpxps4$_48<2pV9Wk){ z7h=Jb0hwA=I0eq=(CnJ#xVBSFYA{U*riK04qn7Lx^B%mbx$Qwdyy7P{Aa+u2O=Pg(Pt z*Lzdym>(>it1l-;zx>_2RlELNdETT!SW|?|ROyk9Ai<%HK_zzd#Rq^kwAS9OH+HNn zwzu8e+*?*`kCmzxY(s50w6B--(Fr^{)FGaI?dlptw=AA@IJk!LdpD>7`Pvk|)P*!@ z)ar?~ z_zYc}DDb~r)33ma9Zy;|P=<7y0Mi7&Zy8YDgfA-V5hsQNdb1&=L_|n3$FsaVzI>Q0 zLdYk)17~Vj_ELASt$WO3aqVxtDL-3Uzs<_V&f~=@zQ`3*c~aq2^q9GSLP^85f%GT) zEuH!2CvOi4DPsR{U!loWFGLw}l^a7p#=j)B-&2fHLCSNlv99=u_Et`l8bNGcXhgGF znWf{3P)TEpFS-}B?MIEm55VX8c$=DOleiJCEV`5?Eww>ug4B!i=dXOw_~GTb{$^K8 z{3jzFJUoG=wN|bSph>Af`qF+R_HtTVe4kJNH}B` z)25-x>`-!GvS36g&@;ZWJ`Sb{&Bk3RUf+QsSX>1fl{yX}!#8#Pk*L|abX-QQUx;J+<aUfl7BUk7B|{U#-n|4@>Vc1-o3e$)*Iif*c!2$$!Hoatp;14 z^{MR1YGgHX(}Ko4`N7ISDuX?P$B-fG3!6S`uV|je_5CC)4QVgrS<&$sM`ZR-#GrP^ zC#%+2f3{{~Ro9^uvrX!a(7M6o5jAqr0t}{^(m|6l*_7pCvY9vCizSgm*6bB#GRdxI z*@p+tj&F`Zt<~-!znR{VJ4(4RS z!0%S)-}!Y}y&Sx1XUQp{S1V;vgNhPEBK{)$JNeIa7IvpY#%+hQ*#}N=Q1QkW!TKyZ z$!G|ZRMWn!4g_-M-~yM(&yFv`B_Wrjzt-~WWbqrjV^-wTG~qY1>@fO;tUsDU7$Kvv z+N$qe8K@*@tEOrdaY^tSBrO*&#_$M+uLYOka_lEfhthTfz|!Nt3PZ5(f(WUSVXB0) z{bWn;m8KnfZCj*%1J0cjVkCw5RT&JTq|Mc`Com<;6N2EWesPi%>PAM_8 zp-garEW6Td(v~VQs~XPKw#qCtI!e8AT|nX_1>l;yDnf`kHq~ZIG#lG^Y|NUEptt?c z>l?(A;mz`@99sbWUVmTb3^Q#xvY+;!xhN7>KoFys`u@3@3YXcSxN6qSc`17-+Ib48 z`qROmI=#-Hp8v^AQ2Mv3(ZnCB26%;teQJg><6UR1ao!~|2UP~A{>2M8XmAgmCDtaoguY;XdSy$la2`g0SjNe-=V zhD60Ex+@j!;5eCnu%c1Ir#?QbrQv!sa>fhH)2of*sZ?{nysYha3dSoll8xb6MhML; zEAFAEJEz|l#iRn^zMaj=Zpy8(W!c{*9jBjmT6Ekom zL}ZS_J6vxetT)zsyRR|2moJd%aw)5sB^FlK$mFqM_jiLg7Q2rtBtnHYIJY2Jc*gSl zLQ6B_i;A$ZyTh7Gu`G{@j7-pih*UPbvTlXFB;KOS0uHn+zX&h(G^wiB3}MG*RT}46 zYnrkAZ(uR#TN^{&7Wu`zvG^r5XZdv&uVvNshQm4IZh1xxr+r+r07R!|mUaNy9K|9% zOTF#@AYvfoBZBR#4_O|bE2#(12k`pa&G#dsq1h6tFd$pbtpMNl2-apT#2KI#dQKhk8%81R<7jje7 zkRqF_t7k3=DhlM`8TOm)w7q!^y*+%4%gAm*T_a2`YP?{pv%URr>qr|`~0O@G;Qsd4vPgaLsMmF zI=MJX3ZIe^#c!Pc1&y$qls>G3$*&Z3XKL9kM{SdCqI$4E<fku9t}$$&wwShwyG2N}7RnkobKjY?C}29@)h_fyLOBI1$qDEz08SXsom&Wwzx7 z9y=99XxGBVw`18w^zD79-RQeX%{lxv?a@NHAoBLu$&$^pc91f zSH5l5g>aW`45RzY;@EVZxR7a>pgz4y49(jL19@A8wHDP8_h?y6Yp3#YVf4AV;}gj7 zt=Jcb_=*|V9=ZJ`7|ipF7iOpcao3ZV<9qzjU7`=Qj3rF~W|##v2WBhb%TE8$Fs0}k zegZ7|Cv$sw!6))`xld%X*Wc>(`?*hqC>~&HQ`u6wozdl@F`vf!WNbBTm=PVQE@JIb z7W|eK_~H@_@-&#Ei5T0&#{g-q*9*9BS)%w1nZ_|jIuts0A4VT-KPP7Er=gTO>Vh-)X2-4%$ z#@+_9X;>?}8f(-S#aagJ;a&R@^PcQfAWP#lm*;7cqEM)O4;%|I?+i+5$ypW?a$>{YzTo%`Q^+(7smL zw>@^RaaB#K2(97`LmlZ?o=>|WOAxo0-F7OAb{Oqc@Z=~ah)7tt$h$ZIfk?8mx9VrDi}TB~3|31OfM>fq9tVZC+k#Oug$Q9?@Bsl?w8!Vz)uZvKp04nF zRI^sRZre&N_#7#%Vy4P~Svwu^t4L^9KdINjpJ2CGND_jx+BXc3gSp1W!(AEMSsmZ3 zMgwoswp_%heD=cf1cJDNhwz$9Z3aZGr1(3m>UD94cGb_U8DJ@pD}yP!xo-=6+FDyM zgy|T|f`Q~KgZWrEy0cbdoDrQ_+iF8J>nXKJwJU$w=?TCzStrJ5z)owcJeGr5G2akS zs}GNYJE)ue+z!fM6vgrT@Or!(v#0!OQI;+QZnI6OTq|wJ7Hqj>z7hrQ|0YiuCX1P! z??4+~B+KJxR+pVL{cPR@woGXkUNBttA!4^{dR{AMxNiJ}iYE4$HDuXuy2x!Giw@jc z!?-NQssGf6PpQ=aqNT}<)56eh?9F0|z^hmthU^kcF5?M+1SVSA*{N+`mMsBU$%#~7 z@>qmLHU)Kkm;OK3(n=M^{NFRX;-ONmHM(g%s0wM5%*3hvcZO7#) z=E9cAO<3Won1%GDtZn=wq8$bcUn^E7GS6YcD@tj#vA*gUuQH`g#0~4j`FR?U|Kft- ziq^&~ib%~KVg{sZ8Lu;)j;SQU-Av1axMx`_%{#5QQ){}$mZC>!m{wEpKDjLdmt zw*;dN9r$78TBA>?sx5t$ge&$l3R~0C8|ZAa1rBmz)to5@N=5VKqciE&}Th_aHpn{WaQ*WtU#qdt3Q`ug0vC) zAzFn>lc!~YzK67n?}hm7(yf>8uDMz4kEw=K$wr`4z3Y*Dqvk{%b>mtSKF+Uv(lo|Y zX#z6?sW2iJ4RS5s+fU}a#b>n@e=~v7C=2i)jJ!0y2aAKVt$PH)Y8DXhw&))GH5R^V zELdL|Ila7%eo2wFi3NHbl&9z5REL~Xc-TB0++BSfec00STt0P&hjW04@b3)*Vi=j> z;#;>P_mYfj@fFZ^c{}RwZl)J=eIJVnUelBkIc8~ziWO}(M{~fn9IE=giOkrP@h!A7 zW0LmMySqENE}l>4jB$Zbf?IRZ;psD2*C4|QTU3H)`~hy+&_rI9Ucw2W`{qs;ke16r zLZ^m;agB?+xK2sATMld`&!EHi?GQw|XO_og(FyI*ivot7#}vvHj^7~*;A4H4>|a~a zpMD%wER*)>Iv!Xs>vdkT6pKWb#-CsVwFBnlet)x9GgfxB9N09Br(52wFTO1Z5RzFn z;0}hxTYJ(gi>@_+=1@DY;^hxo%5vm{dBhWW_>*mez>@w)OWDIW1lcwQ7SaIa@gKA z0|Ryj*agh0pD4tqiTwQowFq8V?olk zx|UF!3N}v^nrP>_uhW_$lUk@4|2@Z^xH@Jze1sAt({tGscLPnJ7>qI7kXs>tZ9LX3 zb|iw`nm0lE@n(l_f6+I;EwADqc<kNlUdLbRHW6dNJc-(uNEYzGW-a{xgFixV`FRW+Yf@KSbjmdZLI;F_LUi zfkuFecmDhIyrZ`-W600u7p+-LSFHEk8%fS5R-8B{6HX(JQjuLQi*A2?A7?nW5)Y(yCQG}5g@>m!E9zF1Bf^5=Q`&dEHI(gWx=hCF zp7r-L{0E;Uef(Y-gY=yl6*Qj_Jkc^-RZXIr?^W5iC~p>w)|=fB^M`+1F@9;u1lP%T zRj)#SG~}o$5>SUbrcDhXxy9TI-Gevf%sjRxo8s?!7;@;#rP!kWQZT9UDMM`d*fzrA zVWQ$`xx$*H8V=ybFkQTRySokwswro|c4r*R(&d;h5FuNzGR}UMKvn|GH_1N&q<2cw zSgEZWN*xB}K$MGC?t!NW5zR8gq>L>E@-!PU&cL`^_O>ejzneERS^#v>9h|f^<@&5Z{uDn3o;ht71$tfG8577Z8@_uk=s&$Q2oJB z#fZg%{yo+!ZD~T3D?{BLjsnJPnAMIICE70i*<|mD5KT3(d=~jpnI>_-3f!$0l;Ya; z17oaRR@I?XsG3{i2V-RDM0k3y{?N0jqyczDs_R-W*qORiGSE{WHrO7?@v2C@t}+09 z+v>Fi+lbjYK3PPJ{E!1KZtZV9bB?d0QzrK((L=A`u{KIo!rKUfLTFSsnMVlO`&sm_ zT+g9lV<5cYGn_MPukoF#T_q;@r*6yw?kee9TSY_ung>Vy5z$fIVKe=+L>?2@NSQ>UoTfE*Xzr4IKYg75fCGR_N+j2M+ z0!pWp&3&)G=Tzc6_}@i9c?1y)k+!U8x$0G9l_h6Ncr&h)CO#_`qq=w}!o^(S5_Za) zXTPsQ^}33CxRu3qX9;uZ>R?zNfnBP`h4|15FYlC*tw+H11b{DSAE_WAT7U(16si|g zsc4zMC9Khri;%mWHV*b+ zZC&Daw4RGRJDWKml3D3!Ef#r}c!18cIgwNsORjD}+s3(7pCV+$3H4dHWEy8RtG-PrrQJfu_u-ITRUUK(IFXsT68;y zMH7PzT?nu!uK4c! z{gGth*_7>6@!`vZ)8mt0$ghm~qUly}jt_ z%*;C&r1;99%b;6Ontianx3!oxzPdKqT}t^`TgPNtCBUgtH+q@J^IE9P!1HN91HqIj z#7EWD5`Sd@eRm=&5K!8d+N=l(n+)SCw?3i>*Z68WhvCKZ!0)>{6lTG+A@zP?`_eO= zbfN(DylI$3$5aA!$=QpdmP#!St1K2R?fSH5{+KdWH_5G{nnu%E7i)z@J3Sdfh( zpnk^zGM0Q=k97w4l%`}^H{mAh$U~`cPZZPeRpV>in!VO`Va9F1D)Q>Gw7e^YcGUFy zRH=%?a@X$1m%qa7LYbwV{XLH&_GyBa5 z{RO|&Z4c2K#SkkiYfAmkTwPkZne8Og33!tS`IY1+V>4z51N)BB_RkJ*<6Rz~;+}x* zx4YmxY=XB}{E^G2A=#zAb!}o*`&j0**D_SU;rYDQXbmH=W~JudUMwjtm(`VHU6mi(;3NKDLy3 zg#waIn*UL&MnN(3@U%XWQZFFOrZj5Wrt`&lW8vrzQ9P9hhCg87qP>f*@dS%@wB=zf6AaXOyzRV0TqwtW+SsR&T)tA?Vh|jiwgMm8fgpxs$;(h3 zFKR;$yvgG|;G40qq@|{@ou{i!V|b{hvHByz3JdsT+8%d_;=~CzDcHL`EkOC!x_M&C zUBa$!A@W#Sh#Da5g8|E-8r~3pV&$OEP7yO1{)stAwKZ3KLRJRk3h6V)#w0J54_XEG1Y$e zcVw50?HAR@s&^3v)ZgiExwsE=fZ3fwmy2a~7`OEo$kGY+`#Y{0U@B5YgY}A8HaBQh zO7r3n;~+InoVS}HNKxJ4{r#R&*|t#-5ohvL&BCkPq&u6Ba(Ioz{W-r| zTX(XfI($N8Mw0ooW9M*n?2$*mnP0;QwF>bC%dzKb5U~cSTp-vO%JXw@AVYVzBiSr- z<2SPro@O3n3q>&FpsWgrs12>MwcUTng1?n#Q!C<*A@%1b8k5z0X0o_0+mR*JEG?0Z z(-z^`-pWDX;lAgUIVw8+8U`4B$2D7$t=~-Tnl>MncJJ`AP1ay(WNS15$)M4g-;aTf z@KprR$jSaiJ)L)6VRVH~3Q9e`J}Jvtn9uGG4}jHJ3`GqtE{@JGLwMDdmfP%%96s{6 zwrbj`HuEe+UU^qL2_qETTR4>mSECZIR39)#*gWbv1mdvWPr)#Jy6X_(+g6zbu|zUq zf)}1tlld1jFa+?Fd8N8xJA;DOQr}YjA#HIz_0@#6I$_0Bq>uOm9PrvfY6k7HEabBf z#+D378_eHH3aU7kqbw*2HD$}QbS0kUa%Tb`#V>8eVtwd~O$F+q zf+jybN^LnmJ-$_&9j2n~y4tLY&h$BYz#YC$j;_-(8nhsW5)dm-(iNd(t8W-t)b8JZTOk0NnTscrOC`H z#>u-aCl5&00nxB&he*$|W}-%^v5)ksd4Bo}DTpx)rrb!Q9M6JR=Z#N2C-YJPi(rNf zOQ#LWBD$J%UT(l*d%BUJ`<`yAgTHEIZzxB3KMvZFx3D8F>nW9hz-bR%1?0JV*Jw9I zm}%>{6Jm^MY33tZ#HAg%i?Kk|tru>mR|VWEpE?KEa0GlV#!g7EYK`9gHJ_PRC5I;? z=C+3US;-jb`eqJ}(c_+l?T5$!N)oz|1d;Gzrzt*>47f(VU3t8=z9RYe7C{tu)fccT z3$KPQdS6a06r{rCE?~zjcbS^d3FZEpWLy}?SO(Jf@CxS!w1o{UTU<^j#CRTGKg-#J zo##d^!&;9bvAtnHWnM1Vys3upZo+Vc>%YW7{ozD^*ceq~`S(w+ZzWI#H1Ol#>fG68 z;bFyi9?uykE6@7WO?ceD?S^S6u2tE5I}MokBL}IAj-F!<;^UW3Q`v~^)A+TrhS+;& z4cB;o-|cjn_Ig$`!%a~I-EA_RY!n%!PTCBzF%3nBrW0&o&Bo$#7o7uKuh6tuQg6rJI&H~?m{jy>D!5*=O$B{iRHeFJB^;O=`o z8QEhd6RxT4gEd)w{3H;S1OC3XWZ_5aL}p8g$R1Y(5cXA<=yPu3~k9-!cG3d>Z^!HlJU+YGw_BI`B=wZVS<^`@Xh4wh+-M8zE z-rl(TzG~)$csC(3)o9k>iN5UaEGzxwV{5UEVm0L5tb&~8ghV5Tjw_FwRccV>$-JyC z$P|rx{JpI3WSX+sL$^0M_dIT?ntraPjzZ@XTA!%mpozsG7s@KWB8&!Wo|KbA8e0_c zR$U$ZA?5f%sO&taF4O(?~B9#K9$d8q?51J7>6B8zFB^Z#64me zjc9TEjcb!-MIu%soLs6f!e(ccoQ^@~ouB<89yt7yPHPjXO|!tN==Dmc471yjmW!Ld zO!>cyHrGOl7*y8a54(Z-n-m-bDMvZ(l8Vu`6JFjWB5T#OdA1G7Hxs$`TK&cQBwL8{Jsu@%C)zZ(3pKbn;Okh&XjWStqeWB2-N%g~m8n^+J%X{{6|xaT z5*K%u!-w=qGTWP3@a+i7gla(#61Xi&eqa)4?$+MZr&;oC(Mbh-5j-Q@!v`Dm)HBzTe+E zQGDqAeRK2X?nQ$DjIj<}n)JNiRw8om8YW63$rGb7JU!z?t0iiYNd~2F#Wb2yZU4{k#a%}pNy-C!Tn0<=-9B1g$}}A z`Y=3Q7hlfxJ<7HoJU=-aJb(A{<1}KkzEGX8ao@7)h81#F)pBXCEph6 z#CD@kunB=!K{kWU`-69&G!4TL>?#?U<$rlCY6icCaA)VdvGGZRCNI;xgjqz9!J~Z* z$EBu&F7pJfjHD>q-t*F~)bF zs%bsZb@fE#Z9=1oR1`8hIP5ZarRJ3$TpS*2rU(>xWeFJ4w}0~Oh#H5|C9d4+O@|6mc6)vnLS^DWa>@sZ&p9l;ZmL4)$OXMwr@6DeyQ!G&&BabU1G$G)8&*}(MOdt3GQ7Y08tz8@NGi!ZpNrH7o^m# zod=`6-}*XqhrjLWa#$#B!&^DM#C%n}iOHnjHFcE_KGdf0s$r@Z3{x@SGzD=s>R9pC zt0p*IXGR=gITH)N3?l-i+)FYk53Rv;>O^c#uI3)oE`OU9+B<%eDysdK0^S&xjERk= zF`+`A?VE%f7?Q@gSR!;E7Sl1L&Q~=tHN@P9UAn1NZQFU~MOCq{io`e9bhri=n{pO! zvWvH_XSZw4KFJ@w^!LCveq!r}YRoSoqQPVW_@i5jh?Mwd79`pdkSNHb7Bb9dy{ zN_XT=ufMYjZ~8^}r7iCK>=%Rcqrrg(-158`r`3J_A^6#*$%U`c1i*K6=z^Yl% z6lvm=Ib`s*H71`3-4Mh=Pe&v9!CAUcX4;bl_jn+BNG#jWdDU5I+5@SDP-BVC-$m$5 zr!k>YOHS;qe}8G70)#L%23>%J`{5e3$IH*BZ^7k;-@onwf6MbaO&0OYHjA5g;OVU^{j5&svXMC zi?(}a;~N^Q%{|jLR~s8Hu@+($EfE_8$LZ_=JR3G@AqIby$d%8skR+&r@Uj1FDA3VpBOm$u_Ta( zXW!B>BINNB;-XDAwNlczI3L4e>ZPUCR_=H)C}X4H2umBUxdft{;osY#o>hg2+*F;*Mtyt2TX1u{Oi2jv1|4gR33Z~&~PjS z*5n`)nq>97q%f))B$w*xqgQVcW_!)u7?@Jg+~8$RP)vpA{6(_>Q+Y7|SR&O3dOkkU zF&QM~#qj1cGH$wN>tWhi0So+nQ#I6VS*qc|026U`Kj;^{)cBYu9!C^~v#bUYist7t_n#A)=7Ck8_)wM1EI6A-yf_mHl1kSWrqZ zM^tZ#BkB*{5k)r!{kzuFQuG$#t!1ye!RUI|NL06;cUwIdG1kRbrM(5cilWbgvha@v zq>h2)e>68Caw^h_zl?nBj+tOrZ0OEYKMu<@S`}Gl?#o=)XMvb>l34E9eP9(&EIJy- zPg@)p*KEm!m@T=wwxq2%?t6#_6U_Af3T=fbq^9W!f_i7o%p_ZzJG;-;H~!m6Y4?6+ zaZ*a0%nKzC!`Nsh7Y2`kS+r7kz93a@u9PbKz5dg$B?DY87V|fNFB*5%*@D(trL-W# zB2OoI6=PN7PT*lysKJ7}t++h>-1f-0ke2de!nfX|3w8PJMc9fhM@d14KNkvVKrC{3 z(?kxAk%(Hw6}#)|htRy*{w1UmBX!{FTH#4`m`U@%*oTfY>r-0Y1iy7bf;^h=lVY}5 za2Sh(cCS@rz^bB&nTk?vbr=%;`P;K!4W6I8J$!8?PY5%k#z7TDSlgS0bFnyaoHRGJ z;|aQ*+9z@`en?KiIBkiw*In3QXK1~Zs+4-&=<*6#Zg1HTU2U)Hx*pLgl`?O_Vv!K6 zH+{XF%yAQ;O`BLkh)|knqX6yhI8e&YnwNVyTpYbQB1MINt@~v5KQNb@%vhN4Vu698 zY*tkf%HMNkgv^Ns>O=%#$ZkY=?Oa-e{Win&hrO>8=PG8aK6XD^R z{XdRHc;MZ|BlMdayINARhNeq2nl<;c5^560RgQ2^h}fm0@-Te24^G%xITo(E3J7C0 z2FA64U}zg(N5Xgr1Vfwn&yXz^bB9BKHpVFd!HlT6VL&&64X(lp$*@;T zSgR3-H@_+)r1GJFw)tXIK;LX9cjcE_tUR>=f*%%O#zviNgl-TsOE9EWnVSf(8GSdQ z&y5abc+Mr$O$CFuZfp*V=pAOlzrkM2YUM;H$jst7C#*-NroL`r@!n7F>aU{_$>Lmyc0dmyU!^c@g_u%djC`vXyKn3J?ScvnR#-v<3*sZNHYvaGMqls#!`>2YIN42TFyN3II zLV297XF3w_Vv4rMf>WE0L+!Vd<#Pd3Ej7+(8L4kQ-B}WDCh^|i;+BkCbC@=Mc<^b9= z$pjR`zA=L!%gk!y$c#pGrY=n_){(d(A`Ts&*&8Od*>+JC36X2A+y*T7!Ah~Yo^Yc} z(Xa0LGnPd>BSTC@u*8KHCUD*2&n^@4Y=I&ldrx(RnXY&@nVrlYtIbBs7eQLxTiUR< zo!cOqMg(JKnki)(9JndJ=8#dEnwzm&(rZ#IgxOzw2{=ZF3X^u-w|Xwvw_e0zOrAz{ zzaw}dlV}bhDvmVAJ4kn$c9zWR`hBMPFo95`42uqYJJ@=OX!Zz=D=chV+bdWdjWIqs z(o$6{!)Eza3(@?G1-HMRR)0_o;^w0e({eu4-;Azcp%K87pFMy5;-wr`3?M-Wk1EMq z^F;!+``k^TV=yzTk|fhwB}HZB7@j@j7(~bMvD<$6WbJ)<5yX7SpZ}Y6*xuZu5zZBl z=r1wC_4frSzQ3DGu`eu}gGsS=TrDj4?A`N|~09}uTz0VX^!zgr}Tp+!r{o|dvzL$Fr4OpB%YzE~w6yli+()*8!} zrL8hfigwJ2YiQLFNIZTtL)Qz3IxnA7ET?@X7U%NXweuIswMLJhE1$pLf7%XZpV3+; z_pbIni>?yU=7UlrvBa;A&Ur`My2XmUewwpd^X04w3+wEQI3(|QmplH89S~|w-g#>` zjmaWKt*O3>O>*>t9S2RVs>_XiPF_FpRu0Wj;n_9_E6rgj_Koj0D(v<|`Q=@k3!8XF0NNdr(M)s6VTnqwnz&0R@QBTtKAvwqlwYdQ)`NU)}i+4t}pJz;oP8uDD779Iv}_+-e1S^5bW=!E5s`3ZPraLWFs zpPIAYJ`kSGYRe4w(a}Q34Vlam&x8L9qNzjFWR6_RmR^Wbrflah<-`4(x@%o-qbZ`V zqJkgTASssb=2keik{A-l*bX1?17$6(cm!UI)7^7+dPggV07VtW zC5g0}+s^d#<@D(@EtKc^dAPil?h%*v%{GgO_{|oC3--jli(TQ7Q-m^}ycwSS>g@cr zuL9MtX_?{~iX|H?-)uvwZQ5&bX=s~vaa{z3Uq#SIH58_> z+aReCb(;x$SC^G;)vocZHl05o?#DFkFxQ=JDaN6#?eEH8H*KvXRikTp8ZZ}{oCvK- zAU%pZEI_)#BBJ1YtGUE8l727_Q;A3e_6uG z0DgEe=H=k3&txan@wiBUO7#qpGBKu6V5-zCV~Vg=O7D*&3&(oq2(O&#$i4DvnG^G6 zBz))geRVZDd#}&)6BNZ8T^wJc-t~zUIG@2=5PeJLdEsS=f(*FdExA%0!e-iPX_zH; z%+B^`LGrxHbI9Slx)o=Vt}oz=5hjM*BM{8|mf5lT4rQ?jkiy0ast41&$*ZCw1mCi1 zcRW_zI!0w>E7PV7yp5%aKfyjgr)w(o5*p~gzH{HsG&_w5!$oPgfSdtQ3iZqA6r-{1 z`u=Klq6uB6P;JB@P;v<>lDrYuJdbCwxe0EAdzc78R%{Z;BsCdp2=MdAQq`QO`+Ob9 zyQX{Q7MbrLb6dr{AQ*}GKWa~+=S(n7)EwB15E(&Y(wpV)*3qa9E7W6L8&-2Mp-Ixd z=+)+|^2w@6MC&4@L?CZPS_raA3B5>-OD7D{N%$i@N7HFfAqNv{P$ft_th+nj0sSCp zKad&rXzbJR@y3GDrog9+hB_v5WW^eR3R<>ky?v#Sck4yT5j!iKh~BFh`}70%j%Mmd z^_^kT(p3`?7cXr}TS7DBDo?T>XIytQ*az8iGX;=bZi-nN-3WdC#%BG4y@UtE^oJhE zhD%rovU?hych$;gAn7IBmnF4I9~Ogk93$KNyIX8Kdf?ZC_*PSBr9oj$CO4fnLY_$K zy%TKW{vF}bd5+7+4Z){wd?Ra;c7|4qNat}8G?Qy_eB=v;0G-#yx4>Z-?a@3%Ao}GP zTE6;~?10WooxPO{UzlvaAPc?uQbK-&ZBJ@+RigxoIWO#2OtNKYFb)icaN`wCAV>1g z{lA3B#VdT11)d`Y*PzyE!HJQ+E~5k3uE<`qq+U7o2LB--3aZxei{5U{wQ17m~5)S zmjJ$$W;HybPLL78fGHt_HJjg8c~_%q`wgNI6$XCf1V&R4;{}&n3$XPit}$`Z z2*JR2(87f@Kd5dydro{h3a?U~pr7}yhru6e#mN`S&T9^rs>&a3Gzejl3SM~~7OgdG zNvyJkC-K%0q|&z9QmhgRjQaJ!3B7+5$4MtCZKl8lNGnb+AIA@f!{UfNxP79(%WooH zMfs;_&1hI2jk0Q&nHs#0S#GUYW#R?ITbFkl4FSwe*UWz86Vb(vI=;LXJ1WjCtsa2? ziYpt6%v2qt-~d_Y&;BK{O7MQ~r{>iD=^t~<_6z_03yZAxk&gTG@b33_Lik)==oB5$ zm;&I2e5d3LFdAY^Bk_Q0_g{5`mNOGT&?KxFl@vf!p41IkZHKU(7GoxcoQlI%?APRg z9M2}8@`X)?AHCK2Y<6WPN82mK4t%u}Yz&4m@r41mD4ldC@WnSTQISkBbZ*O2>hG;> zQmmTN913>dWn7Ta=;iOOha%)~7?R`;g@JVZ4pmUkVCActDLhCE<~28x zoyl1Uo<GRS4P~(L*o#|IjTRGg{ZaA4v#R{E^Mxi^wQpDhvoFk_K zn*eR~idk=>PxY(2uF?86KeIvFzkA?w!DlMgD{|hzY@DS!mnhev9>E=g)9oxbmZkKo za(c6rZJdc$)uUoQ&U4IEGH-DdJ~F`uU4L}8>qnj0M`zuBjD$6j7(_-{7nZa0W%1-x z8mtt3>TDS7UE4D3`)0Vg4!IwOe>S4Rj`)jkK+3sFd;43WCdmaSC_!KQ?*tn{)X=LX zSft_#R2_xZLlg@^4$inb-t}PNdZ#O+T-tL~^J<8KiGzQ2eqm}!9qVVaVohHov8B(U zt?dBac=`tF$aZ?Mf$`es>2`f35VqYRA7Uy;AhJ3=H+6>Q1%IsRx1G;}{+@@yT9MB)_~1?vBi{(hkA*(+VX;ZsYQhu^KN+Bo`lu;J{|d*}#s5mU8GCYxvda zL1JWW7gx<(s-VZ9Uk|b5wlfZP*+ow0Zz59%x%daEzzrDg>dTJ_jNdQcd&I> zZ~48ijK7Uw-;ZVWSV6 zH>(L&8Tlb^1UHKskyw?}&m#MF_m0-A!DJ4ujo#LtwUWe_nv1}9;uxG5vr*VYzsMK2 zqMyIGTRco(Sj+NRPd3{`{x7mQ_KFF5r7^R80T ztEU2!Fd7i6!Tuy>Ps%W9+=Mbi@;{fBFC9zh5~HSCw|hR#d?DFSKB1kJ#0XucFZFW{ zgsdgv`*7t^9&@EcsXWqoqP3*YF2qeP6YGCNv=5$`=muJ)3wnQkK0LWTdw)K{>(~fM zY7#ad5SHrnzdE*ktzB9nGn}3XPP=w7OQJ2jlT2JIz15$b#244H_01l&Nfr zAp}+!*r8t|OODo=aIULXnRtS{LBE`V{s1U0fT+aG9c=CUDs`+-Cl|RM*Sq_PHR%k= z!I7(f$@;Uapk|MoW3WI`x;{l1Ju$<6mVdJA$Z|0_ht^tz+q+x41R>MLb{f97+iO{U zJUl*i=9nqemSk%r>C7-;*=?tCGXq3MYmuyw$0tk78s4&N6x||sAq*3SzG?;L(FB}H zSj3gzS>g)*{F0NPP%$V}krRz2PAs|*c=T1)5U*X#QbuHM;U82^N$aHB#MAt3@9Z4# z^cl)mY8dqekEg5nVvO^FnnVvzBh}SepH}}d3Zoi{sjhVA=wmeg^Pkx-duz3J)xCRg zRQJw!kcG50WKxmqC6Z~_duAoVl#7+}!-^JCR{a*o2Eugo>h1As4_Kq~rarg1K!{vr zFIF}zA6bgx#)5X1U25s3(y>(}>GWwg$=8;wPA$kQT?_1V7z|DY(}@LafMCJYyEO1Ff3_33i<|uBqJ!yL%9T%r zBft6XUm%a*gLGsHdFd<=5^PH|J}ve=)1G?)A!$5 z0>4Fg;d)F>-RF95@a23ljfs=~nCgTHZ`w!ftqDT5bs&RxFCp`E^?T&YD#ra_t+QpP zH#myUmIN7ST8<@VV%|1dhS*#IwOJ`8TrpZ5T9fWezUhgGrlpz0@*E(5YUv_a1eG}Y ze8C2qHLl(dxqwDvV>kH>mz1_g04hA=(#~2`B=y`zew3+IDtRX{Ps##}`jzRM zHV%D?xl;Phb>dmYnuoG!q7{8Cxw{h_-N zRf7&2$%N<%|J*SG>$yIDFk{r-n4D2FL@4_RA11yFRs2D4zG7WTX%AW z80X{U)&s}>^G(!e8nO9(xi@Ps!z~Fk2nBX;PgX)Dri+VR)77;qs)VN6o0itfDnTghv*87xYltPCprG^FtFsei+qS)gnruS{ zTrEPF0Pp71^;}f!L>XSbJ~4~bFrP{k2Q^@Ag#v!C{!wtPaO126IL9nEJNo7e`%+W} zQ+Cb%!1kiQO@a;S zN+!Co*+kk@Tmt3g0Z?9oUm|B|Sj#lmtYgA61M~}qrRudzfGT+~&>%uBvvbdrCU|qc zEnV4j%DPHd9vsQ?e@N5(b1ZE|FQY4k;^XZoDu?FUbUc#nQt}VHvUqhpV9{F)Jz-&ByFW`TqUE(b4`l7M{n_NVVu`&FkP_xAxWsXvm%~ zJkJ1~4_(%>XZZHj2-n56vHJS}hWIc>x*ELkxLIw{d?^KP%ZEbF1W9Mzt2P4)=H$`A zpxzA;Ip=a;2J&uG_$OlW*iWipuM!4NmUc4p&i4sYvpS&-gt4>Z-(?jv?4t7ql|M3U z2v*`?n|>MevaTL8rB|ke@N@6d+|D}RlYi?5xfQ+id%9d^hTEBRV|bGlf0Rn3OX+{$ zT}!60_ZDSuIkUg3cmQtQK^=&^urBC#BJ3e<^}+VDPNk30BXl=?#2qU`V|DxBj$NWd zD%{TVw3XIpqA7{d1Z6lxD$(Qe(e{b4D9RHoxnavp=zre-)UV+O{hRE5v;P$jg?gY4 z7%+-V!sIHrDJ-(9h%FnC%(q5}`jmBM`g2)V6+ExnrPVcKFvB zPH^E}BaWdRM#sKBdUAEC#4@S_>!e%)S~J;xQ3gRt?OEG%>G=>&A`PY_4#+F#=^9&B zm6050m0vnvkb%qtbh~y+_{SCwi#pg!901&PRH+jxa;gdQ93IDVQ4ohIqf!llZ=%){ zl(kiXMY=F-U{Pqo!{Q6#ph-=@+o-AXH|TE2m3rmC$?>bV)98v`eUxJ^UBLmt;>IUEaK~+F3W93zp6_&6+LaT zZl9}}mQ=s3?ULtsh@!I1+#p-qfWmqV-4vpvkvWIH4Q;^KiRJ~^H?Z*5o}IW%{D1`} z|6N`Ijv#RaxamrFn2}O*Bd*(NkW}x^F0LXV5`(csObTT}wu-THOeDFcsWWpO2#vj% z#$zoR#7Gz2Aa+`lOp^p7rF|E14=Z!Kd_*f0#j*I13RZaGEM?>*dY2q{GA-VEu)W>& z&OmOe6)2~jMNhu+OJs1)^QTZOXGICpflq~2?ulw6=0uQ|F*Q5|04zkS72PdOvPXI3 zqnGcmta>ZfGm@dXl3s}%fd7-Bc-SjFEGe!VY~`(;t(BW3KEXI9LVEb6^!Z!;(e@E1 z*kd6w?7FN7>>XHPGM(A{e7DtIP@V2F4_2kQf+c2j(YBuIdAFV?AL5;`OGoGOdbWgq zM<>Y18IQIz|7+GM^9%s&fk6cA2L}`*6=l8@3(OgyF=Awr&R23s-AnuJ?xn-t0POgK z_3kBV05oEw=go314ZnEhY3oByX|&Jqqh?5gR(_+vtL0g+lk!HFKcL_nna9RGMV5Ic z68UnrvTdyg`5oz^qwkF}M@Q?}VuhB7zw2|E3_#T?h zKy}o_@HxWz77@YNnh#oTamLu1r+KaNJm!qWA(7IySU7XbmehsTt+|%CxQz^o#p+mm znH}lbIrxZR%O5Lc_pxnSYU-5k#~P81rrVrOcrk%c)4!5>SD3ZMlyr1$dbC@99f3=g zVxb$HN4?fn{)%uw7yXrFHnPdY*G1wQsD8o4UKSzDwWzO1dn#q%i3c!&o&WUR`_m6^ zhd&ofmDZe-k;*2BPc1{AlrD9N{|7~TM{Vxl=&-+rHOV3lFiv|vU-u0zSYNe!s zH1M2KS4c2krzr(zf%8vBal)w)cDkD`R_k ze2Vd1e7GK+9$z2RuCI@aJFOIow7}h#mh)w|N>~J+qg$VVo@|?Lm@y~Gx$7#N!14K7 z{_pe+{tv#Gt|g^*^?jKNO)8SEgr&N2HgO=V7_mUVo(4Nxd)?rh?xJEyS9F!G<@MG8 z%J1-H-aMMPG+QTYbL&Pa%!lj+axK8~ukBDALpqfYbr(_GbG+Ig+tij?dpC$}R+)+5 zMhpcIDiZS&0^z}zC}21a^4-)d8kT{G{px!uDpvNPNyCBrjPVTL)?m)^G3*fHt6J|> zt&V7dKZ@>{Gzw-u5^WQKBU4^0OSCti ziQATk>s`n^daE8xIWNXR;ECHT=!i`bD^KxY`FJL7C>u-Do;ZGYy1z>=T?8wcaW7j& zIB3C`B43c!O!?!jEeMTT^R~KSSMRk1xG?5SVBPovB^lrlQg%I$FrwW%q21Es{SZJ%{kgBSgW0;T=Ya=OI6n1tNs_=Yu z&a05BeUC?t+8*uAMX5+Sv)W9Bkl|?Q#gtaT21AU(i$^$7U*N70ZY?Ty-kmHnZ!7wy z%`nF+CU+&gIgfW`4gmLqMDx@;;DBle-d#8;fdHy&6u5HDuuO?$HrvazUi9kOr^t~e zvXW-aG!vTCs8F)S6h8?iEyTS7Eiip`@K*>VhNgpUr8G#rYDV$XAEyv@Mi$|0U~(|oIzNY8=9&RRGBD^E+~tagL4} zfdttFy;_abe_0q?y%lTId=Z*b`r`479rRTCzMSU880&%P0jAZf7EdD80xrG84EZ*V z&s_tTn3H+i0(i3`A&+*!axLRF7f4;1#t&?x=;!_B^Ivf7nq!~*s0walBCs_Bey7dT zHygvv&3;UFwaSoB!Z?E47ma_H7k|-QZFq-K$P!o~fX2zd^BS7b9p!gY{@@sBzO0zY zPcn*L0353NS*ylPKuMIYjYmi8u!&`|p+l zl=vOghvx?+tt_(r!KPWk_I5%E<1zfR=3K;PQKmXvFFvM-7mOqBa_>Zs{;`5hfHi>x z?&nxQ6Bo0^_cZOaO@6o!Vw(NE8Y+kH{pC~tHdJ2$De#i6>Nup9*Z zE9B#`ADfJnMhO~DSgz8(w3raNp>ELo|PV^ zHF-gL6uQZ#x9!^8+g-PN{YFjqCOIVwC`Gu?1BoX|C(2n2!E?)z_g`D8%iK4N;8u@P z>f(9c6SAJoI(=@QJ8Gl#zLz?r@tk`_Tz^KSIDInxb&(F+mw7OqzoPkSNrTf#e3&+p zIIF-mAs!6_JWL|vp9jiljB2&d)mv!2j)Ftob_q!zI1OS31H@)qH0zLJi6b{h}< zJ&sl_d`fkJ<=82|V~!guOLwwF>MtMhtqsAY*{z$0y;NVVoYC|E0Br(4hW%d8krU7ZrSVdiUkOB<{Lw3$7WKEIxq#E=?<|9fraWsk<#}J}4&7o;a>l;vh z9ud9{j{CifdY%_3;JBPX_Iyw4N-+f7xrBB!y}^BPXE23dB6NfAD%^Etyc|&>42lY5 z4%nJA>8+gE(=hb@D9+h(t~~CJn717_0p=F`9T$QUj^Y;70GOJPvkLd2xEl1%ST1PA z+|oO2{stPD7GQWNmr6nJ!sSeJm6Z&c_luHgu8hrj99}mRD+9ix{-9mWjD2OtVPxrc|E$eC|sAwG)EZAXV$S8rChS{rE#U~=N`ye zg=+HUVwI_tdNanrJb?{d$07r`3kX(t%9)Fc ze(1VS+eBE2WWgI_rl_m(ov>l&laTk*tJK!PR@0vkdpf43tyriI7_ zVlfHaC1y`y_sSxwJn}xBRywN$K;rlwtc9zq9s&_E=30vlfh2;b_!WL$A-+J|Fiv-2Oy6TK4T5=fVNyIt4yk4}h!Nw_RbLM!EJmi)w8g?YNE-)+8dd z`XWApF>xD>U(VnD_P1^&kADLKF})jX)n*g*lE>Bb1vA}hVrmJLg4|0!L|)sCf{uZ5 zQuEd_4izxf>nFyjdb*yvAg$B34z%%f+Hbxa9iN;G-;y;=ro3(@oP{>Wsl;i>4BQ0L z2&XTzx<b2`s+-|mD-&VwQkV#X0@@M+{W34r2|F=GRmu^u z5IG}Fh_}3O+0fK+S3Cp_E68&xFvzAk{>_c}4k>S!sGt1d)vMtpz%HnxJhHnded74! zSJ#)vCqwh9Sx4YDOfJz&UBW@*_snr{E7~PK$gSA*n@dnGpi;r;B%-!_Soj+L1IXg* z67|fw7|PbsUi-q3pCvjSnF_4Q@8RPSj9$8^eC~7^S?y~x!YM&2X_q42_$93xMXFfW z6?cX#<;lwvuXB;Tb7+(hJ!!ZHm);r%PHY)&UQ+KRK}pWqZ(nZmxY;FPQMvBT&+K@B zw;8TJGpfC_-=M`LrlVSN@i}mDxLA(yiWOC|``@1qp_{*SZ!iDLMBpLiBYTz?IB1r| z=ERqkVSa*N!lEfy+5kwvzaudWeHbP%6y15++{MxUBtT0v)=L5$(fcr6+a3#u>rp|0fVHvVvIIN=1XeU zzzK*U<^EQdO#@cp^LweH{b=cE$N^Z-0&sm-K4ewzGSTP>cf5KKP2gE$=*<4jU&s;H6Q?yioufki{2_!E*NqTZS95Rl zbAok55>gWdacueLt`PT6^=(_;Mw*JVwX>tHISI(jzCntU{5!=(rGx-1Gi^cRjm@T_ zyf--b*NR4nkn9KV`&USM$Tad zlaBxpUy>C3UzCQJMWjOR8<)DIPLZBEMOMO)J8Qr&EWh|1=N|PR8liHk(>%BpUFp+< z9Qn~a>dIx6BG_Xz!J-?G)j@Xk1p4T6eylmZJ?~Uf9Ht1^=&TLk=2_BR>gH{x`vj0` za9oRzFr=MMj66k@`SO885iD4ki>+Ef97f(@77-I6 zK)tHjsc`S%G$zy1YnQU$0u}GC&VJiD39hyRYSmYGm!)UEX8P=HFkE+x&S6(>NINqN zly&iKL-(uySy|AZ7-?q?ZXLAj(5*E)^su)xXe|&L0=E>EK2Mxtcs=k{wwX?XDZ8zN zwAD&n*HUH2d7<1W&?{ukcnGZ`|3>^d-LEFU;U_Ww-YbNj)MCtG+nzjTw%_DJ)sqd~o5F#m!`yBTa zAp5XbZmbDJ=sD|U6R9f3ip*%)HVtGE860e@#JiV^W3mL&A5q)|R3*z<7jZ(he?yX$ z_jh&=x{f+{Aphx-k)&E^EK=R6YsRT6tc-xg6zDl1f*`X%oEe&EiHM_Bww=`uQrmgC z=#{rU^M$SM0&4Y?$nm|$kfLVC(;`)&$DmxYX}F%AP$(A0O-X8D`}{We$l&-%)57`Q zUohitos*rm*~&)Y+Ks|$LyY+9SV^wV`XF zrFhSVhkZ5_4}2xBRF>RRimGX&43%DJch^T@ySITLeIKRuIIfoFry zF7pnD-0K*-gVY1wAR2)%d4b&+ya1IYs5(}Wn-wx?cSYfc(c*y&x6(=39Bs|%>!jBp z(nPnW)0lUb%nuraQ+@{Z0UtAzhHz}8)J!0PhD@{82v4KhVtBo%*<9LKD8;+=CLS zB0LI^6&`aF8tioS4?nNvEC?VY+^!PhXeNozyuw(ki2*=+O5(grk3kJ7kG9@$`ob>wd{B zegg*}woM8`r0|}H_=|YU5gA*8dQq}cqw~YF&nqnnvDnG z2yQhSiQA8E7PQr#J0rqHXR)k^FWEWVrPQqD4D!>kR0@Z(JI14K$GQh*p{@-O1*HQ%HGHEImsq~KQ4mNcER3=~~O0P1GdGO%v|)Q-)mD!T=EI1*D4 z$sbSUwx~EB^+i{PG7P*)9FKRHN1H74gpMeqp)##jg3y26WD|)1D|iMQhTvsCLI+lp z70f4SEp}T$=;aGY+=w>C8-8m$7#wj_K`tso~}Jb-s``Jt0lVFxu5V`Ck>JqZ#FjL@nC0vf3uCmAEsBb zrAfX?T?f-hZ);sK4q($*1&u3h9(GL-5}aJ|sgUgYx6ASUQ)jRf)+FkN3UGa@v8`R7 z5QY;ZNiNouWxDkL{R7!uIeFS}+wn7BL;e1`bgp5mKrSq-bR>g3`fN~9GRcU_qXWWk z3!Y`hlhA3|evGxTZ#>Ja(usFBuD6~xWFE>`>?2h9es}r;uQ6N+@$A{L(;xnaXD=K( zw)UT%y?E@jx&QF&g=42pC1t!&9L@zg?1@@}J4y zbvs2HTfbe}9JA`-WYtH)DX9(081{CKek{6do;`#;Q!}_o-7!bS?Tt-Lk5n`^2tcM> z_6l3*@uAkDq0CzR71n8uT5295G$c+UX~^$uKaC^w5u0G-!MA0qXja@WJMR%Q+#oCa zmoH!Xck*$stfc1HX1kSey!-@Lt^j%wwGgY^mybo$!G*8T0;>;(wXPjw1-7f?Rbct- z(l$7Jg=}KS;^+Y9beV@1=;gHdcDC@yZZv0?zfY<1JC`A3v>^=a#u1^mKMK>Lk5}@~Vj5TpLh(uSGYlh`QQZ$ZPISU@CX=RebuZ9@m@s}pll)n}( zPUNuMms8DQS+hM@Rr1kD4=4U!2T_2lw@01Us!<|2;BadTipndWn)|EoWSscpLjGh~ zft{VBUHP}w7}(!ETJ^g=Q+&(u-jMA!Q|BqkWzh|*I@N3_U#-DaGt|tVa@3G?CMF$o zDJF?L=QBZSbg`9GkyE@SD^!z%7ZPKAouxO$yabaR%4!xxm8pwMGaPqZx8K7qL59Um zIjz1&3(>rcG<*?9Oe(WtV33PO6Df`GCij~PlgHZ~m-$ovER_j%hF4JRjhM@woY!0C zAJvuBu9&T>&KS4CznDn+^p_6&}-&B0js;Xec|mk@&2{G zyo7ze1RivwrfRZM;d7tx^ThJp4NP>gbGToxivG*oJ6Bi3Z8!b5|M*+=m+3$L-gyhh z*FXLq_ru-!mqTk$@#}5$d~0)ZZzgqUhm*FE;a@69@b;?h-)Hf zxo4nSZWUx^Kht)!?26Ns;;?eOqCb> zriv1>IM>zHE5w%;bw*E!!eQZ*nO>RtloZu!0bzTG(&D&+q40V=HJAfUhuJUgU;Pfv zh$EQ=&da%Y&ycW2y&q#*K19L&^?+Cuay#4cy}4TOyg)6H7d;av#;T?^iLIW!SMsb| z_Y9aYQZiB{39A0m3Qj0&04?i1puT98qNxirW%3^!?(8&azms2Z!+lI55-jopNOuUo zAbuQ6uuf2qR%<-bW2%o+Zz6iZhXSTX~=%y~AgQa9v$sFgMp&r7vxKSyUyOxX}uU0*Nz2x}0`TwL$HGNmnan?-rpSRp=Bu42neB>G$?p`S=#u{BSVp5@?JUKwk3m)~UQ z0{w_|glq$hQFwkHHCU)D9FqDd$sF8_7suCc+U=2BFy>WNQnX27NCkP?G%Df?-LvdE z%_Ft#h`LL*d%8(n9s{viFNn&LJ@0XLi>EakE%mhz*81A_0Xu9lXC2F!<#(&r-|f7A z^|G_^-fH%|%JYfT(b()#Ho_EO{DIeR8wHp>!f*`3E7F2;-Sq4h2pg)0mUGla&R9u0T+?MUe4#uH@pC8)9ecnq_w)|{393mb! z>BGoTQoG$}TKw(x)k=eQv~}4wgl`Scth0(s_!KOJxSUQYZjnF10BE2ZBe__Y{R=Vb zv{W<5S3z=V*cO>qti+tO*1?m3K$+mgrAEv}>u+f;Bheds3)d@d;5sW>ThcSF^Tr6` zFDZcIkc|Lojm;PHnA~+`nFDzvn#+=#x~@_n0?NraOlgU3D(@=;MmH9kI5>#L!vses z|LpVLG##l~I#y~e?rh8dpI_H7dM_EW4u8NcN|(L>UwO~2Ri1G@+!Q4Q4&DGhpUZ64 z*a?gd+O*G(FC!ghSE=;3C1<%7N3FR!cj7s`Gp^6W9e2G+)VcCjml)_UQL z|9%Aos&F5Q6!mtZH1e(naD7Sp)KhIkGic-X))6c9C5#-xx9=>^Gw@e>Li~RReBMD` zroGW}WQ0kZTI2Cw{F!1?n`+ zo(`khjU_@<)iQJxj*fdM zsbRrv5R0;PqcH9PK7EO_;7#egYo5bQscmpxT9~jC0Hmf*y_{w+N_b|(?KuPZ5PQP; z498gwiEstdSU=fGwZDAs6{WMP_695UrL7~`pd2?kCDy}uX03TfH^u^o4p%eH^c%cZx=j!W5}5$Rp&Epl`+y?%*&b4i=yX|* zA7a+&_Fm$ZYlJb>IXCx7>DZ0I-Q@Zh1${Mz57l}26B5qNp{FRx4A+^8Vw1Vf5ybJq zs(vF8JK^o>nDD{2SZ-N`vX2X4Ak62Cq&7Z)VO6*)!R=@yG5SIHxDC$#hPeZU?5)!H zXe2d-qCno2)iMv_Sa*7IP%H_(vL_;6ko``-_2>*w3+3n%{BEZogf;P_3?W^kb?gsw z$`?pEZoN4+g{uGC7NJi$90a>4@Ey$&$q z2jNIt?I@Fq%)t#2LQGL{eRMq_y7=Pq{W}b{Tqq7)7U8e^Ab=zl9(n!c@=X1Of4s-( zm=-OD<<5~aX6a*YhK$9Y+TA@2G4_Mq!%boInl{(C2e!xJ?uZL+Y*|JN4Pm{F6rG2 z2u3JKQCr1o{H;*Vm>rT8A*YGh4H7@vHGo;?nsN3--+#y!C(?_d&;D0ZW%Q041^z)D zTQaM}hR>^%lJFZ**d}32jo+)@B;$a*#q8}>xXgI^42KY4_REdGYsA? z6U<8Uv}!+zg&)-zW`=Z9!mHA>SSn`}?ZHQgYQpgvb*9rVb4jU0 z1^fISz9y~WNh*PzgCj=ZHFA&u(nP|Ttbx)zzE>JdjNT}iByi{gkzJDXCgG-p--vYN zNf@e~7jg!P`!+8sMTfbU;hlY$BRRP}#(@zSzBfEaDIHVA)fE-;LqvmQ0*EahNpq&l zMaT+^wc_)TNyOsWj&{(K#c2ZOcgN?~AWzl0@@Ld)mD&RR1%i-@uEpO~ zEtYK)YDX|~>po7zZdE$E3A86C-QpLv6|sYp=bYFwcal;e!v%5>93ZeA{0{;(wV=hS zW~N=kWh@Q!2NwUlRlbKC{6YgCRzpu3(M?GQixFRYzIn^}&<=6+S#N0fu&?x4=9A{H z)ecnS&L-q0(9R5{7hmesL;I`-w~8)AJ!DAptNUzP{$+X7Z+N)OZ$Lv$b`KH zhevp5R_I|?0g8c`djSEFFFU^}F;#=S&av~Z#&=(`n}k7z?zL~zZM5e#3Jxo@SF4q~ zU!xsJba+yVKi((fV2U9JRMQ<%?2}H@*aa+v*!hH--l7R(IW%=!sV!Bd2Vs*LO^(Hb zmadB~vRpwb(Wo+>ojjRxx(Ilno^L+^8_O5ClBL$aof z(BHG14dHv1{i6mDzn6ckCOJG-_cs4#a)8hBCC=Sc-^50b>PO9e)rPcemIwdia`u#$ zv$w-xsPVVGwOTDwH53mTO#AP+0}cI|W(TXP-W(t&tklym(m^9ADz@Kj&@XE%#4S zXeq9w_8$%Z?Y+GL2+q~L$*< z-(HiL z>P=Zh8QWxhe=wa3ilMNOtmH+9@uc28f z0BR*1bA>FB_dme)g{B(B&F)^ZT|p>@_dmnxr2AAcFbe3bD2ScF&>j>?QwwsY!UKz; zpEpBAXY0}g>ec;akv%Pinh1+Vi|xQs%I+K_WA{Yrt5j%c($^hOAb$ZXh;`f?Nqlm~ zQ!7$KS%+KUdes1#^D3r*T~)vX=ydi>fo^)JSF6=CxK&h^9?X0Mxq|AEezv zC1yOLCh>j2;`KukY9az^AQN(yMSWBg-Ny#4(sGCdTf163!3rBIUmF!pO9q6$uPvoV z$!oMJT)uPQ+6=sxI-b%f;^EpT;!bY>G{b2VNr=lMtzd>5XQsT%x`&-Cnwj8IsxuO? z>~HPwyLEI`2lPEFQ@65z8t1hP(nEMjV})LQ&)Q1TeK#t%<4gzRC|(vJ;EdjA2G`NH z^i5LfFDkPSD%Xx&p-4 zC-9)1jHc=apb17YROZkF>;okk_ba2JWc zTL@gFybq-QX1^_{ysBI+p4k*;sWA(&t@43S=||8>QK8#^IFwzwTqvS??2=}sGxzo( zxA3EyoU5xo;6<)MqZC@JOUOclWPR%T|0&wo38Sy1yVzwEC5!+kS&4pn|p(9Ka#R* zEj@*h_SbttS)E9eQwFM2`LrT<#|W!qK#2Gp?ZELux&8bqo8FgzbHXY8mwQVu9DbHH znU+Xd6XA+qOp7%B$G8yPvAR6~UCE_Q((}l0Qa~v7CsYPWcH&w5`y8nymbv#tb*my!w|QlzR7e3p}^~0 zISWejduD(v{(1@c5F%=Yh3@nhzqvRU<2vdLNcU?4v@!HxlcaCEn6V(KvG~fh4+HJ% zh522>ZT_W=hS}Ik1^WB9XD>&gJj-S)Jk|2~OiZBaQuLDRa+-s4JT64NQb(hnG&*(; z_~PQi>^Vv?!jO z2cf7d6j^Z?&T8b$5EUWm&9u6BKQdQFR&)^8gc$ul@9%o(h5nR@e!6gS#a7dq9v5w8 zHzoi(K*Yag(I(=>Ed6~RX#PE9590a!qH8Ns+*B!V7Py1$zXs^m3PjU2m6C}jY1td6qLXI9SC9KJ1h>HfIE&=(D@*UJJFq`#RX zAeztQ9Z*WXEkE%D#rinjj*B?w6T{(1mBf^De^SA-)kYAw_Og`wXJPt7Ji^s^oG zG;{-7_>oFlJ=qOSCz3?8y|6C$Ji_6JJ2Z^74Mv(kXDDB zl6=^F<&*Ywn0J{*2@FBu7*OT5DM^X+pspzvsZOFBYq<{?DoNEfy2j?YQ86SgXH#8@ zaXE$$ijpJA5ITAD709-CQV2ZRkVoo^dGUe4I4}3zjoo(r!gEL$3Kk&tCxUrz$ zwKT>mgD$C0;^a5OUI2|ZL{KVrtVV(r)YLi;TqG)wb_IXQ6fUcUVPXh^%B6;rzj-O} zB#&0T6wVI3%4Jfy{05p_SFD+-2onhdO@wrZ`>}JTXfSzkVFU0{{2V1QAXYxX%Wr0n zUzeyye*3B{XV8R%(~GD(%rs{IHm+KMOb9wIDS+lX2p_U*(7=|p(+DV z8eoDfY|e89<&o2{vcTkj62h1e)$F%YXY)Qvm!K^s;|}OX5G+hn;;GzROJDELFr%Xc z26_J$)4?<&rZ0f8}G(ZLEm1urK$A5k}ZyDM zyJ<-uY#sRMoL#E23+#p!!z^Y`HS?LwG3(R2UE%Bu%-t(jXNFfQnUUj%$GTL(&?RHp zOE=o5@idocTdZ9dBI9-HSyFb6IuLdgK~D+sbDbLZIAyk`(*|rfBG|<7X^@uqc3B+xVxq03xzBHSt=?_dR;(f+|%)NS&s!X$1Y*j5_klt)z@hYucA$yeK z+R=r125F)M1a68~0slp}^Q$F}XLVnIK&+(d2Xp!{w`^=~6<@d>5q#}>c)~@8K(b^` zUy%_nLhAmzpx?iE2lVJUK7M;~9wm1|(``nXX0|8{09Su-8{wy3(Anj$D;R44SmWB1 z`R=^T9#HE7oIx2dT`l=$Rk=p;G3B?V&FD+?&OkClFK3#c^#$+b?#YM>fafG|(umOZ zw)dSM+cgnuQk#u4gZ_mlddtV&!&9%C<~fT$iG zdz+LvWg9o6^`_?d3fOdLub=*pSJIBEOu^a6NJ>7nI(3FvOTNN^Robm@UVXf7O_u7e zE4YJq@U`WCqfy)s*TWGaIG4lIwX6NcisF5E`Swh<^1r*_Z~le#o_*7j`%Eyd@A^Ej ze|wpKd2#%!VY1S7(UTBqeDr2?=h&|Uezy|8^CiUwWz|Lwhf{c~@yy{WJyRkr9SrIt(?qWp1pMgJ)(oqu>c{5em1JP+}!YJtrw6%>0v zU-u>K4V;?x-!nDI|33Zl+24z!wz}i*Tfcnv_m=OHOn_dDmdCyxg=cn>?6#Qw>p+Q` zq=9vo)76s~7Sw#JQj1GBQpP!a0LA^OV!R0nr#y|4&yv-uRJwHv@0Aa4^Fu`|J)3+k z>`Y<&wxe>Dzqv_ZNM{CI`|Bp0o($WkOi8I&}$+M(29~`ZW=`Q~>Ye&m~=oE-57B1@%ek~o1u!Z8&#F7aiox)yemd zRUB&|*deOrUvF{r^31GNHtol`nmz%=NGG|m>2F&asLASTySfr?!d0@$>-!L=2_;En ze!x6j7uY78y1;k39UgbSo469I0GsHoX1Os#^jg|_RZP|M$n-yksf{DTe!zV#z!Eck z1Eh$BJv&#fuBXJKV&~5ncO2b8J(^{bpcC0G(KhulE0>j&r64H&)6yJVX<96}uN}Rp zi4vtbrt99E4xP$QE`q9alnTV*&Ky)_$w*W;*ZP0!_t%^pqp9!WGFORrg45 z%c2_TuFyT>IkLE2=*hESTWm61QG+eZzT3s0dJ*DBc1aio;Up6DB!G^TY(fH{M-f(| z33(g@BR_8Ktb1H_x>8E6dwBk%fsS2WitgYkMbT?>5QVelUwRdj6jFz2Jsgr$*{;`; z=Fk}%3Cvi7qkTc1DIo8#S3?U4^KWeTBs@UReKxB##|Bu7!GU)L_7#FTqy#uTIP8jt ze{dAX%A6C^eCfr`Dw(jTxz7_MTEk>X^x?lx_mb0{&vp(Ql?By#olkh1se))y6SOT| z&?{LGbO(R&`Y~ZL`Gd!Iz=fb6P5ejldw#kTKUU8(!@~s6!H21`Mk~Y4nEx3&<_DGr zt96Nsan!u1p~nKWEFNT6G*}Foc7#6)Ly7tx5^_9@+C1py$Hkx-1uPbh4w(Dg^5RqC zsTBHju(z)-fH|3oHN=$phe`jgt7w}wq?j#imsuu>OOroh>8cPs+8Q+YrpZ1_Rg$Nu z7p)1P9Se&F$v7_2BS}Q7Aybai119kQ`Q>JSYpU|rZ*JZ zd)aS?K{^7;!N8-Cte|WdJ<*Jd%usNj2Qr}_RNXpY;h@vn4QaV{|GKQ&SJI7Et)&aYCRz{T4 z7{UjS%YjMn;u*j{Ad8NCXSD1L!AiXY)iSlzvscF)$x zF;HAi)j21TM*B8<_wLK;)u;V;XIDr2S3p=cj*EUlxXbO=jzMG8`&j8sDN=&0IfJ@=CTNLh@3k8%F*f7o-4!}6LrnS?`dEH zb(tWQUueQrNii1(-%#!-u;Q%ZuPw4M$lzPK+t?DCQAv;atzmGB z$-AGpL0Jx8!ZpMM>Pgb1a^8!QIim)uwUoc-3n&xm=yloJez_Um4J6JokVEQysClH{ zao3)04z@suV$uRTSG0gU+mHpwz!LvoZHmUWIa|8T3CE!9^I|0C&Jq}|*ukrd*5SpQ zcWLQePY=mRH(K}Z07D<-5P{iPN{oD?@&%q@3ngt@Tc&p0)9G?a`c7!{G&#P9Eh`sau!$V-a2WO}7kDne6e%`-0yVMb@=Bwt>QhTL%V|kD; z;!}i*Eir&!Xh%fRlj@QDfLNrMvd@NTVpzs-)G@cVVdC&sHdV=>5+jub%ScD9m_PJ_pAo(9J~L}9 ztBPT$I4DdxmD2!iO_lR8Dk+h&Po-<>gq79(m5&q!UFKJkhVJSriy@CujYLPK<*Gpy zxC17JMO9^c;vy$vkw>Ea2z}vuB804A-&LaBzs8-L+dTj&SZGrbh300ffCDMmu>E=` zLKHAGeyAtlGwvl(K4RUNWr?dR!R+J{MqrrS_IbPaBH9`r0jgK8jm;>$YdnXH+Hg{a zPh;aIL3qZkyq$eUthc(7W#dG!B0bnX9<$z=UDo2#=!&ijZ!XIl_Al3Dy6NtCo-IUN z)(Dd8x*W{C1Uknn%)qu|rYe27i4|q-$X))RY6AAGIi<=wE1kMRk%j&!Yg3XT=oACd zDXhb26R0Q827|wPVl-?5d)UD|JR6&`0KEUnVE^Ete>`}*e{|eG^ns@kvmSf%-A*hG zcc=X@cQdgI>oIs%l17+(gohhLf^MwPoCUu=rwy$mBEv*;aG<*#ogh-9PJ5sU1|`bl z5mU;5z2*dfm))&b-R)-LaaKsB$){;u#YDi!n`rdgstoI6L04cQDsmYzaFW!IGAPHu zpky0ub8LFzA@1lc>A}PDtv$1&z3^85l3>XkWr)w9L}K1g#enKxob(T28-f^UKLmq< z!~WZ?S8Y3(Ag?aON7-?Cmim@d6(aMuCq5>L`BPy1sMV?^sJUufvTx9F_>C|w{GyIl zj(4e!B`#L>Q3Y^&nOXz6`cYI=KnxR*t4G65SWSqRB@un`bjK??%k^J9D?76P>R;*S z1AIJ?go4!mKh7XkCcyL;cjcss**Wp6rDY8)XNCZX^h*+FFhGKbT-Gb)+UoBd>#r~F zAL~hpM^H9c14&2Z4KTpAQH>;OIXy0y{j0Ce2Uq?5i^H>@C{BxT2tVyW21&ZhQ66b` z$meBv#N`Cwxa!@ii%!Q-rBQm3SKL)}lA3hRu^3``dU~O%hM@_3Ddlynd{~#i+FIiJ z6dPk4)`e2A5n^+JlchQXzS%?$RRe{eM_zj|_M*4lA^Byz&Cm|vBAANaiuE6DA=aj^ z(@-fa(cwy9T0>GM*z_`9d2vCTk_bCZ8H5dD&*hK~7L`0Yt_3c94 zSn>=}teA+m)>s`vOebraDI;22Kbt!>H<69Wbwc~oiNZqXMH$#C9Oa^?7oNzOq*8TExhT&r)s=LsokZO&Hb`b4la(`t+PnHkFbp zg|4&|5B~NZ50xq*;`Uya6pQ8LZ9jj#xMl|U5^#I<9(1+pKsdKQGX1yw!s7=J$dy+) zL>=;$EBTN}y#XT?@a3pPF?+y@?Ga3<(Yrm5W1r<#&_%s!z62meA^l_t4}-?D#UDw2 z`=xs&GYyN&?R>+Km1wn)QM`D)wW?XdX*D=_|0AqUw8pFvjksvDKIZ}A8BXgA<7Gv# z#9&IY@NXnQ^Et+6c4L*?_%gF`?JXPsqN05q(daG47_znkkA?Q{!#5s$wSRHaI$)m8 zUUMFSp8Ff0M`jC3<2jK$QbnR4LNtV9FoJU&E>5;&niR*&)J_D&VAYQ-uvqgT}eP1mm61?vOD#O#WpDuF_JHi}??{9?q88<#u=6!g7(e83p z{u66*dGW8U$>qiW$(sBpc8ZhKPhA~r#xId?Bv~c*Rntnj$uSm8i8qW4u0|h=@9Y_0 zZ_C%@On9IvChXUQxw)5vQWdjBrX(SIK@w>s4mTgfU+^|r)zjeS`>ng~8JVLVl!TRI zu1M@qVyAPQe*uq4LBW^N(dOe7M6DAn>%xp*9lkjp93Fi*5`vSC%K=QO6G^QzDlA>l z?5U9J4NU}MKB}o)Oq%4$Z>fvs257B$XkyLHSPnqs>eeeyL@**juw9d2*(clw9KYcFA50uO6vvD5dM9p+`baT{vJDe@l+YQ=F- zwkDLu;doXf{65X3J1M*Li{BcoK-6%S!HFesY7wl=f<{*VH=+_h!e~VuU}nAE6!sl8 z%1Tq1ih1S3Jf=3t!cP|!Sn(4_QOd2LUcGG}Dd9FJX`(kBQrE{`cW1l7^?~mf6ID+0 zk*8wUJUXqMORn|i@HBzbKJlN>t=nvh-RY}F(TPXY7sk$P>(Ee|dUsf&mhDRZo$A+x zGB+**a-V`X!Sv#WF10~+K1(UEZuz5zravGp{Dx7m<)~4ig9mC z(F10XhYVty`f-KekdxK<`9E0GfO$W zFQT_c-Y86|1ILNn{mC>RW#YUH&G_t&8i=C8IWC5B7=1RA10%`y>#l-1sU_K|45O@7 z<{`8%ci(z!5t&S za#@>X8bA~FsP0D=TEsh6PfCTk+dIO}kuLKHREtRSc%Wl*ZY|*!{`@?VV{tMX@j)?Z;0Gu#h9acb}oRW{p03RKD_ZA>}5SYeq%Kf zQ%}`8pP&S_90(hX_i9vYM*Y};<;7CG#gZJ^2$F%6^|JkoMCG?*QwOqnAxf-+1hFtG znhjCqE(wB`2R*{reua0wZ9@y?a#_s$#;x$jakjVy3|3U^-R&l9mCAuoM39(g4r`f` zUpQl$y#F!NBNncJ@4&;o^;ug7*_CvV@Ntflgmu;&p_|??nJml_8>@fTj3ZB8ATqsX zh>?szyc3@8O~>I*xyZu_2~J~W2FT=<(Q#lag?e#*Q%R*k8k1CH7G8HuL7Onu;dw#k z+tYXa>xJakLuZw59ba(5&86wei3X{blh1|MP>3q*^REqs%FHgaQ;bW*;Vvc-tv5(vNd|G{bb2FR$w)osDXE&QL z&NsJTZh_eM)ywVIpLd$@Tb>igU`_ehO6AOcr(Tf-{{9m!T!!eZv82AkZBTWB@;?6S zpJcy@jdp^CDu!mS!=k&EFl9E8M2)7fSZagXDy5`(NliN2Y>cuyx?;%4a{M{B7g7bz z3uDFh3`#LkHTn;&6^n8^{{31iv@F<&=fZ=kJH$qebD-;eQ~6z@by;`pA*Ri6h#Z+m z?k1VzQOnb)>S}GBZ=};g|4LQNZV&cD>ETH&sB&S|yok>*$weDQTXNFt)eldZB z^@E=t_75(8c77$_inZy#>Ywr}rU^Gh=$bQZ>rbryIG;TFWB){xv1E=IGm(N((B1Am z@7)i)`U0>DjCRu^2P+gNR1<)Uhi4wVNeZoLxXB1Zu{c&GKl5Ns!Q)Jn1v2h)| z%5GLNFU@reRz?b%=>hhX!t&c%JtqS&aeVlT{9g5tc~Zbyje#*B-H+;E>0Q0s+gWp0 zKL^Mr-qq<+c`qr=PF*f&6D-6ka>EFeTwTUn`tIy7$wJZVo2-42uCiyPgsK&*xkr>h zTm_={jf){uPryJ=xzQhD%;w^=5SZuub8i|d1d%^NT1d@8e(gUHScCsCzQ$Poi+LA( zJL|M5e-xYxWGrc3rKkw8Hk0$KWD;h=B$UU^ylGS+(ja3nv}7pzOk;MWQr42mZPOpf zTDFX{OK1RRJ6fIUVHMWE#OH^vB9o>CFU8p>CzM2nWjU>}jjr>;`CW}P(bms1yq5(A zL-AWccnRb!an}Kc7QJ&U_|f2<^Y75)I5__RQ>mt^T26cuRjuCj5-=wzPVNmOa?HF;WJc6VOB+FeaXx9p{6_b!=% z3~PviFx*es0vD4n3MeNI-xyme5gpggT~m{Uk!f6McdaL$il&MTr)O6}ynhL1a9N4w zhx$J~KLRt9?r*+yjGhjI`s`wqpMF!(Ip?eS+&0b>Yxf@6Pg3{h7AH!r+a##BxA#Kc zfveSEDxFbJQ?^(fi3#{0i*hOK0~`eR$lb?sTo;P&dDeDA?_U2Aj=%uEvc%PN_~jim zn=T}zl2||Y$-#@t)q~&Uz0#b4j9!s0+ru{G_UH|x2(r&Ar1t1J*JUQDs=kz1Nu1X^ zPa#8}@^YwHL3OmK8-Myukd7@=!@XYm6qBonjdpRKg3el|LUN) zma7Hd|94}mm9-r0{9lbnyuy3C17-XD&kjkV)XA22YAe%OF@^*Pq~lmc13eW8)N4RT zrQ9y-^=I6|`jj(AcxIR&tLPeC4u6C#NsUNW6CMnE`g{-^TS2J2@9zU@G|swUFVY^8{19b#W0A3PydWOKOui8D z)Q)}FQ{?kK=)Q@))E_8SA9AEVn-tzC&|L+b`a8wCk1!CSaDx$H@PqNy4yS5?dLJ9xZ65Cy1X*rJ(lcTIpu5yueP?j&tJW1b;BkgXH>)kzEKPPz!ITP%1~SM zjIn}mi@?y%^~(qf*{_E$|Ni?ww$6t0QeK8mXJyt~Yi7OG5Ma4*X#+kcx{pmgxIpqX z&{jtuf&;n(sjY&{r4Pk|rO`Dd%2gMvYkRUU>gE~?TB;!l)eW5+LxKKZLFyQSHpNHr z-k+TUW0rRhi;A>1g6|!P8I-9<>0C4x4H&*vFB48$Ftkg>q|@CYjX%R{e2>!5C9K}o zehntv zKG<*biF)0tsl-iKbV+MAWy>Nk+E(<==Zbpdd}n7(XF|=`&uj6*MflzsqhdCFq%@zGOpjoBWhELJQ{Hkq)~%U}g>96hwkoas zaYiC&A+xD&{Qx}7GEFdiiyTv!d{^%W$Nf{Av;~@~n8HP*1O>WUOsuIw&ou;{QN?R1 zDu<`!w#-M-!$De=#}gouMO+1eHsL?5XFhAwh@AA+JK?R@VQ1QJMzWGIr#zb^Z~XBk zB}tK1Uj(c6;ZMM*3!Kl;`hnhy$h?Q(t3s0pWlTHZi_XifFnZ#n%S!6<6PP(_t(&A2spE zGffViJNv@C3S8bep>(8p30l`fcMQXPVlvB-8QbuyMj(x+c~WjE7Oj&ell)PnT-N9t zoV(SoCw=GM5?YL|QQQ9|6r0`M?fU!h1p{OC1f^2%O2nj`*`F01V$wia|G6$|yydqNEX3mdPDZu!sx~T;0M22&*s5{+9mw*!wtjuT zm;p=Kq0+dV!LnpDtHCX^yspZR1%&&R%vfqvh`Q%iB@av)00XbAw293e{&9L?wcAp2 zhV2DRU|t|Zu>!$WcO^4ON4>_hC1nAzu)lfOeQ8H(?yj!v75-N|?lx94B)=@1+J|wVG?) zT9OrY?9D)Is=v}xn&1QKxZE%*G#W7d-UIoQizCT)$C2^nU%zAi?M~i%mSxG!cLOfSOU&OE=bADvGw!s zgP?xiK+E+=(#@*|H%f9alDHG>QMqsgP~X1*JQF^S{2{MH zgAz=Cghx?Wq^tF_v#YE9!NJ>igQYKP|KeT$3gur;-yXeF<==PBT6dvwCWV=Wh`(BX z78CK<+)UKJX~bM9Wa#-C?~`Vxy=o%m;prnwpB)I3%U&@|KSWI1$zzwSIK!FgUbcvrR6N4w7_t97^Q*kV2saLJQ$nQ|gBGQuM;&yB-2 zmazSWJax$Dbj<73%VwN22(^@mVclTZ3|Wy@oHUnF1T|&_L#D5@>g>j}=9{ffrcR{p zZR`&DKQ4CD_)$}QvGtl2@E>MyxbTV}W4e-D z@qFub!^Sc-mdv6;osP$&1MVByw16@Pysp6B<{ifg6UiKW@&Gi2c#hode4$(!txG*4 zGMd+0@*ig=rlxI*jEs1IPtG8WG# zEAita4iwGBHPfh;d0S{ER%6!YS8J5mvvL?-K2N$~JP;eVZJCp%ZhQBy z`b?tKNO_f+CJNCcOuX?q{oMNPmQ&GXZL&n^D61s-Ozob=oNs1;yfjoIa1rMSDsYQ&~Hbv?R{5nFyQVkcGXJ zs*|OXsA8&mRDmtQkb{8$h9DR-g-Ebqk>Sc0-ZPP_j2PW(;h*p7x^~01irx{1lg(7; zm`QX`No8rEc6um}>Z&$LJ~{f@&1F=#xtXOBj^$;puw&5Yg+<>V!+dxMSMMjl41c%y z=+prvCugv2$b5B|Q$l}auhp-y?c4YbddJFTSkH2%8fWG8CJBh_f$Klj>UMhDsXDif zgsnuKOD;p_Ptx5{w{NOB1~5!ff&*y_Vbp!r7!UGaLJOgaaV5nw4KnBFjUp#s%&T zd68rP=qpx>Z*28)(DbLOXM{bPnmT0)EoM2()!!CtuTnura2Qee|GO<61j%2#~CIiOT0@g ziF?U435aA>NWk5vOF)b))ii_-(GjdWs#kJITVkcXm26B3ViS~bp)lkw0&(c#?T;q; zbkx;27A3>QwUW~64xixY>0*fX@z5-$L@g`RvqtBF(%A02d&9A(83T{Z;mN~K4SC{; zoLB9)zx}O?dRFA5c?7}0P}xJd2((NqP8NpZ`0nr%ngWKmg#^~_sW!U@j0)qQeQjbh zNvK|e?Yi<1!jW@5B6RYJ?GG807mKR_uQ-BK{y{K>$|L6YWK@ij%FJY1$R-cvah#>? z*Qo;mE^c`2HGnbp4ozWL_+eMU}u2t zLe6J`9Kh@Fb(_e1NkWDI5`a70*gNq0&ExZl%9;j$p~szb4~mwu%zkb4_s_c!BKjMf zNH0mTycB=3CY_~Tx7_k2Fg|T7&>6*dy-;%_C2rxKw@WkZ)Q_4E_~Rl%dLNQ6fjyl z@*f#U#|O;mrFefBqUObQZIo_+CuW2&!J^Xj*jmZPVl6X$5w7SV36x0BDqpK=?!VWn8AZwT*arwG>He2|87LCa_r+8*DNv&2Qc{I_a(m3l`O1=QWZpP_yh(vs@`KTRlm)WF?C%NGLUK@&9$2>V0M~rIb{}9Mu%okLqjpMr*9N4s$vs8;Y@M!& zpgdJC1>S-uvn$=HbfBW4Ve994i$Jh~)))g~Vi{Zt7p3ue4FZXu% z>KfMFsH*91jaJm7iE}m@4NMw8VK;o#%+t!rpl$AwztM(%+t%mQ6#SDnlrt@L#1wc=PLiD|4! zU_cM6e*vlh<*DvHcJ)~2zY{!E*4luT@X9&S4V6s{3xvuytX9T1M4`l((rjs5cn9D5 zR!`e`-EQQLW(oyb<8@DW=;O8DBcOM@5_oE&PA2$zyS<`5Z71r}*6Vr>5!WH1IOG0<2B_YMZ&Ye^q4F9X z;25!|dbL5&uO5f#Yk&VFmx`sZ-!Pc>*}T`Td$Fr9CRpP)J#6Y*Jc1S6lyPqYm$bFB zc?}c4l2cy40pMg`FLw|UmMlAlxl11;d#-H zErEHs`|+V$PU0~qK#ACrd=yyU-il@5>PJUb0Gc>!?CaFrILSulEu)pnw`LwQjA2#l zRjjf-Zs*nHp>|KZFtx1t{9uAH`vo~QM_O2ipJ+}mrKV!C4RMYGXLOGiL5>%dEQ`?z zj#=2-5kq$564W%+gnYx76bw7Y=lRJW3|$*&P`%rY!o+}S3k!u=C-p)&#$94UI$cEl zoBarNP1{z#Pphcl4)Pq*h8$_&>b8fCd2J;NT4!-^e1rrWl*$Hl@w9(%)#`>~Gjb`$ zgKN~Gv$=8XX;X3M*zmdB)SK}JFY`RIMO0*qKt$kGZ&hG!tqRPo-7jakJt&Sds~C|E ztX4tPpU(=wbClX|8!p%?zq!sL15+%q&4dX%;QUx` zw!`-)z4fj(OYjIK)bj3b?}aCKlh}Va1!M!)g(oF=JHf?x&^1=$QWc-~0`n&1*p(7x z!^}_#;n5sFPundfI!?pl)SV91a@U%m_&O9`(RvZ!3|$~6Li+9#hsip4P3sVI z7~P7nep3m&pU@{fsK|f5^Tl-`9L?O?>;*5LuR1DXjD1`9;pzPnUD`#{(2l!U@tff= z(eiNqp)eRokpy*&dBxzU@`}f%H6Uv1{!cX5)RJ#xT&m&AogqQ_s!Z0g>8c7LkOUs- z0V`N+t3F0*Ptr5vNx#WP!;f${+ETt~KZ@p>YW_RR7$((u8)-^N|2Cf)zgP)lL!u{W zA^eG~jj+^+-ZB$34l$S)SmRmoskQ&xd@R&>I^q{E-H5wCvAQx;UHrDWoy^(VVq z?G%)iL_h74);AYRsc9%-t@`)3HT+bIMvpRi9 zCosuB$yp(=p8J%o)PXhSE}N{yw2+#e*wcY9E?1i-A3}WJ6c%`x(~QvMVEt=Y~Ngr;#F@JGxd2g!{o!AE#w?C9Zu9 z_=}~%NLPS+%#7#PN)FAJiRSX$9WAV2f2ZMqtyT5xC73`S!?zzAOiN?g3fJ18D!3fD z<#J(ktaO@EN!#s)!>1*W@n2FI9FpX?hQS%)9pd>U$!{aSX<*Mrk=zb?vpr~H7`ZT`}E+(~VS4%O}gBR4FX1IBYXW+e}*Ng-PgCX4thP2uc%x{+)QpT#B z!WD6yOQpM7&FvS7fN@0BMH7!AO*`H?g4h~!X#vyqw4OQ~#vHL}4fQLdHn4iT#f6@# zW4*V8E@TrgKe);m8$A#r%V0v__>nYN?gU$LGc(p8k4Lw61B62dhNb4cnmz?Di6)ij z6;s1JHqEbAxbv4N(B%lbatc6blE7GXSZ?&|c)OX+fl-7SBJfiwrKb z#FDcAJQPEt{s70T0VAuUO_3au?MpyFi(s%TX{;-vZ~ogk0gC(`8nG-cv>@j`CNfuY zg@i0kyD5BPiVor1I=GZC&r0w2aIgj@gN1G!e+zrM@i*brKlx`88P?;fz4hb(%j0-- zAb+-5zSrctim+$HRq{BJMgJS2(5NUh8`D_Fop;1HnU!~tEX{1E%+WdXW zEXkkq_xx`8bND7!pF%rwovqq2zN3X47xFDAa!t9LPtw{MIm#Z$!;BJ$f5ObR+d zP=MsLDLS#Wfu|wzM5cQJTN%tsP=RHE`GsBEyh`|~88icE*ON*#ok1~@)~2X26n{QO z7U=N7ak6SV?I;*c0NF~Umy}L|$|P2}RhN5pIrkA#rp?ku#Vl-MChmQsQt*+sMHy@w zm379N_in{)RqKnzpE`!D4XPW^U1wU<0s$bw_~D8k-s;~c)TKrw{D}BKyh@EzTMQx4 z12@YHzD$3uF!_&e&qbv{xq#1JcBB0#3RwlGtF;cx0Fj)Cl1t>#!y^?{p)$p9}N;T+^G!nR~wwyt!NglXiy%-F*pw_3^V_ zbC2Bf1FfACU%XN8DvoWVoMx;$2 z+{;~-MODPp7u!K2vG8@Gh;zG{j%lV?+@cbNlLLBRio@IG!U`J3G@Xu`qJd3{lRVUB zps*5yIy**WzcjtSfi#`>yE>5Y`kwDV zjcDy(ODr!T#4E4u9HeGuqz|dogVqFapU?P|s2qG|9jX$htqu;L>A~mO^#kr5y)y{7 zGn$!EyV(qIt$g|CYb8y?wrAR#xe~gNR>4kA^!{X-YS0i)y@>;uU#_JkO}xSg}Kk;z_W?Jw~*!u>z6Z$^(&fN!5f_$;x7_Zuv?ZZk+Fr$4*Kla%lE$5 zIzKz!zffQ3Ay|q}`)c@_Z5`S<_Sb-{CC^cygctpPAwH$YSupVfy&3%DUQb{FC)Rbb z-ZhXQx09Mv8~Pw_LZR0X=#W!x_@u(b%xtS%iV~x%3Pa+gJy*Uw&YmeQoQ?4sO}=DO1iwxk}Kei=dr_6+wtWq~~+f3j^asKFq{y;m;^DomUvv`&t* z$CPC?jATkrEa7`pxG&wUpv5EMf--uECNn=#Sh$g_si9t9_@Q~9^^W&TddKgzRGQ`? z^aQ{m-w`;W(=+ivJ-F3yN79AFA!b8Kdz1XS2cki)@RboDq70veieX!zBBbz|d9?mW7>bK;C#4eT@~Pwv zOA(lPtdr+p2W`GAJQIng-tT|t53Y_*`f5cte2fKL{d91+f7RE4`5vOsHzWlG@kFhL z$!NpOolukS8+w&~BW?txnJmj{Y2eTAMYF#;IM-IbIy~=03Qkr~!?gyI_Oq+Afjn2v z+z0qUEEZPG&>_~(^=EW+mEWQS$a1MlgDyZvhMuU9{OW68)09+Xb<`77y*uRw@vCWq zLAHczlY;tvV6h`Yr?;j}U7D|?7$$Ccw1AD)JQJfH8{AdnJXdyvuh5KF9~R*oB{c|s``~TP zin&+E{Ip1c22_Q&G>G=mFHPptNxw?feg5W0hi`Yn_c}jC)4fR7kN1%vWzK+=xw^1F zyg9HRaW;7A>aW^pCoM!%eFsN=!`zwX9Z?@ACTSzb1F|1s(kCq_Y6ZHj{9GiU%vrIn zXZRdLODOSF2(pQThANma4f?&$RDmF%X~kGJ;{ zXI|`$0lrq@=oIE9&kC{8u`cXmBT9Qd|FBn|o6U=KJME^uMJ!J_m=5rPWnqzM+7=u{ zBFZ76F6_tJz`L_HWIEWXxq%BEAxZLU+a&BQQ-XkQ5V_Ow*S>~m6O~FHQn3w3stUu_ z`mJ52e8l`A*DzfcN_QOjN;>ANgW!N@GL&+i^a*Pf3?qiEtL(G6%&%MTPxi?os+V?K zaIJSmSMFw#>uvy;c8kO@^|6}n(vbzTzZ=S-U1zHU9v|~F?zhToD9dV_^g_$?LSljo zgwIE(KSpKS2P5-DKDPMA5S{SAVPVYuPX97CRECJDb3odmAHnRUpD|NT(vpCw*xK~d zms(4HVBUPS2*3Oz?iC4U!JygEBWF4{Ka<=m{u#|Jtpk0Oel>Wc#Gh?G}ZW`tL4{-Xcm zucSs@Z*_2hq6^lA&OcY#)z$!4K&ZcoO_(^&#yyw|nl2}e*BG=PB?U61D~&}t&;Vu9 zP+U|ljmk8KL@VXCNz?=%re91UpqH<5duwM`w)W0eD165FDEAc;XX(3$Pjbd&3Sb>k ziL=*8&J2%I^TQEB;PiVmz4QoD%&vXsB^|05d-=HcoX$RFitSbc0+qYvkw~O0OzM0} zqloTFh@Vv_*652(;aK<+@z|r`SO*V>(V?PC=;*38s42E8Aov1LEA&aRT#ors7ez+jie%r!2%YecL3x(ll9E=bX9agW*Xn?+kuR zU9#>hPM$g9_L_q@NikUsEnDg-Enye9PQUilZ00WRR@t>&6is!;S_PH=XoFiI@#0Jh zIhIyNro0xoS$F5fo+rJgm7zt|^k=d>`R66bq7*gJppfc-n`oYk&(d#u;3%3OT%PP7 zANMcna64FnJh?7kj4vqO;dqJkB3TB?;OtzyNc+c~+C3wK_(Zyd=)4ZB;!7e0nVE5k zUZ+H!7J%F!TP!Z*p#2uh+?dZr)@lq3Rbm-`G2QLi@nZPtp|$;7y)u%GBq!@xOGA-e zW5u=vxK2HJZ8Yv>!#m|)8y10-b9jCCgJSf(otN9Ydpj=(QcUO*;7~vC@5XEcJBAoo zevRoXdYL4*q5+Asg|3ldorn88S0+(hB52Ofm>PCH4yN$WqMG9Tt*>qzR?s!ZTY@2U zOEPh4jtUhTSRbSY`?2|cX#+Kn-sm?#gmPGcK}5FfwEX5HibbG)q^(wtc729vHV?b^&n z3^5q`UBk2sqhUdU(OQh>q|k)9qfQ?=?7#Wyorrk`f+Fsg zZjyXB?8-32En}-}!iC;rT$A1XsY&q~1R%>Cy%OD&2zvYv2^dhnbac;vwQsESSJ$!+M<~mk%EM z!vP9qo#NJOZ6IsZnGGs=rUsy~F)+yklV)ya^dNaS6&Yz|R3xRvI{h<)y1;Aw&_De0 zpbP}~_>jJs1|Ov1`SJeM+p`O;`FeSEIC%Tj>4997myf4|@nvuRAU&^=U)K z7E7mvoT)?&kwZjX#AhDq?D<86~lW_G4i z)ruvC;X8nawmmAgzVY<5g$=x3^9q`u~FIf(S7!dq$`=EZMu)wDw&`np?h*#An3ucve&tK2a7^>Fk*VcbRhd%uVTC z_SZj;aq2Iw_J7uHBDTf^f-JZR$MAz=juInoINbG^y+6Q?Kagq|E*_?OFiSO32(C2!p~!FwMv~IU zZQzsPi%(^RL4L+%TnHh_6q~cG{18K~k=Q}=2et|imW!gW!Dc;;EvXqil!1s=Rgy)T zdXCR@rgG4ZY`8X0pU^C(=l$NU>-^Jie+@pyu|M&=j?AUO-$I`^5+D{c)hI;&F)gIJ19s$>5WDcJNGLGe$$4SCc|o z^2a8-L)iUyQoXBaXvY_iEGM+C$+oE`QcQwmyN)GDP{w0i5sOh)B&X5U3gL?|?<5S* zZ#$3~>tm?@5TE;;MSWhmd1A^2ixdd80OBtix6+tcTA+(@4H!n5*Z_KQNEtuTfb&&5 zF{`B7@(*#@B@sxs!B~d0ybilwK}S5hx@L{d>U8RDpZ)W}T2;4G>{_2VljSc2esMq? zR#WV?Xn?@^s5l1Tg4}7h+(f@#s1)9G#@@l(x6ZT`AJh~&Y<;|~IDBneG`N#~yU~PhG@!U4i5B z_mxIWxHY|pf|d-nq>^glb3Hy5(iGjWsPs#J;iZTB1k0$BRS%&=3jJxMqmgIPJR*)> zNC%aq!Xgek!=J%X@YlcGj<54EZuVqn+b|~rUCKl97H%v8T05a8p^RW}xm%>$M)Gjp@yn5X~|oHVU)($wK~{MLDm7{m=sa zUKrf)6Eg*I;mFH^zs@7Y&@ADuWIyG?ByzFB8J=8kL^YOt9#m%&N1?viG%3>gi>3)^ zWB=qV((3-C?vs~1&bj^npJx#6=TULZ-QzMEad=9EwG;-Uuf?E;*3X-9UI@X1u*pea zdj2rZgOi&F6I#0*G%{~{LTygHriESRIKx;@s93@g`nw#qOX~klov3ed#@_57{Ah4_ zaQOkIvMhDC$miF}?l!{JrLppEHLO0bapJ}jr6)%AeraUyX=5P;rz=U=Yn!sdR$U>W z>LLPeya6wt@9p_t&;^uUpG2MGtuwV5>qkS(tT3(kyXv54Wn2gXUpbVzy5^~+K(koz zADUDD;-r5FATN;X`xu9nbV)JTc6~HtWyd{r$@;UYPNKSS(w|!9t}jO-SAtYHx_C5+FtHWV^bzpAuY#+*iuWD&A@fx0j6mXv$K z$F;Gl?1L|&=2?Y3IF>8n41^8iQRD5~(;&Vsm zmwUV3|NcXbcpjAZH^rD9!o~MB=GdZ?)jgJ;~fK*c;k*U8ap5VN@ z{8UV}W)4diQ;~{kYD+>F?-rAt&RPLBin_`{B|IddctLGN1uby`;~MXC}^>w6(>CG<&JjN|G_f9VACM^784S zgXEkh*_}0FFI{c$zd+`~*e}bQ3^uCAv+xY#0ZXbXDyV<5tiuq--G>u_vY1uy9I9`F zD@S6WkX7GeX&t-ibP?;GKxuezv447ab}~5n(3B7KW?YyuNrfo7gl%Ug=N3;&%nax&CoE*rymCA3tS(k;6NUQ4sX`uqHRbx?g#AA5TdZ=_xruVr!L*{)l z{#RDLz_<*|Zlub@`AL_4nvT~h)9|mhu|e2QJK}a`!GEdIYNgl1dwG=Gjatd%G3coS z%-Ud_0%POi7D$uW=`l>4Ndz6!^1?n2eRzng72R|v;@@ixikEMT=QE--jPV=yz1a=+ zR;4xeWKI{BfV3O7=5yJV+9*3)iO=P@yhnRsZ>Vmpg3PWJB99xyapfc*!&R(!=}B85 zwZz>x$=gjjz$@o~d)!UnX=7C=uQ#&)`v&$uH+p&r9A-Xrn2r}n5E>BjR%kvc=iYip zj5g*5nQG3V!5jw2)B>l*T3As<3DD-jyi~w6A{1*vLX0X+EtbcM$u_XZRJwW|{tQes zn&zr?vb5S7{z7=CYYyl;1RXK(oNXOSbzzgHiNnlv=7z9;-RU<3zh6FHAJ}6UUR<7C z_18Ce)UQS9{m~dpvo?C>BZIabe1IZ_6Sy`Do05b@RHM=Tltt zIjGEo7(!uvk(Nq0%OK1%!&ijh!lRquxShCA9k zYZXqXv}%sTPse-qC;MQ1{mI4ARo_Mx;Dl(R-kV!1t!*>Fi-W$+H4|;op;?5lhSu>i za1{N<)rlzOjl@Hd4f>s~O-q!rdhHq2v;C@u3h)c#bFX6)pF` zt3f6#8A>Y6>{y#819Muu($Y~#bK;fov>c`&wGq!H4LHA zRSK!tJP1|%mT`pa?jtaGh)-UTweDGFsuSuxKHbb-mn-*SJcEjnNYS8gHqDXvfnct(Hhkq{jX{+(%bP zb3rX`1yoB+HVjRm2au76g$k*K0*+3zJ2evslgDUXG_J+ zY)Kx1c#NIm!jdOPD%qncKwO~*JZ#_~hO0qGcsMHsbwqT@KQza9%(dewnVC@lUzcvYM5>a!GXc%J0YCKfJLGF(Qbn}}`O3^pqp zA=c4vjZW*};<&OATwYYsoG$OL@y^+djVq>!QN^rC8N>2M+|OJZhTUne>pURDY)fL& z9SJ;W;M>Cf=vZ;Z9+-RG*@=;Ho{9sHKaGinWl(o$?FwL`chge}i8q&rwi1DLH&_2# z@jEkJOv9X)G01P<<{O?lQ6^XAOvhvVC?+>hXX5@%cnh!?spH59nkB=ely#XKsU>yL z7}L-PWhwMLM{Ndvkv^~eVnWkdx=?_ZEs$#-Ky)(on$%k%M<(t$a8P>QF#;dziHtTV z968<-b`s&07SGQrW*x)y&aAuYhALd&_N>JoqzM zUMR~Imy?*;ZyQTYmy+jbs+(s#xZQ%H3;$gr20LmAW614L)7SvdXTrcC) ze`ioI?m+K$_cDw3WGD*+Ax?i7Kg8|##&CWKr1!hwbZxhLamc2Ka>zcV&T5YC>{`iD zO^wV(>YYgERfkAx*D{6xP)bLyqxk;!WFU_ZL$^LV4W{BSQ-SRxi?blw7Sm-M=6R@- z`cDt#0wM-;_az0azt7uHK3SLSK+C4H2I;s|xCp`>8c{(dmXtXs`uX;H?R6co9cx#d z$Vst$yD}&#LQpOZyC`Yv7n5Jiz1@Ndina@MrEgQ(>lmt1H$NkMLBO?4d|_O3 z|9kTZs>B`T3gp1^Umn(fu}EK9T~Wg-BB&P2+7qOnzcWydafR9zK78M&m2BP7RMruE zp>u7*0GKJi^0KyKhz+Y+@m(B<&7BukSSxtMF@j(Y6x<(&!Dat(R({GuJ^8&|zD5RS z`4U`x%d?MA7u_pJO+Jj9mk8!!+m4!el%-Hfl^$cM+0C`ivk8XE?ctQ1)jBYr*0Zgx zXBesknJDyCTf3X$qh7zI;pcU*#T&E^XU zXZJ6Ikn$pcmY5lI6Hne?+-U>iYpzh@WaL{gR-JDx6aW|4FmUL z=M^h%p$<;>^hlLWTT5O|&+t;7IT0tIoCa4J(OYV>p%v9^%{;NN6*SRO+z-w?tLd#q zafr6$fa|89u9tAI#;mP@`(_X~l_S)#*~p2~5Ham#n!cQg>B#b=9eJ*=HYmwVtY% z%o^6A+So)LV`&IQlh3V^b#ZR`jt-D62e$cUC%HC3D_i_xO0&YAKi5d#uW7*}A~>+l=eeYI%hrGlJz zD_Mkao`?m0`zxE48DW|8Gn_GIpS`seF;;PdLG4llt%IvbT7}^QV znj`Y+taNFeMEK{Uuxui%!G)Y14XFtZG^LA0YW@sVLyl2OdF+VJXL+P7dW=`4mF}a~ z7aSbp8_aa95ncuB&*3LNAE{(oU(pP6zfD2dMOeyt7@UoybGce;T0Zo4Y7V_^xI=F# zG-hR;pB*2`CW(u6;ZLFW1}N3g)vzKC@U9^$$Zbyg{R9Z)!8OFKa`E~q19@p#vk^yAUg8~dkLty9c~PTb z5Ms_2c==*a^OvKZ;pX4kg;Zp;R>kwO^IuyiLtIXp1ezJ$^XzRem2VfSDi>n2Ff`Lb zjRBE_?@~2h&{vCO9Hv1Kh0*PWP0Q9XuDzs7}%~7D-HF~J=g7*JVxf| znyBcQ^`jf?uJvVDJwrs4z6H9(t>z==+py^@rK424MD$gx!GrTv_o@#~e1nZxLBu=Q zgDEy!0++1iBcY)xlZVgCV6TpE_>>EC;l6G$Au`!jIr(kV8fr?fgR8)cZN+PIV zUHk|ghEvshA*nm_*jO65ll}D7Ga5q-k{tlJS!3HojQilX1>iUbb*ajX6T@{ZhQgZV z))S^Tz{)NIec_@;`2g#ba_HnFo+_hZU}xWe12nq!ziD8Ks;>49z+P6Fu*|M2=-e*+ zc=Y1r`SDNtVB*;81>P*UDo0o#8bGk--yv6ck?|+!;KlxIUxr@aWC~wmzz*%%_M!)y zrtPYySxrHLNxqFvIxi#oI(?Ya%Q-@0Xn+q=Gb+Jn7ZKI>EFEJz-v(S;GWe3(SWlL4Rw(|cG?EouNE@=G#+lCQ* ztLP=ihgzZr+s-B$$Ir$yId2mJj#x|sGvOFJ^cyDh+lC1&Gg-h|Htv(glueiEhVhO- zQJ!rvkFJ6ZW50?#AE}Q7J&4KV0mEu=rbulOxW6u8n!Xyz^5%)ZXVA^knCCMbydk}j z#>kmjnrKt_gq$GXYT6UR-XMem4``Mwf`0^?GXMULc5tV>WizI_*xedk3-rG z&8_{DM~}^wS&oEZX-2Ko=b&qb{>aXcJ@4d;ViGliF&ps+uX?qX?n5`0qfMe7>fi*dkUg-((WTaQ z&e-Iwa*b!bVV+1c73spwmttCPxaQ6nGVqRE6BJ$RC$$F|nIm_+?iar9Fu}{zawIMx zaSxu%bh*(G86U+Jnv8%dtQ791US(FQp>U}h=u;EeSE8EkN4h7O=fiM}MR))yk|fQ@ z=n_Dw$!|lBQXg>~_#}dO;BOb|GN$VRgG-qs`HnnwByob?>^43xR!ZGFOqmCoj-+83 zwMo)Vq=kek=o*H&pw3UWTH0F>3CNq$hRozLo%Jxog)y)xZ;FPoTnp`Ujzd@-N->Vb zR0VYN}Oai&kXMw4;i11@hsq894W*3oJ90-hDx+A5}Y28H`DA|(9d4EyIzsM zrz=?hCI*WjUXpyjG|Al%+N}Z+7TGW*g*~)3R&5!+y8POO;n9(1_%o~3ncZp66AJwFrNtTk3EXe|N zH&R-(uCiZi$Z1xL(LRkFUAyjb6IP6P=jzO<>&}nOaaBY=mh)hRS4V?o8f;&%BH2>H z7tD*3uV~PO2Qpw5wVTc0HdpC&r_}Vj7J{%00_h%@n`&Y|?rb+TYGuyWtSH;Gr@0Px z$0Gm>^0Dmp^$3$xhS{o%a3peqNsK}$9lrSfrkoDsg2p{5oA6bib#3G~{j8?in|xpj z^tjNewp7)Z6Br9A(G-`DErFzHrB38Bw3;USWDMq9F)K3`3KCh5*68g%-aR<- z>{H&Vw7%LkQ>12OtO-JpcA(@JQDPfZXYhtLKYmded$~{t3#4zYd;TtrDhubA@sgVvSsHLazUWV@ zj&{?N!tP%(7`AH+hEA({?=8ODrv)5iv(JMi^iaao*FXTj>NNEu03-Ye4f$24rYgk& z!1DX8&d%oYZwQnjk^0enJy@51PLeb=i`imrI}h$Xh^NKvJ{8lk`U0;IX}Cu1$x6fx z1*(@%O}5vsMV~}t`Y4MLmKIesS%93-d{fTrm0i_thAlR6;ixlx(o)*EM^5x*j)wV#(eC6y&l%S^L#T8NEB z(qS1XZ+B=KEWdX2}@2e&Dc)2Ul?I&~1ouAWX% z&CEk#!jTROgLw#7h<`8i22{4LrEwgbzGxgi-#@0zSgWwE$j=IuI;=Tz$nGNY-8>KJ z5t3rCh-RS}tE9Y83RPvE-6@Gvek1G6806dU^aIA3fu(b#j)o@Il2A}%f~F%gF~c{K z_@oevMfr#*7*4#eCZxGqY+y8`RCChX!Yf#@D<0XW#+vhhAv&xnhwBVM%^@y>v%qH? zBr!`a(g^tX$)*rav2LgcKHQ3RbBEMK-@daDYXe=lHZ5eo5PycZ;_aCh^)yS8p=b%* z6e2}?bbKyWy$4Gf7OJnJIxC5t(!WPb#S|8_4_!=!>_ZA0tARl8SL4XTx!}Bg0ps(g zm=Ggsf*KEELLHI+-p2>9H(%$|LMKdvX;Uru#kUhviB@DUm-fnh3iQ&h?$qq+%~t2` zE!NGWDJ;?Jq8M{;5+UxlSm3wY?A}|iQ~VrIx5ZQF9W*^0Uhi;Qb$8>Qh*209gl1=p z^wjLCm|G53+@5$G-PY6Ks3<0ZCpq8|3Zn<7;}6PmaMqHtBBdY}MPvWqq<^BFnD zt(%EQkO(EqK!EfmA35Tp^fau%jQT}Ql~a+s<^)$!S9h2%75sO_&(c-CS-Z+Nmnn`Q{#(S>hZj$+omQ( zWBsk|U*tGIT#@@-(z2}XOeI@wXKC2bfKa3n=hZ1B7nXsQ)*BSe!C|l*J6bm}g+kgX zSG89gZ8H+cg##^9S<8brUjE3F08~c8|@tUN?UJ`_ZTIN(0H)A`?$$bS#7*%A>P2!nW6B4o&o>TwI7IGu zc3RuKSfi`jEWfDBQ(hiO>T)*h`Q|;IPo58yd?9N{i(dDRmN&VdEi|$yFWd}a*V1Bm zg8Q+CRbTV1GfKSNm;}@ZA}wW62wc$`r6wYM<%?2c2nx>@iGkFkdCu{$Y-&D=xmRkI z0*MMk&a$^xHq=0r_z`tlvf8=WCoAY&Y8}0!VrHd4^cd4HhEYl!9eg7?L{jl#u?BSL znX($7%GzL!UE7m2AXltT+Uhl$~7H62pRWPzNKlCYS{YKg+;dOnr1^re$`Xnf>s z&;*z55!IHQmQNPdn=O@!bKmLSZS1tS*Ez_th^avvl2jFyXwly7ocGn;zOl@Fl^jzF z$GXvRGk=xGXDXxXVChQc|Ea;!PbGH?YV}e7ldbg{ccP-rQ!+GswK|IkcYY2qm^Vf? zh9hs9l&=gwQ%o!$&jKT5P0;AzC#*_A)v1ix61HF6SdHmxI5HEYn5v_$^!}&Rx{@Kl zp72X(R*;LE7&JqBlqu?T?`Db&%w34q`Or{Yxuh(&cE^IoLdY9af*FNk|4Hz2ORbg8 zc3LLlZtI6XOvacnM&%R1%~Ka7d6eUdX_}m7Ru3a35!}Sl2{psG{y)oC_+?eNwf*z{ONsrz02l+4Ap{FmLenBo z2b%Pq?y{}rVl17VuODGR4;9jm|Nkug|7k4!?~@JxU*xd=x7QbHtT9*b`weh}r}|5`hS+>Nst*4ODffq_ z6nDw9x1USxg`N4K=yCtuq{Q!&Rrp_FHU0n`;qQyS{3}bN{XU4$DaO8RCflzB)$kYR z15Sltr)%Wd@#S!-ezg+Uh*bN}PFwqs91{Pbgx;n) zeJLp2FMzlGKOnYd;q9ItGMmHYaeURYTrl$gvb4&7M|$Ibe45+)$W;4}qStv(lz!UD z|4IDb7m42&Ceiy+c+~&P>6X9ZjKQg48Nsy?S$i+3sT5#C9xV_+N`e`k3NN0gE8ziE zqo1X+2~B!5lB{I9^SQFwqiaP4y)mtlw{&ei!lB%iicV&sGlNH`Gw`5h0y@i-g#Qxk zg%eP#TczGfJz;EWbvk6768Ko#LM_I_uh0`L=Emb}P#_V5xHG9gV6OJmNK0D>+T?n< zxb?*3TU4>jkrr;RZv(cRx^Rs9STxtgR-@X8^Ac8yv2uMWsFdn*xSuSC&7D@~0Ua#~ zbhkJ+jqg4jI=Tu+m8$;we(V+o;Tp$}dZ9eJUWZ;I+=)%X!S@oKG^3%N(U&e)0Mlez<|-=d#6KjypvS#sL|F|*mPcF~Op+i&*-mEk z=mAcY;Tjyl>%rifCQwIw87VuZc!k{Wu38`)pgDM+!4=XfJ3(#S+PG?cA;8B(x1c ziskfl|Ko0gAB9}Pki#+~iBZsL$Gj&rR~1nz5Jrg)hH4t~t1O-7Y-Gqz9yc*_tl_+l zX?uw%Lt1e;GJG3>*H(<^o#A!X&LGWgF(unL!VJ+nDFOin(;0Rj9YpCK`eDWBz(zpp zKZYn85chLu%GD3j8Zi!mYV&>UJdKICnj&5W#lX_>m=}onWBB8hUe7jw3~ZU%x8||T zyAW$gtBeV_+<8fUA$e(rr=4ZV4AWt%chEY=2I0F#2p4*);Z&bJ`{a<0L2rptfXVCb zwq*CcFmK*|@3c0F@ohZqIve(m3_Xc2`WjMPV#ST_sQu!UzDCTpD!flfA z&7I4m)4dPO8HM7DSb`R3^nZ{E3eN+q7onHONx)abNH*G{;Q6~6Jr7p z_Z}hmeodLp@qEpiU>fyY44eh7d8>I!>#oHOX4QHFguzz7Ixg3_mQv`WSF}_Y` z^I=~2=bb3e!DJX7s3bQccs3fDr6n8c9_wm`?O?VjBRak%zAA;v@O?GbbffF!1wX2G zlXP=1e@A7%$VS)k5yCM$O)lW$L=R<4&vBDpbhJyA`7X05 z)cz(XIZHxY^GlpAr!S9>pP#&tzkkvtv&)knpzX4!vAiQWG%n%tHkdEx%is6jyiYQe7eTm_jr20xU?x}qNK9wZYry~_$NuJ5~*$& zDTe1X6*0|KapKXo9HdT56tGG?7{*YHC7+LNjlFH6GnS33(do_ckO|#~j+NNJ>WbX& zJ$m_A5-X@wPKM!`%CII{tZ8E&%rFe7gG)X6HlRzA`DUbr zGHdn<#)N-+CodSnKaK139oEsmv_9SXBViSE%f(tu*UEOfRyttqz56s@ZW&wJTeqgSZLSsnMz8yqZ~Bb) z$GD0;B0tlN5Oa9NADcoFQeO9TG*)ivq8J}JZJxQD)uBxOaZNB>j z=(LzYnP|rY;Xn2wO@<-R__YlRX@>a7H4n-1f6-PFDXzo~CiBrah|<6P>7u}E|J$EhkBiAf;H$NSy5z)Xs{rVn z&mII%d9A+MnVpXq7T;kfoXX_>rGYQFz1S zs%n~fcJVvJT=A~#&M(f>!^}sTahwT4U^yn-XNTR)b0fDF{6VV%8Glm-?~ix z+wPaNdbmgQ2yonf4o=CdX|v1O@RsY;oQC6kT;#y%2ZQfWte`cRfa~NTbaybbokL`C zyzL#olp~Bqz1X~mh4k+GYgzGEPzb(A5u~*cHWgTrb5t7GplZ0j>YYEKG~ad79Paz# zm9a07IKSO~zXk{$bp z3CjZD3iz<$w>AUNdrJ+s}@6N@d z5I=ZszA^8_@;B0pYu;B`w{teIZl>1?~p ztq%CIDd;`h>0nH4sqFoTNnZm=1YZ4&2nIQfmYL#Ig&YoIBzODv&vhBnXWr7Vhiw{_CmJ zLeuz^TZkqSSX1Aa-)DsxTta<{g(F0$TiyOlXuP9dfK{to$q{KJE@<+H2@S7dnh$o5 zb}?xx6NbilSQilIY}g@3opEq=9WaZ8tGL(xqBpD|ELyTWmXqRJ_!opa?J1qmr3VphyAgeac;$Y1x9ps4wfd z65>2bN-0RSR?d@oOsoVWr^$-SNBEV?P#P#eX9_|)8I;FG%*!#}-B0J`C06U?Rgui; zXRz$80Mt1(62mezdK8U5tHUtIh)RoaI&S30Zv*#XN}!d}-R_QdOm{aJOyo{78dt z{+y(B8}bIqm@*W2QGN;-nE6EkvqbERSAH4@Y!#WIu&S|3!6sYW>ZQEt+lmyzDc^?4m`_f3^Z`I| zFc{R7)!BP-(%+LJ%gnz_rgWLOy(1;Dy50J~8)h%qjscQK&;jib#;*pD^uensg$#tn z&w&}3&BsVR_=cFUf<~o1Ndk6_v>5n~A#QzarU_codmF<9K#>DgM>kP_LTOjUV7L8~ zab4gvBFnvhHrpJ!h6_FTvxcVCkOsGcsgCKNqzUFgE=S{Qc{3L`{4((aw(FPOmJcP+ zr>E;RI&-;{mw#NGfn3#^z9TbQ&23m-?VG+^T}xW9n@Cpi-b=me7JdOcHKYOb#K!&2 z&DMj>^(E`pH|pQU zMPrsx|BeD5_eHUa-M;46k|)mw*2L<5E=R4BnA@q|!qVOrzUGx;b(6V)yipVym5bUz z4i%w-_h_o1>MS8GH-?a6ylhy?4E2xk8DWriCHfOVpceIRMQSbhFzAYpzKr&zuY673 z3yfC1TQcKKpXquf1ShYUU37heCsIjR^P0E9WIuzSiwvqc&OtJRswG-wL;v&u^#v`_ z&xl}V;_#YLAR(eBu;_~dw<-k_j=uc!&olp4;~WX?0UF!~ZS(2D&w4f~T1zO(RII-o z{gYnB^pg<(ngYb$f~2iyykQUEH?!umNzE^h4qluR)2_?g+D5=WyHJt4Ebq8G{QI1j zQA6Z%zyNsUac>~4z?M7(JnQ)(^tn=mId23lch-- z5_M+gU~U!Fj+M9=!cS=Iqj2E`@o*gB41N=Z@gz!n|9)|hD6z%sQJtA9t)&h@VhyT4 znCG?K_!Ju}HtHI>jGtq5tXXl5Lx(ajfc%Y^KwEC965U1t90}4!G#D6_C+5luxw%xO zFT<3QbpIO*!#AQiT#-Z?=j}%C^~luc(Nq>KYkb?`bMQR4x9Z4G=sJ7?29nm{em7A7 z+Kq*!HOvtxxjm^#4?GODp74l6xWAiJ`vX@IcJ358W9S0mLSNzH;@32 zS0h$}bZX@PWXsEN#d7!C9iE>R@}N*)4#$R?Yitha zfdZ2cG0qEYZUgi%Z0BpyMR>~GY2(kG223(d|D3`ah8|(9RA?TCK}vh=NLg4dXT~zx zBmYYK(oLI7PTBj;cN)gRGsbh<7$Dm0Rye)4d1K755oTDtW@S4FF0qd`Hy?h4JB-s0 z-&CKsq}#NXa4GRqZq}J3oA;LLLBq9pE$)vhoX4KPPl~Bx6loCG4)=1qGDZvzVN#Tu zX|C3bORAYZp)`7rb6h#I;mK=ft|JbLAZM6SI;`v*vP&cp`Iqp7P>krl$1fF-H3>w{ z$1tQ-?v00LF|EDu4#dv=ihaG=e(<1$Q|NBZ?B9j=qShc}g}`h~jL9R#egKGPN=BM$ z%LH(!(DFK(QHR#Qp~S;(V-E#5Oe-RzN<=5w?dI{9S!Qg&RjM&nT<1Uy%SGMuaCnm= z3~ggO2*ye+abJTan}o<(Xg*TXlJ2>Zj{Wgz|KNF;mLyKXR>hiR6v!3sga%NKu^B`e zdovXaiRay{^FDSc9*D^n2U!^^@_%I zR=#z294Z46bV)U$09Sks^)^sU>w0Z_{SHR}$-euxP?H^jJx%X>kkU3suI5;MG6&2%Y0(M8lJiRJUl!iqGw}$ZT)%tZjLX>qR-3<`ulOKe<{pr z#M)B48_&*+9#Cki)+wjUmU!WaG~@K~8clMLNw_g~P0A#{j8x{ZX22DW9MuREzO zIbO`?wlfNyPewdEkDt9f^{+z+QDEFDu6h%7ro>Q+r!|^E_%bkoHf@280DJ2z zv2!H_bntqO{B^iRzevbKH$`Oio`0OCbuP1tf}%}b9sZumM| za8Eto?H$X7P8WS%nEuAvfusg86%(yzGm{eqL(po{gf6{bkwvBwA)WA2Sz3?d z5s_bQ3=l$f;Y_bs5;vv z+9R3TD45yM&o`($xmht5cuvb5-72xtp2I2O3M&dczM<1Gx)9gQC)U^q{`_@&CuMvm z51I`Z4;_YA`83bRqA6Zl0lXY=6#N(KCY#RJ69@jgs&!lp73B`S`+_}qp{QS)pJ$We zweKe+>cvP@)ok+ok+uwZ{&@0uZ&sCc`+lot-y_O!|Lam!fWI}S#tB)X*Xr$EJUXTf zgN%W0b%9NlILqQK?Ro|vLFITKX-WSnO|E_O<}zEPL3=;C^SPtbSA4hXm7k6!&4r3k z#nE*`^g!HYG?g&nYF$U}Srt6o&oy*Lcpei?%o$A!5$ZTopFwA9y=~>)JnO3o1Zk6x z8&xMpsH}dIbg!5Vir<(Dmsp4n7bR@RFT}w&6pN3$we#S?CMLq4YWVK%X0@UkHoe$h z1s*^OFk++n`T%uB0V>-q?zHvQ?LzxYvvI54)R?WecSB-R)!J8*n^H=LENW=kB9*K{ zM@_MU2dD;2A+mUkB96SJOP-0Ar(;O?#4xt8)?d? zFZ%&}M=PJS@QAI$dkOHqm5B=+omJ4`kp=8 ztF=@+HA1D++S-hAzzS#`BGwzut`Z(v`_Ze!&~Y(`M)X&F);f4mNl7X`yMc8df^z+K%i=(rAb?~=p!0t{MM4RQv#XeW4ZwA z0v$|C)n%%c5Al`$`HoFHeK3jR#RWwPPmMQnLOfeWfGQeote{x0jnN<u34X3plA z>q61?_L#;AHn)+dqw}*G^FWF!XS1PG*@wT!2Tnetu{uT*W2?O2yQ5DgwasmkFVTd0 zac|ePJ3il(b~yl7K&Zd>w!|Ea+_5Dw?a`D$hYp#GTvR}&CyXUY2niOI4LctxWOv+uCFDK!BJhVw}c`4PPjN5vab3^6XK(vO%0 zT|=}9-THA+MG~RPuBz+FBn{0S4+6&eFVGUck&EaAjny@EJfCW1Eo8;{{Do~Wehyzc5jK_$D&8ewUm zD_%#VV0sJRgpGlalXS~$wL3LiW($NI^^ebW8e_| zb;9=3A#K(Vsn#VzKRC4ltzce+Gft+Ib?u@g^;>Jj-tozis;uV*Wo9>NcK#Q#a@=X> zteu8QCB4UKu!%33V@R1K^&yNep%@x=I#$Y#Me$rZ_;AD`0_equ2;Q3Q6Ya9|Y<5;uC;=?YYvY$Etgl{{VaErAp)bM+Lj?;4xoFv$;;p^= zB(AA^K$nd={!5X0f-g-4}V_dsJCXFBj$gBrwyikJF-W*pqM8aQcqKSMr;1En9xNK0Z(N+T_Rkz5=<#% zUcQ;1<63-*Y9aaWV|=YQoC70JEKkhl(!^*~_Q!77PwKhARkH42A;osar_bih3C)v_~mgg zi6KQ1T8qhq*n?W(=p*Sg!Bd$8VySpsM&D(7g`A`9&Flq?H)PSZFR>h@QtJp+9n!u2 zI6IrdCSQN&rtkzFjzKF@YNjQgCrCiSF-@dwX?Z3JNHrmY03*5js(>}3aKWo#7olnK zS7@-USb(Ig9~RHDBO<@fEJ|451O2{nC8;)zi`$9BBnOV)Fzc06su<@Lw2b~IB2^l> z#q5&ecF&$4J(ho^XJRZ}pO0k=b05wwFIeHT1}Wq{-CX`bMTc^ffh?6m3`IKOTkTv_N?D0>+9_!sefvObQy8x1ehA3t(xwEFMLkkKQ{rl zPqyKjR`v)2gMV|6*dLm2WAn~$AYTNdctZ8Y8*!G`Y-MMag2ptHRjb8rO~;?Q&7IC* zI+dL>o6UxC<#+$-*H2+6x9b_=D2rLYjBfsRa^iOCR1qM7I`>=;G<1>(D0)!Ah42_Fpzwq7Xz{3Dc((Uh~MyYL;~A2cGl`CX<<&JJI;u;uBeObMpZCp zNYIPq(|*;!q0zPEHf&el7Bn}Rs8}MG^QGqzV`6#q;xA{#8okeQy9teV3I%pkdgic4 ze!Je0dVY779ir8f55psF_c_a=r&T$EQ3>tW*HWbhBO_Zx_i39sN{Hw>a;i0vDwnfj z0^tmGs?h!m7 zQ_h*<;5LSg{JeE`)54k}aw_Iw)+fbL9VoByumrYSiAeK^vbv~)@~m3+30>f8cKj?a zp^YMluuezA>J|WKp2j;p&fL*0arrZQHJyrtAFnt!k?6HXwF0XddQ0};XbiyRYk7cC zKAXTCOeN=Lt-zAJx=N*2NaPy~Ri1_ne(w2gY^hJdU%)Z1yeOST@3?&^vsCNfrF>3* zhPdsI|}_cj(-;-eYA};1SyMcs^d~l26GP5_i zrJ?v*>x#kEqt@I&#Ju$s8Rm!JSZT~l*}oJ5xV80%3sSc{U==R~sV~ac)tn9`u?CD} zTrrJwDtSV=v<&~_=?EMF#hDx&{vB4zGsOViP#{Cmf425?3aKEe=ueArG5kCq{hFgsw)I-OgW6j8iZIG+EX1VGmZ8A1DOn1qg!7?X%h~W5 zUdngnI3bOkuT~-djN#Q{lm^*__W4$cOI zGMVm0UlMUyifPJAE4e>bu&z1v3?C}m%N90X>@@g(kQ@lQ(9P9!d3A(#HyA;`j z$>9)P`z*be?2X$M8p9-MEP(UF^=0D;tE}}H_V(p>HP1!cFx2zFybP*9W~KOqKY`{l z&YKNFBe>IiiA{7`#O}(G=>B8b#FeopiI*`=#|AOQlvN$^gjc=hRAPZ29K8TZ)ky{L z+j#W+`Lo{ckxDB#yz;@GIOC^T4%Ou0!@+L5RxBDSguoUhTOmqQ4(gAnczonZi|yRK z77omMfp#o4Jqs>Dapcvg1q8u9+TGuiq5^wI{lkOP!`&BqPeS49iJ9isA!9Yds+pCg zV!te>>S%c@KszeVZ#V#^#X2fg%Tw53j)JuF=%`w>CEWb-T7um5Mn4*|r?LINw*T$k zdgJ>r3cm&7>Q-m{+iO2=bvTNBawW;y8$)m;CWJp%*5Dr!_vH5acN=pXK$r!x1z0I5 zNSwO39JX0O8&uPYn&R7=U-MR` z(g)~>35IeURvR%8$<{_Dg#}^|kwME^Xc^7q0|UET0&x(}-kc)n=YE^axCk1U?z|f$ctGmR-C`7lMXV%H_rPXf!GEnOl5>nZ3rG6jSvb zJk$(*|>6fzXK)N589GU}fD7I`=fq(4S?dQ!kT)zf zF$s04n6g|`>cm)bL8; zZfaIRgjMq+tm_04hR$uv*$I5m+u1ni-K#HYK?O&VBSZ9I`~p9PiuvuvH$&_T5@~*c zmc!QE{d_7b@8e9O9{vGb-im+zX9dD1pEphiAU4bO;d>W_XqbavXOp+`gr*&99RR@5{qs*Nc|gy*aD zO!1|51;!s!IGU+$fTIeG&FPuU=fd%hX<=P|q8O~OmVDVBtS8%+V%fxnp4pBU1|0q3 zxv1vv83ozPN65Bj>Pa82vroWmFA|1}Wwmj}zPa9Qp#z|M-Pk0lglz%CP>^&lF(NDi zstO#28wedz7V>W+Zl%}N8ip|ta;9$%BZ(A7OorgAN&?@CE0|wbw)#_8?GRIgXBm)% zSguK@8VbT_^}I~<@1%LT)5EQ&BXw%oLmA~0Zvxl;8|=8SD|kMro{(RN1XrU>Io=u?{ zUv0b3#$|h8Qq3jQUo+lj;F<(o6V}d|nyXlk!uVNUGA$yS^CnYL1*(`st5VB@vV&Yy zFOLp>665O2hV3!71&pM;)M_ASpF!{zXIg^?Es1~gBWX5H6XTH2Arn$SyrrlGMm8ns~jGTqF(8=;8~%o=tl$Ux`*Wk zdL!ynL-GL+d+nJ9COKLy0y4-PT?`rqJ;;8_G8_X$_1}^KHxUa%eZCTQgLSM-~L>@YyUyk9t+*r@g5=QuGQm_Zqb*M zTs=6m8={|~3BHt*0TXJ_&1cz}>s1#9){r_(#@t9E4Szg`YaeT9Py98q4z4e6R!S|X zONHP_(}S2r-7#^KQPu1C(IV{sk=J9%n}<&ayR9ADsL*wHwrk}cbH?$}?61~l`|gH? zLE3|dTCD?;h4DId)R?;v7dX3<>J+*~@l;F8J2*bAF5$a1OL$9`@VmZ7CD64zvoVz2 z%57`dTiLpw)g|dmg(vRY13J6X@)wMFtx#tx0ogGMjvp!6qVZMH?q4(;$-mZDqLNvMh;%4o#;Cagy! z&3j=_8wpxn;N>L8sqv~EA4q~zn9QN2Kdsh0Mw0~#c4Lh&jL7u;hOyd3CqoMb=aUt# z|Hc|P>DrZI_4G}14@a91hx2+x#O6ap<)2jtJ<&WO4!yqbhoM`0c)g!_AChN7 zgVs#h2RpKuh`7%uQKWEP)#^-jZe>-m+k@&l+^SiJopc=r?^g>>Rf~IU>Fnb8gkxiq ztCW^I$wbxgH4i18#7@m5JgRU1;yd42K5%|glz;mZ^q$$@{sIDsnW)Ym3j!jaX0^*i z8;6%k7ovYz0za8qU?TQ1q6Q;ZTO5F-N-i^d5}{*Nn<+t)IEO?w#W^Y%etU@)eJGQ= zd3@-0%qgmBW+vadFV!9i!Q8&T6VH6FA1243f5A&c!BQ!Lf~IazK1a?URd}?)WsTVi zB&yD$zwiDgMp{gioVo$mSE4Tav}$Y^@rMQ$HDzBr5Bg5~a)m&+%({K}iU)oMpp}X( zv+?O@a-QL({Y=DRa)098#CWC>WIOrWUq=^!)5+WSTSc5`Z)xF0F%|bq1D2-Mf=|6i z^-qvG;Fr>H$QSZhc-;R|Oe08v4T$VYWBL_%$$IoMBbU(TmV9 z;N|L}El#&+y`Z#F)amKT*_vvjyW z{QB2F74*gOFGxFZWY899d7TUPkt4A*Z{}}+e&FlC{4iOBYA(}63)48N>Gu!iS_=f1 zWZAexkRHb@e>s~L$SEbLa@q{vqits1=Ej&>B^!|b3i|K$~b!zh_HSAEhy!b8RPP=ySYUC0nu+FI8VUGptG5-@|cWoVpC~JNYyM)sA;d zX^g$lP&=_+0^*s&W*IikATUOFVoWqJOS%uD^`V%ktMUzuB#C>B0xzyy!vUG*ras6v zR>>&Xt7GvHA%AYh7hkiSF+*4l2~)f`&`X)OW9RGezcqoS9cxgE1;&L?Bp-+=kIu!4 zQOLl=&pt+Lyd!*4X1<#4sOz`nz$H-%TwZ3l*ao%SvvMvxR2B}4^wId6p|CIyFDEmo zeurnFe0I0p1@AypW{|l;%kyD$_)`Ob;nAOkI@a0DkY;sv2(x$rKaPwux0EhAm*3ci z{d%%to7fL(qmcAIH-E#Wk|o3&;R!L(u$OH3^PGI$(3C-IQ1>&ChCxuFQ5W?8)wjh_ z{wtZT>NQ_KFC;LCk%XqPFn;p||0IQ7>^bV_K!b;4P;)_&CHYgSva#}VO1hE}x#dfA zl?9x;WJAX~C1XnlWj6-OxUIAIFhMwaM#dvP6B&}eN`c!*2CL<+$%41H1R4IlZ?syP z`e<(Z@&-^R7@o%-^mq{bi-ce*=GebK3{kOjh zfB*Y$e{T-_$&F-um|Il|`9x@(=fngU|BjnP+fGloJL`^9XahZfVeE4V+%b6to?%%t z0|}#LGLypMURn}EX20OTD1gTp#v@=;ZSq31Bl)(-YqUvg{s z`p+V!Wo4!2&YI`p@WtrF^zyu-># z1aQn$I6f81ud9=7t|Y?(axEoa7=ruY2F<21z@0~uU_{^tFV@X~^AI)JV;M*To}Z6nd~dM2#{|9wLdIL4}fL0eX_ zUcN&YRlT^PX)}1Jl8KVCyp-j2u6X)^_6^Y@`Q6sy#ids0`#+QNe@EPf?osn|SN+e% z=Hu<9{^v(Llk>09HRSqUEL`w|dwS;Uf3}`J*-qBO6fvC9)=pBuq&T5L}4ZJ!Z-xsbiv>pE@3KrkC+gM#ado51s8~U z4r2AG3WVr{xp_++x;*xTQAj{pHTSWV0hbUV2wAuTa~~BO6HZdg%4TtTuFa9L1KsUg-9K(;cx>tMq%vPh1Z?_n`r>4lUct65|s#CCC9+Mte&FR2+4we^wMFf;jVcUy; zDfP2E1ne?0y781@oMdVU)e}=$Ni;{qlK0Q+A7a|Hzto)~GI8iCgldeVEMjA!B2-hH z`L^YCgRy+ziI8Z2OKu@=ii(8pM4x2{c)tVd8m3EnFjC!)rA#^-wAF>p?w!b;tFEww z#T7m4TdtWFl|H%G)kd>cKQw?a-?=HyDRPg@uvb=7sKII{A}GAh+;H2 zcdUfCCa(9|qIg=riooAqwRS-Z>lH~sOGkho9m^Dq+dJ~nj9_izj82$Fr&-$D`Pzg6TlJQr9{F8C1L%xvlZYBm(w09*9>(WSS8B4*#Kd%c>uhZbI%P?p z<&LXO+!#DMGLtW_}Fnhxm@ZU{9A`BG=`sMx%j($!z3_vdara`+DCeo#$oO7Il5Aw3Pgw-D!PoBS0}b!jVIzo9g7mlHMcem&8`82 zXKC%#_N##T+;its|J=fO69tTi=Tc)?Cv5@W54c0lXM)H|t!WcbD!(i}uS$lSJp_q^ zVzpH}Yyuzq!K%BrN~e%X^H!dRbN36q+Ig!*zpr8)WUe$>1TH311DBcK272)qSnsvP z`Pi+U`oR%K+Gy39t@3^eF~(NM%gXy$`MSE62@HEV3lv`85>Tzw$O44dw*(~4U0IOi z{cKR!e=@~p|FJM3jDp^~RtpDR@7=<*^F)Ahbxt?OMdfcqA*)#Z>3wJstcw1Uyi;v| z1%h3&eZ`C2g`kt{ueNdHIH6K5e%?X3S^R}k9p*#TFdoP)+j?1jr~A0IzY(lH!V?5; zTmK|s634Y(HLHG2dY%8|PkkW%2KbwV|4OMn3dofJ^*7VLvnoad3y5k?69aQ}mK>pr zG`7XY7`@+fJs;Z^8Ti`5)Up9%Z`nQeKpUOkYR&eX`?IxMZy?dg*Huh@_9KPo&BxuV zZr;7>*8HmJ(b;}84lURULd&z_=%}*j^$dD?Qcm=yxq+x0^nv(2C;N^Wpm_`g*^Hwf4J z*4nGTI;>cUG)r*w?)U||SbdA*@>q5@h&VwcFTYx4ZfH`4>@Hf%!B)~GZ9^hiG>&fF z7rvX(75*EZ%?5)x)^tqB7wd0Z6<9f=WZ1d1@{EL_*0C#58w@1J3+LQA@ddjJ0SBGW zaSl^+fb-Nl2dBF~k69XP@~uAMSvIG)#^{oP)C4U7S`)$L#P&XKOn+OzgKHK+c;Q8O`~rYPk^$(DlQrc*lg zIbL2A;LNd&t>bq`RYxV0Gjb*iO+;t1(rK_5S^Cx2F&4_D@{6iKSJGORYs$vIG3S8t ztj~f&C|X=vw1)cJdZCU>&30e^S2;Nk4!W24OaHMKWuZ*=|2-I36WX^|N7pBg;4-fV zB2w9jh+C?6Ql$?DAx@GVqZ=F}NH4W>MlP%%ZfFN0k5ZLN9S#H{L&u|GkSR45vMkos=d zv63g($lc-O<2*{&>j#B6X^4yZO%KQ8EH?8KogZI>p${saL?gb0`-bP5mJ5sBqI4Ei93-b*JSlcou~qd? zOvSh%^j)b<%Ry^F=dA(5Kv3`pwAbo6yi7_PT$AKydTJ1=-)2Exnhv%UOByt_e79m(Y=Z{Ku{9(r! zr*QM4yl+KLVzCeorc5>5Uax)bq*Yd|A`h!R09!l>bFhF zO?+r2gf7GBdkmzEUDLZhFPD?Bj0U4GJdOFn0ZK|yAuu~~$f%5-9yz7M8w7}SH7wlI z(dCuvM<#W4nHqR{O264y!UPfS-hN3GpJ>Q`fmYr?ornKpvIlMatDc1g7npxF*_;IK z%ema2l1>RHZB`LGs<$WzFWxJ2tNYC+{_IBu`&9rl21+RY;j8}6T&$Pd#jW|hM1kA( z@>8#Ur=ING)RUdt_5{vfVMjvhUEQfezqqMGzqoCOa48k6{vA5A<1ZG-Q{|W5wov%F zRj!YM8J}UchQ8h_)qHhyRBs$NTW=s2foQdm9t8%OLnvl^COCK7DvJ+)x_@bAEyUfRXY(kNONt zq6PTAFz9NFzfn?I-W0F;pDI?_zA3MwC|G%*O52^=>r*wBMQV2&nt18EuQT1DT>mjCK&_IbH zX%r%ahk*6u=uj#GT(AwwXP%^x zO;rp^`t6-S$)+W=^oLmhITz`H+xt7s0U5sRjd9C4D!8rDYC}(^y(iV1yZP{O=91>t zOj$o@Ie`vf@(`MJ+7ksC*vT3sB1AT-m6j+zs|^m=Kk+!KJGF;;3lB<$zhB#>uS}Lz zh@VglUu9xa6`=A+EHYE>Von#5^=WHxD(au>tZ(M#i%;V5t=@U%c80F>$QZFyys(2H@g29&Y|J+Uecuq}DDQSwFu zmw<5tf&rZyY~-{P6KF)rI}uykx5&_ht~JafZ?0K>yzSN>6*~)-JRNB0P^n?9%T9O5 z$oZ%Y>bv4q2e8w;h>Riw~EuTY6`)C%YzTMvCwG7Y=iA(!MU7L6~i;34WtWF~cN9@EB@iC(I zrI}xee_b)_Vws*<)Yg=F{T1VjIc4HlbeR){=61h_{%3+i7?r}{Z0ui=Sw#ag)yY{AOSu(2{!T+|@oUVqY` zJa7UWg6EB(&8J_AvYHt|?bpLc#fyiT)v^2~?u47xN)m!XuQ3XkQ}5j@5ON^{oj@!+ zbUyL&$1AUPL5Jpp!}pH}Gf_yr>vg49_yf#75Rd2+V-8a~#I@oLaOToF^RVn=m3Z=C zO!REARSgY*`XXjFAB)B$ES?~sY5eo`Q9M|O3(q>-p3Vnwv-$Z4i%ZYnA8-K>EM?hu zXe%GqVImD49+;kl8P1t` z_u0eXx4}9B46OHIf1ZPLA80nk`jkCd#nya0cp`>RHGgWku51SBd9SqA5pU0wsG(QH zn?*7l(X&b1edw}7kCvG}O^Hl0_pSx|Jn6oWbDgyBp7}VZp^3EgS~eE){=kT33H0uP z`e=b$RL>e~_O~QMF4iQkC^F{N7!27yf=c^#%sWVLUb=j;kva!T%7Y~BXi8V#o3B%# zzCS2>$vWRm8{@dkt9A!XVuXN@S*MEn4zyx*fnt+x&tsuenG1C(c6I61W~s7IBzxSr zXU@93K-XND(5$9K&PIc~wf)-hyPyd@=Rx}~(ZJQ1C`zl9UTC*|@kU9~yz;g49sU+X zN^ol^Gln@Et9CUe={y`$U_=ZY&|_Wj39Uaw*48E#P?ZIqJ)0OdQ9oJT^=1-Z_t9j= zuu|Qb+YxF~X1fJ!>?G=#OpB$K@yHbKs2f_9dbqXfWzZWJ&%R3d%g1(=ki|&3)w`0= z7-Z1gY5b(a-mJQjak!<5?bg4+TOFE zDLMF3w-!Z|6U`?QPi&f`cGP?c0oCPqEFbvE^J4&8Us+d}L77=8#J-Wlqb)P#6zq&z zu6a~>Ti6df5}&b9lUyN^tVt`#$In7;X zpKy@x7y8c{h7kG? zGYN%#CiKjE8P)*@_Yw`;MA}3T!+4^AhS5aW1l$#cc5JuQtTpq&o7(XUI14K@*moPH z!(&_{5!M_+Y^8SWysU9+=v@Hib_HP;Ll>t~LT|>>QFWi{o*M2D|IqIQ6Imp-Bk>O( z37>rqRhpWnEl{lGMwPWEaO~!^U2>itTG3mH2NDUV{mlzoKvgVi<0y9Q-{EkVai`4;5*(L|bf36YtR;mY7M&DENNE0+SVHDBvM1FG76aKv$! z$k!pW&0tmw&Z^6MvEFTR&JO(DVSyxw-Zk66{=C*fSw@#YrdZNi*%Scng0Oh#CXj*B*7SZscpM41=EB#LS9BwaqXSg=}xriyY5ovur0 z-DM0OTlHR)Uc(MkJE#VzP`5t$tqYnX-X@C`2Fl5nm;~|m?c3n2*Op|Q14f2TvJp-! zR(6j>)Y66-@O1aEdRyhGw?J&x+uG5KYQy`GzWkf<2_i!SIRb#atZk%35g37_{Ujk?>y@$=k2@)QEaEF_{a zw2h8ud_X6%J~a2?C{mmCrCxtotIqh?Y`mWF1^;Gz!P*leVp*01gW*U*#~$~Dzkbt| zagiF=W6Ce!(o$`K;i#5mFRKwY}_i4@z%advK6FkcRD=*@~SQ8qH5V8)V!3 zV&WjklfuQayc%^$>Ba1^mRc@46M~H&jQM6MyOHhTbKe7HckYDpWcJRsX7g1I7T;Mn z?*Bxc6Kl#;>7>e`t&~6(s}3T6+nTs}Z#9XOCI+k{Gv^U?N$G2hJ&T{LF-I&I%QNh7 zlwp93@Ju)_OEwzybo(KQm?*;-&Dl$Fj7TgwP;E5?Xj;DzEQtv-YS=AatQMh6GlHUS zu_5?mV0v}k5~ ztFFFYd?)vASMbD%iy_f9^dvbw#5@$Bn`6Gx0rVWaIQ!WL8_?sdM@XKbXt$7IR^0Hz zpz?7FqDY);Phi|P9Of=YV2{YQY7AHLP3!u`y(u?~ zwakv%eFb!3`itG&FE4eA-|bmQ|MP9?pPTeQPj((ZN$dZgY&}`(e}2R>Pydsx{+TT& z-$qPc>VKB{pZ^y9&u!NA_fY=?OWjXO_p{X7EcG`3L3*3Hs+k|Ifmv!NmfDHg+KG+F zo7=ZmPe`SueqyPgSn4PK*Yp!}<$qjVaLew_vi}0||Mt`E$7%V0>+#d2{Qo1Kl>DEX z_Qhm>5J<{6Of@R(AH`DaQ&KNS2$%BzQvUxhk^k?qw&yDVP@PqrpvTvfGJ@WENs^8y zH-An?UF922V!4uu9(tY7A-kU3myDb#A(xs5D>FrB1;h(dD)N0~iNDPe)N=)+#ZvA5W=7Mm6eqG(%+1dEz+>(dlAzeQL z0x~{Vz{^ysxUz6ilXA7GF=9}y1`3t-j~OQ}qevMN-s_E>Szk6crdj*y{+`?io`%L- z5_`Bx@v7l?^UFKyAWF@{4a^W?4A1)brcpc2`UnzIeX^bPp@wK12j8ymQ1oZMKjPaI zQRSE6}M}tV= z!d9g_|CGVLp78d2(?Md>)s*j7p(3466Hs}0b9gAZn@y{X&r6`I1?4|)vBU%Z$_ z2;bm@uD`K%>64sU5CP4q6?ov+4xO?i2p(G}5QbhSp+B@%5yY>L`opYV!T3jv&R3;; zXL}tZ*L}0yuJ|1dcg=gT(to>=-Z!)Rr<-r6SL$qpB!7#VU|m=fK>m}h^~}pZ%UbUf zqrk#lj$%tn`xyef3kC{k_iEPvHmm;9GW>sQ8J@5Ip$B0Bo9ga1;2ZQmI~!Zu>HGg1 zPnPn`N z*6px}Qer_%sD0nto%>?AC*@J2h(?Z_mH5VK9dPQd<}I^wQ>t<>Lkyyn6cGc8$VRpGfNyUmkw|px|XG+ zkpzH?8)9FS@ZaX+nV*j8`|ob0Y=R-|b~-4;9lVuN>6S*{mzBL++JaT2efefl&DB9= zXK~FHwHVpoxDGO%26kq=-`KpJ^;l+fW9u=&Wi#vZKeGQbzatcS>G`Zewd1CStIx7* z*MNlzf=Xqpwlr98coIc>H- z&XL~pO6To6_yVBx+aj!8`is1W_OR<^M-YS1?+Zr=(<^tLcv<)RJO19*(mrV<`!++o z?`1pR{Qi4E3}G!C+v!FV{dWy;<%gsC4|E2&o!c$Nv&98EH);3aByeADxl5;jaa_84 zxBvS#{MeD+#N>kRFX+!}PeSR#GX z{w(T@jGJ{Vbl4g7+GIUD?HFFP-SfQ9)2>K_o7i%2pL$+Ae#nY7BZuK7=(_n}gnzTF zUgo1?@D-XIjb8fC?zK{%lkV6Lqb&?~Xh{sw*(8MxvF+K;4JaS@U%sY3YjB6Vt);QsN^eGw>t)`QotjOwxr-ry9X!^%c6 zXjqGWLnfcPTpjClRY|v=$f})-2(((-!q7I0L1ltgGS8H#PYuoVuo}04nFOeIM?6%} z!JZg(13A384DxnH|XUcwo;$^spEpenWXXWUxS~2Q}?vJ zK*#U8dKeA6$r%`T0qWFEA#(J^5wZdgKF0J(qW_qtIKvCB!IkN)Ch6Vc@KmQhkpzYi z@{9L%q)pO)@f2#*c3(;I(BkFkgZp{r)BnxQ>G*$}TTeEZ^#4aZ)V>LWyYd_FS$PAh zE&;ntMbYl4F6?9^Bv%NxIazgBU9~P}gXj`#)ja7&eYoWngAyc`qlOYu)ch27Kb!W- z;)F$#j2S#2QfRLywKP7F=+l(TR&P<`DZ`EtXh{}$(siBco`R_TVI;&?owjY3d;?bwNs>rr1qf^pYt&n$B_I#dYWi$^T7 zGoJl9_tTzJXJTB14)vgG&jh>IIxY0l< z1I9@*9fNd3Lny9?T3i8?RVjolmH={!(|LTS9Kgae=k=B+To=eqRG6%%F09uIYZtlA zboOOTQ6IWuDB=q4EO&WMyXd6{=EPM=+6r>v@L?QSLhT3yF@)w7THc<~Iq)Akq{;SqCn4;;B%dH)Ib)-AlKJ)F;Dl#c7$y%0jU1c zXOSw>PMmHtFWd^#vvaAXSA>FpFZ(#`kK}S_4X&~0c8Z`-XZ)cMCLan`m&;Zc3RoVd z?gtX3JE}t-f^jgFHWr8l{S&0vZKC0Iue(THri(X5G3-d%_`D)TbsBUP*YSP6h)^&^ z3~;!cXYVy7UKPNz+jb!ZwI<;w#7C)AJGmvLyIMB6e5ao-RvefJO}QGBy=luPBEqJ< zSK_0DC%Tex$MLA^Eva)bW22KI#-$n53OLHgoST(h6YcPOIgj8^Ct97(NS8qZqh~zL zU?l71EF4@yuWz;k>>7#OxMf9>^*gf$*3Cc(SbMC&#eQw889~T=5n~bt@1w0bnroE$ z$Ds-fAdk<(;fvA9LW5kBZD)hKRLt5`8kLE0P+&(;jtBUlr?3yPF=xE2uE12j@z6Ii_up&+#bt^Ok7<`M=?|*<9 zy#mcWb^60TDA0h~-8ik@Mc>dXB1%Y}KP^gH+6q-0#n9C4)^-r@!h}j4l_27cx47Dq zji=f!(!z*$*2G0y))t@$(Z?zAN%*2psC9=X)fzw=y7Fv-v0kTJG3sI+mIg4sZa*0z zL)#?8*{CS0xvMsDa>cJs*DaBY}hrmI>u2ts-ZZSgLOmr z64j09K|TB|9YMKDlnz%H(DE9F{tTc9q8~;0HbrC zrm0z8*je(Yc`_L!*vhG3%zX!spW8qX@>ZiK%4}o0-pF?!yP_!nVwPmDhwXv4V#RFS zH@=PZSWkyeQo%-^AeK$YYz}0a1|Llq_7Jz1p!^f^`%p-17^@RN)b~6cPyiH98b{aR z<9`xCHu{iwS{^m3Ww<+6T5tzAgy!IbEbYt!jp{-Db+z(AiFw}Ru!ofnf+qdtiXkc0Y1EHA0mymy*dwER z8ObWgcd!IbYUM&P`(j>jX(k$XN)g;OabhS+MEa-)kBTfj5dB8_`Bqx@X>T7yB9wS# zrdu6A)Uj?@Lq-qGtz!u21ga7q_!HDce+gGdP9@>)CQmcgQ=0+b{tU{d!)c^H;&bJr%*x7V9}Uk{Dpla2|vp3c92_T^@32 z<_g1|I%I=gcgC*F(+Kf6Cj&4}HMqdhZCJt5_SuI-B=3=_lfi&W=zJ(~RM>>002pCk z4+$|8WDXNw%|W2e77c+aeP{E2oIBcnYy!xEsjOqlKKtv8%$Vc5FiN^IV1Gv=*;+F1 zTzTzYa^@S$knF73npOz}ogKi(MVXIyq=l0`>|NNz`y?<5F>DqdpFfb{U|$&@s)I6W z$eZ3V(Cj19SR3W3PbF4AfD=vrROFp1kiUs#G*3w)#X6!fy?pEwEFeKK3O0(z2-RdJ zD5P4UaxOy5N4N~6tVJR$J6lnyf9>;h={e?x<5mPNr4NEWlQ!553a-%Jl9^%vOqhTM zD*U+lx3^)erVe@q=>F|{n4@-+4Uop8u2)J~ur^yvmPG8cs_Z;TUy95cAwzZVbRTp@ z4sv_vQxu*O23bGv@0iP3cFVPp9&B*qODS3CejN3C;m2-Icie<7dc#JM7EptBic3v# zu#vw6d_oWb{=nDC8yoRe!`(N6=l+5w_7pYpOlq!+#l z9|}Bm+Dc9ZYDZT9WR}SFQ}gulbl=iCaOuvJm6E5y%`28|AE|0d+U16VUk!6*T;oA-baR2KwVsCcT(@{$H25uTvo(m@#mxU6;1YOo-WQR ziY2^TJfRrJ`#3hFvbryWye|bW`_X5(|A9E}$|0dX7ribyR-qC(RL2b0Glh<))a@fyMUu}=uMrfc`)i1{eU~h zX(%|H?r=XLzRNX(ktcf?oME0oxZDX6#==a6wtAiapOIRj?@{zIcI#k4GfA5AuWRd4 zrQqPKVRA!N8G|y$7ilX)-h6)A!;XFeL&&v5rc*Tc?LqHaH>3-^P_zvBveUO#}x!7@%Z@33OO%|slKMdgARxTO>0t#zFdPq+PViP z!{P}8#Uhib~{}w8R8qE?ro#Cb};8Pf(ZFsqk$9k@B?tWbx2@9HuA2m8x7* zB0xS1Ru{O@wo3V~<2l-lturH&C!GrjHoLJWJr2sKGX()!eNe^s67ViNi8sa=5$`Lu zUh%E$#iYX5x}Xkb<75vd(Kp|j`&64TjhwQ~xnB2Nc)c}X4SnwNj+F1s zV~4?sR+ZmmTw*Xcyq$-o$F-JHI%9HeMN?_ZwFy%**oCJ0#)wl*;pF<+2LS2oq;yqQ zGc+;`loFrINS$O<%cuIq*k4;@t2hIBUj=FcE%tAs$jt1({W;_P8=gu3zY3;vBEC;? z*y%m^*5?NQZ%Ox?zW=+qv%U2H`w>qQXXi7R%^|{FL`dbgE4=q%`w}ndaH^a*_)}ww z%h)K`kj&2VJ^&C`knS+8tAef$_AbU)Y=O&XlvqI^&;<%3^tZ*2Z@Wu+=7 zeAHI~!#5Ku*T~T1){fdaPSA-<`55ZeIc51)$lp>5Qu)k;Lshz}$O>-I>;mdoyfVhn z!#Ep9hMV1My0uMeeyOod*rS>Y5o&5Q=VL+?&9dKbp-()#GitlMIV zkJZ~qN0ldEC5{);f+}LKgO3yh^8jIr76u}~SX9LvL4t1&{jO>k*A z19+`{NSvY4ZgLQG)S@*T;R?Wzo@Z-hYBP`;I9|PKk0k z2eG$igHdi>YFI1^n-PEc>$kKsje=?qXdX)(rrXQ`PT9^MYAz8JuwA|JKqd^;(c9=y zjp){y7bZWch$R_2Fa0&FNCD#63sBHGAi&PUI|*h_^1@`8r7?y{)0z+ zbND|Bfa&|cSTRff??*h3R0X*5sCadH_V1uS%je(wWbA+ZQMe3wQRsXGR^r?4g3jIl z8{3fow$u8br%#vr|A#z34GwIo`{!y|Pqf&Z#V_C+liyetP}2)rqf3J7f2XAFUd5Ao zYK7WO!KDA0!Cpzfmo|i1I#)J)pm!2N=)3#E%k}6r9p@)HWuAud%7oXI@p_a?2wyDj z^bX9KrhS;?*~Qy6^ji!t|03^Nm)ls1Fu(UHwx9s}lqAQ=$pI2BWo#ue$FYs=giDH& z*0vlkktLT_K8d+h@eurkzdRUE!q?sNX?kZ@vdy)CQ*chAol8&8Oi$mNe$!?)OoIr( ziGwF~Q5faii54CMd0~fJ2_N@on_2caF2-fdi);iZPT<=oD;+4SOIm;sk&s z8`kQsxH5Z> zJV?AoD=bjrie#u}z$>ykCa9mGhzn$x#lH?nhlg7|At-ZZ21|on(a|PAj$g(?ehks1 zck0pbZHpukpc#;8CTj0l>+ur}zt=Z2SR?7M8VV4h$>Z;er(BE(Ii6y4x;xnv>C!~W z4nF~N&f)_uBMoC{5xq7tY2*|BExg@!{HX1=+6UOiJs2C&!dn9!msr9+03?Dc0eW#= z;`>HCTgrdVGV?Lt1{`@t>hVBX*tS?xm^pwGRH{Z%A04!Y>s*+MyJ_>A z`xu=M-yLbgMQ)kT1gc)IhuCf#qRTJxq3bJebQhTDev}L_-H4 znF4f7^DVk8K&EwEQ=H+IgLc;YrxCrzkqy(_LE)=RZyPITK#v1PZ8onV9F8F}=C+~M zoZZcXM2Pjr5a(p%D$Nr9>C>lScu&PS5El0i{iQ67p*2I39*Jkz&~$^8HbztmCd08A zTvvr{*zJ|zj(rJTitAUgDd6%)k(dl|T%EKl*Jj6*E?B|@>|iQ8-};33{8$!~qtuD1 zJ#-^Uc+3|Jw-?@k$<;8&6~@JUJH{W38H|>+H|8U|siHFtr{O!43%zLBuKhRoP+z?dHsfuK0SJ3g5a=cRN^&AW(@TKtfTR{vZs2Au3;k_;SJS)pUJu?rfG8K#+U%;IZ{!V!AaWv=2 zT-rZIoS=vEi(%}IL_V1gxtvU04EWlU-ew1Qc?^OuKkKdQivpIl6XLHr_EPA7RqRLt zV`O=R$0Lq`b{2Y2L4X>&+-jp3QlMU5`iOdzBjfT6?}G_Km|C>rVJY-GjBXEkyth$XAA4M&Tg)SxdlbGvLvs&t8^wDzgm6K>Bcy1hAleI%D zlLXH!Hh2r>qO0o=5ybOe@FFOf(Z-{sgZ{Y~h%u!$@<{6A2@4x?kST9X`Jj2{IA{=Y z(p|*vv~FKV2Tz3O+mLBT{jo4!m{*KT@6{5#QR#oyqgZDi*78W(A?W42^X$r|3J==d zXas`9A&lJH|9zA(db8L6;o!HJse@^LKluKO-TvOr59MWOY4?2;4SKVU0zIvLaBLd$ zD}3=flDO(Q0QmJ30jI$MnaLH0a+-!4L-k+<-`gCxyb@Zpfop^RgouI}m~eeP=8$Ny z4owd$dx)*HEuKtMOcAN{)-+?3?8ZA6g~UJ-81E!pA-+EM69mkKdIR_DM{;mQGWtOf zD+gg@$OL9kWH_xI4`9j;ech2VI^0^0FePOl3%-qVXQ?Mxax%n4(lL~HeZmXJ*jgn? z=A}qiKg|ziqz3j(BiHN&dz}$%qt$XrF%ez`OD}*;VtPlO^GLK1vND|x6UqhNwU`aD zh0NElKlBz^Y>#%|B65BWJ=bymVx~cvb=61J+D@sityIL5`bw7CY= zXnZjcA$x5d%<1CmC7eRf;JEfdYxT;vv}bIBuXU*a_j*u(9k{}mge+pGEwl23gpZ)< z)_!|DR(2#+5z5*aZjdp^RGG0E4hFm=&iyhYi492JiQ?-7;@zcjYG5E4&aa5oUz^;x z_89us`6&hyWS8?0&&!#$6?Cs&rr{ui3b+D?iNQ?Tla;!6F!VW3fHy6fXQ5y9w>3xl z*6ZV8P~n;GnCN1n^l(Iy6XG(R*7^SDSdT6zOOF=AOU!W~%xNr8_{%cz)|fus^wzSzEAIKgKH0l zsIno@&0HEnmrWI~aE9xutc}Yz5lNk{a$sH7)_HF+pN~Tm{QyRx+7u_%FdWA-jX72) z6hmhN-uR;;St~3LUA;V!-BC+$2X(0r-<(Lr%Pr7SyXHh1pf~cP!e$xvkrhzZIs+zP1qrX7ondYc7XGOC` zS(yEqDGVG$rz}T~X>=TBmg$;+MzZ*pH$oqLf@pU^1zO!GF(3s7%O(d_)r&*S&B@6hTh85 zW1z=sH-rzYd6qS^CJvX>HXUXd+hkQyH`y%UxJ%8zVWdJhLTbYcrb3vZ-}Fj01;lx4 zJjVtXk{(XPMb=Ko3Tg2$0ub3^^RWzhMBkSc`YX*tCT*^SRH?bqQiAAZKipgHq9KHv zcs-h4kBQ}_oCJ1{q#|ru*1`vnFvtp;+$`nI24Io96B0KEaka2Auukiu-K`%qp;=U^ z=vYL94Tg&+o2{)(>y`l=Za0n^+Y41!4pncDzHdrJDDqJQmLDkX6y{jVf*tL@bdjdI z+3~!Gu?LWi1~y~hr8jID_#@}n6Ok#0NWPAvj;1!!xhZnSr9A~hQ|ERuJIGFuWXl;1V5Tr5!D8wt ze+1EkIv98k4;gE3T16CC0SiptE*PxTY({Sjuu^}FFHDpHN_E!=9uta03Z-)Lf;DIl zJ7oqRdvOV`#n#be;xlOH?_OcRS|?b#E*HNA1J}BidZ3lp&bpGkN{vEH94Hdi`{~R} zS*elGh%)6S#l&g(9xtM?Xlxg+1m4p@3C0Um*yJ*Jv8$KI?Z{d?4DftPr_!>K8N23^ zGRQd+nYeOAe)P^q)$Qw2n6vItfzYau*Y#n`ld@PQJ1wA@SIxJ=Q(TQ=5q9@ zE2*lapKeMkl3u+w6q#`i7z zDSQW%+De-#f=2zaNtVnRs2x~NMmfoHeuIa>C5=@z*mDi#jY-xCVIy;$yR(jWb-lcz(9?mRqXBoGg~ z*_V*8sh(4t`D^>bvmEurJ5p*6noBG7*2%5#a|fTaTtPcIP$5sVc30t&ck16f0l=Zk z>tDs*SzV?ygrE8Q60(uy|1jam{~^NB&6m6YV)`!UAeEnz2jF>r9Up+a)}zAE*N*h} zR^vRR3nh9ufhA@!hsg15a6Om^R}t6P_K8EtXMfpJZQ;cxcbiB6nooLg+pHg^2P4Y`#UH$zq=obfDV}lcII_` zcXonaQ#hHKayT)!AT1U0tMWq}G0HvaXK?3oGV!)} zG$hmJ?eXvY1jq$GON~_q6Slo3|75bu_h~zB4sDFH`RP5`E7prgP{_dN} z2bDpuZnTTAg+yZ!1rfY#I5fw*F^ ze=32*qHmw_HF@$}b@^x>fa8-?r&55Vk*eEJ?;Zc3mUE>llc2LRNP-_#Wg~ZsF%%8q zF{rOGFSP`x9z6Euw~qG!wYjWt0sCT!Tteu`tOnr#kA*=10x(ik-$rvuu_!D z!(uTu`0e76(Vo^f+&F*7@nOm^98)d0aXCc$nc-Fg4uJ7Vw#QiYfS{ z=?a8U%fy87#?xY6J5K>6Xi+o2=#j9Fm91v7VnH|px|+4cgM_~gw)Rej>sAg##!&6o zvwsdnJGnnG1C<{E;&y5VOJoTBr_P@jN%y*1P3}yi=iaX_FS$~u&Ob^Hw^mB z?!Boqu_7RyK229i2eh>dVkc0`hTsRZlBdf}W@uIB6b!6RjX#S3%RPeY3F)hnP5$mG zVq7@?ugd~`~E z9>?vx0>>Z~Z`AxxsX?p*H#3RSW5Jk;&J{HHt3)-L7#eJs3o`erCqxJJHu?O!$_Md~ z3k^5iKCZWWTx*97S-Jpi{uM5XRXZx@>hI@yG&5DwD8*YxyhXp6Ru4R(X%v`S9O1ni z6rfx|9NE}}Umhy#CiSOUw7^xvE}eVnw}kY0{&{`G!@aGO7Y9eL-LS`R z4i68GPT(KF%PA&m3`4c02e3Zc(eaia02;0S(bfqgVHO}{`QHgd1YtFfUj1yawY}Zn z8@vF9`aAy&{3JuRf_3-S(`QcKeSQ8OwD-IFZ@2b#cLrbfe=*qW@4q~G6_&Pjw7X>~ zghA@YtouZz}l@>`Lx8VuO{csYzX@C6e7r>W%89;1nFM+a}2{Xs*z zRfhs)7R;ZT&RU6$b+BbM!*wc#MRY%mZYiD9O5jVc=;v7mKLj(q7gl-HbFv+oDUK1B z<)&qg9bh6`V1i^#kZznJXaWaI0Af}HL*`n9E|Zg@izkmhoe@v?TZaqPm7uL+jO8MT zN7KyPwr5_&q?h#Y&5!qXx0Orszth`%xbReKT~M}cK_6#Rvpq4&8E>C@f7l~YNy4kN z`fi4C#L_MF*&+|yqp==n2;1r(FEwx%qiSIIq*1E=4JhO{Z`uR^(Z8mWr{vaYj4+|B zJSkgCfq|{WjbSu1M}}+(XgayvO#tBLWC17)wOYtBprXzXkiqq9`{);kCn9Qb*W<^X ze*BmKpP40&;1k7l8(h=o(}Loxt&zty2In~#KhRyHzrAz3wRF2jXXntUX^72WaaAyJ z0vTIs8-Dh4sWf?OKjBo4B*0b`$Jy$sc*d4Y6C6UamgQUEckK8X?WNvZ)?)@So8HFW z8g=fai=}ZIsiWd*5aLNzLJc6&?V>-J<&2z87Qa?S%YQ$Qw%I? zu&lqwKx=<~WdB6*v1MYjF7);tz^nypHw&?-rPo+$C|A#`AR;o$nK0v-K3Qtv zQU!{=V9D#2%wB(OnW9XYs%%lT&co0Y1);WVlLSq8^8z7%rBoBYsV{J3`BfVff()1k zX*!F+GiHy=7+FN)jVQZlAon5?tN^Jj+G6z;8L1WU=8CT^omlEB=;&rusCyXLq<@VZ zOyF9lY!i(UL5umx%pHEYef*8h{Hw=ETdr=f_`qcCs_|2Ehw8knV^!<6*?XF^n|GUl zsF*oVg_hZ3H)+Qp+K!}WHqqNsRihidey6QV?9kJ#_Elqg!{!9*G=9ONv?xA}AZ`a$ zVQA+@1}>qR`Ay8<4z|4GOqWPMG#qZL4Wj`O+yFZqw4)dtl;`WurAH=NR_^GFmi*MR zl+~l3=rQtp!=?`c-YWrQtijt&xQl+@vH+j|khAHTxYvU4-2wo_ng78N0BO_!Op`F6 z{S*BEw@nsLoiDtxT4<|OFhHkZo*kR9ubcRNtO)(^x7%i*-U=(l02o(P6k9ufxOipa zbXvI_7+a*|>$GGIIWNz}LR8_eHRDcs!3d{=FL`6Kbmf*X3Du5iHA}v$Fw5`sg)tc? zTV}myXJ?N?3<>K5$8yosC#~3xNjKP?sEM+73yWfE2N~9e>SWj9WSt8wV;L$by1)pj$O(9rdUjBB)TDS}f-7zQQEMK~BqiVn+2j|v)W))4m`Ya6 z5^e?^Ra4B!lUG2K6>~J5K2UF7u*JnFb6df>`%Iw;6ylpIXdb3)vNO6&+r%R*<=avX zSZf=5@BbcUQ*$Qjk`w_eW^2_swM8P)U-W~3G6UBHJiC2oJ?U(J7vZa4{wyG}pExnl zY+f^_t5p|RY)=BRu*J7IMVLnf*%|sfH>Xe^k~?*Coz+c5GEoTzZlcoM4|)ATo9Q6w zk4ZOMsncdvOVGkH8}#f^I-|a9iu=%vv{W+wF|`*kCP9Ok@RkV)=I)GoO&P=aJ2m69 zWUjctP7tv+6)o??M}3pHBt zfV47M#+!wZFuFDvK3I`^{vw)UHV#GHnL1fb#p48JjTsE_R_k5LNXwG3;$b|VW;z3( zW6YC05mpK&C{oV{xIn)B$HJNVUhlvuWWPV`_)|VBK4xYtL{m9jfj+cNpLkU8g7Cm- z{<6$Mpg4d$v+)F)xWsK_)qd=9Ay2$Nu?#fe)^7)-u6f&1dn(WNBiy}sL;m0q($MJj6P6v{kP~nKpRkXRa zlW&j=(8O;eK{cI^eQ|%IeE5CwZ%FjbBDPxv~8xo`&-BRy-iyG zLtfaS_8sPOiKTYaOrCk8QmzDcIdc=!zlV`#i6dHc-szCM;TO60biE1hP4EfIl4aLj zrkPl4;nib;gZJvO2|0Gg6#R>KhJNeuxYHAlN~+|DHpM)LQcvZf18ZlO(WQ|K!rP~; zzY)LT#b7phKa8#d!E!1&KZd+&c19RuMTOV%rd2$PR&k$iEj3rkpq4Nv-#$7q2a)3= zCYp6DkTln@M;!hCh@VL5)G=(S1b;{R%fd;_lx2tjQ)0a< z;ILqj1r>C)F*A5gV#&X7>Z8SND}o|a_*Sb-?v0d|mde}?>_DKO2*mB1&K;`}J*{YO z^$c#nkcUhS6j0a{i-DIGKRMs2D@6;G_PtmZl=lsjA!?$dOlu`75V z+Gt;uBlV=EoT^{jR?3*p)N>!9XWkyTy=Lsa<`2BIY^)&`vM7ags69^}Vb(TLEb5Lt z$5E8sp(c%0atgUM6t9aUnKsqv|9DUnhiHZ}@#Rv07&SyqlqmgMwee6LVlKk&o)c~~ z1MttEWllHd1B*Jz@36s`6s#Y8uOxP;)Ap&UhpUC5-1VYw*TST>874*jkd)Sm7r}%I zr@PB9WLS>~QhQ|wQ=6t{IjzV;qzO`LB+18ZU(e7%N0$Sh=%zah1}N4{uJrxHYgzH4 zhr}*M7AKmSqPi(n@RGewrob8&`77p{c*@Hofu)M6vsBI8mXc1zkF1#>Z6tdYb6!ZV zI{3Um`o;2TVK0p04i$;LGqEAHBt{Mk^=!PbL1MPCl4UOAzTQ}~El}tv<%M#E9aOvq z{20QA8*bAN!FGQ>H5QDQ`wXnVFdL#%g*PtMf{+SQmu+t%k0zG7GvFs2CDWFkRWrRW zi(!W(Va&m+1SMW__iXu;kzkJrA~Ts9LtAMrDl=4Pi&<*P$O>7896F8wRf1Z4YzCHs zW4aLI%N{lD`^FnL;XH)3reiIU=Qx^T`i<8(Qy)VE? z1TfPR$Xe|a+`}8)@L;@~RtbrK@DNOz#>|VQB$vv_R+@EPA%bVk^mwl!-p)XA%@5dbu%l0mw$zd=Cs8zzn zo-jX%PviCNDv7taFgk~a>WyUk2@knq1H|S_{_JXz*t6=;z=PPbZog^_+}6aX$xeUA zwawa>R5&>aqdA=q-X~=hjO2|fl>x9c8WuBC(lR9t#Y#*Qy>WzaQNh8aM;?pCobiU4 zyh1YgzYdrG(7u%9&uS!wIW-$N}vW)=!lFur`pV!Il=ee%$h|2T|y=IiZ4&eQ{8s(ghJ z(X)_9>FpEVq53K8$9K|7=$sq#fet*7+OMu#(5kawK)Pt<2h0LJ#q{n4bG)$Lt+9k~ z^x|73{1v4@U{YaXiHe4|=)?S`)1Mc3}4 zYZqO+pQLLST_s&{a#hq>!dxGO|5qE~X4jMl|CX%Pwr8o{LGL`pJa0m&=2K<>cdoNl z#{A8ckQnwj79Et9Ptb;9ODW!)C<=LA#F?_GbjxC@eh~-g(Zw-Y11Rb|Vl|E1(cA_p zE9u(F?xXhz67TWxp5Gg|} z2k+`J_E%}Yat!(gSxuuEWYo|D7AMuzF#U(3fYpTzr8sJsinSVgD~zMXIcRuG@m!*I zfj|tB#^y>BR*Q~X;P-U<$J=Nje(hEwR0V%a&R@*%0<&#V~j3*<8tJ+LgLnBL)$&+@mnvkn|+Epw)(HHDqz zDmM{D^9%Bh#cE_6WCHitc^RrVkL0|U)z$g}qnXwuBkys%ef&0G)7-XCAAM(CvFEY6 z5+&GyQtvgfz|vj%nAlcoW)G{r{GUS&W;Da^MR4{LjTAB-)sETXm6Z8?v%Cr^Fhj~X zrBH+m$={;1S5;$`Zw9{m0DT6bd6HXJy_@dn9vt5Z+{lAQk=GDz_{o6t=Oi-$KOPrq zicvKtQ`m`&EZ{`k`@zY9{OO4m#qb)$ zBHk7MVu}!OGck$RqHspEy|6?gycjYOmC!`qIt&*b8LV|#wHIob&u&fDKAZC?kc*+w z8oltuL-FOYB#EQo z8aj$^hg$XWcN}Vhi z_ez*rv7r@TP0N@lfea|L`mg&s+>ej?TidV5H?KZS2$bkrh6DfVwkJJKLWR!nNPDcX zcp)7EPRgOEc;60$DHV7e6$~9N@9|E+X2*77?yf!jiiDBoR{n6MJvBY?R%RYU4@LZ3cMe}%EqatY=6 z{d_J=jv0w8oPSV<=u@=Je6iyMmn~*TzMeb%7h7-kP6jYEe%U`6?CrkjpMX9M{}E&c zG;zL5E14+RvYK)_mLW^UH8V2jNwujVOTW{zm3bCDPckp1sBEMD1ufRoD-=%&!}(Qj z@9v;R>(0*Z{>#D3qb)d9Zo$_23))OvOZ<0p@T9dd%_Mi2kF1J&c{dqm=rHca1j+!- zU=@;Rg8Y^}pop(F2&y1!?ot^N8smFf#%F{3VfL`vzI(avJzsg&7Z(=sPU4zx3{+r!KNC?NSSW0p?*=;Xhi#(CTa`S8BR5{!}mZ zdcE+855gp7WZ!aXK|D-Wscx<;?HeEn;dRP?8Io--^%|W7 z+l1K*osWrznnj%;3zx7!I&y(@k-ykrWjLj+1}fT?bw@R{wepGugQvqN{#1go0YEIw z2hi(U3PllqnT&jmNbIv}qODSX>YcVK<}B%|i58w|0DF#q8lYLL0XkIb5^#4bIuFR0 z%#Vdh8d?*HiF!3tp$IYi-EumTnQ{P zKu-a5&{?}mV&$Z%$pX7?rQMbV8H5zU@ttBC|3xqiAz>^m#sNHK75rogibg3@VQD46 z?EP0dz{$!Aec8p(b8`*yi;+l9$Um732Pi^mZPpFfg)rGE4Zunrc!fnlssapicVmS< zs1utJKAG#3%ScLdzd&x~wJOT+b}yVfhGCq`4aG~I9e1J#WXJQMILPQP+Yh)jIit#B1!@x2q>gZyjKX1 zAM#HdxNP$OfvJif8~4%tY#J8>~=ttEWfrC=e2CUCh4MJgpQjGiis&oDWt7)k=kG zA$H#JdDwbR)ONKH|S%VTFgSy4+W3D^W za%_%$+Q_lkK}pcgW4|swl~*@cFEF>*D)%hLb?xhM8vBX?ZHRcCx+b5ZhOE z%KRRb`L`O;*s(a--w&<|6vD%t;!bP|dMQQ=sCnYlBMT!Zrjk|Ae|~|7bb; z!h;AM$=!;s>~2L@{s2W+c9)_nf2g9XWsx3EYP@}JZtVc_M}_q?3;P!%Id%_U^^dI9 zzx`PYNBEP_q6>Mw^>Y|a_TguDBAMTZP50Jz3d!BS&yb7Sf}+r{jk4#Gxge6KDCbk; zo~(=TvR0ieatjquK|vL#2*l{-EKS}*esFi=AS42)5)D;ZrIJy2dBBBq-_ML0p|+>C z(%pT(&=&pC!JCs>3%mQkLguh=@3jYXRh=Y4EZtztEYDN(p{~rZF$fXEjWmKCq z3Jrlf+h~Yvo9ZAyg%;EC5s>0)O^$IMVV5@!(U{aa^4(@!_Z|OeOkZEi44_> z(@lC^vp)v3`Ufad+3AHUHQG#;SbOwm+kBSq!4fT7B7#s5@;GM1bk&i5@$Z9288Na%V-@EpE zx4<7I1$gMV9^H>wPF4?^XKi`=82~Z8*C|rb^X@KaY9-XJrV{`gtYTg^#4r>O^QF=u zg1`JdPbjYb0rfV-0=~EVdiUg^e$w}_6EfHtLVyr0794=+Q`nX0c!pk=BW7X|Uq zG84dRYf4tn`JG=5ROgg>Uxs0rHxpKoR*bUFi{kwKzeVm*bz@(Q+$-I zZ*N{smJ6FJF3VAW``~EDqG6!0=T(t;!dB^yii1w=+&9+$ zW8!AhafqW~cm_Vl9c1t^ack)+46Q&XW%l4rLcdBD1Y<0MzDAV_H>HHpRhC!C04v5Z zSTtfOmX}AD@EDJ5RJ)SbpvVg=X@{aQrC2J9Oy)Dj%{Xb?-Va@k7=q8yY4Kjh8wc-t zrx0U(uNv87)w;S-t*s)M?d3+MIRx_RwwfEuZ)e@ek2R+iAuu%CfLN9EA)s~@Yu&t; zkq^NzD(}@?G7HuVC;KGL(jf3?DzR*Bl<)bV$L1;uGN*#RMmnCnMYJ{;yuQ%589Z+p zC>%3Dd6?4trRZlkL+e7+kzLJLq|pN=4w;V9G!h(XcgHlg+BSStN+m|DYAKWREF>8g zH7+(@bO_PR!bK{TnXj1+{4>!$;;P)|pPPy0(Ua|;S>}@bGj3aXe$P?lMHzJb{``)0SO2x^);aH7y_(97#fknwJTYH>V}kXKRwv}?M0Eb*-#N9cZmaGd zgQW3pkSAUQCuXga_dqyEab{*r5#zU$4Bp?A=S)v&{-(jPZghpHBC)65gvjn#U!dhe zCL9dwyBn04k$^76lJU}vo#Gr6Rj9frkx9a7T!sN5I+S8*RN{lsN-d*6s*jh#icU4# zqZ`OfkiJ@-S@QcwC%Z3p#g!CK@K4|D9-$UrTSJ!0d)q(SeesLItF7Z#!@CANIXD== zCE#VhwdMW+bvN6u4vzc#%No5o7Khr<_V~^2N$YT0ckdO#D1ZL*VN>Y5KcrFB%fJ@p z#PXI2-@JIyKhmzpuMxPZH-@Ek$vHBxN4D(Sl_bINp?w(EQqG#4AAiDmQ(ODAnaNfQ z{^EaLhO@nwjlUOsv`APi(_Cz`8f2fF&+%-Os*uWA3NjO5$ycWhU!F8r^k2Cp=$03X z7zsyHl&qGs^ZpEVb=10H>+FMmBa8n!pt-P`NG+}eX%(9zcG{t1+^9cg$Uw6a|Tffh}& zeXu9QN5Z0)H+7eK*?@2MMbvn?zx&HRQUe3X_I5re2?Me@bK4o)Iy~HyY0+o_F9=bt zhmwK4qfe!p*B^lMH~amcANIEeir4*P&0Emkkae%QJ!n-I3SZMBk9NW4tM*%Pe;sf_ zzjtb!*0+bz5-asT(^>Mk*FWEF2NW$Zj2c1fK!=M;_>B?<^mDq5c&CRJ27UUGc0xuq zgPWiMN}VtC-Oo~#ww4BNXf)+*=~Isym(T<)S+It#b2SsAJb%s23^ykFwmB{Np6$cFU!|Sx7nLnqD4DCdJ8uGSRRbQ_TH}8-wu!ZU;|OF zw%=~#WHow(xCzpz=e|!l)6vAV#t(sk%0H8KTC{{sH~Q3}Gh|dGZk2e8Uvmk@F_Guc zJ(KR9-ywHRdm;6S7;}}@Il39cA;I!ZQ5(ks1yNDv+<3Kd8d${F&b-{1#oR{XH#32B zvQh7S@7a9-;+GPRamj{w-gf{!YyT*04Ja0H)KD|xCvL8$ldD|I0oNLhs>v8vkW3*7B=*=S4W^L$2IA%O~V4 z&l3zDssa)!Dsk>g<74U?f~9v|1^VUdx?Pf>HJ z#F%S~TuaQkl1u2Rwc33AU2TPR&zi*vl0-kX8ZvZNZ1`3`%fY{QH}f@-Ohj(MvcJz;! z1%KqPAL6ecHqGF}OkAp0Z$^^f|BNIGiJJiXCKz!qg&gZUcb`s3Oa?(?8-fvd{B)bd zKTXtG1WeXw;6DB0!)AWTyb*4}^dwF146hT& zQr8iw_fi}stbuH-x}Huf8bS{`)8g1BTrk^y^e3w3UJq~Q!k;gec+rOeW zWu!2_x?TM72l-tD^LZAV_ks<2a0Th)cR$E$8O)#}e6hFnaxHfScmNRKp%%Jr+X(t) zO6tNPy7yMqIGm-?FgOnbn~Hqs%7_{IiE7R{%qlcIaW#CBM!(+2Y^s*K)Ci~Ex;9=p zY2%MVU>P84OiMcHqBs?EfK^&5nP4KGQMEA!&qM{iJ%>tU@qY{TPIOXMZ*FD+7XIMU z7@SVeDS*%kQT6py7M8|5hTUvWWrWGeMrhi}xVat-AI-}&G_mqrhZWS|--v0x_8<5s zY*_b64|WovnAJuxJG%skYH!*2+CSl+M~^;#^quc~2mjT7YX9Y*H$Q*!`4^vWe&?~Y z+kEo$$roSCpMLG%@Xw9p|Na^v`2YOpuKjn1xtmzYdROOPyVpODHXp6n|Hn@@zj#{T z|HqqOY(Du~{%_fn|MUI7BMm+E5p_W|`@!GyPk3XPh?GW1%TrSKPi>!;0xazjF8i#p zTl1*~e$spz6X%H;B1fmWF#o+2kg}pV=c{t`5kV4U?!c{F;_(7<82WDdMS1_)a;j?4 zK19sG(8&s1`V5H};NkHl)vKoOqm^X|&~inl<{)A;WnC@J{OR#9spTDroUqjrf60fI;4W% z2n20|Ex?1U)5of+!K=Kt&P>LD`$M0^itjVs*JGYb%qZO2^h~NhNKK^SdPf{XfrAVA z3AU3tG_b$W7;4s@2#Aa>g^ul}hfft5iR}hpbkvRl+Tq^T$%})d*JiV$&{wu4!B%EC ze+@5WwlfwL?&L0s&NG(IHjvwA8o-70=wP^ryDU`JamCMAZ#rEd7vxk|pFVv8!ltVy z)an;{eBU8WRaq&!=W8uD{iiHkeC`j6rl5dR@`^_d-mP7>?=JRa&tvG-NE;sT-2IyyM~#bE#K;JDx40TxP=i+NtrMRnKn=83m( zSs{D1vR9o&)c!lvZX4q!tws}9V&jCdfg$@tcL}11k^{36VNtlTbsF-}`E`W91B4Ur zS%)t(F=ANG1n8KUgC^ON=?tnHda^h6Pz-1cC9O zVPFPh6!|;J@p~?@$1`lFIrvwa=aUSH0=j%Dk;tk?`ihn|fdvWjps4&9lgbEf1kKKo^qRXmTT-_Tqivr+-El7Fx^X{nI;)O*V6Fn(t_rqTqSAt1^`^qluF zIZsggmJ^kt>8j6D6%m5oHnyzFZUehbSU4^&v6t_J#bGvwI`pm29ZN@%TLFoH_nKhC zyja)t-&AGlbZ5Z*Ozf}goqLRE;ht_VW(PIhx*u9i*7)3xpmkMdw7)IAe0vexg6lSr z*EB6;8j{8=1s5Q(-kb7!+|2ax7B}j7m*E%%iv-CMq6g%=B}XIfQ9U{SuhvxPgtAUk zNN)(uupZq-4@jE8fsW2I?+$W)F8Rh}Ip$`$V#GzuuC&x~1+`0u_RRO4gS)nI_}0P- zmfM)(6~nXia62@W)x9qzYv3te@H@*_hC6yYGJ{FGZI$l^T+sRhU;)*QesOqmFl0S> z%4juPs2(|1n?f^38={)-!s>>k@N{B|O3GZC>pd2_q85D2E=GS|E74zFW{$i!sWUT{ zV*w_|P(4e}cfps!A|atkanJ?()Crv2x@F#IgPa%M(#IkX%AZzX@vndQv-0L> z1rEIBt3h{(Jq;`}^L&aZbXKA{(0d0DSil&;$+fgv5AAD^XW-Zv(ztUI^1WaX^`6y(YofWsC z{Ti)0OOMa~9m&s#|KNB9$~22SHPLt-vDfi<4yDtwa2r%k@Qcc)t-yB^ArVL zMTYnAvs0m`PRkQpYz=nQz3d>ka<@MdQu0g|<*DcXu85Z2l^@9!_YStdl%LB*Kav4!_U6&^umm`WNSP+4?mFWyvoQYN= z%>y$hAifN~)VKC@W@_AOIiVVL&4{Vf(c$XA9f;>UR#5hZkeP5w*<_AgsP3MX=Rs4~ zl&JcvUQ0&Taa?G#$SGEFeIsv_hn^G&-X(#TDd8j?efP-aPV9bpB7JkMac5N9F3L6v z+g?tTv+^+LZqC*JPjCRv{-$_O7Wf8?9GacA=%T4AH^dvd>9i-T$8~Q#KVbm@ou4ID zs$A>?i8D2})KpBC2GjBR11<~!=bIh*_v7ca?eaq>BP1UoWa?;67W*D>Iu`(Ic8pw<|1c$&12ssprT7oH-@b^86FV zHQ#16jKJdxeR;lE=p-NN2Vbx>2u?4;UssDxyB0cb5#xMc{0*l}RWR=^rvcXF$16Kz zg12^S$Gb%(`MY0A%_ev`9giNW92QP-wShCyi4auLW10TfE!J80*sx^`3S}{oE;%bm zBg~tqJiR5<>jK9lf*e(w8h?oX8@cHtM}3& ziQJWqor57couX_q_{2$5=}IMmdy-c1dHFN}l!YqtQ_6A-<$%u5XbyRn)hD8uYx)3| zz4nY(fUGX%_4iecVQWm~d(6*iS@^qUC3PMqB>W1smORkZj{~*MF#wCp6~>A#4PA%F zsd}VVh=?=6j~U6z3eBc*idwVCIYR!SK2^<1t=Kv4pTLz7(=al$N#Ahl`^Jqz@#q~a}#3|_(u zlk<&vcfU*aFDAQGWqFEwJo-uqX3Mwe_~Al$&u>Bc$}1d=)%;g;3fj8ty_^PTub!jw`<&8;Lu;Fa%nV#gww1y5@so z>_i%YHqVrjtFSt$sF`*eL(g}fzuf!7A&f~2dN<9eMc$>YXv#qcztg|z(>S``{(LY0 z&*!*ui`M!_AMi8Z|5M&=l>C41t*zX@_5b`BKd+G3;N>>1;eD|zA16s*ftzA2ND}-9 zS=F!uaW$58IkaV7YABZOV(LrCdC_to|nNewP&@ zYJ>;Xt+b<4sqG+|i^(>hnWnuHoDH;m%s6Pd(>}$W1j?4TNg~lgo9UgJpY|sDdeo9P z^`w7tTKyU?>OdAgmWC<*Op?|AYEHoeb7q3I2wGJ?9x?VTj=;N_fy1Xu8KW*?7AhDRG{1Rf27y0jJ#>XW=z*;?PY_HIo2e{)R1WFcq9l$RKKmOO~s zyDg#X5mYO;9M<@UcVy8KZSP1hVP6_Z?wghj_@dXPTQNPp#Jd=ubmN<*y=lsuSpf99 zf-Kb*GwLBPtTt-K#Wx+?yEc{4eb65)sfu^8UQ8DFwK^2&krr`~7_jtZ`f|L4X8z=s zH9yjB^^D9RqR(6h()A=Eyf=MO!To5#mzFlfS9|Bs!W`xgmKTv}$fjY(Vjm|CEYAmw z|3pTST5)8s4q0}xA2Hy>H&>4>u%c1)vSnE2Z_uYwg5HyC`z5<&hN89Pb^P4esO}s^ zwHm!S43suSaLPAJnc4Sz04h3RwJVeuF_$oK6?A90ytENItL_GY)9qNYhS=avrGuGD zS-cMt_faA9Myh$eo40}JbuZ=>%O6V5kP`eUbHNRS-`gx#Q(k>e_2HSDzsDHUrwc^Tf+5;nT%R0_;&+W>H|p{g2beN8IpaV7xTrZx`WKhb`Q zk~vN>FKWJA&qQiU=~GneQtKed?L%^-mVu@&9ZxqtWIB;~F?YG4j|yMrLEJ=v9L(K5 zsAF5J@ElxZzgm;*_50UwrE&yPd z2im~x0izNl1HTiHy^h`viZ-p{5h7|k02#C+R+5bM`SJLHU>aN(60f0`x>n|{B}EF0 z2MW$$xv4#{59%=fFJZdhu3&=St}Gp*1$j+vW87v1k43@io|zA>D9Po;!SK*fiH7|i zR92UvjN@qs=V;|;@_y!b(PMDx+wmLst6?taWJ0-s}wu{UGL6!O~xIhPr_5xGq3N5NAgsbJ`PpzDoPG{VX9c5EF6?C-yRxrcO;2Tyj98}->s%UyYBaGEqk5sb{;Jat20LrEfvjV+^ zPv&;C*cBRI-|!V0Jyu?!%aT8K9kj5MG{O#U?mmsqrti~VRo;;0FUZlt-9S>Wzj|DC z#Y2A|bj6!MOXZDjw@V5ud5{mnZAZART;M~YVZ<Q?ud#j&f49y&;2>9(;H8M#Z4g zuP^CdUaBH^+n@N*y>0LNj3}Z>?PFS_Xe?C*kO=R}iDfhA#c!BHlA@4z51lbDmP!$^ z%{uh2YuHfU1-^R{JmUe8AC@z#(@;7+)YN?4m7Q}jbF_S~=_-=sdYAVZI)IOGsppQw zmV7o%Q=0@Tf=)4eacVM7?P|t!1*JQi3vi=5L7oqJ%a~s5kH0nI=~p4~if5je zo(*$06QI7_arqpqkO6L9C3f@l^Xax10Jt%gSYv_Bc}>-sg7+y%=FP5eqD*KZ>vova zH)icr`P05msTOIOPqT(LpUx!0Q0s?MiPL4-;+fo5T|<}&)kkM%ZH+o*rfq==rt65p%FB?E zrP=k%M?Xugj0&FB&StvuuYdeA!Zvw^M;%hTtb$wEw*)QA>b7b4hBxQV(s z)T^URi7s`=c)vE|HL9or&Dk#Jy;rBjO9So|Qx&nQb4SomMU|`zYS6~+AN%S9K3Qk) z?ZoY?`UGGn3-PZXg6bbg)FXyUXB6gu7v=x1(!YAX>5{1QRhcikA)x!CDEwyu^V5~p z`<>2v!s0ajn`T*;zCC{w410x0ckG`)X{1_UbY+bx&&(59n02JN)>^wKau6PRQ$Mrl z@Y3P>vZfwrtnxTD+UB_I&CLlm^$C4iF`-b);KCRZ1UwhN1Uh<5yC-0I#67_p+kR({ zbCouJ#=IGrTSQ!_jfmg8*!kV2!u7{gHHai~3VG*1Gj?`JVnQ_AQVlsZ!-gxmE|B=su0Jj1!C0 zPE;)t=_@Y<$%CuKA2cdg?Dgt1?G>=jq@1qSx3H_tXR1$;lc_PlZ)&$2qug7a+Yd(P_QTz96{@rsevC0WKPl5z z?p(6xPhX^@*%&C9ha#(E5ABt;a;I4CN!=z=aXsGKMGa@Y1wpfkip~2w>CeaKAvB$n z=NQwPQqG)fGso}MU!&Y=KYGiE`0!t&hK&GhOat&55bSSlYe{JWpuRrY@i=EXMs|$IqKv$6x)JYl}&KkT}U-f3;rwesZU?A8F= z9*x6f{bxr=-Z7_B{HIDjMxRdJjYQNy<0#)60ZXy8)-^66TA9~x)9LMF#9iLYQ687x z8FnafHD^5;Gc;vxI+yv$)J{;4h4d{_amPY43sbe^r}5a2J$eY{U7D+LVqe6B_cmau z+rpg32C@V*)?#|A`wrZe=Pq0$Ih%yw8>2y)CCVdz>IU8yySX+$&=qj0yyPY}Z+dsD zX^lhB$=BX<6qg>^%Kqe_X?iJo1qi+uvYLJT0f4fz6sHMzX913*v z&XX_8-B=`5AhDw4kC%5T?5ZE0Dzx(MwCIeE;stjR2j4&js?g^?b+qF|sk=CuAt|kH z>Hx=swob2HYqry4qRER)1Va4>8Ct(4^`37e|&3(YySCqU!_IQ)??XrJjmf zrf7gG`jFa!A8$-Uo!MR6+G1-5o~fR1w-RE7gt)eVgeWMjY$-2pWyxDvlCq?$PG}~$ z861Nt$!MuNY)m}4KlS7nQ%@dDK0)f5@`F`85Dmk?r{BN~AGeR0hyonSQno=vaI(v( ze#4zcj^5MU>LRWBr0=htImi$itG28x7$NemeMQQJu?s?5EnOP%&`pW!m>hw={qIG< z6CoPEefdb&!qTj!U!)sB>2vrMZtL4$@9ZOe&*2|yt=2OB@1E7Cs#4x?>=K?#7;Ha0 zh-sl77mH?^=x5Qmrs`Ox>Ha<}s;S&nOHMQ<$Q;WVkt;O<h7?Xea*vnFHX2SZ zT+NY~fv14<95QdR8soSvcz(<;7&SzuO4~;Oj~6x|z_%LjETuW>*5- za)w?La_9lKOJMi&>+wvLF z^e((_N<3&(9Or;?`jk~)Guq>?VX2z{??(KMZ>@Hp(ugoYr#J05KhgP3nPVn8{SR67 zZl20-Eqpg^;rlqm^*^;?ujx!bu?ue9Qg7W-Z{1RzTk7OqU1+O*Jl|5C=kzAN&24a- z+u;8zx5307{BO!~U}$5Rwz7*&ILB98t(Eudc5u@T#*+I=esWsTdnEGTfaZ7 z-=}_MURR3vxZR6f; z{il!dQ>mtOE6s#EXg75uyt*{h>>n*gz8gFeWE7Kd-dwFV{bTKXIP4dj%OKPXA>Y;+ zF43c-R^Ic~%7k*4KXau*oBe_Gc_GC&oAFi~^lKvf#hF1uDOL5h;=kxdPf@3f=Ic||1 z=n#^>-`oQAVp`Vb@c7(H^i+d71)PG9Ur+`vT-&k&LJ2z1%8Bx^RqO$w zGDArP3F>GI;3DsGnbZTchcT>NZZ??cuve5pH3eAVke>B3^%l)x<(@S@D+y=Xj!uKz z+A9! zp?KDg@&gv)il7Lv>tfR!fZ-@$LHJ<`;MY1$KbLrAf@B1} z(Ba|Xc6x(9iD+U9j531JB~@caKd+^&Rx7P1f7LtOL<{@nVWMxAVJ{rCr!c3uW#N9H zZqt^7d@wFc!yI(bBvD}Q@~vMq>y8*MkJV66?=Bla_prt*685f z0IP_9zW@w_%L6^bzYG|8s9)u$HGcV%M_Ns7|C{aYo&9~FjCdWi!F9Uhc6EobUNO8j z$}kBQo3ozVCq&uNrJG_S1$SV+@A8*GhJ8%5$e{R!J!ui*=BN*_@X8#~+JixFKpg*F z$d487^z{WM!;M*(XGLGlHkJug$Xy(|VY4)E3sGi#NA>48Pdt;Hck;Jr7ZS#E6y8o{ zJaw?KvEGTERs8fJnS?=@qF*-WB?43daBYpeZI9V?95~Ywl;&3|3n5E4acA8 zk*maeksTjcf3>(RS5=q(F7?t4p6FI?G(^0)NO#0W|t-U!QzwjGgvw{^4R9dqy~&hvg>_f1?d#hf!| z*bPIlj@iwEeIk5BackGSf~%Sjly8}UmKUYrjATaO5k~0Xj?H*^H-AlZT||PH^W}G2 zsL}cU@-Hbi-=J5(LsUF}w*_Xq2AISwP8`#yy=Y6&MqXU_D;t@%3m`#smg)#&ug!6< z&10*ZFSE~vVwxb&?)M56;D9+ITrr`a5)E;Mn1E9`Dad>t8PLgwwuU6}e@%%GyDh=AvkQ2AWCS@J-tvKLNwR%I}oaR8|dFhqR*51N{q4W+W%4x#)=9BT+ z*-)P<;6}Y(FX-OEkx4}EnGSW*1|e!s2j(JT4G0q$b^kIvI_r_KMl*!nkB@^VDQcr{ zi?AKcTk3qv*8f; z*Ac$deAQkM$x<4ttz{txF}fY>1FN3(&I~IGjayx0; zhJT67eWNjpPO(o+7(4;R%Ifsn%Fk3J^m!WFx?X5GjYN%TFz*$Kdm@tdww{9nK}rj9 zT}-N4?f|kYwx!248X1mTiEx8!9oRgTl7z?q_fadRHMX9-BTnuk#a~u>3r!>?IpdTj zq-I^C{sq;)t@NuAJCOT()(sbKekTLi?}bUnls{!9og!f-qt(;S9F%zEStLc(%(v;G zpzP|z%O_t1!9!kr**d2FPIhYVIG4rr0?X_#&-H|Lath~QVsFLKyPz(sq!z(EZ4&Z% zFrFO%DuR_??&XK)ENyO5YRR@*h3v_R@8S8ZB@EnZ zui{exdja*G`Hp&|*`{8KN6nIdJGllEkf>DS+eT{eSR9njv0H2JfB0t+`|m{_++3D_ z^u2yoRyJnZfBCz&|00rSeRbtW>AfF)grEO&`|tJEAJQVuqjocc0DK9tqE(##=<1)j z_J6#(w|=i=|6hYsz^(oNWBh#fljWnlyIh<@RI>BH6eH5 zoadt>`N$}vU7$C0m~I!Nj Dg<(&v$Q?2Is_eBW3WP$%F^Y@&2mP%m522Syv2aNbb6kvgZQE3!o1AqqHEm8Ba!Lj~ z2826JP^ZIZ7T_a;rZldyppq@jDJE@F&Yp^Y{*Z93*;sRq8878htM- zeVb%L}$w)aIu$lw~T&EFaoHMR&XSHBzY6(N%G-%3o}rOjgQ>1h3Ky z*{u3}=;MSrXPqrI__hyUynMa0Nrzn3-Z<%ZSt5gR_a?YHK1bI&V3}RGvBt6!p;uD) zd%EqVF{Es`oSRutS5;xPhuR)9*UOb*6^fzJ*=XPr3O=SG$k$Gaa4YI{KexVu zSs6r&XKh^vbb>#*7@itxG13wO@>!eikp(xQG{)XrQU}^p6Jn)b?L6Imp%Ck9dy2RF z>W>=&wgE^dFSsGe`~*1YGSD-)h%E6wEJ=cI^Mcn;8v4P3esF;Ig3;2W)?H;v))Q85 z_vwq5dpnPoF0d3Q@3AV``=#_VDs%;yag#gtiwgC!T<4waI5wU!A`_IrSr;HI)FZ!kj~TU4W+Z1=K|O&Wp!W z2v3CHHQS>kQO(7u58Z}ZF^wGcq5gTsEeo2#w^Uay2PumG9vFLTowI>DqlG#09qeKW z^tLz_IU18QF$vM@o&DDbFTZ)c{qp(F!IRx*GW%D*dpwrH?yR~7Q&`ZOr|F%U zpT^lJ{4)4wqBe>==j)xV$BF#s(VZIRNgmW}VrRZxbZnG*27nd35Km^7=E! zNB%z5LjV1#c3*mVfQ61Ne%iVl->XV;Ddi4d0w{cEwr0FzAJXz}J>7ixaI#4~;0jyC zehHr}xrS|oEf|u(AtFY*kR4=Ss7ZDZ79p+yoH-vYRc$>KwsJ4l!VAt9fUGZ>86S2t zVQ2^8`9p_61M;DL2currkzF`|RMtFBm+tUOn+hHPn5DW60tz_3IC->GEdQx>ce3TT zwbtEl>ks#Tv-_%bclq1Z<^B@CNt<1C6Fz2->6aAtn)q{OQ%u-5#h-?UqXT>exZfS8 z%})A->#EKMXd4^24(f&>%khC^9_#muO~XU_(~Xmd91DK{oG;~{Zy`>9>(@RkbogDr zwg z0mM&Gor=`l`VJ-EcJJPWdy2La+2hWtAmYwiipRi(4V>jT3588?M;l78rNeHB+u3k1 zLF-uBRaxIP{D-?nr;cqlIoCKC$lHG5K4TkVfqP6wdy_W*lJbM4^p7RPa;h)HCMcd5 zXJB(#9}|K3t;I z>)y&Q^|#tuow;{$(dl()Rn!z7eU^q1Oh*f>I?CD504A^4w0Sy}E zWjEwF9<&8%amQZL1Tb|OwWf_un+X4`6{ z;%V~*t66j+Y(E`P?SnZlvq}_43X%Ay&H~<;znCdy0j6d4hes!>i3*pw@>#eVz?Hno*V-=!*A-<-&xJ*xN z#<`0-x`d3dZ%-CzCVo72;i^FO9wQeicc#2#&?)5{cBh!=a?Ld((>tlZ3< z=^S0glS-~YNlhRFBkILua@b@F3v&P}BL_B3 zt(ypnns0IQ?fMDSlzxrRUwF$n9d2~F%077ssK-1o00@=>dUK;HjHTQX3%J@s_6{&K z)jPt)rcRGc)0Up&l`3B#6Kq=W$sW8vp<$MVGuOm?2-Ic;J=6xhb0lCFrVXr$dqngs@8p=j^kiX+X&a+&r`>(OqAh_dEtPg z!ZiHAZK}8h*${GthT%d<^!_M$(bRcFNOL-e8|+0YFA#gO>b&**(Lwy`KJ-ZLx@iW3 z!aG%c_j`7+=}JZp7+G=*1~dfkaUsYf45PcyJm`7CgC__(yeP&61PUSKB*vbou6xu4 zg#)Sh_&arq!KrT<)T%)Rnzw^RAQ90-&2^I519*W)-(x6!6>pEf-f6;#MDVM>zuNze zdT6!7e)L4EN^}AMxPS`vcdNlO9;~YeM50L#0*Ts;E?fq#{FuJ=bnw%o9tUS9>lg6- zGxlq^EQUOtzr(#xis#YCS4Ga_?Q4mWuS}UpMvNA?>k^Q+hps))h zz)A48fGE>FOul{G7K#it<4=I2z%H7SM2ZB`3S7$`<^@n7v4$dqu?faklZ^`4AcJM~ z_Qq^wX~`*>j9wo^E@@RIFv(!Y7{HUx*lSEgb4XovQFK%%eQ2E?ZmCyAX2Jm%|<}a0OQYeJ<@|O z9|Esc6z8#Tn@{CeAl4#H9wL9tDTW(~xeV;euON9C_yA+9M35DmSc%~Q#3P8)>KLns z9E>S%AyuFH)jP>ggxL=92HnbK$@;P*gZ_JJ?n?`Br9wkL!ckmE^xQe9Uwf1yCqqCU zn-NA&N@kINsA8AOA<9^?BTUn#77Tv_G2WuFbgk@0QACl=u*Qf?3l+jDU-m5aIf)m8 zqsvJ@Fs>=cW4G#gdQ2-Mc}^lc=OLpo#9#niW}4FY*lpSc2`mBmfNb_7qpP|j#Ad>K zwc>{zVU&w7tyjO<-v4Yh{cf$1iaY-32=~5obqv(WJXl%%MN*?A*Rg|WePiPnA{K4Q z^$pViua>B76X`gV7)H;57^RAW2af}|p*HptbGR2d#3-ydkK7WciTM1g(=DALtO?pu zLb7x)Iu-YXqLfmucEm!qLM=SLylFC#y`Kj2U36 zvVS-+1U(yK%TVYr1!8PNK1BK3QvbCFR_rUdEihX)9=^93ue|?idt$9x06=Z#naE?O z!XfC3z*9nc!oX(|5*JqDp>>o8sX`Xy@||5C|^dEId70_&HN}*7?7|D1s zOpY`s0F@prturRh+6Q(YF-3JD@fS_;G2Ik;h$OxlF*7i~&jSDSi{e0<;21%3d_YQ7 zAO!R8%_Q8p4DU&kMlz2ShxU6-fK!KAe58I5j1fgM-)-Hx^2pc(@j*H&Tpfjr?0tSQ zxQLf>Mx+e5-yS>&t zZfZGXDlUIHClbD+Q_R(i(9m6FZ!XiNtrve-N}AwWQ@f_y<1OQgDfi#r>{J_-aNpEK z$sgj$V@)`(Fb>a!crN+*s9?ki2tQNkr-_I@g6&)-ge9KDOKI(kN7@tGnT84IZbMyx zMxeW;$;EJo-sT(@61z-mu}h4|%$)L(U&)z065z@nbt3`Dkn3Efziz}QE8VGl+envU zA4|Yt)(yHq_REtlKc#}%bkOEYmPld<5nE5iPXv{>(3XKYCJ^Hqa}E+!xu)y+Czk-D z>F0$=vG|-hsc}*)zxoZY|9ZO0Ex+FhG25re_(FAew?Yx7O6|nOs*R4CL5U_J*XZO@ zE(D53U|%#Sb_KssyLsWy^KhDdqnWc!8J{E~#BHqHyO-_3)o+=eSE8hmuE3Uwl2p<=Qgwe?L)O=!ZFSLGZ0|jj|L*Sy3GQLP6V3qsp^mom60S8u`0qO?3uOSki185AxyPIcrPWmHn?trjp>wx1=?|~^ z7E41aF?)g*k=zQ*$}?=d)hnopjI+<-7CAAR9k-1aaJ7TCy76M-m1v$oyY8K2<{(12 z#q>g*o$@RP-aEbCTT7lHTPl(0=JF-7pjWwga%UZ0-QMwruDV(HvuF@Ml>&)wNLn3e zr1iHR*-=B?UR`mS8=%|F2Mtr#gh_bT0?y!}mTMi|Fm2Ic6{wCyATa9F?g*T~RIX+=)q#QO zI5bC0B9s#Yvy=7K{nqL__WhIHS5QtqxZm7}s+ScU_3RSACZW&Cg9*Jjr97tB8(2jw z@c9`^jILZ@mAN&@IH7Ikx#Tqbl|A?f3$u)OE_rXJl2U5YBu+zt_tsQCi-Sq1y9yn; zyBPwZq!>qxcTb+xm;Qm5NtJ)m!QMJJ5SDlU1N_#;v2)`%K=Q^2DR&}dL!kr)z`h7jK>p5L~E zq2a_OU-X9-umL>jn31nK+G)rzYAABMm#5eSa1NHF0v47w4Td9z_B7MqgQ_(7x;_h0 zvlLG`;Kca|)Tus2^y&mfhk`CP(Ib5TU8UNAL}QB0bEb*jYyjG%qNX4@d=D57^hrl{-ZRse(;qB^@8IAC&#hiC~8PgQiJF-8;Tf)HWrcmN(H$@2jmCZp#?4NB{^wT*g1SCPz%%2l+8$*a<@ z20R?6nitie~xY8-fREXpA8aQru#w$&+OWR)p@)#0dQc6C4e3G)laHH#`_xs z`QH6SK?WoNT-jV&Rj%WrsvNhQ4;;K`0uk321k!ym8`zz#F|eU=A<%vbP*yiwD*|Qo zaV1D-vmhvQscmP?4~$j5df*$U88lsgaP^GWA1pd!wyYd@dtzXmomUQwHVY2SmX!m4 z6$h5~&ExFKk^e(<7q`GCgdnl2v**@!+3}1lU0d0(YF{{nRe+M5T^ZBGsS8J@VpGRX zr7Hwt%7A*7mDzxa{HCO-6ma7igS(QQEysgSb5KYriJ~c!A2Yyy`{ENJwhYpL4=CV7 zR|0c$e9aGT-014TZ;ZFO!HvINJ@cF6Z+>v&N>>hkb3D%Wwd|0Ou%F$I+~1p!_F9mn zTSBUzg7oiimB9e9ehjj|zg8X?g!(Z^{@zY`U=ZoYAoq>Zz)GMWgVfha>Oy)Sht%a7 z_=-O8=Blnrgp5@s?BXVl-N;&3xN^krbjTjGb_$(E3&4UxXOa5D=e0?bW4rBHmF=x(PY?F+FZ2xuFpVATZ#{c`h>0@7Up>W4 z%_hosGrU+;;DJOQ(2vzzpF_~t( zngGVdI+s=L7BQPIZE6-?8;Y$mTkPR@rmHa*`l0Z zyQ}`p=ozpHE}`BCDRmPm6otu=uv`{yPK;Vy+STwdk{pfmb3;R*v-I&iQ?WcB6dWSq zA=@#$18BR=DfYeN{}>^)VBp_E@qftmwXsr)|694YavT5mQGO=k|I|+-%R}l;F1DS` z@3LUPE_&eLny*qY#|jG0<8#>aJPTZfiIxf$DwUk1eWol%1GU2F8OtQTPbF3_3EOu+ zI6xkO{i@4=*MpjQPDeLb{OFtLX|*Mm68DfvoAgMF4&trkDNe*Kv9zZ1+0jI<7s*ho z>{4^C*3rv)RWIfbF|QjlDHY0{*%gk4uf1CXtU8V*=!}Q73gL8ikecVuq4Gj>)r=+Z!1fO5MZf`s7)>Npn9VTD%ryZjhX_R# zuxZ(aJLc}8p3M!Hmjr*>sZKu&JOJP(rD^!rAgpk6AIysNCmoJ{|KAkbIahOC=m7`7xGj*BjN=fWz zrLG4w_Xv%-J($T)_~+%^$W)_|tRo{=!JA+(m`qiQoQ_{jXU4C>YXeIF9QMTUrLlR- zTv|F(9V=S#b;B(R9Lv-%y_y;u%263Yl@c6XBhJ~p6ve(--HB&p6xB}}o@o{1)MCeW z#Q->^3|MgBU`{28K~?z8qXR?56vt|n%nQ8|iA0Vji5`aXrvbrxiLHb~eM=NIGq)wK zL;pzS25!m#RVlrTBLe zY}S<}b8ObU8xN=vj3Shh~Yv!R!daWxK!R|vxx!$G|uzqSp3bHE8mq%2|{eLr!zE2pi z5#xKEWju-|g{$IIv`bOkz%_+WdREBdnpcbdiP+B~WSf@cpTrS+aB^&9S9A$X#+-%) z^I{@U<#Q_R7=yH<4no4fathWob0V}@Ya-uF`7o7Zmso;1sbDJ9(zv1peHNX7>_yDl zxUI>#)d{+k0x1_kr zx~N!|7ctLf#^mQhu?z$%@glf%YGCX>XvjnnUMavzyl=iAdBT-(IQAn^vQfDMN5fF@ znN*Ete9at>0GLgb1wgd*S$kqU#J8Vkq9l`eoS3&(QOEG(ykN8;c*@B|)|ZYvTkgQE zf=bDb_r#J(i}6#(XtrlbR^S7{r-Ek1L-aOAeeUpeMl%TN#+@%R6!n$9Ew= z@VR((W+tb!PZ&^^QLAU=*0^p-fvF93mI67z9=>Y_mwy?^v2SGHQc z+S+^Gq-g5Pk)z_^av!q$^1b!@Uyl8->Z;e?6^W9IZ|L@d1|@?T5}b&LrQFs&H7qt) zrBtDOd{PieoFHPCa}6_SjQwTD;s+L0m#|s{NhpGV_b?-YUCRE=-j!~*kriQn_fs?p z2c$ugvrGawEXO1U43p(J8MXnewk10vwq(@uWXyJW2!6s}9*ig9tNQMzTit3q4*NOa zGmG7Q`!03sR@JQ)_&6~}EZ1mg=qHjeF<&qeJo0dQAxROCWV>JipQm=zW?ewao7K7q z1%T)XS4!mukp?(-3Fku3%n-dSBQ2~i&phn&DAD5pTtK700c8s`19zHNC(iM*ylX~A zQ%7HxD2Unj{2$kEQZde(L-l@^!cNTc(JpP}JkS$2`Tb(zTPO+G0w|%WpVe=+NyYsn z;}n|%n)^A%mRt*9MhA-2wt#y#)J1ltU3k6c>InfwO9%ipP!8mLjK5>0SwTinr>>o$ zPwR-Qa(sNSoS%%dNrEv$w;$ZQ|JD8=9&Ai6W=l|B-yuX@T`1`YIVYSX*DdNi6=kJz z%}fCxVjtXAA@L!7HCy>@t7{BDMw_2F-&Um7dOYt%3agwsfn7Px)(|FTyfo(Z9_fA_ z+;?Bhnd z9Taf`lZY96NVMyPB8;ch*R+7$x0R$CpG8(VXhECvBZKh8xb{iOUC>W3HWWuW{t^@X z_}mm1+fsgKyFBY;8rGdA$PTd65?4}tr)rBOWnEXtI_G1)1?&C^G$S0qsKgtSeuI8} zmP3u&r5=Mw$P2o&PE-frYN{32T=s&}3-Lzh%K8`%QS2%z1#)O6Al6b2`?P*Q6l(V< zoVUaht|(^aUgZl*v{ZXi)mme5gEh8R*fBbhNOs2lZxR~B{7A9v9`aMcw%hW4Vr_NYWjusKnOz`zyE4kf#(U8QY+P)p^7CEN^ zs`j)fTpLkLbWfBE{d0Y|w1M_ekr?~`=9s{u z@=A3`HfL?Q4hNLkt)wrIoMOCx=gDiPoCpsjrsL+IjA-wqCm zv7F1Dt99h-NXHg*W^$#h9fHNW0KN3{K}{WpLVX1^avT#OgB`X-#BvwbfWdGJ=@2`% z`0pV`9vA+E(=tE?nzE)xa9Km;-lTB(XR@sgo~3lNmW~qoo=Uku#B0pd5ou>aPcjY z&O!_MxfB33+V8s=NyKFTEW)Oo1xZ=EeR$b6;}5bSyUYgjd2Hf4bQRA8y1<6(qvP*5 zIE`(Z$jcbbFW)^GN;H!SVJBu834p8_do%M$&#k^&Bl!vZ_j=1fBK3JSra3SjTldh*A zr~^S8I!Mzflr~f-xx?m|53Dk*H3>$t8f5aK)|_ud-)?9D?rk8!$%<%_)5Z}zJ(^^Y zY^2b|*%V-bj&}k_S408`%F{J;h=_38&EWA};|Cf10?sB#HoS2N6acXUDC))9Smr<4 zYlJUG$}Ce$%1@kh1S4JLePY_S>yZPSq7-bmYQKuz62B{MEu6#M$^_)7B9&n(5)}p0 zO+tCiC~@1V(rv#ku0eEQg-l%7HK(v90rnG@InEF%+7wPAb+(;~G8*JV>#z$j{>0hH z+k^9f%H3r!O+3$2pm!6|*%`D-;^}yx+wrwW)-l3?v?(8K7gXr%O_P|v|%gb zOSv4}#_3og>-->(YW!zdY3~ zjU1A5xJDyX$b|;F>dkEE*i!5*PHe&mb1t9a_F}RU$qyn-lw&;WN5s_3cW&G7e(n|D zG$Ir|0w&20R{;^jY+`)^30W#!$rAW*7^;zvEd8x+5H97EIfKGb{(7zYn8o2J1<<6t z2DM9o<}_FwjgsTOyEwK=cAC{+#`adH>`?229wJKgM4rQdZs8Lg9~fJ%7TuCVWQO-+S; zM}D;aE#7RDdDk^5Xk7#Pi-e4dyX?t*c;o<6$FHK|Z(zV`Ipw-Ms_2r;$g=Je^fJZC zxSe;2lZ<#S*4T_JI+lS&m0f^rMG zvvj}FDU&~f+@S^2Xegz1Kp$XC3O>{ll0w(5BQPwZ>}TFm=P%cL$~T29`d z#ux$4JZ@D`N;xg6r8RQ}qw9DKHvvqfb*v#|xpc<-f>U1~x=B>bAp#1qUk~&l2`kOP zS{Yj9@(S{5aUaT-LxXnQRh3P;EK!tBJVF!<;=kP+pud7Xq{nE_?wG-x)LBko-o95i z>LOtQbQR0v78+M3m8HpA(}~9sn7*D z%3G@u=jVssY$Nq_x3edVovG?T`%Nq?%Ntm!-Z4DSR#|q35A-#=t4=EvFxl|dvii!x z8vNjo!1G&3GnT>oXiSN>MV^Z?Uk@3n$9Tvm``?C3ZE97QDQ(pa zJav^I6A-;v`o&Ml*NalSpMH=~(yQ2aAU(IM~$9Rjr(Qw;z1vYYztgzlVs0@L#^-f!ed0+2X}8u{NJfT;|=; z1J_vXm$x6@dH7(xsQW$)79wXXw~JsBEU6`5H&6o9C1?*tF^EErdL}v1H6ASz1e}oM zN>Q8Vd?13Z*$C8~r+QSFyGt;WRbHz7RLbP;QcYn7O}0Cbs!fOrq;s{$C1!s{>=Am= z%UQQ?$y#EMIzdgG&HLY;oYqd8&cxUIOijIp-On+Sz@HUp+kRmeHW~7K9$3?+0f!2Z3%3 znUmZaF_J^p97zsWEq;&$;uyejjqhe5_e&VBvzl2;tf$(xq>x)%$g(pr9@Q%d04wZf z!CE4~oGbQGPK7|ypgzPBBq+pdXJPIPts7x>MAu^p9w}=szvci+3caDjauaJU2@vu@ zGNM3`pZim2c`W$hWC@xqVu@vWM@+*SRi%C^+O!l>i|Q}k$eqjGL?7P$@a{K5&A&<> z=~>Xx;gd#M%!poiRZxfN_?qnG>V@jmt5{s~7^aWOZ3@p%?H7c0 z2!C=bwJ9G>MXlV1>wcffe5>nb5gDaJx6K~4RBpL4I=An2{D`=sFRmcHl;K{fR!puz z6AFY0^2VjKAhRPIygO1I6s>z?yhN(dpQ1>D7(H7B7waPDH)wEY^t&0uVsKDuhH`O= zJcFyt(}rtQ(bJ72aPb4^C(Qv%vhi%GL=DLkxB`Ja^VRXrSx8T0ALJgFbpO7jkSIM7drYqS-47WK z1W*=>BP2YP>E8AVDHvZbj`Fom#H}9a#-`kzwKZA-a}b+K(V#H?Z3`bKxpvDu2oG$Z zN1q(M{`uInkWD{Vxu+WR6pfnFN@K<`a3$uxS3Zj3>Oege^P!_=My6HpLIa(uT(e%_ zm&sbcu=MLr`tyo2ai3>GX2eK6uz+4RH2?~IGm6*2U2y2U*cV6NsOixgW2jYh!wZ>l z>yQyU@o_EOoKeOl4=nxB&a+psLF+bwCREIY6C$M;P(cZJ3nONnq^}`& zZAoO%=)mq7v~LInJNtFxd+4}qcdRwxJzo1p9tXLleYGiE<%SO%ADb*ue({UtO*@0A zo)T9-Ue9)M2-D$}qPEXFLMl>VY=3ksPgTb{vG=M0BK~d{E@3$ph@Y zQ>p%=Yx=TE=8EAD?m3(r z09$_9?-N^O0r`0<8CRw1ea4x67v1I)H!+~8_S0-Y9u~wKKGaYuVIIW^ox3PcuxR9h z2FN4%xCE&ahB{R_53(E71x?{~fHP@(7b^OCK5MBok4(OF>?!0r!@27iyk49;?Q~;0 z2KLRosG~l-^&xnn%=nO|fu_#OWeAS38|e#RV3Yw>{cBo>g|!m4cypC00-Tha9HI3> zd^@B~F8k=Jaav@yJr*YrwF3-sDs5p5-a7$@k%AX~r2ROFC<=hh#aXzx+`*yf!7u+- z?elfor5<%Hszflr1aQhHiV4(nLj;GD9gs!tx@p1bwU%5RgN{kjH3)0dEv0PX0B_nG zv?Y6!!m@{yQq-^E3s ztxa92>rGPhsN&#lB}=Mt2eJZ5rO9cvn%HTORh6bCzKRZG!gRH>X&amvgo1@C@Je$b zJXjw0Q;Xm(IFQ#pP}I3Mb}w}etk3{9wh^3gW5p0FT;d0#MKa29VOYmOnYaFeV9>;1 zVp_|xEnP(0KyqAoNB|02*8~Y&DU>^~IFU&p zg;rYTmDcU0cKaWUvW6m;_XdL1Z*UZy*r02(1qgQ)>nxWbeAKY76)9O3_T9NvxG0-0^3AS1d$NIl~p-d4u`LWE#J?t@ps*MO>8c^s%j3}&x-#%Hq{+x8gKP&Jvtk~+=t zF8LJjz9s!b${q<#Ni^llC|Si=o$Z3fGE_OF<^6zp#-xmdvve|EQ&-P4u`=7XsL8R` zBt2A6>^nHJUa(Hv@F-8@>Up$JGoX~mt87CULTf%>Fa@LgmUBeQEu>5uDhWG=do`Wd|?z9U=w*yO6yOORe2T~IMA4V6lG%+~SfMLi{Xl`5wOYMdj`HGMEtM}7dK zxst|~#nMFN;wfXdVjc7r3%-F%SIcGV5ar2_PcO6hT<4^A4txpl?$K3em#z;7o{s~c zQgw34+eEtgFJ?!6Tq8rVI83EuT2RGDKgccmL~T8NqKp@=wYFHb8-|E<{Fpb+mzo-k zcZ9@-7@Bk$Dcp_5pwhycn6yCzo6<=~emBPU^TOm|LS6}nTzjHqGurZS1MNx4Yeu1_ z`&bI<>ze>-J{2Z^IA&y+VVWK8=qjm*d13)IrcDe``S+xs)Fa7DbrQ_bh=y&Et^Zroa1f2m36UQXLoii{p)MGMg3ZxHN4t-^F^_| zNHYBX&QoPXTLw=+kZS1aF8fXODzh-*sLy$y8s8?{9OIw^RO?{PGeC8-OtNH**^=g! zaUh8R`^T|3`?|Q|oQWy$sgri{{Fc1Xh=Y;TT^Ob)Y`}#gTZ#k);E6{x*HT`^^36S$ z{Cqfflqn{T{YR@9S%nTQWeiQlaI4&K+RpNSoJp~s308W6xAT>%%+47#tzc>~-OAJ( zaeiq!Cl@nYO1tcuiwb9uK|EsEr73ic`2iiS!>t5yIHJoDsC8MvAAmAlP!u$fz$sOn z)~_~xpcx8|7Kx+Po?hFtFN5ZYMh7CZc~L4vdL@CzZLRw}i%IyC8fB>jFdr@6Ub*NR zCu)Z!gq(`&WeBIHpB0ZJnby2EX#sjFsZ=tq5cQl~om02Mav7OqDN zMS=p16qy?Nfm9Gt4>TOqwGZ4d7J*Uy;JIpkjmio#_gCf)65p`YYaEqP2UdF6#|(C| zoP6+T<>I=`P%)iXOe%rtG7PXt!OOK=%VI`6SyFvCAhq4+BFiDVeui!12ny#;#mbWi z6t}GxqLUT(sqo00e#29d`v!vSF<5#ty`s)!f250EPR>r(G)y)5e3z9cYO_=5`ML(# z>DEhoEze9!aw1$95zYy$;(MlW19`T=dg*SL94q7Ciu;8_V5fm;J5qL{x}e!UBsTnq zqdQ)IwlH4j9*%2IB37rTIf}3Bg9oEKrrt8*MGpp@PaG}rFsD#DubF?zCa5#$n;H*Y zv_HRchH_>U+Ym~bw`%Dpd~9Y`l~L4Kmm`pb3hoA8W2+}8II7(4l+|gfvTXP>2ncW6 zl}=wT+}|MN#pwuSiPiuk)kQuY!DKnBbN+?NK*rBQcamPc)<`l!yZfqLP|vUh%gd${ zabtY<(mMxzkwzQnOEdQA0uZ1*5ySb*0uPCwzE%f>ocHC)F`gbx>Plrw?HG^Wofsm~ zsD9ZXZ5%{3Q!7k(c`_|1P!7sxgX}F8v-d|vAtf+@3HZ60b-7p|*Sxz#3QJtGR?n7I z(7Hcsz(RQi4Y%TcR&~;PdU{@;iK~F{w3-+?K7aN6d-B+^bI9|HA)!C9%R2Yu40=6n z;4P*^(856>CR5W8iYGb*P2^G&Y1^D!LFdS853Y)MB~glY`t6M@DiV97 zjcjTRDN_XGtyA_gtx4tA(mFr!)iWZfC6wVw5W5D00KhE(=MJ*y$`-iuv%y z8=tn!BvP74LP2vUd8(fxfx65Bbu(8?5&CY5UJ`Nc3Mq@v0TXdqw__L-At;0pxp^PZ*F`{&!7 zw zt~G_e5J_55ut%>4vk4^nkqitEZm>P15VkqeW~rmxczSex;NcK}$v9mw3Z?lC zMF%vK+{Jk{Ge;_eDSA0Na4YR4;7V73zKgi^npc?QQ6z4e!Km6*0uet9C?pxwdnOWs?@Aq?k{ii$k@7;gUtp9ZP zD-S=s_y77&|Bj#ApWiy1VPjtxw+qzMhtoKn86Y<15WUByCYXU=EtWM}y?pWH$HR|c zl$s;FZEwvrw#%J!3-%k{8{P5VQj+2!KG{f}=e z&5yH1HwdckA6Sek8XhUTPwsz&Pk+KrAOyKXUWNAO(*LO)WI~^?#S$Qt;O*PDqsk{b zLR#~!Q#Pu%KH7V{`|RcJdVL>TT$yqTyR<1Ik!cG~tGBKVK3S4XW3H+rkn;+l7u<6R z+zhBNGpsi@aNb?s+Id;-y}VU^d*|gIt{gwwd-c8NAHPChKib*fho{lr?n?`Rfuq@z zy;pnBpW(0Xl&G>;{$TIf6S?%rDFBmn@c2x!B+4qDBtA7Z*!YFZu5;%@hIRa=18^KB5)xM!Vo_nkx=TIfV8q?(YL1 zCX)8!AOCn%$(~5TjRAh-QOtC=pt$yUGcI|=EjEMKHhvk>Y#p6S9NqBE;l+vOE=gW~ z1;AjKP3b5PR_l{RXXUzH?tpFx(CtG3(X9w$69vTEOqLhaRm$?619dB=oW`)rG==Po zf0~Oo7KQmK45t^kX%PSt&$N&bKu?R9AD!B^^hoP3&=vw*`5Vta{pu$#cE54!3wLk% zU*FmL$o{%_tMEVPXXULg*t1*ZZ%d;HLm+Xz^~s&#*Q()h`STCH@EiO7cjeD|n#t&c zpY^wXc6aOCKUpj>-;3gRm~iq}@OitxiZGP3)#U8;dUDTpo^DJ|;Rgw0zVI7s^t(~T zHZS&fzk@G+Lubw34ZmP-(`szp<(EErwZDAw^DmXYuJW7Z7k*>k{BD@gGPnGAqshg5 zIrY*Q6YtQ?UG48X8kav)<=qU$FV$PW_-47ab^fK$|MW8kW_WWnv{r)a&w8Ky;^5~1 z?&t#p@0T_{ildl0=vU?NXuSo?c^D=sK)8nG*$q};8%T&6Z0~O4)tfnP$-e_+9S=Xl zndfhq>;HwvfBnz<$$#lC^M2(&-y#3qy?gJ@M*YwGckcdQ{`+_Qq^oue)wnw5piIe(8OV-#L#_d8752yl`b7 zxlms(o3Pxllg+sAvl#zUeRjKK#&Vd+t==5nrdB~UIWk6PQS>Tfx}sGkSg@lIy~sTA zbGE9y+ox9v=!-&C$u^C)_|&ZgFw-dvF;~`;w|EimyfmYaE1d@{owK&)hX~Lh>l_9D`V-yu5UpVoS*AYKQ=;foxiuy%&bJI4tuGRVo99 zrUAj2VkSYpYQmZEfy6#h7y7yd_{*2I@C$B+>V_z; zU-uHhpq48@28kIqif5|v>A^A9L3Av%5pLk0Srl>Cu1kel&NLDygZ|?^mBezE!^I?A zXN7yNkl=>pkbM}frM;9Hrr@QGMNEnCOpKHLFg(7QTHLg~IZfWMG-bD#L#+FyfNJGS z87kV&hH55+@)Dg+!>ykKk5B+)#;LfWa!})CO#TbdnWFvz$X$!-e>PnLM?5WYc`cAJ zGooMumMqHX&CMVh#(L_-j^K6g(c|cZ_d5nE=oYE(Qn#_}wdbg2Nv+sp@~=q!^#OfI zaR%-1<#f4REJxQs339zVj5ih30+IRTja%UJ$&`cv=eo|~pQxHO^ToMmgyzyc2`>j= zGZ6{DYTG!V6y83CwSB+r$>wj#7=u5A;zQ&UvpK6&DYq0FsK=J=&7t4;5D9Pmt}kn2 zHzJ3`snJ!53_=m1D(4h3e9KW^iF+=u!h6rIQJvLWFt*sg2S=xt0O8)4Fci-kV+{$3 z$07B)@;a58Zy+5xzcj|pF(5uF1{$JglbV7Rf;C!uKWgk{_H}g=$#Q6-+o<1#4R#?E zK3si%c|xu2!BM?DaI^^LQ)m)5r)yKR^1LrPT6rEm00@BDNzu2}jhNGS$G+_RV7c-S zJm6xPzAFKtBhR;V_l_}!@2J*>5wy*muT|>>#|grJ$c6GRIH16%AYYYM@jlZ53Q2fLrZ;C zb#pou@l<-~i3H9H`0F6P}zYI>Q8p=C!OJp}W^O;MJD%X$b7ZoQ?|F~3+mL^v@&TRWY5h(KV zRZ7O|5Jb)&vszQ2+A2QF*thojhK*wCL zJdPAcS(9d-E>31gnPr6z;H^n>xU}sN{`{H37RG#f2Hx=`rJS8bLY;7SLuKC)3X0RxOeyd=gJ44`#1djkL!PL zy8kJFcbzYNXfK9R-@+j9ckBP}-Me%5VN3si|KXhv|F8f5cl_LTFAo{O+gb4`acGy@ z3jN8{6xD}*V{A2*QMTQqv*|eGDE?tVg0U$&vDj*3iBp;bau#)5kMRtnp-o7)s2st1 zHY%HQo{^7b={*iVTOk?y@gu!cANWXRxodcjcp<9JrB%yZqS(_xDpX9abt+yfY2G-o zcx0$WU%uR2bR0<&MB8^auF=YxJ@>of#%r$SlZ!c3KJC{(?~O)V_y+=pD>dC9*d_*+ z*jjqd+T8=0<_dR?JR=6+#C@y#R3~U+YPGTJwJ8ms@V)C}YUK&d6OGYVDB%j>$>p|6 zr2|;Z3UZuDG>8~N4=HNr`!AnAOStTc5qB^eC8#~Qgj2=rs5PN0pg6f%}TUbH4j57;w>V7TeAc3E+<1%mgU35 zWyaaZ2p<1jn5_^NUr8K?9?{yOJlnBjgQxFmDLys4r|HP1L98ta&6PlW;bx}Rh<+c+ z(WfC*?b$k9^Qt)|8$}L@;)EjQ6Xv?{EjMgcAFKml6fVl&SVuH;^d(bdAc(@st?yuN zDx{g0sjgU@4)%ftOjWQMVFXwF03VB{S^3oJ+M>!-%W0t*hhXM zyz~$d;6V$HvYNTcY~ZT;s#c^2xn!BD zEs?aJTkH%qyCG3Vf4jIEI@hC*&o^4MM4j?n@|gjV@`U+u!E3dGj&AGg`jPcm%P7z~ zqPEI-np)o))zjEFS|K`Bz2$#kwfOqIM(r3$ui1Ai?Y0afByzUP8oW0fxh+}`#6fIU z<7Xd#^wF5XM6c=V=_LikhQxnlk4aq&vduCtnZ`l}`FP)^x!T>|f4+b4?D?yMmmj}) z@qGW)?vwGq7yvhze}IXAv07|=902r>FLt#zL^>Ym)?~V{Jsz-EF+Z9F zT@|nDsy5&AEZt^NTp@MX;xnW5%Y}{aUe1^-JdUyCNF`rguPEY5Uf$kLLEl`j7nAQd`_i2+*3*~mnJ zEI{hcU7<`=TCb%bh*MSIju)!)Z>=|MwhpO^^T@jH7IiO?R;@ zviLSKH7p7~@JiXW6T~A!1on_!}6n9QIOnSfqUAsT)so z?K`wF&{SSdZxi7$i+5tYVSBxS?rGmO}!LeostR! z(H^_lgqow{yah^?L_qgKJ-)If%uiOY?W^5}a}FRo9i5CKKiYft!<~=zkg;L!yU%uB zeZ0Rr=C)M9(*`Tb2at&8B>Lm|wAuYAQ|*jA#1uh>tg(($`0nnr-Tl4C{A)Z26apHY z6EkxQi~RENgXtwbRxq2EVE87;g(9eca87BhR85>O!S9ymaB`@607*i;juB9S4(yF< zRiWS7^Aq+gONpd?D*~wE`%6im?&|m^&RVh(JSSL7&u*<{>12k6u7gUxbIN^O`K{z4UqKL{YpNHmAIAr?$DxUdQ)QvlJ^dWF z&xMWBx{m3b#r0=d>&!HJ1G#d6LyShFJ}-#EA0N9@=EEXC1x}?(NvGh9^nrO)+5-q6 zbNSM|XMeI$hYC!`2)0wtp(s&-p9T@*jYSRQ2R9^w|ozDs$6e-{L{ZXLCO5kHl4>;#5S?!_hYaJ3dnF7lrHUsl|DPHt0toz-#a z^~TEUCTLX?rB<~($1m$efSkPZnc=a4LL#PdQ8NF-XWDR|z78btW$kRcY8T zW$I4OW)qV#CQRElMtthQ^Y0uy-F^Ce|0m-e9DvepQMVP1;ni9l)B*VFmH+AzzbDf7$uu;S+Fa4ozM zLlvau!`7%{a$6TFSoGo2Kh`yCRPN$0t`4}x@<$R;k^ot!vR#5S3|7#PZYa-LyD=%v zMY^lgA)Ja?p1_ZbS2M?9)7AvmtB$n6&LDkpxtn|k;N2$q@TeC)Y`lb9 zy+I@#!!zFtn2dduOd0EU8h2$VjUPYWefe@cux70$*Jzj> zF5i|z<{JqeU42wpLraM)e+!uEdmhwXdc%+r;y;TsoTR$*us(nC{QusV|8qY#_5U-? zl}T8`zas^}_5Obk;Puyz|G#_Z!~6gD|ND3R+|F5^w8b02`A$jpQeu5N5bV)+NI}sq z=pLSeT)MSM9aJ^z3xtBv+tN5r*FJe(Aq-O2Y_UuNx}=VQv%jFXp3Xm=p*j)1>a5nP zf@;B2o-RwC)!RF7I|Hs3%6kYRiGfsyWMeTT&ADSIsrWj{FUpo~9(=LBUUZ7oz|7~a zw^j-Udco*{hMAhEY>HG&r&{H3i!N8h){;U#Z~#6j0(o)x1U@qR7J38!n4kAjo=KuEE33$my+n&ynTxd?VlY*j5&Dgk)sqPa)NhHX-X6`I&cI+y`w(>%u;&b}@u2~+%hcqPeWZ!rPtx!ze2B3Aj@tCU{A&n*T|3C!fX z_IKco-!5|RX`A*WGhsGnb3wCkYk0y6lZdeKXCbSqK9enOIkg<=*@kJxICno<_+iMB zF`l~vpyHN8PdXjCwZ&_K17ovno@)Qm5FIP4m=>n8E1oQYD(z!nSglM3t}krh))iTf zwH_zr24538dBtEtKI>BPp(+e(yd(I&kv^|Y){+o zrhhY+JZ8f^lQS)>x-50yZk9vsCY-h7cO9yDzuI{Plj5sg{POLOcE`N+sB%bfG<6AM zrW%|EHTB^iAAIlm^B=q%d&vnu@gy>sLc~&~Yl-}Ch&IF6W|-RaJyXSThK-88lMr(v zbr*`a$tk@&R;&)QaCLT<@G~&#!DD4_v^Tj=Tv zKoCFj#v^aA#p&l&+zyMNMm8aY-K3xH{P^GpyFWSjwk@NVx#q(M5AHu4eziQbQNB@r z_3qd1mR{__JLG<71vzSCp;uSHPDJXODG@e13yX`=J0!;FWHJw%p86r!bB zrVj}DMeA&uh(g~C6t%|y(SA&J4IGmmWi~eha?)q17UL&tZi#bsasiPV_WElM7mdds zeDFNYsl_yH87d{CP}UFNYc@}zx^j7vJtv3Sv~Lz5nNGfM)N87ZlbwH<<^*eC4D5uju3oCv=*@N^Qp93BO+T)sbeWZ8L^4rPPc z%Vq zLaizZA3H*V4LHqrg)B?fNyS-D^*Kg1HlKwU=lM;LvMCqoK5H$f2vzs#SdyQP8CvC_ z6uOwsR(=_95Vv_wchff0QKMmO1nE-;O_lVex4pjiR>VfUq1e(?`dk@t^K!D4`*^W{ z8QX36r^eB|5)Ti6(6l^f)?SONBUu?VN_H|>rQKyRpsKEMmG#F?x0XwQonvro74bq{ zX4@kb0D0~nXK|FVcg(un`2yrvm`!-eT9=pJvzn11*@627jd6%#-{7<3{BHeXl2lw#Wu6tY0<{=~6E2mx|#---jD!Qn8HSFxz zi{rEKG;bMfk6Mys7M{sT43X68M8cNhV_3iw)=;7E1%&G5j>;^#B%Ap zbJ?1`=kk%)4IZqcaN=HL&K5h@F@pTz0X%G#*)qF%0Ni^9U8nEl6p3|CJ^h()=;C-I z>dmuB^H{W-qmLY==ZCiINDY$hzq$q?e05#j$CTl%E08Wv<6I_Mo|_G?6sfOp#mc9< zW^q?dS%{yf*f>6c{Jm|!_{B#%ufFqq|EW17pdi<)@u+!Q4tD{i_!J&s*nAHW^Kzx1 zOof5!83bj(&esE)AFsb*DH4J#5|!!Z%77F{k!)z~v=5u{kAjvL*qct|wr?)9o85h> zb_rm9aqd7E09XC$aFY>cOC=oD7)8qtN|9W-WKCII1OIbOF?u(BMoTjGc47>EB^Pl^ zx`fHh@rbU%DPzlaNcqAgYPagp6A)Ro;1u8qzMMRQT z@zPR+NuJ5dGMn2AaNde#foSFsZ=eFzq%s#}MIKNTT1-j0AO%Ha-sxa@4Q7=5o3$FH z^gmAy2#dr(^kIs-#6iHnowH&G)497^-Pj@{?n=?#SLQdh*b0YLvZ==u!ZYTNV$!lX+RH(((M5goG9=2Px7rU>ss^QMG~2`3?|VBR(dQqkIgFJ6si=@%jtEaOr zQRfKav`COq3015Wz~a7$D8)_L2w>38;JopmMSiqgyPj{OgD8W|YWjA|Teq5L7p8%a z&(L|7d>x>Q2%$sfx8!|CPVQ%G9`7RL@fJR@6wVCF*S6q0#LHb<%QRzL`VMd zbb`;nWeE0Dl+TuidT~qWpIXa=(6~RIPp5w8Jhz+iEPgf0;W1cj3Jo#aQnML-Go`!4TdXBy>1_nJ zOj#AznsFiWJ;XDUuyhlQ^uV!O70s)OCpF}^1h{Xo6^onpDebwln9FBQ>LlvQpIe%% znP>QqBT2*8RCrhdt!A^gi zd-D5K7Ru!`uCpgHY|Y||<#3Usk7o+7kN)AN40LLux`=rN-dX~2uyu0(rC|X{ir;`N zuuyxw?Q|jta#3O%bjWp5RAuLc!;2+o2J1%8NjxA*WAPqI*p}r9;r4_u;ZQ-*eRQ#C zSFF1TF_G=KV-F>>28Dgl!Tm^5VCSbK-e%4xnePPPAQ+BCbD~8l!N~&AG%)t)%Fvi` zGDe7yJ4BX203Zf6VvMhz9RBiIMb~m71=lU)#kav`CH5o>Dn%!ShXec)Bg}(W88JQi zaXM$m*B&c+fqJ5%&6|E5Y!gAhg?@US*ZeWHRxpUf1z;xB0WYA`hTxvOX6rf+7fGWepJj7O#f+r_6u(E8R}<{P(4$tkHJ(Zs`Oj?+nkKjN?3;erhB& zb)fqr#xnYfx`5TGz2cQk69Q%1Z=HJwq`N%4g#m7eflnJgsy_L6xe5b#9+8mOG=HUF z>1gpf4}HMU1yi`rlnv3oEpfJw)5%>}05iRsYNu`U4m#o8w13b|`J#nHv^}Ue0_Ntv z#t{7`tqRJx;ouYm{Yv!C)Wr$IZnA@mdA`p5qfFt7zDDK8oiB(mN*XoU^tZ@W1!3aR z&Frx>&P>zY>Z7VH!&4%a7fkU)!s;3vS8Cx^{KCnxheip3wP>Hxlf`G35POEWK4VUJ zrlnLtb+7B3vuaHhE#JB@;->yjt|u3;`NRf8HW=mxeTBvQd`%ThiQ?!2Dn+BdGNa{B zFoE~rY7M5Qhu4$A%2WDCY>dQDvJltc;8X zuT;>-`QdT(DV~0kM~|@7(+I%-6TW{s;d^hoSHw$92fcA$(&*8X;_URrrW2HWG%Pyk zD#^6YI(S^mlh1&xQdvyH6Wqq^7L^s6sz{R+kjB;*7c{CtTRD@mRStiPDqPAyI0rknDF)1e4WXcB~4s!9bh{w=Q_vVYwa3b2)8?YmqjY2NkoVB6?bSd#q+xSN%q-m6~K$rbz^Eb2~_YN=kCr!R+BKPb?^frqA&R8*^ zb~Pfj?te1U`T2A-1908&u_&2MFZ#_LUM5>NM)mPkIpUFS4%EB=&}i;92W$^P7w%OH zR|eWvGKw+H3I9mu`PcCe-f<(L?n0t2Mp8aWu*!W1f26K%37b9zS^LNZx=Ac`R))3- zYx79QrQJ@ z5en^n2uEWK&;cR`ET-T%DAC%{5bGzCsshy^%5AVoP3o16*r~C|g7KqRSlSx5<_f|* zqg8))#1e*cZZYtFgNumOzNB|VMLczfK|my1K4eKs$xc@`vOM4F=C>|%k#t3621Dh^ zUp6%O?Fc`J4^BEv80=+!bo=BQb;(dRK+8I<@pfIaO+u5Iyz8r zv?r5NZi`J?lL@}IW0j|_fP_$G%9;`Zrb^qk?&6`3}KITkIQ@ zHq*#k7a8#pny2PwyV7ySU8CL+EwFi7)mTx#5)->m(eK;H49f1N5Wg5P7JyYZr>Ezj ztvUjauW+1Iltp%z(4AH|*>Zo3SCV`gYpKZyefel_4voH3c^AxBVyP6j2vu8R<}Prl za+2)(pgkNEo#p_Iv+9?alw>`($&++yq7n$x9)R_nE&f@o4BPh<0*SJxG(2sUm!=Ed zK997x#%-a>Z&z%6%WX(1g<5|DL%MP8S-`ZoS56*13?93L14F*PRIA1v-cAiOn|RI7 z4sL);*{ptJryHdh9jZ_=%r&&>7~U>%aIUzB0Ws;+|2WCi3*9|ZVIhx6`u8xQz#;^= z2sJ8TZJI>37&t$@{1RsA4z`{nbLq+OQsTNii?ZCEG5l$YS>+;YdVrHTYACwYK|I9FY9YxfS1M%s1W?nd6FbM9na@Xe z-6QOr`wofRUq;_(9&jDLj%CP>d4+>?UgVF2#V%tj0P4)QNAQlGg^CB&sSkaYk0mR_ zq4cp}KsCD4vY3vcXPg7yMt?eaWbm>4=lY|KEzKv?=L`35txj`SI-*Sn|G5O>1V(Zl zpfrHraMBmjRxVp9o=VT1Po#7?>+mzKO?ihz4QN!2EWbN~VA=iowyz^@{L;PcgYzFG z(V1H_V{FDe-2n~5k}ufH3jPX!;ZiOuhPsm14y#F$ywBanYN^?F@CA~w`F}tDw*T*k z)#(YW9L(@2m97sCR3X_&7b#n5yyrP@(&BXwQ2DXwY$+Fxe-2OieEAUo1wb=$xl>r# zYl1wxyk=>x!WE9RP4RhOsx{x}`}hwEFrd&m07XE$zrZV`-tH#BYK;w7`xf@#R4ajN z$DNR5$)$r-`~3<_!k2l+j5rKTbNqqz%}G0vPotQpGZvaY1I@3VY=F(^^$$O zjv;md&d~gs2MX_v-Y#X?TrB$%#-5-cx49k;J;FUz0^X8tv@0kzLJdSEN+u zE>9^sb}fXZB(7;l9e*6h=nhLyjsc$1i(4m=i}zdF;S5(9rIu+#?ziMNX)q*_23akd z_~me$r-lu;fmtMC!{bfcGCRZSph$6GX$_5dZvtOSLL+ocXf`kNd4Us`FcjtHE-CJ0 zl&M#Y;j9M%W^%>M6c2n5no-Hpq0b+&$g*pwe6O@}A+luo(KYu%^&1$z=4 zR4S>9x!iW$RYI(@QnZNKxxJh)!AUBicb3=-#{g}x+`8W>jz8|&OgX`tovu@we(EPC zmrI!*$u1sG-(&^=oEXCWgUkW8oM*JwMej)WJc)G4K_m;Vbo&FtbEZ00=1*W-2yqe) zxX#*b~1tGW3h?BXh1&kt>&mEV$(#o^pVLPf5GxaKzY<`t@OK90^9N+r=~mlQgk z)k&qK{3x@mJ&PLVi<(Bpjl>~F**$y8JlGXfF2Vbk?wYnrwE}*;hE)j1Twb(KMfK*@ zi6aE>InjeKGqmr*r*}KEt?UUS70$u0{j(|a{Q@xO(?DB+`?k{1gfL`@ob1VU%ABm43e-gfCD#tEo+uWXUL!Dfq@Z@clRWwa}7 z(Ap%4|2hDw0xKfsLsCioCYPN<^N#KKgts*f97bUp5DjK@+q>tsY2OqW(%Kp~L@PHo zVeg_#-2{D0PQwl)`G44YV_Se%vHp^YFCy=wnK< zT3`&f409d71kj`s(jub#HSi31Y#T3dF`ot{Jb7f%3o{9S@Zb>4Lv&5q^EQl&ntoN@n)jKP8{VO9m3 zrK^KTA-y$bC0i5evP@4d*=aC18Mw16BZtmzj6L#SBmRhq$KG^Fokiab2Sh9FIrDO~ zlY@_44-_n-5k)&3A-eq_oJh>glt_T63KPz^O*Ze^puOWp6TPGa##RU~zCdcS!vz=W?P&5B8n z-k#5F;$`rwl00&29W8hcECqyR$(TN#UdR@~>wzmVPv*F^d)dl3UHTUoKg}V86vxQH z7!7C|XCL60S%G>Uda`FG zgR+#_SYJ3k+3DGw1H!0Mej~^zPxrCWbV&$ctK3X-Y4->5Ng}SvnbI@YPfml&kN!(} zhfi&Ty~H`e1f*4hk@I-1x|?UD+FaxeJ;@K&i|eo^7e&aSTQIIa$z9lVE2kkQq-jvM z{XP?sK**_>iwF9q=$wnd(}73_AyU7RVYk1%38&zX+Is1gcw+cSoSWBWA*xse5)YIw zq*$ZE?L2Yb?>DX}KmB_4_B3Tqh}$bAd{&790^KmZ#gpi`{?YsMWoKDRIG%#pYazTE zrxrLw?FR9>7U0&NF+_{2Q0G649D^u|t;xiLx?RN|6v0Qw(D6(0`%Vf!VQDj|zvlI7 z+aI{ddRJXzpzd6HOR;xer<`f%+*>ls7`u+S(kY19(WN6TRWy`4d1hY9?1EztpsB7J zhQ%hHnAl&aI)sPiQvpeSqvA~T(5&~-iOD>sWxyY}H@Z6ml#>I?+fcCF zgdEgtitWurso4`p4I{~^Ye!#!iSkVLBnHcNl%8W17K>d}DX+o21k!6xRkow7AgX^} zt9KlT@o1sEvZ4`_(OM_O7AU|rz;RF)?q zz~oFm<^^7t#AP3EE-r`>atJ76O4#rou@p3X1m9=XQk(Fq6%GS-C;64$i&9t6d$UxW z%Cw?%?usI2*9~X*;Y6ckIm`7hgheryNgFIpc*;(63Kci@S9I4>YjGSh2VYoP(N$wu zj<4flLOWapr7FF2(k7QOmmU$KDLjczd<0VD9@xW&!qJ; zfv?X0y?yicRz3gs_D{CAzRUmpulNc1zrhf71znWI)=3J!jH`wc60vZScna%~j8l$q zFbt*4tAAh;3Z>iejO7`?uu^$UEG9K6x?^c_&e#zoF4<2J1+*{G69QM{(K!z}^KLov zQg=vu9d$m5uc<~4kJJ3W|O5E<)+6nYiOBSA+Y85rN4VZoy(JLN`xZ^QzqLh>J3dMWWeq-|Fd$rTf!R+WX;=*^pl5bV(L z++4jPW;)rPY~);bqPScbE!p!0@~<`cvW!jrGW*Bh{+>PGw7k@^iU|g%MhGUU^3REU z_N4uni7MeZfe@jNwNxNaXov)k2Z_X-aF!M7?YLXRqS6&Oj(MLUsPgKq{4{{FF*W%8OE4kz3`B z>`UZ(q{2m72^Rh%mh)zc=olfC{p*`pg;_^|isZ$2j-$Nr|Hi6GHqVAys&%N7$%3fh z_p}E_VEDKwQI;D>C+765wTvKvXpFAQMJPfnPa_OsvUO0I#!db{of>w)Y{^y&L7!?z z&iVX8{Xh~Y8iuPnNyF);kk6e6#Rl*<-mhNG1Jyyy##uds4dx1raOYcPWgPrA*2aO{_eEmqifn~ zRG^)vJU9+8b5ruPGv+}JN@-K-q#7%J2>M&JY)FA7b9HE)(2#x)<4ZijWW}PD`;A)ucqXwTDuZkNIstenF-M5x;cGJL=pBX@mB}BEX9Zug zCTwOqWbP~BKE4DYo(Z1fNT<{pJ}oB~O0m?PH{`Z~BY5CMxp{smE1nG!?5DjwEan0U zYw}j*2821vO&hO>=75@fnljrLb%)M&V&9Mm<$_F7#)lL|PlO#xU5XV;mn0?)H;r#8 zzMd-&vGW!unoDJlipd9K;n^vYvoNWcu-7b>w0S1iC~~pFMZf_NPW0KB?qk1`?w8od zP3N{WX1wo=tL2;nSEMhfdt}*J7_1pljpCL-BdYl&Io*zBcqlZ{RBb_u(t5tPT4tt3 zSwzNb=9e@M;Zs$$t1;NtMxNcd)jb-kEIyq%&`7gK3ol*ZDY`G)%C&?hwOoELkZy~Q zp`pfNcXboaHvFkj#Iwd_99%0UxEO9bS-O5xpi zpmN?2HexMj!w>-nfNb8KH}Cpe!0M*|-u_ol51$NBQDU&a`}p3IM}vcY|K8x)-aVGB zexU{S@}G>TP|wnkg;!mWd2>sY|9 zyFb&WYJ5}~ga}D3sLyJyvMMgG*j>R}X=O!M>k_M2bWr7-)nv1^=rz!GPqjp6ofjBKV{<3T0xDY5EIKu|v!Eb6f(MjPM;#&4T}&Pfo3& zMJvv%@ccqvs944%E|5y)+i}JmbFy;FRx3C`64D%T)|7KY#p#4`p7amPEPBNbySM5~ z5BI+4AMQQs`&gay{AqvxVDI3t|G1}D>60ft6#jbh*q__6_^faqbeg}4JwH1z*Alha zJ$*Hqf?VF3@FDc5`R>E}^M=0`E<;y`Up=irfjaW=S$VYg@T>Ur-h=qCehNn7(3(ja z;VMK@f=4WaCzZ(%%|QvJnOtd7XkKO7DDD87OoSYME8P=|b)>F-+fd zYu~gPaaj2V{l3blE;@@ABU9;vqLyjVn%POm(s{h{47Owjw3kzUrxHf0TW2w{k{7&I zl5x)BmZt}Y(jBB)Vy@SWTRteJMfz0zK(b^SVTe+`hSXRf&=SYwg-vLq+E)=Affjz3hm5j19cM*4Os7i<=QhCGrk16)|)-h31dsE1e3#17_|6b+frRM1t9!tD&dYSdAJRbg7%= z=%nFW&Ze+OtNdP3yu{0g8Hc%OyUDrSLIe5&T(Vwc!P0W?9h32WEje$2NZR zfVT^3!K#pN(v8Zp;K8;QsA2gh*p*2_knbAyWm&-YILE)^<3-ehz8^?%@SV>J&oiTq z8TELba@~XMc;buExE3D0{ov7V&(O`BDsd+sfz;pl@x5cX??Og;jqaG4@|PCq*FW$t zcL0FrjkYC_ddeE?mp1sFGM?K{b$qrzpSEH~Pig$}I2xb=`RV*b_e6EL(zksfX!7P^ zukO#W${@vtVS4+A!S>PE!6PuhSHR@-vewVL(&}>=M2ok10ga!HE5gRlcw8vx^jcD8c|9IYp~Q53t}jnnFeAi@Fl}7+&=m4zt*2= zUH>2Vw|)uQa8JCeeSX&W|G9bR&h1ZY{y#Twf9L=6ulWi7KeYF0i5m*bgH=e6se9^@ zk5d|d(`6S;RqDrQihkY9zM5P(BeG~3+&}D2i4J67uxk~; zVF;5a0g+Mg=6G^rbavx3w-0W-Il6ITC->yshGv{3BO-o*u4CU(w}x@55-(jtV-sG@ zJqiVr!C4s;Ml2!z`T~J`5L!TL3*SxL` zH|>5rR9RhiSc9JZ)@r!=qNLiath2<71@*}*0f6+j?zM3|IdyXozLr~5a2QuAK4`Ek z`R{0&&gb2O-rin#v6+==VnTeXl=vi=xxvu_hZffcVr_Ybj95j_1L@E0%JBm73a~iW z^_G89Dag*-WoZ9qC{QlOkgMYV&yyZ7wMhOd)E(~WGwL9|7KApV6^Qui9IXNwXhv!)EGF*y_NEQ*a zUyZFs`~)Rqu2RUDIuZljxf7Q7M?Y$sN~Os>2^c~v6|ckvD(gI>I_HSqEz`;5t#7HV zThxY!UU>bxd$SAjym))&)Y(Sz2a0A3M9r!dXY}_#k9bB}HoMcfFwYLiLa)klM=70= z3qz_CK;g^Rvqi{ddgEl3n<( zqJHSEm9-LjuiQmvvI?-W@{g&p!%N;KV#KTn*ahTcbC>sfBdJ+gsp^yDEr!_l+Z3P%TtGSt9K`^QfM~KzlW-cv69Vk2XYBBnLmnFw? z;xU#b@t*AOe=_$!7kQ_x3c#qkDKLaWh5;~@{0XD=8{7+-*c z)HQ$cL!A;H3(7rQdDN&O2aop$v1{=8g~($j!8|G1K+KS$Typh# z=1-m-_MSXK4B_5GMqQ)En5jc&nbM9kRu6zhQ=B5_co=))gdx;1m=zM=grkfkrYD=n z#n;1*lFXi(3cje#UNtdlJ_N&hH(a0Ea?GtfhpA5qYs6#k;JM5_rIG5hVYV?BvD!+X z3`+KlX;WFAjCNSww&qVq>qlK`GglPu1<=~Od+s_e75bbZ=ASgXxd1YS-aBRYJIv|$ zv`lmIqaW>58A3frZYOg^#qir*L2uXpWV z^ZtM5)9qW^)%*X}o!hs5^4qUj2doOrA^1C6?;OB+sQ>HSm`B zglH6eFq?o2g>)J%d;iG+hmX7Lld97OWrZ5JJZqS;X2*o zwKe#(#yA*9TQb0)Em#JBl=~JNm^QrSRu5JolCI(vgwczmO>oy65MNJcaoe_E|>Hm70S<+{O_Nwiv|aD?O2v0NTz4*b*=(!f%U z7SL5Tr-#jI&mzwv>-X+G=(}wOt8J-+i`O<_t$j*jAi7@bD~;l|h61-lJjX|rco)9z z)SGDrxb^~fc&NOwE;fUFER9kTTj1J}^W+;JzZuO^9s8w_L2@dp8u_*RSini41gq1` z2zl(P0p_e`pw7+i{^6mj0ASfkA@0pNJ~tf|)qXp{bQWFBt2|*7IsaxV_z1}GpOOOJ z?%+>jD!cuI!PfTO!Tlb51Rv~f-@enCKgS<>{^{LYeBOJo+e5RPgQrg(ezo=K&D;8_ z)?aVlpVMLe)!p)CZH_&s+y_{-iEe+)NNO4W`g)Kp{@}It(qFuBcg0V7&Bo;p@$?Bz zJ%0s@7k=2-6h?!W&}JGv4o*jBuV$}fV~C@nF*(D)d}lz&e6zf<@Gy8aoq$oS0>h1D zeq9+PEC15QkkSUlbat-yE5QH#{j$s4w>gRz>PeLd@q zs~p33%DU{Zl|_bV?2w0>dck{~^ylD9)2&YS&GzlvTR-jiBk(_ebnDh#<7fU1_Pyzr zb9|)o2UC`VBlqqG`fbb8A|biT@Y1Zau!}eRB*y_5(M_#KFFknf{-13C{XUbo&ql{5 z@OGNd*eKUHxt?>{e2!oATvPYwx3{*9^H1^o{LOKZ`p^@79iHerJ}HU;{yWl#>P(OM zwa-01FZ*!phuE^Skns@T#FD!v1GqW>+{S8cowzS2Gw!AWhK+Nn53ED28Gl%F>*lSE zGJ~&}X+@F*`P0oUz_wVcrheLMFYZvHpuo26!%9w%0gC1u1igxC2?a6G<-U#+A(^C! zO#X0ldDo1nOjo7)h2^KLoV;&r2gvwkHy%A)ahD(5{fYoX4lM~hy*&- z?x4oII7engF9n~IM6#s&>+kRT#q9IldxPGS$6xH-A2P3)uV-%|I65i#@zo9V!0Ge$ z#^sKe#QI%yT!c&k?C=an1DTl++{zlShO(HM5L$4@FyvhYLDHZVKGMokrY!tDvcb+S z6UBQ6*Z=(4eFJzMX(xWzf9w=9IDF85Jb*)7{lgpivJZa) z*VB9bd-w=WsQUo9x8FZpg%xG*@x48I*RS#6 z^IcHP=MVdX&ylbZJ#d=e)*So2r&x}I!`=Nu8+3h=Gf|VUVk!EVDmnoTS||6u9Z=yj z4O+#0{qg-iIOMN2T8(lxw%e;dgdiI~4j--_5fiR`y6%T?@qE7#@u5Dta(C3`=pSEy zM9h(&UU!cC5dWr6*Z;8k-8DvxkX~bszk0g+>;58gJ|?YJ4)FMM1$#t%O+S3hwo7?V zEAuW6*8N!+c=pfXte8QQvLS9*^sNVIzh2KQ1M&tg7L`_}rZey`=}tdbk0 zj+JrQ?!yM05te{AIv||mGQ=3n zI_4Ts6dQSe9|1)|50`P`t4MoJ91L>(YG_j!p#t=*!*Jzm#=Tckct_f3+I6f?CiIyl z&zurM)Tb)jn5)EVoY`9+16^AjHA+XBijmPr91s}kG5}4*m{gIB{#)9%oouc&c5g?x z{UBF%r`$vLc$_2cbsn^1+6y6;c!+@EbnYDDsx86g8Guwi)76`L4 zGd{BELfYZ|cDAuk0Gr-^nr#TVO|Ng^<0`NR4(uZW%cd5yjHCl`p5O1+}nCoh@)IUurAMRAI_ z3e;@M54y;@OVKiihT%>tVq@dQu+%`^czX`*t3QQ1lxG0J|C(O50cNW=IZ?nsS)3I1 zV=_e@=UcU&6c^SKd5K#Yw*vW1r;?nXovPO`^O4wXB-E%yblq8fp2ZM=89i5#rhT~`|PqD^qpnzv-FN2fj~ zBz8K!0KJ|BOk%{4z3Th7?%v&28djcUPxm9@f*-9YNa&5`V&g_!C)aG(8GA&9gzSYj zy|PGk0S@E@gGdXn;)bIrkH zL&Z4nNVONxIsvrV3^5KlY8gXaq~;;iyI>}~QPVBBIh5Db;eE39JouKK;KHcsR=X0r#P6={z(lvOwx)DK^KRk^gSQb@H@;1NUUyCM;er=H3{+b|_blPGzj2&B?{L@K9rMy8^j zGyEBWaI*S^xrq$5JpPE0R@xuR{a4->Mq%9uDWLHrW)dXJDJoNKWiSwN947R|R@KY@ z@~g~dWj^PFa*)A#GpZ!GMv5nb;H{Y*i&GJ6_t{k^S5CbOMg@p#0g&*pHULfxE5;vS zfNR0977`#W&z3=P=)%_+DaYOxVu?np`VU z@si61zr8r4$B~DhWj{I}tka+QH6sv8+1yi1L`5lso19-k=zh zvNSa*C}hmM?2_;3qRZeQuu4{<)nM^v0Z+wWn?Y#s^l*Q;dKhQ&97XBaxmczSUT={7 z{_Z`Fq>VZ%ghtORk>rLGW%-V7#xDCR5DOmGNnkr2zZo%GZm188-r~2+HEV|FcT71e z(c`W5T9D=wglI7xiT5yXR|73}t|FY44)!b78u}u@%wp`0=#aWy;*a!Xx+O)nCJMlU zX_{V7c*vKAU() zBv$#vpG=G($Pk2&ba0GHk(6{z;`Q4InVrda1a^{Wl*zbL`o~)2J=y{JNI#V3Vx5UY z+#nR3ZnZ5Ub5QmrJx)yelby#-W&+v~H3Dea&3irY^Me!spgo>Ou|t(`F8h2h5jD z8Wy~XEDdmnTUBn#$Z4-`K;1xoYI89^s*{n5s`GBjtCLP>`zT#m!zDAZSne6#24c2^{DgcG73SaYm4Tvbj2{sTH_o^*P0@-ic?|*0+IDQw%N_Isl0n?O{i0 zH_!5IQRO5$mUa4xEdZfGrB5{jHI)kCr8i-yDHT*2cprMmF#cCHJY%-8C{85Z~0`MgnV-~z`^4f49D>I|2J>__K1Z zkeHVz_@IiUfVs&-0-sY* z4IeO2-@HWuqNhA#u_?5YKHWg^@~>rQBQ6AavC7WkGovQusqk{@;M;K|-xZ&H_K6)4 zpR_*_XlO*d3dG7MZ$-JLY0MoKG&kLSkx9##om`Bl6$LHkwzb@}XLK)EL7-HG=ao~J zUs)d|F?z0|u{&maYo_w^6=-*uw#BV>pjTm+k@e${_<=E!J3x@9&fVF7+h#l}_Ti zS|c6>KdfT*JU5N!*DjcFH7J5etsfefw}MwAU-R)x>F32CzDR`KDaDzcR$Pm#*TGPJ zO$53)vN(6@z%Z{503cg`A({bDokveGJf4BOGhkf?G7U~%i#`4-KPxLDuVKcNEi;Im z>M(gm)Qh{AtX;LKQ%+A?a8d6cko0GYhaD=({|Y3IAlK(AsWv%h8rswyWs7`P^C+Qp z(LQW|4txZskS(4vowP)11YHu#f^$If=T}Qcq<}Gb{wq~d({Y|WCMHvfG}N577K9px z-!Juyc{RycFh%*FRnEufAYh76=C8%f8P2086N@UkR8=)k{LFopsw9~lWv7eE(lGph zp;0X_Fu-Bdk$67XM~pQNIH6>Svd-55MDBxuzY zVc{Gtmv$FvlZIM8OY0k`+;urzszssQ7p!JO-ViTnCuZ>HvcHbs7yoL;@FYZnirq4T zlnd09HE79DWV`4j36tOoiU2KlnWB8sI(7#WkOifrda&7- z7D4dk{@!7q+C;|@w&=ywxPb|L9cL)#oL$SOW?jBKy(nI*fSQfuz)}+laYpc9wdjv= z*{Orrau8W{c6vz|HBQi@E6ZJlx>efZ(c&s<6fYO_cKLgf1eXvq@_G)KJ(RwxB1z!RW#| z0(nMi>68?6>eX202T7}W@_0g2nUYbnII*nRo*DfmQkdFFDniO++FSbR#-gB?Es80N>`mJpNtyVv4#SOd{2SES<;4Pp$yF9Pj>_pcKDb}${=}H< z_yn+#=&=YA?5a11s61?)Ar^ZFd6q`TId97Raeh2_S} zF>p|_kL&Rgfj>@vUYD2D8A$|Yk&9@Q{{$|QIKgs$64^;UD^Jsnc-#nQao+7tsi&bp z7e-Qwx0db)iTuuD!a8xRkIIW$_WGK<=*x0?s=c1_wgHtX=w^M5+-@a1O&~R*vLq@$ z?qxy`m(*NHl7t9Z%tZv1A7a637Y@MvOw|bSn>~9Lsq3h--G*3KKwBq+*@OmReABFO zuCy}c=hBw!Q1(AD(_7wKw&sb7xyBb*tZJKd$z_ zhL(46{BC_>co>G zQTy&{e&(pDL+g{kbU2o_DW;`ci{E9=bY@c0X&|t6w)=E1o4HNR)H`G_VCl-E)G7hf z@gU%JW;bw#sInqIpq{>IbYLLedf|H0)E_1!7ap_k@dk=`N1it&esbe1=dL*NBh!v^ znlc%_qgrLNv3iRGwQQix>#)BN-6$WT@T^1S7FvSYTuiI+LN8$md~LdZX*6^)l7B2} zo8j0r_K>SFFJ-TD&?y!1htOC zK1L8DXEf;V?xT3^z1_oI+wmMt*D?unCoOu;(N?3F{ELDI!6F1u_hc_|w!E(J_6=yt z*h9-*66l$oYcFRDiQq7m$+Y&kbln`G!A84Xn(dBKRcW3c;+MlZY(wLQ7*0m>j^8QP zkpsndE7z!^6&NPbM<+@}ZBoUN*j`}6{OH&xuw0Pj{#$3yb=GGgS@r|=Ro_&Ldr5m@ zT^bT2dIe)Q?IlLcaT=?bhM0GmR)8?Ewa{9gQETm++|xji@%vo=9)Iu=uVHU)wj4ySbv z8atTQZ5t0I0#?PR4jApgHLzmPud!G3`sWEUKowSZfTV4Q&kiu1U-f$k3ScK1uO_7Y zuQ7i17K8QbXK{ozgx`dMK&3+A zkJa%t1>OikSAG09OSz|OOSnelG({#)jyjIpNw^EHR{WA;W>DXLTV;>F`&nN92?vQO zQU;}B=RJ!)ty}+T>*n^It*u)9r(3u0-1)Bl)4$@!3I}q%rO5NG$PCK8>E-!sLSy2W z?qgcS7bxl;{!)eLbJGc;rt2}(I{w0I7mtsX65A!}R3Rq!khBa6Jw{emzhPhr<91-M zIlZuxb_e#1Uym-$p)-HQ;!mi`pBH8-!EXnb$o^x-ve?%pUhEdj-pEpFWfst#4&4nT zHg0n;#yj|9s#8Y@H}yZQ&wytbnzU^{cy!Eg9=QwsI`82IeTrV6sSbMBQ<5| zyKKn^i#B?b3=qn%(}@QijHafA_8P=`S)|g$tR4@L1jjsk=lx#K2JM|f{^@vZAL|&~ z)P`6Lh5ab`=NQL_EyEm35k;NEi7%=ZpBacjXJw$z(sjBU{{-z%O_!O6Sm}f;bmsjJ zd%dCZ4j4EgY16b)nOUFuphR`HQKkd86i3Iyw!QL>hr9bjo*tnritFwy{GKyG9;cR!m;YB|6FAp1u2oovf59U-DC&bej4K6V0 z+?EYpzhM|>IaeU~5{Ldbup_&Xz8R-R4;VAmfU!|iL-IOTECK6ZJlwtS6@K?t+7V`9ej3DO_35Zv@nrUdv7^dy8^HHkOy3 z|Czdw<2b{vJUSWvkW=k8jSpz3df~*RE2Iu)vysDcB%M{{pL=sOEb`r4QN;)qmx-?l z-5AYKs-0@K$9F}Bf6|~tobTaY%Ok7#e2@?De4{kIL+-q5iabMtqzPf8`)OAi&=C}t-(vZeLA5%Fu|i+o|Tz-z*9pe^83riW~! zZ1X+BfAFl=L%o=`w0Z%)FL0WZ%*IV){_c#RMm3;Rdjj@g z^;Yf3s8HkwLj#H816PL7psN+ju}F1pC(~DHZeL7UQ=@skXkoAIi8#a1(>?Pvo?Hq| zv6mCRa`enmP>K5v#QPEuZAddrPP*a-RFzGo9SQ<`Cy4K02<(X=v0ltEI`5Xm>O_1@zFwN`|4B7M$KIHt~lzL4Z`=hc_Xti8$WYjMvq8`p6y?`q6S!KPk z#5=T=WX~MCwlA}xcFr>^MP>zaxM0Q$88lzsJY+?@yMeP{7+e{?)B5`}b~c z|K>04-h{+1BlUe!_lH zVJYjM`RKsXRPJFu1vW>%Uww5bQ>()$?@a zJe(66uPIOPE7oGA<=eU;yPUk-us_;4yHVJ3g_{i^g|#Fc^aYG&7Vfo3Fhl4 z_X>l1D8RKpc=EKr@1;py02+FSJzJUxT{&TS4I6S)aNLGW^kpQa4HGgvr(UVSt#mFO z?qK}2bv>!R#gKdv)xBsWO=voCea_10xUu)VjkJ+w1!V1+6X}~)jNO5z4r)iY?WrVJ zmZvfyd(Wv1Y(^3T9??zOCL)j7oMtw&uc&P->EGyCtI1sCkg&acI8HK^nhNRTRNbgp z2y{IQ&8TN;2GcUT;;bP;ftM=HDE9K4_78zQI?+HYF9U4NSPSwbX=FBbPrgQm9Q4yq zyYHZM;%+;+KsVR>yq9hCNaLS7i|U!R0R6PhaI6~PwkJ+lOw9Ga_>CE2BHs#WAi!>* zPsUl(_8Z7CZy+LS>vJ&Qxh0y4YurOdh}lZV8+j|8&3FWU{_sif*V=FVgGGHe7E~x5 z9(bR9tM?mxo}@s0iQn;wgbu91;PDd(Zujm%zg-ph;k`I^C$JZ3k|yLIJb8qoeh+u| zyy$iHoAKANal8xQm7%fPoV2&>laM@j>BWIBnt5v?bk4Y$3)Ze4CB>5X*yq3V{$a1b zojb^0&<20N?V~(#*S~w<@%3*Q*V8!u2izX=Y#q(w^<-3$CRlaaoJ}Owe3Jh_+W}MM zOnosvY`RAyd}X>;XoA3k3K{8844B1N3LM2H`kzpUl5U7c#y4c~smc@x-c&%1UQ zj84+>RxhAEIB{6H$b}IUr>E^15SSlLH-XlN+yqWW-`xb(ya{}mSRDm@_Ok3U!46j3 zCe)h3rWM8ca_{iLVDI_IzfM&6|Gm+7mx1eC2JZF0yA1q`E(0RXbiiJ98#o#L7u^N` zQB|C@#XdlGBP9{yXUe-Hb4P}cWf3TlC%A5S3yb@&gz z9)+XiWSM||rJZMqJz+9kDW}s>)6%X090+-!-MaiaGe1(7fDt>hsOuM+3QV&cy>yti$;Jv>&lLK(F^WX zW{jrW36b1<@pze!G42NGUM{)ZU36e&&7)!1X2bSogr@nbKr%oH2Mo{cro<<~U2+lOXo|EL~~t_ey$dZjDh3WZN3 zbEE*G@CE+G(LRiIJ_9 z=*-%RVo!(`63!WuLFg$B-Yc{>_3;lL>~^$zyR>VlaJgEYv0NX4t_SFvO*Oma zYKUfXX{eFTy4Ww=TQU1#{=-i8!z26W_=nkFo0{h!&-~O!f1y#5&tudt#HLg-RK!W+ zEdR?sjsIltTDKZ0g0O$(DdHV8$pWtTE3&M2@$BMV4-6q-G!RZExZ=@sd=UNXgZU(W zRo{H+n#oKEySQHY5t5m{R99D5S5;S4Z<4-53sWkuh1UwrD56)UfLiN|%lk8c)#!LY zOVrW)*FCDB?Bt$doz=)99Zn%Go?YxE2zS3w_R5s7#fLewXqw&sq<^vXx!RYNn9;o! z(4oM_=CMO^+y4qL)MnxRv)WSfE#J@FAKrb-*W8nQ|IoeD>G8hiKIi_upV2EmeA3^( z-wpsiK*7K5J#%2sGWWG#U-!?ay;U!}>ffLB+L?cU!TVf$&Y{TsNv|E@yYBDl>3*1M zAFg|Q{(Oxd`MiL$?8~mfYh6TC%dk)WRifaJNgoeY*fr{Y@*rdRThHf6F9*p=4$FJ(D!cLs&99$ajU+L z*5?%%#H_V{tvPHu!iB6`R`9;rwn|W~v@T<^5}dULtNMt^t2JLWrtc{&IOiZTBdeHs zVbt5EQXZXH_DbziFZ)H^y&)LPD-WNH(DB2sKKZ0&Y)3b(o#3#iVez;YbjTL<-cCr+ zWVoxK@}9M=*O#wZr?1Wv?^O$vRB(MX7?BW2x~U(=!Oj=|<-ov7U#zWCBwua)RFNj% zEKl0MOrA`@)L@eTB#{+A?@=UEAC<*&A)wXiIEXY+FYEx}3kfZ@iWf}nRa(*FZwH~ zaAQV>DzT>NEO^lJVZ8KiPi7&T;^m5s2oj5qc}QdAA?8)t+1$BhK2aTbN`QWl9sGU~|aJguiXxUVj%aZCU(OS)l zXlbKaME<)+&t7Y4(5t;Q3$4x=YFGE$i+tYq8m*r$9FC!Qc08-ez`VMijKizf{qq_B ze74jVlczlIpD!?xN`R}k03D}Y}{+aIH ziOj21TC?i^yrY&W$zA^VViv?*@rwwln8-a&2AWq(7fwb3bFMI#puE_{nSXUWR-E<2 zk9Kx%Z@jm2xu&oKrei7mxYtuDA09=QWyngF{(j}&(S?V1iL7Q+A+}`eQpmcZMePVe zGgpb9KZ%^){@~{J<(e`vW=c-><4VZM8Zva9LK?mhTX(UsTsrAMP)aVp!`x%MQKJe| zu6>up@OU8_-8-SPp{w4zf}AFGtKL9b*;#_D%I&TOmzM~p$eW@mO6aRCAvUt;v9nol z@9HvyMtg2P@S}-48BK)Yx|`VYyz6e-N-%~FD{A`Y`$0`#(2i$q7Lg=>f)Q_L)?`8J z0Uyia5r~BbVT=5oXRer&04ydLYxIAehx{~)i|G4NuhijBt*XB13gzaSf3ExI)Bbtg zKcDf>XZ`cJcC7cjKYPJHH~jMr|J?M?8~(ZFpEp}S%>n9Uggj1nt8v?B0;{TVZ}{gM zbGx^AZ`$ho_PQBBwtPI-y{k8TgwHO4TWuhqlw zhPU$U8>z)DN6Fd^f6njE(bp}(BS_bu_ud_4H{S5?H@%)i_`G`BTWeE zX~a7A7l8^uKltdq_iBQm6{o&h_l}+}GjAu^QF^uZ?3GxqE)KztmwRck{mT^m(v(OR zO9Z#ldMe##_wL7+kF4N zi*uK-DkxI((n1qZyV0=G)KYNfmwd8-63a#;T_91C%TJ;AUl)0aS6TD4cIEkn?Ic1k zds{A6J5Y2xE~E?UDaiOr652M&1Q)KLIv#frTEMUQ&IB%Z1{C~>!Nd@1E+rQo^k?Lv zdk~C#bpK07|3K-8?LO_FTm0_uY~4tM-C&mdXZ-uk1i>2{UUI91B)r!QUVmOSG;7bl zkTTfcA-pwRyy|5A6+wf_+al`vt_s=j5n;iY7!?BjIx%C2X1Go>;*Zq~S4*LH^ z3G3e|R9!k3&)-z2DvJhsu=4lM(6dpqCC-=N4*LH~aDNX8PE+;R&?K;SF;{mh%^mdr zmeQOVD(Bvzx}ZTadC@v-g)h=+HW=5N6VGyX5O4JkyfpZ?(Z3_)OE%TDE&b-FWH`S6;H$W521f4R2GgfZ@y-Qa}B0`xbLB zh;TINO@8pvRck9jr`HF9v#t$}W|t+{ki6+@@-O1Oyi$Ol#WE_U&`$S(h_Y7{b|nd@ z+!sO%5rP@o-2L#QH{N@D)1N9kz_LJE`RYE2a%oaD*MDig!aqTh1F#z8JxfTJzc^{m zmUNl5yNGyI-&K^koa}V%lJ(&aZf?B)_Isb%Y59k{x7Jn`63X7-|`bBrL7ysoAX^$TO1pm#ydGr5%aWnb@_xQKE zwmNtIpIfWWKYl#(K#`dOdQx-qiTUye!`zX$c>@$JzMXgVCK6 z6#8=ML2Vv+)`1CDdV0s>?s9zZ^t#6fm4XN6;WF+V*xmBxD$_YSgC5sd&h9xlqMEZn z$?;*(28lM0?beILcvsXov)hCT+3!#8SbB+U z7M*UqOYy|Of!V}DUkv_EZDCUaFZbBEGr%}D6qt1rDl$5rCD(WZDYK%sTkmgdw$l}~ zc+j8px+|C@#I$EdA8ZfSs?0)Z0m-lm=*U8-asQ`f`-oliyGLD{&(QpfcBy>FuG4*F z?Yp(^Gj0C9eY;HyoLv_QBQ42PK9QB~&|SDl6W52S{qGV+hfyA?deKn zevYgcyuuw8K;Qv`No$wO#OD!~TaK?Z?}cSnYp_?l28%mf5O%JmokjrE=qk;;$Vk%2 z;fDRAtao1SbOGfuR)C&0|@1p9DsbXM4N zP0&V^x0GDI?0&ts!fR+#qX@f8X@4{X`R%>`#?}oCVE6m) zzu(>5^H9_=-b7Lu3=x{5IZPcejc%A12H}^RMBK>yMty3Bn6nc!@m-a;u@u=$4l=%z zjjQi5N>Xvc;$d}6C_~PGx3Ik!qn(A3RN&;)|86uqBd^4wpHE~A(S7pC9;^jO0JCh< zHv!wLfSJ$PD)SYENM~oBe^)slD7@xfG{1wi9XX=h@K%q}+qjS0zKR9c(6J-9sb@2< zx4kcPaR@PW9~;h-Pqv#H6vAP{BBHGv!Qmu;hceqkHk2Q?Jfc&tD>k6*(+sJJ(pXY2 z&5MOG%{kYUFP$8h>T2QSee~>}0V7g6&npM$*amshn2Zn=`?>XCj5|B> z!aNll0QD0TC)c?H$WD3oVs|O+=Q>Cl9H0hRFa|`wCAS<_K;#(4B~TFex*59FN+v##ZR(CEl{zuM7ot@L6z+DYZr8Lp7=91r=Upv}u1kx9CW>?fr%&bPrv)UQX$A&Tcl&=VA zfL;uQ$<5FQf^To7n2TJp*t7|o+|e0$D00N0V*hv_8X3Lq_XkIi3-$``?X3YBNB#0} z_WHfkUCi8f{d}+OzxKQ+z8&P5YUh@RJRj9_wAN&1y%NKToJnn%1eWzo)iJ+H#G&w~ zt?CwcE+bHEL0{l!SEPg6r*_Ib*-^=T@In!H0On|k;JRv6``}lI*sU^qjbOTy#^JSH ztQbrnN1SU1v!$y2lKULPA<#sUtS6*%0C!@PN{mJrQH6x-7?lJjp(mea9Q(p3;?w}J z^Vs7-!HB?zGEsJuMd( ze`o2rxHN$Aslow(;O=qiOX5PHH!=j0`KHNSkh1JldNk(dIB+aDvq&SGo#V*}bQm)f zX01)hbz{mPgw5K<8F;#}ULtHomh%pUDMM>v{&Du(KlyGj9-TO)lQEEUu}M>J#s?i+ zz2^i>xNz25tVp7zvWr!P8BPxNVALdSkUJfonV3$IKo#pGg0k+Emj(r_=+L^X`><0i zWbRkCH4Lcz(Qkno&wg%-pc3b8)KWEu{oeFf_c#L+|DFUKh8V>li2XKe`-2nVBWWsx z{@Wr|P|gig&a@ft4^&XqvC}E;=igQcI|~~pKRzRH7Uy*vRXtqwlogTg)=Cuv932+NSFKOHd4ijb zHE?>yxMf3oZOj8%o_Ldez%i{on_D*FKTCK>h)!BiLIT>Ws+-XC^1*%qN@3E_0wKvK zyFiUDL_up_5hifD#?_h>reG|{F`xaY76~>(34KdG+4x|GTk#zq>z;pyQr*LOZa-(~ zzU%a)FMGh&Kt#4&DZrJ)H7UFXb@#ic%|J zYG9Q>Z0bD;7dABazTDp3-2UL^+i&g}B+@RgNz05#V;a!DXI-;-ug9(t1Mj9a@2JB$ zJ+kNtD59bf`+duHY3^AQySj!r&Ac+$o9|Tz+4+m&*G6}= zJ7`JeJk@tTa?l45!HPXR=T@kqrIjcC6S+#Mt~77XsuC8K1>+>uErcRR5LydctE7U9 zl}+*Xipe2?xj&-&7gJFc7MlwfmShD@OHG-I_8{AklUasE(X+vEiBP9xdct`$h;PRC z@`N#LDW>O-nut*~!di|F!BYM&T5(0L?9G~Y_=hgOM*^>lT5&P5DuMA8=-=$NC)u&7 zwx*L%2uV=yX*~t@LesIf_V%n)DaNFdn*DA~Q)xDIwp1__<{nLKpKH`sGj zD!fyoN#4N0i(GS(45SrgARP};HK>Tcu@O2hj&r#r(^JU!d`cZ_cV0!PEAxOVVCNIp zW&!79)U)kiE}Ma}U@qI>MOa6Hx{{WL`QREzW^8=Bn48;qf!`iR!^wWyCMwDKEL?zCT{lZ9*L!AJYfF_yC`s4UR?EG!7=w4`4)CXHIEN}hRK`^jY*w=9ZlvK3BoDsWDixJ8u=yVEQP76<6+gyn z?Mlh_w?Ei<6Ib%z`V57iVc|^!4!_o3(2=_3As>%@k!riNXJ{Z%I!}Z&vXU|C4)`GI zeFLS8%Ojh})a4!nn3G#R4;hBS5?078SOb|=LKMN!U0-{qcXRpem3^Uok+e8Ub(`kl8xzsGh51Vob49CDg07(Qi}t6k*A zzVX)Xo42+<`p_}9Ql7$_W(MtdP#05BYJ|X3t3C52ij9g(hZlF~dXI3*!hY@0gD2xU zvQEAUNgyPMRRSaS$qcf{4$!lCnHU1iI_M&BRSAR|=W{VS#zfz|iBl7R2d0#cR4rUI zO^Q#G1PO*4W+w}5W>ekr9(FSX9n9azP+-wLYzoipCT1suzKLPN0^IC%wle{u9@7?s z50@QF)>VOGT=PTr)F1P}!YUlY7>0?Af>o5Y5$y!G!DcA(S*8{^a~T>Qt&Pr-@dT6< zOl_xv?y?N8q|BFLWeCZh_^jM~g22VACmi=)wxFJ2<^J28YVZZTPw0u}gTi`PS_g&I zJc;cmu#Hhdh-y78>!Y(1%I}8V*&}!N2apD!gWE4^+0Y`Exi*eo{Se39Gtd=qfn#Ei zJ;+V+(4(r?hU;Kh9noO4fw+zLs!Js5p?;%KhXSw3S2{`RSa3ufZQXHKcecYfK6?AT zowq+|?sC4@h7a7QtYH`^<3vkdq5B*7Q}7Ok>GVQi(I zDPv5rW3sw&`Idoh$U5jM)IWuEWelp`QA0LO4`2o?EAx+4u&h)a@;X5Oi@ zUM5~H^Qv|;Nv$}s^MbQMud%r}<`wd>3O|fIf`hMv-gysq0-rJ}r6XFJwB(X|POuiy zVw0H*j>-q4-x&=!V6Lnz#{>~`x&*KSW~6c!0+bB8)Rpq}Wlm#xnW_?5UZg=af&kie=*={Ofe|7uRyTfy5|(N1+?q zG1}6N18F#1ZX_VGkU1c^7DWv@HXMlprApoe97UuWdBUOO)WCE5>=>@qhLA{`bJ-!c z^ozIC7MW4Ibs?`W-V08NM^4|7Eh#LT=7n0p3=eBWGio#1AZmrBxW7R(A9FXY^|-4O z)};bX1zoZ!h<@feWNmS~${pXfe0j8A5{tyf$?tjR-0YU(UNC+#xBSsckc4F(6G=t) z8||B|<*5wP+qVz;bPvJWYXl72-~w{HA6!xL+3!pB0*{*&AV6gtm;W?@6% zL3rx6-r^O>l#v8al*RxAIgM1tU~W<~a)mDMa#gPkSa*0UOYrij$4&Ifhzj+Jv?4p< zb1&uSM-Nke|I`g^I$lXOOE+D0+?3k;y5IYjCgiGMT@1%U*>=5{)`f}JoC}i~vlF8U zwu63W_W>h`G540eN8CoYhq1cQF@6SG%{sJl91?)KznbX&>?1|Cfc(P085=LV&zECe2W`fY)R&Xf2+ zVMYDnKo@u8EtGFNkTk6}*<6#=mdDrg`c8z~kv>y^yg3y<1|?lb=SS)I5wsSbCpZ#W zx~7suB{D=8*klB)Y;v^e1qc8%#WuRL&5u=!e5kHDUZ0*Nm8{9M>DaSbtp@FK?%%n+ z{Xvt9esTMwj(%XQ15U8E+gcrPi-PI4sXEQ+>>7ShgI=FVV4w6)gB~myohyf8o|Q;y z^nk}TTv$|uG@G0dbio6aK)s6sc}MFhF}>t&Q+1v^_-eo@{ z#*m=`YvriVkOGXt(uS&lA^WqP>7mS-+E`?DY@FwN&2jJ0Qb=s--MBTOV(^n-1*Ww_UzM>n__uqld z%oX!(L8j-F#05y%Sp@yN^OtyLC2EPz9Bz`KF3$>!NOGK8INi0GOCUrh*LyOPlyE8?7(20N-a^Sk+ubXU z+?bb>k$5c4=*%v#_GC)Tb>gkN{PCHRM|5XFR+Vpr&9_V zGUN*IL!Qlyfc!d7U{@Qz=<9iU*9ph3v)=P;q*Z2jThVRCkGag z(@f7$!nLS$$Vh8}>)7y50Pk#CE z!?6rBHk7D5B<AZT^dC>l=fAjLcHK*>oRQk91`QPl-_3PFAZ%;q>-2eIC?#EwJ^plBBI* z2i!jEm&)ztN$)`1$y6x5k^UFqY-ZxQie8hZjqjcF zx4bBRtvAS2Lw29k{HeqjaAP349%)LalBy{^WVCy@V+Pk&KQzEWUgln zLV@0Kd}05mT>fIqTuLDX)4#{+K_qm~PiC@kLuZEi{gxe4n?IlTkM5${Dkp__3Pd-= zc>{`Oi22C^IZsuRRc~p0il$SdGuaF^cZ4=Y$wiB-W;>S&sOR5 z>oSdkQlZ7{+cn*BagFH+y?KME?e^z@rrq;IMMK0tt#VOYBnNDkWv^h6?skyS*&z1 zuP)G&oQgt|zR-vc>?T|d!V8aTiIhz*=-o1`hQp1A+e$+>LK+(^@!}AOQ_(o;LGI>O zqDGFA$|lQqDkx&APhfImwgUoy6OcJV!z0DhP_M&!D-Og$`&3Cn@#A(DN%sfEgjl{A zY&2qIS%+xULfuPiGvYbt#K_&7^CBCOjxc9iCyHgUCGnP<9poZHVYmrMz~sw+--CDX zL}E->`V&ibmv+rE(4y|e051pG&=Sd zzFhDG#30wo;rKKZ)P>ZO)23a|s%#6=c}HEn*0QCfFJ@EZc50(~xKQdJUg_3VWTL1( zEpdE)aP8~<@U*4G`y!pR`bN>q2pa;7e&b9$#A$R-yr?x z|J;v1QDRxq<3?O-7RoPW1^Qdrg63lLmF+%eSAnp} zOqwy{RFuonk?XI1K#WQfi&2S0_*NquN`dG*P48vgT7xy9H*t69h1RqjO3TZcH|pWq zJpbQ2XkEj?`}*2sq(BFMPDIPMwtMQ_q}AN%w9%z?%aoAk^AwxBM2mLUSnE5UI?|UT zjpROm{r}8sVF?B78&|%- z2~y;XG=B^ZE0(0F1a6Yvx#nJ@)LLnPhu&fJXkC&XUb|3O{r~UE|1Kf_8*9Im+`o|g zzy1v5{_6dI&%xpBfBFA@{4H`UxRAu(EPZDu#M<72va>15mW3FTBLJp8J zdthgQH)0LKS-uDXJcJeAl#qokUhB_j3Ye^h(JBx+t^o?_a=s6f9zzQnPpLSgXD0(M z1-+!42S!epl>~`u*1Xm~G7n8FgR-N8c5wQ{S&tH9>INQQO2=QJpfnE(y5YrebYuse zJe3UhPN+oilx9zMh=t@?^=-#nGvE(=g4YTfs7`^{Jf=>sQ?jWk`X}OWp$2J&4#$`3Q#Rwax|I|D6l|Th0ab8+HtfZqK>rPU>J{ zZ(_um$M0gEvL0%>vpOTGGB+6U7^~dU%Kx4XUqsgi1iZ*CA@6{~I(m_>{5f6^@pi8A z1(yO)VS;%P!ay+$Hs8Ymo#jK4lCKdY&>5PGWhr%*E;=%T#Ke5X+>j~5BiiFqOn1GA z63A#1sgbwf1uf-@Wv*Vtn8GSf&Ka|U1%gG!Ehydy)q}v08|<=a@`M|>XGr-Jg8Umh zAx$Te(@_-$=DJbwRk&nSJddNZUhpXGBf1t)scOyg#xNr+0Z(iI;wn<1X2+v5#tJJ_ zAPv^?zSs|E>M%|c2!*H#yOBR?JjUHHN4L4fs3-|H&UV^Jv|3&)`J0kpxnlcTuBAQU zrRt8AR5wXLcsg%RUV*-#_4aRLLp*{DX_5em?D znk&io68A`IGX`yGFXZ%6Ln$x-Wx70Tb1H4{U6-0_7CedOSj+JRw>**siuDCfvCO++ zm`zzmX%b3h0I5Yv^D9EpltHyNf^hFM1#%r0I+RLj>7>+tMv*L2X1Btv`ceKP^pi-b zv?p@#=TmlQsrb_|lq91$S4JoYG>WJ6E8qZv8{oA@^_-rKfa>sd7zwJai zN*iD_r=-X1T6uv}H6dpD088`6EINqXX7?@m3q6s0M~sSPDwnu5HG6|833v70gCaQe zI}76P-wC|sf3La)yz1U=N;#J75STEK3$`Gp!k71)QdMW@mWYeKciJcCcz%uY6bA5j zcDUln}onCw7!`Mf!Ln zDc;KhsmsKj(tt!`fzdFN8d*ibZdhk@s%o9Pkbnw%5AOnHHlBy~fJthm^!}1v^N#Mv zIfAj#F*~CPaz19}T6`*=ZUwjz-wiD)Jm9`|mKUV2g-Bh$=JXJI5eibL8X_Q-tUUFV zbjiHtVz$pl=c9x3lWL;|x5FS*5g2KFz}R_F@fvRY2iDMMe0XPo%X4r%d^CWM$HUBm zR7)5xOD~E{TC;`E87*h-9#j}Rvz(b+>W*PE#_En~B{#qr6AhbcTIWpngs#$6L8VCU zc1mI4{StBN*n07sHwwL^PtD#5mDTRVEyaMQ<0w`yl6BW5XPkpuNbl4m)gC#0wH$q~ z;#%S5dE|XjSqWrnn*wIsvi}UeH^0egmV~L}q>v;z&E(m^LECdH_m59OR9;&QU^CpN z4pED0ad3DS*VW;2mFa4A1K~8J#|!m*H&uVd9m^wB8V?T8DT`znk5$HKh%cM}ieWS+ z7l{^1UAbvEF_4=uvd#4NC?sPQna&uG+}eSfY=wL{FS(?;`t3Oi*gV2f&{b^Y+ra<@!oU&`_ zq4=RTY&T)jCQ;j<>ecLE(gjVHbVXvKYZZmuP}gbKpsqvjzHC3T)dm?sik;;+JUF>F#CDYYKXv!V*X{aCZ)hS+kwI3_#g1+AD7Hp|1j4-SLyM<$erC(34v%uWVN z&9rva1L=|J8%ZPLG4~ahX>>^zTDVi)?v+rM+6#NKq4x5~Yki?bTtOZ8SbOnjVGiR8 zL{^yk0Vh+0QG2MxrXao>WR~ElL#-MQn8j|{fLZMde-oqt&_53;MdR=4t1)@)e)8I% z7}lupRWU}E?W)x=TE>ugdKpqnBOe>mi+|78;Ls$CE>WLY`v`PFLf6@siL7U zGGppiKIyWAvCDcN^O>Fo+D3HJA*H$4vN%*QGG_Dh`C8uF-CK$8OToq7y@AQO6hhEV zntJwX`XJ=3zDJ*;4=P&PL6`FpPkrMwJei*z0=OqjDji`+NRgTENsi=6fUA0i{H+tL zNC(X#Wl8d^lPi@0)t8#oK}r{6-EOZv%H8x}@-Hrz+q!jY`_}FU+dI3rKl<>)?OQur zH}*_Ur5NMaRErvvr`?B#)+uBr$1Rxe%AQ-niO}alt5;OC?_i=P(2lfC}e!p~dfs>0bZWibVC)Z4@Sjyx>dBz2ut2--t>VkCL6Nct5^wTNu zkT;)jI#rSjh2#AiDJiNOz7ao zz6NsFqM=fQ(#^Ac z7w%kSaFedV0-hS#MaH*`%`(}p26?)T{=MzZjh(l*KkzT_?cUzmzP0h@*4|3R{#0o& zVJ-A19vVB-c6L`CR&$w>E@RWdpG!~g4rk4j69nG7q#ISQBb&Puim#q#E*w9kuzMN5 zs#nJ!W>9yGza6fHRVf`5)!Xq068GLk zHUXQx=IaFi7RbCG5+GHNiK^e{J0gZep8~Y%ukv~4jONrEN4`DKM?T;d)K<$ z#!`g;`zZvRDy$&uaI1n!peU0B2#|zI!ZlFV+Lj%0WXWi4AO*Y&&%%@Ob$|LaJ+rft z?1TdaP(TvxTzYzXdV2br!cCN}IBg5nu4xT2iq@6y_GOr>7t3Sg)tBC0RAj1HtvJCX zP$-7B{c@WK1i~taKy~SQHa{P-MN7Re_6I;%VF4YZg!wz?aL78D83qIxF{_*#( zJnT%5sb$^9vwc9L_6X~Ac`@idBAL`rji(jAo==k-IhBnCGY`(BrU;h_x z7Wd-ykB+Ti1uh`}>o>mrO__iTz zj6)HE;{eFf0MqO zEsaJ=?jQXqqW>3uflI#q;~ki|{yCqS1NWSV2>JV|xEXcJvr0d~`xlT20xOD#Py?y~ zlRdDxz`*pyX*Zq&vecmhKI0RxeL>gL?>K--eqlG#=Kgu;)Kwgh&A)&2{P=O_?C7gg z_VEv2J$?H8>5DgNW~b#xqrql`pFH_NXM{AwEByJh*RQ)g*TEt=|70z!d{k=I5#37C z5|i#vql?Y!a{h|!CF^-Kx=KW00RbD`% zsgUK)Ea=3fGJws#?WS|Ph3H~k&4W9$&MiGo5(Nz^dM*1M>ioxGhQg3 zT*r-j-r5-_A~T~v@_tW2X?;O&kWf{&YfB?Cr99|%z(5lDRtab_7T&$sKZ~sli-jjl zu6#%4#btX_K}!+okw;l-vTY%^-O4A8gN4D0S|*1>ON5m|ggKvZm^7b-DPWRh3I|A; zRxw3wIebw#!+?m==3WQ<4gLn)X(_XBso-W8hFPT45mdLwdWRmFz&f2g*7_cCgEj$` ztRjhb4NCXEem&9oi(;kLX2f)cSO7h1($k3SjR89O2}Z+p38Cc~4lJF8-$Y4G^jacJ z>zG?42zCfM}Ler^^TcP@`se94XBzovP7-9W`yjeFq4vSD?I6J*|I|MhE**OSK zAj1IGN{YY(>pn{lLXjO95sNF%rqyq+F^^)(6< zwvaoRQcwM$#{^b%lXnZbMT9Xgm8%?VV*7qtxjB&D@YprPfi>~0g`Zj5di`}b2b88E zKGXZqS_{pzPsIp5!x>Jf zNbX&5Wb523&SUwWMe3iKqb_&xNKkd0aY>j_ZklRRv{0-a_(d-?pAQ^HdGCq<@l=y`&}nMd5*0+VPlcYm}!ReJ<$N| zP+(w(R(O1?Eaue`k?8(Boj2Dp(S%|s;u%uzAAM@_uTm^LyuNbr zr#U0g&{%T(mHejm?k3|%<+=MazThnqxk!!KNWt9yItCg*H|~H0_kb{MYBF5AGuva) zqARg{k7%fflTL!ehxSy(1I>H$iDZ4pFz(Em?V2J<98j`i{sDvI1D-fb+F{PeB`_RQcjgV}CG~fwhR_2=7DL<@P{w!Xcl^5gHG` zn63FHeBr{aO-2}#b4cRWHaLJvtg}LNW@Euz!jVOS5vJq0HMx9Odw@A}i)k540JBKx z60`EROzH+O8ZG5?de+?LdqxLJ`(@uf;=V+!e7P-WvujYt$#mfy#?YwB!RKALS>oaB7E|0HbNH;G1zlQg(p;ySVk63~h}P%ZhK=y2Ujh6+!xqp6lO;xr$}w7*?81L9 zehNI)FOtn56-KJhSC+fxQrC%3g%iwQN#)(fcVefpYfgvDs4fX+T#xE=W>&K2JG9i z6r|E1Ke1n27?FBV{g4vQS>;@+lU$DjK4A_RRX(w5{&bQJTcsgyl1AzDplsbIT32;^ z?at?aPp>z*%B74aq;4EG!)v0rHcFv0GV4u>*6Rr)=^HAh1(08O386}sagG=(*YF8y zbEP+5Tc|&!qJu2OVAr$vXY-aAe^@N6O8MPfA|wKOIi~^3}ghkgC+JEp9}E=F~}36BjRu35-Q2EsSB; z<#}Hfff(9Dh0EaIuzUpO1?vM;Qtvr#-*R+}90a+Z#qf{}3VY7oR6u8s3ZcRvI=gm$ zz7+~9Gwt@;B;GCnd}9M)I$t9IixY6UTVG>DW^)Q1&7R2g;THc|%-K>bl*JN8weJwz z5!-!!o9H`87&;o}havt6LOeM>+fGKsH!|(EFBB{Le&>Lb+(CN})+Aj@Hvq1x zbl6HcoS~Q?VkwW0n%1X~4(53m+?vi^7ry4koyP?J`kq$Ripy2?AjW~^O6zw+JI)58 zv@qo$Jvx@WhZ3-~gnwW}24>B~kU2h9hnF8+Zh8UG+8%n8LCoT${hE&)QPtZPymyJ~&0O9}MRPLK|bW zAAmlc{e92&KK9N9IiJ|M9`sLsr7sHsj9SCu3PkCz?aj$C?$RsQ0^XzN`Si{`O}e?y zjMncy^QBiT^B{ek8$BO&>)l?w#w)ixhAl_zy%~#Ux+D9>I5Ea}2DZ4@P--nLeoQaX z%uyhxRS^|mqFP58gKsd|bH$5OZT_VR7ia_|qkYUP^d}o5+D{?!Pn#>6Tj{*sZd}*F zv(GGbll&hrI?tu=8fH{W!B|BQIh4DZ?8Z-MEPCmET}5Lwy!!;_!b4alrPPg@oa~_=JtRe{_Xyd$v;4Y`YA}G`7OYyMgHFL;ALk`1MZR>cVot z3ip?lz3e4A2S*EHv$Fn2F`$h|3tm!vc;_TrRhorw`?`46UTxP>rt6kn9lW>!Q$nq}Tl<-Q;Gu-xR6+K0{Pd^QrwUcAc2$VBr3gF7F z=u-c9`*I(&-4k(JP)DI({46oTkt=juyzDr-Lwg=v;fJ|bS<2)yXnJeQ#kz>Gsy;oP z`9eoPY&9gyWCU3jf)E!$jV^v^Z&wPEl-f^WK0p>%wig9>OP?pfnSK*g zE=|xo7?H>;dtVdmhKFnYuN>5NW{StSuO@w{{#g(=qAg(;HV+Oy&Nh#GtI;~ELnv24 z6|Dj#t07B>nHGebw2z}Wf^Cvj&D2g5L(msLq%mfnvZe}!?vYY#QY#yc_jN#O(IBErHB?!s5?A`DuFou2GgT%lh*p6I+zSw145SAUi z858yKGSd}rplKYxA1M#7^-{t-W^BckFz_yXoKkHglj+tqDO(&zAAI+_1EN7Jy*yQs zuycA5`wW041QXq{FQ}e$n+7ikumeUVN93~?zc~KsvnMCVuYUM*%M*b2Y~x5pAJ6gq zweeSVW_DLV2VItR7kiejq^l~&5R%*ubBunWj!}dgpM93){Yux)Wn;ne8DjTZ`s^ZB zRbzT0BEI&hl|e6~tR~n_2pEV;Ns;o9;WAgP9DfpvQ--3HYKcV1_T~>D-k;w`2M0gd zehXfE{qZTgZ0?vbhT-3A4^RB#36N6F&nqbDLUh}#a2~18WW{%>G2Am)`bT`EU$F61 zJJzYD>l`FAj=Jg?7SE8hmcygp6kCyiZ%468z0$^6QxXZc-w{WAvR4-84u0W8*Pjn_ zmf}sD)@E1>4frF(5?+LS^UT_{R76jwu`=Q*sWLAZ0nf0LFr1f69pwT}Dbv*E!GLlk zTrDAm;O8W+SynIBw!sW}BTmS}*dN3Z^ZHqVA!8c!Jk+vujfMazi3BnQ>|WJugC%Bj zT$mHp{;(l>hP6tMebwI|9In+cL;CgD|E2i>)^QgI=6s3_Vl`_&b1O2q?##b_e=YCH zjRKDOfC9sPxm7|P^)_J%Kg@3Cs^iueg1|Mgad8!l1v+N-T$M)!TZ-8TMgs;n=Vh2N zrM(eA1ECr-7;oV&i31jL14f=hB=DLcdhngp{Jye!{2WtU+4j72)T(k0hSU|29lv0<>`pfPT!IpDb!3u z76~zs6vuuQ$fY@lKoWFeL2=-6HiCqs+vx*>z<|IiHn2C zY~R$BI8b!H0ET-s%FL)STX>2pjh9vHwgD?5l0x!RqYv|zuN98=#iB|tLZ~MK$FH9`s-8%j2j)Blc6#Qk+DdIX~ujfZ2PE zZHgCICAJPCPoH(<1C1jAibGSMf8*=;axrf%cWT?E0iVJGXBUq>Ja=~5Xz1}i-rviJ zja@M>^?Lbg=Au*VbNBT;@l|>H3_uFAS!;JmHQ|A^?8$WCpJ)$_3%79<+uphWKhS3Z zmx}6ZM%~g>Kquupmn-%ANToT-%8|+;Jo(xr%#BuhL}F}}W<>*kVBro{q4-uW3?-!E zjlB9J>tzZ25rsa$a5h^(ac|rk^8{CpKioE<3Q0ltd}lzE#r=p&&Rzm&@yFR}xo~^I zJml9W_hJzZ2)Z|3Y1Smko9UHbihv&A+?`3fER=d$Ydsh6 zSWCcfPU4gGW=I*PK1@mNE{nWvQ^9)x@4i&cobU&A&N$ZTpP>Unr`0XV1s)*7B4-gQhIcQcX4(GM-SRE~?phYLsbOc}^@` z0(wUyY55HMY=H&iyph3oP*Yw8~*lZtwCjkz0359BCT@a;+0+auKPDWn$4 z9;)gWwTBPI!Q=7@KF$}0mf&YDsy|=<{0BdH_V^i8pC|a=tCv6fHAY=56Mv2sYZOOx zioN^{pe4hWzY58~l6rtMJ$d!)7f)ZE{P5{!hLi83=EhGZE;0B8fGcAa+$w>hgD748$Vv57O8XOjt z3FGYK8vLoCm^i^L#pVfJ>sD#xSuE<%A_RfFl$KE{EOc^4GwTXXHcS2 z*q89p<*_jgG7?>7V37L~Iwg@fwxl=?7Kjc7MmiSb{zc)5_4H@QKgG{j*qb*xh*<{o^8SD`^>^3U^RD-WOv`prKqq$*x#FX(sFFq{cd~Zv2e(;!gx8^57(X zG?yXSNB_f($6DHF&6#+w&Ca?AGxEsurCk*Z>@h|*7CY>xIxIGAC0Xt)bD5Zs>L})< z%^JMj`I>Qq=~8*}bYOhH-n@G8!@=R370%Hs3Pmq&uTFu{A4)dDNgq$g-3M>j*I_aQ zxMTv1t{{ON-CjFNMgxzCrQ!+;RpoN(@e>!x#&@aVM-&xYroDvv1N@pBCB>p>uD~VX znNP9I2HjYGg~z&xlfGhN?R8C%6?W1xR@3xdVHyU$jVd6yg0MS22? zgfeF6!;O8ddh)h20mtKmuXn-5NOmz4aCd>ytbHH}Vl0@~kxM1h^K=z|Lw3b{N=Y%o zy(C&mA?Ohyb`yre+c`u#B4ea>Z;87u9Vm^O0Lh)b*4Yc5BNQDM1+KN_ZCg#e9TSM9 z(0G>%lYS>w^ruggwahsHI%i3^m7u>`4Tpw{WDaka-7vsX5oC$ar7K3;0@z;5Hu6UB z#o`mGV?MISoolTO&c4?a>?>~(o!+9j(4qqXCxc&%Z$YZ|{XXUqpV^aV;|gP;v-pWm z&hR@rhq?ut`ODQEYqQ}m{Jy0vt%4)1>}6n5RD|qRUeQ2Jcyf%d!>Qx*^`2N~2>^hV z5lHTGL%ZUMjqQ;u_g_c5PAyvX-~s~UKkrLNaYb}t!N6f{WXil%a}5AbPj$_@Ig6bY zqw-1ZAe8w92ammW4W{mpG=@x}rZV2Hl`>1Jh0Rik4yPbUvQjtN;72?R0rymP|M$yV zJ^1v7Hd}AS*%OV8R4;m5RDEnUDBUv0gI{AFgG=vQRrJNdi^aaa+!I&ZtW2xU!3%7Z zxdUwIP|_`y_jSY$-gMsvM0oN_?T_ccUaF03?|qGpY6S#cQ6j~Z;Scgr-q7mXZbI(g z9lpD{xo#hR`f0PevPk;zB{=-;>3FvM)c$!yO8E5M&DH$V=6d$2?eV8cARgO?FP)9^ zf!CoP-9+F2x>?isL!f0(-zZv<&!CK6UL|W?s9n zrv=nu%GD7?08cj%^lk1Yw|0ut8>A{`AeOXOHRm2w8m{ucZ)+p3pUYt^meQ1!OxRk=ZZ7@p0qnB81-NBf(c3 zgAy*uWJb5k)0>7zByJIT55cHue~O4%z=j)!7gyhy(#E+nFga~6OEAqLg`h^d7#q7C zt(7c5ldjEP-y)(+q0$8~G94!u-kx-3*r2!}%-J)pA4@uTsAPaLEpvSUmGLt83l4;G z1L0r1DDhiyf<~fQ^$>kzE(L9HFl66t%;cD9tZt9_0HcnEnXzgJX zdHCKixph>W=s$)H`2X>7cMJ3SIPq~bSXXWOt*apBc;i}}cEM&7N^>YV1N57~xX7g_TlIMg*2~quO|Eu* z-s~csV=0-HLXybg4Nyjyu&Bifjiu6hRTc&*^jX#7B2f-*7G*}j2z!8?#LcNnN7sO3ctj2ur!vU%SwW`;()w0TvrES>U}m`$qB zysygfr52n18pV$rh%SI69U~M|eEl=mmS;ekQd_CduiNSE`SPd-hc1l9jTOTQMLd^2 zYtzC`Y@=xWN8(J`cYR*C- zET=AowMWli>eT!q;o;kU#zyu`qA$h5cJIln@1su!pAd&jF`P|ao;J-3?_$f^qnoGp z1P;2nJqrr%&6OE!Bs?HwQ&HW$jql1?d&BJaNQyPe-yIk{D=H%|S#VYJBs%ke4{DA> zJ6-=je*N-AisAg;Feca{+$U=v_DWii8RE0dh1)>RfhxcU|9m@J*qAywf#>jp z!B?-*p-FTZiZWdUsknso-;LNJo#2tVW7%7#tXURHfXL%UgKPk;p?clvXx-_kyE+<@ z=CBpo&FFDNw7I2d^Y@(_p<-TMEUS#Pr@#r|H26G-1@uRP(1!Yx61$orx}=BeqtZ0s zjy-pF>j<9FC9HKSpz0`I=s+gMIZ9JzHxJPhw8jcZ+j zy&HBSA zmM!TjH!AT!AJt~jbw4c9R%4b}7AHl~;^K&9<|OVO1`tP_Ie3$|xr_>q3Pq>Mh|l1l|~P+fQz7+l-kmjGXkx?@)uo}zN7OTX4V zzgy0n_|pe;u9b29Qui^r?0P_8%<{7RoT5|0oXoab-mZfO>%VT)Z2LG+lo$6lNdu%n zbVw8{64KAwyf{LU&0U6N`8{kyWNmyUu;9+o4s&kb>YYJDh5lK-M*D>tty_O+tPw#)Y|3`hdb!xWt9<>C9Jm3emQYZKR9rya zv((|+s7>B3K^P{pTISS}s`)VLiE!D<3ioVKgU5A9SmQep!x>wwzSzfB9pVR}3)G?> zGmv!C%HJU64z4w+cj$p{T3BX|r7vWv2mzFNIMeCeW0bIaH}B&T`XV*-y&I}Qf1^A- zL>Y=T8UzPVd~2_OO-1?k$AN`yOY+_MbnZVyg^fWY(_lNTc}d^s3~%#NO=1Flo!FGY zz1yB1>ZJ}j#dYlwS2+7NL=gKGudNJhUbnli=adzlIqNKW`Y|jmmY(u;5Y2xo5UR)S z$e@im5U|2RWTagZbE|?-jc#ioH}9=il&~~#6haT~U>nZk^mmG4qi%J=k_=+`Twa1q z=qc8bUmjRrl;>;E&REDbMh21reqTa=$=u{Z-FpLy!1~`QrJU!5gn6UyIgM0WA*=-* zL?-9yh{lr_U`q#HQr~VE=?+;TN;N6=k26Wx7yS|yDT7gx6u;xp)9*8`km9Bf#B_A9*twRpm8G$|A z1^3`k(QsREK8$f~eUXQKv332?!ZW$&%oF*RHLc5|+mLFFL;2$MEFk5Cbc!XI$v>rg zwHM_>;#<>ez`A#2P@uR;$i&TCoUv>((`TB%3M8LRne}?e{cvPm-d`^CrHxj zXIFBZ)GJ+*+d%J9y%5Dqwha&}0H&AiuvTBK9#$psHHG|Wp((cr@ymCSy-4jZpR^}4 zML6bmd}S~_`8xjpw{z@g>;GK%CW+%3 z6{O`d*^x39Vxmt#GKXI^q9JvB2I^=r?qC0kKfaDXG_w7Gp-Zib77R4?kqo6|Dj7wh z=((MkM+ve%S(f41oW9*MKgluJHM60cWEtV26e`?(Sd?M6$!b7<0|i6U%0pw9PCK?X z^V6i4B@_?HY8La%q%m{75}m%HH#O*U3CdN%nYEn4ghya=Sq`<0=Hkw}=7WR2K2q%{ z_i~Kl0PZ+KMZA*%c=rwLlt$^3@0+S@8OvZun(qyx*D0=;G8MM6J_$|V^D^D^jTPJ= zP$u7E%sz9uVtTNZvqt{7-CO_`p+&O*&P))LU17KoJ6(Rh0D}RTa5+Dt*Tt* z7G1dH2iesFN*`fOKE9NkI09`HeKD+Q-R-4;K|vi$i<{%)m&$_`95{iI)v|3jH0T%9 z&E~Ma*(#DB9O(P!u4KHN?x|zk*C}zY+%{Qio4Yt8dJomy`q!(d_-?q1oRiF7qrxHt z-l|xulK5l9v*IQjiV86q%l@xI*_~#5d$yg&?eX0751#DC?&sNk*6I2&j2PZcGp6jU zJ(rAk(g))p7xWRB-2*Z za`EIYTt~_s6qrqPCe&5qwp(S=`;cTS=vsh#$0c`7ff06H>v4ZQ_XqeUh`9z^%&4wx zK-u!BQOqr&%m>4VIUkaI3mOdcda9Wa^91(F=N^+v`;H~S@vED>`ys1TeNSSgoL%`p zn1iC010>?7O#abNXZz4plyqk;m9xDGSsuwPv(T|pMC93y%%XFCucnYC&Obz9R3z;# zxEFP}`(;3>8RaW-EFjQiJB1VD&U-GYfbqr4H`wl<{p{tdH&34sxIXzZ3AfvGvuGO% z2@lw-Tx*gd-d-pdh}bz4NcwGv#bVx`+$jo%iOYKY^7-?hzj*fe_|3DIFHU}N{OqSc zfAy61xYX!J$FH9J^7z%$&G$XBu-LqcKvnvZgM-&dgX0lCIpw=ZIwul|D|zipD(%Y# z-HO}IdD7$KCwlVF5%zft(U1H`;=aY@Fg4H0;&iB)j?qW)cLQwWw%*EGqQp^W_6XLy zhk4f(jH)v0=52;6&1KS6gE7xcQ+~U$eY&EXuZ%BL>&WL653Bj|eeza>R?aAen8KrU1X7igPf0>?RlaEa+x1?G}=+lP40;Mtp%22!oh{0iY zivwv<0~A=Ni%?P9#`)ykkY_-$4BCu!0#XiywXh#y&iuTcgI|I~ln*DNdF>AAe$YJZ zWi2m-biErn||oA@ZW!TlY z;5iO<1TQ#2Qyz7JepGB=w-|-sMQ2>FvU~R+6_}wgH3FN6dI@%(we}mDbw}Y^TrI9c zX$$G1nNNm>uefl6W6I;2a<9iR&zM-9pn3H5_-w@I4D*__OyWLx9PXY+?%P7c+Vsy# z(TiT2Y#B-U;W!kRH)UMmst4}tPa#Vdi@nhEgJNjlKA6SrSQqX*?84`4ksUEg!zo$n zDCn6PQKD{lIGKU8M6UMqU(Ez7;iMuh)63%b%C<+pn^>l8D@SJlx?T?U#r%l$?<4!S zqNu3w(8cb~cqxl|5>3Jr#>Yd)y5K~`M>e%`Cdn^SbfI@G^P$~dyVjD&L+Q+j>bR>S zu*cHb@Re(2I$JXiubo-QBe?nT2J!-k_SfYFjbZ>WS;Ua&g+wvwe)F!4Ux`Wv#Suz{VXrIEYlQm%jR`kMw`Vb~_8BkAm-@S8k)J zq+gFHX4XS@5=%zg=qx(0xVZ{Hv4K&wlf? zb}SSVSeIdhS*^qH)HnB6Cn2su2#bPW7i9s+yCJO*Th&gpmg3$aXedtz7r@#wO(}j3 z9uRRR%G5Sx^AYGcJQR*G(6@$zPY2%~*7*QB#4K7O*iZ#k=`Q%(;^RlJdmT|d-0kPY zz4DF)U*?Ncu@US!X!yvF2YF=YwYbfiwsY9n?|Odg>dqu?G&MVJF)gnQ6JV<%)%Y%} zq##gPz1RtR2iaFT%Sa=DM<$fj)Z|Ba6w;c2OW4ABi=t;h(H`eW&(^h+Fflrxl(tmg z7p(1K&RTxk*xJL0Q>a1}S)jB-iOzxRva>YeD+}R_i*w8x=}tO{cQV27?qm!7^KQzO zcxU<`c~@08TJ#({L?nqA6B)j16t?-`#e-xc79S(2+b6WsJ_+yf2o#nVm8`D6S))Pd zYp9%}wxwpkMyfr^!%2wsSLd!FOHs2aSs73f3Ax@R(#FaY#?y0WONP*8RW<$*@`5U5 zWKRyun9Pb!Kl);XzW$xj$@W9aV#%@>#x4AXcdT7)Jq!lMr5ab!t7bpK zswVN>y`3P)?zYL>Xf+L4ebB7~*SC9}AXKrlruWWPS8}-A9M4&TD?U1t`;-foA81Je*sBu7k!}=KsBH@e zu9Nhg0Cw^b+;z&LK8pIbYx_~{MV*x`2{@(Nrrk64c?Zf`^SYsZ=wogSW&`LFY7I!pa zmPnk6WE^gidANtCl`+psj!JyjfWazr(r94wK7$loPzUw5ZBn1nEZ!IB(C!=QP!Dtv zem`ES=lf)0?#snIeAES5_s2(s*hje!*u78#*&RL{4$n@OjI)t5;+~pHb$Y7&7r_W~=D%PXG3H}FRT+CIl-V(^50t02}dD~J&8GFDQsRp8a#qU$_fq{-ceenQK+ z{jp4kt$qX(_XO_MX1$KFyKn6sW{E88Jn}SYM)$B3>U%bynXKU&v83nF&&nU57h?&z z!AOri>}={DJjEboEJ7Kv7@gG`ncdD>+`5EN@=lsAOhsh`I!fg#jCoZgc{fy+Fl!5p z9Wks|Tu~toOyofabt$HZadBy2(`4ey88=6VI5O-KKLFSd-}447nzbt_1dtT zHz;Ox3a95B*FMGBFo{Dj&JlFA#C}+!dJKGPcwJxFiZP(pd;$G|mpb+OSN|F;LCv+| zKo~;M6zITwMsC#iR47qUS^wb*&e|+igNVw3t~rAy;QMN90X%ePxM}H47S6 zMU-uG@M!3sjAFxbk>A!_R2js0v*n0xm{8JNvIJD%1+*9J%?a52^Wy{4KmSYlz}{qe zFQU9JyV+xCQF~xdwL_hogFYS_KM)OvE zwQB1E$w9KkKVse=xknTRw~Bls{;*upR3rcU%&bor*Iwu1(!>}Oqf5EnoWll)VI47# zEaMi7H1!8}#L`S`Vt*X5$)+GvOysC+pz;?k-5+Rt(TWczn=PFT^K#V&IQIdd(<@vo zh#`o9;dU$)F5yq&#!vK)_96`tB+f#$0`2ET7+FWG%koxIX0FJ7@v#?`UGW`XcCvl7 zAKF+B**zV+%B+PmfwYvRFok0Bs!F3dE1|Q)#|;*VTRmSk=WSh?B=u3qJ5qc1zbz{d z3ye;6iA{0q^WS588Jh-b{o7{gpJ>4|IC@vaEIKCdbv19K2Ziq!;mgrp2iTo2qu_`$1v8Ci?&ZmCM2e zqaH|ZmfhZwdX(L=5I@co_`9(I$X%j5LdgpQ-{(`tZpoa(m!5r9O>T9om;*v#Y_{AyW|e_?PdT6)=imIgn(PPSglS7ARrrhphA51f zLY*9@t{GMYm-^u~?)=WpKFRk)x>B98T;u*yL3kDQqLY+{rz!{sZ2=nO9GJi7a!L7K z_r_1|eNllYe1prwO4jolV&tnhYt__Al57Qx@8(a)OrBtDN&$beH-${3W$5F!Rh7z1 zlWK_D6?LVXjlLkA7{yH}L$sJ5Q1Ul;z3SGS{#hR@slKIg=^K(&QrY&qdL7~s4Hw1SmXFC{e7*|-CZ$zrrGa721jHyO}ph&pbh zgq+&F8AIfG=o2FkA~GkPUxBG>FMeCwl7fh2?dJIf30>m{~Y3hPZSG$x=>&>37{kSMrbl2)AAvv z9w7i&tJCl8@AtdAjh&sB!3Y0XDDlfMD=)+4GQ9LEuC?G8TA)5G%V}#ER>^{@9nyxE zy@o+ruQ_!E=u}Eo=Vpy(x~66yx)xvzekp-;oH<3GN$+AyWKCs~x5)r&rk6Yd!>T@d zE;`7Dox$Y4lA5#3wk%-$vf>c0Yq60)0-*b1`2Z{PvgMa$Tanq&uIxE|EtT(HFzY4; zWxOT%;tYh#VpiNtM`ZJF(}bBY>%>q3y@5~x@i`WoG>CmH63{=HNF%y~TxyF^NSLHu zB_Sf1Mx`+gnT7T;S7AcE00GA2r<`1#IddJfI^A}+*V=2g`khu|yT8A;^Wr7fGdUCU zwAsK-aEO3Zs6fQm|wp!V9zr(eDerwM}4hspQN1ljgfc4?cpVVuSjwBxndwiLn(^jX!~E%eX^2i)mZdQ|9os@ZiwN+{ziAPflkB;J zVp;UI&@i@o#(`-`zntFhr^0p?572pg=^>F#Ac$stKvoY2ghdygr4JXen6Yz$2p3z< z1rE)y{A5w%z#c*x7-j{nU@UHy7GmkV%=1p3ONxHtkB_})J3EzVod+d`8=F~n-utHz zl-x9I?}Jn!;2S)3K{gB5-%JaL2wzUn%mq&90SR!S#D+NiS75_&#kpS zd2jo@mk&g!blUgp%(xDR-kxQ2R+Pt4eleCkXW0hE_;858Pak$Go|vDJzlcx?@JytL zxkz)SQ(b(CgKzT2rOCqY!&!_`qLfVZ^u*lt(K}ryvLP9R!o-E6t9elJn%x#IH`$kr zY@UX1i&yh4BJXC^X_%kFr_lwSTanJ2Im7UcH6-Mkd&l0OF~iPqzcnb>tDAC*GT=6$ zm9?8CFWaF=F5^y~a!*FEj|`Qt!i`q9`lPw*c`^FyI?J==2cKElaWom0J1{gm`{@Rj z3*O5bFMdTgGW((a=1bV2uS$iyafZ6hJ8nO2_1e3j44wVm3|rUO+n$59HouD%F@W2x z$Bkz@J!>>KnsPY{PvHBq5Z&F(6$IB(1hj<`z^a4_#)ai7Y;684S7x5HX|d(T&XYct zIalFa{22Skrl49v4`<4LQJiRipI=tY0czQ^3?dp4SmpLbop@g_Lg_J4vmc8$$$ zOzF;?nsmm-@Hb6%dv#G{Dn=3bxcZlc72@ zQ^K{Eg1eYOm56L@V!;>3^-@^X3CRDT7yyO_pvqeTvuQSDgI z+L4KZUBH7FU(f~4ju4#2u*ARymWTj2ufe2XMMRWLG#f+=;aG)rh6P}@;C12LSz9=G z^pBl>x3}K`+0xK1Wf_v^V?q>sy>|{qGvSs@7CK#+Jjy483UIvEz1D^^MH0rNodKNDDN~>=_f-YjiZCg6l zfOP<>s=L_2jM49IfnoFB9$x-$p2Lgl`|=JA@b08YJpVZ=40^$@1x6r?HXyppl+#Sq zUbzzON@|SWPM6|K3J@c%b=HDygC{%Qp7w?*5*Y zOTLMkg5)8lwS9=z(tsld#<2FPCfZp^QRc!D(lNn>BrK!J;;oK0TRZ1PE)yS} zOMv;NzOx{99-5$y9bq#g!<^BRDK}LxAGjKy4QSnhvjZSbxr~_coyMa#L&c~cVkC{G zpzQv>#&?T;fTOzPm2W`G-)D;a@v9QD`a*p%4+oekgVU`Q8)oVkedQeNz1?>%@wUy1 zsf>MdM$?O$$qY1}7^ZNjSOtG2Wi6XIb#u@n_k&vRF6hoD@N@#Oq z@}h~z?r;mq#4kJv)W*4z2i38z9eLe+>`1$4!36GHw;}sPLxQ6=PP^+lTlt#q^W?Sd zu<09xhNB5U=(Y_#Rs|op4Z+ofa%K%hp;cJtah4a=gp!mun!<=8J;exFN$&e>H4FCn zP2?d)m%;UpNv5;cQ>Qm$3PsH5Gw+s&-7-MW6hHCWKR4&0#lYiijt{tBz{ZnNk?e7O{;}<{0bXP>B}E zHL`pyI&g+lp;$O!Ed8W_kaN0ZXO=T_8nA2EJW-2eo%H2Dxu8hs#%3v#XofgAo#=)o zm-me`v&9Gg9LM(SnORv$$$h;h(aJ7Oucpd)2EPh9Lq?WgJ)b&;$5L1$JDp74YLFO+ zBAqp;8Rs};Nk291nI*%S=RjxfCVJe*$s3oNlt9~T+g7%%9#U@@<<1u{#gVb*DV6VX z=dM?ALYewgG|O2dJxkCu0kN4NpTeB7d}A#b{Jg92K8fu&^*kjsM z=I#3xw%0!1q?ZWet&gPbE0HJ~<6y}7Ci&)}eHf=-V zexQ#tI++dL#k1fJI^ew+M*rhXV~T6xVhtY-p)zpQ5M;5~5wE6lT0-fpq`>c6kb#^4 zk^sp3!SmN7>eP2OqQFqfD%*veYuW*A7ypTg;AMbKSvV$L9mqEIN(Oi4SS~V=Nr_^} zS0NW+6Dg6SE(9i)93I&8N260rbjEm$p%#NXg%%8%i_t}^`6xO;cbS*XUPoUN_P|8? zv{GzKi$!bAN6m`V!avR3N>r=W%Bil|5J%c4lTAAc=pw1E5(bfZoQ-{=hS2Af156Xo zODHqRTj~t|VcK5$>8iMS#*BuvQkgK#h4CWoSQx#RZjC-r8|NGn1N(7Fn6;OfxY-+L zrurV(I45q3kLHL2B(>L6(iziXU~tD{%Lj)lw=uAvo6UKULSfw8^$b%$O62{xOkOgv zTz}3}%b0ykp><+;ffV~-C5m+{IuZ-Em@~+*BRCy`ttl$iX9t;vx$VRp` zp&*Tk?EaNcHn!+@XA+0Yqx?dQjU^}joQlb^SoP|*4QF3rNPInFZDr%Jzs%2(w(BEX z)4RchRK<8?M{eG{IUF5~GG^_DBn!jwc-||Ggtg=m?o+^C`sk;oJLpB+0JjS+cqoty z|B6EPbFMhzTbMX;_??%Y*$C>pcdt z_;WdU37F4`UttO;J-sclB$L&n6`Kz>Px`KB7YP<+R6d&`cbc_8SPZuPNr-=~>6W$hg%Du6)4Nv0xok(tEOB00(R3`a69BbHJVo0WJ4Um?~51ua?t&4_y z)<1<6qNgy)P6klkrKtbG-?C#4u~eKTuI5AULXT;pl%ya6c0POAIp`L2G^{`x4J}+X zSBtEL8OH&@Wd%+2WUu}-J+wcwi083g#oxi`(d_NaoR^Xu6EA%*bWIW_3=vMqpDU!9DR6RV5$^1>h$pOt5Tnt~jVPwC3r%&# zLB}{+^sB*!%dQGhqNDkqCzt}0NgMUeWwW+Z#*t{V^~#mZ`RbhzFrFvdHh~h}$%uqkd5?R01#yMmSsBw(nmug3E;tjWrZo~2*bhv{ z9ZbeM?fjumzlj#Z*0lDdZ(Wf5$hn&FgxqV`lrmLzsU-@Yz;Debnl~mV=SE{zZNM!w ztNaf`ETel3xu(E>LGZ?6+n529*0(A@ru@UsN0TC897skTR(d`f6qI5UN-6LwHy#sB zJ%+sw*${d$Ih<|GhQv{;c?9(v(J)doABUjfQ&m5el|iZkKX3*apVV2%yiQ%m$OP-V zaR?gkK4J6F`8=ZY8ASG$OWrJJdu9}5&n7l5dZATKi%lZ zzsuCpKmUx;pyHF=-tAHgZI`OmUzTqDhaWK)I~ym}t=d*?y*`*8C3U$-O>tn?akN&` zdjd@`W=U08Phe3MEYOS$KB5mo#BwrN-pBgJ`uc+h4{ojV$^ZY}-Hp4qHtufSy?=M( z!KRek+`7MY|5mhq>l&VOS?XKs*V5M)`0R2W=@k}F)Xv$+1a{sccV(DRJ5mL6=@(ag zaJ1iZ+^Eopp$JfBugr$qY+q`3?xa#Y;J0c8EyQ@p zm`i-NpcfxK4Yg9+atTutYmAH;kqfz+X)gp>ca6}W#2G*tz%p93e?LPZCXx&X3rMTd z?zckoy{%}44&8JAzY)zSaVlkI#qDaN?%2LUFKP6kM*>B0m}=Tgn=PcNHoi+o&zmUc z$yNeMdKh8lEYv1R0Ub8G)zn@U_kg+#x{5*9Ns2&!z;4v1r8+76aFrdtFYnZ>uG z*Mwu79x~ghDe3IYW(kckcED^Z%ISPdhI}fNAUos-VR17|MaCIBm<^TTPex~=06KtV zZ93ViM85`09dF7yMVqya_1cE^{HFvU9lb_N`em!OSzFg;9uH$RApMq*O8n#vq^@zT zh4&EsS8~4!VR4gPkLR8qx09I74-?3a> zquGLSYsKtC&R%E3oN)($-oKI!wdm|@1&n@~pcTVfOM9nizR!X+z=GavCW92#e=k#0 zpOzYfJ=NFjJfu)}V9YfKQ}rk@(_<+B&OaBBIT+!XWS8`o2UdP+bb0cSpz-W-ayh8J z1;wJuRs6n4$bykewJHr%al__mV(~>3RxaTjffv^P^aHTzZaK2uX9=6ng6}ztdg@?t zD@KVPyEHkGJC%q`7Z1K-%|Gus?0 zU-SFLS7tbJ@!tRdoCO^8s*N54m+GbpLopP+(2hm>rP-fdgc%wo_7S5D7LPk3u=tPP zwZ6pXqWhnO6WDFty7F_${cnBi!MeZyq5Rgp`wwpJf7kKI=CoT;!c8$UhmvXP`)UZ` zZ)av$D%^WXt}Mr7V0l4fy~)&xJ5e16MX=9MMnuG6v@sNp9}Xt zK5pH+o7?|)Hy_-++5gw^6pKa31?T++jz_P~%_i$qB?K>bAGNlz@8DwF>Wfo`y4dc& zOcg}n1uR{J1-dYMDmDO>#GACU=e2w5KUWqQ?K$R={+A#%+2p9D;7!KJ8MGA@-tV0_ zXp%bd>M6=xs@ciT1c%Pr+}FjJe6zu?7Cs`ZYPwl@c;^l~mTs0#h9zzd)75GoAXrbg z*XZ;bk9Jxw%@uQ$sKIMZ`e}IA`sqOXA}{3TZIEdD8cJ-C6)%bI3yKwb_!T$w+(G+ zN3=)m9gRt6WN$dW`PeGq3!Sh1D5C5rYSCIxMPTTh@hZ+|UdT!uGK-bLP^*=#1TTpAEi$d?mPo5kpW+w&5~-^hQ&;Gi9**G#DP9ztXp$ zc!n35`Q|#p5eE2|J%zBK7?nh^SqOF#OhcGk=$toVhr6Y@`;;9?(mwB=DmG+=!xR%G z0IzA1C-b;UrH}?TWB_D9o4?D;hDp&NMOp$~h{1O?j6X@neL1)L(|42p5sV`(U9u~n z9-6NcU&IKD01%~tgI>{2)7B9Mg&m9SjIHAi{usA{SYfgM*pb2bDO$*ombC%PS^2NxJ8 zOuq>P&xMlPwpN~k;YqMI0tJfY@^8nJtdBv4*7&rbc34bj^MFmvAz&eFu@VFeOZCAi@x+r4cmpm6>KRk((6zt@_Wu2QpDaCwiG;nIBW{WJe)XQf`ougezl$}% zwybOxc9YISF$NJeLuufv>`@;>#SRrQU@6({oGU(3*8x&}dPAJ+k~1tYqy?uG2aIJE z5*njQ#7+unOJ=SpzMGaikjTBr>Znm{*hZsVc>#*z29+QuQw9WB#*dXe<2|v!sK)72 z1C+!5WMuiVb)Uej2vS{g=K(>S1_`~v)skm7D}(76gLjJ3)l!5HWYp7wwaaGaKQ%GN zY=6OXqq00p1iky@v3z6gpXMtwPM(;Ez0xNBJM(($=DAe<_x=NTr24JT`mC?tT_XRp zColisxWB$}E4p{<8lL}i`Csw+s|opM!-9`re~5qAZ`S`ho{QEWV&OhKHXvcBy}osY z=Q8`x2Mg=b0l)DfV4i6UGg9Mn z^FOs7YFhaP8?q48u_k%tMZ-#p@t46Z7LYK2eE05MEmnAI)7h)~nB|iCPP^IK>$dzz zpH0T#oa}BP8VnzDVI03xm)=)1N|FJyh364>rsFe-N1*LMyTIADNy|VuN-_o194Wfp z=tk}C?dVYh0l6yCckSNO{bxOG4MD6sjlEvG)s6N$QFDK9yDgEp@au8Z*n1KEroFda zNz<=eh)zuNQm3VneWF@?LFc9OM#WX5{aKR;*c5CjZ z1)*Zwand7%UU}OkAfCtC=5PP z1ftDI7-Tlg1Lh5`Um9a)tedeV)hsuka9;24Vt=VNX ziN}ws682cy9mXeq#1(~(+3GF!M6W{&#V7H2iZR+(wk6S!v8>MWo#3Gz+bn+8Ybm}$ z`? zh1EP2wH_o#Z_UT#$>X)tg~`DRoc7fmo>R265zG+WIv`T*&Xtx8+kMfRst=1AA0+YR z4a?L=>C|gmPYauRy+{m3$%R1x7B3(D!OhtHjRmTMGG} z(3;>01H-zQRk6215^!>TR>HL__K?|G#jszq>Db*lIE=u0=dp%l6NxyhMc-p9LRP=wF_wMtLt)Jbk z-`m)Xprc@GGe(FgY&Ai%WNP*h(Oi%5y>7#ECzqj85&Pg5>59C-W#_+K%uli8S787y zIsYH5J6rVgtd3S*6#M&1rcv+YxoGy_4hh3(t- z+q>x>32pOlGbY>Od$hzT7eiSbg;;W-Rhev=%~`--3Y#sIBXdRP@uK#JiOIm{k(WIx zpb5a4b*|@NawB17LUp@kEg9IxHT)`lu{Zt1GAMfQ@!Rvy?v0a=*(Zac9V+C;RLW&7%CC}7s*&%ZFI?C8CooF3i2G(n>$e~ zHbE0IUj-2tEBI%}((Tgq2hg)TgM^uZWiYGfS2Fl4TCD0ZHdpPHtXtx20$Qi$qLX1v zD@qBCJ$)tn-i3)L${RwUG2)mdi9^L8dBPy(r%RmcQmE%t!mVjS&=YZrM`P@jTQ1U6 z0<-$jc*L|17)ZebOn2lsUjIf}g`L1<`@;iw9pysamruov^hg_IZ zrxlEVZ4_v;MV%CGPIN5WI7)E73~|5ZmR_jVI7%6#G&Ld-$u>5CURtv~8L3<|QF~gV zV>O-4HQV;tN)h37;ZiG1bd!@N($GhA>Ox7Ns#pV;Nqz7x!> z%enbE(DT#83^&gg`dlXenO#x$vx59*^ZwoYdH?@=TQ~my*YYgLe`X81pJI+#*fY?x z@{LC5Mk@6ElL|SF&}^;^S_#qT(xKIg2f@h9mqrsAkM6vA&)EzS%MM@lS!vB1H&G^3 zP3^LdXeL%gZ{`@2b=zhOQWwe!4fHY2QuIVo(stWAFpRKP~f4(k$hdvZJ zWnO5{Zh9f?IP)*izwY#WCNYB&KdQ7?Ul^jbvQudg5iAPqLcWFI@MD4}>rn&?=eQ*5 zh#1t;W@;B43`H2RrJKYgpIA)4iQKT`BNfR7O_i2rhDi7q&!s~X3|pozXw0UEX>t;c zP-%Wl8}&_ff}B_qwM6`sK{W~#K7RP#H93nX$){^}R(mcx|KXa9&sSpsE;;|V?%!Xq z|KGfc|8+f2?)jE>l1VnWzdKr=Fdhi}vZ7A%-aV$d0T%c_McaFv6=y|DWHYiJ{g zJKZRFE^=w*wjsGvfnW$m1GGd`jnu+OMOS6lZS67aFCL_CYhZft<)-uvzGwKy?EL~TDNfZe9PLZn=cC$P*?C?Dl zF9I}zUh!eE*?iY@V9~s(V?#`pj3&eJFgh@ z%*%fe{eS(2|GSPS%m3Me=h;6JlpF5vhWq;;;{FuVi^L^4FWBi_hN!gu#hb# z=JOW{O^jlON0lHu)5$&OrQq520k)qa#6fp>lv{GM3sHTk&V6zjw*{Vtyj9gPSF-xW z%oTyf0_S>`eI1PHF!uipmvi%cD*q=z6|cztUC#e4#{a&1_eTDAEl-C3vjxwwf4sEa z@OwA>-uIf{6U;VFiWr^a=}a|MD_@OcBamPyoBY_>E$iBwL-Ot`a6pVBE>V zxEze}9Mq*B4aOz@@K$zZa6{Z|zbZDD*2}_dXyFe|P+44{FSMZ#{2(C9;qdt3-&+7< z`<|b`!jQ(CA_J{3oHC1)YnO}44$nv9K_(0`MUzu;>BH*6RbNfpY}0Yz!kdS=71gli zY+BS~HbcuA5g;|N>~Q3|n-?c6iT;EGnS5xo!N9OMac;Q6|I|~=|D|th@>_8H)|H-1 z_`eMVfLoCNt>5_nU(0jQ+5dH`+3W8iK1vjxUqrWa{!+I~-~|qz_4?cG4l3+-Ud)Tu zYW4VZ1ir9ddi-o>r+?7sJ=F%gp}D>N(*8lOz1#j>tDiRXc)!zc%C{G-ZmIRW*J%Kb z#?DTFBLDHA)Bd*6YZZS)HkDqxnXB1sARug4cq{_s;c4#y3fGq(PnxbW(u+{(aeJpF zqw2LfV0m20JK&Tt8_zo3_O}LB4!Gvdvu%LzVt1##_nU6!V|V{qr`hU1>g<2lZFRCW z(d^?^r?uB?ZTBC&K(d&fhA>?DkKOr~P_waf@U-!$g~@2_^ud?4o`*3%?d|TQ^Pd|t zKVgL=EzRzMeKAm5jZX7vYwt;WueC79C#}6!2kX)YB;I4u z?neK2Ezd55@0!Q|PAwTv@bBBB_mU{QWZBr6TZh@-z8I=?^L(zSc>gyAEp~9vPiklH z&u(4uxn%z%+IMdMrpG#m6cvpf01wRK2P$^zGzZ_kbQ=ymA)i_>P_IsptF+;#G^i%J=PD4Q zmb{+ltc1j;hDAoq#XZSX+3)GloFXWQ=x2W6e zw0`@nv9nN!7auLe^%t#mA6Y61&RPn6;Wx}_&3Sa?r;z^Jruj_wfED@w`wt%6 zyNAeH!vAgFE`hgWp{SmFG?e}5B~z1;b~arY+w!?ipa{ck*6aQuj&jWM@-gZT$Sf!wV<#>pH4Q*9&d6yZiNas~K(lY<+91 zy7_PuTkm1ic2S=&S+6Hk#H;xbRV9YO(YYvtd_ycU5)BTDxc4yVJyt@fVZQe37 zZ#Lx$>#`N7KJRro*$j}6Wk}L7j{dBAar0A*;HZeGjIHd5Mf09O^*(t!MriD$Chm|m z=#}g8hrFqehp*zJ5B20!Uoi@ol(orbv%}iy;P{uBwgH8O0;9tuJTAdq2}tc$s}&s} zd(F>_p&1Q_(2kF>_%-}VYXGsMLW0Bk6b1s{oSxGn{}*?+9^Bh}@UvfNV% z%P_6@;piA&j^{G=Mhh2^(hv1O80O!aB4vK*OT)hO84DJdyHY_Ry^r*TJfc8RBk=eY zy49B$R@pYbPR<4ZrS|%l*>^B7#5>tY@IDy`U8ym%3J$%=2!GEc@D>w#BrqF@#~^Y) zz<>)!2HguX3{s}Q5#bR1T45>s_e!$uE!P&ZiYUT&xaL}9uRj7JRvVY|_5u;U^yHWaM|tNZ<<)A4yC|CQ9+ z9hb-b0Gbmpm7J^OGv zbbJ-Jo4gdb7-TY&GQ?66|0R`7oaNPCYm-^|tD->z?|$&L^zZTv&m=BkqO&O_5}dOA z#TI8sPknq0?OO{{mZDW2fkctnVm?AXA<2X0u$^P9Tbl*Y zprBQnofF7Q!r!9({n-N~JhT^J?ue z?R74zyTwmX9XP(OP>tqdM=nZ<9GfES{fOR3cX6HfBnqQ}ZQE}O=$QlgFCqa_PTj%GN z&+*l9AJRJVB!l0uc8hD|aKoNl_H^^w{Kql!V48rsus)_0ztbd5+Z>OVyUln?s z7h=pE>9PFPinBHwYDV~E9;R-#!tAXuG;OL@IMpD{j7(!gtl))*$%2_m;Ml?@G}ZOH z5w22h;<AQl)|V)zW6jw z5*2B&PV}wbwV)F85l5CXpUAJG^~g3B6x2dL-@LpK7)31<_%&Oj*$|fJ6DtdZ#wA*o z_MGB`qB1{R;r=V0Oc3G0sGSIFRbcbj{0(%ky=R@he(%MB*i@EAlPu!~yuy@9=H%rx zS%aY`V0k79?;)_RpG9|2uTsSKgmUQ27HoB5W0;N;;7i5y!SD;f^cxKSC=4GAuLHwB zALjyDDeyqgTz_0mhOCG*YJuaU2u6HBlptCTFdP|y(faE4z0ANyLqo_{+Ebce( z>#uGk|7w;Ihy<9_sWg9T?t}FWjrJNw~ZE-<6HvdY5;L3Y^FkE?$f80TN-Ftj6yxHS7d;Ds9d@%e1_xNYL-K9|s zg%Ic-6=}kFSXG&4R+d?S1Ad21(GrD=OXV5XnbM9>!Pu60cBfO?E?Bs`!k*Vs*qo5H zTuBv?PR(U|E_6}U7<*;4(Cw0eEDGq#jL1V}^Rhcmxp)efF^pv+AQ^Fw69pBtr9~Nr zXq1Sk$mJJ`Pga%&EsDXH3bj9iO3M_Hv`fRWofig$thk3FpvOb*_q-0dcs8x5R~ox+ zxWv{CaYHpz!1^5KTsAbL>N+ly;edQ0!zr~}NMSX3<@&bh*1m5^N6SU!S9XnM!#W<) z5B_X;=`5=w`zo-kNN_)rS}HOikNlx0l&cU)G{oF6rB%tMF3;~b?*Fl{O17}hC`+$& zL25o~<}OH=(8?-mEZrFafBoWVmbUSjDkZb|`(z5~>ISMcr;PPaCX1_)!!|7kjY2W$ zpoEJ(8=Yuke+}I^98|C@us4ZNC_v#FB0vnc`fv8G|ErNAhX3wgQT06qEC}eG-}Uvl zqCDj|f%Chv;#=olIsX$z+mDB886ECWu(m zc$~DYDq1Z#U&_`MsW1npc8@irkY?WUHzg3Vn>F3Mu(D?mGHRq&b<34j=bBUn(K5V` z(37h^d4Rh^V~Xw#71Yi*H2>FE9aeI)zRSK^jM9|Z(80R_Cg&7-h95NTziA^lE@jJV zMB;@!PlpZ;&LJ2ZQ4CnLtK~m^k18fabF7qUmYyeRAhu^bui7<_w@Tj?b&l$XJR2JqKytQ|pXf5DC#Un( zWh5*tpPMSWOZOS+E!7pH6(*W0kXK}pCm$oB-C+7A>rG|Da)oo|Dq2NloVTh@Flkw2 z3d|m`5k{m3GGm6^=zd3;=_b=6(NZNx_O9-rfiI;i*@NsyCP4zAUB7uOAXld?eXH!^ zgOVg^0t-At&5k02@ZeyUz)==fQ&--j!eFc5T*umd4;LjUZ^#^}-b%`K7SMIwICFA&Hwr2uXqXA#?Vo$8y7ea!#YKB3oYdij@%5wSX~S16(1%=Mk|Wdxic z5mXi$l@x~gpw4PV8TVm-4CaDFK-Z|HZ&cPfa7Z!u#fdDt1bL|_#UFQG10jpHs@fr) zRt4;M#`XlX;meGH?RFn5Pp$O8uswsNyQKe2sRqS$94BB%HLBfOHKZ!$_IipE_N7XS z($@9^Pf?nnBcTC2F;&zg-}pWUi_*yMQ`6M$K$t$NnUqM5W6XR2mpvR-8<-_*^qkmV zVpgA~fi}QJ#X;vnb|5me^6?#@$w#KsBC+wcrr4Qnid}?#7b4(_V&Wt{O`zD&SmkZ} zk~wn-dqZ(EkBkUogDwoB1$)oD%so?BduBEE%x>$cZ0fOXzHu~H-Ol3xEG#}VSbPdr z8oDMWE#0LkEKh9%4VM*@NsyawPyuB3DfVa7o9@CgR7ufWyJO4HRLach*$KAJx<;HT zdQ3GPCVy*1D7yJdC5=OkKJ(LRq8d$IJ>-b2vZV<4ilRyN- z_iDQp;%0!ibqD=}8Jmsl4Ztb#m3rPYf&UFl;AUVlV>-k%n!^nG zgVP#(c(t^MCi(bu_X*zBl`{g(@_IP_NMfH5vQIg$009VQl4{3?rJf&dmPNU)*YB;4 z@C2H2K^2I&D13*qctn|^g}wJ{Yjh8P?>7(=PU?_RtAe_{b}7i{O|rnM%hW@y7w}Xd znS{ZRBCXH6Qlp!;`s5r~3$#o|1Ur^CF5SeCs$v$bQV}J*2dr+>O$axOjE0 z$Lxa>u|z>OqKpZJ8h%)VMy#oDGoc@-oxBzKus{`%iZTd@r)#SEOjE;Oo;vLjLk_8q zfjRD}I?1#tYtH(W-%Zo>AwBxgM3Fp_(1zr6(9g2Sh%t-Q+l}6DF_5g@4~5yb3-kQ9 zSV?|Mm;6R%P*c??nMulEiI!Mdflt5(B;gZ!GAPr1sPj!nD%wqk`?Q3IqjQX+(|y*} zeX%@q#fjFfwA*8PPB5w2hh{bVJ(nS`92X6dw3_!UV4Fh3GMktf6ac+AV``Amr4UD? z*jHYJyw*4tHaI2QrkJ`c1n1keL?+|d*pzTCCDsZfQKT;tw13w$SCnXCM(pGP6z-CP zm9U~Lh#eaKB#?!_>*BeCNSGJ>(S%tCjd|v=>-JI9ULN}32p_8p}N`ZP4;*;{7LU7Cn_jOWejBK6h)A#ReD(BFtt{U4wVwab< zu|x}L@@Z$_gYIcJ6{UPYgeqzOd~gUKvjz%RBVYFxbF$-|7jxbvhpwFKg2Y!)+wxK=vb3@G701MzRVpIK~kq;aH$P&i%>cJB6k;7wse;g#i zM@$OTN>>-sJCSXJ>Shcj&Rbwsn&N6UisJ4gQ>3{Zj6R*eP^sgBjbgQieZnq)E*D$i zI{71EPNqJc|Co8*epuI5u3{ZUEWvfCb-EFaEH0I!xvSzcwFRb8IXb&4Dl=JR=53il z`H@?<%=AucSY`?gMn;;7?JP6gnQdpn?XJW9aY;fNJE~f{ebj9dj^mVLvD_EoTPa9q z-IvNT;v``P9&|h6#|Wn{RVoVDIVf9jd84bd!v%R-bkmEZ%ME3~VU{~|jJ4!+%VlZe zamKt@LeDwO1o=p&;EdUlE7VA}P=lyC>1`1el?JLpSP$DX5mqOiOjtrEbtsET@s0_r zlfLkT6*5F0w7=Ts0*le~hFesO7bn*NprL6EheGI`jcPZHw@{EWxVMoZ<_NneCYm0B za8E$XA#1!H9Qp|s+xRDMWEx9BGBj8edc3XAg!+GjZZdlT!149}-noBo{hnX{5C1Ic z|J}u>SpN^p?H2%S?eDY-H)iFrQP}yFng#Q0kvs=2TrO`1zh^2e^`!JAEHz{sIR~H{ z?^t~3>evDNs5BmK7Jk{n6@NhIf_PuzA~p_{8}CplymzH=-clidkaQxJEbPHra%^*B zeQjg?-L-e#!9Q=)=-=jRx2x&e)8XX>!EeLA(#@V4&zEGhy2$!kI?jz{r+v7sNbPTL zHSWFlfuO@ec~SapQTpwLE&T@CH?`mF*Yhg=R=u)Yr802=OoPST@cqPUZg|Hp=caA_ zayj9~55C&l`to4shc~_{LG#ZGCryYT=I_9ylnwl24;l-V5Nkhw;#m zeU!0!XVXBl**OFVSwxHYaf!AENwxB9fZ)| z-Cm&^pgqm-7?_SMxiN!kV(5~EJDf~b^b&)lX8Y+vOGO5jA^cOEMMzQy(TpkN5WsH9 znPCXVA7FUCx%$mq=6jkl1;B5%{N;o~tqkTKauYI(2f7R;8-GwE**M+Oo+8Wm3tI7` z1yAX@IN{S#?bMPvhp5w1m<`G+Jg8$Fn=%RbY+3%N$YTC?3;hpql zqi_>b%%poq`Rk)s#g;nhRoY`e1b&nIXQ7^zqxhl`X1^4L(KAq&3pd>Z(Cp>++F5t> zQ&{+TVtaXBE3-Y`e-TpKgFI%AeIe?bBI?E7*1)-86>jt@u>%Dc(d5>~-(NY``@AH` zC<*-30wnG^3ZH@CO{yeU)Q=R0bSwGc(ZeD^{Ou=*2aQ$D5FZd*m1WeO=7`UWuFok= ze9ua{T&j%2bJ2fJPo_UWP0T!2Bf2qot8_X& zYKoA=nc@;FW}UB>OceuOWK*4-O%(*YNT<3;r#i31XZ4bAOr7>@p&QL#H&W?xOKDn5 zZZ@0MeB<6NCEi#lQ!ke?#W`H3)~70~RQ0r~>RCPJtB1{?ip`*n-ChC^jD3C?Knnd# zt)xwFCsQEP>T3U~G$vrvx_M0Owg)tePZpU>7MV;InM@X$Oct3;7MV;InM@X$O#XM7 zOrQfTQkmqRIoo|^wExt~W>Pk))W~nb?@vl}5*?v1%3UNnfmI-o>tqZl?QyJ4i0|Fr zlS!B%al2hizIVL_K#Kz&HIM+lh@=;6r#EdG_=Rc`7tT~v( zY9vCbfz!+;vO1=+`IyXxgQ@LhHEduNlc!9~pfZ&qES_3rI(XAs)uuJ6apIM`O=Up7 z0~QOD=_s0=U~b6?(927oonXTK|E#xh+xP$P-`{xme(C=II~$Ap|99~z-v7sP`}hAp z$C-$(@wW~ht!sorH%jV^q>*3wZl2`+Ngp0!VrfZLm`ZW4Rd!&dlQ-WhN ztDVWA9&B+!_z6?=WtH7Knr-80_uM@>hm``?p|vbWBVEH;;JdYZ>mTsByBtS_-hQup9;W1HlnFZz2{KT8`goWOempk%NEZ&tdV-k}K?WxnHb3|T> zKOcFuPNlP>-JOHo*5TF{u}<%Erw=7wUPo1JIMFo}$nP`c-4qtG8x9>hCE+64WZD_q zL+dMO;z!%9ov+#t$Mn#WGzfCk8ut5AK%ZAo#W!!K^(geg6R4^)y?U}&3-)m7>Q#L&V1$g{Zf=&=2Hdw=xK z2E8Lx$Z=wzN{mUL-osN@ZR+6q^r`kGf{(@l$nd7{A)by6eL8G>_@N#w{(w9?!Wr6# zqVO*BU~liMcI%P9M2us&MLv{Ji_J(MJBLRHhxPhNTv*aEm90+wYrU*cMyi76vBJiGZ@6!xi>-M7t?JhRTwWvAeuaiUD1 zaEn|N2RAIg{0N@qE=Pd;^wWB1>`*C=$o#$Z$8uwdVD``G$JNHh@<^B65(&!@nX0Yv zsTkUt)3DX$1jU>+Oh8t{^Ing1-2NaZ(l-T%&YKOy&>aDQ#$zp6tiIT7Z5rH9dIB{;$M_ceLO7wlu`i4@U%I=Aj7`8rf9CYI=ZlOx5$p z6^>Zjxf7CtOxQ}12G4(4z;<(pqt&XMXjYj5-Rm4yA(vl-W{H0#rx@{OG_9Ov4M{1- z4id=Rk31^i?0*85;55am6WfbffhqdmJ_gpq}t<0HVg68;YYiEaA z!$so{?jt81Bw{2TxOpPKx(K7J!c29C@~+I6Kf)PDdEKKRLhj_Fy!|5$C(0i-=%Gd< zfW%a)3RYt$&!V-T{O%@EEwW}RWFEsqkIiP{4(vcm=o;Sq%WUGTYCDw(g?hiUrWOT!jPsRD2m0J$c7d9N8awxC9#W4!n(*{B+<*P zwA0`{`vJ-RPXF|p9!tcH0)rEQ76pMp)a}_d^Y1h9VSp?S(xEyi(hEK%z%Nf{Z#Ej` zKwLBr4cEyHiN-|7+&`?qu$^M`>gRaYO-5cBg>=z98PINgrh-WZuXHqSu^KBhg_5x` z@VE+<4A6hZw%a!$9AnD}S6i~Y(M-60SWt|N z=m)n>aMBkIyi9uvs7QiS)1HDO5`4b2=T=*(k6#r#?%-S|nJGtXb~YLer;E=@6Ro2K zo}k3c`KFTJSc)mm2@r~9bM8mJIlg% z!KsNP8v8sQS{H#mWu;<$D2G-(;dpb=;WaRB*tf|t5mtn-yN-eE1v*|apuL`ueiLR? z>_-BOv>+F*&EZ`@%YZ6J|8>{WHQT-1kK`s$Tgn628wHFY2ay=CQ=+v=c=&*%AB&ox z62x9(O+)C2=~cI;@qoLPBO-e$PF{F23M(64I_Ht#oPX`93OUV6?+;2-Hn*MWBC?8bhpbI}U+D@3V>z&It&pFN@$1 z5~Uo{o)My4WU4yKAm|c&r<|BCO?Hb4a=Sdkhm0 znbqWisn~!?e+9TzpnbVdiJKY=;(r;4|AnFUJal9F4aAO$`}aE}e6Ua)v?_Oqu!3W_ z3t!e`u4#Cy7Hg$&f$`}x~V3(O=dlZ|B}GiCgq zWRLnY9l$vgaworlEPaGKB(;x)Gw!hU46=_&XbT%7`U7}7cgkxTWK7qjK867J^tH+i zJ#NEQKcCroy)Zk1G`-FXy$77QRy;_zSbcyNrZk9@g zHwwM&!>?xA5tQOCmOvfOO}3nkI}*(g36VmX=nCIeD$oPSAIccMO4?b9miS$J+Bx;Bh z`aDE<&b(#USz9MHKpwJTJx!j;b@O?8*5-V$GpY)PSJl;4bnn$rP*p|JZb#)>>5)$6 zQ%>j!RDvl3xCyj5KV10!=bb3UIt_7^*y&sSvnloAS(M@6{=(9% zN^9qBj3s~BhBR&@Bsi~D9p}mZBK&DDiGs~!LL*eA2sRsXdtReK3nEn+F_@wj*SJ_J zNw6I^76NhUJ;gU|(E>Et7sZg{A@iYJJ8jA6^3ir=hdhqVFTHWh1my3ED$pJ$S;n$O z07>#zR?m(xrgIMa!$8KMXfUYfw#G-QK8FDad4&8hf-Rw#uLTK#KfMn+}k7RA? zDPSus$37x{R64f#5z&RJbf>=|Af2N2GL49r&h@mA9~bQO334y?+^v2}Xh}1IB(ziZ%6!H=?HHXnWd&Iy22z*A@rdGS?qj(!+X2=KR^ASj+0Im{48X9v zyRDHOpPiUg!cXDjy8Rpuuufppz+QB!fy%}6N3d>Z!vCCr?A%p0K63;Q=5jAI6SC9| zLv&)-Jr+Wh5#9J0u22?=nvhcQ8VOXaU1}wO=Md7yD8T5VX20!zk z(~~A;&%{CtK%MUzXjAGM#aR&sjJe^AKXb%(>x;b|{PdS_8C~61OWHpKN(U00d96f* zw+bz18QmXeX_GSr$m+HYpTd5-wR}G&@Nsk8P~51LsJ`(VV0323@`ce&I!t z$3+p=R;!Pe4I%Og3H(W3gm{N|)03LKm1`nWQ#DGKZ9>{l?-o;3Ajct*(bJk}umrgt z?^{#sY*g#jJM$e82_4b(WwO1{zmnTp5_R#24LCHwGIN?;NliO`QnhzAXG)>~EQeT@ zT>s)9GML#XGB%e*OpQ$}6C7fKm#7V6s7rBb%9)Xetf_VdCo?B&aX7o(3_j3Ps?{LV zg1ACSK5P%y!B25(N($Dqb^Gr6fvmwD-n zMut`GA-jjB=bwc>J#@yZmgZ%TFwsoNQc#qvOkK#`*~v4xsZO1Vgnh`aDqzF57#%_! zo(@E(*qXOb?282rf(aR_0L5mi-tEpR@!q<+OQ+H$&p^^k-iy*Y+P8qOci)akUN ziKqwN>h%Xh>Y-U4J$8x*e3f0`Qq*It$TLo_VgD+#C)9XDqDLrvVstV%ys3v@>3J<) z1mMurq7v~9<8~&}+d^b=I0+e)t@F<}E;9(a<2vy9AUY&YYpADzj)t-5y+?{RSCnKQ z52pd2#*!UJNlo07P1;cyf%5^hNX*k!e%qwhFecl=qlj?lb&cZVMYNuYbU4AG%+a1* z!LS|c-m#=ZK$$4j3rvRWqkRiM0BNy2Nx7aONFv7m?ov*LgRi}qYYp#{P3wj4i@IPl z_7LcW8rz+^8Gh!P(zupZPEVGXxbT}K%2#8&yb??Lz9MVgG>I)5%iP3)f{krL_S%Ut z;EU@OFH8XVca6r&5&-@juUC}Dw)=R;j4afFl#=R8&6hC_zRRm_O~>9e4n6G_y){<8 z3l~37{v}i=vT*C-yg$I2UAheJMaS1%xY!2~>h@*i^71I|lIN3)^I~NgspXb-IbK1s zp_$kD?=1elImMK*SF<2(zEplnSVdj0y}oN)DR`FC;JeiEvUd2cz>nkDExD+A>9!7= zl~Tp5pr2;oYaVTtK=LXa#zIrl15rkpvcXk)TQK5F&WLxx6tyF+>##?hN1~jt4eGOl zGO2$wiBc$+)JZ}caJkmDn@&rk(#FO94f}wY{)U%PP2v2hd6AS~yeL5Ey^DUIUB9Kf z0|%PxQr-xz_NTY>(Qi0g$JO;j(NJ&n9vwgFuCk{ zVfkG)%fg944+yXNCxnOX$NTNA7M+#%+q-+;v>%4g3KA9+##9MFC$>YeI1)Eh_N}>x ze8Nzp;{Y)|&!kvosgR$Su*uKYRC@g}ycrpn|1IFlp$h-9ckNA$6hZudKgFt5nw)@v zL)7z86(FaS_fSAREz7WwMN)<&m0iw5&+qQ9ySKBG*_nMLAtxLu%M00^o}TH)^z`&} z8%TF)cJr0PLHP1!-S~oi|Ba@_zB~~|>M=t+z(WMe#@Cu72_mq9V_o8N!cf=02B|m3 za^kN)K@s97BXlEA?ZP28{2a+WSjMWCm8gF|H({JSGkvK!>1QsQaBG_Bh!cc1q|*`X zi|+;%w6B%ZK?^c-6o@>^hu^B}oDtXc84WqepBJhxO6ukpOY6b(yYwHkG%W3es6U@b}$+#vXN6{O7wpcY4+Nmi9mFxm8-=2~+#*UCT( zOthW5yilzId1!X)3*_DLPkH@6uFbko5y0a5e-C$Btu3qm-zQt2w(jfyt>R!@A__GZUrc z1RZqJ0Vo;0Vv~uo^@evsvl?|QtenTV+uSGMYV{hvCvm+A2-^`SU9P3^b&#xhodeh* zhxuFy3PGko++x6kwUP7eNLysd2qbqxpcUICtZZCbUfifFj%`Zr4Cuv+7nSRclU>UQ zQ_9!s`9yfuDiszNw@3*enb{WK8ZN?E4J7c_EoPo1tdWeS0`ttaFcWwBnP>vbK&GB4 ze`omyuVqM>$eR44Z?hQMx=K4V+TK2v1G&3``%*ct$jOiH)ZNSf%oz|eqxZrIa=(y+ zb)6ixeX{d(z8mkm>SH!t;XrSV(tKee!RI_C(>vlK6S;lo>~VG+NuR6gf+ z%ZZLK_*qVPps#J_rQe&pqvQZdK(@aFab~l(l96v0*U{N%O}4ABQinr2Aat<_es0n( z_wD76*>l&xID1t^XT3#+yK{9%o7=~57*I`qtD@#|r?on9)tJ>4ETISRZ!trr?L(cN z+8jD<`C;q`z4A0OqpsE@TwIrU0HhKS*UHKsli(cplX;;sAi)mfi=t8Q)``q?7Q0y~ zuR8H8H4NYi0#{c8YeJL8M7XNrtMwdoxp5S!=OsrRIB)fuqcg=2^e@Y?HT7|ubr){m zI)lO0HEh=2Db4vKQ&x#Bhk7r;v(3BbNh43YLeTpYGB0n-)(=0|WmRS_Oj0#Yj4*5$ zD`tu3@42xaH{LD=Bl_PYhiPqHi%XK_j(XE^YMIVuD5x z?q%#=#tLNYDmnk`CYQ412u!K09JD`KOjH2iUQ+HQrDz)-esY6?vK%>)Ix-#>MO9ZQ zUbbS4aX=$Ck!D%k#lt0R?`Lr*uy#zGmB^jR!^eBUCtIJj5PCnRIEh!m?i%t$VZwnA z2R1}}lH`OmLd-VcPzu#ywiH=|VkX+}9L_0n6ks7-_=ZI>JX~R_|*9<1^fJ~7H4l(0d@&ixlq>>qFc9aiNsxu2CPw3_!kKW#q0F# z|0_7mH8*IERanO8pF$SjLoh3x8xwJe&Q(e`plO@#w72*r=4o zxDXggig!sGq_@xAbQ_MOCEml`J0r_61_a*7(r1V)Tc{W~U!rKo<<+HM4FF=)^P~Yb z(QU2io%2vjohS%p0%P1RXxyu>ADvW6%c;Dr^>HXUKW{7{mlx0me_{r-w4*b}sXaY> zo4rp7sC9OHS})5NYfkvbR=Sc>y_eE9%Lj!~x#}^ARunB*E$<2OQN;uk^>UspFNnvf zRWa|?AxO_kD=6T~xA9%K9q;evzwMvm`~S4W?rbk~`M>o3e`{xRbKAQAzrDSEfB%0a zpPBprLT>BwKX3bykzq4^Jl(v1+>7MP{oVijyZ`^=yZ;zcXJLl?VCVT&f~>ZgF$Ht>5=P7h5Yhh3I3?|K_s7SNJBQul=g+%GPf?xHPL7Y-O0BIn z_i!N9g|bru&|PxrmUW`paQD7#AGYB~ICOQgxA1NF4(S8KZ?nwx%r$ysVnVWV~yL{E)sm?%cVsmF}1nFEmFAu&Cr5bSJ}ag^xe%kUNL&Rl>5ldON% zj)7k~+Jj(PMXyQG3#)w+&Mb-UV+~uaY1T5cd}ncpBb z_|0uEJU;3kJa1a>kMO#=_YT_Wp$LKo_@KR)R(iyV5TK{Ele42#F15;R?sXI(gG~4F z!IKVpr@uj9{Q2kH_8p_Ho))|^`%HUFClyC|S5lx3 z(ws#IfT)lw=wTW*4t4Q6sz0#nsSu54op0L52S0VX82gVM|AeeZV#ssQ9-|IeZLwxoFzuauL@@YZQoU(!<*JkznpA`~)7G?B&mo{BZD~;wK zBk=PX-Pyhxe^Hb#Q&SbIQ=kj|pMuLG9X?E@GnS-glaMR}kYFnSdwCEInmmb&6kueF;-F9J zToFee`7_`u_%)730ojxOaj-Xce?bf!NJmoC1tcA zh-M=;2(*>q*^V#Nhen2OcowOUhd~3+CP@>FaT>v^lcdS~8mUn;o{V1hDI9GAlwUR1 zG}>k$o}$bOV!r36AO6<*P?gcHY6p~8afqRCVIcQIwb+^doqc5AS44(aY_;4$0>zxowLo^!2NPkp{#(J>X z#7vgFhN;D{8tBiJ8ZL9t>`z2rhi012Qx43L=5(t+s^O*G?XIz|H1>$8IHxp0Tg z-u-cZ_sMj#z>A!1CfLJlvbAdNsk={)_PRe&3ZV}^Fn;W|pYHE$)9Y%-1Z_Srf#iFYIq_<8G94&lrGI0o_MWna_K0KWo$ zS~WX)M`Mfh?3jS5!b`eWz0-lt7;F~RD%lYndec$Z=$Y@>ATjw#>h0`y8;wgkA3Q#2 zHk)6R&oANb5?9~wfS*&m+J{f~SSQg-%6K+wn5rp5?LlBQr%iyg)_Y~p$l>Jj?2L3d zej_j0;+HZ6013rxpoYKVwo|rCBgvz9FG1{&WR>BODY+lxfjhF2E6^N#GYuM`UhbD!&c+r$w0&z2uP*8 zPL_zDLi!HBQi`@cX%Dx2lV(mBUUN>^9DMC1gYsiFUaZK6r7|xS2^A@OgvLoF9LJ11 z8PAtEa|3E}Kp?dw)AP+WF3kvG?6TXXYwiw>IGS*niLGg~Gs8;-^By@A*!!?Cy#)nG z1Y``}p$*@9FQU8BT;{QOEOCA;(mVGm@jfxUmA%v<@xDC~{&6gS6bpuoV&|3>on(kQ zBl4>`G4K2%Qi^#y!Z;oU>(dArJS8mkm}CvHF(W#Ml)aa%Rp~$Goz0eJ#xz41WkOD3 zY`;I+JlVkJAi3aMbeG}qTF<%_*m+h?6D}h@16gNgTBidN(){GggOeDboQ-Vf4(U4#htb;LE3L6C8}V_`)@# z7`+^?%1zzGu52D+BGyM^zAoEO3gSbx54^<_$d@-o84ZmoX7TgPCe25k+3fIDROLN% zWyW|!JzM^)P*M+3l({bWa`?G2lxO66JysBjhNQtu2&M;@8%D}xbArqZ#KTj@T-r)0 zY0s$aP)^Xpj^=dUkA1)Jm>KOaJ!jQUXzd}dhrUz;@(@wmJ>qkB<^g2}nj)JSG#FOr zrMjq1B5D~ctMssU;OrA?!JknyCQ|FkfF~5coUQE70W0AbU>u3%NON)FM@4^4Bq~L& zhe&F-fW`@UtO8fbjcgJ9N;2qTGd%{ehY2V=S8s~nTvOA4l(I`({0kQ$J>Hhm;fZX4xYw7O;VN8& zlvq5x)DJ&Q+!wE2MrZ?7!sNpLGFY5J0^3FolN*jo4YXur;z4I%F>ST*yDe-kRBB4H zbV!pey+l0@K=6pQt3Q8Fia2^Q=Yx-=X-}U`7qTl+8pp1iN*adA&_W~#EO9%(o zao@;I`j_NAG7YP-PA9u#lw*d(GVH$4U?|dbCe57Vpq+UyLhqNfMn!9cvjK#<)`f?; zLlUrpS6$E)8@RV@<^p;Q)&%y;U0u6K|8_}7bcIsY*0D9~3Y@f^Q{&TOvN~0tt(L4N z=3XzWH0F^7bri8j7cis+RIu0<%G0sxPm&ZN>sCkwVQq3C;X|t@sk?yR@bnS??Ai@jE(u9o3aG3Qw;z21^!j%kbTlrF( z!i@#)*V$#6`lVY}byh@4HC^|&*;s2oQB>vKpj)1315AydRC;uWc_|>xH&J3{z{IHz zZv!fL7EkpEh;-Fkqs3%G{lDSIDUX$vD0S+4Rvjk2?8WUsDZzhiWQBAeLB9W;;}jnk*XrHP&!t-LxcdC$ z(Q)9N$58jILU^X9z1p0nYOKb|o1eT_V+@+@HNIP{DY7Agu?yj9)2rmQiE9!TmYhY` z#rrKKYfWc)IrW!5eNLL=P3(~tBD+)qAlSx%vEH9)Y*-qsh%3O&Bd35st-RFD@bE4sVcSs2B>J2+2oN_-+K%XbB7H#sNpk zDC)}3KB^RK#LvPp-%G;}z};7;Np_j>Xn;^<%l+wN9Qvs~+Z@mx#YCAz?a=no-oZh7 zlm2Fpy7)quA#l-zY%NYqZY01`R7^LE;_>VX0aw%AX-{6&l-3Jc1@l>;d~;CH$S>P? zSq42@(6Z1P?YuIHl#J?-Xs+YK%G7}y#Z4Yezg?EWNSI*O+_KC`dV>VSB^3e(eQVl3 zsm*{tf?X0W3xO=Xd-xLcBB+`=Ox_11E$@&^Ij1dqJSoRnue)Tjer8nzQoop!RI zti4~FHv=%Tjnr&;4j0;HvJT^<+R~@SF}REk-0jYNIpnG2SgbW2vn0M4Mu31N%uKjP z(p@yEx;zX1+1&DVQ)8}}i1TbRrY^RM8x0msRa>H){K~5&Nxh>+2)^gC?Xk}D=fLrs zI$>{i#R>*!o^H=a;|QSmj`kZ~x@0b`cviMtoa|~wPVj)t&M-fUyRM0xvCA;+tKE6&l?KUl4|F7XJ~tj9B$|op{p<#>v}3XIT#PX>_U3xD>R zgEZXJUm)c%mwX8khaRQutf#?2sJR62%6qL>?{OrW^OyxFXz?KyW?=+hEcbAfqU$D^ zmW^4lb;eO9tZ7uO&`f65@r-7nqcDYn@0MzDM=Q^UCOdUP2CY9^5$g;{^zdjw;hN7j zHxhKr*x%zd=aN^r&N)N_!-8y>302J%4G7iQh^bePu66_jF&yIS5Kdzjfty|3por`R zM|6{AuZOI+*tWLKa|c^gw%85J+Uj3Qs)-4IyABBJT4b!0h2S~0Ja2u%8EdS9W8j6w ziU$9!VMR{htV&t)o*Um9ZtOyP)>4#}stA_zq?i`s>KnOv($JMI6G8KQU;!AgX^T~C zG-VdeW=LmgQjL=L%k1fk-NDd?bJDm?aAOV`l>=R@{er+t?$QMz%iC{tpF+4XNpM-t z+NCdg%)I#HcL1zHcEsusKK1Oa>#OqR%8lsq<%kY|+zZaV;4E2iXw{j+NT<(Y%T5-? zI*87b_4uNHj?+Ai1$hK6{qjpBYNMJO<;QB=dJYC=@Sc-N1q%=Ivf0PBK*Bd_gYYQ3 z179$NOj0#cQfhi9Ex-Qyo|dbl{ zScHZmF=kqhyQiCZoCy4~T#lFzi5Dgkpsylf2I*@a3M7+`M?>@0 zhmY-)3d%j6CM_?gjwTj2`N~q2RQWC`{GdAlduF_`f291Bz^7+6@q!l#VgH>v_1$pz-$D4~@4!a#pw`?VMRYS>XwOC=XNpu+k zbBxf`cFsr>Fxd~J0Aa2j&NA8$1&pRirf~syl=LxEF0Z#QklPGz@ZH%_xaxD3;BNcY z1=ui*F$N&BYck?t71XmyVq}&*f+_gNO<^nzQeZjDYTM}Gl* z(D$v;!YMbuI^T$(pS}q}$8Sp)^ttynQcPP4PD}lcLpB-lfHyStnLqCLuA)-budr-5 zxfaj#fE4jVW|x@z<@9H+cIE}q{A4ZG-%UzOOaY<{w#HwWuo?#f&|0s(uwsdp|e9!-_c&SXxR&bM`v&ilx!J*68GvOXV$;t@5>~ znrxlktZX?2OV>2JBGRO`bj`bv#RE>)i!#SUR3yQ*VkrXDXY!;zy5Bo2JI`*$7h-*! z)>wzOXwQ7&WU{p}g2h)F?W~iv%sQw$&J@q)4&-8{ z7mS>ih$yD2*dq=TcqXbZtzWI_r#!`IqTc$|SRHN|{<9Q_d3+kSCiaalVIlvWBL!n)SbTI_oL_-;9c%JyvBukQ+k)tr%8lKzvFjcktpa~^pHt3{978)KS z(LsqOi5j9SVs9ti;opy;{xI8&U0{myia;^zry*ko`q(%is7Slnd)*ZZwyUVC3W>q<9~$;aS?G zb91Xr>@($b&KGu+I$rNMfjq0WVg(PB%L>-4$IP6jFWdoQAj5#!n9;fkfc)_rb)&pV|44zYZS&( zZFgO+mS*XYtaGR@G`*Hf151I{L4=${l7@LaJ;{o3brlu5G($b*MTQpH+dpc%txLMU z+7+(!-96%eJQ7Oa8V{Hgnhmaz^dNV4SK<7}-nDMGQN&<=_bHZg4#dHB5~rl46b`QI z(m;}iB-{=cv#~dc!SNce-8NjFhxg#g_#~~ov*Q_i?U)icF|mmqs$;cW4>@Jz4J*r?JU!Lo9S^1`QX(cucP;c}yidcbyM3RLrA!fi^ zfFlM@^h%x@(6MHQaXadOL%=ao-&JJH(bGn-^Zxz!gTMaVu5Jfw4)T`(Lkhkrw{#Ou zZN}GYuXK41S(tSBa!8x4)o1(lM(fGZ<4*v9Fr1*B%t2ilQE@UNK4uxfEWDrB zywj#POMD?wok{_>;cX30HV(pZ<%~Vt-Dp+r&$%s_=-O;25sAnq` zjz*MCE=gJ8g0&M?MX!5~;jp|r4Ns8*cm#PXJ1=);FC)FPn=v&bf+RZk=E;I=r&$Gi zj;Rpd@MPH6<_)+zv^*!)v?s zZV=BF)4!y3XD7Zl@8HJ$rFAX(B0blS?KyVzX`di5qVA;xApexpqua6`7X5}4$1YHyxKJYexy_C03vkc{`lDDq>L zPX{NU15HpIAx|%8=K=(i+e~_ATPD5p7%eX@;YKy?`E$yBG2?1Z zR|F^9qsB5cvFiAG7KIB9wsy`W-Y#$N0yYU3Svit>nRoqh0=pWM;q>l|xc*5{djvlH zs8U;>(DKm+J-IR4v!W4GQ*OSoQ%+`%Kka{!ViP!_sbaXgB4iSJS3GeA#r&#O)U?`A z>@XFK*izp3MM_c99<2f4)BQ}D}vv6L^{hf!=E${T8Brw`_0zV zz4|AuC(mGg@@Mna=H?~}gJM*Vg0-(JTcwQ}A;!Qd={SJTgSPklD`F*pWN0;kCNeZ- z3DR-wJyv1yU{hoSy3j{kwFmNyy8OdE+!j%;HS!t=rYn^isO((8L6?hgG0X%3*IoYf zJQs=5r-WaMffj(sG6g!&f^4TYbGko`GKX(F*k*I$EpzVn>tDAX@17hR$Ot>~f`(8` zeg+2eh<+f(3f`JE8Mk8ICFZR(=`2y@yx4Otta`v?+hXE-)#_k+$MPey>yN2MP!4kp zqX5&f?02tj@0kpD&kBGU6Y~Eb5&DLt_m(F)Ztgv8oivY6O0)A~joB6&p{<8yY<}UQ z-s&D@Lrvz)Niy0hwCJTZ9yW~UQyA8Sw3&b2Mj4QJP^2hYtv31Q>Cc@%(ne-uoZ5j0 zs~6PfjoZ)v{gX0R1qXW7%?&A46>X$XH%`ahUZ+Jh&8ru0EdANs+T6T<|Na}B^0EHi z+Pe4N_8VLGw(srS+qz$)_qN`9DIOJ6teqoRzff0)yar-qDs zOy5)}iy!I6v+ntLDEft7*7`iV!acGDXMo)^_Ji~zQQ8t`m)g73!~zx%_}D{bFMv;k zpS%dM1Zk=At?~Te>Fy^jD#O9TGS~nf1ho+lt~i^YY}o-K!25XI$C={k7)D+qFCHI0 z`MR>#ZAbkis_b^iNp#kw#1ZuY9ROEq)lIyZLY4Ob3pk42^b{;tRIv4VbTg`tM@_>$%# zJRi#Bve`52l4lIcHa;7{9Ty3pPB#&{EA4V*@2>vpa7IzdOH#v5`f6aP9On<_~a;EJtaZSV5|j&=?tH>TJ)BNtIW0 zZD16qLpVXXJ+AMJ`vUz1Tyr$tR^Y01hG!TsCLRE_3kVLg;?2oa=fSJ$RrOasOvQ8% zzjKr(xQMLnbf2>y{uB?(aB%hMpTls}zCavM)MMB-xxQ>3aU}eH{ZsHmu2 zf0t3}?=uH_@CBamMJnCOZ{t6Fye*DTj&`w~($8Ji_IGE$4#A3j6Tg0`Tq5oA26Aiv zxIryT!P{>KZ%&>zj!s~JHoiD&!p+or(mXtBHtHwM(xg-08^PAZDup@vL|*=}+wbAu zA35=8d>OIxxbgn`6_u4ET@}Nm3feJ-YZ;EM`q6%)p#v-hzyI#QpGWW=Z4k0?NWa$D zG7~x*j=Tu-T7J+m5F%MihvotVvAUov)aaCo7@YWl?(RyYNviOb&C7zRQS0B=MVEvtABzm3CGMImaw4@sA&|}B ziA<2^Y>Xr|R_e5DA??JqKoWk4i>v^0l|^a;w-6pVjUaYX_KV}@k!L!6uVlE3fI0jO ziW8WFBw{HIe&!koS$H~o{>kkR&->AFJ@`2y)&CPt>k^H(%OZ84Oa~-Nq|$CMq8`wu zj&laH9=0kgVAsO;SdHHto;)vW_+8jbVh+=069gMt>&2Yw6A068n|!$9m*gJh^oSwx zxRPvOBf#eRBs!cVSc^3@pHLQ46p)~OxgO<^>QZnx-XIBE(zu0&Yb8S0d^i}Nf(PU~ z-b$yp1+*uLu_s)hZxY4@@oPWxI5Tv}s_M}x2eSlIa`Rd77FBbQ1Dp)_ZWG7k{_eSp04LUGV+GIHO zyU*=y`2W@$KHLA>#%8~V?bUU>zw`XR+qL($c5MIe*7mLc_qBX-{$HJL+xy!{p9iPC z7-3KC?f|Ab+rw~96?V85^|!9yS*f@6TF%x*e68zu7WK5Q-&vWTb+vBRm3UcKqSt0SD4Apb}dlAJCF&uwJsy#mpBTC8G{Ht6qGRe+DNf zJ#%#j{YyLh7LJU21k8_Z^MF-kK%XuDYfqZ`ntC#W$6-gR=SU54+qbAO01Cnm1gKDW zPwk$-Qb!I!5};}Ip7~&R50GMHS3&PJ4?a10mIB{#o=?M{5Dmeljl02ba~x{gM|}?m z^cx$&QFKmG&(?h-eB(X6R}dQfkvVkDKr4Bg9m=c7Y^AO4NDLMxTxmcNQ(wZbxz-;- zEIB@~Io^B}WWk;q1F8{NV*uN(wWa|Me=dEy^WggrreWz=1eEOO0|JO6e-Gw}tr9OI z!3bP*%^O^k=3#G?nOeTKGppcFqNRe+o(21cWqb503*fTfl^`KA`l>)q6*Cfvu%uX! z>DeWiYu-r@)`8c|8zG3r9Q+YCI6OOdZK|zD1V6pWBt{r3J9%23Fsqt7-ZWaas1&lY74w#Qak2 zy`ADwZ|*SRh3_a%I08Fc45S5;&S97G{5rtSBJ_Y>psAT2TWP*J2JJ+zmqDdJWzbvB zybfn}qW?N)R+^2+vY|61*G9%8!mKOjPS@U zCvSNTYRvyzJ~P@xM66vwM1B$aU27$Qv3I8H$V=*qtaQD%FWw6-*Vn(Zewe*lQTueM z<-;J+SNTrS^~Ce^?bgos#1p0EZEqZKV;7#=Bk|-m9ydx0EI7QL&QjqOXQey& zVt}`zSKSex?8%zzPpZZ4e#yt=gATiNlQ_GG=t;0cuHIZ8G>Puf-{5p0j|YCpMY=d3 z32&|?C7{APLtfJ7QC6Z=Z@175Ke8`9nIDuez@K}L7{`?9LqY)m1b34Wme?h5xeH+v zo_o@hKuXy66m#K-U}}udq-5exnGNcexwYJ}RGpQCFCsRC!#*zU%Ed-;HAU(tbHI}G zSWbWgQE@9@84Ow$1)V}Yd;W4JNUN`9MvGiFiEKGLird7k}Nhie(-*A+-tW@?#i-UVt2u_bD3s${W&XX)JabcsN>3H!}+4? zT1YeZ+ofO#<{x(WPy(YzbeZhV222EZW~6IK|64of*3P-Lb7q(~xNd)y#>XmiM4i0l z(u&W{Qh3PjF_g7(hD8k!>5{R=ms|pnFTr!z_u49&8JdNWEG)HMeCeG-h(SJr0hQ5w z!qdXiH^u~;9+m@?jC9dqEoGFMo&@JY6-c_fU(^^I#f*b(j5+-a^D(%gX4u&&tc0a3 zvAM=rF?%d~Yh6|;zc$~#Qp;@-$04&(LHNb(x2KPb*>5LDmi^|n-SFyyZjf~`5BwGy zKrUvXtv|nSvR-W`3j$EGP!kmHTaE+=S=A zTA(G|Bk|Tl2fVE+=)x8!8(f%CBF@$50_`RLwOkz2kw{i$PG3QxE*3Zyg^+c=+6CZ6 zHgxfQB8(2(k~hm!up%l}AcKIY8&j@s&8ggPlN2K8n?i5RKgr$l)d&ZT`vK?g9s)b9 zE+;M-yPLAnhxBMe6Fu3IgNLv^jFZGO;y|w0U2!Fb>0IrqxUshK?Oe0}6=ss((kZ_Z z3ThaDvKbcBFcJ%>w!RMKVFO~k6E***`QFueEn^k!CW!_i;gRtbUML{$84wgP-dJ-v2Y;d{*!-{l`$-RcqfTzF)COPy>v0Kgtd4>jP$fi}v0l3EZY1u-Au+Usa!skuQAsXJ$?#cKjQfbjR2^jOdD(~rvDIF- zVWA!B(Nxo9PXr0Z7J&&lJ|yaMkiWdu2l}M9W#c=&W_5Tem(aElyAk4LF_F8uQX5(f zKs4FZnY!e)M-z^$M9W;ZL7gpG3v$_85=SCH2%y}ajE80d&9ac{{hbOOy`n9g4^Mc zSTY0_u_)c{=pD`++l%|iZ!V=_ea@Q|dvFT4anyT)Pf-^N{?-}t^f}kZBBIpj)pD?? z+r^&ZHEs|dTaQ|XDAYB94^>lYB#%r*|I!*{m zn8#PZKiU9Egq)I^sjCJ3KvSZb-hXT-!*-P_!&Py!Z-a8OXi=jLdWr|h#)Hkx%JzfC z#_?hLQ!BMaE1!;gSGCPn4RWJ8=#Uk}#pkwnwl;&i${sm(SVRA%yD4TzQIEhp)OPP} z!9u%>{qim~JPT8kw5|mW#4%LQQNB6hySu*eu5$;w&1N%ruvx2ay;r>#ROI*L5jw!e ziUIG%FqpYVDt#9Z;$9bDv(FBO&WN(lBn(LkliSr2c>%tPI_y%Z7$vAGaeEYvDyhS7 z2p-U#D+c1IxyY|4fHwsRYsP@1R=TABXR88J21r73or&u04dB}wz&Gdy@YEGxEK&RR zuRLA-#ox&bqH^d;-B>$dQNXkGgN-@BDYSS5 z&8lDOu6+)yu+vc}{4rr!W+hub#h{MDb3askSq#eLkQi`GD8mru>_z;Nj;OD+I`f&~ zQks8bZ0dt59p;Efr1~uwWMc+Hg z5*Tt{RbFeny3%F4?Aj8B)yxp8g?vdNlr+=%AkfI43IZ+WWr48jnrG)kiD@rJ9aHN% zuL={7Us3|KVZ>EJA>O2FUz+z5`=U^a{3sX~6eg`n5Qqs$DQZ3Elm;c=>6mRN06Al5 z)rE3VpfhT^WgXZJ~CC&27soLAY7j;rxD=KJv9_CWgbu|@80l4Pfq>sw(`ykYdt}&Z4AK*qDN{+e*o#;*&16 zSU>~WclNGGfa?kE__UI~y$Gvw&zxvQOXh1%mE1ne#p+tsHG)ar9-$JaW=)pz`$ZG7 zq=IWDvLsz5Agb;Z#uWNUgLd8TQKGO>3^+y*LzuOI-m8aBSbpE)qYX4J`$~o>0v~2Q2k&O*qoR5)HLWMR zVSNHtn`?kyGO6X7!4uf&mIKIkqD9ybW3UtCm~zR9mB~^4vWF?tOy%!{B~7cu)@BF9%zj__KvSHK$p^hnL$`6XIS9 zQzM)7IRsI!gNb*7*?KRiWVoAHhaHo6*yXaTBJ44_1t`lLG!A(Oj4skz_(N|wYTg%> zrHzBw4#F~XJ3-0t@+dnAZ6iM?e#c~lthjdYW9^5n9T2Pb!-F5EBQpx##}Rr7W(K`n zcu22GFM(2wWIkx>&~OBH6ueozJo*C03JzHT{v;)X8PvBtFv7Qm0(E8}sM6B4+Vu;Y z3BAY|VU~sOxq-oZ*EeQ<*m*6T5Znspbw^z#AtegGkDR=(1pub9G&RKSRA(o z!;LT)Ts_)eqiL(*)@-A|JJOa zJiT{=S?R{OD7T!%h@o#6lF#>#UdV-y!~Ab*5ns6Cjch;r*Y!DG>cRHct}DDsV_?ZZR6?I zUGx92zUI1Xpe$~EHn+yt|H}B9@Z!Jjr%7Iuqvl51Z{+#8HR6f^x}FioDL&NQV+1ee zYzl%iKQFd?ygk9vu)_sgGH1zJN!NdR;l%~c&a7p^k~^TSu*0#ouGWs%5rJ!=$XSaN zhqOPB{+6(R|9~u`)*DkRYf7&dNp9!tD&$pEI7YBoZKp{-V}FdlKVpBqa7_MmNc=*8 z%ozFwO~UGReM1BkrNuN%KNU$9Q#lC( z5k0+Eh=>1*cA$CqzbFP8%gxmZBf4$~5@nXMJes{_JI$HNh4*c~0L$EEO;f;XU&_GQ zo4`_eQs>t7(dr7)+~8Zf{Xb4LeIPFMi=j?$d4buK5aS(dO~7cnjZ)D~2)9(9KxGs>@?KHc23MY?U5EhX1YNi1m0J>Jb)WZYW3 z$>K)*8MzsSm_~qGnArJPoYY-&Wsgx_)|MrJ7B%34;Z+R<)PN?+kopP6u+(9J5JLhg znLWEuU%m@`w0@18*qnr2rG~w3+2EQHaGn^BErGzzQkYuiDx>S!ASC;>#TDu4_)2C4+J6TP)I~R9V z$>kX)Qkq9(z7DVu5$mfkCg!Y3E+zBIpuh!jJbtlu1Xd?E{*^3#?$k3)wtLv`sk4Vj zY4r5Infpk=x*|d%xri^=>PtPF+}@`Q(7>u;{$EmNvi{BU4?L2*xt98}P1q%sm(O=~ zXTBy1J1bE{9J!2#7$Vho_z!Cl9@fJtGj!HyXzAG5zt^y^C7B#8I5h-I9!N?FWbbDA ztohp+wH#(rY-Fy;ku(#$%Q1wXo@*F7&jo3&9<+3x4~(6F1#2~Xme+D~2b7bc1vi|; zErTIyjkWb$MXRdCXY*^iQ8spuk&bL`NZHzO_@K?U~$?_ihMxnWiq` zm&6dULu*O6q1fhZiKvL(1zw&2iJmexnhBB2k*N;fkg+ore_c;q|NP!zb^8bR9zu-vWwsG3*-Fe+g;Svsi-ku_X3E#Q z<&9B$Yqa<&jO!#udl$iHjYqzkU($g*i1TyZ3ud$mT(K6#c)K7qDBhw#q>UMEWA*PI zkbWrx;vaPK{+QTlJ<5E@53QFPLrt#4UdOq2MaRkb`@vRm#VPG&D z{nk)mO|bycd#)H&MkN2po=>)PcAa1gG11t*I~SV$#df4FwDnwm=ehXCbH={Y09!z$ zzxjSVv{??XO9|Ln`_yGNsk7oE^axB>dx7*mW+a6IFb6XCye)0J=-!uiRYq$+=@^LbSpt)Rs{C4 z8+_%p|5TKNz9KmtV{;y*fq#1%UQ+G^$63Jw1T@dVQC&XB!X{jY5{1@+aVT*ecTMrp zvkq8p;8UY6zKvaG6YExxq9B%0kOd?DW*628-hO-P+j$;Upv==UC;wvDc65OsLf?;phTE4{fQuxD6T+gC{zYNwSL{`LC<_Jj%qR<}z_!M;9 zKoueXp!Ds|J#?Ya_oA~A@l-H*L!6ja84y3f7QfyabEOOhd7$TNHcW_F@>pL@>Wsi@ zw8=Fy-MvzNI_JGM_b0yBwyVp2uSzDxc$Qm9oCIbyebk}J2R_S{Y~Qx6NGII{FeG3= zPT5&VaxcI=_U*%_WkMBV6II)UN*<~+{EcFytAD-Qz~ z<>#TYS<1_&Fx%@g1bu)UAjlOel`(+q1jWsC5Won7&>z_~#5P|sBxLC>v-X5vMp~>v zYo|*hh3Xv9YO+F+IuiCY87o^@d%GrHSs!e%^0tu zsinq(?E%l61vxpb%3Lnu(YR9nxRQvGLJ)2NvtsjdDg{tj~RJ% z6~N{nh8TC0=$60*O3zyoWp9fv2L0z(f|<201SpEu*Wej$s0aCCl7JS%rn=cbjU))s zcZ*K#7$SXzwqQNDGqPfl`IF(fdjC2$yLB5hJGCU9@LBB%*1*8rny8I2^55|+c-Wn5 zqp^BvfVte58pbd2gA+BWzHDA%JWHooPr15?%|o3YOHw<5fu=mwygC*ZoSH_;7lD6G z$!TDgp(XK2g`&4uiY}Yy$E(wHF{HDo_B)Bc9~rj~k*ey)r4#hb&t@dq%VLIrE|?&5 zQy~>bdU+*L5BiAk8sYXs;cUJ6-SG8HI`QN1KTD_w2^^A!MRVrLw5>ux$V$~E=96*E zE9anZKfgL|rh56Cy=!l7qXy#t^C_+{0|_K;lQiMYjB8&~llU<{Cp?B3k4di7ki;FI z1BBtj^ON@0r&A#)y{(MJw`bn7H7e?$C7=g3;w^lfD(7vPw2veue!T?8vnZOzw=%Yg=4_z z6xd~3>GMTTOlcw^cTCdZb*cDo2Q`Z<*bw0dsWk)0}o zk^avwJ%65N6se&e5F$prh(c1KsS!zNj2NI&_|LnLpLZcY|M!re;o$5CW6%$O3>NnD zG-*qMgNS8m?-W3h6i45V1F9QRT@iXpZvm&N1k%e%z_3y7j-Y{5bb zq0&>Ij1ks?jX?_*dL}VwnUnC7L6=^Ak$Wko5}{(J@)=u646KiR# zVL~}u=#Cr%bbTdQE7L2=6Qz_w&R7b8Q;x`j5*t)bQ0fb{V4pDtNKF4k^qwrgv`1j^ z;1q+U3XvW!{k|bYOCL`Q(z5#5^eCvJ!SYY+tde@8J6KYxf@UGNg60M~=t8lnp!s-q z^vn>eHKn&CfMWhJX!a0n$!M)@-pO0V6P02euqJnpUSwz?Br1;1-4#MHk~w@%2W}op z-ywJ;ou3x5G>|C%n#bm0+7fSC23u^?6pqbpyX@-`aM(T{nI*rxe-+8a&JEe=h9jga81r6L>T8|U~Km~%Qk(j0H zvjjrMvXRt}VW>K7(yhQ;p>r&l52DM6fd zW|i|`S#LTzh55wiiee_@Hb53Ryo?KQ{pwNF66s^C*DhWH68#}4dOe5vjI+ZdtGK*` zulNsf10#<_Y+`ahEWgVsU(Jy3T(H|$#T*#2vV zEgZ{`aX_#`b`u96!jZh*xO$TeTa(gF_UDY0a>3|kkzJPgX?VuDl<7K6i7=gUQnl-Q zx#Xq`^SpsGob!rjPCWN_?IR{wG@Wv-0}ZKEZxPOsO`fydsq`rm#CKLEKTV zLaesLoujq&4|PL?o5gFdY%1Tt?VKH+q1zm$ZB%>fL$~c*WMd~J7de#lA!E$(%=eIM zcyun6BdmAq;|jD#aI$H13e)k+60crK%W2s^L}HK`wngQNd0RAVb^%rQ!cnn`ozp39 z>naD9)QBqP+By&BOPOqoEon@DS}P=DLlM8&Bnth3zc2yPf;K7yXqccmgEqSA>6jeu zDY#SwytG;!NYeGa$b2V_BAdNvI0Z{XlZ%z`O#tK#AOwHNffUS=+yQ92-e%}?AarR{ z4W92BRx;@>8ezhvdYtr=?gfV&mSw{EkjYkSkK8e8oJ#$YM=Pg;f5D=M{>3eQCV9rT z|INKo?nay08$H7^*1D?1e=2OQGS#%6l!i*Js&=heYW0-V4_AXn&grqs;}~sW!`a>` z9!HsxFzDr0p96BuPfy@hDx&NjYkP`;8;oZm?rA#s$}5}S9H-&kZRmXkEU zWu08jw70DiI)R}3^;|GOJbED~4S+50J)^8=S=rsj=h=cLj*CleZ#*8SkM%^Zyaz1i zV!=szFkM<#VP6M*;1SvmHbG+KA+U$qKOmOdXzAJN`vo2 z;+Q@c&;Uv5PS1?m(22KmH98+^Q95`4k*4g`)JTwY6*9%rC0g&a2B9xo02r_AhJ2@= zHT^v0!VFr)rRPe;B`H|y_gC`v&{B{>Tu)P|hBgj0$n%tQKnS?RL)43N%n1k)>R5Uk zCG@%Ay7o58Ui^ZeOyN(!Nw_g2k{&~uu6J$YEL9UG%V%O)&Ws2oSn!QtcronIiedg6 zRtuXG>-}=gO$uu)KcIVc=6V%g1uO1!D?%|HR5i)AzuSh`l}3c;iQmt#xI!2Sp}1vx zl(UULzs9|pFcfTC5m{B7J&4{MNC$Hb1xE(tzo_8EGzHXfY(;1jZvvz+{{Nvw@)MY! z>qjaGJve`hlSpr?1+vW7c+PPBLL2x%s;ne{vS$Fl^q-~j#foh&V7W12!nvp)uMh5* z3C-)r_HRPp)mB2ybdcqodn-Nfw$m4@)iUOeOuMv>zcrw;e~(G44ijd|pJNY+Riws;l1KzhQL-!M4_Tvy>U~ zuuoj~?nj<^8O(b1-%+Mz{i*1r5NOobTpzffU#&UiS>AWOsY9C*%IuC!^xV7a=*$ob zv!S-Er7Go^Mpe}a>nfU7>l!v$#Y$oPD_JXq1itCK6=LoF&oWoI@;_i=C-Nx&OZ^NG zYx6(s9qjEL?d$m;K0SI@|K*MRwEPdnbn6))+Eh6l$Eka2M=ly_e3v^T=h7C=#FBlN zir`%;g10vnLEJu_0P*AQNs)}e_Bog2?^02-{tg~TXoAt?d3P)r_nCZS1&6163H*0 zhsk%{{=xpX`N{n7tTjF!jC!Il9V7Da8%SoXr1X6UD|P;df&>)t@$64Iv9#Yr!tj3_ z_2*0R7l?zHrIeD7Qv5}%-6d{fhS+xCy)B~Xwb_!~))K7P2J-K(@5MuD2Te&IFR}aM zV?1f5ihMr_qs*rRTxp}hwkmga$jk%>G8dJxx$s8k!hnxrBN3Ouud-l_TceYBJUQ#0 z#uEY3ShTQ@7K&^L6@kAJkuG=FDZhi9{tiUyaZ=6=Q7q{v1kNM)a zBEOJ0QvW`?qJ6VR-B_s17H}sXj^Z}%-Z~R(a{X@q#Kg+Uoz%i$xS$Oh{PU=*Z~Z<>+&)ng^ewt9dH< zPp^(Mv7cHI<5G?NE~e9tQ7h>c2x;9I+ztmu^YcHsHDoiG`Rj*ok4KZv==q5a1B|1} zn%*q{2Avl@%i!3LAv5|u$ejWV-NqsY^g>#<3<*rS!x!-ggKbBD|BVJF4%zVU$WQ30 z6F@@;prGGP#*@?UR3hv+f&e>x1|%7J06gP%=Y@q!_%_t1n7f1-IceoX7e70zfDN%q zYb-ajt;p28Gn^#&@80M8qdmNuX+4LBNH{Rj?UafxM z%W0i{;7h%JhewtBJvVSO^6Cd}*6Me-SCSSLPs936`g@aMYm~%=Y_4zo-KaZ`4Xc`0 zM39yB?XYzk)7q-LwAQVyUMFw^$49}nAC@kB1j04OP=vL9(8#na1h)3OH zO629;2gseq75WS(Fq-30zjaon51OiCV41wKFwBHPe@hw|yfAgI?B+O%sk^k5FK9ad0bg%U=r370Lq-9;u(u}UBL zYd-)k{rrGn%MSqL@TfVEgUnNl?{gJO9U#x1eO7?5Y-9m++3=K&2!W`>%+PV*-XWCg@U)%m?GqaIBZ-az z_X~u;Vfob5$O2J~%xY&WiAf-en5Dp_p-Ht_&hJew_V+f4sDR%X)3`q#4Te9kn$%}i zm}rO0@qDFwT`-#fVJ`xpf*K8nYJ7JS<0gfvu{(?y;#u66-PX2WY2?|OQYPBv z9M6St1y+Ho3O`=+_DO~8S%-szw;kux1{ox1z#ts64)!^!p8+=E7Y1&ja=)em`IAImnNl3pf1Jmf}(UY_!OiD4EcYG74jcIXfwtFkv-t#A= zp^|U2-Ri|>XWf?7mKf1DgB-Vm_-@<1>h?pJp-I4TZ$ z?}}QpCMujKVdJPsUq-9n8T7h8#*=Sb(%C~eIlU+wfHYlEx>60qQ~b;V$dgb({;CL|0BLa}?j1Vi6J%{pJmau*Gu>++lW#t;-dtHsQL7ZXvIM_^PsSx1w+-FDG>=DctWk0Wawmd&PNPW zgY?J=N>KBi@LRXeP6WIO0B&@8o!kWasX2x1C3T zdoCMdrpFxczI&DJ!%VTL1V-Xj~5+QA9aah_?A8gFs zVchHN9X++SVq9De5DemM0va7n4nA{20q=AJfoTnJOg`%+9ui{O7$CIvTk@LAT4JL~ zkOo&iy)eOZ)0tOe^rhCkG#N_^`aFn61buYMcibC{kXG*e_!x@{UZFvo7+C{JeiB6D zW&fTJs*+JiyvMIz^so0;#jytl8P%W$QGoQKe zBTJ}w>zGfh;EPfij7pTvL<;ojZ7Q>Tc`_r3$JpH)3J(DZD?S9Xu>cX6&>}=oD+&>H z@)RR#>=Yzwrizk%2ca2rQ@)=JgB84sI^-NF~R8I zhohJ#D~QcZ!#e(x(}J3+_}iPwjHD`tKx7@kGhe3DAa7WDXwcB|Lr^P85OwjzR7#N@ zOei@bXkL;eX51-9qEQ7YqT#E`Q9kSSRR;kGCk;WA?Iv_>AXU2=Oxn2vpMFgh(a*Kth%DHzQU_zm{Mn{Ys*h^gV?u>HCQnw|ioM5MIPC0?F9L zW`yh_n3P>?O3W^5%GpIlLA&slvW$|n&`kRNh$ek+RFi%nWclHH{{nXxamP=P z`4DY}rA4=x1_}^n$H*{1!8ALQ_2G5=ba;VYaF*tb0gvKV$44CU_8!upKn}=Q1u|W* zZw6@rI^Zs*@}i<4rFK>JX!lrB^gKjL09H&XClaB|C6(1xuQf`2H^LPG+3D(38#nfO z76F0Y!HcUXWbuzZA+cc4`uB_+_rt$6o2XC7J40GSBy67i8R@8hqRoib)GLH0+CpxA zS;?{s zXT>Cd-`+@^*DKoo05W*oIzL-=og{;EWT8sDFsI51vVsks_KVU9lo0lEc{ja|QqmzNClSx;*ebNAgkbT7SdM2)Q2+N?`F>mCf zAlb2XJncyk6-2AQJTxMEn{quR*_SuX%r94kd>0A0iG0?HmoMkT;b0^Wgq7bu6wfd1 zJkZIqznN6&K6Pv+JOL zrn(VvsY^vtsCSf0!g?4VH^uqyzw6*Uds%S;OsMoJ0N=k2OgP&bvQSZ;~mhAZ|`V3Wk1Ta~8 zXiBSi>w1d%cyiYQRss%4LJ2S`OSH|Mzd?O2!Qf1xdPmfI&Wy;=uv8%k1Akg?;P#4; z=t}l~HT^wR*}g?A%;7HPNZ1H~(R8jMy z3oU!Ye&DO61rQz&o0Kq6cUuG`%I>pedgHV}BDnB z>+sywbNHGzBf2)W83CiZ&4^BQZANshW;3FLeF7@kjA-w+8PSMsM$2cX&4@NWHsdt5khRQ`MRk*;w3L$EiSOXixU3QPr$<>Bo*{bhQ2 zFKlug(WjzPHPv~>^#(T+iKDKk_b|-4Ha9ICo~g_El>kL&!|6hvI2XL}lYHSwx465N zcP6i3PolwZG{f6Pd1Y(06y9+vZz~|xYg?&2yDEy(52&F;f2(6c)2u_$C%N3nhA~>% z_jPJgPBhgUbdbUdSE;>t)H+*bo8kqurnad&#hkhw8bPtcbY0;bb)M=GQ(+dJs?j!#Lg3%mKL&D>jPo*Ey!ucw|Z<_0FEf$znovruZ3;Fw|&w3iUt0Dp3wfc z^gc@eyo81E3r>G2Hi)aNv|&U>)c(ZJy-UQc(b*58Qhv)`mYmxrI40vA0phRQr|~!` ztQhK2UEwg(R83n4j;>QQwQD3ds-k#&*=OY1=wi}#Gq>0JUV(<1zdup|<1&*SJ>a%| z8lhYDj^9M*2&_KX7atAWvv=&BCu21tk?ts>g^<>*r;i^OV7J}uB%LMxR}!Hd%$*ue zLs*9wWVYL9U7AX(kQ#hj+%rI+0uRE$3f8DX-qXw?$2Pv7b7YN~7l9t2-KJs%?yYn}CY8eUQWP<9<4)1GF`h@|Wxt7+js>QoWd{{zo0NaR8i?T` z5WyjcfP|Q-?DnH;g|i!YK*ZtK=mIDLvwv_K(nOD49n#`-&W-I%yPpRGPo$Z~Vc2ShN;DEKEEE{?~UHpU{E-j9|A; z`X~LM(!OPmR@k~>H|F>Fg?NC8y>>E`f8;v=dpi;m`}b~dc&3q{k5l#i zE>{gV59Uc9B04rsTgA83LFmd4()E#67Oi;gc%4Gx7wJ@7o$A*t9Q~(NKerJ;n7d;! zDn3vwL1>pr zElsr{2Nba+$m7j?zr|#2n!)tqoB0-w#~Ws|;7yP+1G;8oX4~a`4Nl`==m#yxET9bnU#?&2^H^ zTbuThw0obY#!8~iu`^3fmOZ}vejo&kqDhN#oUVKL_GoPq1V9h~K@b#D*M!;O!P+oW zrH#}%2;t=X*+`Q#x=N7gPI{)F|=ot&%jY6LU=Eh=2&|Y*8`gA5LPcP*gr)39`d$@D{ z1o3ofuAy2Ed@Xn*R&s=mKkak+^bGxc>+~wOu_hAL_gIj)gXkx9NiRk6@B4UF)M%(GUa2qaguGX2-`7ngSEf1UQL83S}h% zgz^yGI*IEFY;KMxjpMWE_~*tLSJsl86-LwGDopginFPrKy0#V^M#z0k(~IPT&COHb zGJDy?g~m;4)Ig)nbNnG4C7W@Q%%Wto{a&Y2E(V`}H9!#X=>f{>^m@CGJ&?8ZS}Wf7 zTiaXZc=IyHpSC?w&N~Df_-}9t+~j6b?Qb9eC#!OkoBsZyEhlX1JkFD-G zCMX56XBV{I+s%isnlt!UDs`xL`@Z5E5&eBV8}ZPCO@4sNsUrsVR5H}#$*C&!aUB5f z>&XoLpo*{a{P3+t5}%Ska2!q3_#`IYCe7vae*3upC=*(r$=92g3zQ2QyazZ z6CeI-%{{nW1=H=V?ef)y<2?+%qoP5d9d!4fKkmZ2{>B6GCB4^7$M$>Wba0sX2Ba{6 z*M%BgZ~6EF3!T>M72MyxUn2FCTmNvrx!Wj?8UxXJIfd>i9Am zlN}E(P^2N^J2m(jKvby(uCzcQW&D_OzwA;DIj~4^#qsO4gq%;}5qZM^63LYwn=l~7 z6=buQ46he^K7tvLqkRo)8jh0@8`s%5P7_Y>Pp^SLg48ik&7^M-CzHYP0HeK(hsi*7 zA86eNs{4nwtKO_tu~FFT<5C;Jzw`g+HTq;T+}LhH9c^avHrG0Q5wLl7=SH8_R;%^! z;ln#E{uKYeb^pPG_gZ(hpxGYW-+I`lc3b#k>rT+R^9nvVx(ugxTCZfR*YLCXj#6Xa zD}^G{eK+7QUryubgq0ZoK7lhHkEt|I5WY;H0aRg`{2F1PU)O}%5s-ieH5#ACl(3ml z8s}xqYE3m7#V@Df^tu`JQ~8Z`=J|O6dOA@Gd2#}Hs$+N=#v{ZEWE_MHqN!3zNmGaj zXXzQR>JF!I2)u_;@Wq4*=nSKu@c&OwCcie~l#K2tO8v1~4|=GNH;qrvQjj0zHoFH7 zOk-Gw$uv>z4xjCO-FO_M=0_4W`om~UesnbbAn0C%@Dm#CW-CJ^;8p-chk$&ck{ih{ z_25O8VS`@51~s^s{dBMPq4MC*!)pZ#wn_0hmARoC5Ya^nW~nksqZmb(WE%1jnyT|R z3@Dhqq}e1!gII7?Z;5z};7#rcypyY|t7fS1ZBC}AnR4?qua(ODXeLv;0)u0xh+g9Uq*4k{ zLFBO*SW<;FeVQaJCC9~jw$0~q5N`Q_6*%NZG&ok>C3ba#@c0@YDe{I*P{aZCI8}StlWFA7%Is)B8yN&TA#>e64j^mYio=C4{SdQdTiZE ziO~^3|Ao3Kco|M(wkXl~G(98KN=LvAIT->Yv|S_MPN8)O(aRWx%Aj40W(oa!7krGS zus*$e!SC7<*4-%j97-uI@mFZGmAfjkjSPaF-9yX^O;G}8NR?HH!k?v=5^rERON>f< zszVy5vsB4t65;+gMOLSA0@3VF&mpzsRRO^qIE@H13TG&q8sK<5$OoVz#i_VKjK;Hb zP>W_Jw=w_758Mrqx?9iq`;0cdXOoe#bQ8EA)1Q^a118|J5Y|V@37B+NKMufHK>#Wf zrzAO6ei!IuFm-HgBhF}6T%f<5XTL3h+}(x4U_i!q>Zlje+%h5Ex7=){d>^hBe;L%y=h69qj#r1J;kII#yt!1PrIe}{&OBc;4cU9aFBkud|~{q zt&DmGOliG8q21%@zi+YRD<%I_Su_n|%kpI-Yeqhf<>R+fup|as?e}rD`%&Ehmai7x zd7xS2C9DUUswrFwveWhg*=c)&L=v(ONHp^X35v*%tOtICqiH$FPTLD)r|k_A6#0Ne zGjEWJ@V!U)U)_sv)wCRHr|ku`)2;#)booFH>eDGI5owgTTPhF|=!3VCd!h{oE zbhdK1_(=y@s&mkumaY#dG%E$QyR)k>D*=UOUYPB2DA5O;CwAKky;5-7zUXZeem?Me zzK&nHU7as)4^s_M^#a*xdxM0O`hY|;Z;%<`h|6|qlQuZ&epWA~U2k1JLZ|IJLZ`jb z2%y(<1hlL?LeT`2s}f%s(N&)pTu(vKRi6)BUuhAzR*~`J#|k{}v@4CZf&}UOsxsCp zveZ4$d~IV9PaS+ikd~r5rD_qd6~DY-ciPoqgJ2)nXjUEe-0!Z&lTy{5@x%*ur(GR3 zi1mSuX4PS9K6oXb>^*AWI}iAswioHXH8Gmx}hT)Ak;#)4thQV21BlXuA4Xndkg;&lYzVmdSAO7|AytQFrjk0T4f} z01yfdtTi5_Pt=Tkq8u z05zUXM%VO{%3bh0SNifR0P@>x?)MLmf-k=+Wg~>d3v8!d2`r|-2P~RZ0?SNzRu3vM z;aNG{PTLD^r(F#$=<|V#W)`^CV`4fqm4o7ioC!{WX_g$WQc9KmXjSmrpNuiQ;{)I( zH1Y7==cs6)fkP(I~qD9b41J4Tr*5{&pe0k;7N zAuj0Dnhw4TDCo2SUWFQbyL<5TFmvJhhfg>AyS?Dy`&$nh_XQ?Ha)V+J3K&x2#2ef{ z><3>rJMHZP7%xzUL;h_vo#gaU(&{u)H6)Qx2QuxDl+reB$v*li&IcQLu4SU$`Xhc> zXE7UiK9NV5C1lOyR|LxD?&-7L169#L>_}s)UTCnht7-$OY1My_@{x57srjf19~q75 zL%zHe=77tsry2@SdAxuNNaS{H4&lprzdE^su(No`cmAXkI7gXHHGatnM*%9oaoGse z1|vMUZyQ2Jz);2r`2c8=UQHSphmIObh8my=MuSIlli^T>Evhi!Hb#W6gGtH+bLR7->HF8ZAM;~3MyxP%}Z^R^LRCWT%Q|eMRS67+FsxSqvhn!=wkLd@#6G-V< zdCC?gu@#}9_s`k&jpTZK%pQ|jb)^5os2~C;=pol+$5O&aaiK`^3T3S(KuIvcqvAFP`A* z`1nk{5{}iVa8Zl54lrtSj$eZ9HX|8?>S`7&7T~;8_ete`%DG7!1e}Juij(LSOhrAT z<7{$8svPanhBRUX`cZ>mf<$`0FBT?B_P_-Ilk2efVMGODrr-=783oaNmm0Wi0wo{exrS-pZkCZ{TC>lut8tfAYFn9L_ps~ z6j4~%SBvqt`1Q8I@U?5OpBLS#{8B%}M5xbv_pGf_x^i%HzucdKA!o6sIR6Y>WXD zcOYRez=N`TN3f@YSm_0#7-}Dvw6NmEa_a(-u|d>SQec5D9hkF>C7>UdNa;x%*u(cbu+e6mXVnfkJllC)6v+Ziq3Ar%>y~2WiDqBff zV~jK!$`Ti2k7ssOxx7q}03SE3!;w-(pt~SomR;&1GV&X6DZgv0U!|?hF@MHe@?2h+ z2@qC*o8qGDWjI#SCP?cyt91iV#9ozP*;tqY3?@NoTtHlCpCt$Mt zMO`i(;EMpHW^-eKe;TDr;KySfe5`|iM~Bb;qo%iJCnwQVEja~3svol3Lo-Sx66i8F zhPsYY5g=oH6WQ5#-fKX^*S>RYhvjb{la%iDpp)x1aS}-P5MQ~IP_};3ACx_xo@Wj|En+y>H zHdn57-DdMXNmP4-*EzZ*MYedEuiOb~$O4$_J6-Obn&&wE)wxhr2|ihtyh(75;&A;f zrlgJ^P%qY)_*^GpCla9@-Wa-;n~3a+?j`T`G0F9Zasqfx5Llk=+9Xi?+vn zS2r9P1qKC*C{iF9^tgZbS%2>1i2Fy<6k%a=(Wt@LJVR&XFo&}RChW(6Bwou z0if9hoO)$UGpO-uQ0DGFK7MkK4udS%z*8sNS=T$|7DH|92+iU#qVH*!g>Nr;uWv?1 z#987n0)J#X#(PBF2Fyk(ZlN{ZQ`39BxMShyV3hCiXyCf4r-IVRIRq()!e(?z{@7%! z3|2n8;s0oRNDU5N&@bKdaX!=}=S*7wH&-Op_rlV)(h=6f%t$T=WW3bJ&Pny#S*Jyvx3Ko*3gHpvNv z9$5gEI?ZLFl)?s8!}c|l7%T>d#Hb|`$nld?V*bAQ2ZFEL{1Zwt`__n&hWqO%4gHuRMW&o$z-Bq5LpyKFdt!})2OH>bEGpDnt+~bOO-tnu z$QX!ZI^sl7VmV@m4Zq?1B(my3yObd?!5XwYY^BDnaZn7XY%n4pf2^>;4}v@1dWB)l)^7BHriyJ;HY93@NoG#V%^AzJyYB@X{G)ZSUm;wm>aB8WwZ21c& z5MCyUxtY2Jd2Fp9e>p;xrSNQa9*!IIHY81z+ElVYx~AeEAgI~~Swa{95;Cp9oL1hz zIlWPK*D}FK5Wl5@slyrTcQ3yTf1C^3g;Ut{{i93bK+0|CKKgnEaU*Qpf@bbz7#6Qp z$=br7^|M-Y3OFOkB{h7^&4;?W)NwPnv^Bkj>8N6m8McwNu-F{1 zwu}gToL79b^t%mTNt4M;bl-5DWrE2VzBIU1AXC-IPE=&~c!UTon_c4^-{}+!Z4+ggFgT*8fCrB! z`#aUKjYgCzb53Q?m&QB!^fHmR^~99o>#NNM*)&4PiL2&IM1OY(daHwS=?J)K-|=>@YT2IE@u0XZ_$%*M3NlKZs(@dX`W3 zgmjA}QKvdae1y#j5vqj)30tNB%+f}U1hp>8Ohu@GZ6a5;>J`9AA{0lGYDzH1%6pIS zVu%}1lqA^t@tdzIStCG~Ay?ZMwt-?`D=%|=-~`q%@lsGgC82@Kz723Hm3$@Os^Ghz zDYKSW-2c#jRC;e_kWn*;egy)c$(NO?Gw7Gj2KFv6CRIU>IR;l(u5mkZ2@z@(dJ{Ts zK*n`0A!{v)IG!{)p6SnV`qG3Y6M>K_N+(-tnoc*gJvJiF;X}0+0LH5B!BA8YPn(t# zH`CRS6wPHZ5%w3x{L*lecm#9ZuV}c>9`lzu8n`_ZpXkp+zzM20s{X7rQ&P z3btV`npMpM@M=*0^RSYk7)DqjoWSEkC<(Mi(DQ&z7iS~=Davq(?N&Q}2wNg@p}o`P zre+j@7DWoBm4yfg(isO9-KP423Cg}2#y~F}xfik&(s!Fjevj!*`$U89#gkh6gI}xY zp?q4KxE*+HIF=Q4h&07@ee4Fc=sRocJcgg2yi3HTY+;7QS7R`OjEnp0FB7~}gI|?# zub{WrZOEX;<#{(JB^=3wsv{b_PA=F^8~o$Fs2C2Vr2p6A6}9-HVss{)dMS5bH7;rL zvQCVoRF}2}+J4Ea6@nW}Vy4VR%W`l8Nx=p~zZ9dJRpO!Qy|~deoU>aEjRNJuy#w9< zvP3xa`$gtF`v*$RE!y2;O@=<*2iWgE9;jEQF#nkTqYZ`X8yx$n&rkV4hWdqr9Ineb z&X`HiDg;c*AuS8WR*tL5j;v6z!W~UxJWB3GRuxI7_w5i?8_K$fInx?e6gaOO2S}dQ z;Fd*ifwDD;;sV?oize~nHcuJ3iBUenrWMyHfsUg^FdsqS;4Y zL4+oIWFL<_pOwV%cGce8Uze@g9Kf`yiT1em~XFB|CL0}r2$Q1Z$k?j(AQ*>b6#0Q)<;_Bn~f@Fd5zMl z8RHz64}v$1a)9JNzG>7Bw8<|TnH31vVXxm0bR;hr<0s`7+$ zpKH!^Vh!dq^Ga3dskO+7ODZ|I@6=vg1P%y=OK(yc*T4*na+(Y*!aU*kC6}$Bs)6oP zN;(}#F^+!K?2&PuEdR-31LoyI7W!#QK>AIrbyDOU1c0~_$_M3F=9Vnre{xv4yATSF zrc>JgQV>T6;6B&`L%o8(%Z~QU$|-Yz*I`0X5;MUe0C(wIEe+xq=C#u29U} zHM1N^Zo7% z9IQ~jn~N-ots@@`hnQf2j-lKMofovIhK8~7c_dw6oJg7F5e2LH5-v^Mxxr%2Kdws5 z3VGu|r)0G)9@&&Hwz*`oh+V1*LBU4u?d)87>MKl*BO78e9kO6iVq7v$%ars> z3x9z|NDWm9Uz>-#)pT&SwvbQC2O*oRB`u)ZO-II{rS0}Y+u6ksJi)M&F%gPk>F#5E zZuP3}FLZ~`hvHh+u`Iaq1gU%)5JSbAIHT$!qBJXe8Y`z&UW_bkmI>f>mFK>|yInTP z|HTO&gu{)R*Nj#Yi1(@p#Dj&#s&e}Pi7FUw<0PMRtX_MvlnLMp_p2iv0OUsiG+$ep zoLlK?Hd?d4fMytu3T9(fqp_mNAYt{oCSuz~;x!_aS`7a9!~8{iLTAvcvZsVIozQ<` z`dc{Sa+oJZ7NIj|PU>uquJhdq&onSqj-fo>_O3kMw)X9!=Ei^!V+(7NRu*}35o&j* z0Nv_N$@laziyv{fc?!dNwx8W##h}Yv9j@rZSlyR!C|P&H2-_x&g_&g8Cd2NXnp;$u zn7M4@j!`PwDp`_jDrzj@^b9S?YKq`j)0p4IaObU}WF+U&<&JvmNHC=KBZtil2e9p_U=W(cUs(ZVl5~Y&ig4)#Mr6r$H{1> zs)C|i>ex3cSBx8m=Br>sHzm8jqINr0c?vK3mCBW?vt>-eC}P}}9Hc1`Gji0n z9`LHlG}z(Vm5py~iY<~1%(a*GfkmI3O-4hJIc`MLZK@~Nh^4zd`(BS#lTA4pc<8-Y zR4pV(1qd{7;m^|UqCznt$NNWx-@8Gc?)anSHs+F)WaVK9c3}bnn4|(VZXTG#)cM{b zX&1lRa9QHkxLEC4*6f;Vd3u|ORoxt4XUBh3OI#E~FT1M=`y$?jR<5fw1LUSB5^Bb8 z6vVWeMU8;g5u)adtC-x@sjp?A zbfR(QM(P^StRV>b!Kth9yWq8^Gw_vz5c9C*Dr|Ds>u=!a1?ekP1!C1v$$xr{ zddarFgGHltMb>UA*J=v?X1P{4+(53??!i;KZ!^3G*+WVD2D}RGKw(o%zP3kjD|IX( z0y97PjZ`>@R~5+Q)AHn2C72K2Z*&0fw^lt5;a$L%9nP=qfPVEudKWkh^)HBc&ExW3 z`>_8*U#}|kCFj;_Poyd&Q=vDn&wz8m$z*F;Gavu^>OTCx8C})3(+DfrbyvPmF{#JD zr}-`sB}`30A%jj`ZR(Kq&Vof(?ScnL(<}eTt|WM1G}vyPS& zIwJUel94aJdItGWDx~HtwW*D@^&Xl-v0sJPDv2UI$?BFZ^Zn67OyvpwuetaRSKft4 z>8TF}GpqCZh~DJoPw+D3tx!l#=Cmx22*DSKry!;vLzc33s|gP>{1FLuTL2d<(=xEu zfFOemU^N?sQ*)WLRuRO1dVRW^y5>fu!BxEU8$0Wj(&MTE@N@dTe1HBcBjJ@#utH>g z%|3r$J8R~faXEah6s>+Qs2`V%%Jag}5bdQ_@FhTHmGS0)gNqR@bCoj}E!%4&MKVZLKU?MnGt@@|tb88tdL}HG=p5gIgWO{r{cLKXRvIt;GHO=<~b~x82RX z<-OA|`hV~As`gIq+7)u(!YLfaISZzbPHS)u6AT8&7s#`we^F(M;oWt^{hYeqxus7g zERF5vcC)paJ^s6yeY<&l9v(N(?%eRx+G@2PK74qm#UJDU?d|Q>!#i8|x9>l=zxA+9 z?Y8c>AGGfTtvj#a1H}|h@3daYSg+wn0s*kFQNYuUzvr<5HjVr%C-x^n?@71E2a0M3 zz&j_21V~DdvUNRHZT!H=lkBmlZqe5D)XV4uvlcwTpCzZ$Xa+1Wq}(g`C_4WHo8rd( z`_jy53tUH9tfMpI0v6h*@rlM zw)1u4aeN$&lc>?3zxe+_(7gzeBGza(TT+NAYc=Ge{K|}SBl)EsyvQC=L9bwg8r;i% zx>x&9z2GG~8cByph2@fT1%g!;Z5+}TSiB$^f$i`&3^j0dP}%qg7;aP zUVN~*d3ANw3>Ci3$@Fw{#O;#J$Nk>!{^71p>GSaj6BtZ!(LA2=Miape^iaOgD7;ej zu}`NF2RmX;o8}j!CMW4tIAvcRDND?4VOjyhIMEyMEu-LG_b})m-U}Xe5BqqhoazHT zeSV~%ebqfU=@>c>3%H(1_9LA zN4zVVj87xEJA~E5f=b-vXYoVw*VRQ+WsvD*ZtsEK4=N9|y~8637cFm3$z*pQAJrr< zOCu;)5`rsKCjvPBYwqenap#U6m*oVi3J!-e5vSqmF{~08dLD&q1_X7{gW``_CQ|{b zedp%a4+t>}3eU&f97zHvjAV}4KiitCv&Gl7-DfVUut++M?n))<9TvHl7#)bVoV zTW}1cS%sWgjv+r%;!9d#8?MN)peLw^E6E=ZRI-A&7*B~Q4H>*)iVT2j%Uj7oI7+dw zGl{cy^2jCDlk3StO4U=p(UnN$IUMP5X}TF!LlUKA0CIVg>mk_#fB4Oe8@j-mp(l4z zYigw6OWawHTN?rHrDYYL!sc3vw#~1#)D=QfcLlcylwom!lNf}_MzBjB`SiWauO?fn z-7K#R`4@ZFy4*?)ga7js3(Pc$-5y_6PZ3PUG6&_?Pr?370xf&Toq;J3fK2APi4aL24n#CK zzHiV=H9bh@pdA3Md(eH8@TzZ07ANOG(M|Qie7fKiSK0?9oo7qdSNnum)4bY4^HFBR z^Ng{2DyrssU`fk}ZWUYFrANBy)HTltrG)uxLVrYDH-Sl-ehGDj?e}W$<6%-o*Cm#alFA7_`l0`JPlFdg!w+mi8zVH#<>O*!JSKHJp zdy$o#NGVHxa^U3UL%K|_t+P!_Y5A%yN-oJCis4ouHTR!@ZHsfVBpksVev{z$p9LUKuL#DEE+tMQu1Myzq)LpyAQV5hTm=P z(fM>Tn_Nvsct+;9+uAg>1;B8ei}%g6G7MJ(IuDykwdS%fS;3EtO%o5hHpADVI1@9+ z%DugTN_*SPgl?0ULdq^6PVz0zyXiG0gx6GqSn9kUy51ja2$e~&z+bm_zx7m%$%uxO z{_)=Le*A23(d}QfqE}vt)_ndTaKYUHe+l}Ei_)qTCmE;U6cj>{&JjhNSyD`U3{RPi zsf3M7Ax`=O1v$0xO}d$EE(bSOolk2$5JI}#n=)ax9xy|vf#it_r_JHSUnFe5m_=x& z(B(&nHoE7PiNqn3sR=_MIVwF!P=B`mf*%IE-oOBvNuDw*3ZOl)52r$X#N2E@SC)+K zF(w`PoB`HoN(W54D!tF+kAxbKP-~Pfr|J80lDRK>xmIk9*fD+BZpmh&7PZ&7KoUmt z=axtQ=YKWzpV+mCXQ%@E=^<61)%BlSRQc)Df9`DWw4c|1{uRGc{b$kLZWZXh`I26y zqjYv}*M17vFhSajPm6wxk+98o;##_2BxD zcG}yHp#HA`Tt`s<*8r{~sQ+sSH!LW=`j!UbN1rbb9v1(PuhW~sT^9d&@&E4blbvlh z{(th;ThHVFzv5Sl|9#zVEdtK_oya70ClN!;^KIYB9miK|8HVXZVyR578{rH!e>3qC z+S;I^u?6BR{yxd1Tzo0(>{_Laer96xJCjEdATa#~GgQ>^r0^O2^kAPwsWH z``gROC?jB^$jPAeavD!jcxOF5PivfMmbW`gZl*Dkj7or?_7B48T;G(k-xSn2=ke{E1d%p7er>(r4mC@<5qr(A=*I666AN`9q z`n2Es^8Df~2X5)W2G4MMzf~NhsRoo|V*>q>XAH{XuLw=*xu6_qtz4h>yFESEE_BY0 z{?s3>LLc}ehZ7yZj^ZmSEV{?#NB6fGWPJ?MC3T6ESf-r)3XaM3wr*+Y;44)7(aA}Z3W8ED?V zO=9U|y%u`-pY!AWe*3fb4vw52o(_7Q&si5bc!#qfTvXpIYfIa(FshVG%O{bo0a0qT z-zVD~^s!eb3Jrt$*^{qPCG~o}xvZ?t$%2me>!Ulv9!Cuk9n+p|q~oOuD!wpbGA4E; z#-PuCiq{O!M`2q)dK7Q2oE*{hCP(`VesJGUc>11yP=Pt_l_>QO5Igi zlE!vEJU)1)QXT=;>yE}s)UF2uv8Y`yAi)LXlh5_y;VqPlUT6P8Ev6tms<=W_E4IMb zh%aC&HJo=&51MF!;2&EFM6-bo2)tee1QphRFsTzAfO?s0r2t%*efb>b8xzb9hf+bV z1+1QF0D1Zee;w@C2Y4TycaFQ&Z4iXQ5I$l!uOB@)AN28W>`?UDgYGH4CVrrIt-$pD zm0B!2)Me4CyP&e>tRwJ$!01 z?VTMREdP~P8H3NZ6+=l_2@EF}M7aQ@pjJ0CETJjphh>~US&{7>ogy8kyebUWxuo|kCQ2uF}C7!g3C0K=C`+dDO`+cPj`~5#zbK1cTPU`f<5MeF#KkN+J8W(K< z>lI|cJnF&U+ZwM-_}kl0v>X9c#}fekT;YS7ubo{rUpu=>zIJx~eBpzZuQ#8n_4Vdc zrM>{@=j+XeVVCgca6+A0=ulR}s35mbVSRs{F7@J)M8L_wkXzYNn|IuYs-#q(4(z zMJpP870?QeA$C~7vVhgpvTT$;E2=u|p5jKxlddP+3Z@nDiIR%`Pk&yH($M}I#a2;Kv3`7cU_)1oOAuEcfd~;Wlp`wNFA{b7J z2dhlQSDa;&t28En4?m~>OS9Q}WbNO5*!iqG=$}2i;9G^w)%#SZ!Y2dsJ2caA(YRa; zfMcP2*C1cY3!&Eho6{FPO&~~M<{;)bbUZXf>)D=)*0a5OT4y?1XC+#pJ(WFdu*;j> zwJq=O?c3nQ1cTS`;vm+G2zaxqe5+v_21h|2=~#^l4IErXoz=DN2tLr};r@xHNq{N% z*UYZvfdO0}v)aIcrfrzosMLm)(JHNnsd~&l)OSiyQj~J;V5xjJrQ6Oo z%sep^;x_Dv1zi(>cX~(l8>uDe`mO|!zApi+?M#3wyXa5qO%}|Br9Z3s6L1geP~a=U3mVa>urX8SdTLeRj(g3amWV>hkVe$ zAs?t6@w!e!gs5E*0hL^yMIi)l_B(Wa(_qwQ`$EOVor0 z&8D74My__gwlbo2eR{Zm(d%|ja)kQyUYN{u9mpw_&6jE=rM8q690KYe0s>K6$FZ+g0|09+#u$RSU-wy5 z?=wP*Dzp6>@#|&3sL#6PaE~qdg`0+R-{b?t@@Wj0`x^0{?dimOw)fcLJ=?1h4-jGT zghsV^XG-zT9$mb%TJg?m#XBp+)1^AFe8vw_C{hb$+*`7Z@(M}LuZje`-=iwmgM$&)8fo9YB8)j9#dDjES=LyZ7Krx6AWYlIF!7;|dBts6sS z`0$~M_S;Q{PeD~RZY*%W8eAxy4z{;-&en#nJXo^b#LpH~RSwnySLgsxN*yR?Wx&@? z$MuJ6JUVDH69Zf^1p`Vq_X4odqzm}k*%mMj=UZSjnP>s7m|+2>n_2~MXS>}<2Miz9 z0lu%G17J1L0l*bH0F*)p#|?ervC1bNH`Kv#GoN^@@`=Yy*2|<2EJL zFXuNm_f?5>!dRp0k22hUbd%x$b1Exx=*a`?>} z+yU%6A`YefM!g-+ip|-K*%Jf$u(6`R)bO<6V4lG{%b(%a>YQPbas< z1!Pyag3DYqohFZW-v!;+1Tn)mI~h571a-&Rd}>`3B3C!be&%d`M{ghC&MUgo`Z`RL zi1E&rSdjm|VM$&o4kbS{S0+Lg#B_J?*rrutIV=$Nj8qZ<7gQyB3mn?%W& zE~*<=NMI9ENK<)7Oa0|1j-o?+kk&(xm3@MxqO!IkaB@T>s0FMgUQ|ohlD9##&hXE%bpWJqZvJ`@J$&z@gH+OZ!i&vI_lt&NzCC$Vh`KrMJM=rR))q%wy`N{{b z3%^ar>1{m1HICT~6(Y&lMh9WB=k;h|+tDT7qb<0hYd&uhy7&;Nd~2lOQwfPzgY;3O z!Vmo}tm(}eK@#|;Bq3LY_(-`hdXm%+ev08MKWrVcvDCMwSL5<C+z#jF|)f#`w#UP$bIzsHYH)bdV_g%f= zzw@K6Ri4s)pXBZU#pNu%t0EK^_z|RLv@TsYprYOgknRz5%+%3Bz?TZZw&Fy-=Ry+i z6(Cxb^g{zsK37R(vKG3@9n^G@0{|OG4#3ey4i2bKxLz<^lB*9i!^^!oVfmhhnqkGa z8EBgVXrM9qtY~g$SKVCcq66RE3iZvs`BW_(K>f|hXN7dwozgZ3(5mL_t+dKlNyBCc z0IhKYw5~N2MfjSlJ*^Qu*-_IV*H!o%RUICvJ#0|X_(7d+5A?b{sMW27*6cbE|6K!u zrnoS`&zD=b;a5et7Cv0ctoF7-R58Uk^aGMed5SAbxT-_ZbhsqNt5<)$o5EkX6@PvS zTqvjQaDAMP0RtLrTL5$#sC_|Is;@$R2mmUNp|28kq|(=t21qwTVSH-R+J&Of z7eJxb@Toy-XByeg!m^#!%H}U?YSpIVy>(444*^IWLkI#Mz!0#N3;|Nd5W<89Fa&HR zLx9vURFuf*d2$L_y!^OOYF3>M%`2ennkP|JjF7z4cNKrZSCYBix8x_NQHDog+^%!GibJgn@_H)Z0u-Y}2L zhWUnSU%c@~xFkEaaHOQh@K+JC&hU?$8vaU5?CjPuVHrOETeH)z8egC@yvCi7WzIfWfz=Gx@0<;N}Y z5B2O1@d)OQ4rB$)AX+>fMz_iB)$QG4RIP*h3@DKJ`($)a;Fr|9@-`+}fO&2b_DssU zOlLo)P%Kp(@q?TA*LOxgG1)3}RN_aPvhPsvs6i1?cFKu^ zqVzdX{8_$^De%cfJX>@HR~lVK9F5RWil!;(?8pX6P>&=d&Lt((h@;%*40JI*};- zCZv4RBY4Vg<7W_L>x3NEGwTEH^)=RZ^ur__Mz6)7=KtAHmqDm3{W%%Tpo`YKR?Olz zcU9O@J^#yN@heaLiur$cYkTL3`~GkH$@BMr|B_$n{okUy@wejPUmkZdtHMxej?Cl< zUGd>X&>%BFdEg++XI|Kf?y_V)oJ@g&s?VEbOm1Z&gS7xlL3QCmVfMr5$C##M^J>}< z4hWymd#8t7JsR`PGaG#K3<&YGKPT5hH&0sLb3KafCx)ZEF0WwZ1u2PR5;=}dqTB)#_r8WeHu zP|A4*j${>WnCFWlq^&ow)-pE(#`Dpvg}K=LvAzA&6mr8Gd~>z%27*klfDQnHJ4(&c z$f}n@Oe3>SM3X^_$i&9^@fussv$mf`C?$L+SWPAgZ zvf3S$gDJuUn>5>GrpQZV!#AG6)-=-PqOmBjOK8lHEd2I5mGAzL4&?&UmtC4zC13Q; z&c7Ud+&#@1`<_Bcz!ITc{Sl`7c@nLm5fgnMlejeHX zvm<*Migr-%ezM+RmXPJnIHhC|UtK{YdWhKrWTub-4Tk_goDix%rFQWlHhj(Q<$lY9 zI{R*##56yFfR%q_r3bey>Lna^8_C8roP=?_mfY%eT0)|XLP}}v}m`xEA7Iv@35>{ z6A@phigXhmpl%m)Xxx&fNAdI~sc#(nKc5Dgmd2l&#(U5=*)A_`_*7ClCQqSggn*zjfPF-Ckt zyE8ODy%U{GhVu~-oY5SaSpg*nQgfCTa`SwGK!K7Rgpex+-EzxB78wB(TP-5gsB5M@ zm;$CRGsE5b0yc6ftVIUltOqHcBW6wy-R6_r2ymRP_~nIMJp4D$XyM?pyv`yi<6BY} z0u-4m*s#&d5W!fugof)2+h^-@jv$5`ZB>;I1};Yz^k-)@0dXN^3o;h@uP0BLnZ*#A zS@Rut2(My*yn&X$v&8ek7VIG=r%uJN!vczNgQeo+-($#2?b|ZLi8PQI6pYLS!;K4w zB_)iGfE0R>Wsauv-D!l4^T(J&wu?!GNH$^6{}I$A$%Z(fTVO-3Hc3L^OYROW+71>lP8@oI1Ve=3&Rv<0JRm&-NrwqxAWT~ zZEFXH95n9HAZo}K$EJ0RF_f?dy=_0K;H-$9nI%#mO=qKqyitFt^i}|}=|1&vM{_>$ zmLH#Ku9ags{*!it4Jxtg#H zRq2!(!d5kacNahT3D%F*@cv8DFLozYdy5a=uZq0hjNXX0WoaV=N0v~WJz)PA(Q1!# zkh7%)p1Vf`x4yNQE8>U(icvKMJ~Vla#deAhphYe=Uvr8Jepq72&I&1~*weGq{jO2s z7SFGbuBh+g(Y0U;O~GK=6>0<_PZQ8g!e{Y0`A6R;^PBG?h>lEVJR;4KCjJ3xU8^?T z*P}KC-;rJ4WXF;6GhHGSOyV9xg(md*6_wmDTl5?fILrUMELV>90>WDS=Ho2Af#0Lx zd0LeCpb)2X(UnlY^>usq+jk?nd7fRFECJR&GrU$|%d$*Xi2F0w^DvX~d#(Y~SF}oUO z=~-aaH;$iwLR@FtO%=U`pR`T=mfa)9A>Tx?&AkjN6Fe%00sRuJ7^3nX9)yv>E&J52 zvT`#c#d`*~#~yE{@#Q7wyQxJTZ%&|OWk|%lHBLxkYA_mbLIR;NAlnOt<4#3SzQ&!- zbsfeP;oq|#F+e~hA8;(6p(WOjgtmC{C4tSi*-supDPfai6(niXh&kDZ^<2hR-y_M> z_U8|+2{tTcuYpm_X{l)7QOg>bo%MX zAG5)UQQao-n5VHY#o>GkyYM+@A(f6pAq{Wt)Bcqgh`y|~ge4(&I+-QH6Y(Na(_Wk; z-lU=mF|6af5MC*HU@k;6Jo@`kU#RajwR?Yog%YGiWxSbfJqGkKEb_6TY%7(qv`QCqD>HbcB~bq!?6P#jRQoRB8ml@II%BoXpUUuL3& z4!wp-Q9!;gB2Et4vD^;Yr#~zlrB#%`#y~3ar$0?4%|@9V1QZ=fKtKYoK{X6)HUt7q1k@P2->9uPYR$)sM9{*K^a9ckT>I$bI;Leit!3VPW7`x1WgfuXNwMy3 z=CA{(K9T9iSN7usJzO9#n@JZz)S11x1zU4@gU_E#$zhY3xn)DY|JL5x+}>>Gw)0^; z^2t}!{;aHXYsp|}d``9%&QBmX5BCS*zg(XOpmr>FC2=9^EuI%(x|1;(J^a2Ph@}B@6giDq_1SDGKri$CM;j zB^@GECFf@dv8~5aVov(4rPM@QG(W>msOxfy;XQV|0D)-@4gnri; zCXP^C&Yl6;1jE;Jtl`5H(wWI2$JYsjWucd>h8ObT=#kU5xA1Z)DpYg+vC2FnuWFqP zSkF__6;WETN?kYm^Uz&RZ-aPrw+TIZ2S8zI7aXfxVOtU$vei`uwDx8vr>1XHcu&u? z<;+u_A8cC2>bhsn;l0w!AgT#)C84PB1O}o#s2(wmQc3#+I9v zDI>J_4w|2oGn4f)kzlUn2JVu>49$uz@bl&d;jZKF%@Gnhc79`a_Dm!gVxqhzm4uCT)(nzS!Rct7 z^jS&C-WnC`pc37MvmB7;XiiRIFcGtU3OCDXGg|aa>8zsJ@AUXWTakAmMcMDIdtc(ADWQE zgN)ZzV=!@!bb&Zygx3*A*Tpuh<)3fN$!v45j{Q5*i({&?1i^5+7HOz^nIJ=}vjI8# zK|E}l=iuxKGkL70V4kXVKs3L>7F9#~u zLIx-~67RPCD$WMKfD0<xR_4(3rBM2Pnj*VIsjKNq`GT)LnlykUM2pmJm9A8>wuSq>Zs{()K ztIif}Z|YS9Ssy_~Qgyz9!0p`?1a?=-5ArHb@a7$1Xq^UGQ7h6cc3VA0gPRs2_I`=A z34$Z9`hg_gL~4Y{tH|{jmTK5X*6%Vs&@-+a_|*HtkR}v`X>3ef$KvEzxfV)t*1_fa zY+}kzK}6aL7V?HmF#al=7Bw)V{}&7YvlcexatY>X(SlF8wWTEjTaDXn>s8xfrZtA2{fLRV+=2*v2(bAzUqwz-hWmOs<~hgjh)J9l>C0zp&Kz(mm}=K7AyFd+z!NPP+! zMsgVjjd`})d*g&rUZD*>=0YD=HjCX_Luh?wL#yJxLu6 zBqVrM4)Y$Fz-d%87nqTwOW9mm!{sb!HAO#)Q@K+aa)tTXQap^MSj$jIV>J-ul*K4< z)0>tGgF@L9Q8SY4v|%(EN!3o2!a_p7V$YA&wy=|;mqy-hgq?vxzQEg2-a@*YFV@XK zbCEP@xQph6jAAC1tue28p%glol_A-YTmX{KxESfUXYOy6k$Ejo&?}_#TA@tS6VCNP zD`Y9#maN&dr$RuFc`3nA^7VRpCsGBMHvYRrL)--B9vX_dm~ao~f&J!^t_Z2WBxJr> zalH50N*1<~H@ztuEi;p@p$Tr%TUW#EpvA8e?io@=1LdB``=@BQd*gT8inx2@F!yx( zTJa!g$S5#l%Q$nsx|Qrkff;+nS#aDvWL0dBo5&l7W-sMk*Fq)GNv|8f`b~0IStRi>>7X9_6=ye@rGXUStV4G9Z^p>w?OV7fq{XiA@e^FcjwjAfUH$(M5lf2!tW; zx@q8$$0r#RI=nV4S~?-Xf~V4BNyAuISylQ?pprf??+aJk>&N*^T1@s!2$Pl2E1?|%%Ui`hLN|5*9{M}23zzU{pK zv9-0`cz*xmRs1Zx|3P*;kAEC2JnJErZ#rR7jQCX^NycC7tP%1&?=>3YF`?;i&(94! zKR57{o*Qsq8`$r*Kl3~_pr03dLm-Yv_$KpNPXFrxQU3;=vY+%+oTPUKws?^K@C1*B zpF(s>!RF>>P!0mP+Rs~fz5K;luXnfO+1bZQ=cBV1rC@~G%aJVJuVU%z+2>ifP{(LK zDyk6#^seKpQh=FP6iAN&XHWj`0WS^Zv*zz412c$;R#_sl|KSQ5L5n%gQGf6f zhVAxt8kF-=@v7x{k)v4#*{jV2eSm;k@*gqL#*%D(yL8aWOmE36ylgD`<8=?iB-)(dHN zMt_im>7(Gty%MLiZ=Vi%2Vn#*2A(7sl^6D=tRe7|{-u~)rg(A_TlUQ5QsX227|3UD zpua>OFH%DNG6Y#JA_wctpA8a4hpH3>Qp);Y}XsG4y@gfoQq>V|R(j^SXdeF*w($*4HfJp#gXa!<@PbtIC zf_myRA-2+`orr?`@c+iA=>%DxymZyLJ5lynF-qOq_yt5g=l!R#fKZsxGqaSO%lm<5yA!*SMeOZCv^ zCi3(ESa#x%JE8hD*qQE>n$095 zKG`SLnoettm92I*L9Ec~_7$^}2Y(M&rZ+eO;pPWksQje>mca`zAHOjJqo^$wd#ja6?gA4=YbCuQW#i2HZ z^C&b1S{8@e;GPwFxk7`KMw^vK>u9s1!(VCx1*|Qfn$JX*>v0t_M-L;94idmCczirzq0%Cy%t<5&`Y<;$m2}~0hOZffNd}e?8 zRMwe`Nc;){0y$tHzgD_VR*C3aw-Gom58AqwW^DLrCG(q;%&)$#y!MwvK-v2@dx4p` zrH~J|s-z1bOYzA-TV)n(!2)OVBz$dKV0X@{VNk=6%NW=I|4)WNn9QEaLC-Wq2+~Hw zc`38bL^q5VEXNb`+bn~609$Y$tKjxkGz7I25BX~~gbZah%t#GN?z1Wa=HGWvW!3qQ z_}-^KR-XT8Hkv!``H$Mx^ZAcg^5dNUh~3j4`>5!@7)|;=CRgg{x4(p}zYk1{VQlnq zIN;Uis2mBkgYgB!TjPPKw8L8|Ky&w$)0?EH!}!O|;0sB?qcG(N6>Kzt>W%9?px7 z7Gb;>-wuEZYMB;4gGZLnym)qxJEvcrurR3RYk_~$7F81krx&vg$B1zxvf=};*kl{d z9~E@#=JYJEz&t$0Wv7S9tub;*{fqMtoqCJvuhnX!?nfFInVWhhX}FueWXMy@Pk615 z&#|t5J2;K5W}}c27Qt#!An;AbfnHk9JJ(IP23CF^(8@lfsl97&b$!Lzq!Cv7_H^LI|a_bH^{qsasXWeN7~TKQf--cIJ!*_jrn_IlH_pyewrpI`e| zORlr(iJiB+@k#CnYC7@&P9b9UrRRT*kn-G5F+!%IsfwG6sEuq9^5{ykWoW~=nq`oPalk9+4|og8*rAIl{zu6XefiTs}m8IgYkQRBsvN;NqX z5?v2B=19CgzVGsklIgnH0Q&jT$ zU4Q!9ji_=tccf$a$4|A(>g6T({%J3E-Fyb5*?qGxu$GIkH5SHo@%VDE6fR;%aL z^2XYHuQk_T{CWgz2nFjtjcMe%*L@wz0^#~Ssk>UKo+xz((G#X_bNBINx4!kb)NQ;n z*=^jDx{o2duY|gGgBlynI@aZQKA4ISbB+qs=-<|1$`+Jo~=KO?%VIP zdUHe1J+MPfFr2fk*U!Ww^$wvCi=UCV!9XRIG(N3}S(iPgPsLnLPJ>}tqp212cffbr zTRp=hKIaQ#?meHZv>KCtoZ1fQK?E+^P{_JSTSn9saaK#5%SI)&{}|DwQ}&GJtL z9aMe~wYH0TBp-D+mLjHbl-iZciCL&hHC#BB0yeMymOdGeOq&U+8`B*-sehaDqHowi ze+;u&XLZ&+$1<4ZQ45-O_EFN~RQ7HJrP!AOXoqq1-`nzKUbi$a9|AQ{?*v&|>q)I; zIo`tWOLP`rlUPIJYx)=m2z+ZEj)(@?8s0fQJol;iD|k-=qx|bC^dI+UMg9NF>&LGD zuQi(WZBPAw^|}84Rs1a0{|mcc3p~&9;cJF#Ai1X z50A=;hq-%|8ZFZBRtu-C+Z#DzZm2N(1U5g4^KORkI=Ox<>}WF zv>!#cFDHZd-bN3>LVKUgE>O|FA#FPnXH2f9;myn6g0ovR3a5iOD4l%NIV%TmG;{#z z>K#KnaTJ}M;@H@(H{Zb>n9~Tq2Bu=T3uik<$059R3BLWL?9Sl|Hu=Upz#*XM+M`=D zY*(pLI{c_x=EO)HkeLVBcJsO-hm^)Ek>)nd7CT6 z>Cik5N@*dHHe4bJ&Io{c&+Q_l2r=MwGz~{G%3WzZ0E&<;bh|d^cZA6>cbY^PM9Cf6 zT+?b(BN_&$#lgmaM$yslO|%7Y_y!;i!y-h9KPOjt8+BBcEyB_{#+$|vNoqZuCR&OGO!righ)XSc&PEg;T9k4?Xa-zTB zPIEYm((8I3`s`*A)-^UxM-eFeI?hxZ4^)vD8t=4I>0x67aSXxR!OmW7FBuMxn$t)j z-gW6cxt;VUqY5O?RuIjxfNbOFYH~XSt}@hw_|m}e>R2xW>&q|17!9LIlv?Jcmkb)|CGn&2yTQHsoo z5TJ`>L`X_tW4n|rTO#7~d_?g1h~SesB8Ww-dq5Cg#XTU%Pap4q;KlF?VVUVn#lUF1 zN7;C+I8m9mkewMYpJ?e+_NhIf+-_+GaKCll3i#um+G|vIs|Nfj-@dkjIBT3F!?1KX zc}rR@=V=|C>AR$!;c8V5cNG43uhEWLA9Zt#=ARs+DPA&~Yc$U7vo%Q5;B$GLV=he7CS2?g)8s|)=d4@a#uU?#f^4W>b&O78bhBRY-Ax=Ei zFL4MoS>hKo9f(Xs4;xuMBd4XZjKB2q9-txWhu;-FZ3*F6T)zpBj9xG7Ug_+Y^!Re# z9h}Y#8)PJEg0r;C*>@_r-T#3aawIC(D3*RY`HRfvAQ@(NqC`l?UKQ3zLsu z%4xJ@Mhd6&`!tZqg_N7s9+J~ z2@`>We{T^~fuEgXae#E~JX?$31BmsH^9Ln-T_yLeMyHaR55C=&DqVRqqj2RAD9QNg zXcev?hn&I7$uCSsjfPmr`Zq>zrM5+OQZ15O?>on4W^cv`IzAYhfxQkvCopLZwqnVf zWDc*9W^wAqH!UDHI@l-UfP3wDieEbsQEcxXkvFw*$eu;_eau+ZZH=32)dK-(zdswAb2XhvdUPY2TVcN-S60MhOe9$D7ZwzN%E9qFe zj0uKuJVOU+o(C^59(>vO;KYZM5J4NfNS^H)38R0b0&~X*G7j6gDM@}ajGG44p9QHv zkDf`qm&$;JT?MA^#y=?HzEkv$$EVC)49B>&5nzDr-EaAzVCmj|fyOT1Ko6O2KP`~zK;KiBfrkR{cMsWU^4JrvqM#S#3K1fQTm3TDP>#_XM z?0f_y(_T99+1iCQN5x!70X&g&_R0zEQyA2Fri^udym?ndM5P{RVaL41b2_5W;ODn{#Q}uTpKHT&awPCZ|7}r)C804fzsCfdKNv zg3Zy(-V_ZJj-DRBP(vt>_$`-(8>gppNDuJ_ivZD{qo{O*For(b=peF@sC~>fCpPoA zI~D2}s;p1IjbFn8u6E;rbfeaZ$|bXSd8^`rQ$Xbm80=

zlRf1%{0aW|a(FeH=3GOZ z*f}PsSXv5A(2FEmgz5KA_DHVMzF09@N`41>@1X*Bq->RP3pgK7tLD*8!O+4R z|9BccE2i}=H}8gE3-Oj!Q6ZyFei_@L)TZxX!@08v)Urg?9p)VUd~=a=V;w+>RYBtcmAzW;Xm&2%rb$ZwYGL_xETzF(I$4G8jlkcsN}&~YpZG#j$!Td@+fkA&sI;1)f?*t?WP0ZwS%EB{`_=6lu^scDj3jdISl zL!QOt{T2`k(KD4i3kWF6ObV|5ace38>S}9x-}S>&Ts{mUs8|#)WPxto9lMNmVhL`# zZ0$Z~23D3Nu*5^{Ls`D_z^!D~hjO@83x79*cC!7Z zL->HnyD1{8liAcZH)gL*`c0z^=~~f>=xjieN&RIQN6zsxdLyGr202rSo24{LCs#FG zJ73J$>xh|oIA08xMtEpu8}KY>wnJCD@3YrB2m94nmdjv_bW{~Z-gwK&WevU5%Bx9F z5TKuNExY}t6&0>w+_P|_(GMJBu4aCzl~;eGKcDDnc3E;#U&H<_JcpZh)ab|SFoOIU zr{J@sWIuCqy3_6TEkR)iqvJhlnku)ic{qoI3}nAY*>ar#a@E zh{IS9FXar}F-g~s@;DPGECw}p&8b^yN*P$!r1HmG5J@KG>Sq#`!nXX9hSvcYeDf87 zIGOD=Pwsi+9FfF=MOHFeI+%AQSMdu^vc=gCd4$Dzp%UT3#^h#`DG&|umjX;=RV#6v zRJ)CLMmd;FCEIgm-lBkF^V6PnoQ8nE||(1?!BCJ!uxI zv_JUCwH1PahhuH;7Tv5)nr4j5LHdwI_i$TB&52 zv4!r!22;G{ShfP;U3PGXVVrL;YHF_hXy*$Cjd;obWe7C>sQ8n%B;XR;q!FNUB~vjD z&T#0UoX=>DCgFfa%c~fyEey?x2ai5vDT6>20k9z9?UIx)5`GY5ity9bP6$_a+KFA5oYq79e_&JRd zg9U$%nXBPWtnhweH3zhT1{LR;3H< z4RT*WU#te@-4};1L2QOu%F%QCy1ZaCj5QaD++2U|M8XT4(@Z9>1&T_v_#J_>k&-q> z#LV-#^>>1xUfnWRUI%hV2k*S#MoYcU`xsBm8s?L!9Pd0!&e#*8vTY8r0eBvWneDes z`$l!Ap0EA3X}?w7Yx>)(ylDH@W(_?qF9$CpK`OIVU0Vq%nXMYyN)X6wwWY0^wXLnp zR@>TYx3*VLSxrL|BFZ&9U;)~%!Rx)7*I_Lrh0I|1C6sS$uP%obUI9Vz%7%00fs+IG*&)NqY{HRF-*By_`+aWtxnF9%jtfrJnP3(LF$z{5%|(s#vX;V`wOWFcFs< z*_bX)0jJxI(0SZqq45p?u^2SA>q`I%y8Ua2n@8j>3AZ9|UJb{47ZNKHTQlNB>GV?B zvkejR!52|VGmI^o?Otlh8x%Hpg@Q~Um4dLXi6$O^6~{u0Ka8$aj0RMUTvq}Sn@S*J z5&RW|)>Un0kYf>i;?D5ODzKNvBT1(=w@k_gq$gQxOw^MA*GW~uF%YTMciB>-+tgfE zf8Dvf+}zy6FCyI<7zn&jMAmb9Q3*O*ND%BE!SWlj+`6KVW8q7z4NDLNnx=ZASr$(p z@iV2lsT^d<3AZ-}B9#JvgF;}SrO6WIGqA&#rqdO-z7a8xT}savs({JBr(y!#^zK{-$PiF5eVz0_?f!{&96D(>;1+mmu`?5 zdb@5g3uRRp>%BL6cn8!{x8UA{!`d?*ZK5Wmmw!0nprgL*;=Pkz z`|ud@t}%xR&mm+72bDE`&%1T@KY zdbe$UR}G+!{H~eb`!%auouio!TV3=2yQW*q0NOD?O}CwNH0@9|BeYGoR@0!=Hsdtp z_g>qeUAMYz*UUIA9S2a&_`6-54?Z`)_xG)C-2($}+rTy*+Gd2#zUkI7K+Pw$w$-gs zH3+l~RL;kAI55a>8=$o<17gSOwq?HP*31{%?54kU3LO$`+eXqr+BF^8=J$@pjP0)Z zq^nFyrNngG>X_fAX?M?}r(r;sJLR=1`>vPN=q>ZbF-emdI@>1?a%u7T9t zHeax5Bh|E4!~EViqopJvGAa`XrqOoObgrh-vu(a@x9z!g4Q%;ZRd&aar>Z09?`BF# z)!%A|qO3Zu8ra6?N;YVnC6hH(c!21n%GxpAYP$vt6#z@$>IPmlmG>>qt(!8V!~eJE z)+JA)RkYM@YF^MmnbE4Na4C6OG=wSNR5d#m-wvu~o(HOj$^aPR zwA+3+wIv-Y4v9`c2G!aQ(Y8slr;Vr$D$w0l`gyZuKCwl)Mq#DhZz@#f)dB4%&0+OU zw;fKpYw0!J2qm+XxRGLxD)=j}TYN#cXq-i^UJ@xTI#ZyyK87-};-0jaBQ54fi@DKa zUbL7KE#^auxzJ)Bw3q`e=0A(M&tl%QnDZ>=JBzu_VxF^@<1FSki@D8WUbC3fEao$d zxy)i7vzWsy<}Zu6%VOSgrL)9u^#yfHHd?fnw3C#R{nXxWQ}0@AWA)lqJyIEHwGGa+ zpVU)YSCuI8g%(C7Tt}g{;&Zj?Rn^J_f2G(?&9vW9-l=7)(i2(pYEz;(qXQjLt!S5) zhZ?|8JOK_s$X?-xn{n#EgO1K@*Q5c(oecwT4q-( z>j#!3G);SYO!c7-<@a~h`>2oJX_&dt`>?&sFKB^Ua+Um=CFeVB+AGrEqI_E^tSz_M zp73ia@0wOGYJHWnpq;5wigb2rNxB+2n3?J)>Z4nfSaN}Uq)(|?o`^K3rz6KZ$~Cq2 zHQM2>)r)dl*GNg{-l9|}*JvRNMSA(8%C%!r$yX+^=skncg3)NfaI|1NS}-6j7?BnX zNejlL1%uLpQE9=jv|wCXFfc6`nHCI93&y4egVTc1X~FQcV0>CIKrI-d77S4f#;65@ z)PhlJ!7#O8oLVqYEf}d53{?xpss)49g3)ThaJ68(S} z(je1mq}H-#vG{<5QCu7(A;cPVYIxSBWKwad@2Q$n#?>BoIWlFRe6xa`u5Bkldddpj zzkZ^@U{^^Gg!k;x>@P^kElQ~draFGBX?G(fY3nIUJLb3Q7{!f}=~A*?S7&RBnEJhr zdLnByYF9fAVRo%ph#c#>p_dY zPphe{XvonfF(QuljPX6{T#VcW|)(VfQhL09vF7J+b9RTN*;D^Rf3bDKScOjX%kA z4aU_n!N+Jf^&D-gwWa73$vV4fSY(a1XDz6xH#O?2IvI7Q2W{=9%T7ob-K90omaZ<* zO>Kg9qx)B{*kzEezta$b@zuiSR@2Osf+wpho+tgTPwhp zCK(*QwL586pj}fpuJIz+LuqvRwy!>2#TqeyN{q%%U00MNslrgb?pk!C-0WDUp|5iiC*K zvFXap((bC8@?nR%6>HSh1zMv~1vwhC5*(9}q8cUFPVRP7O4b6z){>z-?+ykDH# zo7z)2+-T)SD>quX(O2U}X^wW)PuO*WR6#QZLNzgyT=fmU_4JLyN?|1- znr23ev-p>VUEI;~)QfJwHkQLHpUpfahF*|e*-DMTExy7rj%2?nB7Hu;#_O>VOr)vt~)Y;c* z%hZbcc5>$_aSjDqov`}uO*%8fq+0)7x>?l*9rTAZwXD;0iDo`EZ#8`M~JpP;;wMyow$^lj2wF0jdc&)%|1zs!gT7lOJyjI{dWVRc{O1w(&2! zG_oYYr2;ff^=o?wA5jsFEopES6Z?~HWY_oI6j_}Feni#OQKDLD;YX&JuB2>CJG#C` z+{ytks~y&_q1U?c*OZ&btbx4LDQI@wh*-Ja<&l~?GOtdfUiS>1T8?#E#m7^ZzrnuU zA?EVCgrHCLfJ48>+Sv7`wi%ghP$?8#v$e|VBQn|GFnEfi=HRh$_PZp+cJhhmg!Q#T z(uTrNmC44Yzm1tP&H}pbj5dpUZNOV|&3B8s5~@zIBJ?%rnF8H-mBHfO77WNS7*()X z1&dX%SOtq!uvi6)Rj^nEi&d~#1&dX%SOtq!u=p1Ti*;H^j_taSf)u!$EfSkXl(&4D z)IQwea8tW?Ik;*|w6`~Gv2|K}4g=dm9dArEV}k>;bsb>P`cvLH7&~T%z^3Yl51zQ0 zz_yTMST~Nv4mU9|NAD3^MU6Hw!P>6hHp+xb`W6k2A|f>tO_G>FcsnK>B2|Jn{&$O3 zgx}aMp&_8WvmS+NY!y4q4^|rVHGHAyfO??+)h(qnzT0e;W7n@UTBAuX`1toNlM4U9q)2d}M4eckx*z z+NR>LKW%MW*T#xSfg)z2j@_Bzwj15q0ZrCp^x!eO%0JOg_dv2GM#t85*9_5#FUpN= zji0nX*V%h(257JQ13*y2Ax0-r(5RYbYqJ>u@~!yvFObxBB)- zm0#;okj9a0(y+7Twl;;E(|w9{vp_^U%m)}6pcw6D_`vwho~U5DM3EdVVS~nx*pdQ3 zDOJi5Hv`U6n$~XjWYS<-)NwvF_kEcFH zpy)kjKhFd!G(mI`G^sRolo$nu)Bw+StBBFFYJfs>M7i++{i7|qdA7<=wlqkTnqi0g zp~0=|Pp4|St+5;hz|ThSvH&AqVr4R1H^-iB`?!R9tzM4fLs2HHOwwtHVVKktFe%Ck zNfkprR8!{}ymhq`=Ga1`lt}^(4)F#2%74+j%1^5P0*T2 zkJTwqCWleMsY(sX?Y3uv*h?xOO(U6)IOv*PHc~=?vd85%O&*l3 z(uBL8=c0B!-Jv1ipG_D|wr!U@C16p&M!C_NHTYA2rNylMU^}&YcD0A6M-JLzv871CPqRGUrWrK@@Yq0K>OP&8Emo(bud^P)dJ{8Fr%1ds3+rhTo*CgHsCcTa z^-+*91hiH=goHFfTT~x9uvaHZ|uWr;fYV`-> zo1Y(ypFT+1o%7oHYxn%s*Xs4{?d{j<{CWT1+^TOrd~I!WV{>bBZF^n5TiaaU+IlUj zzxEgWaD!)@y;lEA>iP%%^zwAM);;2I7{Nx9+n2IPK+8b9e6(-pHQHjlsOj zU$6I{xhA;T?WTia+KzTd*^k$*{9Y15%W~)Mu;1=?qf{v2pMLM^qCd)o$oI)r6rW{D za)J9-r(ec;%QtRcm0MSbX_Cvmu?YtAq?_jFa%C*8pieqNBv0D7$UW-gDt4(L?cu>F zLxXV3crWSJqGsGacVw=3QNP?>j4!2ZGH$_Y+qGaY0{QkIzx}Rv!-7GSOfzlu(|(3) zrrjm#ytf%$vH}j0=>6p4!-IX?^nUardQ`8kKHO?Vhslq%X#ENP-|kTSgpxw* z1?aARndV9KDQanI+gw*1wa?KfdGsz~CLu9Uuz^1Ip9VAwy);=%dV z`wvh(FRbU?wb5>WaFwNJ=R-GApF!gzm}Wfg;jZA55w7NSBLH^yzFK{jwi9&Q>V5~6 zrx?WSNz@p`U}AN>Rv))L;#VLv>gg@a{7B!dL|-IXE=@$KXh}YJbNuSf<@chi{wTVL zuN*DhyzTCsA5P>i`Kg@@+~vIJtU))8du?7xFBNGGHCOm+5{mjKBC%175(E70)P5Po zL*@H?I2=5A@Zj?DvKBjjYyIr(L6_g<51#GsHV=-Pwxut7-6WS=w|^L=kTSX0IvxyA z0z;HU-S{%w*u}nZ1$&_67jFE4nb-lAue3nFKqEYUK?15Z2p66-| z9Gz}@k@8CM{Cd-B;~SCFQ@lBy-~urStxu+K!Fx>i1esC)G}gja+-{>OwevS$4}5eo zO1qtw=wrbLNqZn~s2EdC$VY<#?sm?dk)bl@t~Z1oXAP5|@MP(&F`br}&(`=kDA7dn zD)(<`TEAVcjV%PM37%9XAe-8#~XM zwb#|i8v-Ly{!84)O||V0gr%_bwhy}TPza*4 z_IqgAP>eN1jq*h;)`qV{sq{5i?RIs<&@n>@W-M2eJK1*L1Ak?4j$a=#%SScWkPlw#9|#wF%cY1<)GWc!q45vK z|A(sCnuSiQ)gE+5x%~S&Ix)#$<#ykUewlnXMk#xa$(-h>Kgy^p_!~x920rPaYsDqA zONUp3M93$-(Z%b(NbEAp@$;95M=N*;>hDL-N0}>$g4e%1{-n8&Z}}xeMZVOk2T78- zQolwsh9FNn$$RYFH?((e=&f8s!->K6Itm2uAlYQ0_{%8Lwlpcufm$iGzC4Ua;5|w+ zO^%uk3LG}nr*4Zl#M1e6&58M;z3Dir9ZT&giR>nu;;7ACS z^FV%M#(u5U9{zN#<}63mTA_MC6~!@>a$tTm9J@kaeZunco^=cwu3pB(qWXK0Wa7-_ z(FN2gg&rBFD_lTkfTzSu_j?rY_=2$9|3MXx8WYCTTy#az2G~KI@g3ZKKG8M^evpt= zwG$lz{AqZZB)tinpphkUC$E_>eEO5Fv~6_lK}MD`#@6qnD@6JMlWPoU|&4m6BiG7qIwkJ6|&ORH1|wjeD* zVM%^WkwA*R8AP4=EL(_IwQxz#g)pIx?#5@*+cO~lqTg|?_{%IN$`u7`_=sVFV`hX_ zK5CT|r#YqR_2|}LoZHA4(*V)t=HqpCRmj-1(oVqM;4y|`E_*YDVS!P`b7R56*!zK+ zTCajp4=>%He$n<9J1@NR>z2pv!{ztx2w4kjWYBfJx#Q&X@@q_K3XQ*MOCVE%mW1JRsy?-%r23ap{im9efzFg*Iquz% zx3GW%HnIdcpC4wnvjo!HD^YyXRfmVI7tb2UPoE!t)_U4(9KSqlwq70_y?pWF`QdSM zFG{kkUuHy7LL+vVjBPTU$9CyQH((VPgTEfq0>)e+G_`x4w7-{(mCKUF(HXkF7ZKw~ zBJG5lK1uu46m4R*Ailuo9Sh1{j7#qCNz%71v?m4F^IES+@*4XjxnA9hysk%mVd@h3 ze~0VRo(JYopw;Owg$<@~wp`rq@w5&l6b(*#0*n*M-qP>^&&ad}bIud%8p5=+xY|zs z3M(2Alry_=nr68;6qjIaOGs)xTZr0JD=;RVQ3h3Tl$2#SB}TzDBB=xd&~c0ijqhN~hON*<@%k2@kdXac$+zF;7Ms?N@X6s*{wELs(zq)WY5P~cbeBZN{(^dvC(pnA=KAwncV2l{K ziGCiueD=(e8Te$>p@9mDV5suk%?6r}c()13rIS*vk#UU8mGN@Dnvy!STPNkmX4 zHO1N4NVKEK>WuA553YnWCc%#yJ!g6Fv2_E^E`RmaSCEn-UiE8;fP6{c0OmT0)Oi}G zT}G)PYX%e4;&28mTJ#RIXk{iAc&D=xh%?^#d?oCQoVdK>I&XRD$3Cp%J1f9#d3q)| zv<39*}byMHA?+|N8u6C(0o@IJEuucQb1IqWC2Px4{dLGhjE%t-2$xvsmruZc`gg99CK&)OkP z5K2)~KnM`VqBNYEG|mh{}r_DciX zSn?qHa|(MMXxnmhG77t|6VBDm6p=}~mh1BzmRWi`OXwh}rRZ&`FGz1_84OXU*;nc} zH#9YI+?1%!WyV}ZlVq~)P6Oy>*n*@3G$J3Rz)5pS6~+_8Su16RnKM*M)asN_O8>4T zDIqrRI*&~Y*q0oo1~-UsvD${Cdo*RP0RJ>gM1M;QWPDQrKa8H=$WUZP~O{L>*eX2f%_ zT!6zl%V^h1;Sts3$f*g|c{ayjJi>oFa7W(<9k=G&OX(+LhQ%ppw6rf{S8UWM?yw%q zrEq^4MZXa*2U(U8!NLXnSA>T8JqwY4Oye-yhO2%z=}o!9Y8tm@G9FU+oxK>sgmNX_ z2-Gq$C_A#I%`N#HCOu2;WON$F&Uhos`@A;BLW4P6z6bGOW5MMa92hVhzU{I8nR;zA z^lMta02e6bI8Dct{%v6PFU^*`<)hU71I!&f{}?IkBj9Q<{8M@{x}bCv4WM0_a2d?W}?z3J%q_hR1t^NQG`c4>n9%O95#!dc<_!EB-g(>i6K4^uAP0F3PVy_SY z-wpku;kj9h*ECT#*b2u(x7l-RyTf@8bqbRrShi*C`Fa16@T8j-Wjz$Y%m45AO3W$|;E z9_-)Ht2ZE1Q)w(}B6WSHYPM_Y!{YHr6VAg8L^W-6%nC~}0XG5yxYDf}r=#vuOh8fQDK_{!#EcP581@I&0*Lg%D9%Wh_pjDCkT8iCPH|pf=O?lXh5xl z#`D%TOo447wj}yf6iF+@O<-bEXc}b^e>=HBV~jLYm>o3BC9~XiT&*~YT-Z$`79wL* zU~1aPzYXQVh&cWv8_LQADER&C*j+_zf}Mje^LAsUE?m}4BC0ER8g*yw}ojDC+p(wuflhOHAOQ{!+Wdo^)#POoWFxV zj0@i$+K;yjxZ#~ck4-dc669Vi8V-(7gxmd`_Rjj0E145mKx9eFFo`Uen#;GxmJ3tM zMFot~OzcO3fl+^l28PNPI*C^kQ2M`8QP+LL&rro+Z_e;jka`t-R>5c4;L};Q|9tQn z3_M|zWY;?czzaiZq#dmBhcsx{{iw6prXy0w$|ehG(if2`l$QFW3KJ1tX7P3>aeoJ~ zm~0~L@3F>U=nF=d#ctTJ=<`GiEsn-m=|SWyF`LR4(bRr?RFq6ve*R}2AV-Hpqe^)GvN z-;ttiF3-`31_`tfB@4%OZ}MGH;IKc8yEl9AS$t?zvK$_=uuu&Ns&(|p!=&vh-V9tx zKE%#7KRqngu13eg!k|T021vMZR>vu5tiDfQqD1Pqe^affcU${ zc&JN(>Q03_TH51Y^e2-8JPN0DZxo9{-!xeRFwlIJn7;Tl>0W7-rX9DgNX;QY?PS~o zofS<-!<)(yfK^@js+-}1R82OC#J68)NNSz(0+kbh408XNFuVxV*p5`PcI?uw8823CF z`)I9NpD7~IY5_9VxU!w~BT~dzIaPvktq#+Rg!wEv$pC0gn9}euy!2F%aZ&@|cB+=h ztT0Amrl2{02J~}1EL7<=#W}3PaIb#h&OdqbJw$@D1J+@_k+&r9t z+4<}{ef6t3K2>5(QGYI~b<1Y-%$21tmL2~(^w2QC-z-)j9lcq9Q-*@PhXwPq##gPQ z{g1JE{9uX0xg6d6$W~NdN7Vp{6H21(qL}XV6-W6U*iq3VVCM zCqol=gD2ClDtMXn^r|@Ie?EwR80krJD;8T3eYS5p#EMmnE0?N@-^lSg@7=2FvdZ8UG-mAp9DCVbHA9v6Kfs#B4Mxc&oy4?ky4(9!c3j4j+wueK4c?IA1{=?5hI^E>6e#cd|oUaVMg#Gz=(YBF=Njd z3|B(&0Vm4E3?5CX2@Vuif4z}@qmdl^K8m~B&`vOkm@rR6~?`y z6}>(Y9nOA+c+#PGDLN$y8{ETET*}$ar^L;f0tyk-v{1R6(2C687w!SxtgY2H@X0V4 zL=Wd#vS<&4m~|Y(YiHQ$jKN&T4(JTF_Wg8qbkR1E;HeP-MdCRTc2+dAvMgsmm=oMW z^Vr<+fU@BbRX$NoE4vzcP7b(Sb)hVDW>{c?gG2;`0F9R;gSkgvFnYQgkrRugW0hNV z3EEcJntq0aD^MTzrv&JcFT0Q^MC+EtMa(Psli)!@S`JnJoMinn)Bbmw-@oU?{vsBF zp5D3!bgZ5CUlw05vmTz>&+d0v#@OMMJR>9X{+?f(5Dy=RQEs``%Io)=oG&>IKS!AL zO2NcR7%|8&&AH}E=P|Y(Z$Ew#?OCcpN-w2)y7gNoanMG$n3FEHfL{68Am@$$(dZ?L zgTD1Yjb0XjU>1mC7KmiZV~J~MW+8AQzXK;kH4A6OA)C9Sn?hD(Y~9l6662NhT2d)0 z3az8IywOl9a=Hi7St!~mjdDH2eZWx_t*Cq1oIgla*anUy_MV3)wI! zLjiZC%AATui7Em29KjODqmiJupspAVVzkO;mt5{OT^Jy&fYG9X(dHN!ZQKnQ&166S z@fjTGX`u^ch8l~%@8m@n=0Qt&&(fZ=@JvyTl

UXgl_^2w~sj4;`URahi;<47GA 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≤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

niWZD-TS`%uU`9J`<^`X$Mi7Zr~Zf@ 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 z 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Ê-n_j#E2+)6pPYeAGBbB%V( ze#3A|e#3AGD9bFNDN)Wz!TUhM;k z3;xEw4vI?-?{|yJhYMuA{?}Ikz~2wYeSXs4|KRQbZ>>~Cq++=r=Q#5HItpXu`E|??ZliMLX0kDru@j|-bEvKKA#g) ze)N9nX^ud^ydyO-<5Soq#))$f`cOj&Lg{n(yZ?PdxCRoL1iei#l~Ya&DiFGu@reaO z^{^?l2LO^B8w0cqL&%Z|Zd3(YM} zK_&VDmutpKQAw=uW5JvjoJv9);&!{T26fxOoDvQ2m8>a_oi}Ik865nxc?}Vd|EVi* z(ENJ*C`sSZ&&zh(k<;wbPj?s-+}D8v!pnX7X;Pc^y3Wfm8kDn@fO2K4)JRVEn zd=eH8O(h5!EtiBU?qeA8Wy}b#Y++;`cvKCrBe|3K9a+!iQ=bR(PHRAo_z!d;Hu$F+ zt%^zNF?MOD53N!Z@*QfTKM;gyXgx<<8dUQH$-$YW;Dbaq$JNzY__BIX1{yGN6t$Dq z`zP5Ew5qVKc!_SwgG}z7#{HZMEX^4W4NTUR_4*O?PCI4d(a)V`u1Y6No=JXG4R zgJhAYx?piZAH)3>VZG{^W>cW=Kngy|Ia0=g5I*Hc6zt=pqs39Cq(Tz%;0>p5U2Cex z!JBG1w$1JSSWv+JPKQd4%br%$V+I_WC)S%xHS{+aqC9Cdlh7gE>>N9~czG#GE@TK# z!p3lH@TIG;g(eB-%YmEX3!l}Gz??SQBg4snlxSi?%48PsQqfhg4zk1)LV^2%WzwY! z|3s{Ta)uPdR7=0#%X?rqVdZi&A80PJ;m}?+e64j=l;rh+8)Oy$Tx`o0YS+X+1$h~} zUMfQ3@kU%U5mdt`>>}NHuP>}ZLq76tD;rt0<#LIUhz0XxK?OIA#&Rr(D1v(=OiNQ{LK!|_zkuu&63P&1QF2~fHiicm>cxV~PP*F46`}r#hEHBrCTL+(D;Da`W`{6w@+$_zPE<5(_ zP}C?!b8nwmLiCcj5}cKNQxb>@N;c@!Hk4k?vEOt5$OHECR-}(_1Lk279jSBlmh4-2 zTbegxOI9yuPO2`ztPAZ1czfku)dcJ@7wq5&WjD3s}PYYCwkQ+gy^o_l+yXDbQ6&)8et_7)TLCH(MzK_-?;=IqE^ zqwhcL2yDHq`Ezk}j<2H-GEGR_&1@Xc@O<_vmAP<&C&RSlr%1ym*x701#Q$T<;rNJzx2Hpc>jZ&y$!oSJHevR z*L3>}OURUGVU0+`l0PMi9OQz4D8<(IKf82|^2xzEVOzr;^|E)@t=gWBf3H?Zzx8~M z$+hT7E3mnE{PA-BAn?M+KdJ%wbmFdog%PPM^b6>KDWa_#2n0G{M8{7>86;U;)#`o@ zP8|Q^fMH6(b|D^!SnffBSm5Y*0Xkqvd62RC-LucAD<=Fi-q>C&?*SGKxqlomppS4L zy1lwMvvpmhsf-ta#>J8wJx*ApF)CLC*LWbR{rTh6$epP@+tGJ`CS>0Fjb<4V$a|%e z@1=wWD9Vg#4WM&;xYWy*f#_}&R-8{eOt&ue#_a;|bZqR~xCg)4KK%>0nEw5< zp$oX87Am3U;RX*sHmWoa1~q&C_QT+o2ACnkh^P_yDuN`2*B;$~`wb9HV0*IKYeMor z7Y1(9_`nwCA3nh8uY@U~Aff6b>~}X_y!aIH{&z!+*qDPJc8OsM-7LdNu|`{YYV-`P zoW2A!f(U;q+pqc09XE9?1hostHo32W{{RJsBK9rG;(Gcj7=NxAebW22+G#j9lJf9Q ztO{uXhv)_&RNJv$iTKvDI{O!}MBEsj4bL%Eqa~)`oiS8+sms*eF0DJWjHQc-(Zh&G z)8vJEEtEd6+~B0`JLh)?*lH+VGQ2Mi*V6WS$Ew(rB*Z@-@BavQHKiD*CcE@M{Y5+3+ zcT3K-oJxSIhm;y~*|?KkG3|+e7=k}@PEz(=_~>s^!_M6sFy5xuGW_rHwvNOYaeI%y zNDaOMps!b${Zq(r$hi|2@~R2}L%KQwK1a`MOm^ywlB*n(oFpvh*G(LD;ukZr zeqTBRIFSuLqJO>45_9|{sy9YSEs!pT-CXTCM!^H)y!t?F58?uhw{TaBBTqj2<1noWT!qcC(20@{(%%1Pgo6tHm$d&s5DpHzBfk+2hJPU()Gru$ z-CX`bI7H+KZ`-k)%}M-5IMe_U4k&!h=f4pSRg36mlL=j0@<+q53BhSCcl3IoL1q$;c5HiQ`~+8Ez~iO3Am6 zsr5qTd1=Iyt}`Fl_%|TKOZ|%iUb>l2Ny<9wlacHFGHJkTebo3&jB!nKpI#3Km5hb- zRBC+#tdPFC>i!@2AemZ@99GgF_+Wwgg|{E4Q80>l>aEX<+z3}+vO!<&7UIakp(^EA zp^c}Yb%(=hp&6TCZ=K8#G=X_m%zT_K6Qq?(XsJ&3C!PvD{0A_5Zj{56_(0*k8ugem z8nLaF8S=4N2K6b!CW{f_u>Lv?{raiIeR7IXu~2ogzhDa5Y7G~Oc0;EJ`)*{VT))@1ot5nj|D~8 z_5UiU#zg%)sP@!9@C`^vK!qn&8i5bG>hU^xv~RKlN@C2=qku>RY9LSG-*5?d;s1e7 z;K+0QPw)LVl)}yb5v9=h4@%*5`frp1$F?co{|Tj#*@2E}cTjZ-L@A8Y*$Dj~Q3}?W za3~Vin2~7Be9!5(tjFe&XcBN4!h=9b0OYUyJifhOv+Ag!Q92hD0d&Y(1oga)vCDq5 zBE-8x>-QOTfbri=1CJ0PcLrYm_snw4YUr!Y=tSc*>p$EGH+_YYwEJn~aJxMA zUC_MWhL{P}4;61fLyS6(uHQTYYwc-!E#MyH#~h;b1G{WZ?)^L6;z^2Eq54FMwHv!R zmV{T0j|mpn=h~CI$X*%So7&FY@69-61)ZEL;Kc*E4!pw>y72f4jf%n6`Ch(Np*Uid z>io~v_7ARwr=X4yn7S(odEDq?tt2^u0XsL?0NKkzw9r$j z$H4hOA~^jIKL2Q7Ji7%S)rHW38W=)Tm6JH7w1)LXo)GtJpq;fZV9bpTSqU z+mS6-2O;O>VCmqYu+@?}UY&n^LQ^0Nh4t_vBfvs%x{wL>R?7lO1r@hoCdeiGl71LB z0M%jWIASGupptV3!yQ0uO_K=0n#ZhB@mH!2&5t}>S_x1c@%yQ`jo5*-a)9bs;PdbZ zT;G~mEhk>jHq`0%xS8%jFT$p+7fv zxpjE5hU<)s8VvS+gD0c1|6S+E#ZAtzN6hYtWdn0+&)&%S>90{h3-1%@&TE`8SMkh$ z(!kKnJQ2?SO9Rtn4v(Eelq0bQFH8QXu&;|7Z2&xz5jqy4<|`XTx_`aRBk>$>^&al) zS~Uwdwm-^?_mOWE&82(TC|%X-+1f$S-AU{GRR8VqDam1UC95sDzTHm4P2)9S)N4ga zKnZOfA)|@U>D((`~B^$^-w5;OskKpEHVJN;^HHd91*ZY{lC!%&x+q3!$2bDp}KTUu(T z6fB3qPJ63WQ$oO8;Pd4`gFD3K$h4A4L-L)M`Hb^KZk72s>(7+K9AfKi%#(&~Ddjc+ zg#ss{7)h1b;kcuQyArBYSo2x^h}%85ob$F9xP%P6nD&u)3g%#~FGk?gaWLB0x7PQp z8riTuxjWR`-fXMO)f2+^o$1q6{tK-+ZwQkPdIGyP6JAK>9L~A6U1ppzb3vjOx!(gz4TiNScs=Y zqm|gmZAgqR)|{)_`(M|Xe-}DjUd_WyAC5}&u+19j#f_ksEKRW!{Si^M=@NfTG%HjR ztWIkZ{R3;H_M3@_sE$hI>3wR;YKTUW^`ez^7G65}>qdp|F1wt}k50Llp+@_xI?ATE z_Kpaj#nVl5-+Y46C*=M7c<1XZXOqrYxL=Cf_{BHlZpoKCsvfSwnW~v*IMZKeDB2bF z*b-(%7L5Psr&OKI(U{cmu+}>x&sZUW zd3bknT<+#FQ>DQeCt8j*F-%#C7_c@S&6)8e&RWHp!7#d^uZQPbrZ41JfKC+m-*qov zw0S<{MIB5GM;+Xu0&?43BrtO`zH%|NKR>(-O$_f=TA$OzK5=jXY4CvYI7 zH@~zkc(^+;oXp8Ho^)G!lM2YEnHyR>h>jGE7A4x9VyxROc^8(33U9gDhn>e9>E_6s zi*%(g;;d)(Alq+R{L}vZnTyn)r(n7Zc%Dz5n^1V$>-9r#c(Aglr z`r$P`$23uz)gH7aRK_5F{I@ce0nvZ z{eD&HI-8AFJ-FkzyhoOlcI}Ipptb*-T*Dg6ZTJ6>Yan8K;7Kif9#YBymfjjGrbs@x z#N3cxLB98RJRTu^jKL!EV|Qpb+zLXu^JWfuq+^OYfY5nG{<;10?zi*B?FnGBN+bOQ zz)QLnI1%~V^iufh|F{07JMlBG)m+rRZlQXElUup=h#Kv8r->S#Sgndv@n0=;hk(_+ z5Z^~$=kW-C`~IBE#5MMR=*m3(yPKJbD@WnB0xj^2#djym_Z*yJcwLJu)*I^Va6|V^ zBU1NSe!Ab^jGG9c?r)lX;ghD7!q`W*Bu0*?x^ea|3r8eBi*YSb`4f^Cs`QDB9EoN? z)OGZjn+qx>ePA_ERwUAn$P2e36?P}piOP$%<0K)(tS<(BH8sk~CxluP1sU9vVgiLP z-(^?BQ%Q67+FVieN+jD(?OF9EV0N&+s2CCP`bi^*ehH*vMj?kP7!XXxia-NbG9vo> z=F~yRzQweYagTMhMWm2 z`Uet}=-{N|@myYO@sdGipLS^cPg`ecOwe^hlUey$;Pm3U2k4-S9$D31b&8rBWRU7o zz6xq5*>}hhWeRcx+JG%XT<`B|2uFhA0QQ#z?D}F3;ld?!uKXUSW`_1wqrJNG76b@nb`@!XYk9I^^7L^ z772B&_I8%7LI(jqLDRvt?HoYrp&5FMAz?LEF;TvW1ihTb;*`|&FQMNnUzfrb; zeiOWof1tH%UEQ$DP=Ulq1AxznqELb+Y+3Kgb2@0`dyuNbE*q!(AOK*Pg}PyU8H4jT zkpnVllnPJ?bimw=ev?b`cf}h+eIksC6?*DkxZ3vXH@&;wY_EOzKJNq>DH^g%7R%!U z@?|r|zq7lg!|GZJl8|Xi`{Xcp2;D-K5C2CNC{E+-5lB2cBv^1Yh>46K38w*^q7s;u zODCIjEQCv6Hrb6AwW1}%)SZ*GDeO__82*_9wW1i<&c`4z>b`mMGK$>|vyPr^V@uGv zpJ^Z(Ql>=d{}*u<*hP6*D>IXT@KP{#R<<5wmB0$1_GNc{4yb(rwZ{RbSRy#({-jvG z0*l~Yayntp3$~?qLqC_W+-BK{f#q_<{6S)28yr<5n_Fl<&J(JmH777DETJT2V75Y$ zQxG7zo0XyeFrPBuQ_oupO`B6Y0KqTO=@E zasJ6?b9YA%jGc!=(`9`8)Rk;Pnz2;vYjsQdgyDW~1f1H6>FEe+F%0=BBBY4jm{;M@ zV%Pt-FpFjw0ra_C%fQu)>7v=zW*xfwcznL5hDq<||1r#>v?Ai@;RTy~hf=|hhoH%c zbC{olY)YB$rO|2Zk1`}EV}U_l=In+n7?qD#j%==}3!^42_?cx=i1V4GY;P$b`uep-<;b%(}m%6S#e`9IOi6rA&` zxG2MmWrf%RH&TOr63itNA+g4D>gy6vL{nXDSmltQ1|H) zHmsaTaQjdTeXK~1ePYe6>iKarYI2jxAx#tdfjc{%S`cIZt-<}6Pv3>C3`jDOz^P7z zAg`@7DZ76C%<0UfDi-uSwQt*&DS!?-I$b=nC7EQ{2vq7zn$d8MD%A*v*P9e|>SLw(>lCosZTiO!eq)TP0C?YQ`c?2W z%7j>HlJ2I&*f}HDS%i7~2H@rgyleuTFXLX?1z%Wz=s>s0AE(|pyI#s?KL5f`@8}}n zMNP+Q4&y_i;uUzdYv4WyHkS^5>HnWb-xP;#k0Fd6I~FAoO?p5YHJHku+P7CEm179B zhh!FFZb@R61~;E`G7L93lXA&jf6GGf*@>b%h5PgE<>Mag<==yD5`zCS=F*KElP8z>g&`i z-@5}K13=lj>+Fpb+~R*7hC)_+Zltys}3z|PwRzV3F`kolbwGF$GXzm zLu{d$HD+Z!@PCb(aCopt0`NLPU^rvJV`$7u7taHFbq35uJk}6q0=7naJHCSU6EV@l8{SN ztnH4Pi6`{&su_7h79XG?TWxj|apa=lZpJPR-{-*3i%UQC}cSs`sgLDvr_x$8HGN5D`#TB#85!xJ!*W~d(k`11Hxm& zuB?H>N8NIKr%sG}FnRB13+^f)CT-U%+><>v&^_W44Gkoc{AiLchWZhl?!Wex` z&gDd5ZA6%rQBDW@HwK=NZeHdSAz~#kkV5v!wi)HBve7@F+>r|2B+dH2LAg7hkZn-< zjuLb2JE^%O($GW^v^$8GUti}=zJ}8wTf|`6c+bT^QGIe7dF_nX^+B_{2W=3%1=asT#GqluR7NMb=EK5ls;^(K3{neup1hHt9N z&FslR5{)pIy~DfJ3igU>gF`GQJZ=*!#C-rqxL$Hx?ymzBTcqt&FrAe7j4C88{Ce(2 zAL53j&gBu46mS8I55c{gYBRpQ_@$2eKVaL55YVxzvE%y%#_(%xxU-!mXtYwYY*{Ha zfNqUe>0*;K3R>;zdQQY%X3H0m#AE~;l^uUreE;F=X9~dV2IM({3#0HprNfyN_#me1Oy)63 zURL)^dOWJ93zL0&nAdPwP4S5&#Rvg$``(_^K#D=P`8J?%e^!3UrK#n z$)9@v#BQAj6{!ol8YzjE#`y8nhczod=e6>o=CxHvG)F(wJ(p+GFcH0kCT=@BgR}&T zJh)2oqF2o#C3FnM{}Jn2N1zUv!MEc8@b<0Q_+_wtsmzSXyQ4(wJ)n%rbNzs7^Y%q_ z>e&Rw{H(c z$%moZ83YR+@1r!XZyJz~4}JJ!32r78>a4i!t5owlBZo%(NtTCyD&B}=qE3wv%@B)r z0Zyo;hbEqB8j){Cc8eQ-a>h6CpI=V45pv2P!o%%d6Z2G;+8x6+7RKy3YVfm5hTb`q z!;%&EKGhh+D_n+vtY__6W39kap~Fgr&7EwNT@#0Qh|^EQkTx$i2Y-lX#|YmG0^O7) zqse8@b) zCB~GTPlcc(DNdKa)gu{Q1d+ZVEGDYJ)pcz(L(RHeoTW+QEP&Tb4Nk(0BO3WxoJN&| z80>2+_3AK%ijAB^DQ_8z{8SMn&WH@ID?8)r>ctuUSC_efoaCnO^^G^K1e1=Jy+SXW zjYUuY$Fsi0sAv6RWmMjc0vO`_GxVfo6 z_`iF41Db;Y0D+~a4#3OjJHj?+gk_ZN+7`g@m`Kyc2Ed-Zng0UdA9cvFc2-`ynE!b% z!zQ>3qIr8RNAYsyXHKuUvC#(2V&jImnB-VTGc}W8356#q%!+sLxnr|_tApD^0Tku} z$?*p>U;T12)EHUuqh8AtAEjb`k4UE}UzVfnU%%WZeGbJXze_}avdDc*O^7{wOY@o^Wnp0)0ar}40DE+4i_>}nh` zDo3KRZM-y{-wGEm{_V3lf?BQ21oGk`BEv?wMAcHiJD^pf9M1)r zr*m{L!Gn5P_H9fq-`34(LxAtXe+?4wdBOi7N~L`@xKpzzbw)AdVXPJ~E*Fi+aaB^i zzMy`3YL;~2Z{a%uc&AXNq{^&9yf3%>jswBBiXpSzYPFGmcq1y@qRmDvjD< z?sl(NFC0EzaC$P$9?T)!al0sdLT+dwhsV)0pH*dG7KHi$($nn6wN%v`h-U`*S@nA> z{^F+xynyk>00O0<9!9eBDaaGWC(ZL8`h4hzyAVvD0-i)Pn#>yy!$!;;sg`rxX)24e_JQ%O4a1;sT;o8rO8v-Y;A*5 z71k5TJGj%|h7C~eU$!xt{NX|dI+Dbo--i(spP2HwsOa7JAz4Kz`2kxxy^ma3COubn z=Dm+1$Ap7I4DwsnZCyKBwkQj@G@61K1#VU^Zhq$xHDOSO*hkeu7YtKld{jh;HPYvj z4D<@+f(ph4n=m47R?Vgn4b1JYW>S2_nHEXW`Nzu^AdN{7EwKBDF+Zn{l{IorJ`m65 zPDHREX(G3KXYcBj9{4f~EvzP0ZFEH43X{Zpik2z5Ymb{|G>pp|V+;i#I3G-rD_6HH z9aWn6>p3N-k=nHv;-uoL!lZ}hleI{qx%-V)f(6H>$AA|jr%5hP09_IqHd5yY zbU-s1H4ON3qTdlqySTM7Q-|TI3NrjKyllMvcsgFdLWAb-toGf89C7PVF%6HpTUlKE z(^hE0jBBhu3ZA8YiSx~BL*R}Y5xm109aF9khtiXmT9bnrbF)1v`7XXo zxu(p@T5gQK%M^96B$dw*CAnrk&_8UoDD~#2`OBvGT719IA1N}GILh`u@Ty1=uszupd^3D@pE#Dcg$&m&{FIR-@yV*O) z{IXrA3fntBDjo4Q)Y5XLJSPGLf=wCl{8?nd$hwU9J}43LCoJ~R9E%g-uwh49;m?I! z@6X|Z6MLHa%e$p~Oiy%LSuF7^PT7+bGZ2Kkqtd;cZEM(Kd2o&8TuGOph zwTDAJ>`o>M-r|gwNpf2vynr7*B>9;f<>s_a*6!xHhmSA?X%m)|^t3$;l55HuQ*CM# zN5-jb+o-S|kDFUsz!Swhv(;^Av?d`Hosqi!nOXPv`45qh;+|oKj299$mcU_dct|a-nnw=ws(uvTh|-EzBn$<794xhdmfVWm6_zq>IgcR1x^Q&4Yw<3UM9~X7gE1Q-4GJb_UH|ZQWiSA;sm_j ztC6Rxjb-FgU&h+ia}awaXPpu(qtqcC@4+eSVzjRa7^p0uv+Y1yVHk^$<^%+2RpLN# z1+8>`T>Z`F>SP|mxFeuCdmumWVHbtc3C6CKRj}>a`24$fHUU&_+W1@3D!{PY zd5T}4NFdDMUE&g1Mn;ud+4XZMW0z)fN9ieYwq6RiHwXVG2e*s4q^4(9DAJYQe%zjv2LUpl^&&GHRVYe8w2he%tSyJM94dUyyQ?08)-!qFS5 zm2K^WvNUfV@c9nEFC#;nXHOJV(w50qTxJCGy}AI#jRY5?Tl(Y#0ad;c!vyPohcGnb zr(dfWz6%B=#NX$SC#porNiE+gmQsW>eZ;1R4R+wKWz_2tssG8|tgIMY%XYes)ZY4b zkJSEN=XmWWH&v z9X7~zhi7IGw8%T{$IEwY=t+2H`yBl3N7=vAoV)bP=KqFd5q2I9N!Sz3;=l9%Rb3l}_mB=_b7Hj66G!|J*Zxfem2)>EF>13^j}kWr-v*9Q_hIX`-X;SOsm@#tvh~T<5dfGxvXJ^b9cJ1 z5s|rlg#AT)p~Jg}Vog5CRvAJAUQ7VvtVPB^o`|)9l_yTYSat{3*m<3TEPecD8K5?=4A8Fr+HQ-> z(SVzqWZ*8NR;(;VlOnAaFG?aWQ<$u%EQ-B@WU==pCmB9eAHDaR=YgPO%K_*D&}##q z#O56&F|(e3YD;Tik!4TN8H1FFDa$68P7-Em`VkR2enM_3xA8h)?be8}b2=TN^D;=3 zpWO>9xF5oc`3p2dd=u8*<@0rP#Ro$=juj2qo-{VbGFA8%{cAx>5?I*`S;RzFjC2=| zSQat(MDn)pw0h=0by!yW$Sc%@kg|6+ zssCINo|KVmqVAy0p>CvGO&{=U>=Z+)Kg+XXpkOFf@M!fUU5>pAD%`l8on5}eULHhG z{g&y;^9Jg{OAvy5kJSVP*FQthWo9YU-%MmQajtyD%$_PMmF8O#IE#U<_9JL+a2L}1 zR^DQ;5mBloR=9K8@v_AQ2kZ+S=ur(lScsOi8-LgB2(qrUZ5gk|s_mlUlh{X)nz5y~ zXtBY4lCS9e2Rn=mpO%T3I)acVZ8cQIboh)T))ZOVI$6>3GSlYM(wZOFrKOnJx;nbd z>ZW7vjtw}D_8g;wW9zlBrHGFe*my5Ggy-ww@WK1hE)vH;#(Z2F7(7zohL4Lwo_<8) zQwZ8d6b%}av+qVoh35Pi8d-;j&nyQ!mu!+W85q zW5`uYB7YzWr6rY9Z7@%%8?OD5jbOb^EfsAmSTn-;Ids;L9`>a%i;w$$b>-PlV0tU! ze*s58xWA_M@;-4#ykav|$Wxp)C57sZQ94`d`s$ozVn~_{^|5Hz;rp=9bL~1+r5+~3 z{4txDcpl^is!=?duk*8mBNft`KITFHggKa~fH;vTRAxS}u-Nh1Het@6R_==L)8HzryEPZU~krAm- z<_4Z#4^N(}(U|tTFxtN9leG@xg`NH<5euwOUQXV!?Q{9^3hlId^$R4{OF?BW%$|>* zB;NNlEAo#$7F8G3e3=-oamUM{c;<)}n$PBjN z>C?vr7?~%8@k7fVW_ZIa!9WnMeD?P?28L+?d#GBtJ;unVbr5vDy=8$68vg7ia6L1A2`8qQNeLs ze1>#H2l9=Y%6r^2a}jSNE3H;$ucNnAjdrz?09swu?7{nH>U|UMHJ2*g#!mZT_)v~- z>BrOd!%q+GeGQ>dYi&g*j`eKaX1Z=Ow{A1PE|J}S`1kt5+#M7{*00rnsk(Zi)*3e5 zT)_<$)=j9eMqT&ObWzw2qr0xzJZ1Bl!KrvvLVu!TOOF-H6p+Uhlz zkiHn-!t03|X-5psGZ~5*HIj&RhB{4igU>2olTSrWHTf$Ax1r!fQ6R1~DL;~5_ka2E z_|+*-qH+Ak7rGmCciEGTLU+y1ja)#@*#R-#nr+|^HSCXM+Rnagx9b>?&dVudrnTaS zY3xQA;95{}Wtt(O;FLk-sr?zFmV8v$*hMh}UsBa%pxTewcVnww59~oG;U{}>kOs$` z&&R0AiBct;NHMBiQ~yf`qx#H;Tfr~%DH4w&jwBnv&|_B9^tyb~3&-8J8YL%3=Pkn$ zOohBJD35h181rnBRd$SsCwI_sLPs$?n6l5GlW!fH)3VPgt}ef7*FRj)M@|kd!w>z- z>&xU+$L6_nnsZG)x-ZyGzMajv|f`)8tlBpqS)bDbYFQdQ1@s`azvdm z@H4biwbieu`-g|c7S9xMrqw$M7+^B*R2xWiRbn@9cI-|FVlOIt9IS4o%)L~t-9CDK zc$n85euUm3@LMhIQX}IbdGplJ1yw3-Te;>kOm1A;?jU|gouuR)<}yox0H#&DDLW~| z_*f*H5>u?kfZn#jqmCgn&Gz=t`Bvd$k_~ZJI(J)kUFBo~}0H=UZp|+~GdTHRE#iN16JY`uTQRH;4G+gIP$m z6G>W4hH3y|x0`Q2{%o^5f$8fUoW^K>NG3Z-Z^S?sFQ#SI!|koRToRXRN5kqk69r4Q zpyBi9T}D$A`=KMbsAIfBkHv4|OJ04yuD)OP;`?>+{kr&Wdluhs|6Gf&13A@=$Ty)uZo5TX}p}JSl+3rmWmwK0Y`a2pIFnoKfs1^2l zU5fqUosLeB4v6lMmyKz}eLtFv%JZ!Ju(A0x&)9JW&+U&D@QmluIyqZE%BK%M9R=>Q z-XTa7;gBb$*pp9P(cQ$vXPg_x&U*4RHfW!HG|}3$ay;Vt+We}HPQ~tg&0hQWyHEc9 zcaCZHcZo>cXl!xNl>2NZ<~p(YHYpwhyU!&z(#6-~7YCL@IN#12j(CG&ya+4u_Z5NBy~ zmvBT?#>ri7jmX4G&^O3*^n!J4o-{=M%bjtMIR%p_tySiK;bx@Nz6LJ};dy-dv9}S= zR$@WR`d#JUJ|A&xIOK2o8jPNMIy~{TN_f#zxe0eb>_b{+rxsm>?B2`w zB~=gdq!Bs8P_^?f+R#T=!n(q{=i?vuk7z}-P|tBVg_&rkkG-U= z$~T}`OYo3A8iM&t7$5xhO@BSDFx){SmOyu!;+Z%PYgz`xy><>S)IaQ%v69p4JReUh z$M5sWdj4#WG)IX z7u?7yt-qAfUUD=TxEK{v4~3<^e1&CxmF3G;TNYpWum=Armp)Mb<*a?>Ry~lvEDR7A(agBtd5@42-`7QDFF)Vl&>#NsV!6*H7Wp9v>Mr(@yNp zS-~ua26^WNu_ZD{xu55~_wga$uIYKqPX;a9)aoh8*YZ;&R31!$Sj!{Wk?rgOOhx#p zrUF*=z}3skKxJ0NwLcg3E=3EQ`7p@C{=EL3-n+Ndx6=w))^pc5&gDwNan1cDE4s%C zOOckwLekPGBQ5S!zx7{?j~c7C zQU5$Xd|Ri=c@@tET_y%Fgf;+4VuEps*5o}?XT?oX z{S>XkkqJY+uDrLB1Wq#H3r(2=R#HQ8sKD=?(+p7X|)s%7&t?fAL z<2@U49v_5)K;S@&U|?x2f_`SS2>4Fv1<&SN%4hlKaevawhQAUCL6o!VRVoY|0#I>x z95K^-S0O^RbA@ymN^RC&xa&BM{P#k}fkfW2JF(_QtE;Ls*|*ut{M2Sro4Vvp-^2Mb z?JH=V-L}oc4m#SLZ(&D*K=kwFK$6hR!UJQLme-)2zm| zz=%L$A*7L}4lv_Qj}@td(j%a!q#$5{^hTqyGhQ$zvo`ak40~kHejx7zHLPAGzZM6F zh=#L+N>h@6nS&&)PDP*0?csS~$i$Ld41O-5rrGy;4p>_Cl2h3i9CCPmdH@3yEyAJQ zc-otvAU$t_8s2ZuEY@GHOn;T>uQKgZ@g1o{XxQnoUUTBS<~rPgB)ZM>rr(X94EVv| zgf_kIm9V91Z8!uh*fV5U%`e@E$gA|!V|>ikpU0!gsF^oCtzq&Ke92s6Rni+m=Z``g z`P7C#h&x6u#+A2}i!nhE#?`4|tOYgT8tyk3!=CH6lNS-4$ltp59dhY+Xk<`|hy0f#^%&o?i@s`aITJ%i^210jW4p(}*UQ*PV05v?RhQCi5*b>H4q?0)FK7 zWbeGg`$U{(-6atO$4kcI!Ycb;69eha#t6{HIXmtiF%Aju47HqpbNT^3u)RaPNlKxM z@XjWp-iKLn+MkV$qU=U@Itrnyty^iBtg$Fs*=pM}wxCp5dWhVvg<`L*x;`g#0;sQE zrxh0u#;2~X&v5hZ>sC`FtokMg2~gLv>VcxR@>D~G&z1({h2v74bwcrA+R=BNT>v|9 zCULKBPnDI_mMfu=R8f2fSick{!lBmMXexBMSl*@i$Y3-@T(D>Ihzo3jElrSOE%ago^|cjwrZ+X`3LP6`it=El z+biG|f|2BUi~xSC6fmsSQ=pg?;!9^v>JxgNhO3wRf)+1-oap`ub2 zyI=N#LH#H6B`} z<#$Qa`&D-HWEZ|y9>*?xZy`J0EQ0)aQ)XS`1yfMgCD^X-^$Amj-r+Z~xKW%xd z!09NbCSK+PVDF(!HGY&|*meHNRCNk?uxh89Ol|$tgL~Y~6sISxmE5w{$!Vrm`ke<= z##EmN0B?&xXo<-Og7==5WOw5h5c_35A@GmLwgYcGZJ_3Ps;1s}=r%4?nTqCdZ6&{& zW7jmtY>tqjP(Jb3!&0!EV!Az_U0pF&6i<3N*CIw%P*@$tfL@IwDNy=)o?q*;E^WKF z^t>*%w{z>s;|JTOr|#wXqykGSLohovCU%x}hCmS4JM+4~qyB$1kxYu2A2X{8p7 z7|rM%i=8Z~iDAf-wQ@Gu8umWSCR$c8&Un!|e$hFkXqEhz_u0Ch3Telp9l6y_81XZ? zvKmd+r;Fziy|Sg#e~A?0dK-@2_uOs(#OYiB5clF8ui*V0q{as2a@#@*(-odMb)BTrfRb{2#UI5jq zCHtPjSPG}W!&2vr_|;Wcx4e@vKl`Y^+i|Z4{we2NK#C*=0i8H|>yAhKi_w@LIXM<3 zZdm`K-xWJVO+~$)H{&D=lNDF|$%?`p0z&w*J12BlR|g#EoI1G|Inxvq<)2spOkai- zfd1(uP8a1abvpH~dt=Cxs2GOPF znvXGSPR2B`RM0iSjwmE_hQzXPL^TeM$S0!^;_XfG=yz_hCCSl*hoJ5#i+ie#`ApN1 z$3hf!UrHsnyLEZ%xmy$+?WuzTc9wgnj&{@pMm)Qo^v*f7_N$Myi2M+~i~6c^ zNlc%No@{JTIIz*1-tfPfil{e!-&-H{CIQzzhxNyOO9B!4Xz8Q1k-n{~ zQ%=4(3I_yEs;h|p40>ES-bTM=L4B{+Nsbc1Kq;*X7Eet+0SygU)&rQ0laE(qr@GL` zCRhNu-y>ej-StZX#w4V+#GO?;nlK8k?kxT*>$gRg7zVws5zYKEE-WhZE(z z+TL>Gk`P7%q^gwp>Z&EVdmsuRnN<1b?~1sfA&21PabHbe_)t032k3z80y|TH7<5BL z>N)2LR)F#m&cnFln+`(_i>B)2tyU%uICkuart?h2PZB6UPISZ z8U(96L`m(RtT_^rr4v_00-jrl~e;P&Nv=i=zZ^5;iVNeXIV`zu@iZ56^zu?>r~)&8aTu z<$(VhL)zaF-L5MW!9q!G}# zKqVeI>VbO9=C?cMrzj56!)2Q&VB*ut7y85Pm~o83C*q6Y0+qf~J_x?$bE5oYYAHKQ zm{cuzISsbnmuVL?DL#O%u$~uKKo)MlrPGyVfmfMptEFgO`0$xKv4pZSJUje>oc;G- zsa01;_3Mscn%&X@{yIgSZ85THlUgXY*uK6PUKG|f8|r*GVxS}0R;5pJb+q%`4Ar`m zd@dtyZ1l~{NiP?#Dp|~C+;d39LGOKUAVAbOyh)!M(yglwojV7cTWjZ7-2j;)ZY~@rb&vRDKU% ziE0m$ExUT)+jBq2?O}g{{=BK$Ba}P=c_i7%JL4@E1n7f&G*i0w;OKP!)zPy<^oNhu zwH^6-CeGLG3X7+qP+I)@1<%Gpiywr4m+yHq9h`4g$MdqF*x2W;SM}+2XmV@Qzm)Km zVO`tFqJq2#9sohBxbLvn_7fbh?DV5Q>4$@U)Z-?Cdb4}6rKK7_Hu2I+?0-@qWhuCq z+vKXeBe2_OT|_a>yKi$gS>h@GfWw1q=lcY7!>FgW)f0eiwA2|j_gyPnYAao;=_}Pt zm--H+yq8*+xSw5o`#S$_wOH-+NmqBwS(R?W{v>xh*D9`DG~gu3VTY{6lntqc5 z66}}`HI+@?(w3*!f|AX(@M~HvuVIlvcwV*24FC0ni?E%Rmf*H6b+qc!1en~bafF(m zPivv3=<^%x%il`K-_E03uniBIJKTW>s^P+R#iu%NiQzl*V&pyi_=}9s^i}O zUH3`Mt12AoP5Axu>&wfJ_Z2UuX;6r}2m_>wIn2Om!_BWp@^;W8;OD*67-BD6Ss;w*2rfim5zvanqTEes;S3ZD;$s-M( z6J1WiGs5tO`9u%s7uje6l;kO@^RD+XN>K1|JU^(}Ku~Ayd?7x@IRb!AE3R9dYy=OGK8_Fl1-_CoL{C?5|{MP?H z0N7G&Uu_e*l{^t`H?%p!vRKaKl?n^D@76AWxy3hQw=5BT^M5`55|l^!qn2?0J*ujL zL3}=%P`^A~&1vTTJQIFt+B6JZovWsqwo$FBXXoc~sY?X!`@Ls}>WMlzeMWS`(HmxZ zZ|IU=Pel4-7dqwi?eb0xTzhx1;he|P#zvm?++&~38!dAfb^WOEJ|9@w8F3DC#nhf> zjmGvzWGIoOzs$YnNSY`QpGin-WUQ6yTQ739c6lA~ElDbI)t7KjbO@Ms9ONqNxO&O2 zbh=P}$*6Tz=6l3Ut{f^Gw+HI=@>A! zOpA}Xr5#JnKHTORZ!R%2odv*mdDaW^)H!X}kx&%7l6zfk0IWPG0l%mQM9?fMDpxi- zD$$bS9+S2+n}W|a2AHhx`8mf%2(-C8q3Ov?6FnP+v$qd*F_o6r|1FNF=?u9GemE_f zy-D`9*Rr(k)bo5_%T@355CJE_%Uy)5l~aW;?%yk(x)@TK1N#$JKtG3Lc3pkRxQ7M zc52OoJjh0920!in^UQ;%t-v1#Lg|TTt?fdY$tv$M*C;L}7zF0bV}b+a-jK!R&!Bll z;>(rAOS*T-*&FSSu0GcK3Y?sIVdU8!OXJ+jV+_VS!Yi^pkS70^Swhs4*o{P9<+Px* z67$r-I!7nFq-*x7c6oKm4Sl^JRC$6txPRd?A2P5j|G6x_n9erw*ALiTSJ*|DqCx-x$AQy=LCR# z=IZ?Q>B+p+jWGG~%Pi!+bwcz{otmb5$p{>;dyJc`>XeB-zMec6^|O}ze#WPg7WLYW zEbE}E(oz>!Y2`sB05dGUXEy(Fsb0H%mg~0GEVv-7@+m)4mc{~+;P->kX0reb%Fm7E zZ9m3RpQS#=%}jhpwK*6MY~>g~Ga3v=VSQQ7FMvjPFRZr!WCoaO&q%pVPBQAaldSO= zlnWkq1qX^YZ+eNt}39ZxCLDx>BO2=`6~ulu+XZ_%O=Rq zU3UyVyT8`5QX0&+Yf>o#Z^^lSJ_Vyt!ccbh6&wi4PwjK5DdpLPI&&&i?ef#|oGQ=k zV?K=s5eS~A-H(EmSvGolkCy}X9)orAbZH-Z?Y#(9j01$xBb6vsmTs26S;iUik~Jy- z_6%)4tsGoOZ`;JUzmYNU#o_CdALdk<5Yi8d zohV-%935~kq+a5lgyXqc=(H(-?MWG74tC;GheBJ%W%MSSP6?z4)qBrQpLO7|Q@p;H z79XVY>rHyyNfJT3mN*!G>NrzMKhoQY3N5W?{Yez$rSr9Edzuk-x0CGhyeKvf57pDB zismG>A$|kuGW^iLyuQ>oTt^q0j#bqF1%G~J#bM1%%8S<$k*Cxwrqwu@(B5ULIaq|; zHE4EoqjxFF%@{fTz8C0nFMwJIy-~-%@7v*zt!US-r!G7@K6S_qwPSgAh^KTV-wEog zLq@u1H1mS;)8%K6QyMtGz2)-$4w;YKjcbiNXT6^ki}9tVO$-iGt5M)#Ra14*0L25$ z@BGxGs$WM(!3F%8bv{*hfHx2V#c@nRzDJ%ItuP3=&VH&Q0WR1f(D66r9+Wk{A0e{B znhrn6dAE=T(n3^Wmp%@T6x9;%yOm4Uo)NDw7aG3^hq{1{WN3;6%)`F87REfUss1G8 zU|0|Xf&foAlYtHreGX{%G&J^M>_-kLeH5Q+q$Zil8Yjk~bb~lOs@y;!t^;JMGFKG8 z!wM1fRChPmfFI-3Oqqw=*nQl~FYj}>oWThNBM3A&N0h@TrFx^K4ny*E4TJmQqAzG6JmPtie8Y&`4M_G#9x7}rk zoz{VC_tmb9L}o}h7-(2fS!gZO!T719NyhVLH1g!)aiZOnO+M#npI?2k=TdKMujB%U z9mhv?`dQmD_kU*azuAT zZuOehXpv%9Yn7}na;|z#1nlUZp7MoPY9xkT`VP#~`c(Dtduf3|WGjzI8?E2#{LTs0 z9xYOrg4c7=B!?AahI|JA-%bbuqU7yPoQzNu8Qo7nord9-D~x#U1iaRp7LGB$+HB4l zoZ4+e)<3_R^ho>R-|G*#)s~7-Kq&gNz?ayi%?Zb3KqXh0#U`JK^^VG6KM+&_U^S;8 zT4xDKLTRj5;L=+p$%cMW51aM+mV(%OZaN-|#<#syXtwZ*uX`zQNzwcOv@l&KGkj_$ z&-^@{-YlICdi?U_zJc{l27WG=U7gB_6v)j`2DW8|+?h}|6iG(ZJW{HG2XmD9ElEPeyaeVXd z{NZ3TYmN2hdSi2=8z+w2xFn5^w6P8Px87X>jyip|x3=W(x7&~8Z@n4+uJdZK`RzB2 ztQ>9QL&4Qf4%;v=|{R*t*!A* z?9ouI({G)0`Z{8bnni@ilFlKa8taXkdeJ)@Ux&2RHMZW?6!lx3i(G}{B&hI9k|NT= zIYIdU^7;Fks;IY<$rWWEyt%nqzoFNc;hP@E&)MK>-+P0Bk-YV{lgoih1!`36xg00e zs_X`;@!fZi*BB?AF%Fo}pGJd0$SSl35G;c0<>)*~aU99D1ZoB?YSH!8)o48N5k-Rh zT};%=kfJk%kve(b8%EJ+2x8)#R9j6Z#KOr5mtm&oZIIz#8~|wYVUp$snd;y4B7Sh( zovbltwdSH-Bh$?#xjm>6S<-e@H2KK$q|UL#{W2MGPQ+q3tmF00H5*Q1HgHgaq3RN; z6Bd$T?doW{M2kP{~{;K_(1?WnWfgcbsE z;&|UDT%!xFi{?b@C0oJb9h|i{&vBXa-av{FvfgDB;|*ne7UKhLj5oZVj4r8XNP`%B zRG~C{GSYDQKt|GJM)aV@9H%z-Bf$(XTtX`Gv5he7yflyXP?5nChkm6}=?G$%+~t)s zYFbm#^ui?T@MW<<{C~n>JeJmU&g)SeLQII&BbO$kx{~}?5gnCsmTuuDqoJ0^c}LYC z{75OYBqJEvT87=hHE+wK$$5XY{&vTHM1*9Yu?X7F_;Ag7a{rUmyPtm2zv2hRxN~y4 zx69WR)41q4L%~yE!&93sZIjVJkB;MQVdn>t4d_X%It@oH9ZQiw0hYW0C}xSih$^}! z7p5Qmp*h8iCM-gx^hQ;9+aGALUE7mVtW$ra07+E!?E1|c8l>HjW4sZZa}7a7A1}{F z1J1<YMaI99 znx>+*nW1W8L<`g(#AW`=;Uej8>$9m$-I9>V&D`BTI(_x*aPQ#N!Rh`>W?!=xpoA07 zjY~9ofzFwy4j#Vm#p&~DsL8_ddf5M8xT)gfSCmV9-<^Idg;r>tihx}BLsNsp)X{*N=oOW@3!z11M-iBpx>pzIorP%)3 zH5$!tblLm9(vxfhnvPMu>RVaWYpqD(x=$NtOAf{L^Wcd8JSTzttEz0(zuR7`Y*n{{ z07X->`tsTL2fK1sfedYsZ7um$Q7%a9h+UAn&4#BTZr2~#1!Xbxl-{my=NBe=t@2#> zTU{8fqCM1trGvC*e4lyj=~ucQ^N`qyu(2DSGpMr!^ci3S@|hnrt98^9Se_F@oN|wh zS{hzM^&|b7zoCSkj3&0Z>BGC;dCVLJApBD|<38;ZhH@%HFqBn}0oj&MxDCXfMNEvH zAIFzH7P;RGKics1k%?m+Ten9?M-=NJ2mpiS1<-N>n7f{o&Q_LET~#(XEze7h&rRZE z<7JeLt_-Rdq?^cam0u>V+<>_^k*x&a8~oZ|Ae>12IrbLdF>mAH#2Ao0h@iYkcZXri zz+yFoPiH@HA=z6KE(K@IRPU`dpv(t2mc&@FDAkD@(dce>lET{3_~QpO4nYw4RJ;5~B?$u|}jEH>EzsL4K<$715?;V-s%b0W8s(lk@Y>N=H(r zmPq40vp8=dlLJF4OK7-EHjPFc?_H&Ga-{mIKhiKqV>6byUomc-6-cEIk_bYwDv54y z-m)Ysk-wq9=dMo=1e%Rw7b0_lKuBA9Ah4TIHU%8d?)E@6h`m%nLHj1GXp+n zyhD1gJYQS79cl%=w_;G9%^XIea3LgGq07x;q zn8Dl?2utX1dod(tjB4jG$xWNUi1Adq*MKnXwA&?7(?LVFVMM?n5vl?4AKJBQ%M-0X zqswwRR|K@)F*B99moMVpBiZ9pGy!iBv2_!3C=CaEg+W!dtl z-IE8Nqj8#?oCxcvWVhQ5s9%m>-r2+sln+2T_zKC^(uZjWWI&d|8=jUdz9En-##C?U zM)8#G3PX^g&roy2^<_I{GD4T2$-cP+zTLp>oy&?j?4U$_m(%6B?Mwp>V5^)X7m#E0 zT_J1KQywT5spt;)%zJ9L+za@AAcP0~WqOd_K8T4E-QK%uAgO>I1T8`1hC!=VG>+AN z(5_YzSw*a}>Fd;L8;vNjUajR8Pq13x(38x4rz-cJEiWd=0b8G!_}M5{wMYqUFYm+6 zIv8GEPa+k{{)1KC!;|MorXxP9eL5;jYzM3K907&x1L^pVmsIA zXfHN+=^1Bo$@V6iVJ4Tl4|Ua#y^uXCwFJ}awH+$UPq8oLUpwu_caNb|Nxe0B2B}UJ zc8hXBNW6Zj(W**Cf2$Y@F3-b{fm)S-BURsycAw{)&cNO+VkyFWb(7kT)w*e!3}V))goJ~v`2#@VsC$Otl( z?B_2_UCRsEWSEwV0>xACgKn)6wCs2sjm)ye%`{*cS^j)$r^y5aTwM@#y^y2;((a%5 zfhNBwhuO!3aSM7FUs1?c!^EWuirAYZ1dt;4;D|LVpR}B?Hnuzgl>tY6_ls9Vfpm!& zsq`=Qy!b&uLgOT9uG_p8-JIc5Aiu^2^Z_$(zm*LzBO(g9S{xTg<1yHRr%xXjVB}sP zj2|$+XWrCvJk$Ms#(3{gPJnZ9gkQzvPBAvN?;K@w>+T1`_SW+Eqh>@DVqQL485elM zoU%s+#>Ao>DC5Ckk|E*gxJA*hlmHP%!yO@OY~Lle=GI+e+icz?wypY|V!Kl*dE}Q8 z%vzYUFkh`?rYo2R$=!lA@!jK>FZYjdZfZYfSGuiwJ%ArH0X!5ddK~Hk=j1&;egDWO z$YFARTnQ&8!dFfGucU93NPt44dyhSU5^7qX=Hf|@uMTLGd;RgUrdFsIrO++~rA(x* zg{76AUga_~U+}Y^J|}wyYx(xmm*EF~(T?xlvMZ7atC@H>f!XjK1OQ65`htC*+afi% zd|td&tLNP}=TMHY&ZJ}StSGdMt^nJb!9v;mUtxBNH%j8Al0uP92a|G_m(h;I7)_?f?xJ zwFxut9AyU3+BP^T2~tvQTm#@(g+fD^vo06aQ&mB212Uk31n^%)*n@J{3 z&4N$}2nFf{J1S!%PS`;3@I4C`XIqFOzy;SfTl8>kE!e5I(wF5cl`6|0ooEGZ8qbe( zykYZnwGltxI;shm%Q>oiEEiE+67-95>{+*UDOCb#zdU=Bki;;Bu!Fb z7(S)B=CbXUh}6A$sP1{Y)2v*$Yva=El1qO_W7@!gJ`I zF{oF`fkCCb~wJsqYo=rQud#yAfOoct&rWzlUR6q_9T#_Wu z4HDlAA(cOQa~7BA_acdwUhv6?M`8I&!~r-scDzN78qx0&w=_^-un8gbGCc1+=eF37 zk9s`{9)ibCI7l8wZ^KA@nBrk)47@!4W!a6d-SQ-Hqc_2!lJa_1Tv2I(RPBO&cnGfY}qk*TC%@2EPq5f0f6V-jE$KU=lkM%@_*o{e0wG_Wj_4>on-NPNR@RCsko zv!)Kc)4RNyd}Icih&7heNQyAhE!|kYDZdbzrns3lBhW}|1|yrt@kMr`b@vi^tyMYA zt)*F5^92HjuHur|DYH?PKR=_y7P{oWzju< zwnu+>N_Qv5TjxnuZvTrh$GbJODi|7c?8Roi2Nt&i7&8P}7&Vmq@RY#jW^k ztf%RH`%||$tJz*QE*7@m9pmu{I5N-b!r12T9v+|U&#(;JVd3)|l;*<@3?~2=_XPBb zO6n-ts=b=NZfUJ1=ML8+BQ&f+q{02CwQmMe8bHS10sE8?Dd60vQzjb0*fuoJ(kVh0% zJw(`zhXC`+ef;D85y`v*E-wp?>Fm6B73q6%WO?=@!Q7+7{?ATdpLBLK`iSjYM$Be`Sz70g~H5V@6t#PKcYs*0#zGCdCg?v4CUGUQj?GfH0Gj z+fl#||Hj0l(e8RoobY2T0Wh#eL|)`W>`io`ZhzgIClRI6GqLlsSkKZGoFHlsOrz2| z9J9hOgQ{jd7XmA$p8b;RqPN>l964zC<@xDKhF$|<9~#~8X)duLi6setW{xt<IFpxl!>xWp&BiQXcqgz$L zLe0J`&!!;@oc^C1jqtNoLIOJ5Tgz1lbHre}5ZsaoOe=eJUB$8WU(3~6*WOjK&`B3+k!nC6$OalS@|<*G`-Ft|7IF~kh8#w zyQQhAG()(j1iVDmjQ7{#vmw#QI|AMgqndpyg!8I%!vwg|{&~^CjeeEFV{j)?AW5a6 zCl&LYR)JRy#?o?-HtXe(e)e!=aSAjmIW+;3a@%;~WCeGDN#_-)X>r=v;M_E7Lm_s* zNHsk%vHJ1shNe$-*3$`JSbrZ7sIkuVXL5GPv)gJ#oe7sz596-dY_j9+JK9$aSsw0w zaMVA%(4T}Xn`NMH`Gcfh4(I1Df-h9|?m1J4_4eiuYiYr_cDOCw;H)gGZPl!|Zk<4& zw5A>lnVdpctr3T4&~C*dosK%;hXs#LJni3>6gVe^eiGfKcm`5chF0b3AGs*l;O%)c ztsVY`SP}x-d8&qTW3CQyHWykL;UT4TxZzmwI@mKF>UhIxSM<$Mj@OepOu{mt%ha7B zye_zf(uS1F9$Uez)EqhV$|VXYYRr4%JEkgn!DlNO+l;QS&S_PNSE2BN*PQdwQ0K4Y ziiX#kd2YHI*axS}D35{}Cm~mK5bwrx0}rod!Zn>JaF+=<+qt#J%O!j_5Bg{KY>0y= zaL&p7^%eCq3xPJ3N|Id}07z$a?&LFa1~029>4(~-Lz3s}3`~+V_=<1-=&M>(ZNM1$ zI1lNT`xAOGn{YVc`kYSpl9;+eYuvEcB_?xTZ-E(_)XLQjClfz5 zh)2B}-m@JHX|QgI9fV#WDZgjOCQliJ^gs85_ME|?O3`QP&Ti_Sa3K^B1P2FR&WHpY zN~{FTX|3PO_d)M{Zy;Yemsok|QiC#bo{w&x_a{*;hI@Gka3sPsOTPIyC&gD`6y1>N zx`upXl+S#Z@(JrxY40J;6<+7P8C8CK_UhS7ohbuWa9G}BvsOs}ZX!pxH^zc=udUrf%+Fst zlq~j;4%zmy&!s*+)>yqnv-({gO))$$z;issEWz2KtjhTZacz~2m5ilmcQA^2$)pwY zS@)gy&;uVVInE)C5jFR?TR*?Qc0WbEmO!ht$Ne2U9j8dv1f?JACBCe=3RKB7?24Uj z32^8FqXC6#nBws7@WQiexWT0T_55MsA84SH%TFEF1?_XSl(|N=lSu}HxFVBoyZu#!31|^p<5gqQ~(U>zz&z>D2Ka zWTQx4epaUtr^0OWBIZ<0Cu5yS^#&Lx$teSJ^CPcjhQ+F973UYuTH&HX22{dEF+X`j zBaisHcels-+S~Abj~$QvhE zS&1^L?ctJPi$Ci|C6|0-Rd926vneKfF;f^)-Ix>C>XyM~YZ$y0niJwS49|;zdF-`>uj6nLs&6{_QPUH;W+*U3K+SiCR0$Y5o0sKg1>$3*2 zow2X#p~ullR{Mc!Q*i@^etQr(LwjC~7TJPd0|BT?+65tSFb5tgF-a_kwhUeQY%m#*J*L9;v#nqo z;w`rG8kQ)jeh*v7Ab|C0W@H|4+=GrOV=5Ro8>7RuPhv~wUX?H6F2^F^Ezjwvxj6qV zEIqmk|L{it)ia0g{NwmHM#oEVz}hs?P99BbQj^8*mNSuYV>Yl>K*1M}nBQO_Rk@z=uJ3t_y^7gMo?g zP9FZF0oBOOVpZ;l^VZHczn*V?J>PU3sXZs`B6*OuvXbRW(cA*$%ER1p0-4bApk<+) z92Dpo#Q@O3*{;p@6;7e+!3;CT=GPemlJIrL_@c)6*D?On{;QLN8(~*An1AXyv{&mdEK4#WlKKrHf^Yeq# zlbRxPSm)*bOWObcw121#a?f5Lo>Cx#S7avp{%&@4( zGv{i}lk4R0TmN@<{_C9a5{t$trb)xX;{&GZJTnHW; zoma1q&<}|3EXUdUHN2T}0q@j>R`&vy-y;vaM!(4>=-h+Cj=J5+uYC-Qn zj7!V4m6C#z^uTQ$8`nc5n)mcxQTr8_F=FxL^u=`HI{Zu!aI9kkCWIQ2!| zsPzn5YjpY@4GTu5J2nf3Ch9FZKnsWItp2F@%;%Zvj#F-&@7Aq5RKboJy*wS}7K}Eu zA}ir&2nL$=k#yW6i6#nb`r`2Q$qyK0a||?>3U`QMd|`yZ9WuZD(A>MDtB(?jz6KrM zC%70VPkq9ZBZfesdF#RhW)MCLAmF!{js1scWvZ{90!B+Ydk)-zz@p>IdEj20@L!+6ADl1eK3P8@<);Y~){H&aq-jm5yB+QJ%_?>e-zD zOa_R&)qwiL_u-&_E_c3E`r4TkfWV^xam0X+g6>W;%B~r{80fQf{n%wJvz%x_EOx+os$VXKR1Vrw9AbUP^uw=QdFK zEw2{0xv39Y-fcV@;oZsmjPD|+`HjRXF7aAfTa$o!9LsN@(y;?7QyT0~mgX)Wh4RY~ zW|dwrZGpA?5BsF$@~V@*uE#0*GxKClpsO~v+%D-FBx;oi2lP2_dcu@9-;8IqGVjh? zx~*qutar69soOa005_aZS?*ZZm#pSyd({}e?cfFS6ht^`w`xy4`bb;Prq|rH>v?bU zIbc@X-g{(ju)B>76RUOidOYTsW(SkrCAVFoRdS`MW~}%bOm^@IzC{dfc#D(|WPw1s zRTGGa?}MnbkJXI@qEXm^@+}mIT)zm0?F^{f=xuA(vrHNIO&$&_UQn`;bb!IpIuLSkrEdJYyy23=y}F_cCveLu%wVS8d^H$ zOyzobYyGm7+b@i8xjnPxnk+oX%slceFN~UW3funN*zPkji@VUwZ;xALv3hXcBF1r# zR{#F{p2^BR8My(oB}2EKZ~5_DQGQ(V1V-|BN7e0lR9~V<()B=P)S_GgNVOFZfT=O- zoXrcH6*yki-J)zX39FG-2`Wj9UoNqL`WZtdk*=CU8+EI47DUSI1!|lcI z;&!7er9tWd@u+nycInKAaYy&@_FIsa|MIyzFGZ8{P_hC`<&l!ATlAdEQ0K9QCGZh@}F@5QYI7%og zpvMKR)WQJ(eaJ*RK=;p?0Gpwwb6@9Aen}>5FISDG!jk4T2_-yqVtm-Wkco#SvGxrR)h+-)EDInTUn&++q4v`z$hD|`3qD$Z`b8N%mt5pcYL zOPu`cbN_m+o}Y44ZkdtY^!Os1kD8ZJ`kR-86N_d%$&I?_U@H@qmqJ6KmLy)!t6MSz z>rzr>%Dhjf3KTXy8+Tk%f>N(44oMubNP7lC-1DrG@=C&`p>0SQV|fK#n2KobVxTOX zwGJd__WV-_f8|;Sm`qn1mPjvmd+o8IRgBAq!A#QLNcQW|_0`pAJmH(uHjZJ2hsC3FMQLzCNh;af z*49!-n={n%d(Z6jfq=P`i4c;$dPTp9y^u#<#kh+Nx1|X@4Ld3k zsF_12T5NF!U(7PiI&Nm+a@MVX@{+YtWoOTjC}dS&@qz7Mpzd_?Ykt|2U-K3wKMaXK zU@mtyS7IZ2K_6_;7H*E%oND?+gA;6uiI6DPmZ7mo^9nZaOGE99i zu6YSg-WDG}-~9puqMX%b>(9Tsun;jMzmLoU>yJO}3!G(_g`~0oCxY4*q^oFK_q_y~ z*o~t|(aWOWaTP8#`m5Th&P+nIUB1WS*&=r@vgA%i*ND6qcB&m!t1H}Rm+(x=DZs7&rI7& zoJT;C&a=Hew(A}o?f-Ica(Zy|JyDwA2CMUOuR7y`NsS-sXLhO=aCH9D!-C_@L4WwJ zcRuJx6P&`Pgo1E0nf9UV`bB?C<)tih$hrYQHST4a4Q$?YDqKydAN0-%z1)$D5#XY8 zF0@(4s^F0rD$0ve2CM(=%FI`Acs|F+8A_{Du-SmPJ9J^bSb#1|A70>pN%Ddot~{t@ zdNR;bayyGS&SPEm5ZWQS6!S!EvOM11V`$|CUVxOhde)rHVlD@8W>x-Jqh>XsgkyxA zc5A70S=>E5J}De(0RlRezYc)$Q*O#Vef75&ulDyV&OB;IT|%*7 zmgBKkXx^1x)A$@$T|y$#JEOFt6jJ} zniQdUXK}^Uv(rmiK?Sb%tHf_cdmqS zUxq=cn;}?VkPQqxmV9Xj6-7M;qpvn!5k^hns!D1>4|{76RV&i!YM^xr(|UPTNnQr4 zjg;Ic)!U|5R6yHDxIbPG#UF#Q!IKTJ*=LH&NAGAN>`&I!xf~?PJ#N`3^{8cVRHf~jP}=03b0oC~zGo*Ij&o!8XKCO^TgLAm0>2@)RLLjXPalg{}Fo3|tm|JN)ryMAX zm@($JjKg%M?ePmP2$Ga^#nWR76_JvM$v8_x_}lVKS9C@bvj&};eve5Da}DTWO3ZlD zwRqC`=3o8uY0y7gYpgfd8=D)n9pOt18<+iIpJvvL{)l3+Z#LK8E{LN}pY5$J`TOnm zBl%lz@^ASx9yK?=X*4!Bx0{=rn~&<>)EiX#+iz6;E*NmlHWa14q0>6@@$r|VViybI)Oe`>q)#9l>y4Uv(K{PohonO` zw%*oMv)-u3g|1Qt>X#&DyoUyMp8Vv^FkX~v4!6LX` zj!0+ecf}1q63&PoX*?HvL^bR6?_#1}hO~DGBX#n=H;kgu5X2BquLqN@CKF=ed_h>` z4ui~!W9k&czYafHpM03CtgsK}U$h&wdKxEEh}PfktRxZfI-Twn-CgB>MxVOBdtd#L z>}WZfo#H)CM}#6#9M$oQN`)tj%D+CM%!<$d=R~y?3&-{F)A~qV^Zu3o_DA7WpZ-eO4U(r% z>*0#%W2h0AjQ>~pHCEQU>!T+t|3MV&683J2l>e-*cUM-(3HOOXZ-B0>=m$>}l{aJt z8cMn~BlVyEZ53J3AfzUfTTl~4RwlH4e)1n#QvTz=$CqmDLh;-6D*fzr-;QYg91QIL zccg^O*#EI^2Ae!{UNHEzLHsyIarxd9(xqAVM(K3X?&XzRHcRD->=KCW8)yCDM*ONu zT~q!4m7xrvrN%d3KmRuRKM&LHH@7?gH|v}9tg*G(`1V`Uj+)y%|2MarU+4cj)Bm}f z=hyzfs`YoG)?aWymp<9;DxIGXjy9V*OiCqry8DXK3GDB_eznh`Mt^?x>WGZ6Cqe3D z<}YzsrY}2ks3+bu-j9^k$A8Q_u12dJ46>ugfdz& z?Ratg zpg#;0{p!6Nd0rDJHb<2vdV6aQvZ>PCgrl-kAdv`cEAQ*+;(okWyt+``khWBxV$zk4 zb(-BvZ8r6G$~;TQu}_*y_Ho@}obM+!=omweiDQWC8lfOj_dMs*m1?Q_LEy!sGw;_D z8il@=YeJremr-ptHL4;^RH26`s&Q+Lq&DzRX8^Yu zLNQ~LL0Hmu$cE`nEgw8VEF>RyA_7e1JR(rk=?u3cU(w$gI=INpJ>i5=s{oV4GNkN3 zuQ!{y(gIiOGI9gBsXm4=E5AcK7vs^TdCUnjy!~!JtmQ~arXa%jW-CvdqIIwrPc_Vt zToUh-m-3`l1}PmEkH#KIcvlJ(>th~B{Hi=4i9zFmgm=ZDFiwhj>JHC2s&(1n%0oEb z-C@6ABsx&!u@?ZQTeqgXoQj^g?yb!)b?wh9^r5Zdgw$3&kE&mH>EQkOv)#X{i$sz; ziA`OX65_q->Jr5$XldwrcC(LNjMiAAWDoCRSxG-Vtn8 z5y2N=tm?&+ORERUzLEd(cyGT$!C&{pZ;&3J?!OA!ZBHRAwHE68Anx#4MPJX49~THrfl+2AyKUWE$#$o!;3nsr$C#~^HhO=V4!$Kgdctt zkw1}$q%9B5CbOi_*eip7?U`%g(SjpS7_&zj_!V?{!CVngjhd=3pw1-VKlF>4tg3;f zufxX&!vGEPE_7v9xuv#C2w13LSP3($YT0HP$_J$g7tob5q?KRwOHv3(g;ZkimA0lW zz);a0U2^m3)pFstv+xrQGk)H#w@URvMEAqGZ&k%W!(O<{7X6%1H)Q@*PcTOSC(k*i zL<}6sx28el5bXsJsYE%52**~sUxQzCFBSnSFWZ^q}=Py_G8v5lwlOl z@dCQ+bm@|Yz0C4S6VRndgYgWzp_rN+cP|1^%I~eEiFMz=gau6SIFR|BCbmC{Jo=?@p&o8?7OMCTy_5Zp2G#QNs(R%k*{eRf)hx|Vq-`2Oc$qR_z zH@3g6H@^D++>QUwisJC|a%VIgDCu!=zj&$L8rk3Fy!S-?629;E#_H9m`?jYZlGn=? zy*li7d&7v{o{;@Og^?&>s>04UZ^YYk{3a0pm5r)^QS==i>e1x9KVtuM>k&z0_Su;3 zuv*XVf09!7Q%}Sll^-P@5Nz@3Jg$W2<3K6gdlRciP?hI_UAVCwm#$cK|Dh`Qx!MTS z)2HfjpfYtgo2Uy=T-p4V2dhn~-`FMqAXThagn+M*)zmQHJ8XZbzY~Y68N#c96bb^> zR+%PI8>!|4xz-!BsP<=lf3F_ch?p1`lcvFgkIS~~az4UV*?Chw=Qwd?FIfQ^l zA0=oeH?%|@rm1OYV&2wyC^t&QP*6=_NFLdUTG=om`W~FNzh1E~UfMid6LV*fE>o(f96a|T>IleY0wgh^1baWO_KW;lwlAG4H?`01C@&C!r_E|p`AL_g2Q;5dJ&^dF*R(*5p>`@&^klvQ@B~c&SX3o*|amUoH^X7`u!oA6> zvhAy4lC-&19{Z|ruT1)vy}U||`m|acqdm7)(^rc_(YKRH7!?qy9=y(0y<&rEZf%~q z+yLA@Nc6)Gt4XB0VY5GZVOjTAuzza*aP{xT)p5Z{l z@T&i=+Hu+V>%+g-A0kjV1JW0^r7|Qt-itVci01@7h|=P%%m`iOH|X%sa*~3Ah(_SX z@_-o!fjuw)b$c8#hso7tV6opl6$uz!BnL17ilVU08A%aoa9lq%bLb~_b%$lSFu*u3 z46sm_0WWfyS-?^cW5M2H(0;%!SO9fF76Wv_0T@8}lcgg0b{S#X$I!{jlNorfK;b1M zO2(C6oZ|N)2VB(_Ci4ijU0HGfK#~ApswiQGln^Ao#Mt+uc- z-mEuR8F$OsdUwrei-WxkkOFHT9x`&03x_>3ZCja`m>FHG6N0MtM|sukyY{q-$FM&&BjRGtpo>y~=N~Meu9jel5Jb zW(=xI=*Cp+i_?ywgO;CP@zbl17U-nql|?X@9~N_$i`_MQ9fs&&d487gAosDvQA+em zA)Mig4rlmbF=x2g-E-zHbl{WgZkO)`gVDyu$62vfTTkx@j8xC9J&|oZk zqF6l54}$Ax4$UTO4nD1cqmkXGXb-WiZfxwVoXX|Xz&#!lHKV+Wfx!r3cZ@9?OtIRc zUxP({C1tz*2ug}iL7~^~a^+W3N)?B)0?N4_S9=?F-%YF3sAp@rmC#mbG0C9P1R}Eg z?%vd@+omd4)K!rP3zc)Vje1Hoh$};Y_^8XbsCpLEX49HO=r@bOO7SG-pTOpryzXK0 zDmyQ@lK_Uczp{6TU-rgtdOF_psypBV-EiZAWGIIVpWw>wef-B3I0r%J=)%@+7lZr% zv3H%_joZxn{d(~$a8jj>MVDQ#?@hJV*2y}>){&fEd>|4Mk)=ppfU>RR-HTx5oT8p7fam-Jh0 z^nX~JEfyxL28JTJp#ST<-oxGfV&B%~30iHb%FpU8?NLzx`^c0WM64^e;zl;YthZrN!7Im3Z2v#L_h(O_z+EeR~V>J(tlgzij|FZ6Wa#?1_;q2QQ2Kxpah41 zb|Ldi5CP6tjvCXiY7^I#1$7n4VNMnEN?WG5%Nv6-#YB{+Pq<(h((f7XxCO~W}5>OLO z^Q|I4&v#sNvaQ_2BoQ@#vdZHWBbA0%oN9;vMQyGF^KY-ZlZerzy3?qzK_U!*=sm^C z>(9CnZxz}B*%MyDo` zKd5%-+3LhpPKeEy1ziJq;ZNPGtYJ{Cs2?lt%29G-Rui*14N;)F#D|7YfN7ia&bx)N zh%NQD-B5LCzuoLdc7iU1oM@h=kO9HGr`E*^JlzwFYPX)rZkHOu-{rTXHcn~KMR$Ar056IgyzCM^ zTP+qr)z>OBiK_4jY#31iJCMOT#3)65W4s6VU|aKvkX=>JGg);^=|AED$$d%`(Uh(}$H9 zZz~bX1GP~s!y5z-o=r@Q1Csts8W$40LK;tpAC9iL5~Z?2Zy`iiBt(5UQw)CgCA{|Y z!~`jW1$3Pl2UBt7%SnQsPN$Z*QN#*}ebq-=M}|LF%qz$l^q01{HsIi8qsKbSYAj?v!WunEJMHb6n0=f)fvVqB#uGqaV82@ zfg?o98jKBosR0t~U}ScQj6n8S+ofRzQPl$7djSJskvH1x0=6BND_a&$?+_k7or*ra z`)y;RGO5Zk3vuRl2!au3`1dnBbF6Lztf@@!wqLg1k#05ns!0HcF0-t-0e-6i5PPIv z^7|19U)P_9ZE-1=D_4cY2E?k>5WEJPuSuH0O+AnLI8$cHQyrBz789vz(5tK!pFEqR z&9;0zCZ72v8-!q9lFgGBH6fzlxEL^ zfy`|&pW{wMmrvVe5Bc2tYAp|T5Egg;IRW(JOe>g;$yX%nI^{DQLD={3Yo*oK#)W^; zrOHbz;sDfxPvP^SGpdSh;dWqW!3oqBA!A?ljiNjageJy$^DkYO)B)S%zDc@n_tx%j zp%R&Ki%ice33|SypS`)YAZI1)&atr_zYhX)p2KQC~#Ur}CUq zh>4)fLG7`_dkTJ<^UbE8oL`KmXHyY9Y2NSA6dOA40 zn95bf3wGmosU4gOUSh(=N`>_`CzMR|65r+6uJym zgGARgjGSwqo!)hD@M6z?UzE03ShbA2U@p8&rUFL0&)rE}ExhgPJ$(2=(y%CS^d;bL zl>@;Al@-=2WKcjNEJ`0E!BoIu7CF(H1k$C`agir&e-)6R-ghT9yMxFfw!0;yD*{X4 z!x>jmC+wlYbjEf^EnVVuJQmZ{%+a5_&RZs3?M9P8Wkv|lA<#N-Rgze>Y?Ui&j+u(Q z$T0*OM_hv|C^F~C5abi+sfCnyxg!jO9KJWbpwT!9xei!AJ17bY4^Ldhpu-O?pI%Ia zH}Gp+c1P0of_20WF$Ty=WfF4|0HOo%KDi#5P|*_)9N zziDB4z{fnuXnfz)zxpf(U1|_f#|!@&c&nnkayI5f)Gzef$Nnzo zm1$aG!zXFmwFRN2pgqr%@tD)pyaDsQx6wr(P2M|gTD;e`Xt8;AeDr)#XFUTnHLstd zxG7INrD6se|7KGJ@3!dX@Ew!f`MZ1X(w?0#i>#T-jot5$R6qT1) zxKHZUbzsVie1JS&=(beO-4r%qBz<|KZM*85t%KPI%0??&lp5w9qq#|oOo#4D@)2P9 z#VUt2%1iq#6FS*x_YK;;iVvp42&j5vYYGbz-%&Y)4sq}8NUI0>miLoe5Z(rt*QUsV zCxg;V-9-IX?5(I;4e-f3_yQ_#R_=lqpt40l%%)4<7w}Aqg|>1Urqn47*tAHB{N;*w)0)v{a#Y#ww#|-T1gN*#q+2g%MdqnLzc`tEGQNao zMfV?^`=@AQfQJoR@bKKFRU!BaF+{0&Msn0p`dk3zyvW1Rw95vciJ%+oDYCl@X@6wc zfpJ>=lM^~|8}G%6;+WBwvN!8DF-!Ws0OdY%NFQNiew_=O zv6DKTf*0m3L{&9DW$E-PDF&91;lOrvZG;u}-9F*hYU3`^F9N14SGtxqK5wxcht%ma|qAC){`+gAL}G^CZw4nu6Lj*Pjm;7r zjP=b9_TG?WZ+p=HG<(2BL8j$`yoT5AbZ8gA3hM+&0P&`e)kk&+6`K<{)L@?~(u`oo z`(gNQG$(HeSD2Bd&RnOhbM2>xKW*-BIhi$N-v6og;C`*T@zYdh9hnawJgh#flL7m_ z6Z~dH6Q^$JP#?A(v(49&m$cdY@}Ql<+99RocUkt9v<(n-t~|=f zEuh30Nn?(4g(z$=S|5UzKX#50EqAw$G$oswNvc|}(ZkF?)i>{Nob8KG3R`y^?WuMu zk#eVSYlVqS0by`W3#QSmX`lqV*=g(0Z@{T?KW@M;cw`t%xMUi!Vw~M3WCjQE5&HrO z2OS7j>rdJcd_dM0twm88dNFb*+nIVhis6=zfZdC`@kjb!#F*&>Y3|rBD5Z^8hFzeO zUqEWXl#wDrq2q<;@bxOW&q!g9M30N;xTRx*=^Eo99LJY}<0&k0o320L><)Yr zcaUs|e|E?ybGEEFRDp3);wzaqF>R@^J(wciZgg5v&nHWXoJO#tqEpDlB~M8}m&(MJ zgmA0|uy~W5o3;jrZxC%j1+bq^aP-DlXOd(@M@GIbJ7-g*3Io{gF8A(b-PBMuJDxXp zDDc{QGW1SKyQ}=uO#QO63Y#TN=Bws;o0W9|mO`bW9wEBNnC>k~ymxP!Ca7UcOc!q( z9@x7T{s`X;U-_XAMV|W<(atDR_I3iJDd(6eMk%pG9e+slIO2%&mb4d&MG;HVj<}(H z>)s&loVTH-f9wVeGOA-vbb34IiX0t2QHDn9x#=3}8(s}EBZt@n%Cn^3R5P})|6vV3 zfWE2zcYSlCx=H%q+9qu??myUEhyJ%({a*Gz3;i#KSziB6hN?1cNe>orb-p!QFh2fIc;%BOX z7NyndtzShKVG;ns5UtL|;4;NO38KBcvrHRVc{zSfq zkM;oWy+$waLYJw`0)Fiw7iEVAZSJa?CQiJlO5|_9w{uFFq@n&FKlSVYS%_{w=)cp` zMdzs`Gc+OLCq7xK&F-$^<%;`1%_z_fXa`Ro8s-t!r>~SnbP{mN;YG$*7cm-0Y=g;j z+J5s%d+xPb>i=bth%Zx2@y}|Kvo$GZfLF4wThtqPq);GG?}d^~udArN6hJ}cek8`b zz%~z`7KcS_iagjXbcI{uXq&7=I2gi=5~~#Z+Xa8Jy-R-((0n%dx(mK{K(9$2Z13v| zeDIC3;m_UXQx1-}-~2~&Uu)O!1h`34k4e>PtJvHkIu9cefN?PzJ)0gRu%T$<&g1ia zT0;k58KjTTF?GRcW0HkzfW5{l5#Dh4e5K)Asd<43NohQ#_#w<%+n7$=x3Sg?v8b)8 z7uD$gPp^R8!a=zn4qd{=K|DXo!+^Xk7X!nmtTaLW-63zwxO{!xqoCWqnl4XCvT;49 zK6;C?wP?NOl}&u=xqwtIm-1Y9%`1Nuw>{dCmZAXZ@2izcy}Gf%#Xe`Fu(dQbI(krK zOqKrrsf9t^GHCHrdmh8(c1(*M_Dph7JoyNL^4K#oUy|;+$of4baupn(Hli9Y_0N9h z*e}QkdI}w!ZnjKyj4@NC4P+~Y5E2Y1aCNPO0Y;BL7NWEcw|Z@f{3J=4ZNWI(TBSZZ z4_o}v!-k{~whe=g#cT_3m`c`ISsHGD;L8PFVHr_MzQs+_1f862pPrp$PrzEDF$lN) zltdHYYI$&EzqW_fDZ^KvymBG3U0%At??VK4z`N3hXti=d=NR+0Z~KB^x=;y*(QIxQ zM7)^fBjU$rcC^KMTWPleaRrw$BC>Ea6_@khjtE?0K`Q8c-fgVe1$6CTcd=73l(1ntZyI$I8jakMiMTi+l&Ysp&xxfN zg0P6#k+us1(46XB4jf9PE7~M<2R#nP&yf(=tfYJm%7s_3Sz%HqJ=X0qD)!iCEZ7RO zc?mU!weH4jMu2&DLuqk}R4&EDiOYbDwAlc0aFMvny(XGI^7X%D;R3aE)-g?59%lo! zC+zquHFH2vm)hTk@9YyeXehi0HtrjCkOLEy6q~GyJXXY!0v>6{4t?sNrF9TfqF~_| zDK6W}x#$C(B?TOLQ=pMKeWBfU2FJ6=Cd81b2HHailgm^WM6Xffa0T(4H3bqJ0XJOw zQktMIt_&OS2+=%5UkhpDm|Gg2%JqDaAblA6n8{uQ+{j2;8wSbi_CO-m6)0TniAKnr zFEzR4%dbC4t2Z~U(eCwYG}>$Rw{EuA?)AFgbjfhr4??Hgeh_~^m+TFpu0%IT9|2J= zLH6=4Yf%{3*(j{&NgpgB4~ny(=je~EK|;5BxrHwGsCE2OxL0J(dN3&SRU~B!b=a3i z+q^my1R3CnGsoy+ZZF37Pd2_m2#%A(9Kf4N40yITRIV?mERR^HWjOT$FF&~iZ*BTL z-gHFj?&{r%0_MLjld*9j#EFM6t?(er#!NeE#;nX7*x`@(X*6$`Z#7U0*6!J3`nVc- zWzZK=UCPuO2!6$a)9{bMGxeTVKZY_$002A+ka#T;gfApGW+VxMkBdo~HvXZ4np37= z{4irxZT& z+&n?t3E*MY!`?6p8(c#J+gUQ?5uLl;AXu-dL*5})mR50_pmwISm~(ZHRc7)%?^vIm zoty%}-P&E*@Lvw6Un(QG#}Yakp9<@Ci;Bv6aY=c7@p(fs_2vZaO-bJy6v;Owr>`%( zzgD7$#r*umM(q!f{DnChTl)o5FPQpAXX<$i$u3AVYA5EB-k$|n&^z(PnAQ!{)u^$~ zhpl7r8*I&fFGXk7`d@HLEvD3BN_}8m^OOEKoxiMHzRh2fBhJKcuD*Uy#B_d6{@C}; z%jY;(um3fd)`c8c$bp3%_{#0bT%{mu3T$5LvU>q?duS#-9ZAorM{s$9MJgf0U7utS zg`y3B_g|e+NpDdp@%uJu>=?mXgkdttE^|4zr?_-SB3JQ6jD#~U>A20nVo=Pp&sxaW zg?wGe*M)p#3}WK?jP!(0uD%8VENz~&(|CRpSg73v5R> z?Cq%AK=nx5Ch>+(Jg3en3lVyFj-d><$pPgA&Q~S-Hj4S1FO%d7Qr{l&9x_)bKOgn6 z%l%601`#mus9*Y`e|kKebQ)L7SAj&3ZSl2~zu)DD1M>-;;AS}Bln1Rj`)lhtZh!Eq z`WoJ}Z{J!Fre8V7*5PwqnDlF}uzwsKo{*Ky=}psLe55#Uu zOp@=?+=@_Wg{RqmJdAL!JfdYnzd9?`<|12F*|S^zn`0b9PZ!dg3;z;3^JDU}nH=eA z|4v&`hX0nc&O@zxW9yA0Jh{hI=ohl`Xh}JeJV``K7paq)V0=C8#tL&uL>1J|f7OqO zJSp+CA;LIHw@@kchwCLogqy8KRnF(wroZXo(Y@&PNLHhh1tv4tjFq*So@t+r8x#M9iGPcC z1+8DPelGm~XTJYI@xNQ|&r^6Sf6Msa^ytUr{Z|SBj`-i})%At{|M&R(4FaVr#vd_^w=%UxxhPS1?+$O?g`oIFgL@9k8Ez8U}fSL~lY{Z1mY2b`N_y zTFCCosso8ae;v4FH%l#yvQ*na-`LS&2FLa~n*T^0K84W;n z)-r$B#*5X}S8Lf@PVK=U1L}lcT#`E73fArC_vossgev{ zuhAD97EnRR^Ug@Uc$I;wah#5&oC&R9pty3iI$*#G0a4zFHBVltEia{&47wgJgGgLL zBxP%5>2Ks6GhX^Z<$o6J{aeR>dGKJPIvxLI{r>lQ|7{Wfg@;)p!0^`BoRHjTFpFp~ z2%nAaGGSo?;b0yh*!e@}W#QssW>hlN&r6{;9A|l${xZR5`~Vd{N*tO+9GXQOnnfHM zndaX=4vl&IdMXwTrQ^IV+iFReBNom4QD^>l!_J%?{Lq1CsQ+^U&q$6Hc*X#);A?K+ z8OfB+GQCAjE*yCVu<&m`eA?RIJ2}N)JL(HZZ*jrr2|gnw4xbh#rg)$lfENu^Bj5!B z)!5(^c-?~Z!S9zPW(}Vu*g{{2yd19J^%?)7>bN4j7JbxXJT0moUG59YT6JDK- zngG$~P!z>3r$D4lU4r#qKPL0ejRS*QAi1!yN#KlZjHRnGFiDkI7U+AwwKNRj4ncPq zLjJ;iVHgr1oFq)>TqtNJY|pwY%waFVC(PxU9Bg?Z%HL02$jc`bEJzBq^zGD^hs|7D zNo1A~HajMge2T_J^03*Ct1WFpv!${5ezFBxD&e0z+7KTbmuPx)B*4^eLQ>&;?1n{h zu7zjDrANjpX>ezMJZwf_OkMW6EtN}M58J~WY?nh1A2VtgpJ4N+j##Q~SuK?`MStFm z--h|k!=??hwgj7fwI&FQV{_)V&?XbvMi-951-a28anyqPY-}b2XNa8QyaG-2;&~}` zji_GeA0OMCQN4gpHb4^Tj6#naffJDL2H>wNj~4Psu=&C$ERTZNd|`yV0`h2MA&(aF zXr|>DKu$Q42F}$7H0nFVNzlvD@wHT%HnIjl4f@16KeO=E=f}g8_jlT9d_wwbQU<^8 zkFO@iOiDp&7Mx`367O4)S>5I~ppTD$^ezG#TAkod9N&4+Spv&l~sYFLZj8xr< ztys3L(nJ|!vr=xPNDNZAm>*e93Od1i{>W~eDhjzypcV>T1vq_uPG4z|(!>^Pf)Rl&c`W6P+iZZ^c(|#+^vMaU2o}DeGrVZ z_*DS_uh9{k8{erbyhYjA7SoSBLw6?m>6Cf2bYf*mgpt1Rlt`^98UdOrRCrdw9c_^P zbV4q?VMk@|dlXDHEhf+u43PwfkZvIn<6BH;$tTGovQ1R?eT&v%A`j43RDK`*5|4jj z9TMzBy}l~Ez3>#FD;L%;ba|2b!Lc_(0dRRV*uE1;GWuBI0nvw{q_5QF4nIJ*#xR|? z-s?6X#=3f*!TDnE?C98%gg9 z1^fzRPsd>s%wjPvy3ibW=~`qPoh>%=u;S}ySFuACk49PaX7zKGMFr7)b03byerB)s zs*Ov0zBGS5ND6WRl5Q5Ww@E!cK`% z23)_1F>NqfN_*+Ar`nyu!^n;o6CQMZ{UJZ>F`4q2 zUM}hNXwO5~%|2!V;%YOXWJ!8l#q_1*e_-;sH$Xy3XobZ{A0=stEActmMzf;iTX`!q z_rDsY-_{SOPXTL=TgWI4CN3pJz0}4Ec*-o4FAiwNx@2f|Oo{~8}wS~1T zZut`858CO)?Q>pDX6@4RE2E8@`ZmWU(d>w+E#`nRaS?8p{g-)>g%k0UND9?m4)<8?06F%$!&~6>m_$BxJX${jb(P!4#N@=|v zuPha&_DDjk1(%6yggUu?>je`llKtRt-?o41*XtO>2bepej+C1}qK?Gm_G72`Ez=6u z#2yutH4?0ZgO|DW=2;*yiyJliwW1rQMIG&{rXPbSsTpYR!oYvzNo=t5&i>9a5ETsJ%|$6 zP^7X{K<$h!=FNOYZF?j+rf?NN#=hGbiq2ab^5-fKu&u?mb)ll));^hO#TdQL{Z4!bXo^0OkZmpq3P*o&;Gf_SQw!I zC&o!Hw-)Kh+84S!QdNE#m|0>es1M;dDNPCFH}A%3{`sKhohJ4f>?oU<177_j}a@30Cb$A8#~hWc?veNvsr&E18dDugWIOd6qbV>by)rp z%s$5I>Iv2y^0+}P3)Ia0r!N<*!YGL8h}DLsc3JL%&GZKA-SCME=%BptxIomW1QI?@ z9x@zFWp{>cNio)(%q-)T04*m4Xz|VK^2mrBO)-cHm!B$a)b^mRcw{3&B9V=*6aN8! zb#Q>%H;n&KUB8d`KlNID{XvyN0o4%yr&g;j;y-+kPvzyZD)jj^zKT@y+4j!KBelA+ zs)i$)75KJPIsH{lSVh&;@Z3_4H>Vhg@6`uxq zdnF*0JQJc#E0%^JBcibaz5U+RB=0q6NwOLz9HN0?S;NBt8Q|Vc-T*^DyuaCLMpkc{ zEEuj)TXlA?Z%FcUUymf0@R6UcqAXeqXj|}31Ed$~=iy@uV0f>l;`58~6@xMj=q>5g z)$}6n;Kp^*m1)d9UV2bos+|0)4#-P&$&BWzy&FRdVQ)!@`Bg=PjG}E)$^}n;KR7%( z**jUPJTcs`R5{*LFVt%M@%>cai6eV)jrN1M1c%ln= z`@!nI0U2eW^RFhl+nB=;rZx`lNPg#?EDPSy8Lq;ebIAR2vb1fj=*a~L;BCEx5sAA* z^K$!SAwtVKCVbS`PbQsQrpl)x-Ozc2+)k1~XV zmnwQme_yV?U)t{zDml+dhYR0`hq(+_HviE+Mn*W2r9%=A=xaeCWiCcEs$8VUo0DO$ zpK0^0;vbiq8g*8<#OBe1ahYI_j+RcjhbQ4UrB$+1f{n2ZjF3D|P;-a4siIEBEJOs({Mj7#UXhnO0UDH5n*A~= z-Y`q2*bVCsT}vQzjKGiD7CmLPOPf1{zS{58X*i`^*2B`gLAVrELYS>LR2cK4>_%~+)D~A_ zBDvU!-zb`kVYFM4d3`Nig6rfm`4*SPB{s!PLgqm(3Z3` zkq3ze;lLCEb!CB_o?kp-nUi2oz^T00@WO$)%v*XxwIQLEpF{I7pE z`M-$&sE1kNKfcCEU2IhCc<6GBTAPXv`PYo}=m%u{0YWc2fzu8<<5kp69lWbO3TIi zT!_>N@5qEQQa#+P&^N9wbI*e#-GEL>a){&Ddi4M3ogrg-g?Prj(pzI=+?cr$A?=7R z6W2h7M*BM=yxtfG`82P8dLQXS z&P;5zwvUeXo2^!vIdN@G?PCPETT>oryKCiX4pD9lvoYlH9O=N|8~1*BqA@+8rWA>+VwLIRWkhV3W)(mFe7vW-63>OVbcp3ZpFM>;D6t9K1K==Zme ze`%sz7`YD_LT$sgP7crL!aEOn05%`J)y~$Fz0*A09-#6`_xH>{r{iuvsl0vcCh->g zvA^kd;~2^)tk;QeO%OVf3;b77jp*Pnl01zNe)Sgbeil|pPlTq{?R;MQnRrup1K019ye5Nqgu^oX-TL&I0OU%v@&LR zdUmi=E<*@=G{F+H?=kVaEb8bARYcr@4 z!N#Uxs;%G^LWiIvNwscimnP^zQxR$#^X3N4Da2xI?U38-;j@V|iJH!7o&J8*oX{?T zFekW9S|_KwfVPQ~_AgJ+N|QZAOYS5TPMewpPY#dww-0uAXc`!la&O;iF>(*J2ROhD zCI3eSEbu%wpSrPfE_c8Z0e6TeLcviszau;_5%vS-`Boe@t7 zALyT|RQ=e?K4q!2utGtQu@Zx49j081^qPOCaXW^(G6Vvf zKiuBIFRHW=#JfX?nS#hinI;wo7-J+7ie!vQzORdZuCc1$^p^+l0bq)H<%@NsE<)*c622kwBn(6rZENZgs?znk*&Lly~k^GUxy4x zhJ!2FAXYl&p_Izou;h{_#cYn5(K7W(I+qf*!a|O)6_8E>6_!sEsLwe>Z`s>bZ1Bh* zTYw^b$tEt=U0!gtASkVrCSc`?-MEV3`Z9oX;WYcqti#$Z@_w@jO+k`ml7XhLC24JK zLeyz{lk-Hfp!M_ zUgXW(eQ#63ejV4Q#0a&yDOu72kTt$7%u+iDVU9q6Aestyb{Zk^?_$bF^ed3~{zTbG*{&7jNx3N|9bu+HI8^T6gD>3x|s!Z`NG zmP&UFbCjc!l%cO&3amM=EU-J-$1i1odhTg&cqW9Jeo!gXghFQEOE+@=E0-4E_Wi$& z>V2~R-l)?X7Mt~rI@|wj++W=Pez*Hy8RqNU02g@>aPEuZ#YJ(^OJcb}^e<@q8yf!^ zD>sR`ff9{IZ|~qA+xvUFtzSu9OczM>M(lgK1#2m()Z*?MwSwB#BWv}+RpqVNw@Pf_zxT(YA{X5x zp7?sY{cLalcRbc~x(D;>={uRdL)KW*{U51Ep_Dv6ZBaRq%Iel^e1`{33+JSn0iehDmU`K3JWT7YXPjA2-H^?wnpwwP|g?oIZ^%fO)Is z9-+QcJ*xFwK63X&|Mg1IKowI8f$OV6WlQJPBu9_p&9OG69yU+=aDBxOe$A>%P7g)9 zD1=M)|Ale+nxgE4uVs{aOUGx4M!?8%&SsuwX~X=D19pnHAUlj)#$(hTrijj{c^JG{ z5~eKbBFiFdMGY>xA9iC{q<6PF@F@6-@;lUAO!VD;D*nk|f#n1e^V!$6;3>TXl5P*X z+mpu&%2{8pcnwqyPBisNf`>#vXEl(rs#{AEs-eW&Vs)p$y;r%>$N?%dHcfUe>Ay4& zn)JXT7uXWe5S2K=OzzT539k#7=T3gzK5kmLKlA^%mO?87jg$)JY6JI*`k(8!sW_!_ zUHE!mKiPLLeJ^fm;FJv#rvL;2ng+J&QuC8Ia9NXw#|DCr*1VA zGW2Fal4kCU%2TbM7CP#~dc8-KOxh?3mA5_B&}8{}EW&tNNEV2tgmd`BbxK%el3r=5 zE|!vjmDZqv+(Hm(J{;gfKQf>jS2opP)E(fJ(sVT|a7gj&Ni68->xNC3-r!4v#C~bC{)P7f=ooO=e z%%@;&@9G26_9oEL)yhFx)Mjd8=XAdx|bFdbMmAMq0|W#`sY$$=eF$$>4aM ztn6l}*-h1ROzcqRCeojJJ0x*sMz$}8Y3gb%np6?Zs-nCV>^xKWTAc>;q9c+XywPEvf0R*K zF4?m9XK1B= ze*KkR_~;wVgXcoypKT(9x4**Ri&@}Ove^DE7S_e~mvzlw(vug~kz1N;`*9K0k5mKm zUOHT3)V=L@=?wjW+{&*$X2q=_a+NPOdkerV1RMmA2920}raV%2h}^74g$TR2EfAX{ zC|3|$v7L^a(6y9=Ypu#MxQ1ez7t#7O51$(J@)49(7fZP5tmJ7x*<9xGrtIg8y?vF6 zjD7e5!ykNi?0I7UIT?T-Q~S5(0MU3pIXv7~&#q47Sr|5^Y<_eUo{?hT!xrvZe`y{g z?%;IN$}s+LM9HRao>8=hXB=S|+z?)BZTdV)G7`8_sl`U`tbO~3ueQUoQdf|BkDSH(<_-g2(tRv%~0AxuKsmIot!ML^tUUnL7-WT62Q;X-ld z-DE)-B7$Nda$>di?FB_4IpMRs=`XOy|GjK?xvzM#y3z&HDZs>c_RyQe>Qi@_o5i3hVs~O-ztnMsaWrV|>#5W$$1n&MY|NBVm%&nsCldOLEOF zTXW4$)aY&w{%q2`nmZ8#^RT$&jzmt}_-yni;|)ssz+@~oA&XB+pXG~B&hP{+j@_TA z#V4zezxbrRxyibitW-zH-mds23y2C#DGfY5JGZ`a@e9auQ(4gX#P2G@IwKP3eax6E17QNU0KYvQb_l6Rv#OuZPl2039*%5RP>6bC{hX) z6}6OAmXit)i~n4Eu>Rly$N#@y`)>Zfi}?R)GSW-M9C_0=Uf=l(dh?<+XG4NB zZoL6_-UkRU{7^N?jaMBfmr#ThcN130P`@5UwVAjzH|RVJkKmh$68!xm@h&3qdeJLo zJmBxVH&osBi1?fthk`S|ZC|8W6l@A?OR+RZeVQPY#E+%&i&?~ZlQ5f+dW)CS)G*kP*O zBrUnodjCUBK=dmpT+AdgQPSBa`EuAN@&r~Ag%T?*y-L^Mq?^u2htUd>{Rdp+`4*Sf z>FGsMfipNf6lSNxCudKeHjhvC{%ERFZFBwMM%fNEE0&C^RKLGjo}xxf zZu;5tp=f)l7pd_%5g)1UxIAT&t5$kjN&6Nr zmC}O1dHD5_YG?L`=Xyb^u+Zpac83b&rGi#pr>=Cz9?EW#0+Il6!V`t3*f5D^6CHE9 zM;+7CFA*cpRU8kylE$4yg79FswYz<~y{&q^^}5`dYfwUuKTrFkbgbPNdeI$#l?4fw zHwMjhxm=poD+AFfHRUv666GfX@DS!ok8c2AImXFls!+EDb$TdvlXSPOAxi=n!5Wm~ zRM1%8tGPd`78=ma8gAW$^0fbEO%gsY;or0d*pGxxlkX!(&h=OEYjEXtnew|ZBx~u* z1ZS9&Zw4gxADXYyEeio}mw1ij%u*Ss1fJTW&FS$_DbS#<7Lr?xcWI*I@0?#yKQ6B> zmv1$yWtj`yh1_Q^EO~KH%&B35NZ1B!gHK2XSUt<;?f@B&ZAl|+%q8p$CWWaUb}p_; zdL8RU7Q||e5u?olMx7U@)Jg4&i&(!%smK<;kB3L~-I?s_2_9+uBt*h@uoW2@ZkrcHq!H)XeXz zk0~LIJBpyBfTV3XKy(zbfh5fZqPIgvHjt!Eq3X7;Y$!>af=c`fk>)~O#cjJrNuwHb zBoEKczwQz@X>=7$_QHT0fr=)^op$MSOcqZ6S z7MOnMC#PNiQbd~Gd0&w7qN37C{a9qo1BexCSZF?yr0rb7J&d7tj(67UV4}8p>F{;j zXH-6X|U0sYNSAB@}(e@pM4j#G)q)vI*cxBC=%Wt${$t3>KHCmlfC*v$9-!v2u*j<>|L=AeXq;>drB(bPapk(OD07IGx0u=Cx;|mj+ z{*ZYt$T%6d2L=W`Bl4s_v;>JPqo9x=iAGqo9~=U!ZTiF6$VVHD2}MsQLWc|4Lx>bYV)hENNwmd+4!lCcff_LJZl}b*kux4P zQGrgA4|*@R5s#}L?Jn;STKb<(Ri8>uy2L})Xl#<03+!>f*D!s}3}B3F@X$IQNp*)6 zdPA2+=03wW<*5Y*X#%ohW=6xI*cJKcQR-YYPTd}SL?=&8NVgx{g^S1)NiUPUpYG%R zGEDTDvz(_XLkCfRU;+VfVxp! zt!s?(tnsxV_%qF;EU%6?e~IZn^i{5oZ{g(hZg z8Inoai51p)yFV;ZYA2%q-s>umjwEh)wvR;ai&wIH;;}SarsQJWN@NLbRNV}TS=t)J z@8dz^j~2b+w0*WuZ!#S|J34NjoKT=cw?wvTwXka0*ofhzvxppK0z;wXkazQyd-mIW z<)BF3IZ^1i0&_GJX(h=M|2rLo%G+1U&Lhj_;jp)7W^0HZZ8U0ACTX(w5lDCc>jwIA zOS1O3)NjngCD2~&l zpbnv*j9aI%Qo10@P4hj%J4A4DmlZ7h{qU|_j`$y!7kP?=5w|VG+w&lw2~vmFPD>RMD@7UD6G(lvRft5-dsM`ZYE0|FHA0+xzS|>6w_j?f0}j zN{ib@P>{)L5)qy)C#jpzsXnPRoGA|BEL!^pYmOaFN0ziC6P_Dx8h4=t8+yXNO_YZ<7ss>agE!{%Q*0Y zc^n+>hM-Z;TbB?9-5d;wsNvnQK2PhDWFo`B`O>>~O}+}q?m2EkP>?rreFH)b60C&@ zxfML!nALC;Ux3^F(VAyTZ4c8A@#saZ{&2RC6*ZTiX^V+-^v5h$0Z7#N+Hd+ z_x8_@o8@9_i_m$Y8q%TFS1Pa~6DY0vZN2K_7p?oBLaQ=xuQoUyOJLRTwpmn+wpqVR zJ^bsy{>9rEA0vnadoi?^Ym3%usPHxl&%ZtT?5!QB%-;`#2tM3=GJY$vRp)~Z`NvDL zzWwzto%0@*>fyV=nq!lFhrvt-5+$kuvhb>LonD)D1)wkMXl~SL9#kVlh^bncLsNt1nx!cl{t&JiHDpxqwo}5dsgA?f`u<; z6+V)}LAr4w@k;BXNp7>V&4_don5s_D!G+A$m-=!5_!twHiLfn08@J6Q3oQ)TbPYbVRJ(Q4|p|I=pL5MuNbgtN7{A~7k{ z3PxscNOw^r^&$^*fzbLarK^$kN3E$9yt;E956ARvtpJjee~9PkWsumc@!F@j=(`Zz z1(5l;s4w*1*WY%?!CKUszJxUM)$d1h>*9`z(Ol!p9n63n6{m2&rP_5-NuhZ^azMa7 zl$931s4%;`kxFTP47z+k5bLtG8f4c2>7bpy<+GTFjk>H)C(Aye_@LjUS^KEXfV)@2 zHl$1kh;a;oc;cf8QqiJW7!?yVEvJIwN49b$zbJN?4V(>M-i4sf&0o8#%1Z^ez&;jF zyCOR?zw^19-ClsK9kh&Wbs3OsF$xkcZ5K55ph}W!lv5nFeC%ch`bI{#V6sqd(2HDA#d{zy zH4I+b)2X#J{py(j(YV0gC}pT@8W*8Fz`@|kqASQcZSJv(fbN@GNhS-)$`7!NL*^9EJDbfp( zzu1@?@mv0lc<^@FoQmj|=z7B!&HfoEJWq-l75F86>ww}@Q_gYTF>bCdfe4lRcfU`H ztM9#}fc=865i8#0fQ`d7?H%T~eJE}R5pLcM+eZ|(l?abuaT|(ot2}Ydw&8ojiMUpf z)fkhK9M{TuwiY=|_OlQ*Ct-muhpJ{GG-Tr>f@A)DaCpoL4~0MT=C&-!kw1P1`W7d} zd*2sM*O9JS0txPSl2+`qrS_cxL}2kh_W6YjNo`En?J-qOE2+b7MF=D`U) zNB)n!)8AF8TF!UaepvgdK8L^dY_IWYnwSW&dlHV#hwQ@on67F=r2A^K+f5D^$T z2*n@Y50YsoA@~T<4c4gL8N-RFtFj-|->-mhKwW7JmE0|U#PWdm%$$r3T|DF^TF02& zt2F#_@ohwAT*K=IwGdkD;hQYV6nj5D%90p2Qr0kp#wBOTIz0dy zVDi)PyZJzZ%EoYhNo{%^XWn~pH?v(%2}1DD+XY-ewRO{;o$MyOsGd_oX+xW_movY? z%a&F0gvQ+~PWO;B22!3{Yz0(h^RRngs(4*$CL!|tqS08LZuCzY)imU%AaoD;>8#CZfds+w~hMb8z_ z_$(an9U&9ngw8t_p#qCZV07)tCjU&?y#@#ETNInrralIxi-&ivD81PIXQ40$q( z%yWxE0i7Lxb}qMj@k|$*Est~vKstKTUn_BZ4qg>Ve6?@vg>59oz{mxD!$9zF3qo%5 zZ4gedVB{{}hT(*1m}IJ^glocXlauYc{>QX|uZoIAkVtOB17BruU_(C_Ej2}7KkcRx z*O)rE((XXeH0T@282)Ao6Y7k(C!+KZZEU+}KlYlI4~Qm~RNyVf(Pz(S z+lxu4DAB*!&c>V}zQ%T31W)FOC1lIR$lTuVF%=e+ZoEK6)dvsm3#heI4Z};%23(A} zjqP_a7p8%tzrMuP>DVLMW-g&C}~k`2ZzTctcJRWWKjXvTx2|eZ<9fni8nS2D;GGg(*L)z8*TaJ zUS=B`14g161SAOrZZ77zZL=D;TALWM3=3hU?Ew~&(JC_reuVxN>H%sdz@+c}s$_KLbnhoc2`P!Hwb!15Kjp|K`0G6T3%K)N z4zKUbFB@^}v_Im%_xNvs{}R`sKX02}@iyr>PVli(O%23ROOnem8?Er(xb&~f;XD4B zmS-0J=oX%ooC*A19}<}0bSA{$ix6F9vFtdJ_CX>id9e$O(KX{W%^cC)KjhlXf){Fn zoE`Y%%*Eo8)%?=^IYW#`GY9Rf&5bAhae6`me&QCZh7pL>QXfJ@a{>E0t2P&gNdlpI zO&&GlD^N*`^tobxk8YxHM3F-jH7w1RUkU7UdH$NDWSzaoxFUU)Z`6L01ag~gWu7?= zrIV#p^%a)j%*J?YOGNJkK;wGVC^6xs((rbzTD}LfSzB7Uz%2S)mq$ZE!+k_!xYnpS zf=_3g8(&|JXo%HSSqg;WNgsFhP}oggH3SHnOvq10MLnKX+K<_#%s_$$U*IZ{B@(q~ z$>iN8uZ}xeZyAzam8Z5E5Ez&iCAlUi;qa7MvA5+sblKmM?ADt>^13}}L1vNO>`mYC z=*5yHmw$k!u1f94 z!#7k^WpBLTgE^y)p`xZAID;V(2P35rFJpDR&R_>x)_53K`D6Yn{Z;>#AM)1&6O4{K z*_(bv4^=B3(yg9Y)eAHDZr0i$v3_5?t7T{aAOkb`E+8_LBQ#x4M&E!>^GWNRyKBp> z9{=q?UN!EjyOQUQ_0HvJL~Q^ISpz;HC30H;%MO@cxT)pHvE>pT5AloiQ*rL`X%!9% zKK=9Ap=Hvp%H>duz2a^Qt(rEu;7-R*n#Z7AvdT`CT%jXWc`bmND6~B%Gclst>h8*2 z$D^;G%JRZe+z@Wp-lIpC)g4viS2|sytpO+0u9u-tKUNFPH@@?t!&QxCj>Xem-trt* z3Su|bczG;vxd*q_eGYn1!jJNdHdjAxme=YtBB0*}-mA*PXv)Vg}4w;l=!7FT@!`muOI`qjES6hXqC(3N0a zNqhae14Ykr>w~A^^GT%G5%Fa0=z=rPpI(Z;eY%lLMMT>}oNwp$RTfKE~n;m0O{=M0v|p zFxY`-?lZL$lslMKN3V=M-Nxtw#>|qJop9KjfOCwKWF#jSe=BLW8C2DZ%Eic#0%POO z5B?(i)bI|;^=XqjCshhgXD^$LBGSaMu1AF=7>ymEhJMPbBW9-%QsHgc_t`w<@3hfx zH@jo9gHQdS0XD+QM4?za68X$xCyRrT8-+*R()z<$Z}T$%JG=5)Ee- z>F@d+(P923%g4o@Gx|bhfs&r=@lR23jIk!#Q6}bC5NF?S{zw$4SZ29BIv!U$vKrlJ zJRyZLpR{o34L?Y%5@TMZ-J|*X3$|E6& z#K+YrKBmrStEIdlEVV`|oHg$`j53i4MFGDpx%BylIAoUGa zZ(TnocOGkb#d>c0`4i&et~yfByyr=u3~zN094oz!_DHq0o*n~mN0wZlF)9<)B8(43 z>6&xh2snW0QIvZ%YyaX)(9GgR^<5MyQfqhyd@i7!oP~{>fQ3!3WyocPJX0jg zR>%gB5CwHGf7ZLgIWOXbj(kVA61>G7haWE@!g zU^>W?UQR0(3eY_LC+#+6Kt*s~f70c}*ZPLj5u-sQz!aEmq1_fuxfhhf%0Uy59%h~# zqjZL|tswXHZFQrp`tfH`!=FWlZM>zxHYK}GV0Zf--ipB|`sN&~d&_wu2hs_XUNCAq zP4?yGtr_v=(b^U~s=Qe9nJI~vY{;wS<=BT1lrI$9-q@c>j@@WVc013Sj5=`q2lX)_QR3RHn@ zo7d7?&PCvL!xDP|eZ#@+EjoUznD*h0m^=9LWl!(`FwlT5UCflV&hzJ7T57aP%D_kIO$Q0W4(-OD$ za3Q~pGYtQqy(isn|$>%Bfr6o(?Mc(`QY_Lqi<{6EacxfJ3 z!Uffzl>dh>hw~#s{gL^9*0;CT*D?Rk`sT~+-Hk0@zp=Bsz55~m&!6#Wi3I2Hgj)%&loQPJTtQy|wv3Mn?Uk@hoR?`cvpVgkD z%lUkecq@~k9AJ8hjjYU*Nv!W*3LbI*Nda!H(dc1{*|nPZnKXBzg+o!is)po&%*$b+ zl2qmn(%S^GGSEJT>ASYt5CiCUN{7<9`0{Ji+Oc#}9EF#a#i{BUOz5<7eB>Q%BlF_A zRclP&Lt0D&e`QMF>{Uun?jW^E+3Tfw`TvR0i+g@dcu40*{>tHDsqzer$FCjsevR>e z0fkX_;!=(a@#>Zy4vc?TF48lV8f|soiKGLL2z;e%DRZPlWsSxlO>YL{p>(_3Yj52% z6t8g0{UBT-j48c2I+`ZDLZLl;vMYACUtj{9mDbtu?l#eD7Y=f9a<;qeRz<2aAjTe| zq&?DF81_(WP74F0T&6&?RN z_8*73hpr%(sdpbe-OKU=oE3QlN%8oZK#}FiLOZ`eM2N8L_X*vzETW6A%r-@?@A-vS z&cMTVmk80ytrix{7|2>UdXoqLql2kwqrOo6;#T1|G$$k(7f2r?LcWY@uWDy|;=8 zIBAl>BSm__(^PHvj%`J5Y+act{fuEst{xFd!9(K(6h647kP&V=$co%Jd+#pMdwUFz z(~S+$H+m@U43v*x?u>!~+5lE zZ*IKY*xlN}{GZ#q>sud*oe%T>zf%9-d4GR|rzy!u+COmp=huCkANiCp8yoA}8~)Mj z|0OO1Kdk@$jP4i8iCWWs?;)DG7^s#j)m|)SmAR5;0Pc`7hg@k*!4~&h5kd7@&z^7u zGtHMXloQbd+QhX8O)qNNb}^Q@%DOaLIv*hlF5(#!Zo(PLoQfN{6vKv4I4Ws0pvaOB zp8wCVe>VL;H2?GZ`qs{z|KHu%+5BMtf5zwMkDvGXrSY?P-Y2v?)CLz?ymdf}0XFlT zb}V$^zuQGEzdLOozP+>2u9u+K=+&an@4;=9k2$5B)GwQ#ep>h8NSl$aJl5|(^Z8ow zM6XAgbez?f=HF=E55IPEM|d1{P?(Jer3EXx6MOAcZkysLm)4hf7&jT=M*39?ZySo& z^@?Atv_>OT)1J7{glJ#19Sm)g5|8YW#s*+kqxv+1G~Y*TpBn&=Y-Dr_S!tlg))a@H z&RyMTwQl8`VR~f#kwDI==$j@&v4dNAJsW}SJ7nIGCg%y*DB?u+uP!b7mQh;P#25FQ>Cx~d@ziq#zr zBJRF+Vyvt}q4y?u=A2K{u~)Po>3ZxQ58O!8CGN5~J-t3#?VzbJtb9?00L8Lb4OMDB zj{xhJHGbPRxbeuSF%r$t!Ra2Q(;rF8C@ZFEJxt`OD+GIkb~vxX9#|&^C0JW;iZkX4 zTG~`8p^fONLYfI7qfi*M8M;LkTbqGJlqppyC2Ff zw5^53#plI^(F5#?Z_v?B^(UCz-*NSK-ev5?{)5Y_39*-@F>)fl{~Ghfp>$|e6Fb^L z>Nv4+aA;FvD_!4pL~wOZ+FsqKUx6GdB0w!hVBAD3{7jCPci+G9m6f+g^|@q%!?k;>Em z1c$)_@{Ai^=mIGg8N#d7`3DRCD4}pl=83rEpPRz1A|y!E3BkR}b77>i;9CoLNP)KY z5^-&@K^K7b&4+qinJqUPRTkP1OA#Q$=j7dLDWo#Jg{-#xeA0{sgV@;}G7;<(rpCsw z5W5Tp;}sQR?w5H^JDIr{K|x*Bv$XqpX>Vz~A;P#TiuN>}(G$ojG5b1i3JSYXk2F4h zCUu2SHf!qa()$g;TD--qjnYf52T;U)4dmJN6X8g`m(sxuNnO0~|GdC)<@rf*PB`#* zQ9dfYMG#J!FLNgEDcg#0U~x}~l@0tQlB2rlkeFT**F`#8wz?`l#uP0cUAr%gyeF)b zu0g!U3L0*q(M)DRHS0+lO*B2#+j zFiMb;ve>4y;71Di*%If3)gJALIY8!$3W0*7Ghu z1cQanKg>kmfSXg!p6C*z5a-RFWw>z{ij={QFH!8@`7}arQbNiGf)2NKd z2L8xpt&F7+RV>*TN4hM+jB2(1wiE-UQ(qzWpN|9`;L17WdW?Y2$<+1)2DYV0g6~)& zXbMsb6tOhM&BUT`(jA6D2EQ&I5n&1j$_3XGnXyL$wt|qt!blo)NY(CFu&YHpcw|f< z#H6xNnKD2UmH9r|RVoXQ7$~nd9zzNhd*!CLbcgd*j}Fgn5yFxsL-oTfGWQs&(;*9v ztTPTz?7nGw2u2Hq){XPTd&m+&TE!+zdx6}_!l|548jPdXK^Cy$LS^wxFF0L;{wpRH z`q31Yiwxw_sWCJJdl6JG_9>PGGr(OW4?72fLav>Z)6CqvBm7fCT^-%#JI#TvAwsAN z<7-Kzdy4B1VP6$d2%s=K#|WZ;hg(@%SA_;@Pm8`DE|6!2KI4u8MdQ~-ie+&EaT8=i zEQ%C?Y!=(iyJ7{~*wftoJAHSTZ1{s?Ug}!WxlY}o=Wc$6-<%FWr});fOSdiq8Do6uU9Ba^*JhydL4?NsMA=bSNht5Va5JE4Xw0bUd*cnD_Aqj)#B0M zuI{t6!h(5{xgq2NMKBvPIv~&n-+JL}?s(`}9en*?*up-+*h25T*FooGI)$LvaS}~l zXW>HA3XnSYe$e^TP2Oe?N3wzY?`}H&7v@f{yI%E>Bu#Hz%Frs+ehZPEL+*j@w69 zBBIF&MIt18Ga%rhw1ZX6Cf6Ldu3B8qZML}P?4)kMHQQX{vnkHi>~PIjm}K$1!?jqm zi^6BA9-W_ET%L3hqUKSEbw+y9y}IdM_?}TssNV?n^BAa}lKxYI=GOJ;3`mdx%l_17 zUySg_BK^W=h&*d`Zq7TW--b#S?B(f+h(AH4fiTM0Cy0LYZLPqH?RKYi`E9JzR`;mg zo}qo+`Lc8Vb%zL2vyg7u7kxq@>%UK@`@)Ieto{WHYPS@Xm^239m*_$PzqLA3fG^3$ z1#dTT1|T9b_sCQCQ1Dnfl~<3E8)EMF1w2$!@BOH@t2M6U82H_BHoeri_0O>ww{2wp$TaI1*d=7HXO z$(-pitW>Q$9YiuESJP_XZ>zF8=I6md8IekFXklQT8P1*xh@7^G!i<4K4j*(?Ke?0I zIc@T{cnHiBT}F?#d!LBwq{tSdTihIF!xrckK^m&~{iLCa=SX9|xwklQ zPZDQ9fs>NjPM>{X{%_{4V=;0NhTiiPV?8%!7 zcPQi*D}!ce%GV6yzvh%_anXTBhB+VES~bi7tUSX{E0*Vv%gaudf6)S5+z~57c2V0xgo+Ph^XXl;PVy6=_ zq9Lg?c@TqyAXOD7Yz~<4->0v>n^|k|I)M%Ry>a-kMM4fKUHkwhbjw}^b>L}1`|1wf zDFur|FqqTzNg=V?gf!PbqWY=~P{DrKHKs~u+J79_sL0{owob00QdL_w7tTf=v7-2s zwZGu7)|@(%Tu;bzB)Po&+|%>oZ3C5`O>OXY=Ria1jw_tiIzL)THnH)#M0N0%D zNdXTg3JDC;Q!4qK%8sCeOG$JF!mhgq7#tS_L5mD10JK$Rjo7Ugj|}-vTuqHx>~ExD zbbIw)Bh7eJQM|}TQY71nD^&kJh89X#Mi)`p{zR8u&kPojWLJQq;D!Y!EVvN)I%&I&v9ZYx`z%idaovBiYT1{~Yb`uea;kZDw&`g!s#Pj0f+aAF6q z-oJc?bG)Yp4S}<)B7~0dFTZeQh5oz7A2x&Nss{^pLVDIvw0jK2pI=HSQ+RI9f9an! zT}6d~)-93YHxUoZaj8#zDytQ$>CK4hnI)s^XF}53HTV*0D+hgDq2<@4VOcy{rw3 z_w-q5jd=Pkvy{0Iciz8xtENFhtAOE3V)4L%;0`b_O^239Pu?4pYJy5A0E}Id+xIK2 z>`qFHu&;tXWpM}d{UZ3qsP*D7Sd|wUpG___af&+AeNO2vP~CW;&6?({ku**Mx~2l5 zv88+S&{>L%C2hV=g0@yplrSvlI|c1#L>W_XQLy}TStlmZ@dIhH<AEX88G7*#_Pht0kd;lu$=-^p|{{BWhK za^gep#a%@_s>R>sBbRVHXaA*ISDBR(43o==-%?`rbv0{RR944Ku;}ZGtuL!?+GIDu z{e59Sk!jK7Yq|=H$pMu-hv88FL+B&`5-g}WH#@3Ex z<(N|1*@wUQ01Bq#>zv!`Xo_JG1VIw4CO*D|*!bP!f8cn3re6++>m-&xij;x@E8NHkO=!V9Q^gvJBxRSLOf#sF#>)BY{bNr zl@~--b`e#8jGW>RNFP2%`X~mZj}$4d{5nNCWZKGq1N4n_Vn9}Y9VBr$ZDeV|lJ1I6 z70&$OA7B70@$#AWGtcq8EBa;CUBGK%N=lO2-nT_X*_JDr#Lu;@%Qf-h<$UHCNTO*1 zxP1V`?OH9kxvQ3%Gi2Gk(>D$9SleTC{?)NU6#Q$;V@zV7HNY)&CEs!hR6k0;%ul)i z5fJB_8+VFG@3alB40UzMzW>4DEr!EDsmQH)r38lgj(Ayx>ClA7LrmtVrrn~r;9^nC z&vb6*E-&4Ziv+v@QPtSsG32~weNfx+I*Mg>x%fs&ftAWg{sQ5+E06(5s|$8Mt2$57 zmP_YPTJePT7tOS-t3suzh;XVMDM7Q+MK2Vj6hZn;%83;JyFf%t1nOb3wt0^j@pk=) zi*eDO$(g8$vCI(;aSDCBbioG8(sAQ>VBdcCRmxjG^>FP*YY~V}#E<=*i8H`*DbO;U z3#W2qv8rMEf&h$I)AoE&psp4`I*HnDWP`Jr^OAp5SS99#7AkhQ-4?@S58mx-Vh3PN zZ^bW?l5Z+*LrYx#u%z7MM6FS%*jjLj#cG7)dkcQ9Ry!nLwv%nmE{fQ~~E&-IE9>fnVz3thbUFMRNUr#zU_aZ!z z;QS5+xRHBJlxx|MG#BtT5nM6I^~99Dh;SvJ-C~y-D5H!~d6Ing12Iom{ns%y3csqm z43^Fd2H!X0YcLeI59K`^b`EgF#j*g6DQZ*I`Euo%`J5IFBEp5-Y4LFQ|0q1=DPwv)2Q+0Xlc0MNg>&myHk>`W3{NTSMHEYW?jE8B*qe zU}1G22(=#D!Z*-uMgU$wp}+Z3rC8b^3)W+7EKZDe0lKbv=qUR_(au?vcvI%h*QM-T z?SOT{7|ssODR!^d4sR0tG`W&syPWE4^vS5KaU50%TuooYv$U-8I9SSM<`!-VybOEa zc{J6lj{S0u*%0^l_2FmO26kv7%Rmrth|svCo;YE;e%w+D$JIG2pP#mXl{cJp-7XWf z-q5@IYjnCSM5oIl=maw81X6WElSFm{B2xafWxkovJ0XPA@+-lfjtX=nu>}2;R(4Ik zc!Rn=e0{riNHc*Ma^_${YSlxxbz0@ao+jhcCyDt+aO^+Q{2xIj`E1Y>Km0V$pX_U42B~;)=1=x9gF`#+ink#9hx;Nvz|Bb%WY7T@x>5v_456D^qS{t#ykM~v?wT3uRc`r9z4c6DVwqlL$tGhOiq@6 zM5p$ET%w-5W8?$rClw7exG6i(5Edv5Z6G1`j{O(C!5Alek>i#6Tm@R?#-3JI zso1|tU8^{aH=+ADQhppOKUU?(k@Dk6`LQZLURVB2Xg`kBA4lqsRehmVa;*M%MMdh5 zRee-Wz_9g(%p{}g8)|4|odC9{?%XlhIYxGTF(xe#J2N-_Oh*_-HYq5c*u%*Fc_%H5 ziHalBiY6?sNikW3{gGFA0H7e#z4W>|P9%^sCkw#P}nOfJ? zbSPlfcV74rBHSRa<<*)6GwAENwazoO-)s0IyU5hWi!B*d0~azB%BMyf#GI+>+?66* z?JQH4?<`vcYW*nF52vh}e5P@~iF9M4h}Xx8Oi3e0%`4NcV$+OSpfCwpY_-PF`hr5v zcQ=POn_{(fu9)@JCbx`v0^dU8p)Nh^QirI9-cN`x%#oY0q;?GC(szvZSari1;k9>? zhi|+??jVQk123!J%tU<&Iu`WuBl)~DGB=Xa)iz>5XL9fDQS=Hl_pjH4kt72>1w_Z- zGuz&A-H;Fv#k|GsNp)+_D9@$+zjDT8QW_IUQ_(2stIEIn5K4uCZ?u)u#2RIq)Hjg0 zl@%pW)GlB2Cx$<>P`o=}RhrUMnoL6JuJl5SrA+e|;p=hRrn5_9e#`s+dMDA(cK^d3 zf?wYM@N?I{3?oPB{Ks7X-KOQ=0e=6vd+XrNo&CG}y#CvNdH=&t@`USowWe*7*e;)j z$|qeyQ<)Au;~R4njGWk@1r#E-!vwq`oX=o zUw`)clPqknR<$Bj@6Zx!$4+H;=qh+~swg*|#S$@J>UQ@!mWsTs{IItyH?a93y6**B zxog9Z9;uD@bb~Iue+@mtq~S_7Jdz4OHi!dm?G}{fPxiiI>kM+`hG7_bp;=gxE!$@+ zdiQ#Q;X@N;C;Trn1ogn}n4jMw{_jUs|LpwCPy74%(?097G+3U&!oQ=9Yi?&RO#e6k z`$6RTQ(xEr_Q$q=ANV>COoBUqL%7zmJtg?MuiupYx9#2$O}Sl90oS_qYd!3&kBzK8 zFjBJZreVInrl%gX{+oJ}@Z{@SihSCbF8SVY-Stkx<;EhuqtBa-%XbgLPWg6xpU1Kr z*e!`hlD7PIe7izkQVqY^xP0r~*1B`(;Xg{w7ACwuO=Oe4B`A5|8fRQ@6%BK(cO7vi zDKAo%>hhwnh}$xtBL*pVrQ9GnU+6FeBHw}Ujx#k99!A3JX<{JXIzZdNk1JxBn_dFN zbeCy>izMQ$hzncM06GDB6P@b=>0Ivrs|sjtLX16$c!4j2m)hWj!_RbYW+vrznqq479-stqtJzX=-mu( z_S($jDd6^9>ivx8Vd-V;3}oBws->WnV@zB(X<#-A;TxViuIXi|`v&71;-#SVr8FX5 zZ@s)rWej*u+`_Xd;|a#Cl0iZ9a09gM@z%?uuwejwjF(>C3K_eZg>n4rSz@0^F9H%mLAfZF*Uvmz_D!bUR5YXxSO4wtVa5D0u?k zq=hl9chiV?RWc}Ot%niudh6v`C!p!=ErFGVuS92y`5;ix`J~ItUooBMgU%K+M_SN%eJ`^ITF}{IUQ85pzWA}2kuaTiq_f4$ zeO7cH=`wSnrt^t(wwSrklFmWQh?veR)7fHH;t!o~z+y(gblwj-Tg;qiMdw?Sn2|7@ zXQcB-%qUcJp6MtZop_M6|`FGyX!pPi!a zXEgd8wcebf2CTm`IDA{;37b25%-W{W>~rj@Yntp*5=XIaCtw;RLKi%=QIteW@Xe4& zr;#_>=HfcV?G&sQ5VGS~Yv1g#7&IiKrlAa%E*~!O;fmW`a{vPMaJlAiRSuV!XHFZt zk^tcO7l+GgxL9P>fUyplQr?UR5DOJ{RM>T<^Q*4^;Z~6P{CVN^KNZ%v{r+>x|M#E& zUux4TWq z>~eqmw?0)}mReSf83yLV5PRFrxoSB55h-I#B#=shvLkAp2XekzK} zDa14*#T65U)!y4R-gf(cNlIs*C$YI+9Td9mBx!3Xl}b+HQykHGdhgHoAHRNOdOKB= z32gY~dV1>4@e<>kBMBjOeVJ!uaM)%Bn`o{Nuid)IZwKOeB(%l&H(TVzBe@&EHwFw1 zvNXGx#*?#I^&-?oJjGjN_TIuI8!z1bOhC^SNC)W9GX>Sb{e>b+^|dj1OibBQ;69Cy z5y7F&1@<_xy_&~-$&K%NFp!_)c+T6W1jlv>IxRg@^5S>#cp>}6K5g7r!W20(%=hg| zl;a9~Esh0=S*7=dCLlgbv4y-8L6jkQ@{pG9v7VLZxah&(3*5j*M$zsab)=l!o-!ET zB^4~qO-9Q~_2N7$VtLjo79do=|KBG`NdP*OpXK~|R>XHfP)%<76Y+pFB~F98j2hd- zgrOyO9IDr}SJu*p-q5wwh=SYI?lIM=N#xQuBapiwTRk(2BfY6~`0V+Q-~T{`)9*?X zr`h7{oS<_{0Vh*5^71KnmA)V;1V03Q8fk}ltwZf`>|e`o@T7$xk_gA$qi-5uXP7#4`3PlA1K$chNhSgzFhkj9HV z-y9MbkJGDwP4aBM3XEIA5Xy{;01{4}v};fxTGRMc+jS*LdO3>aLq}nN7^t5xF+5-s zd60=o;IbMYOPBOz%tvz=j<&;x zG0iRl5=yD79m%4>3T#zYqvGdPN|4GB01ma?LBcKL$#NL%#M0_ZhA~+z&lxEMJKmvX zhdu;P^~zKH+K&oDY@3iez@7M^!om-E!(FP&yI&hXAsX^%SV7?*%!DA6Bn5wcN!0dm zNu~p1pFuHWM1PnAR8>eGCH!d1o64ly>KzUJfg&RWU+}V~YPBFRDs)=-umB9{acM^i zi1WeuYil3&6zzMn-QzVjfIg9`LLM!x$>!MGVJ;{*e70L=&@wwMv)eMaTV}6i?zBv= zOaFTGk8*pI*Sl?3hds*gQ+l6DZ};dQ!}4b(@DZ@@9YTcz;~N!4CgVFYu@D{c&NS-QJ(U0KA|-yE_|j zU?LsdU$Wp~LdDZ@EKGn=x!qgoU!tquvb}s;`gfcAl=wzj$g`~_TByiv<-?tAltNGK z?GOM|yuHg3g1YcfP=1%{8#oaxltC9T;Nc)?U?}W;fB-Ng_%Hyq&(PStun7xT2-b68 zQyI{%4)^K0{u?a+>@5H6>K|f={@LR{E(}J8KZEY_PjC6B&wtd9#%mdkq6VAWu4r7N zh0l|+@k#mN#f&Ub6xt>$nnSC4oOl;%m@6c;zHD8=;%%4hq6O56m#9#fHygeYKOSs}j%h2^Rl0h8EK#mrBV_kEYsaA(CxxE~AS!E{Us} zSnKdi<3dAekgn$ZY29`g*g~EH7WO6_)I=$>7D}-MTST+i1;7MIWkgd*C1wW|)lxNB zG~Ur9y-=jV2{cpyhlk+SFu|;VUY2ldQfrni!0!k7IC4WK2M4 zD-;rgkY1=k1)s4BeRI@u0w;;#dJ+SNx_pQqOJK{ctg%qrz?`!2J-Ce-$5xpy@_AN( z&Fn>+woKBAJBWD=$#=nr7M%)SmhqFAn1Ev7CQGJ9TuGHs?Nb)t7R$3fu}_`C&KI2< z1hzOkFvhrCgjgmDD=NMAmD!Sp*e)13Fkr!>n};tNwq}^G-nWQIPG<`!BPGgF%Z+NJ zE{EI{y2cr3O@LD6+n`eXa43qKyCZe6^6#y!rqWbd>y&uJ#Vr65E&+fqcZCT45vUD{ zDCg*CYiqb{%?agAYLjORkjF8v&cvt2f|sO0rvjH6i4Vo0i$uaW&B4!uk?HZbc3Vl4 z$euzTWgMArI2`5)4N-EtXg;GjK+UG2qwhAKaiOAmz}kezTlZzcnr~{{M??i7Dsj1w z-^zWDNXl48bF73e1FZY&(T0{+%W9sLnpCI*8KhN=s_^D z*R*U7_nzC2K9`(PskWH2<}5RvV}grM{8oESspo}kPX}3;&*4F;l~H8NFbMs9Le_xf`n+}X<|;rtL=}KaFi$H?q^lZ0d858QX;PMNy;rfpCD2>KTFzIU z@Gr}3&PI`#L!2cumqJ2yc)xfeU=Iy|o<{|{nd%N}H3S3#PhY4AXPbf}b}66mA5>Dq z1VuTniOjDVAyV*{>|2}zD848#phZX8NN{DD&BQKMOB@p$Fx6e)fMT||2`xKuW(7Pv zb2rztQJFFMb|F>Bv8%w-2)mjvtGRr$Jmq$)e~;>_8K@Qjt7_dExY|XFOfIMf$xoOl zK_H%@iYJ8&t!1ZGpnRjMmGcTt`0Kd^DG@!}5o;K<7tvdGl%gP@ zTeZp)dZgge_(Ey3_aRSYO@x4mhI;@I*+fNUuj$SeN0BuVQ#L@fG8gB{J|o;Jwg;G( zkw+YXNr|xlos{wm%VO+xmKmEmV&|~k7+mjqrp^V#9ac^V33%x*xPk^D#;vY}D)n^) zFq7DdXH;0LTwx(6mp)S2bcK-NV^frf&S}-deN25hBdbsftKcHA85kL-8go+PX<9B= z|QxJ0b zwYKV#)n8I3(bSbI^o+$qw7!aCjfVlg0)(*}@a|$AOIT!K4GgchWh->QU4pxMLuVMf zhUXQk2uoCo0#ll~0(YskKrmIyI>6?(oX(kx8>bR2J8E?8ItM0hmCoG?qksbDg@@1- zof1_tVPt8{qh|?C*R64(*OdL~M)ZoiXG@glKgW5%hKKR6n5*4hZ6&KSn&6Dj#bi+% zY8(}@*e?4@ka#3Vm0NDav#C1KClrnLQWSQ(O)YeHi1alASQK}x#iiz?B7@ZVxWpGe ztf#g|aAevKh-U(WFTobNXJB?^6h&zn8?3vj1o6t;(R*Tx9MYS_ax=Lc8HD> zR$8U_c|<4_5#|9lbHaw9uG?!HYfH;$lR7d?thJq17W{{+dPW&rFeBY+_N#h(pk=1k zlU7GQRo6Y*_0{d+Z%Prdih>Y&P1x=Foy8MSVujEpJA< zP?O<+o1w5U2q5)8(n>_z=j~-#HRXfH26dFLhDr+XLe2i+P?eKF zQE$1sNoohFxbe{IZg=tlt|qT<+AIqCu!1rJZ;CXa*?4u(Gkl6HeUtY9j=xm zrAP&rAZ>~F`b}TS2%tasDD(|hL2s7zkD6D~1Jz{`n(;+g|K5d-_V}K1jSSC91uFGGooD=+wKu9ERb(hf2~StTJrYBvU51 zW!obLYm2EOeA8g`2M2<}Y;k$4G0|eDrTR1xvSocbbQ^Cyp80d$y#nTxcI|23Nt$j|bWr@{rkGzk2=;+W~H?;5|`i zNs_uokt4@mE7er9BgJEQLk!a98!C4coV9$$_;te81E^b9OC~knqu5}%Zkwv8uMOY( z-o{5_Bq0n2a&2(knBIT4CwZ{XC&R*1lIy9D!0JzV6;p_mr;i6&{Evc>1hZ zpz`D`Kj42MO5^~7TAV_;T|ck2dUgka1xsi_u8=mjNwsiLnAFa6XLCC_D8K!l$I@D3QC2Lu!%Dbm-2Wxc#{r>9%a{t)zKlMxJ{Byql zfViLkLZ=t$-YT729B}+kdH~|<{l71E|4)0_wA=c|&S|F46;-!h?xTo(CTsQPU!QvN zGhX_GL3LB?BP9_k7BHL#+U8M7hIOHvD<)!ByEf>>AAgGS_&X+kk?Pets%FERx^KXc z_B+oercwR(PP1dokNPUcl567@z}a1omVQST=(E99We1BOD4Ft5Sji9KWxTtmjns`l z_gOE-3!dP)rW7oacQG_xIwOCS5z>f%ea)Sk5aB>;eEJWp5~%_e4do?n3Q+y zZ0!Jy-QCeH0XJR2Xf%nC=q%O-S~;;#F@Z@F0wcj;Tf8YdmveQll}W9np1HVB(~6yf zgpU#VrTz#wQbf-Bo!Fa$csFfYWPGbDEx%*j)I7P4CCA$$-ZTaIfI~?z2=a-=q&qa% zvqgD**$lpq2C}OYfxA09+q*wLVI~Vllo-8niJl`Y1mBa`j^1HCC80C)?#O()DDaPh zsuTXyTz_z#=KlW|)37HisWbsDe*G2=S0ms;AMceiMvfthYH?A57P4i!hWR)=uF4}CFMpd}wl;&{x ze>!~m>hbeu`bx2Kk$4}J()TKwUu~!V^Y-7%!+Q^(9-`Q1wEvK~jri~V+hhR_`2DY) z+h5=R{W2d+^VR^A<48Os%c&(f&z4>2-M*y!r+O9q>-rC~$>(1G+4moMc=_Q=$A9^{ z{?lH@`j2nM;I&;z)VfPrXMYKH^eEumAJKVast;@0*J#DfRvdD#@a! zT8$tB`+IGIe}){_mHF!R^OuJYTVYswJB?5NHDqs39uCfwe@z$I>wEW~fU+>K$z>YN zlChj4V27=LDMLTl%VIELKvL<}RNb>x<%iFoxom;N7U%IqZ=1n`4iT5V0>f+0MM}$M zN-5$cQ|{k;Xli@b{4#G;Mkda4LcSitd+o+!bncKH7tCfJMs{P@c02ZRR216ciEYfX zqLd`uASD`f2L!|+9aOOAfF|cujt@;Eyj$NC2ruJk>DCZ_7xqk^ijZj^RNZd~0Qa4d z^QQO@xan5WqErc$-7KyPaHxy@MtsGgL;fzwt7M_;l&X5yQx&CxQRx5@T?F2j^e>)V zHFP=#12fO)au=o2XuSPLeuk~+021k-#n^^(VW9O5mtvamppi8b>a1NN4pGS-_4TT^ zf@cL#L&pP;1bd~+N0)+8!*E;>@AC2b=qahje+dKH3YcPt3zdOtfD(=b!6@kc;iI8IDdX8Z!vw%OFgoKs+jXr{KzyL2zqhA=mO-E_fN+O% zmJlf$@C-qlCGGHFFb$tG{vW=4-uQnzeTvHYFTH-Z*YDA*IQ=gB{|DVKZU24s|0DjN zYDMc3m#I(o0wPwgZ4|ff{9kPl?)`2-0JTZs(12bl8tMfM{OQ%>zZ|NYSLbke($v{p zm{~l_@=MkFpx-*ZK`Up7Oa7FwB8(e={N?!Bk58WHdKy!@+L>zr@@)y7jj$?5W!zze z^%+kz2gtHTiB0m81&2k0cO4aW2RZ>V_tyGSYtF@%QAcLYH+gN<*E+m*_564(;29l) z3KytGD+^A~3=LnY*z&})K;nab!d5!vr1ZY&@?}BS#fc<)49Z1~l5*V4cY>~-e*TMs zJ3f5*^7+f5Qp0SklOnCRX#rTTUXzpUsS65V+6S}Z%xJY?_&%xJwz!BDSd@x^>YfP~ zU?Pj4qru(9(2mrm_#eT@JJlRAh{foSL*e|07OSxIs1DG4CwT)C%)&8nO9cpKt^i zEy0>WJ^oMc{qgY8<3Arhw2JaBH8jaO=LgrWfqM68NBnML^m@?(H4-966p`*GZ;8GlW9p9=h5_*@IqScU#fABT=C6g#C>WC_>NvE zmg~fOfx>j@C|vkXsPJAlT=;gd@ZLHy^qdv9TT+C3l!h!$VwPKCyqJ{|P}HJm0cXqH zXrO)*Ur@cNML2||Wv)uqrfl8rhnus*Wf|NR)b9kT$9dE``GjI)>iNldQ$I*e!=`9l z|CC2iuM-9f=_6l64OPBXPxOj>+QX?HuupnLH2~|^ddN2AgQ{^od8a}?&uQ*HMa4Dm zv3|SYAZ6D@6A3hECYIgc~{jY8j=UA=6e*#0ZkQc9ak%iq3TwDAAQd%`Fr==tUP zZ-}fvnP~w%hU{H#+S+2eN8A$sj5_!QL#y#!>$|2-&&o%o`u#A(PaSr)h3lUW_*9ne zd;&|A2IZ+HtYIojd;zZN4mk}}JCCXd>uEI3vtsr9%)S{HC=&YzjRB@#uaRSbEILf)E z+ZfMPh_5(J=sSS(i5oRe$$Gi}<0CPk_}XT@{T;VqFUar;HA;JmZ*Ys`XqJ8?i(ohO z7>l{Vvx7ExLpXN2RU)GDe4Q95Jc1$S=8CvL}qQQE{)S}Qh|`9A%2N4D+>TV%`_sq<%95rZyjfhM~;(S z&1mK_pedtkoP2h8_>c!~8fK-okLkYa++n5)T0=j!SFU2uOCeHYl%yJhr9CzrO5OF^7tUUBA(ICh9cDX7wa_I!7RDQti}!{F5mF7+Q{O0BBR``0^?};7vqdto0~Hse1X; zwMW^kl`z$Ew!(75te_M?FH&9)a0UC|f&_!2);_%V`kpiwz$CM135op5LNqNhMPMh7 zSzPd`Uo5dOtyfHv`hRO9W7F;T2p${M|NUkyLgtOZ&=9#*U6Ot|sT7-8Gk-3zo-NWJ%<` zcEatFO=MwVQZSyliqB(wOVR0}HRvoZZT_vgXP7ara$F%_(WOe7=mUe%l_zs(aeIPV zo2ESUaWD+M>u9TCpZkOwQ~7>W>A6EhVX1Vp?U~?wg3iqR3eE&PDc5x_ZomOujJI9$?&t+0=$7664_rG|720Irluv$S261RO2Qx;ai@ zlL+iAm+Gpf5u`2LZL2C;J&&-jj+0cm?1q=JI}%0A5l{qk$-*BM9u4Rdg0d)<9jpe9 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