summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcos Fouces <marcos@debian.org>2023-02-15 17:44:56 +0100
committerMarcos Fouces <marcos@debian.org>2023-02-15 17:44:56 +0100
commit42d51ca85333d695e32ca7c6381e9a39f18a262b (patch)
treebe2f2a9dc20d80fd1b4611167bb468190ad378b5
parent302d6ead5e3250131aaa03aef4c7930eba523ef7 (diff)
New upstream version 6.03
-rw-r--r--.gitignore3
-rw-r--r--Changes222
-rw-r--r--Changes.old170
-rw-r--r--README2
-rw-r--r--RELEASE4
-rw-r--r--etc/cppcheck/cppcheck.suppress8
-rw-r--r--lib/build-src.mk2
-rw-r--r--lib/lint-c.mk18
-rw-r--r--lsm6
-rw-r--r--man1/getent.12
-rw-r--r--man1/iconv.16
-rw-r--r--man1/intro.18
-rw-r--r--man1/ldd.16
-rw-r--r--man1/locale.18
-rw-r--r--man1/localedef.1104
-rw-r--r--man1/memusage.12
-rw-r--r--man1/memusagestat.12
-rw-r--r--man1/mtrace.12
-rw-r--r--man1/pldd.14
-rw-r--r--man1/sprof.12
-rw-r--r--man1/time.14
-rw-r--r--man2/_exit.24
-rw-r--r--man2/_syscall.24
-rw-r--r--man2/accept.22
-rw-r--r--man2/access.28
-rw-r--r--man2/acct.22
-rw-r--r--man2/add_key.210
-rw-r--r--man2/adjtimex.230
-rw-r--r--man2/alarm.22
-rw-r--r--man2/alloc_hugepages.22
-rw-r--r--man2/arch_prctl.22
-rw-r--r--man2/bdflush.22
-rw-r--r--man2/bind.24
-rw-r--r--man2/bpf.286
-rw-r--r--man2/brk.22
-rw-r--r--man2/cacheflush.24
-rw-r--r--man2/capget.26
-rw-r--r--man2/chdir.26
-rw-r--r--man2/chmod.216
-rw-r--r--man2/chown.222
-rw-r--r--man2/chroot.28
-rw-r--r--man2/clock_getres.216
-rw-r--r--man2/clock_nanosleep.24
-rw-r--r--man2/clone.234
-rw-r--r--man2/close.22
-rw-r--r--man2/close_range.28
-rw-r--r--man2/connect.22
-rw-r--r--man2/copy_file_range.26
-rw-r--r--man2/create_module.22
-rw-r--r--man2/delete_module.28
-rw-r--r--man2/dup.222
-rw-r--r--man2/epoll_create.22
-rw-r--r--man2/epoll_ctl.22
-rw-r--r--man2/epoll_wait.28
-rw-r--r--man2/eventfd.218
-rw-r--r--man2/execve.266
-rw-r--r--man2/execveat.26
-rw-r--r--man2/exit_group.22
-rw-r--r--man2/fallocate.220
-rw-r--r--man2/fanotify_init.218
-rw-r--r--man2/fanotify_mark.220
-rw-r--r--man2/fcntl.28
-rw-r--r--man2/flock.22
-rw-r--r--man2/fork.254
-rw-r--r--man2/fsync.26
-rw-r--r--man2/futex.250
-rw-r--r--man2/futimesat.24
-rw-r--r--man2/get_kernel_syms.22
-rw-r--r--man2/get_mempolicy.24
-rw-r--r--man2/get_robust_list.22
-rw-r--r--man2/getcpu.22
-rw-r--r--man2/getdents.28
-rw-r--r--man2/getdomainname.22
-rw-r--r--man2/getgid.22
-rw-r--r--man2/getgroups.24
-rw-r--r--man2/gethostname.24
-rw-r--r--man2/getitimer.210
-rw-r--r--man2/getpagesize.24
-rw-r--r--man2/getpeername.22
-rw-r--r--man2/getpid.24
-rw-r--r--man2/getpriority.22
-rw-r--r--man2/getrandom.210
-rw-r--r--man2/getresuid.22
-rw-r--r--man2/getrlimit.24
-rw-r--r--man2/getrusage.22
-rw-r--r--man2/getsid.22
-rw-r--r--man2/getsockname.22
-rw-r--r--man2/getsockopt.22
-rw-r--r--man2/gettid.22
-rw-r--r--man2/gettimeofday.26
-rw-r--r--man2/getuid.22
-rw-r--r--man2/getunwind.22
-rw-r--r--man2/getxattr.22
-rw-r--r--man2/idle.22
-rw-r--r--man2/init_module.22
-rw-r--r--man2/inotify_add_watch.22
-rw-r--r--man2/inotify_init.22
-rw-r--r--man2/inotify_rm_watch.22
-rw-r--r--man2/intro.28
-rw-r--r--man2/io_cancel.22
-rw-r--r--man2/io_destroy.22
-rw-r--r--man2/io_getevents.22
-rw-r--r--man2/io_setup.24
-rw-r--r--man2/io_submit.24
-rw-r--r--man2/ioctl.26
-rw-r--r--man2/ioctl_console.28
-rw-r--r--man2/ioctl_fat.216
-rw-r--r--man2/ioctl_ficlonerange.22
-rw-r--r--man2/ioctl_fideduperange.22
-rw-r--r--man2/ioctl_fslabel.24
-rw-r--r--man2/ioctl_getfsmap.22
-rw-r--r--man2/ioctl_iflags.240
-rw-r--r--man2/ioctl_ns.212
-rw-r--r--man2/ioctl_tty.214
-rw-r--r--man2/ioctl_userfaultfd.22
-rw-r--r--man2/ioperm.24
-rw-r--r--man2/iopl.26
-rw-r--r--man2/ioprio_set.24
-rw-r--r--man2/ipc.24
-rw-r--r--man2/kcmp.22
-rw-r--r--man2/kexec_load.212
-rw-r--r--man2/keyctl.234
-rw-r--r--man2/kill.22
-rw-r--r--man2/landlock_add_rule.26
-rw-r--r--man2/landlock_create_ruleset.24
-rw-r--r--man2/landlock_restrict_self.22
-rw-r--r--man2/link.24
-rw-r--r--man2/listen.22
-rw-r--r--man2/listxattr.24
-rw-r--r--man2/llseek.22
-rw-r--r--man2/lookup_dcookie.22
-rw-r--r--man2/lseek.220
-rw-r--r--man2/madvise.26
-rw-r--r--man2/mbind.26
-rw-r--r--man2/membarrier.22
-rw-r--r--man2/memfd_create.222
-rw-r--r--man2/memfd_secret.28
-rw-r--r--man2/migrate_pages.22
-rw-r--r--man2/mincore.24
-rw-r--r--man2/mkdir.26
-rw-r--r--man2/mknod.26
-rw-r--r--man2/mlock.26
-rw-r--r--man2/mmap.212
-rw-r--r--man2/mmap2.24
-rw-r--r--man2/modify_ldt.22
-rw-r--r--man2/mount.230
-rw-r--r--man2/mount_setattr.2117
-rw-r--r--man2/move_pages.26
-rw-r--r--man2/mprotect.26
-rw-r--r--man2/mq_getsetattr.22
-rw-r--r--man2/mremap.230
-rw-r--r--man2/msgctl.22
-rw-r--r--man2/msgget.214
-rw-r--r--man2/msgop.236
-rw-r--r--man2/msync.24
-rw-r--r--man2/nanosleep.26
-rw-r--r--man2/nfsservctl.26
-rw-r--r--man2/nice.24
-rw-r--r--man2/open.252
-rw-r--r--man2/open_by_handle_at.220
-rw-r--r--man2/openat2.220
-rw-r--r--man2/outb.22
-rw-r--r--man2/pause.22
-rw-r--r--man2/pciconfig_read.22
-rw-r--r--man2/perf_event_open.2231
-rw-r--r--man2/perfmonctl.26
-rw-r--r--man2/personality.22
-rw-r--r--man2/pidfd_getfd.28
-rw-r--r--man2/pidfd_open.220
-rw-r--r--man2/pidfd_send_signal.220
-rw-r--r--man2/pipe.28
-rw-r--r--man2/pivot_root.224
-rw-r--r--man2/pkey_alloc.22
-rw-r--r--man2/poll.228
-rw-r--r--man2/posix_fadvise.22
-rw-r--r--man2/prctl.286
-rw-r--r--man2/pread.22
-rw-r--r--man2/process_madvise.22
-rw-r--r--man2/process_vm_readv.24
-rw-r--r--man2/ptrace.234
-rw-r--r--man2/query_module.22
-rw-r--r--man2/quotactl.212
-rw-r--r--man2/read.22
-rw-r--r--man2/readahead.22
-rw-r--r--man2/readdir.24
-rw-r--r--man2/readlink.214
-rw-r--r--man2/readv.24
-rw-r--r--man2/reboot.212
-rw-r--r--man2/recv.22
-rw-r--r--man2/recvmmsg.22
-rw-r--r--man2/remap_file_pages.22
-rw-r--r--man2/removexattr.22
-rw-r--r--man2/rename.216
-rw-r--r--man2/request_key.242
-rw-r--r--man2/restart_syscall.24
-rw-r--r--man2/rmdir.22
-rw-r--r--man2/rt_sigqueueinfo.26
-rw-r--r--man2/s390_guarded_storage.22
-rw-r--r--man2/s390_pci_mmio_write.22
-rw-r--r--man2/s390_runtime_instr.22
-rw-r--r--man2/s390_sthyi.22
-rw-r--r--man2/sched_get_priority_max.22
-rw-r--r--man2/sched_rr_get_interval.22
-rw-r--r--man2/sched_setaffinity.24
-rw-r--r--man2/sched_setattr.24
-rw-r--r--man2/sched_setparam.22
-rw-r--r--man2/sched_setscheduler.22
-rw-r--r--man2/sched_yield.22
-rw-r--r--man2/seccomp.282
-rw-r--r--man2/seccomp_unotify.298
-rw-r--r--man2/select.222
-rw-r--r--man2/select_tut.24
-rw-r--r--man2/semctl.22
-rw-r--r--man2/semget.220
-rw-r--r--man2/semop.220
-rw-r--r--man2/send.22
-rw-r--r--man2/sendfile.22
-rw-r--r--man2/sendmmsg.22
-rw-r--r--man2/set_mempolicy.24
-rw-r--r--man2/set_thread_area.22
-rw-r--r--man2/set_tid_address.22
-rw-r--r--man2/seteuid.24
-rw-r--r--man2/setfsgid.22
-rw-r--r--man2/setfsuid.22
-rw-r--r--man2/setgid.22
-rw-r--r--man2/setns.26
-rw-r--r--man2/setpgid.24
-rw-r--r--man2/setresuid.22
-rw-r--r--man2/setreuid.24
-rw-r--r--man2/setsid.22
-rw-r--r--man2/setuid.22
-rw-r--r--man2/setup.22
-rw-r--r--man2/setxattr.22
-rw-r--r--man2/sgetmask.22
-rw-r--r--man2/shmctl.22
-rw-r--r--man2/shmget.224
-rw-r--r--man2/shmop.224
-rw-r--r--man2/shutdown.22
-rw-r--r--man2/sigaction.232
-rw-r--r--man2/sigaltstack.24
-rw-r--r--man2/signal.28
-rw-r--r--man2/signalfd.210
-rw-r--r--man2/sigpending.22
-rw-r--r--man2/sigprocmask.22
-rw-r--r--man2/sigreturn.26
-rw-r--r--man2/sigsuspend.22
-rw-r--r--man2/sigwaitinfo.22
-rw-r--r--man2/socket.26
-rw-r--r--man2/socketcall.24
-rw-r--r--man2/socketpair.22
-rw-r--r--man2/splice.28
-rw-r--r--man2/spu_create.24
-rw-r--r--man2/spu_run.26
-rw-r--r--man2/stat.28
-rw-r--r--man2/statfs.22
-rw-r--r--man2/statx.26
-rw-r--r--man2/stime.24
-rw-r--r--man2/subpage_prot.22
-rw-r--r--man2/swapon.22
-rw-r--r--man2/symlink.26
-rw-r--r--man2/sync.24
-rw-r--r--man2/sync_file_range.22
-rw-r--r--man2/syscall.222
-rw-r--r--man2/syscalls.260
-rw-r--r--man2/sysctl.22
-rw-r--r--man2/sysfs.22
-rw-r--r--man2/sysinfo.22
-rw-r--r--man2/syslog.24
-rw-r--r--man2/tee.22
-rw-r--r--man2/time.24
-rw-r--r--man2/timer_create.210
-rw-r--r--man2/timer_delete.22
-rw-r--r--man2/timer_getoverrun.22
-rw-r--r--man2/timer_settime.22
-rw-r--r--man2/timerfd_create.212
-rw-r--r--man2/times.249
-rw-r--r--man2/tkill.22
-rw-r--r--man2/truncate.28
-rw-r--r--man2/umask.24
-rw-r--r--man2/umount.22
-rw-r--r--man2/uname.26
-rw-r--r--man2/unimplemented.22
-rw-r--r--man2/unlink.24
-rw-r--r--man2/unshare.218
-rw-r--r--man2/uselib.22
-rw-r--r--man2/userfaultfd.28
-rw-r--r--man2/ustat.24
-rw-r--r--man2/utime.22
-rw-r--r--man2/utimensat.220
-rw-r--r--man2/vfork.210
-rw-r--r--man2/vhangup.22
-rw-r--r--man2/vm86.22
-rw-r--r--man2/vmsplice.22
-rw-r--r--man2/wait.26
-rw-r--r--man2/wait4.26
-rw-r--r--man2/write.22
-rw-r--r--man2type/open_how.2type4
-rw-r--r--man3/CPU_SET.32
-rw-r--r--man3/INFINITY.32
-rw-r--r--man3/MAX.32
-rw-r--r--man3/MB_CUR_MAX.32
-rw-r--r--man3/MB_LEN_MAX.32
-rw-r--r--man3/_Generic.391
-rw-r--r--man3/__ppc_get_timebase.34
-rw-r--r--man3/__ppc_set_ppr_med.32
-rw-r--r--man3/__ppc_yield.32
-rw-r--r--man3/__setfpucw.38
-rw-r--r--man3/a64l.312
-rw-r--r--man3/abort.34
-rw-r--r--man3/abs.315
-rw-r--r--man3/acos.36
-rw-r--r--man3/acosh.36
-rw-r--r--man3/addseverity.34
-rw-r--r--man3/adjtime.34
-rw-r--r--man3/aio_cancel.32
-rw-r--r--man3/aio_error.32
-rw-r--r--man3/aio_fsync.32
-rw-r--r--man3/aio_init.32
-rw-r--r--man3/aio_read.34
-rw-r--r--man3/aio_return.32
-rw-r--r--man3/aio_suspend.38
-rw-r--r--man3/aio_write.34
-rw-r--r--man3/alloca.32
-rw-r--r--man3/arc4random.3104
-rw-r--r--man3/arc4random_buf.31
-rw-r--r--man3/arc4random_uniform.31
-rw-r--r--man3/argz_add.310
-rw-r--r--man3/asin.36
-rw-r--r--man3/asinh.36
-rw-r--r--man3/asprintf.34
-rw-r--r--man3/assert.313
-rw-r--r--man3/assert_perror.32
-rw-r--r--man3/atan.36
-rw-r--r--man3/atan2.36
-rw-r--r--man3/atanh.36
-rw-r--r--man3/atexit.36
-rw-r--r--man3/atof.34
-rw-r--r--man3/atoi.310
-rw-r--r--man3/backtrace.312
-rw-r--r--man3/basename.310
-rw-r--r--man3/bcmp.362
-rw-r--r--man3/bcopy.32
-rw-r--r--man3/bindresvport.34
-rw-r--r--man3/bsd_signal.34
-rw-r--r--man3/bsearch.36
-rw-r--r--man3/bstring.312
-rw-r--r--man3/bswap.32
-rw-r--r--man3/btowc.32
-rw-r--r--man3/btree.32
-rw-r--r--man3/byteorder.32
-rw-r--r--man3/bzero.38
-rw-r--r--man3/cabs.32
-rw-r--r--man3/cacos.32
-rw-r--r--man3/cacosh.32
-rw-r--r--man3/canonicalize_file_name.32
-rw-r--r--man3/carg.32
-rw-r--r--man3/casin.32
-rw-r--r--man3/casinh.32
-rw-r--r--man3/catan.32
-rw-r--r--man3/catanh.32
-rw-r--r--man3/catgets.34
-rw-r--r--man3/catopen.34
-rw-r--r--man3/cbrt.36
-rw-r--r--man3/ccos.32
-rw-r--r--man3/ccosh.32
-rw-r--r--man3/ceil.36
-rw-r--r--man3/cexp.32
-rw-r--r--man3/cexp2.32
-rw-r--r--man3/cfree.34
-rw-r--r--man3/cimag.32
-rw-r--r--man3/circleq.32
-rw-r--r--man3/clearenv.38
-rw-r--r--man3/clock.34
-rw-r--r--man3/clock_getcpuclockid.32
-rw-r--r--man3/clog.32
-rw-r--r--man3/clog10.32
-rw-r--r--man3/clog2.32
-rw-r--r--man3/closedir.32
-rw-r--r--man3/cmsg.32
-rw-r--r--man3/confstr.34
-rw-r--r--man3/conj.32
-rw-r--r--man3/copysign.34
-rw-r--r--man3/cos.34
-rw-r--r--man3/cosh.34
-rw-r--r--man3/cpow.32
-rw-r--r--man3/cproj.32
-rw-r--r--man3/creal.32
-rw-r--r--man3/crypt.34
-rw-r--r--man3/csin.32
-rw-r--r--man3/csinh.32
-rw-r--r--man3/csqrt.32
-rw-r--r--man3/ctan.32
-rw-r--r--man3/ctanh.32
-rw-r--r--man3/ctermid.32
-rw-r--r--man3/ctime.36
-rw-r--r--man3/daemon.32
-rw-r--r--man3/dbopen.32
-rw-r--r--man3/des_crypt.32
-rw-r--r--man3/difftime.34
-rw-r--r--man3/dirfd.34
-rw-r--r--man3/div.34
-rw-r--r--man3/dl_iterate_phdr.36
-rw-r--r--man3/dladdr.32
-rw-r--r--man3/dlerror.32
-rw-r--r--man3/dlinfo.38
-rw-r--r--man3/dlopen.322
-rw-r--r--man3/dlsym.32
-rw-r--r--man3/drand48.312
-rw-r--r--man3/drand48_r.36
-rw-r--r--man3/duplocale.38
-rw-r--r--man3/dysize.34
-rw-r--r--man3/ecvt.38
-rw-r--r--man3/ecvt_r.36
-rw-r--r--man3/encrypt.310
-rw-r--r--man3/end.32
-rw-r--r--man3/endian.32
-rw-r--r--man3/envz_add.310
-rw-r--r--man3/erf.36
-rw-r--r--man3/erfc.36
-rw-r--r--man3/err.32
-rw-r--r--man3/errno.32
-rw-r--r--man3/error.32
-rw-r--r--man3/ether_aton.34
-rw-r--r--man3/euidaccess.32
-rw-r--r--man3/exec.32
-rw-r--r--man3/exit.310
-rw-r--r--man3/exp.36
-rw-r--r--man3/exp10.32
-rw-r--r--man3/exp2.32
-rw-r--r--man3/expm1.310
-rw-r--r--man3/fabs.36
-rw-r--r--man3/fclose.34
-rw-r--r--man3/fcloseall.32
-rw-r--r--man3/fdim.32
-rw-r--r--man3/fenv.34
-rw-r--r--man3/ferror.34
-rw-r--r--man3/fexecve.32
-rw-r--r--man3/fflush.34
-rw-r--r--man3/ffs.36
-rw-r--r--man3/fgetc.36
-rw-r--r--man3/fgetgrent.34
-rw-r--r--man3/fgetpwent.34
-rw-r--r--man3/fgetwc.32
-rw-r--r--man3/fgetws.34
-rw-r--r--man3/fileno.32
-rw-r--r--man3/finite.322
-rw-r--r--man3/flockfile.36
-rw-r--r--man3/floor.36
-rw-r--r--man3/fma.32
-rw-r--r--man3/fmax.32
-rw-r--r--man3/fmemopen.322
-rw-r--r--man3/fmin.32
-rw-r--r--man3/fmod.36
-rw-r--r--man3/fmtmsg.34
-rw-r--r--man3/fnmatch.32
-rw-r--r--man3/fopen.314
-rw-r--r--man3/fopencookie.312
-rw-r--r--man3/fpathconf.310
-rw-r--r--man3/fpclassify.36
-rw-r--r--man3/fpurge.32
-rw-r--r--man3/fputwc.32
-rw-r--r--man3/fputws.34
-rw-r--r--man3/fread.34
-rw-r--r--man3/frexp.312
-rw-r--r--man3/fseek.34
-rw-r--r--man3/fseeko.32
-rw-r--r--man3/ftime.32
-rw-r--r--man3/ftok.32
-rw-r--r--man3/fts.32
-rw-r--r--man3/ftw.312
-rw-r--r--man3/futimes.34
-rw-r--r--man3/fwide.34
-rw-r--r--man3/gamma.38
-rw-r--r--man3/gcvt.38
-rw-r--r--man3/get_nprocs.32
-rw-r--r--man3/get_phys_pages.32
-rw-r--r--man3/getaddrinfo.312
-rw-r--r--man3/getaddrinfo_a.318
-rw-r--r--man3/getauxval.32
-rw-r--r--man3/getcontext.32
-rw-r--r--man3/getcwd.36
-rw-r--r--man3/getdate.312
-rw-r--r--man3/getdirentries.34
-rw-r--r--man3/getdtablesize.34
-rw-r--r--man3/getentropy.32
-rw-r--r--man3/getenv.310
-rw-r--r--man3/getfsent.32
-rw-r--r--man3/getgrent.310
-rw-r--r--man3/getgrent_r.34
-rw-r--r--man3/getgrnam.34
-rw-r--r--man3/getgrouplist.34
-rw-r--r--man3/gethostbyname.312
-rw-r--r--man3/gethostid.32
-rw-r--r--man3/getifaddrs.34
-rw-r--r--man3/getipnodebyname.32
-rw-r--r--man3/getline.34
-rw-r--r--man3/getloadavg.32
-rw-r--r--man3/getlogin.34
-rw-r--r--man3/getmntent.34
-rw-r--r--man3/getnameinfo.312
-rw-r--r--man3/getnetent.32
-rw-r--r--man3/getnetent_r.34
-rw-r--r--man3/getopt.376
-rw-r--r--man3/getpass.38
-rw-r--r--man3/getprotoent.32
-rw-r--r--man3/getprotoent_r.34
-rw-r--r--man3/getpt.32
-rw-r--r--man3/getpw.32
-rw-r--r--man3/getpwent.36
-rw-r--r--man3/getpwent_r.36
-rw-r--r--man3/getpwnam.34
-rw-r--r--man3/getrpcent.32
-rw-r--r--man3/getrpcent_r.34
-rw-r--r--man3/getrpcport.32
-rw-r--r--man3/gets.36
-rw-r--r--man3/getservent.32
-rw-r--r--man3/getservent_r.34
-rw-r--r--man3/getspnam.34
-rw-r--r--man3/getsubopt.314
-rw-r--r--man3/getttyent.32
-rw-r--r--man3/getusershell.32
-rw-r--r--man3/getutent.38
-rw-r--r--man3/getutmp.32
-rw-r--r--man3/getw.36
-rw-r--r--man3/getwchar.32
-rw-r--r--man3/glob.310
-rw-r--r--man3/gnu_get_libc_version.32
-rw-r--r--man3/grantpt.34
-rw-r--r--man3/group_member.32
-rw-r--r--man3/gsignal.36
-rw-r--r--man3/hash.32
-rw-r--r--man3/hsearch.32
-rw-r--r--man3/hypot.36
-rw-r--r--man3/iconv.310
-rw-r--r--man3/iconv_close.32
-rw-r--r--man3/iconv_open.32
-rw-r--r--man3/if_nameindex.32
-rw-r--r--man3/if_nametoindex.32
-rw-r--r--man3/ilogb.310
-rw-r--r--man3/index.363
-rw-r--r--man3/inet.32
-rw-r--r--man3/inet_net_pton.316
-rw-r--r--man3/inet_ntop.34
-rw-r--r--man3/inet_pton.38
-rw-r--r--man3/initgroups.34
-rw-r--r--man3/insque.38
-rw-r--r--man3/intro.354
-rw-r--r--man3/isalpha.332
-rw-r--r--man3/isatty.32
-rw-r--r--man3/isfdtype.32
-rw-r--r--man3/isgreater.32
-rw-r--r--man3/iswalnum.36
-rw-r--r--man3/iswalpha.34
-rw-r--r--man3/iswblank.34
-rw-r--r--man3/iswcntrl.32
-rw-r--r--man3/iswctype.32
-rw-r--r--man3/iswdigit.34
-rw-r--r--man3/iswgraph.32
-rw-r--r--man3/iswlower.34
-rw-r--r--man3/iswprint.32
-rw-r--r--man3/iswpunct.32
-rw-r--r--man3/iswspace.34
-rw-r--r--man3/iswupper.34
-rw-r--r--man3/iswxdigit.36
-rw-r--r--man3/j0.36
-rw-r--r--man3/key_setsecret.32
-rw-r--r--man3/killpg.34
-rw-r--r--man3/ldexp.38
-rw-r--r--man3/lgamma.310
-rw-r--r--man3/lio_listio.32
-rw-r--r--man3/list.32
-rw-r--r--man3/localeconv.34
-rw-r--r--man3/lockf.36
-rw-r--r--man3/log.36
-rw-r--r--man3/log10.36
-rw-r--r--man3/log1p.36
-rw-r--r--man3/log2.32
-rw-r--r--man3/logb.36
-rw-r--r--man3/login.32
-rw-r--r--man3/lrint.32
-rw-r--r--man3/lround.32
-rw-r--r--man3/lsearch.32
-rw-r--r--man3/lseek64.32
-rw-r--r--man3/makecontext.32
-rw-r--r--man3/makedev.32
-rw-r--r--man3/mallinfo.34
-rw-r--r--man3/malloc.36
-rw-r--r--man3/malloc_get_state.32
-rw-r--r--man3/malloc_hook.32
-rw-r--r--man3/malloc_info.38
-rw-r--r--man3/malloc_stats.32
-rw-r--r--man3/malloc_trim.32
-rw-r--r--man3/malloc_usable_size.32
-rw-r--r--man3/mallopt.36
-rw-r--r--man3/matherr.34
-rw-r--r--man3/mblen.32
-rw-r--r--man3/mbrlen.32
-rw-r--r--man3/mbrtowc.310
-rw-r--r--man3/mbsinit.32
-rw-r--r--man3/mbsnrtowcs.312
-rw-r--r--man3/mbsrtowcs.312
-rw-r--r--man3/mbstowcs.316
-rw-r--r--man3/mbtowc.34
-rw-r--r--man3/mcheck.32
-rw-r--r--man3/memccpy.32
-rw-r--r--man3/memchr.337
-rw-r--r--man3/memcmp.35
-rw-r--r--man3/memcpy.34
-rw-r--r--man3/memfrob.32
-rw-r--r--man3/memmem.32
-rw-r--r--man3/memmove.34
-rw-r--r--man3/mempcpy.32
-rw-r--r--man3/memset.34
-rw-r--r--man3/mkdtemp.34
-rw-r--r--man3/mkfifo.34
-rw-r--r--man3/mkstemp.314
-rw-r--r--man3/mktemp.36
-rw-r--r--man3/modf.36
-rw-r--r--man3/mpool.32
-rw-r--r--man3/mq_close.32
-rw-r--r--man3/mq_getattr.32
-rw-r--r--man3/mq_notify.32
-rw-r--r--man3/mq_open.32
-rw-r--r--man3/mq_receive.32
-rw-r--r--man3/mq_send.32
-rw-r--r--man3/mq_unlink.32
-rw-r--r--man3/mtrace.32
-rw-r--r--man3/nan.32
-rw-r--r--man3/netlink.34
-rw-r--r--man3/newlocale.312
-rw-r--r--man3/nextafter.36
-rw-r--r--man3/nextup.32
-rw-r--r--man3/nl_langinfo.312
-rw-r--r--man3/ntp_gettime.32
-rw-r--r--man3/offsetof.34
-rw-r--r--man3/on_exit.34
-rw-r--r--man3/open_memstream.32
-rw-r--r--man3/opendir.32
-rw-r--r--man3/openpty.32
-rw-r--r--man3/perror.38
-rw-r--r--man3/popen.310
-rw-r--r--man3/posix_fallocate.310
-rw-r--r--man3/posix_madvise.32
-rw-r--r--man3/posix_memalign.38
-rw-r--r--man3/posix_openpt.34
-rw-r--r--man3/posix_spawn.318
-rw-r--r--man3/pow.36
-rw-r--r--man3/pow10.32
-rw-r--r--man3/powerof2.346
-rw-r--r--man3/printf.352
-rw-r--r--man3/profil.32
-rw-r--r--man3/program_invocation_name.32
-rw-r--r--man3/psignal.38
-rw-r--r--man3/pthread_atfork.38
-rw-r--r--man3/pthread_attr_init.32
-rw-r--r--man3/pthread_attr_setaffinity_np.32
-rw-r--r--man3/pthread_attr_setdetachstate.32
-rw-r--r--man3/pthread_attr_setguardsize.32
-rw-r--r--man3/pthread_attr_setinheritsched.32
-rw-r--r--man3/pthread_attr_setschedparam.32
-rw-r--r--man3/pthread_attr_setschedpolicy.32
-rw-r--r--man3/pthread_attr_setscope.32
-rw-r--r--man3/pthread_attr_setsigmask_np.310
-rw-r--r--man3/pthread_attr_setstack.32
-rw-r--r--man3/pthread_attr_setstackaddr.32
-rw-r--r--man3/pthread_attr_setstacksize.32
-rw-r--r--man3/pthread_cancel.36
-rw-r--r--man3/pthread_cleanup_push.312
-rw-r--r--man3/pthread_cleanup_push_defer_np.32
-rw-r--r--man3/pthread_create.316
-rw-r--r--man3/pthread_detach.32
-rw-r--r--man3/pthread_equal.32
-rw-r--r--man3/pthread_exit.32
-rw-r--r--man3/pthread_getattr_default_np.310
-rw-r--r--man3/pthread_getattr_np.314
-rw-r--r--man3/pthread_getcpuclockid.32
-rw-r--r--man3/pthread_join.32
-rw-r--r--man3/pthread_kill.32
-rw-r--r--man3/pthread_kill_other_threads_np.32
-rw-r--r--man3/pthread_mutex_consistent.32
-rw-r--r--man3/pthread_mutexattr_getpshared.32
-rw-r--r--man3/pthread_mutexattr_init.32
-rw-r--r--man3/pthread_mutexattr_setrobust.32
-rw-r--r--man3/pthread_rwlockattr_setkind_np.32
-rw-r--r--man3/pthread_self.32
-rw-r--r--man3/pthread_setaffinity_np.32
-rw-r--r--man3/pthread_setcancelstate.32
-rw-r--r--man3/pthread_setconcurrency.32
-rw-r--r--man3/pthread_setname_np.38
-rw-r--r--man3/pthread_setschedparam.336
-rw-r--r--man3/pthread_setschedprio.32
-rw-r--r--man3/pthread_sigmask.32
-rw-r--r--man3/pthread_sigqueue.32
-rw-r--r--man3/pthread_spin_init.32
-rw-r--r--man3/pthread_spin_lock.32
-rw-r--r--man3/pthread_testcancel.32
-rw-r--r--man3/pthread_tryjoin_np.32
-rw-r--r--man3/pthread_yield.32
-rw-r--r--man3/ptsname.34
-rw-r--r--man3/putenv.38
-rw-r--r--man3/putgrent.32
-rw-r--r--man3/putpwent.34
-rw-r--r--man3/puts.36
-rw-r--r--man3/putwchar.32
-rw-r--r--man3/qecvt.32
-rw-r--r--man3/qsort.34
-rw-r--r--man3/raise.34
-rw-r--r--man3/rand.317
-rw-r--r--man3/random.314
-rw-r--r--man3/random_r.36
-rw-r--r--man3/rcmd.34
-rw-r--r--man3/re_comp.32
-rw-r--r--man3/readdir.34
-rw-r--r--man3/readdir_r.312
-rw-r--r--man3/realpath.38
-rw-r--r--man3/recno.32
-rw-r--r--man3/regex.312
-rw-r--r--man3/register_printf_modifier.31
-rw-r--r--man3/register_printf_specifier.31
-rw-r--r--man3/register_printf_type.31
-rw-r--r--man3/remainder.38
-rw-r--r--man3/remove.34
-rw-r--r--man3/remquo.32
-rw-r--r--man3/resolver.34
-rw-r--r--man3/rewinddir.32
-rw-r--r--man3/rexec.32
-rw-r--r--man3/rint.36
-rw-r--r--man3/round.32
-rw-r--r--man3/roundup.356
-rw-r--r--man3/rpc.310
-rw-r--r--man3/rpmatch.310
-rw-r--r--man3/rtime.32
-rw-r--r--man3/rtnetlink.32
-rw-r--r--man3/scalb.36
-rw-r--r--man3/scalbln.34
-rw-r--r--man3/scandir.34
-rw-r--r--man3/scanf.3690
-rw-r--r--man3/sched_getcpu.32
-rw-r--r--man3/seekdir.36
-rw-r--r--man3/sem_close.32
-rw-r--r--man3/sem_destroy.32
-rw-r--r--man3/sem_getvalue.32
-rw-r--r--man3/sem_init.32
-rw-r--r--man3/sem_open.32
-rw-r--r--man3/sem_post.32
-rw-r--r--man3/sem_unlink.32
-rw-r--r--man3/sem_wait.32
-rw-r--r--man3/setaliasent.32
-rw-r--r--man3/setbuf.36
-rw-r--r--man3/setenv.310
-rw-r--r--man3/setjmp.314
-rw-r--r--man3/setlocale.312
-rw-r--r--man3/setlogmask.32
-rw-r--r--man3/setnetgrent.34
-rw-r--r--man3/shm_open.316
-rw-r--r--man3/siginterrupt.34
-rw-r--r--man3/signbit.32
-rw-r--r--man3/significand.34
-rw-r--r--man3/sigpause.310
-rw-r--r--man3/sigqueue.32
-rw-r--r--man3/sigset.32
-rw-r--r--man3/sigsetops.34
-rw-r--r--man3/sigvec.34
-rw-r--r--man3/sigwait.38
-rw-r--r--man3/sin.36
-rw-r--r--man3/sincos.32
-rw-r--r--man3/sinh.36
-rw-r--r--man3/sleep.32
-rw-r--r--man3/slist.32
-rw-r--r--man3/sockatmark.32
-rw-r--r--man3/sqrt.36
-rw-r--r--man3/sscanf.3750
-rw-r--r--man3/stailq.34
-rw-r--r--man3/static_assert.33
-rw-r--r--man3/statvfs.32
-rw-r--r--man3/stdarg.320
-rw-r--r--man3/stdin.34
-rw-r--r--man3/stdio.34
-rw-r--r--man3/stdio_ext.32
-rw-r--r--man3/stpncpy.36
-rw-r--r--man3/strcasecmp.33
-rw-r--r--man3/strchr.38
-rw-r--r--man3/strcmp.317
-rw-r--r--man3/strcoll.35
-rw-r--r--man3/strcpy.36
-rw-r--r--man3/strdup.36
-rw-r--r--man3/strerror.36
-rw-r--r--man3/strfmon.312
-rw-r--r--man3/strfromd.36
-rw-r--r--man3/strfry.32
-rw-r--r--man3/strftime.338
-rw-r--r--man3/string.320
-rw-r--r--man3/strlen.36
-rw-r--r--man3/strncat.38
-rw-r--r--man3/strnlen.36
-rw-r--r--man3/strpbrk.36
-rw-r--r--man3/strptime.352
-rw-r--r--man3/strsep.318
-rw-r--r--man3/strsignal.34
-rw-r--r--man3/strspn.36
-rw-r--r--man3/strstr.38
-rw-r--r--man3/strtod.313
-rw-r--r--man3/strtoimax.32
-rw-r--r--man3/strtok.320
-rw-r--r--man3/strtol.326
-rw-r--r--man3/strtoul.320
-rw-r--r--man3/strverscmp.32
-rw-r--r--man3/strxfrm.37
-rw-r--r--man3/swab.32
-rw-r--r--man3/sysconf.312
-rw-r--r--man3/syslog.34
-rw-r--r--man3/system.314
-rw-r--r--man3/sysv_signal.32
-rw-r--r--man3/tailq.32
-rw-r--r--man3/tan.36
-rw-r--r--man3/tanh.36
-rw-r--r--man3/tcgetpgrp.32
-rw-r--r--man3/tcgetsid.32
-rw-r--r--man3/telldir.36
-rw-r--r--man3/tempnam.34
-rw-r--r--man3/termios.332
-rw-r--r--man3/tgamma.34
-rw-r--r--man3/timegm.34
-rw-r--r--man3/timeradd.34
-rw-r--r--man3/tmpfile.36
-rw-r--r--man3/tmpnam.34
-rw-r--r--man3/toascii.36
-rw-r--r--man3/toupper.34
-rw-r--r--man3/towctrans.32
-rw-r--r--man3/towlower.32
-rw-r--r--man3/towupper.32
-rw-r--r--man3/trunc.32
-rw-r--r--man3/tsearch.39
-rw-r--r--man3/ttyname.32
-rw-r--r--man3/ttyslot.318
-rw-r--r--man3/tzset.38
-rw-r--r--man3/ualarm.36
-rw-r--r--man3/ulimit.32
-rw-r--r--man3/undocumented.32
-rw-r--r--man3/ungetwc.32
-rw-r--r--man3/unlocked_stdio.312
-rw-r--r--man3/unlockpt.34
-rw-r--r--man3/updwtmp.32
-rw-r--r--man3/uselocale.32
-rw-r--r--man3/usleep.36
-rw-r--r--man3/vsscanf.32
-rw-r--r--man3/wcpcpy.34
-rw-r--r--man3/wcpncpy.38
-rw-r--r--man3/wcrtomb.310
-rw-r--r--man3/wcscasecmp.32
-rw-r--r--man3/wcscat.34
-rw-r--r--man3/wcschr.32
-rw-r--r--man3/wcscmp.32
-rw-r--r--man3/wcscpy.34
-rw-r--r--man3/wcscspn.32
-rw-r--r--man3/wcsdup.32
-rw-r--r--man3/wcslen.34
-rw-r--r--man3/wcsncasecmp.32
-rw-r--r--man3/wcsncat.34
-rw-r--r--man3/wcsncmp.34
-rw-r--r--man3/wcsncpy.34
-rw-r--r--man3/wcsnlen.34
-rw-r--r--man3/wcsnrtombs.312
-rw-r--r--man3/wcspbrk.32
-rw-r--r--man3/wcsrchr.32
-rw-r--r--man3/wcsrtombs.312
-rw-r--r--man3/wcsspn.32
-rw-r--r--man3/wcsstr.34
-rw-r--r--man3/wcstoimax.32
-rw-r--r--man3/wcstok.34
-rw-r--r--man3/wcstombs.312
-rw-r--r--man3/wcswidth.32
-rw-r--r--man3/wctob.32
-rw-r--r--man3/wctomb.32
-rw-r--r--man3/wctrans.32
-rw-r--r--man3/wctype.32
-rw-r--r--man3/wcwidth.34
-rw-r--r--man3/wmemchr.32
-rw-r--r--man3/wmemcmp.32
-rw-r--r--man3/wmemcpy.32
-rw-r--r--man3/wmemmove.32
-rw-r--r--man3/wmemset.32
-rw-r--r--man3/wordexp.34
-rw-r--r--man3/wprintf.312
-rw-r--r--man3/xcrypt.32
-rw-r--r--man3/xdr.32
-rw-r--r--man3/y0.36
-rw-r--r--man3const/EOF.3const4
-rw-r--r--man3const/EXIT_SUCCESS.3const2
-rw-r--r--man3const/NULL.3const4
-rw-r--r--man3const/PA_CHAR.3const1
-rw-r--r--man3const/PA_DOUBLE.3const1
-rw-r--r--man3const/PA_FLAG_LONG.3const1
-rw-r--r--man3const/PA_FLAG_LONG_DOUBLE.3const1
-rw-r--r--man3const/PA_FLAG_LONG_LONG.3const1
-rw-r--r--man3const/PA_FLAG_PTR.3const1
-rw-r--r--man3const/PA_FLAG_SHORT.3const1
-rw-r--r--man3const/PA_FLOAT.3const1
-rw-r--r--man3const/PA_INT.3const1
-rw-r--r--man3const/PA_LAST.3const1
-rw-r--r--man3const/PA_POINTER.3const1
-rw-r--r--man3const/PA_STRING.3const1
-rw-r--r--man3const/PA_WCHAR.3const1
-rw-r--r--man3const/PA_WSTRING.3const1
-rw-r--r--man3head/printf.h.3head581
-rw-r--r--man3head/sysexits.h.3head2
-rw-r--r--man3type/FILE.3type2
-rw-r--r--man3type/aiocb.3type2
-rw-r--r--man3type/blkcnt_t.3type2
-rw-r--r--man3type/blksize_t.3type2
-rw-r--r--man3type/cc_t.3type2
-rw-r--r--man3type/clock_t.3type2
-rw-r--r--man3type/clockid_t.3type2
-rw-r--r--man3type/dev_t.3type2
-rw-r--r--man3type/div_t.3type2
-rw-r--r--man3type/double_t.3type2
-rw-r--r--man3type/epoll_event.3type2
-rw-r--r--man3type/fenv_t.3type2
-rw-r--r--man3type/id_t.3type2
-rw-r--r--man3type/intN_t.3type4
-rw-r--r--man3type/intmax_t.3type2
-rw-r--r--man3type/intptr_t.3type2
-rw-r--r--man3type/iovec.3type2
-rw-r--r--man3type/itimerspec.3type2
-rw-r--r--man3type/lconv.3type24
-rw-r--r--man3type/mode_t.3type2
-rw-r--r--man3type/off_t.3type2
-rw-r--r--man3type/printf_arginfo_size_function.3type1
-rw-r--r--man3type/printf_function.3type1
-rw-r--r--man3type/printf_info.3type1
-rw-r--r--man3type/printf_va_arg_function.3type1
-rw-r--r--man3type/ptrdiff_t.3type2
-rw-r--r--man3type/regex_t.3type2
-rw-r--r--man3type/size_t.3type6
-rw-r--r--man3type/sockaddr.3type2
-rw-r--r--man3type/stat.3type8
-rw-r--r--man3type/time_t.3type2
-rw-r--r--man3type/timer_t.3type2
-rw-r--r--man3type/timespec.3type52
-rw-r--r--man3type/timeval.3type2
-rw-r--r--man3type/tm.3type4
-rw-r--r--man3type/va_list.3type2
-rw-r--r--man3type/void.3type2
-rw-r--r--man4/cciss.42
-rw-r--r--man4/console_codes.462
-rw-r--r--man4/cpuid.42
-rw-r--r--man4/dsp56k.44
-rw-r--r--man4/fd.42
-rw-r--r--man4/full.42
-rw-r--r--man4/fuse.46
-rw-r--r--man4/hd.44
-rw-r--r--man4/hpsa.42
-rw-r--r--man4/initrd.48
-rw-r--r--man4/intro.44
-rw-r--r--man4/lirc.48
-rw-r--r--man4/loop.48
-rw-r--r--man4/lp.46
-rw-r--r--man4/mem.42
-rw-r--r--man4/mouse.46
-rw-r--r--man4/msr.42
-rw-r--r--man4/null.44
-rw-r--r--man4/pts.42
-rw-r--r--man4/ram.42
-rw-r--r--man4/random.42
-rw-r--r--man4/rtc.48
-rw-r--r--man4/sd.412
-rw-r--r--man4/sk98lin.416
-rw-r--r--man4/smartpqi.42
-rw-r--r--man4/st.434
-rw-r--r--man4/tty.42
-rw-r--r--man4/ttyS.42
-rw-r--r--man4/vcs.48
-rw-r--r--man4/veth.44
-rw-r--r--man4/wavelan.46
-rw-r--r--man5/acct.52
-rw-r--r--man5/charmap.52
-rw-r--r--man5/core.554
-rw-r--r--man5/dir_colors.510
-rw-r--r--man5/elf.510
-rw-r--r--man5/filesystems.52
-rw-r--r--man5/ftpusers.52
-rw-r--r--man5/gai.conf.54
-rw-r--r--man5/group.52
-rw-r--r--man5/host.conf.514
-rw-r--r--man5/hosts.52
-rw-r--r--man5/hosts.equiv.54
-rw-r--r--man5/intro.52
-rw-r--r--man5/issue.52
-rw-r--r--man5/locale.536
-rw-r--r--man5/motd.52
-rw-r--r--man5/networks.52
-rw-r--r--man5/nologin.52
-rw-r--r--man5/nscd.conf.512
-rw-r--r--man5/nss.54
-rw-r--r--man5/nsswitch.conf.56
-rw-r--r--man5/passwd.512
-rw-r--r--man5/proc.5130
-rw-r--r--man5/protocols.52
-rw-r--r--man5/repertoiremap.52
-rw-r--r--man5/resolv.conf.56
-rw-r--r--man5/rpc.512
-rw-r--r--man5/securetty.52
-rw-r--r--man5/services.52
-rw-r--r--man5/shells.52
-rw-r--r--man5/slabinfo.510
-rw-r--r--man5/sysfs.52
-rw-r--r--man5/termcap.526
-rw-r--r--man5/tmpfs.58
-rw-r--r--man5/ttytype.55
-rw-r--r--man5/tzfile.58
-rw-r--r--man5/utmp.56
-rw-r--r--man6/intro.62
-rw-r--r--man7/address_families.712
-rw-r--r--man7/aio.74
-rw-r--r--man7/armscii-8.72
-rw-r--r--man7/arp.72
-rw-r--r--man7/ascii.738
-rw-r--r--man7/attributes.72
-rw-r--r--man7/boot.76
-rw-r--r--man7/bootparam.78
-rw-r--r--man7/bpf-helpers.7699
-rw-r--r--man7/capabilities.7272
-rw-r--r--man7/cgroup_namespaces.718
-rw-r--r--man7/cgroups.7102
-rw-r--r--man7/charsets.736
-rw-r--r--man7/complex.72
-rw-r--r--man7/cp1251.72
-rw-r--r--man7/cp1252.72
-rw-r--r--man7/cpuset.742
-rw-r--r--man7/credentials.720
-rw-r--r--man7/ddp.76
-rw-r--r--man7/environ.726
-rw-r--r--man7/epoll.738
-rw-r--r--man7/fanotify.734
-rw-r--r--man7/feature_test_macros.752
-rw-r--r--man7/fifo.74
-rw-r--r--man7/futex.72
-rw-r--r--man7/glob.748
-rw-r--r--man7/hier.72
-rw-r--r--man7/hostname.72
-rw-r--r--man7/icmp.72
-rw-r--r--man7/inode.74
-rw-r--r--man7/inotify.728
-rw-r--r--man7/intro.72
-rw-r--r--man7/ip.724
-rw-r--r--man7/ipc_namespaces.78
-rw-r--r--man7/ipv6.74
-rw-r--r--man7/iso_8859-1.72
-rw-r--r--man7/iso_8859-10.72
-rw-r--r--man7/iso_8859-11.72
-rw-r--r--man7/iso_8859-13.72
-rw-r--r--man7/iso_8859-14.72
-rw-r--r--man7/iso_8859-15.72
-rw-r--r--man7/iso_8859-16.72
-rw-r--r--man7/iso_8859-2.72
-rw-r--r--man7/iso_8859-3.72
-rw-r--r--man7/iso_8859-4.72
-rw-r--r--man7/iso_8859-5.72
-rw-r--r--man7/iso_8859-6.72
-rw-r--r--man7/iso_8859-7.72
-rw-r--r--man7/iso_8859-8.72
-rw-r--r--man7/iso_8859-9.72
-rw-r--r--man7/kernel_lockdown.734
-rw-r--r--man7/keyrings.716
-rw-r--r--man7/koi8-r.72
-rw-r--r--man7/koi8-u.72
-rw-r--r--man7/landlock.713
-rw-r--r--man7/libc.749
-rw-r--r--man7/locale.710
-rw-r--r--man7/mailaddr.74
-rw-r--r--man7/man-pages.783
-rw-r--r--man7/man.720
-rw-r--r--man7/math_error.72
-rw-r--r--man7/mount_namespaces.774
-rw-r--r--man7/mq_overview.716
-rw-r--r--man7/namespaces.742
-rw-r--r--man7/netdevice.72
-rw-r--r--man7/netlink.74
-rw-r--r--man7/network_namespaces.72
-rw-r--r--man7/nptl.712
-rw-r--r--man7/numa.74
-rw-r--r--man7/operator.78
-rw-r--r--man7/packet.720
-rw-r--r--man7/path_resolution.738
-rw-r--r--man7/persistent-keyring.76
-rw-r--r--man7/pid_namespaces.76
-rw-r--r--man7/pipe.72
-rw-r--r--man7/pkeys.72
-rw-r--r--man7/posixoptions.72
-rw-r--r--man7/process-keyring.72
-rw-r--r--man7/pthreads.798
-rw-r--r--man7/pty.72
-rw-r--r--man7/queue.748
-rw-r--r--man7/random.78
-rw-r--r--man7/raw.72
-rw-r--r--man7/regex.776
-rw-r--r--man7/rtld-audit.78
-rw-r--r--man7/rtnetlink.72
-rw-r--r--man7/sched.746
-rw-r--r--man7/sem_overview.72
-rw-r--r--man7/session-keyring.73
-rw-r--r--man7/shm_overview.72
-rw-r--r--man7/sigevent.72
-rw-r--r--man7/signal-safety.714
-rw-r--r--man7/signal.784
-rw-r--r--man7/sock_diag.76
-rw-r--r--man7/socket.710
-rw-r--r--man7/spufs.74
-rw-r--r--man7/standards.72
-rw-r--r--man7/string_copying.7129
-rw-r--r--man7/suffixes.74
-rw-r--r--man7/symlink.730
-rw-r--r--man7/system_data_types.78
-rw-r--r--man7/sysvipc.72
-rw-r--r--man7/tcp.712
-rw-r--r--man7/termio.72
-rw-r--r--man7/thread-keyring.72
-rw-r--r--man7/time.714
-rw-r--r--man7/time_namespaces.714
-rw-r--r--man7/udp.72
-rw-r--r--man7/udplite.710
-rw-r--r--man7/unicode.722
-rw-r--r--man7/units.777
-rw-r--r--man7/unix.714
-rw-r--r--man7/uri.716
-rw-r--r--man7/user-keyring.76
-rw-r--r--man7/user-session-keyring.76
-rw-r--r--man7/user_namespaces.7168
-rw-r--r--man7/utf-8.714
-rw-r--r--man7/uts_namespaces.72
-rw-r--r--man7/vdso.736
-rw-r--r--man7/vsock.72
-rw-r--r--man7/x25.78
-rw-r--r--man7/xattr.74
-rw-r--r--man8/iconvconfig.82
-rw-r--r--man8/intro.82
-rw-r--r--man8/ld.so.824
-rw-r--r--man8/ldconfig.8163
-rw-r--r--man8/nscd.82
-rw-r--r--man8/sln.82
-rw-r--r--man8/tzselect.82
-rw-r--r--man8/zdump.88
-rw-r--r--man8/zic.810
-rw-r--r--scripts/LinuxManBook/BuildLinuxMan.pl249
-rw-r--r--scripts/LinuxManBook/LMBfront.t38
-rw-r--r--scripts/LinuxManBook/an-ext.tmac282
-rw-r--r--scripts/LinuxManBook/an.tmac1427
-rw-r--r--scripts/LinuxManBook/andoc.tmac114
-rw-r--r--scripts/LinuxManBook/anmark.tmac22
-rw-r--r--scripts/LinuxManBook/devpdf/TINOR3518
-rw-r--r--scripts/LinuxManBook/devpdf/Tinos.pfa7858
-rw-r--r--scripts/LinuxManBook/devpdf/download1
-rw-r--r--scripts/LinuxManBook/en.tmac77
-rw-r--r--scripts/LinuxManBook/gropdf3710
-rw-r--r--scripts/LinuxManBook/hyphen.en5018
-rw-r--r--scripts/LinuxManBook/hyphenex.en115
-rw-r--r--scripts/LinuxManBook/troffrc71
-rw-r--r--scripts/LinuxManBook/utp.mac742
1158 files changed, 30537 insertions, 5816 deletions
diff --git a/.gitignore b/.gitignore
index cf23b2883..904829dc0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,5 @@
# Default $builddir:
/tmp/
+
+# checkpatch spurious output. I hope we fix that some day.
+/.checkpatch-camelcase.git.
diff --git a/Changes b/Changes
index 2c35df4de..001b58a27 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,6 @@
-==================== Changes in man-pages-6.02 ====================
+==================== Changes in man-pages-6.03 ====================
-Released: 2022-12-22, Aldaya
+Released: 2023-02-12, Xulilla
Contributors
@@ -10,59 +10,48 @@ The following people contributed patches/fixes, reports, notes,
ideas, and discussions that have been incorporated in changes in
this release:
-
-"G. Branden Robinson" <g.branden.robinson@gmail.com>
-1092615079 <1092615079@qq.com>
-Aaron Schrab <aaron@schrab.com>
-Agostino Sarubbo <ago@gentoo.org>
+Aaron Peter Bachmann <aaron_ng@inode.at>
+Adhemerval Zanella <adhemerval.zanella@linaro.org>
Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Alejandro Colomar <alx@kernel.org>
Alex Colomar <alx.manpages@gmail.com>
-Amir Goldstein <amir73il@gmail.com>
-Andrew Clayton <andrew@digital-domain.net>
-Andrew Pinski <pinskia@gmail.com>
-Andries E. Brouwer <aeb@cwi.nl>
-Darrick J. Wong <djwong@kernel.org>
-Douglas McIlroy <douglas.mcilroy@dartmouth.edu>
-Eric Biggers <ebiggers@google.com>
+Arsen Arsenović <arsen@aarsen.me>
+Bernd Petrovitsch <bernd@petrovitsch.priv.at>
+Brian Inglis <Brian.Inglis@Shaw.ca>
+Colin Cross <ccross@google.com>
+Cristian Rodríguez <crrodriguez@opensuse.org>
+Deri James <deri@chuzzlewit.myzen.co.uk>
+Elliott Hughes <enh@google.com>
+Eric Biggers <ebiggers@kernel.org>
Florian Weimer <fweimer@redhat.com>
-G. Branden Robinson <g.branden.robinson@gmail.com>
-Grigoriy <grigoriyremvar@protonmail.com>
-Grzegorz Szymaszek <gszymaszek@short.pl>
+"G. Branden Robinson" <g.branden.robinson@gmail.com>
+Günther Noack <gnoack3000@gmail.com>
Helge Kreutzmann <debian@helgefjell.de>
Ian Abbott <abbotti@mev.co.uk>
-Iker Pedrosa <ipedrosa@redhat.com>
-Ingo Schwarze <schwarze@openbsd.org>
Jakub Wilk <jwilk@jwilk.net>
-Jan Kara <jack@suse.cz>
-JeanHeyd Meneide <wg14@soasis.org>
-Jun Ishiguro <algon.0320@gmail.com>
-Luca Versari <veluca93@gmail.com>
-Luis Javier Merino <ninjalj@gmail.com>
-Mario Blättermann <mario.blaettermann@gmail.com>
-Martin Sebor <msebor@redhat.com>
-Martin Uecker <uecker@tugraz.at>
-Matthew Bobrowski <repnop@google.com>
-Michael Kerrisk <mtk.manpages@gmail.com>
-Michael Tokarev <mjt@tls.msk.ru>
-Mike Frysinger <vapier@gentoo.org>
-Mike Gilbert <floppym@gentoo.org>
-Minchan Kim <minchan@kernel.org>
-Nicolás A. Ortega Froysa <nicolas@ortegas.org>
-Pali Rohár <pali@kernel.org>
-Pierre Labastie <pierre.labastie@neuf.fr>
+Jan Engelhardt <jengelh@inai.de>
+"Jason A. Donenfeld" <Jason@zx2c4.com>
+Jonny Grant <jg@jguk.org>
+Joseph Myers <joseph@codesourcery.com>
+Kees Cook <keescook@chromium.org>
+Lennart Jablonka <humm@ljabl.com>
+Mario Blaettermann <mario.blaettermann@gmail.com>
+Mark Galeck <markgaleck@gmail.com>
+Namhyung Kim <namhyung@kernel.org>
+Nick Gregory <nick@nickgregory.me>
+Pasha Tatashin <tatashin@google.com>
+Paul Eggert <eggert@cs.ucla.edu>
+<Radisson97@gmx.de>
Sam James <sam@gentoo.org>
-Serge Hallyn <serge@hallyn.com>
+Samanta Navarro <ferivoz@riseup.net>
+"Serge E. Hallyn" <serge@hallyn.com>
Stefan Puiu <stefan.puiu@gmail.com>
-Steve Izma <sizma@golden.net>
Suren Baghdasaryan <surenb@google.com>
-Thomas Voss <mail@thomasvoss.com>
-Tycho Andersen <tycho@tycho.pizza>
-Xi Ruoyao <xry111@xry111.site>
-Zach O'Keefe <zokeefe@google.com>
+Thomas Weißschuh <linux@weissschuh.net>
+Walter Harms <wharms@bfs.de>
+Wilco Dijkstra <Wilco.Dijkstra@arm.com>
Zack Weinberg <zack@owlfolio.org>
-
Apologies if I missed anyone!
@@ -70,98 +59,125 @@ New and rewritten pages
-----------------------
man3/
- static_assert.3
- strcpy.3
- stpncpy.3
- strncat.3
+ arc4random.3
+ powerof2.3
+ roundup.3
-man3const/
- EOF.3const
- EXIT_SUCCESS.3const
-
-man7/
- string_copying.7
+man3head/
+ printf.h.3head
Newly documented interfaces in existing pages
---------------------------------------------
-ioctl_tty.2
- TIOCSERGETLSR
- TIOCSER_TEMT
+perf_event_open.2
+ PERF_COUNT_SW_BPF_OUTPUT
+ PERF_COUNT_SW_CGROUP_SWITCHES
+ PERF_FORMAT_LOST
+ PERF_RECORD_MISC_MMAP_BUILD_ID
+ PERF_RECORD_MISC_SWITCH_OUT_PREEMPT
+ PERF_SAMPLE_CODE_PAGE_SIZE
+ PERF_SAMPLE_DATA_PAGE_SIZE
+ PERF_SAMPLE_WEIGHT_STRUCT
+
+ struct perf_event_attr::build_id
+ struct perf_event_attr::inherit_thread
+ struct perf_event_attr::remove_on_exec
+ struct perf_event_attr::sigtrap
+ struct perf_event_attr::aux_sample_size
+ struct perf_event_attr::sig_data
+
+ union perf_sample_weight
-madvise.2
- MADV_COLLAPSE
+ struct read_format::values[]::lost
-syscall.2
- loongarch
+ struct::weight
+ struct::data_page_size
+ struct::code_page_size
+ struct::size
+ struct::data
+
+ struct:: ::build_id_size
+ struct:: ::build_id
+
+prctl.2
+ PR_SET_VMA
+ PR_SET_VMA_ANON_NAME
New and changed links
---------------------
man3/
- _Static_assert.3 (static_assert(3))
- stpcpy.3 (strcpy(3))
- strcat.3 (strcpy(3))
- strncpy.3 (stpncpy(3))
- stpecpy.3 (string_copying(7))
- stpecpyx.3 (string_copying(7))
- ustpcpy.3 (string_copying(7))
- ustr2stp.3 (string_copying(7))
- zustr2stp.3 (string_copying(7))
- zustr2ustp.3 (string_copying(7))
+ arc4random_buf.3 (arc4random(3))
+ arc4random_uniform.3 (arc4random(3))
+ register_printf_modifier.3 (printf.h(3head))
+ register_printf_specifier.3 (printf.h(3head))
+ register_printf_type.3 (printf.h(3head))
man3const/
- EXIT_FAILURE.3const (EXIT_SUCCESS(3const))
+ PA_CHAR.3const (printf.h(3head))
+ PA_DOUBLE.3const (printf.h(3head))
+ PA_FLAG_LONG.3const (printf.h(3head))
+ PA_FLAG_LONG_DOUBLE.3const (printf.h(3head))
+ PA_FLAG_LONG_LONG.3const (printf.h(3head))
+ PA_FLAG_PTR.3const (printf.h(3head))
+ PA_FLAG_SHORT.3const (printf.h(3head))
+ PA_FLOAT.3const (printf.h(3head))
+ PA_INT.3const (printf.h(3head))
+ PA_LAST.3const (printf.h(3head))
+ PA_POINTER.3const (printf.h(3head))
+ PA_STRING.3const (printf.h(3head))
+ PA_WCHAR.3const (printf.h(3head))
+ PA_WSTRING.3const (printf.h(3head))
+
+man3type/
+ printf_arginfo_size_function.3type (printf.h(3head))
+ printf_function.3type (printf.h(3head))
+ printf_info.3type (printf.h(3head))
+ printf_va_arg_function.3type (printf.h(3head))
Global changes
--------------
-- Use correct letter case in manual page titles, instead of uppercase.
+- Build system:
+ - Add scripts to produce a book of the Linux man-pages.
+ - Add lint-c-cppcheck to the make(1) targets to run the cppcheck(1)
+ linter.
-- Use \" t comments when appropriate (Lintian needs this).
+- TH:
+ - Use correct letter case in page titles. This started in 6.02, but
+ there were still many cases left.
- SYNOPSIS:
+ - Mark some functions as deprecated.
- - Add _Nullable for functions that receive NULL as a meaningful
- input.
-
- - Use VLA syntax to clarify the meaning of size parameters, rather
- than hiding it in possibly-confusing text. This syntax is not
- accepted by any compilers, though.
-
- - Use [[noreturn]] instead of noreturn, which will be deprecated
- soon.
+- STANDARDS:
+ - Remove most references to ISO C89. We still document it in
+ standards(7), but it's an ancient language version that this
+ project
+ regards as obsolescent, so in the STANDARDS sections for APIs we
+ only take into account C99 and later and POSIX.1-2001 and later
+ (with few exceptions where older standards are relevant).
-- Repository documentation:
+- ffix:
+ - Change \- to - where appropriate
+ - Improve readability of numbers:
+ - Show BCD magic numbers that are meaningful in hex as hex,
+ rather than weird decimal numbers.
+ - Use IEC multipliers.
+ - Format ranges consistently using interval notation: [min, max].
- - Added significant documentation about the repository and the
- project in the root of the repository in different files.
- Starting from the README, anyone passing by should be able to
- understand how the project works and be directed to other
- documentation files. These files also document the release
- process.
-
- - Michael has been busy lately, and he is no longer maintaining
- the project. The in-repository documentation mentioned above has
- been updated to reflect that.
+- srcfix:
+ - Use \[] escapes.
Changes to individual pages
---------------------------
-copy_file_range.2
- Fix wrong kernel version information
-
-process_madvise.2
- Fix capability and ptrace requirements
-
-madvise.2
- Update Transparent Huge Pages file/shmem documentation for
- Linux 5.4+.
-
+timespec.3type
+ Update tv_nsec according to C2x.
The manual pages (and other files in the repository) have been improved
beyond what this changelog covers. To learn more about changes applied
diff --git a/Changes.old b/Changes.old
index ada2e737f..040e54c65 100644
--- a/Changes.old
+++ b/Changes.old
@@ -55423,3 +55423,173 @@ Changes to individual pages
The manual pages (and other files in the repository) have been improved
beyond what this changelog covers. To learn more about changes applied
to individual pages, use git(1).
+
+
+==================== Changes in man-pages-6.02 ====================
+
+Released: 2022-12-22, Aldaya
+
+
+Contributors
+------------
+
+The following people contributed patches/fixes, reports, notes,
+ideas, and discussions that have been incorporated in changes in
+this release:
+
+
+"G. Branden Robinson" <g.branden.robinson@gmail.com>
+1092615079 <1092615079@qq.com>
+Aaron Schrab <aaron@schrab.com>
+Agostino Sarubbo <ago@gentoo.org>
+Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
+Alejandro Colomar <alx@kernel.org>
+Alex Colomar <alx.manpages@gmail.com>
+Amir Goldstein <amir73il@gmail.com>
+Andrew Clayton <andrew@digital-domain.net>
+Andrew Pinski <pinskia@gmail.com>
+Andries E. Brouwer <aeb@cwi.nl>
+Darrick J. Wong <djwong@kernel.org>
+Douglas McIlroy <douglas.mcilroy@dartmouth.edu>
+Eric Biggers <ebiggers@google.com>
+Florian Weimer <fweimer@redhat.com>
+G. Branden Robinson <g.branden.robinson@gmail.com>
+Grigoriy <grigoriyremvar@protonmail.com>
+Grzegorz Szymaszek <gszymaszek@short.pl>
+Helge Kreutzmann <debian@helgefjell.de>
+Ian Abbott <abbotti@mev.co.uk>
+Iker Pedrosa <ipedrosa@redhat.com>
+Ingo Schwarze <schwarze@openbsd.org>
+Jakub Wilk <jwilk@jwilk.net>
+Jan Kara <jack@suse.cz>
+JeanHeyd Meneide <wg14@soasis.org>
+Jun Ishiguro <algon.0320@gmail.com>
+Luca Versari <veluca93@gmail.com>
+Luis Javier Merino <ninjalj@gmail.com>
+Mario Blättermann <mario.blaettermann@gmail.com>
+Martin Sebor <msebor@redhat.com>
+Martin Uecker <uecker@tugraz.at>
+Matthew Bobrowski <repnop@google.com>
+Michael Kerrisk <mtk.manpages@gmail.com>
+Michael Tokarev <mjt@tls.msk.ru>
+Mike Frysinger <vapier@gentoo.org>
+Mike Gilbert <floppym@gentoo.org>
+Minchan Kim <minchan@kernel.org>
+Nicolás A. Ortega Froysa <nicolas@ortegas.org>
+Pali Rohár <pali@kernel.org>
+Pierre Labastie <pierre.labastie@neuf.fr>
+Sam James <sam@gentoo.org>
+Serge Hallyn <serge@hallyn.com>
+Stefan Puiu <stefan.puiu@gmail.com>
+Steve Izma <sizma@golden.net>
+Suren Baghdasaryan <surenb@google.com>
+Thomas Voss <mail@thomasvoss.com>
+Tycho Andersen <tycho@tycho.pizza>
+Xi Ruoyao <xry111@xry111.site>
+Zach O'Keefe <zokeefe@google.com>
+Zack Weinberg <zack@owlfolio.org>
+
+
+Apologies if I missed anyone!
+
+
+New and rewritten pages
+-----------------------
+
+man3/
+ static_assert.3
+ strcpy.3
+ stpncpy.3
+ strncat.3
+
+man3const/
+ EOF.3const
+ EXIT_SUCCESS.3const
+
+man7/
+ string_copying.7
+
+
+Newly documented interfaces in existing pages
+---------------------------------------------
+
+ioctl_tty.2
+ TIOCSERGETLSR
+ TIOCSER_TEMT
+
+madvise.2
+ MADV_COLLAPSE
+
+syscall.2
+ loongarch
+
+
+New and changed links
+---------------------
+
+man3/
+ _Static_assert.3 (static_assert(3))
+ stpcpy.3 (strcpy(3))
+ strcat.3 (strcpy(3))
+ strncpy.3 (stpncpy(3))
+ stpecpy.3 (string_copying(7))
+ stpecpyx.3 (string_copying(7))
+ ustpcpy.3 (string_copying(7))
+ ustr2stp.3 (string_copying(7))
+ zustr2stp.3 (string_copying(7))
+ zustr2ustp.3 (string_copying(7))
+
+man3const/
+ EXIT_FAILURE.3const (EXIT_SUCCESS(3const))
+
+
+Global changes
+--------------
+
+- Use correct letter case in manual page titles, instead of uppercase.
+
+- Use \" t comments when appropriate (Lintian needs this).
+
+- SYNOPSIS:
+
+ - Add _Nullable for functions that receive NULL as a meaningful
+ input.
+
+ - Use VLA syntax to clarify the meaning of size parameters, rather
+ than hiding it in possibly-confusing text. This syntax is not
+ accepted by any compilers, though.
+
+ - Use [[noreturn]] instead of noreturn, which will be deprecated
+ soon.
+
+- Repository documentation:
+
+ - Added significant documentation about the repository and the
+ project in the root of the repository in different files.
+ Starting from the README, anyone passing by should be able to
+ understand how the project works and be directed to other
+ documentation files. These files also document the release
+ process.
+
+ - Michael has been busy lately, and he is no longer maintaining
+ the project. The in-repository documentation mentioned above has
+ been updated to reflect that.
+
+
+Changes to individual pages
+---------------------------
+
+copy_file_range.2
+ Fix wrong kernel version information
+
+process_madvise.2
+ Fix capability and ptrace requirements
+
+madvise.2
+ Update Transparent Huge Pages file/shmem documentation for
+ Linux 5.4+.
+
+
+The manual pages (and other files in the repository) have been improved
+beyond what this changelog covers. To learn more about changes applied
+to individual pages, use git(1).
diff --git a/README b/README
index c0e4369d2..adbcea103 100644
--- a/README
+++ b/README
@@ -62,7 +62,7 @@ Versions
Tarballs of releases starting from 2.00 are available at
<https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/>.
- The git(1) repository covers the development since 1.70:
+ The git(1) repository can be found at:
<git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git>
A secondary git(1) repository can be found at:
diff --git a/RELEASE b/RELEASE
index 7ac1545fc..3b1864f34 100644
--- a/RELEASE
+++ b/RELEASE
@@ -179,7 +179,9 @@ Description
- Push:
$ git push
- $ git push man-pages-${new}
+ $ git push korg man-pages-${new}
+
+ korg is just my name for the remote.
Files
Changes, Changes.old
diff --git a/etc/cppcheck/cppcheck.suppress b/etc/cppcheck/cppcheck.suppress
new file mode 100644
index 000000000..cd9806b21
--- /dev/null
+++ b/etc/cppcheck/cppcheck.suppress
@@ -0,0 +1,8 @@
+ConfigurationNotChecked
+missingIncludeSystem
+redundantContinue
+unassignedVariable
+uninitvar
+unknownMacro
+unmatchedSuppression
+variableScope
diff --git a/lib/build-src.mk b/lib/build-src.mk
index 1ca99e98a..b6ec587b1 100644
--- a/lib/build-src.mk
+++ b/lib/build-src.mk
@@ -26,11 +26,13 @@ DEFAULT_CFLAGS := -std=gnu17
DEFAULT_CFLAGS += -Wall
DEFAULT_CFLAGS += -Wextra
DEFAULT_CFLAGS += -Wstrict-prototypes
+DEFAULT_CFLAGS += -Wdeclaration-after-statement
DEFAULT_CFLAGS += -Werror
DEFAULT_CFLAGS += -Wno-error=unused-parameter
DEFAULT_CFLAGS += -Wno-error=sign-compare
DEFAULT_CFLAGS += -Wno-error=format
DEFAULT_CFLAGS += -Wno-error=uninitialized
+#DEFAULT_CFLAGS += -Wno-error=declaration-after-statement
EXTRA_CFLAGS :=
CFLAGS := $(DEFAULT_CFLAGS) $(EXTRA_CFLAGS)
diff --git a/lib/lint-c.mk b/lib/lint-c.mk
index c6bc11505..8d0b98822 100644
--- a/lib/lint-c.mk
+++ b/lib/lint-c.mk
@@ -26,6 +26,16 @@ EXTRA_CLANG-TIDYFLAGS :=
CLANG-TIDYFLAGS := $(DEFAULT_CLANG-TIDYFLAGS) $(EXTRA_CLANG-TIDYFLAGS)
CLANG-TIDY := clang-tidy
+CPPCHECK_SUPPRESS := $(SYSCONFDIR)/cppcheck/cppcheck.suppress
+DEFAULT_CPPCHECKFLAGS := --enable=all
+DEFAULT_CPPCHECKFLAGS += --error-exitcode=2
+DEFAULT_CPPCHECKFLAgS += --inconclusive
+DEFAULT_CPPCHECKFLAGS += --quiet
+DEFAULT_CPPCHECKFLAGS += --suppressions-list=$(CPPCHECK_SUPPRESS)
+EXTRA_CPPCHECKFLAGS :=
+CPPCHECKFLAGS := $(DEFAULT_CPPCHECKFLAGS) $(EXTRA_CPPCHECKFLAGS)
+CPPCHECK := cppcheck
+
DEFAULT_CPPLINTFLAGS :=
EXTRA_CPPLINTFLAGS :=
CPPLINTFLAGS := $(DEFAULT_CPPLINTFLAGS) $(EXTRA_CPPLINTFLAGS)
@@ -40,11 +50,12 @@ IWYU := iwyu
_LINT_c_checkpatch := $(patsubst %.c,%.lint-c.checkpatch.touch,$(_UNITS_src_c))
_LINT_c_clang-tidy := $(patsubst %.c,%.lint-c.clang-tidy.touch,$(_UNITS_src_c))
+_LINT_c_cppcheck := $(patsubst %.c,%.lint-c.cppcheck.touch,$(_UNITS_src_c))
_LINT_c_cpplint := $(patsubst %.c,%.lint-c.cpplint.touch,$(_UNITS_src_c))
_LINT_c_iwyu := $(patsubst %.c,%.lint-c.iwyu.touch,$(_UNITS_src_c))
-linters_c := checkpatch clang-tidy cpplint iwyu
+linters_c := checkpatch clang-tidy cppcheck cpplint iwyu
lint_c := $(foreach x,$(linters_c),lint-c-$(x))
@@ -59,6 +70,11 @@ $(_LINT_c_clang-tidy): %.lint-c.clang-tidy.touch: %.c
| $(SED) '/generated\.$$/d'
touch $@
+$(_LINT_c_cppcheck): %.lint-c.cppcheck.touch: %.c
+ $(info LINT (cppcheck) $@)
+ $(CPPCHECK) $(CPPCHECKFLAGS) $<
+ touch $@
+
$(_LINT_c_cpplint): %.lint-c.cpplint.touch: %.c
$(info LINT (cpplint) $@)
$(CPPLINT) $(CPPLINTFLAGS) $< >/dev/null
diff --git a/lsm b/lsm
index 527c14ec4..e56a51e7a 100644
--- a/lsm
+++ b/lsm
@@ -1,7 +1,7 @@
Begin4
Title: Linux man-pages
-Version: 6.01
-Entered-date: 2022-10-18
+Version: 6.02
+Entered-date: 2022-12-22
Description: Manual pages for GNU/Linux. This package contains
manual pages for sections 2, 3, 4, 5, and 7, and
subsections of those. Only a few pages are provided in
@@ -9,7 +9,7 @@ Description: Manual pages for GNU/Linux. This package contains
Keywords: man pages
Maintained-by: Alejandro Colomar <alx@kernel.org>
Primary-site: http://www.kernel.org/pub/linux/docs/man-pages
- 2.6M man-pages-6.01.tar.gz
+ 2.6M man-pages-6.02.tar.gz
Copying-policy: several; the pages are all freely distributable as long as
nroff source is provided
End
diff --git a/man1/getent.1 b/man1/getent.1
index a9afa9c92..22446749f 100644
--- a/man1/getent.1
+++ b/man1/getent.1
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH GETENT 1 2022-10-09 "Linux man-pages 6.02"
+.TH getent 1 2023-01-07 "Linux man-pages 6.03"
.SH NAME
getent \- get entries from Name Service Switch libraries
.SH SYNOPSIS
diff --git a/man1/iconv.1 b/man1/iconv.1
index e773d873a..6a6c0a2c4 100644
--- a/man1/iconv.1
+++ b/man1/iconv.1
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH iconv 1 2022-10-30 "Linux man-pages 6.02"
+.TH iconv 1 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iconv \- convert text from one character encoding to another
.SH SYNOPSIS
@@ -110,7 +110,7 @@ program must first allocate a conversion descriptor using
The operation of the latter function is influenced by the setting of the
.B GCONV_PATH
environment variable:
-.IP \(bu 3
+.IP \[bu] 3
If
.B GCONV_PATH
is not set,
@@ -121,7 +121,7 @@ and then, based on the configuration,
loads the gconv modules needed to perform the conversion.
If the system gconv module configuration cache file is not available
then the system gconv module configuration file is used.
-.IP \(bu
+.IP \[bu]
If
.B GCONV_PATH
is defined (as a colon-separated list of pathnames),
diff --git a/man1/intro.1 b/man1/intro.1
index c9b5690e0..99edc0df5 100644
--- a/man1/intro.1
+++ b/man1/intro.1
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH intro 1 2022-10-30 "Linux man-pages 6.02"
+.TH intro 1 2023-02-05 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to user commands
.SH DESCRIPTION
@@ -103,7 +103,7 @@ Here typing Control-D ended the session.
.PP
The
.B $
-here was the command prompt\(emit is the shell's way of indicating
+here was the command prompt\[em]it is the shell's way of indicating
that it is ready for the next command.
The prompt can be customized
in lots of ways, and one might include stuff like username,
@@ -119,7 +119,7 @@ We see that there are commands
.PP
The command
.I ls
-lists the contents of the current directory\(emit tells you what
+lists the contents of the current directory\[em]it tells you what
files you have.
With a
.I \-l
@@ -200,7 +200,7 @@ and
.I pwd
commands and explore
.I cd
-usage: "cd", "cd .", "cd ..", "cd /", and "cd \(ti".
+usage: "cd", "cd .", "cd ..", "cd /", and "cd \[ti]".
.SS Directories
The command
.I mkdir
diff --git a/man1/ldd.1 b/man1/ldd.1
index 49bbfc2c7..32154eaa5 100644
--- a/man1/ldd.1
+++ b/man1/ldd.1
@@ -1,14 +1,14 @@
.\" Copyright 1995-2000 David Engel (david@ods.com)
.\" Copyright 1995 Rickard E. Faith (faith@cs.unc.edu)
.\" Copyright 2000 Ben Collins (bcollins@debian.org)
-.\" Redone for GLibc 2.2
+.\" Redone for glibc 2.2
.\" Copyright 2000 Jakub Jelinek (jakub@redhat.com)
.\" Corrected.
.\" and Copyright (C) 2012, 2016, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH LDD 1 2022-12-04 "Linux man-pages 6.02"
+.TH ldd 1 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ldd \- print shared object dependencies
.SH SYNOPSIS
@@ -144,7 +144,7 @@ Usage information.
.\" .BR \-\-version .
.\" .LP
.\" The libc5 version of this program will use the name of a library given
-.\" on the command line as-is when it contains a \(aq/\(aq; otherwise it
+.\" on the command line as-is when it contains a \[aq]/\[aq]; otherwise it
.\" searches for the library in the standard locations.
.\" To run it
.\" on a shared library in the current directory, prefix the name with "./".
diff --git a/man1/locale.1 b/man1/locale.1
index 5511878fc..5526e4cdf 100644
--- a/man1/locale.1
+++ b/man1/locale.1
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH locale 1 2022-10-30 "Linux man-pages 6.02"
+.TH locale 1 2023-02-05 "Linux man-pages 6.03"
.SH NAME
locale \- get locale-specific information
.SH SYNOPSIS
@@ -62,9 +62,9 @@ or locale categories (for example,
or
.BR LC_TIME ).
For each argument, the following is displayed:
-.IP \(bu 3
+.IP \[bu] 3
For a locale keyword, the value of that keyword to be displayed.
-.IP \(bu
+.IP \[bu]
For a locale category,
the values of all keywords in that category are displayed.
.PP
@@ -91,7 +91,7 @@ so that the output has the format:
.IP
.in +4n
.EX
-.IR keyword =\(dq value \(dq
+.IR keyword =\[dq] value \[dq]
.EE
.in
.PP
diff --git a/man1/localedef.1 b/man1/localedef.1
index d638de0fb..7b8d190c3 100644
--- a/man1/localedef.1
+++ b/man1/localedef.1
@@ -12,34 +12,37 @@
.\" Lars Wirzenius to document new functionality (as of GNU
.\" C library 2.3.5).
.\"
-.TH localedef 1 2022-10-30 "Linux man-pages 6.02"
+.TH localedef 1 2023-02-10 "Linux man-pages 6.03"
.SH NAME
localedef \- compile locale definition files
.SH SYNOPSIS
-.ad l
-.nh
-.B localedef
+.SY localedef
.RI [ options ]
.I outputpath
-.br
-.B "localedef \-\-add\-to\-archive"
+.YS
+.SY localedef
+.B \-\-add\-to\-archive
.RI [ options ]
.I compiledpath
-.br
-.B "localedef \-\-delete\-from\-archive"
+.YS
+.SY localedef
+.B \-\-delete\-from\-archive
.RI [ options ]
.IR localename " ..."
-.br
-.B "localedef \-\-list\-archive"
+.YS
+.SY localedef
+.B \-\-list\-archive
.RI [ options ]
-.br
-.B "localedef \-\-help"
-.br
-.B "localedef \-\-usage"
-.br
-.B "localedef \-\-version"
-.ad b
-.hy
+.YS
+.SY localedef
+.B \-\-help
+.YS
+.SY localedef
+.B \-\-usage
+.YS
+.SY localedef
+.B \-\-version
+.YS
.SH DESCRIPTION
The
.B localedef
@@ -47,26 +50,30 @@ program reads the indicated
.I charmap
and
.I input
-files, compiles them to a binary form quickly usable by the
+files,
+compiles them to a binary form quickly usable by the
locale functions in the C library
.RB ( setlocale (3),
.BR localeconv (3),
-etc.), and places the output in
+etc.),
+and places the output in
.IR outputpath .
.PP
The
.I outputpath
argument is interpreted as follows:
-.IP \(bu 3
+.IP \[bu] 3
If
.I outputpath
-contains a slash character ('/'), it is interpreted as the name of the
+contains a slash character ('/'),
+it is interpreted as the name of the
directory where the output definitions are to be stored.
-In this case, there is a separate output file for each locale category
+In this case,
+there is a separate output file for each locale category
.RI ( LC_TIME ,
.IR LC_NUMERIC ,
and so on).
-.IP \(bu
+.IP \[bu]
If the
.B \-\-no\-archive
option is used,
@@ -74,7 +81,7 @@ option is used,
is the name of a subdirectory in
.I /usr/lib/locale
where per-category compiled files are placed.
-.IP \(bu
+.IP \[bu]
Otherwise,
.I outputpath
is the name of a locale and the compiled locale data is added to the
@@ -93,12 +100,14 @@ not already been created.
.PP
If no
.I charmapfile
-is given, the value
+is given,
+the value
.I ANSI_X3.4\-1968
(for ASCII) is used by default.
If no
.I inputfile
-is given, or if it is given as a dash
+is given,
+or if it is given as a dash
(\-),
.B localedef
reads from standard input.
@@ -125,12 +134,14 @@ Delete the named locales from the locale archive file.
List the locales contained in the locale archive file.
.SS Other options
Some of the following options are sensible only for certain operations;
-generally, it should be self-evident which ones.
+generally,
+it should be self-evident which ones.
Notice that
.B \-f
and
.B \-c
-are reversed from what you might expect; that is,
+are reversed from what you might expect;
+that is,
.B \-f
is not the same as
.BR \-\-force .
@@ -142,7 +153,8 @@ If
.I charmapfile
contains a slash character ('/'),
it is interpreted as the name of the character map.
-Otherwise, the file is sought in the current directory
+Otherwise,
+the file is sought in the current directory
and the default directory for character maps.
If the environment variable
.B I18NPATH
@@ -175,7 +187,8 @@ If
.I repertoirefile
contains a slash character ('/'),
it is interpreted as the pathname of the repertoire map.
-Otherwise, the file is sought in the current directory
+Otherwise,
+the file is sought in the current directory
and the default directory for repertoire maps.
If the environment variable
.B I18NPATH
@@ -207,7 +220,8 @@ Generate big-endian output.
Generate little-endian output.
.TP
.B \-\-no\-archive
-Do not use the locale archive file, instead create
+Do not use the locale archive file,
+instead create
.I outputpath
as a subdirectory in the same directory as the locale archive file,
and create separate output files for locale categories in it.
@@ -236,18 +250,21 @@ is set.
.TP
.BI \-\-prefix= pathname
Set the prefix to be prepended to the full archive pathname.
-By default, the prefix is empty.
+By default,
+the prefix is empty.
Setting the prefix to
.IR foo ,
the archive would be placed in
.IR foo/usr/lib/locale/locale\-archive .
.TP
.B \-\-quiet
-Suppress all notifications and warnings, and report only fatal errors.
+Suppress all notifications and warnings,
+and report only fatal errors.
.TP
.B \-\-replace
Replace a locale in the locale archive file.
-Without this option, if the locale is in the archive file already,
+Without this option,
+if the locale is in the archive file already,
an error occurs.
.TP
.BI \-\-warnings= warnings
@@ -266,7 +283,9 @@ Also prints the default paths used by
Print a short usage summary and exit.
.TP
.BR \-V ", " \-\-version
-Print the version number, license, and disclaimer of warranty for
+Print the version number,
+license,
+and disclaimer of warranty for
.BR localedef .
.SH EXIT STATUS
One of the following exit values can be returned by
@@ -276,10 +295,12 @@ One of the following exit values can be returned by
Command completed successfully.
.TP
.B 1
-Warnings or errors occurred, output files were written.
+Warnings or errors occurred,
+output files were written.
.TP
.B 4
-Errors encountered, no output created.
+Errors encountered,
+no output created.
.SH ENVIRONMENT
.TP
.B POSIXLY_CORRECT
@@ -326,8 +347,8 @@ An output file that contains information about locale measurements
.TP
.I outputpath/LC_MESSAGES/SYS_LC_MESSAGES
An output file that contains information about the language messages
-should be printed in, and what an affirmative or negative answer looks
-like.
+should be printed in,
+and what an affirmative or negative answer looks like.
.TP
.I outputpath/LC_MONETARY
An output file that contains information about formatting of monetary
@@ -364,7 +385,8 @@ localedef \-f UTF\-8 \-i fi_FI fi_FI.UTF\-8
.EE
.in
.PP
-The next example does the same thing, but generates files into the
+The next example does the same thing,
+but generates files into the
.I fi_FI.UTF\-8
directory which can then be used by programs when the environment
variable
diff --git a/man1/memusage.1 b/man1/memusage.1
index 2f29064b5..1e2a572f8 100644
--- a/man1/memusage.1
+++ b/man1/memusage.1
@@ -2,7 +2,7 @@
.\" and Copyright (C) 2014, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH MEMUSAGE 1 2022-10-09 "Linux man-pages 6.02"
+.TH memusage 1 2023-01-07 "Linux man-pages 6.03"
.SH NAME
memusage \- profile memory usage of a program
.SH SYNOPSIS
diff --git a/man1/memusagestat.1 b/man1/memusagestat.1
index 892ead3db..7173f31c9 100644
--- a/man1/memusagestat.1
+++ b/man1/memusagestat.1
@@ -1,7 +1,7 @@
.\" Copyright (c) 2013, Peter Schiffer <pschiffe@redhat.com>
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH memusagestat 1 2022-10-30 "Linux man-pages 6.02"
+.TH memusagestat 1 2022-10-30 "Linux man-pages 6.03"
.SH NAME
memusagestat \- generate graphic from memory profiling data
.SH SYNOPSIS
diff --git a/man1/mtrace.1 b/man1/mtrace.1
index 47d016aef..18173f694 100644
--- a/man1/mtrace.1
+++ b/man1/mtrace.1
@@ -1,7 +1,7 @@
.\" Copyright (c) 2013, Peter Schiffer (pschiffe@redhat.com)
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH mtrace 1 2022-10-30 "Linux man-pages 6.02"
+.TH mtrace 1 2022-10-30 "Linux man-pages 6.03"
.SH NAME
mtrace \- interpret the malloc trace log
.SH SYNOPSIS
diff --git a/man1/pldd.1 b/man1/pldd.1
index 02c65c4a8..fb6825d33 100644
--- a/man1/pldd.1
+++ b/man1/pldd.1
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH PLDD 1 2022-12-04 "Linux man-pages 6.02"
+.TH pldd 1 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pldd \- display dynamic shared objects linked into a process
.SH SYNOPSIS
@@ -73,7 +73,7 @@ using a command such as the following
.in +4n
.EX
$ \fBgdb \-ex "set confirm off" \-ex "set height 0" \-ex "info shared" \e\fP
- \fB\-ex "quit" \-p $pid | grep \(aq\(ha0x.*0x\(aq\fP
+ \fB\-ex "quit" \-p $pid | grep \[aq]\[ha]0x.*0x\[aq]\fP
.EE
.in
.SH BUGS
diff --git a/man1/sprof.1 b/man1/sprof.1
index 7eb7e15a1..e187673c4 100644
--- a/man1/sprof.1
+++ b/man1/sprof.1
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH SPROF 1 2022-10-09 "Linux man-pages 6.02"
+.TH sprof 1 2023-01-07 "Linux man-pages 6.03"
.SH NAME
sprof \- read and display shared object profiling data
.SH SYNOPSIS
diff --git a/man1/time.1 b/man1/time.1
index d7ef7cb26..85c55aaba 100644
--- a/man1/time.1
+++ b/man1/time.1
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH time 1 2022-10-30 "Linux man-pages 6.02"
+.TH time 1 2023-02-05 "Linux man-pages 6.03"
.SH NAME
time \- time a simple command or give resource usage
.SH SYNOPSIS
@@ -72,7 +72,7 @@ was invoked, the exit status is that of
Otherwise, it is 127 if
.I command
could not be found, 126 if it could be found but could not be invoked,
-and some other nonzero value (1\(en125) if something else went wrong.
+and some other nonzero value (1\[en]125) if something else went wrong.
.SH ENVIRONMENT
The variables
.BR LANG ,
diff --git a/man2/_exit.2 b/man2/_exit.2
index bceafea82..e23d0d0b5 100644
--- a/man2/_exit.2
+++ b/man2/_exit.2
@@ -6,7 +6,7 @@
.\" Modified Wed Jul 21 23:02:38 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified 2001-11-17, aeb
.\"
-.TH _exit 2 2022-12-04 "Linux man-pages 6.02"
+.TH _exit 2 2023-01-22 "Linux man-pages 6.03"
.SH NAME
_exit, _Exit \- terminate the calling process
.SH LIBRARY
@@ -98,7 +98,7 @@ is implementation-dependent.
The text above in DESCRIPTION describes the traditional effect of
.BR _exit (),
which is to terminate a process,
-and these are the semantics specified by POSIIX.1 and implemented
+and these are the semantics specified by POSIX.1 and implemented
by the C library wrapper function.
On modern systems, this means termination of all threads in the process.
.PP
diff --git a/man2/_syscall.2 b/man2/_syscall.2
index 47999cd40..b26da05b8 100644
--- a/man2/_syscall.2
+++ b/man2/_syscall.2
@@ -16,7 +16,7 @@
.\" 2007-10-23 mtk: created as a new page, by taking the content
.\" specific to the _syscall() macros from intro(2).
.\"
-.TH _syscall 2 2022-10-30 "Linux man-pages 6.02"
+.TH _syscall 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
_syscall \- invoking a system call without library support (OBSOLETE)
.SH SYNOPSIS
@@ -43,7 +43,7 @@ They have the form:
where
.IP
.I X
-is 0\(en6, which are the number of arguments taken by the
+is 0\[en]6, which are the number of arguments taken by the
system call
.IP
.I type
diff --git a/man2/accept.2 b/man2/accept.2
index 6fbaa9912..5d2742c98 100644
--- a/man2/accept.2
+++ b/man2/accept.2
@@ -10,7 +10,7 @@
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2008-12-04, mtk, Add documentation of accept4()
.\"
-.TH accept 2 2022-12-04 "Linux man-pages 6.02"
+.TH accept 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
accept, accept4 \- accept a connection on a socket
.SH LIBRARY
diff --git a/man2/access.2 b/man2/access.2
index 3d129779d..d5fce7855 100644
--- a/man2/access.2
+++ b/man2/access.2
@@ -20,7 +20,7 @@
.\" Modified 2004-06-23 by Michael Kerrisk
.\" 2007-06-10, mtk, various parts rewritten, and added BUGS section.
.\"
-.TH access 2 2022-12-04 "Linux man-pages 6.02"
+.TH access 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
access, faccessat, faccessat2 \- check user's permissions for a file
.SH LIBRARY
@@ -361,7 +361,7 @@ If either of these flags is specified, then the wrapper function employs
.BR fstatat (2)
to determine access permissions, but see BUGS.
.\"
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR faccessat ()
is unavailable (and when the
@@ -418,8 +418,8 @@ then
.BR access ()
returns 0 for such files.
.\" This behavior appears to have been an implementation accident.
-Early 2.6 kernels (up to and including 2.6.3)
-also behaved in the same way as kernel 2.4.
+Early Linux 2.6 (up to and including Linux 2.6.3)
+also behaved in the same way as Linux 2.4.
.PP
Before Linux 2.6.20,
these calls ignored the effect of the
diff --git a/man2/acct.2 b/man2/acct.2
index 1c44b0620..064d6c0c1 100644
--- a/man2/acct.2
+++ b/man2/acct.2
@@ -9,7 +9,7 @@
.\" Modified 1998-11-04 by Tigran Aivazian <tigran@sco.com>
.\" Modified 2004-05-27, 2004-06-17, 2004-06-23 by Michael Kerrisk
.\"
-.TH acct 2 2022-12-03 "Linux man-pages 6.02"
+.TH acct 2 2022-12-03 "Linux man-pages 6.03"
.SH NAME
acct \- switch process accounting on or off
.SH LIBRARY
diff --git a/man2/add_key.2 b/man2/add_key.2
index 2e6caf9ba..d1f96900c 100644
--- a/man2/add_key.2
+++ b/man2/add_key.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH add_key 2 2022-11-10 "Linux man-pages 6.02"
+.TH add_key 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
add_key \- add a key to the kernel's key management facility
.SH LIBRARY
@@ -196,7 +196,7 @@ Insufficient memory to create a key.
.B EPERM
The
.I type
-started with a period (\(aq.\(aq).
+started with a period (\[aq].\[aq]).
Key types that begin with a period are reserved to the implementation.
.TP
.B EPERM
@@ -205,7 +205,7 @@ was
.I """keyring"""
and the
.I description
-started with a period (\(aq.\(aq).
+started with a period (\[aq].\[aq]).
Keyrings with descriptions (names)
that begin with a period are reserved to the implementation.
.SH VERSIONS
@@ -213,7 +213,7 @@ This system call first appeared in Linux 2.6.10.
.SH STANDARDS
This system call is a nonstandard Linux extension.
.SH NOTES
-Glibc does not provide a wrapper for this system call.
+glibc does not provide a wrapper for this system call.
A wrapper is provided in the
.I libkeyutils
library.
@@ -232,7 +232,7 @@ The following shell session demonstrates the use of the program:
.EX
$ \fB./a.out user mykey "Some payload"\fP
Key ID is 64a4dca
-$ \fBgrep \(aq64a4dca\(aq /proc/keys\fP
+$ \fBgrep \[aq]64a4dca\[aq] /proc/keys\fP
064a4dca I\-\-Q\-\-\- 1 perm 3f010000 1000 1000 user mykey: 12
.EE
.in
diff --git a/man2/adjtimex.2 b/man2/adjtimex.2
index e7bf28c09..7e4dea1fb 100644
--- a/man2/adjtimex.2
+++ b/man2/adjtimex.2
@@ -8,7 +8,7 @@
.\" Modified 1997-07-30 by Paul Slootman <paul@wurtel.demon.nl>
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH adjtimex 2 2022-12-15 "Linux man-pages 6.02"
+.TH adjtimex 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
adjtimex, clock_adjtime, ntp_adjtime \- tune kernel clock
.SH LIBRARY
@@ -368,22 +368,22 @@ is a more portable interface for performing the same task as
.BR adjtimex ().
Other than the following points, it is identical to
.BR adjtimex ():
-.IP \(bu 3
+.IP \[bu] 3
The constants used in
.I modes
are prefixed with "MOD_" rather than "ADJ_", and have the same suffixes (thus,
.BR MOD_OFFSET ,
.BR MOD_FREQUENCY ,
and so on), other than the exceptions noted in the following points.
-.IP \(bu
+.IP \[bu]
.B MOD_CLKA
is the synonym for
.BR ADJ_OFFSET_SINGLESHOT .
-.IP \(bu
+.IP \[bu]
.B MOD_CLKB
is the synonym for
.BR ADJ_TICK .
-.IP \(bu
+.IP \[bu]
The is no synonym for
.BR ADJ_OFFSET_SS_READ ,
which is not described in the KAPI.
@@ -420,25 +420,25 @@ flags.
The system clock is not synchronized to a reliable server.
This value is returned when any of the following holds true:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Either
.B STA_UNSYNC
or
.B STA_CLOCKERR
is set.
-.IP \(bu
+.IP \[bu]
.B STA_PPSSIGNAL
is clear and either
.B STA_PPSFREQ
or
.B STA_PPSTIME
is set.
-.IP \(bu
+.IP \[bu]
.B STA_PPSTIME
and
.B STA_PPSJITTER
are both set.
-.IP \(bu
+.IP \[bu]
.B STA_PPSFREQ
is set and either
.B STA_PPSWANDER
@@ -468,14 +468,14 @@ to indicate the error.
.I buf
does not point to writable memory.
.TP
-.BR EINVAL " (kernels before Linux 2.6.26)"
+.BR EINVAL " (before Linux 2.6.26)"
An attempt was made to set
.I buf.freq
to a value outside the range (\-33554432, +33554432).
.\" From a quick glance, it appears there was no clamping or range check
.\" for buf.freq before Linux 2.0
.TP
-.BR EINVAL " (kernels before Linux 2.6.26)"
+.BR EINVAL " (before Linux 2.6.26)"
An attempt was made to set
.I buf.offset
to a value outside the permitted range.
@@ -537,19 +537,15 @@ capability is required.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
-.ad l
-.nh
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
-.BR ntp_adjtime ()
+.BR \%ntp_adjtime ()
T} Thread safety MT-Safe
.TE
-.hy
-.ad
.sp 1
.SH STANDARDS
None of these interfaces is described in POSIX.1
@@ -571,7 +567,7 @@ and
.I stabil
are ppm (parts per million) with a 16-bit fractional part,
which means that a value of 1 in one of those fields
-actually means 2^-16 ppm, and 2^16=65536 is 1 ppm.
+actually means 2\[ha]-16 ppm, and 2\[ha]16=65536 is 1 ppm.
This is the case for both input values (in the case of
.IR freq )
and output values.
diff --git a/man2/alarm.2 b/man2/alarm.2
index 995bad2c7..17e69ceb0 100644
--- a/man2/alarm.2
+++ b/man2/alarm.2
@@ -7,7 +7,7 @@
.\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer <aeb@cwi.nl>
.\" Modified Wed Nov 6 03:46:05 1996 by Eric S. Raymond <esr@thyrsus.com>
.\"
-.TH alarm 2 2022-10-30 "Linux man-pages 6.02"
+.TH alarm 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
alarm \- set an alarm clock for delivery of a signal
.SH LIBRARY
diff --git a/man2/alloc_hugepages.2 b/man2/alloc_hugepages.2
index 1fd640dbd..564190565 100644
--- a/man2/alloc_hugepages.2
+++ b/man2/alloc_hugepages.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH alloc_hugepages 2 2022-12-04 "Linux man-pages 6.02"
+.TH alloc_hugepages 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
alloc_hugepages, free_hugepages \- allocate or free huge pages
.SH SYNOPSIS
diff --git a/man2/arch_prctl.2 b/man2/arch_prctl.2
index 69967c03c..5f33beae8 100644
--- a/man2/arch_prctl.2
+++ b/man2/arch_prctl.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH arch_prctl 2 2022-10-30 "Linux man-pages 6.02"
+.TH arch_prctl 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
arch_prctl \- set architecture-specific thread state
.SH LIBRARY
diff --git a/man2/bdflush.2 b/man2/bdflush.2
index 39f13768e..104a0d69e 100644
--- a/man2/bdflush.2
+++ b/man2/bdflush.2
@@ -5,7 +5,7 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH bdflush 2 2022-12-04 "Linux man-pages 6.02"
+.TH bdflush 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
bdflush \- start, flush, or tune buffer-dirty-flush daemon
.SH SYNOPSIS
diff --git a/man2/bind.2 b/man2/bind.2
index 359e6b180..50501d6b9 100644
--- a/man2/bind.2
+++ b/man2/bind.2
@@ -18,7 +18,7 @@
.\" $Id: bind.2,v 1.3 1999/04/23 19:56:07 freitag Exp $
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH bind 2 2022-10-30 "Linux man-pages 6.02"
+.TH bind 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
bind \- bind a name to a socket
.SH LIBRARY
@@ -43,7 +43,7 @@ to the socket referred to by the file descriptor
.I addrlen
specifies the size, in bytes, of the address structure pointed to by
.IR addr .
-Traditionally, this operation is called \(lqassigning a name to a socket\(rq.
+Traditionally, this operation is called \[lq]assigning a name to a socket\[rq].
.PP
It is normally necessary to assign a local address using
.BR bind ()
diff --git a/man2/bpf.2 b/man2/bpf.2
index 52ce68d0c..174776989 100644
--- a/man2/bpf.2
+++ b/man2/bpf.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH bpf 2 2022-12-04 "Linux man-pages 6.02"
+.TH bpf 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
bpf \- perform a command on an extended BPF map or program
.SH SYNOPSIS
@@ -101,7 +101,7 @@ eBPF programs can access the same map:
.EX
tracing tracing tracing packet packet packet
event A event B event C on eth0 on eth1 on eth2
- | | | | | \(ha
+ | | | | | \[ha]
| | | | v |
\-\-> tracing <\-\- tracing socket tc ingress tc egress
prog_1 prog_2 prog_3 classifier action
@@ -190,11 +190,11 @@ union bpf_attr {
struct { /* Used by BPF_PROG_LOAD */
__u32 prog_type;
__u32 insn_cnt;
- __aligned_u64 insns; /* \(aqconst struct bpf_insn *\(aq */
- __aligned_u64 license; /* \(aqconst char *\(aq */
+ __aligned_u64 insns; /* \[aq]const struct bpf_insn *\[aq] */
+ __aligned_u64 license; /* \[aq]const char *\[aq] */
__u32 log_level; /* verbosity level of verifier */
__u32 log_size; /* size of user buffer */
- __aligned_u64 log_buf; /* user supplied \(aqchar *\(aq
+ __aligned_u64 log_buf; /* user supplied \[aq]char *\[aq]
buffer */
__u32 kern_version;
/* checked when prog_type=kprobe
@@ -211,13 +211,13 @@ They allow sharing of data between eBPF kernel programs,
and also between kernel and user-space applications.
.PP
Each map type has the following attributes:
-.IP \(bu 3
+.IP \[bu] 3
type
-.IP \(bu
+.IP \[bu]
maximum number of elements
-.IP \(bu
+.IP \[bu]
key size in bytes
-.IP \(bu
+.IP \[bu]
value size in bytes
.PP
The following wrapper functions demonstrate how various
@@ -578,20 +578,20 @@ The following map types are supported:
.\" commit 0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475
Hash-table maps have the following characteristics:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Maps are created and destroyed by user-space programs.
Both user-space and eBPF programs
can perform lookup, update, and delete operations.
-.IP \(bu
+.IP \[bu]
The kernel takes care of allocating and freeing key/value pairs.
-.IP \(bu
+.IP \[bu]
The
.BR map_update_elem ()
helper will fail to insert new element when the
.I max_entries
limit is reached.
(This ensures that eBPF programs cannot exhaust memory.)
-.IP \(bu
+.IP \[bu]
.BR map_update_elem ()
replaces existing elements atomically.
.RE
@@ -603,7 +603,7 @@ optimized for speed of lookup.
.\" commit 28fbcfa08d8ed7c5a50d41a0433aad222835e8e3
Array maps have the following characteristics:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Optimized for fastest possible lookup.
In the future the verifier/JIT compiler
may recognize lookup() operations that employ a constant key
@@ -616,16 +616,16 @@ In other words,
.BR array_map_lookup_elem ()
may be 'inlined' by the verifier/JIT compiler
while preserving concurrent access to this map from user space.
-.IP \(bu
+.IP \[bu]
All array elements pre-allocated and zero initialized at init time
-.IP \(bu
+.IP \[bu]
The key is an array index, and must be exactly four bytes.
-.IP \(bu
+.IP \[bu]
.BR map_delete_elem ()
fails with the error
.BR EINVAL ,
since elements cannot be deleted.
-.IP \(bu
+.IP \[bu]
.BR map_update_elem ()
replaces elements in a
.B nonatomic
@@ -644,13 +644,13 @@ This is quite often useful for aggregation and accounting of events.
.IP
Among the uses for array maps are the following:
.RS
-.IP \(bu 3
+.IP \[bu] 3
As "global" eBPF variables: an array of 1 element whose key is (index) 0
and where the value is a collection of 'global' variables which
eBPF programs can use to keep state between events.
-.IP \(bu
+.IP \[bu]
Aggregation of tracing events into a fixed set of buckets.
-.IP \(bu
+.IP \[bu]
Accounting of networking events, for example, number of packets and packet
sizes.
.RE
@@ -775,23 +775,23 @@ For further details of eBPF program types, see below.
The remaining fields of
.I bpf_attr
are set as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I insns
is an array of
.I "struct bpf_insn"
instructions.
-.IP \(bu
+.IP \[bu]
.I insn_cnt
is the number of instructions in the program referred to by
.IR insns .
-.IP \(bu
+.IP \[bu]
.I license
is a license string, which must be GPL compatible to call helper functions
marked
.IR gpl_only .
(The licensing rules are the same as for kernel modules,
so that also dual licenses, such as "Dual BSD/GPL", may be used.)
-.IP \(bu
+.IP \[bu]
.I log_buf
is a pointer to a caller-allocated buffer in which the in-kernel
verifier can store the verification log.
@@ -799,7 +799,7 @@ This log is a multi-line string that can be checked by
the program author in order to understand how the verifier came to
the conclusion that the eBPF program is unsafe.
The format of the output can change at any time as the verifier evolves.
-.IP \(bu
+.IP \[bu]
.I log_size
size of the buffer pointed to by
.IR log_buf .
@@ -808,7 +808,7 @@ verifier messages, \-1 is returned and
.I errno
is set to
.BR ENOSPC .
-.IP \(bu
+.IP \[bu]
.I log_level
verbosity level of the verifier.
A value of zero means that the verifier will not provide a log;
@@ -840,7 +840,7 @@ The eBPF program type
.RI ( prog_type )
determines the subset of kernel helper functions that the program
may call.
-The program type also determines the program input (context)\(emthe
+The program type also determines the program input (context)\[em]the
format of
.I "struct bpf_context"
(which is the data blob passed into the eBPF program as the first argument).
@@ -1075,14 +1075,14 @@ However they may not store kernel pointers within
the maps and are presently limited to the following helper functions:
.\" [Linux 5.6] mtk: The list of available functions is, I think, governed
.\" by the check in net/core/filter.c::bpf_base_func_proto().
-.IP \(bu 3
+.IP \[bu] 3
get_random
.PD 0
-.IP \(bu
+.IP \[bu]
get_smp_processor_id
-.IP \(bu
+.IP \[bu]
tail_call
-.IP \(bu
+.IP \[bu]
ktime_get_ns
.PD
.PP
@@ -1151,37 +1151,37 @@ The JIT compiler for eBPF is currently
.\" and by checking the documentation for bpf_jit_enable in
.\" Documentation/sysctl/net.txt
available for the following architectures:
-.IP \(bu 3
+.IP \[bu] 3
x86-64 (since Linux 3.18; cBPF since Linux 3.0);
.\" commit 0a14842f5a3c0e88a1e59fac5c3025db39721f74
.PD 0
-.IP \(bu
+.IP \[bu]
ARM32 (since Linux 3.18; cBPF since Linux 3.4);
.\" commit ddecdfcea0ae891f782ae853771c867ab51024c2
-.IP \(bu
+.IP \[bu]
SPARC 32 (since Linux 3.18; cBPF since Linux 3.5);
.\" commit 2809a2087cc44b55e4377d7b9be3f7f5d2569091
-.IP \(bu
+.IP \[bu]
ARM-64 (since Linux 3.18);
.\" commit e54bcde3d69d40023ae77727213d14f920eb264a
-.IP \(bu
+.IP \[bu]
s390 (since Linux 4.1; cBPF since Linux 3.7);
.\" commit c10302efe569bfd646b4c22df29577a4595b4580
-.IP \(bu
+.IP \[bu]
PowerPC 64 (since Linux 4.8; cBPF since Linux 3.1);
.\" commit 0ca87f05ba8bdc6791c14878464efc901ad71e99
.\" commit 156d0e290e969caba25f1851c52417c14d141b24
-.IP \(bu
+.IP \[bu]
SPARC 64 (since Linux 4.12);
.\" commit 7a12b5031c6b947cc13918237ae652b536243b76
-.IP \(bu
+.IP \[bu]
x86-32 (since Linux 4.18);
.\" commit 03f5781be2c7b7e728d724ac70ba10799cc710d7
-.IP \(bu
+.IP \[bu]
MIPS 64 (since Linux 4.18; cBPF since Linux 3.16);
.\" commit c6610de353da5ca6eee5b8960e838a87a90ead0c
.\" commit f381bf6d82f032b7410185b35d000ea370ac706b
-.IP \(bu
+.IP \[bu]
riscv (since Linux 5.1).
.\" commit 2353ecc6f91fd15b893fa01bf85a1c7a823ee4f2
.PD
@@ -1205,7 +1205,7 @@ main(int argc, char *argv[])
map_fd = bpf_create_map(BPF_MAP_TYPE_ARRAY, sizeof(key),
sizeof(value), 256);
if (map_fd < 0) {
- printf("failed to create map \(aq%s\(aq\en", strerror(errno));
+ printf("failed to create map \[aq]%s\[aq]\en", strerror(errno));
/* likely not run as root */
return 1;
}
diff --git a/man2/brk.2 b/man2/brk.2
index 97391f559..ca65ba2e5 100644
--- a/man2/brk.2
+++ b/man2/brk.2
@@ -7,7 +7,7 @@
.\" Modified Wed Jul 21 19:52:58 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Sun Aug 21 17:40:38 1994 by Rik Faith <faith@cs.unc.edu>
.\"
-.TH brk 2 2022-12-04 "Linux man-pages 6.02"
+.TH brk 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
brk, sbrk \- change data segment size
.SH LIBRARY
diff --git a/man2/cacheflush.2 b/man2/cacheflush.2
index f15e1ac7f..cad01d522 100644
--- a/man2/cacheflush.2
+++ b/man2/cacheflush.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH cacheflush 2 2022-12-04 "Linux man-pages 6.02"
+.TH cacheflush 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cacheflush \- flush contents of instruction and/or data cache
.SH LIBRARY
@@ -76,7 +76,7 @@ but nowadays, Linux provides a
system call on some other architectures, but with different arguments.
.SH NOTES
.SS Architecture-specific variants
-Glibc provides a wrapper for this system call,
+glibc provides a wrapper for this system call,
with the prototype shown in SYNOPSIS,
for the following architectures:
ARC, CSKY, MIPS, and NIOS2.
diff --git a/man2/capget.2 b/man2/capget.2
index 27603d976..da1d5414b 100644
--- a/man2/capget.2
+++ b/man2/capget.2
@@ -11,7 +11,7 @@
.\" 64-bit capability sets in Linux 2.6.2[45].
.\" Modified 2009-01-26, andi kleen
.\"
-.TH capget 2 2022-12-04 "Linux man-pages 6.02"
+.TH capget 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
capget, capset \- set/get capabilities of thread(s)
.SH LIBRARY
@@ -214,9 +214,9 @@ permitted set.
.B EPERM
An attempt was made to add a capability to the inheritable set, and either:
.RS
-.IP \(bu 3
+.IP \[bu] 3
that capability was not in the caller's bounding set; or
-.IP \(bu
+.IP \[bu]
the capability was not in the caller's permitted set
and the caller lacked the
.B CAP_SETPCAP
diff --git a/man2/chdir.2 b/man2/chdir.2
index 07b18aa4b..c8200a641 100644
--- a/man2/chdir.2
+++ b/man2/chdir.2
@@ -10,7 +10,7 @@
.\" Modified 1997-08-21 by Joseph S. Myers <jsm28@cam.ac.uk>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH chdir 2 2022-10-30 "Linux man-pages 6.02"
+.TH chdir 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
chdir, fchdir \- change working directory
.SH LIBRARY
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc up to and including 2.19: */ _BSD_SOURCE
+ || /* glibc up to and including 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
.BR chdir ()
@@ -112,7 +112,7 @@ does not refer to a directory.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD.
.SH NOTES
The current working directory is the starting point for interpreting
-relative pathnames (those not starting with \(aq/\(aq).
+relative pathnames (those not starting with \[aq]/\[aq]).
.PP
A child process created via
.BR fork (2)
diff --git a/man2/chmod.2 b/man2/chmod.2
index 89f6fdfa3..2986f1065 100644
--- a/man2/chmod.2
+++ b/man2/chmod.2
@@ -9,7 +9,7 @@
.\" <michael@cantor.informatik.rwth-aachen.de>: NFS details
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH chmod 2 2022-12-04 "Linux man-pages 6.02"
+.TH chmod 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
chmod, fchmod, fchmodat \- change permissions of a file
.SH LIBRARY
@@ -39,14 +39,14 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.24:
_POSIX_C_SOURCE >= 199309L
.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
- Glibc 2.19 to glibc 2.23
+ glibc 2.19 to glibc 2.23
_POSIX_C_SOURCE
- Glibc 2.16 to glibc 2.19:
+ glibc 2.16 to glibc 2.19:
_BSD_SOURCE || _POSIX_C_SOURCE
- Glibc 2.12 to glibc 2.16:
+ glibc 2.12 to glibc 2.16:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
|| _POSIX_C_SOURCE >= 200809L
- Glibc 2.11 and earlier:
+ glibc 2.11 and earlier:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
.fi
@@ -67,12 +67,12 @@ system calls change a file's mode bits.
(The file mode consists of the file permission bits plus the set-user-ID,
set-group-ID, and sticky bits.)
These system calls differ only in how the file is specified:
-.IP \(bu 3
+.IP \[bu] 3
.BR chmod ()
changes the mode of the file specified whose pathname is given in
.IR pathname ,
which is dereferenced if it is a symbolic link.
-.IP \(bu
+.IP \[bu]
.BR fchmod ()
changes the mode of the file referred to by the open file descriptor
.IR fd .
@@ -321,7 +321,7 @@ This interface differs from the underlying Linux system call, which does
have a
.I flags
argument.
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR fchmodat ()
is unavailable, the glibc wrapper function falls back to the use of
diff --git a/man2/chown.2 b/man2/chown.2
index 02b831e77..93558cacb 100644
--- a/man2/chown.2
+++ b/man2/chown.2
@@ -15,7 +15,7 @@
.\" (bsdgroups versus sysvgroups, and the effect of the parent
.\" directory's set-group-ID mode bit).
.\"
-.TH chown 2 2022-12-04 "Linux man-pages 6.02"
+.TH chown 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
chown, fchown, lchown, fchownat \- change ownership of a file
.SH LIBRARY
@@ -47,7 +47,7 @@ Feature Test Macro Requirements for glibc (see
/* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.PP
.BR fchownat ():
@@ -65,16 +65,16 @@ The
and
.BR lchown ()
system calls differ only in how the file is specified:
-.IP \(bu 3
+.IP \[bu] 3
.BR chown ()
changes the ownership of the file specified by
.IR pathname ,
which is dereferenced if it is a symbolic link.
-.IP \(bu
+.IP \[bu]
.BR fchown ()
changes the ownership of the file referred to by the open file descriptor
.IR fd .
-.IP \(bu
+.IP \[bu]
.BR lchown ()
is like
.BR chown (),
@@ -321,18 +321,18 @@ and
.BR "\-o\ sysvgroups" )
.BR mount (8)
options, then the rules are as follows:
-.IP \(bu 3
+.IP \[bu] 3
If the filesystem is mounted with
.BR "\-o\ grpid" ,
then the group of a new file is made
the same as that of the parent directory.
-.IP \(bu
+.IP \[bu]
If the filesystem is mounted with
.B \-o\ nogrpid
and the set-group-ID bit is disabled on the parent directory,
then the group of a new file is made the same as the
process's filesystem GID.
-.IP \(bu
+.IP \[bu]
If the filesystem is mounted with
.B \-o\ nogrpid
and the set-group-ID bit is enabled on the parent directory,
@@ -348,7 +348,7 @@ mount options are supported by ext2, ext3, ext4, and XFS.
Filesystems that don't support these mount options follow the
.B \-o\ nogrpid
rules.
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR fchownat ()
is unavailable, the glibc wrapper function falls back to the use of
@@ -433,14 +433,14 @@ main(int argc, char *argv[])
uid_t uid;
struct passwd *pwd;
- if (argc != 3 || argv[1][0] == \(aq\e0\(aq) {
+ if (argc != 3 || argv[1][0] == \[aq]\e0\[aq]) {
fprintf(stderr, "%s <owner> <file>\en", argv[0]);
exit(EXIT_FAILURE);
}
uid = strtol(argv[1], &endptr, 10); /* Allow a numeric string */
- if (*endptr != \(aq\e0\(aq) { /* Was not pure numeric string */
+ if (*endptr != \[aq]\e0\[aq]) { /* Was not pure numeric string */
pwd = getpwnam(argv[1]); /* Try getting UID for username */
if (pwd == NULL) {
perror("getpwnam");
diff --git a/man2/chroot.2 b/man2/chroot.2
index ebad1a704..88a1dff30 100644
--- a/man2/chroot.2
+++ b/man2/chroot.2
@@ -10,7 +10,7 @@
.\" Modified 1997-08-21 by Joseph S. Myers <jsm28@cam.ac.uk>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH chroot 2 2022-10-30 "Linux man-pages 6.02"
+.TH chroot 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
chroot \- change root directory
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.2.2:
_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
|| /* Since glibc 2.20: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
Before glibc 2.2.2:
none
.fi
@@ -78,8 +78,8 @@ files outside the chroot directory, you must ensure that folders are never
moved out of it.
.PP
This call does not change the current working directory,
-so that after the call \(aq\fI.\fP\(aq can
-be outside the tree rooted at \(aq\fI/\fP\(aq.
+so that after the call \[aq]\fI.\fP\[aq] can
+be outside the tree rooted at \[aq]\fI/\fP\[aq].
In particular, the superuser can escape from a "chroot jail"
by doing:
.PP
diff --git a/man2/clock_getres.2 b/man2/clock_getres.2
index c5853154c..71f642fae 100644
--- a/man2/clock_getres.2
+++ b/man2/clock_getres.2
@@ -9,7 +9,7 @@
.\" 2003-08-24 aeb, large parts rewritten
.\" 2004-08-06 Christoph Lameter <clameter@sgi.com>, SMP note
.\"
-.TH clock_getres 2 2022-12-15 "Linux man-pages 6.02"
+.TH clock_getres 2 2023-02-12 "Linux man-pages 6.03"
.SH NAME
clock_getres, clock_gettime, clock_settime \- clock and time functions
.SH LIBRARY
@@ -137,8 +137,8 @@ The acronym TAI refers to International Atomic Time.
.TP
.B CLOCK_MONOTONIC
A nonsettable system-wide clock that
-represents monotonic time since\(emas described
-by POSIX\(em"some unspecified point in the past".
+represents monotonic time since\[em]as described
+by POSIX\[em]"some unspecified point in the past".
On Linux, that point corresponds to the number of seconds that the system
has been running since it was booted.
.IP
@@ -153,7 +153,7 @@ This clock does not count time that the system is suspended.
All
.B CLOCK_MONOTONIC
variants guarantee that the time returned by consecutive calls will not go
-backwards, but successive calls may\(emdepending on the architecture\(emreturn
+backwards, but successive calls may\[em]depending on the architecture\[em]return
identical (not-increased) time values.
.TP
.BR CLOCK_MONOTONIC_COARSE " (since Linux 2.6.32; Linux-specific)"
@@ -224,8 +224,8 @@ dynamic clock ID.
.in +4n
.EX
#define CLOCKFD 3
-#define FD_TO_CLOCKID(fd) ((\(ti(clockid_t) (fd) << 3) | CLOCKFD)
-#define CLOCKID_TO_FD(clk) ((unsigned int) \(ti((clk) >> 3))
+#define FD_TO_CLOCKID(fd) ((\[ti](clockid_t) (fd) << 3) | CLOCKFD)
+#define CLOCKID_TO_FD(clk) ((unsigned int) \[ti]((clk) >> 3))
struct timespec ts;
clockid_t clkid;
@@ -272,7 +272,7 @@ does not refer to a valid instance of a clock object.
.I tp.tv_sec
is negative or
.I tp.tv_nsec
-is outside the range [0..999,999,999].
+is outside the range [0, 999,999,999].
.TP
.B EINVAL
The
@@ -405,7 +405,7 @@ The processors in an SMP system do not start all at exactly the same
time and therefore the timer registers are typically running at an offset.
Some architectures include code that attempts to limit these offsets on bootup.
However, the code cannot guarantee to accurately tune the offsets.
-Glibc contains no provisions to deal with these offsets (unlike the Linux
+glibc contains no provisions to deal with these offsets (unlike the Linux
Kernel).
Typically these offsets are small and therefore the effects may be
negligible in most cases.
diff --git a/man2/clock_nanosleep.2 b/man2/clock_nanosleep.2
index 84328d585..29c06bb7b 100644
--- a/man2/clock_nanosleep.2
+++ b/man2/clock_nanosleep.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH clock_nanosleep 2 2022-12-04 "Linux man-pages 6.02"
+.TH clock_nanosleep 2 2023-02-12 "Linux man-pages 6.03"
.SH NAME
clock_nanosleep \- high-resolution sleep with specifiable clock
.SH LIBRARY
@@ -158,7 +158,7 @@ The sleep was interrupted by a signal handler; see
.B EINVAL
The value in the
.I tv_nsec
-field was not in the range 0 to 999999999 or
+field was not in the range [0, 999999999] or
.I tv_sec
was negative.
.TP
diff --git a/man2/clone.2 b/man2/clone.2
index c062b3a46..c59455fc8 100644
--- a/man2/clone.2
+++ b/man2/clone.2
@@ -38,7 +38,7 @@
.\" 2008-11-19, mtk, document CLONE_NEWIPC
.\" 2008-11-19, Jens Axboe, mtk, document CLONE_IO
.\"
-.TH clone 2 2022-12-15 "Linux man-pages 6.02"
+.TH clone 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
clone, __clone2, clone3 \- create a child process
.SH LIBRARY
@@ -98,14 +98,14 @@ and
below.
.PP
This page describes the following interfaces:
-.IP \(bu 3
+.IP \[bu] 3
The glibc
.BR clone ()
wrapper function and the underlying system call on which it is based.
The main text describes the wrapper function;
the differences for the raw system call
are described toward the end of this page.
-.IP \(bu
+.IP \[bu]
The newer
.BR clone3 ()
system call.
@@ -195,9 +195,9 @@ struct clone_args {
u64 pidfd; /* Where to store PID file descriptor
(\fIint *\fP) */
u64 child_tid; /* Where to store child TID,
- in child\(aqs memory (\fIpid_t *\fP) */
+ in child\[aq]s memory (\fIpid_t *\fP) */
u64 parent_tid; /* Where to store child TID,
- in parent\(aqs memory (\fIpid_t *\fP) */
+ in parent\[aq]s memory (\fIpid_t *\fP) */
u64 exit_signal; /* Signal to deliver to parent on
child termination */
u64 stack; /* Pointer to lowest byte of stack */
@@ -267,7 +267,7 @@ l l l
li li l.
clone() clone3() Notes
\fIcl_args\fP field
-flags & \(ti0xff flags T{
+flags & \[ti]0xff flags T{
For most flags; details below
T}
parent_tid pidfd See CLONE_PIDFD
@@ -399,14 +399,14 @@ and
allow a flags bit mask that modifies their behavior
and allows the caller to specify what is shared between the calling process
and the child process.
-This bit mask\(emthe
+This bit mask\[em]the
.I flags
argument of
.BR clone ()
or the
.I cl_args.flags
field passed to
-.BR clone3 ()\(emis
+.BR clone3 ()\[em]is
referred to as the
.I flags
mask in the remainder of this page.
@@ -574,7 +574,7 @@ Among the possible use cases for
.B CLONE_INTO_CGROUP
are the following:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Spawning a process into a cgroup different from the parent's cgroup
makes it possible for a service manager to directly spawn new
services into dedicated cgroups.
@@ -585,7 +585,7 @@ moved into the target cgroup.
Furthermore, spawning the child process directly into a target cgroup
is significantly cheaper than moving the child process into
the target cgroup after it has been created.
-.IP \(bu
+.IP \[bu]
The
.B CLONE_INTO_CGROUP
flag also allows the creation of
@@ -593,7 +593,7 @@ frozen child processes by spawning them into a frozen cgroup.
(See
.BR cgroups (7)
for a description of the freezer controller.)
-.IP \(bu
+.IP \[bu]
For threaded applications (or even thread implementations which
make use of cgroups to limit individual threads), it is possible to
establish a fixed cgroup layout before spawning each thread
@@ -875,12 +875,12 @@ The close-on-exec flag is set on this new file descriptor.
PID file descriptors can be used for the purposes described in
.BR pidfd_open (2).
.RS
-.IP \(bu 3
+.IP \[bu] 3
When using
.BR clone3 (),
the PID file descriptor is placed at the location pointed to by
.IR cl_args.pidfd .
-.IP \(bu
+.IP \[bu]
When using
.BR clone (),
the PID file descriptor is placed at the location pointed to by
@@ -1811,7 +1811,7 @@ be used for the child's stack using
rather than
.BR malloc (3)
for the following reasons:
-.IP \(bu 3
+.IP \[bu] 3
.BR mmap (2)
allocates a block of memory that starts on a page
boundary and is a multiple of the page size.
@@ -1819,7 +1819,7 @@ This is useful if we want to establish a guard page (a page with protection
.BR PROT_NONE )
at the end of the stack using
.BR mprotect (2).
-.IP \(bu
+.IP \[bu]
We can specify the
.B MAP_STACK
flag to request a mapping that is suitable for a stack.
@@ -1903,8 +1903,8 @@ main(int argc, char *argv[])
sleep(1); /* Give child time to change its hostname */
- /* Display hostname in parent\(aqs UTS namespace. This will be
- different from hostname in child\(aqs UTS namespace. */
+ /* Display hostname in parent\[aq]s UTS namespace. This will be
+ different from hostname in child\[aq]s UTS namespace. */
if (uname(&uts) == \-1)
err(EXIT_FAILURE, "uname");
diff --git a/man2/close.2 b/man2/close.2
index 6566f1f03..21b808d0d 100644
--- a/man2/close.2
+++ b/man2/close.2
@@ -13,7 +13,7 @@
.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
.\" added note about close(2) not guaranteeing that data is safe on close.
.\"
-.TH close 2 2022-10-30 "Linux man-pages 6.02"
+.TH close 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
close \- close a file descriptor
.SH LIBRARY
diff --git a/man2/close_range.2 b/man2/close_range.2
index 0c827f980..72fc4758c 100644
--- a/man2/close_range.2
+++ b/man2/close_range.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH close_range 2 2022-12-04 "Linux man-pages 6.02"
+.TH close_range 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
close_range \- close all file descriptors in a given range
.SH LIBRARY
@@ -102,7 +102,7 @@ File descriptors can be closed safely using
.in +4n
.EX
/* we don't want anything past stderr here */
-close_range(3, ~0U, CLOSE_RANGE_UNSHARE);
+close_range(3, \[ti]0U, CLOSE_RANGE_UNSHARE);
execve(....);
.EE
.in
@@ -123,7 +123,7 @@ the current maximum number of file descriptors allocated
in the caller's file descriptor table
(the common case when
.I last
-is ~0U),
+is \[ti]0U),
the kernel will unshare a new file descriptor table for the caller up to
.IR first ,
copying as few file descriptors as possible.
@@ -260,7 +260,7 @@ main(int argc, char *argv[])
printf("========= About to call close_range() =======\en");
- if (syscall(SYS_close_range, 3, \(ti0U, 0) == \-1) {
+ if (syscall(SYS_close_range, 3, \[ti]0U, 0) == \-1) {
perror("close_range");
exit(EXIT_FAILURE);
}
diff --git a/man2/connect.2 b/man2/connect.2
index 78097ad15..e23b03067 100644
--- a/man2/connect.2
+++ b/man2/connect.2
@@ -16,7 +16,7 @@
.\" Modified 1998, 1999 by Andi Kleen
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH connect 2 2022-12-04 "Linux man-pages 6.02"
+.TH connect 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
connect \- initiate a connection on a socket
.SH LIBRARY
diff --git a/man2/copy_file_range.2 b/man2/copy_file_range.2
index e317fb95c..00cfc955a 100644
--- a/man2/copy_file_range.2
+++ b/man2/copy_file_range.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH copy_file_range 2 2022-12-14 "Linux man-pages 6.02"
+.TH copy_file_range 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
copy_file_range \- Copy a range of data from one file to another
.SH LIBRARY
@@ -35,14 +35,14 @@ The following semantics apply for
.IR off_in ,
and similar statements apply to
.IR off_out :
-.IP \(bu 3
+.IP \[bu] 3
If
.I off_in
is NULL, then bytes are read from
.I fd_in
starting from the file offset, and the file offset is
adjusted by the number of bytes copied.
-.IP \(bu
+.IP \[bu]
If
.I off_in
is not NULL, then
diff --git a/man2/create_module.2 b/man2/create_module.2
index 2d97b497a..cfcce1239 100644
--- a/man2/create_module.2
+++ b/man2/create_module.2
@@ -5,7 +5,7 @@
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
-.TH create_module 2 2022-12-04 "Linux man-pages 6.02"
+.TH create_module 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
create_module \- create a loadable module entry
.SH SYNOPSIS
diff --git a/man2/delete_module.2 b/man2/delete_module.2
index 15723df29..ad20fac2d 100644
--- a/man2/delete_module.2
+++ b/man2/delete_module.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH delete_module 2 2022-12-04 "Linux man-pages 6.02"
+.TH delete_module 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
delete_module \- unload a kernel module
.SH LIBRARY
@@ -77,14 +77,14 @@ does not specify
.BR O_NONBLOCK ,
the following steps occur:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The module is marked so that no new references are permitted.
-.IP \(bu
+.IP \[bu]
If the module's reference count is nonzero,
the caller is placed in an uninterruptible sleep state
.RB ( TASK_UNINTERRUPTIBLE )
until the reference count is zero, at which point the call unblocks.
-.IP \(bu
+.IP \[bu]
The module is unloaded in the usual way.
.RE
.RE
diff --git a/man2/dup.2 b/man2/dup.2
index 6867d1336..85dac61ff 100644
--- a/man2/dup.2
+++ b/man2/dup.2
@@ -14,7 +14,7 @@
.\" details for dup2().
.\" 2008-10-09, mtk: add description of dup3()
.\"
-.TH dup 2 2022-12-04 "Linux man-pages 6.02"
+.TH dup 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dup, dup2, dup3 \- duplicate a file descriptor
.SH LIBRARY
@@ -99,13 +99,13 @@ by a signal handler that allocates a file descriptor,
or because a parallel thread allocates a file descriptor.
.PP
Note the following points:
-.IP \(bu 3
+.IP \[bu] 3
If
.I oldfd
is not a valid file descriptor, then the call fails, and
.I newfd
is not closed.
-.IP \(bu
+.IP \[bu]
If
.I oldfd
is a valid file descriptor, and
@@ -122,7 +122,7 @@ does nothing, and returns
is the same as
.BR dup2 (),
except that:
-.IP \(bu 3
+.IP \[bu] 3
The caller can force the close-on-exec flag to be set
for the new file descriptor by specifying
.B O_CLOEXEC
@@ -131,7 +131,7 @@ in
See the description of the same flag in
.BR open (2)
for reasons why this may be useful.
-.IP \(bu
+.IP \[bu]
.\" Ulrich Drepper, LKML, 2008-10-09:
.\" We deliberately decided on this change. Otherwise, what is the
.\" result of dup3(fd, fd, O_CLOEXEC)?
@@ -232,8 +232,8 @@ was open, any errors that would have been reported at
.BR close (2)
time are lost.
If this is of concern,
-then\(emunless the program is single-threaded and does not allocate
-file descriptors in signal handlers\(emthe correct approach is
+then\[em]unless the program is single-threaded and does not allocate
+file descriptors in signal handlers\[em]the correct approach is
.I not
to close
.I newfd
@@ -244,23 +244,23 @@ Instead, code something like the following could be used:
.PP
.in +4n
.EX
-/* Obtain a duplicate of \(aqnewfd\(aq that can subsequently
+/* Obtain a duplicate of \[aq]newfd\[aq] that can subsequently
be used to check for close() errors; an EBADF error
- means that \(aqnewfd\(aq was not open. */
+ means that \[aq]newfd\[aq] was not open. */
tmpfd = dup(newfd);
if (tmpfd == \-1 && errno != EBADF) {
/* Handle unexpected dup() error. */
}
-/* Atomically duplicate \(aqoldfd\(aq on \(aqnewfd\(aq. */
+/* Atomically duplicate \[aq]oldfd\[aq] on \[aq]newfd\[aq]. */
if (dup2(oldfd, newfd) == \-1) {
/* Handle dup2() error. */
}
/* Now check for close() errors on the file originally
- referred to by \(aqnewfd\(aq. */
+ referred to by \[aq]newfd\[aq]. */
if (tmpfd != \-1) {
if (close(tmpfd) == \-1) {
diff --git a/man2/epoll_create.2 b/man2/epoll_create.2
index 53c17baab..5591e88df 100644
--- a/man2/epoll_create.2
+++ b/man2/epoll_create.2
@@ -8,7 +8,7 @@
.\" Modified 2005-04-04 by Marko Kohtala <marko.kohtala@gmail.com>
.\" 2008-10-10, mtk: add description of epoll_create1()
.\"
-.TH epoll_create 2 2022-12-04 "Linux man-pages 6.02"
+.TH epoll_create 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
epoll_create, epoll_create1 \- open an epoll file descriptor
.SH LIBRARY
diff --git a/man2/epoll_ctl.2 b/man2/epoll_ctl.2
index 8c459e389..9dd3dcd03 100644
--- a/man2/epoll_ctl.2
+++ b/man2/epoll_ctl.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH epoll_ctl 2 2022-12-04 "Linux man-pages 6.02"
+.TH epoll_ctl 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
epoll_ctl \- control interface for an epoll file descriptor
.SH LIBRARY
diff --git a/man2/epoll_wait.2 b/man2/epoll_wait.2
index eededce25..476f70f82 100644
--- a/man2/epoll_wait.2
+++ b/man2/epoll_wait.2
@@ -6,7 +6,7 @@
.\"
.\" 2007-04-30: mtk, Added description of epoll_pwait()
.\"
-.TH epoll_wait 2 2022-12-04 "Linux man-pages 6.02"
+.TH epoll_wait 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
epoll_wait, epoll_pwait, epoll_pwait2 \-
wait for an I/O event on an epoll file descriptor
@@ -59,11 +59,11 @@ clock.
A call to
.BR epoll_wait ()
will block until either:
-.IP \(bu 3
+.IP \[bu] 3
a file descriptor delivers an event;
-.IP \(bu
+.IP \[bu]
the call is interrupted by a signal handler; or
-.IP \(bu
+.IP \[bu]
the timeout expires.
.PP
Note that the
diff --git a/man2/eventfd.2 b/man2/eventfd.2
index 77edcd614..36c522d61 100644
--- a/man2/eventfd.2
+++ b/man2/eventfd.2
@@ -6,7 +6,7 @@
.\"
.\" 2008-10-10, mtk: describe eventfd2(), and EFD_NONBLOCK and EFD_CLOEXEC
.\"
-.TH eventfd 2 2022-12-15 "Linux man-pages 6.02"
+.TH eventfd 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
eventfd \- create a file descriptor for event notification
.SH LIBRARY
@@ -82,7 +82,7 @@ if the size of the supplied buffer is less than 8 bytes.
.IP
The value returned by
.BR read (2)
-is in host byte order\(emthat is,
+is in host byte order\[em]that is,
the native byte order for integers on the host machine.
.IP
The semantics of
@@ -92,21 +92,21 @@ and whether the
.B EFD_SEMAPHORE
flag was specified when creating the eventfd file descriptor:
.RS
-.IP \(bu 3
+.IP \[bu] 3
If
.B EFD_SEMAPHORE
was not specified and the eventfd counter has a nonzero value, then a
.BR read (2)
returns 8 bytes containing that value,
and the counter's value is reset to zero.
-.IP \(bu
+.IP \[bu]
If
.B EFD_SEMAPHORE
was specified and the eventfd counter has a nonzero value, then a
.BR read (2)
returns 8 bytes containing the value 1,
and the counter's value is decremented by 1.
-.IP \(bu
+.IP \[bu]
If the eventfd counter is zero at the time of the call to
.BR read (2),
then the call either blocks until the counter becomes nonzero
@@ -151,7 +151,7 @@ and
.BR select (2),
as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The file descriptor is readable
(the
.BR select (2)
@@ -161,7 +161,7 @@ argument; the
.B POLLIN
flag)
if the counter has a value greater than 0.
-.IP \(bu
+.IP \[bu]
The file descriptor is writable
(the
.BR select (2)
@@ -171,7 +171,7 @@ argument; the
.B POLLOUT
flag)
if it is possible to write a value of at least "1" without blocking.
-.IP \(bu
+.IP \[bu]
If an overflow of the counter value was detected,
then
.BR select (2)
@@ -183,7 +183,7 @@ event.
As noted above,
.BR write (2)
can never overflow the counter.
-However an overflow can occur if 2^64
+However an overflow can occur if 2\[ha]64
eventfd "signal posts" were performed by the KAIO
subsystem (theoretically possible, but practically unlikely).
If an overflow has occurred, then
diff --git a/man2/execve.2 b/man2/execve.2
index 067cc99a3..753e6e58e 100644
--- a/man2/execve.2
+++ b/man2/execve.2
@@ -14,7 +14,7 @@
.\" 2007-09-14 Ollie Wild <aaw@google.com>, mtk
.\" Add text describing limits on command-line arguments + environment
.\"
-.TH EXECVE 2 2022-12-04 "Linux man-pages 6.02"
+.TH execve 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
execve \- execute program
.SH LIBRARY
@@ -110,12 +110,12 @@ The aforementioned transformations of the effective IDs are
.I not
performed (i.e., the set-user-ID and set-group-ID bits are ignored)
if any of the following is true:
-.IP \(bu 3
+.IP \[bu] 3
the
.I no_new_privs
attribute is set for the calling thread (see
.BR prctl (2));
-.IP \(bu
+.IP \[bu]
the underlying filesystem is mounted
.I nosuid
(the
@@ -123,7 +123,7 @@ the underlying filesystem is mounted
flag for
.BR mount (2));
or
-.IP \(bu
+.IP \[bu]
the calling process is being ptraced.
.PP
The capabilities of the program file (see
@@ -159,43 +159,43 @@ for binaries linked with glibc (see
All process attributes are preserved during an
.BR execve (),
except the following:
-.IP \(bu 3
+.IP \[bu] 3
The dispositions of any signals that are being caught are
reset to the default
.RB ( signal (7)).
-.IP \(bu
+.IP \[bu]
Any alternate signal stack is not preserved
.RB ( sigaltstack (2)).
-.IP \(bu
+.IP \[bu]
Memory mappings are not preserved
.RB ( mmap (2)).
-.IP \(bu
+.IP \[bu]
Attached System\ V shared memory segments are detached
.RB ( shmat (2)).
-.IP \(bu
+.IP \[bu]
POSIX shared memory regions are unmapped
.RB ( shm_open (3)).
-.IP \(bu
+.IP \[bu]
Open POSIX message queue descriptors are closed
.RB ( mq_overview (7)).
-.IP \(bu
+.IP \[bu]
Any open POSIX named semaphores are closed
.RB ( sem_overview (7)).
-.IP \(bu
+.IP \[bu]
POSIX timers are not preserved
.RB ( timer_create (2)).
-.IP \(bu
+.IP \[bu]
Any open directory streams are closed
.RB ( opendir (3)).
-.IP \(bu
+.IP \[bu]
Memory locks are not preserved
.RB ( mlock (2),
.BR mlockall (2)).
-.IP \(bu
+.IP \[bu]
Exit handlers are not preserved
.RB ( atexit (3),
.BR on_exit (3)).
-.IP \(bu
+.IP \[bu]
The floating-point environment is reset to the default (see
.BR fenv (3)).
.PP
@@ -204,7 +204,7 @@ in POSIX.1.
The following Linux-specific process attributes are also
not preserved during an
.BR execve ():
-.IP \(bu 3
+.IP \[bu] 3
The process's "dumpable" attribute is set to the value 1,
unless a set-user-ID program, a set-group-ID program,
or a program with capabilities is being executed,
@@ -221,52 +221,52 @@ directory to change to
.IR root:root ,
as described in
.BR proc (5).
-.IP \(bu
+.IP \[bu]
The
.BR prctl (2)
.B PR_SET_KEEPCAPS
flag is cleared.
-.IP \(bu
+.IP \[bu]
(Since Linux 2.4.36 / 2.6.23)
If a set-user-ID or set-group-ID program is being executed,
then the parent death signal set by
.BR prctl (2)
.B PR_SET_PDEATHSIG
flag is cleared.
-.IP \(bu
+.IP \[bu]
The process name, as set by
.BR prctl (2)
.B PR_SET_NAME
(and displayed by
.IR "ps\ \-o comm" ),
is reset to the name of the new executable file.
-.IP \(bu
+.IP \[bu]
The
.B SECBIT_KEEP_CAPS
.I securebits
flag is cleared.
See
.BR capabilities (7).
-.IP \(bu
+.IP \[bu]
The termination signal is reset to
.B SIGCHLD
(see
.BR clone (2)).
-.IP \(bu
+.IP \[bu]
The file descriptor table is unshared, undoing the effect of the
.B CLONE_FILES
flag of
.BR clone (2).
.PP
Note the following further points:
-.IP \(bu 3
+.IP \[bu] 3
All threads other than the calling thread are destroyed during an
.BR execve ().
Mutexes, condition variables, and other pthreads objects are not preserved.
-.IP \(bu
+.IP \[bu]
The equivalent of \fIsetlocale(LC_ALL, "C")\fP
is executed at program start-up.
-.IP \(bu
+.IP \[bu]
POSIX.1 specifies that the dispositions of any signals that
are ignored or set to the default are left unchanged.
POSIX.1 specifies one exception: if
@@ -274,16 +274,16 @@ POSIX.1 specifies one exception: if
is being ignored,
then an implementation may leave the disposition unchanged or
reset it to the default; Linux does the former.
-.IP \(bu
+.IP \[bu]
Any outstanding asynchronous I/O operations are canceled
.RB ( aio_read (3),
.BR aio_write (3)).
-.IP \(bu
+.IP \[bu]
For the handling of capabilities during
.BR execve (),
see
.BR capabilities (7).
-.IP \(bu
+.IP \[bu]
By default, file descriptors remain open across an
.BR execve ().
File descriptors that are marked close-on-exec are closed;
@@ -466,7 +466,7 @@ The filesystem is mounted
.\" commit 72fa59970f8698023045ab0713d66f3f4f96945c
Having changed its real UID using one of the
.BR set*uid ()
-calls, the caller was\(emand is now still\(emabove its
+calls, the caller was\[em]and is now still\[em]above its
.B RLIMIT_NPROC
resource limit (see
.BR setrlimit (2)).
@@ -714,7 +714,7 @@ Since Linux 3.1, the scenario just described no longer causes the
call to fail,
because it too often led to security holes where buggy applications
didn't check the return status and assumed
-that\(emif the caller had root privileges\(emthe call would always succeed.
+that\[em]if the caller had root privileges\[em]the call would always succeed.
Instead, the
.BR set*uid ()
calls now successfully change the real UID,
@@ -733,7 +733,7 @@ call, that call fails with the error
This kernel logic ensures that the
.B RLIMIT_NPROC
resource limit is still enforced for the
-common privileged daemon workflow\(emnamely,
+common privileged daemon workflow\[em]namely,
.BR fork (2)
+
.BR set*uid ()
@@ -855,7 +855,7 @@ program:
.EX
.RB "$" " cat > script"
.B #!./myecho script\-arg
-.B \(haD
+.B \[ha]D
.RB "$" " chmod +x script"
.EE
.in
diff --git a/man2/execveat.2 b/man2/execveat.2
index b74e44931..5b262a011 100644
--- a/man2/execveat.2
+++ b/man2/execveat.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH execveat 2 2022-12-04 "Linux man-pages 6.02"
+.TH execveat 2 2023-01-02 "Linux man-pages 6.03"
.SH NAME
execveat \- execute program relative to a directory file descriptor
.SH LIBRARY
@@ -15,8 +15,8 @@ Standard C library
.B #include <unistd.h>
.PP
.BI "int execveat(int " dirfd ", const char *" pathname ,
-.BI " const char *const _Nullable " argv [],
-.BI " const char *const _Nullable " envp [],
+.BI " char *const _Nullable " argv [],
+.BI " char *const _Nullable " envp [],
.BI " int " flags );
.fi
.SH DESCRIPTION
diff --git a/man2/exit_group.2 b/man2/exit_group.2
index 2e1c0bb7f..dac09fd5a 100644
--- a/man2/exit_group.2
+++ b/man2/exit_group.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH exit_group 2 2022-11-05 "Linux man-pages 6.02"
+.TH exit_group 2 2022-11-05 "Linux man-pages 6.03"
.SH NAME
exit_group \- exit all threads in a process
.SH LIBRARY
diff --git a/man2/fallocate.2 b/man2/fallocate.2
index e5700bf8f..917d468a4 100644
--- a/man2/fallocate.2
+++ b/man2/fallocate.2
@@ -6,7 +6,7 @@
.\" 2011-09-19: Added FALLOC_FL_PUNCH_HOLE
.\" 2011-09-19: Substantial restructuring of the page
.\"
-.TH fallocate 2 2022-12-04 "Linux man-pages 6.02"
+.TH fallocate 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fallocate \- manipulate file space
.SH LIBRARY
@@ -125,18 +125,18 @@ Not all filesystems support
.BR FALLOC_FL_PUNCH_HOLE ;
if a filesystem doesn't support the operation, an error is returned.
The operation is supported on at least the following filesystems:
-.IP \(bu 3
+.IP \[bu] 3
XFS (since Linux 2.6.38)
-.IP \(bu
+.IP \[bu]
ext4 (since Linux 3.0)
.\" commit a4bb6b64e39abc0e41ca077725f2a72c868e7622
-.IP \(bu
+.IP \[bu]
Btrfs (since Linux 3.7)
-.IP \(bu
+.IP \[bu]
.BR tmpfs (5)
(since Linux 3.5)
.\" commit 83e4fa9c16e4af7122e31be3eca5d57881d236fe
-.IP \(bu
+.IP \[bu]
.BR gfs2 (5)
(since Linux 4.16)
.\" commit 4e56a6411fbce6f859566e17298114c2434391a4
@@ -235,16 +235,16 @@ Not all filesystems support
.BR FALLOC_FL_ZERO_RANGE ;
if a filesystem doesn't support the operation, an error is returned.
The operation is supported on at least the following filesystems:
-.IP \(bu 3
+.IP \[bu] 3
XFS (since Linux 3.15)
.\" commit 376ba313147b4172f3e8cf620b9fb591f3e8cdfa
-.IP \(bu
+.IP \[bu]
ext4, for extent-based files (since Linux 3.15)
.\" commit b8a8684502a0fc852afa0056c6bb2a9273f6fcc0
-.IP \(bu
+.IP \[bu]
SMB3 (since Linux 3.17)
.\" commit 30175628bf7f521e9ee31ac98fa6d6fe7441a556
-.IP \(bu
+.IP \[bu]
Btrfs (since Linux 4.16)
.\" commit f27451f229966874a8793995b8e6b74326d125df
.SS Increasing file space
diff --git a/man2/fanotify_init.2 b/man2/fanotify_init.2
index d6ca3555d..9b1053564 100644
--- a/man2/fanotify_init.2
+++ b/man2/fanotify_init.2
@@ -1,7 +1,7 @@
\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH fanotify_init 2 2022-12-04 "Linux man-pages 6.02"
+.TH fanotify_init 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fanotify_init \- create and initialize fanotify group
.SH LIBRARY
@@ -483,24 +483,24 @@ The limitations imposed on an event listener created by a user without the
.B CAP_SYS_ADMIN
capability are as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The user cannot request for an unlimited event queue by using
.BR FAN_UNLIMITED_QUEUE .
-.IP \(bu
+.IP \[bu]
The user cannot request for an unlimited number of marks by using
.BR FAN_UNLIMITED_MARKS .
-.IP \(bu
+.IP \[bu]
The user cannot request to use either notification classes
.B FAN_CLASS_CONTENT
or
.BR FAN_CLASS_PRE_CONTENT .
This means that user cannot request permission events.
-.IP \(bu
+.IP \[bu]
The user is required to create a group that identifies filesystem objects by
file handles, for example, by providing the
.B FAN_REPORT_FID
flag.
-.IP \(bu
+.IP \[bu]
The user is limited to only mark inodes.
The ability to mark a mount or filesystem via
.BR fanotify_mark ()
@@ -509,7 +509,7 @@ through the use of
or
.B FAN_MARK_FILESYSTEM
is not permitted.
-.IP \(bu
+.IP \[bu]
The event object in the event queue is limited in terms of the information
that is made available to the unprivileged user.
A user will also not receive the pid that generated the event, unless the
@@ -519,7 +519,7 @@ listening process itself generated the event.
This system call is Linux-specific.
.SH BUGS
The following bug was present before Linux 3.18:
-.IP \(bu 3
+.IP \[bu] 3
.\" Fixed by commit 0b37e097a648aa71d4db1ad108001e95b69a2da4
The
.B O_CLOEXEC
@@ -527,7 +527,7 @@ is ignored when passed in
.IR event_f_flags .
.PP
The following bug was present before Linux 3.14:
-.IP \(bu 3
+.IP \[bu] 3
.\" Fixed by commit 48149e9d3a7e924010a0daab30a6197b7d7b6580
The
.I event_f_flags
diff --git a/man2/fanotify_mark.2 b/man2/fanotify_mark.2
index 42fe0c11b..07f89cbfe 100644
--- a/man2/fanotify_mark.2
+++ b/man2/fanotify_mark.2
@@ -1,7 +1,7 @@
.\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH FANOTIFY_MARK 2 2022-12-04 "Linux man-pages 6.02"
+.TH fanotify_mark 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fanotify_mark \- add, remove, or modify an fanotify mark on a filesystem
object
@@ -446,7 +446,7 @@ or
is required.
.TP
.B FAN_ONDIR
-Create events for directories\(emfor example, when
+Create events for directories\[em]for example, when
.BR opendir (3),
.BR readdir (3)
(but see BUGS), and
@@ -501,13 +501,13 @@ The filesystem object to be marked is determined by the file descriptor
.I dirfd
and the pathname specified in
.IR pathname :
-.IP \(bu 3
+.IP \[bu] 3
If
.I pathname
is NULL,
.I dirfd
defines the filesystem object to be marked.
-.IP \(bu
+.IP \[bu]
If
.I pathname
is NULL, and
@@ -515,13 +515,13 @@ is NULL, and
takes the special value
.BR AT_FDCWD ,
the current working directory is to be marked.
-.IP \(bu
+.IP \[bu]
If
.I pathname
is absolute, it defines the filesystem object to be marked, and
.I dirfd
is ignored.
-.IP \(bu
+.IP \[bu]
If
.I pathname
is relative, and
@@ -532,7 +532,7 @@ then the filesystem object to be marked is determined by interpreting
.I pathname
relative the directory referred to by
.IR dirfd .
-.IP \(bu
+.IP \[bu]
If
.I pathname
is relative, and
@@ -814,7 +814,7 @@ events for both the ELF binary and interpreter, respectively:
.in
.SH BUGS
The following bugs were present in before Linux 3.16:
-.IP \(bu 3
+.IP \[bu] 3
.\" Fixed by commit 0a8dd2db579f7a0ac7033d6b857c3d5dbaa77563
If
.I flags
@@ -824,13 +824,13 @@ contains
and
.I pathname
must specify a valid filesystem object, even though this object is not used.
-.IP \(bu
+.IP \[bu]
.\" Fixed by commit d4c7cf6cffb1bc711a833b5e304ba5bcfe76398b
.BR readdir (2)
does not generate a
.B FAN_ACCESS
event.
-.IP \(bu
+.IP \[bu]
.\" Fixed by commit cc299a98eb13a9853675a9cbb90b30b4011e1406
If
.BR fanotify_mark ()
diff --git a/man2/fcntl.2 b/man2/fcntl.2
index bacbe42b8..818d4df75 100644
--- a/man2/fcntl.2
+++ b/man2/fcntl.2
@@ -44,7 +44,7 @@
.\" 2017-06-26, Jens Axboe <axboe@kernel.dk>
.\" Document F_{GET,SET}_RW_HINT and F_{GET,SET}_FILE_RW_HINT
.\"
-.TH fcntl 2 2022-12-04 "Linux man-pages 6.02"
+.TH fcntl 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fcntl \- manipulate file descriptor
.SH LIBRARY
@@ -440,7 +440,7 @@ instead.
The record locks described above are associated with the process
(unlike the open file description locks described below).
This has some unfortunate consequences:
-.IP \(bu 3
+.IP \[bu] 3
If a process closes
.I any
file descriptor referring to a file,
@@ -456,7 +456,7 @@ or
.I /etc/mtab
when for some reason a library function decides to open, read,
and close the same file.
-.IP \(bu
+.IP \[bu]
The threads in a process share locks.
In other words,
a multithreaded program can't use record locking to ensure
@@ -1032,7 +1032,7 @@ are Linux-specific.
POSIX has asynchronous I/O and the
.I aio_sigevent
structure to achieve similar things; these are also available
-in Linux as part of the GNU C Library (Glibc).
+in Linux as part of the GNU C Library (glibc).
.SS Leases
.B F_SETLEASE
and
diff --git a/man2/flock.2 b/man2/flock.2
index 9c6c9f91a..a240a603f 100644
--- a/man2/flock.2
+++ b/man2/flock.2
@@ -12,7 +12,7 @@
.\" FIXME Maybe document LOCK_MAND, LOCK_RW, LOCK_READ, LOCK_WRITE
.\" which only have effect for SAMBA.
.\"
-.TH flock 2 2022-12-04 "Linux man-pages 6.02"
+.TH flock 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
flock \- apply or remove an advisory lock on an open file
.SH LIBRARY
diff --git a/man2/fork.2 b/man2/fork.2
index 260cafd6c..9ef7d3584 100644
--- a/man2/fork.2
+++ b/man2/fork.2
@@ -16,7 +16,7 @@
.\" Greatly expanded, to describe all attributes that differ
.\" parent and child.
.\"
-.TH fork 2 2022-12-04 "Linux man-pages 6.02"
+.TH fork 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fork \- create a child process
.SH LIBRARY
@@ -50,30 +50,30 @@ performed by one of the processes do not affect the other.
.PP
The child process is an exact duplicate of the parent
process except for the following points:
-.IP \(bu 3
+.IP \[bu] 3
The child has its own unique process ID,
and this PID does not match the ID of any existing process group
.RB ( setpgid (2))
or session.
-.IP \(bu
+.IP \[bu]
The child's parent process ID is the same as the parent's process ID.
-.IP \(bu
+.IP \[bu]
The child does not inherit its parent's memory locks
.RB ( mlock (2),
.BR mlockall (2)).
-.IP \(bu
+.IP \[bu]
Process resource utilizations
.RB ( getrusage (2))
and CPU time counters
.RB ( times (2))
are reset to zero in the child.
-.IP \(bu
+.IP \[bu]
The child's set of pending signals is initially empty
.RB ( sigpending (2)).
-.IP \(bu
+.IP \[bu]
The child does not inherit semaphore adjustments from its parent
.RB ( semop (2)).
-.IP \(bu
+.IP \[bu]
The child does not inherit process-associated record locks from its parent
.RB ( fcntl (2)).
(On the other hand, it does inherit
@@ -81,12 +81,12 @@ The child does not inherit process-associated record locks from its parent
open file description locks and
.BR flock (2)
locks from its parent.)
-.IP \(bu
+.IP \[bu]
The child does not inherit timers from its parent
.RB ( setitimer (2),
.BR alarm (2),
.BR timer_create (2)).
-.IP \(bu
+.IP \[bu]
The child does not inherit outstanding asynchronous I/O operations
from its parent
.RB ( aio_read (3),
@@ -98,33 +98,33 @@ The process attributes in the preceding list are all specified
in POSIX.1.
The parent and child also differ with respect to the following
Linux-specific process attributes:
-.IP \(bu 3
+.IP \[bu] 3
The child does not inherit directory change notifications (dnotify)
from its parent
(see the description of
.B F_NOTIFY
in
.BR fcntl (2)).
-.IP \(bu
+.IP \[bu]
The
.BR prctl (2)
.B PR_SET_PDEATHSIG
setting is reset so that the child does not receive a signal
when its parent terminates.
-.IP \(bu
+.IP \[bu]
The default timer slack value is set to the parent's
current timer slack value.
See the description of
.B PR_SET_TIMERSLACK
in
.BR prctl (2).
-.IP \(bu
+.IP \[bu]
Memory mappings that have been marked with the
.BR madvise (2)
.B MADV_DONTFORK
flag are not inherited across a
.BR fork ().
-.IP \(bu
+.IP \[bu]
Memory in address ranges that have been marked with the
.BR madvise (2)
.B MADV_WIPEONFORK
@@ -133,12 +133,12 @@ flag is zeroed in the child after a
(The
.B MADV_WIPEONFORK
setting remains in place for those address ranges in the child.)
-.IP \(bu
+.IP \[bu]
The termination signal of the child is always
.B SIGCHLD
(see
.BR clone (2)).
-.IP \(bu
+.IP \[bu]
The port access permission bits set by
.BR ioperm (2)
are not inherited by the child;
@@ -146,8 +146,8 @@ the child must turn on any bits that it requires using
.BR ioperm (2).
.PP
Note the following further points:
-.IP \(bu 3
-The child process is created with a single thread\(emthe
+.IP \[bu] 3
+The child process is created with a single thread\[em]the
one that called
.BR fork ().
The entire virtual address space of the parent is replicated in the child,
@@ -155,7 +155,7 @@ including the states of mutexes, condition variables,
and other pthreads objects; the use of
.BR pthread_atfork (3)
may be helpful for dealing with problems that this can cause.
-.IP \(bu
+.IP \[bu]
After a
.BR fork ()
in a multithreaded program,
@@ -163,7 +163,7 @@ the child can safely call only async-signal-safe functions (see
.BR signal\-safety (7))
until such time as it calls
.BR execve (2).
-.IP \(bu
+.IP \[bu]
The child inherits copies of the parent's set of open file descriptors.
Each file descriptor in the child refers to the same
open file description (see
@@ -177,7 +177,7 @@ and
.B F_SETSIG
in
.BR fcntl (2)).
-.IP \(bu
+.IP \[bu]
The child inherits copies of the parent's set of open message
queue descriptors (see
.BR mq_overview (7)).
@@ -186,7 +186,7 @@ open message queue description
as the corresponding file descriptor in the parent.
This means that the two file descriptors share the same flags
.RI ( mq_flags ).
-.IP \(bu
+.IP \[bu]
The child inherits copies of the parent's set of open directory streams (see
.BR opendir (3)).
POSIX.1 says that the corresponding directory streams
@@ -208,25 +208,25 @@ is set to indicate the error.
A system-imposed limit on the number of threads was encountered.
There are a number of limits that may trigger this error:
.RS
-.IP \(bu 3
+.IP \[bu] 3
the
.B RLIMIT_NPROC
soft resource limit (set via
.BR setrlimit (2)),
which limits the number of processes and threads for a real user ID,
was reached;
-.IP \(bu
+.IP \[bu]
the kernel's system-wide limit on the number of processes and threads,
.IR /proc/sys/kernel/threads\-max ,
was reached (see
.BR proc (5));
-.IP \(bu
+.IP \[bu]
the maximum number of PIDs,
.IR /proc/sys/kernel/pid_max ,
was reached (see
.BR proc (5));
or
-.IP \(bu
+.IP \[bu]
the PID limit
.RI ( pids.max )
imposed by the cgroup "process number" (PIDs) controller was reached.
diff --git a/man2/fsync.2 b/man2/fsync.2
index 721b2345a..5cbbe2923 100644
--- a/man2/fsync.2
+++ b/man2/fsync.2
@@ -15,7 +15,7 @@
.\" 2006-04-28, mtk, substantial rewrite of various parts.
.\" 2012-02-27 Various changes by Christoph Hellwig <hch@lst.de>
.\"
-.TH fsync 2 2022-10-30 "Linux man-pages 6.02"
+.TH fsync 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fsync, fdatasync \- synchronize a file's in-core state with storage device
.SH LIBRARY
@@ -37,9 +37,9 @@ Feature Test Macro Requirements for glibc (see
.PP
.nf
.BR fsync ():
- Glibc 2.16 and later:
+ glibc 2.16 and later:
No feature test macros need be defined
- Glibc up to and including 2.15:
+ glibc up to and including 2.15:
_BSD_SOURCE || _XOPEN_SOURCE
|| /* Since glibc 2.8: */ _POSIX_C_SOURCE >= 200112L
.fi
diff --git a/man2/futex.2 b/man2/futex.2
index 7c7d038e2..949e22bf9 100644
--- a/man2/futex.2
+++ b/man2/futex.2
@@ -19,7 +19,7 @@
.\" FIXME Do we need to add some text regarding Torvald Riegel's 2015-01-24 mail
.\" http://thread.gmane.org/gmane.linux.kernel/1703405/focus=1873242
.\"
-.TH futex 2 2022-12-04 "Linux man-pages 6.02"
+.TH futex 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
futex \- fast user-space locking
.SH LIBRARY
@@ -62,8 +62,8 @@ Other
operations can be used to wake any processes or threads waiting
for a particular condition.
.PP
-A futex is a 32-bit value\(emreferred to below as a
-.IR "futex word" \(emwhose
+A futex is a 32-bit value\[em]referred to below as a
+.IR "futex word" \[em]whose
address is supplied to the
.BR futex ()
system call.
@@ -604,20 +604,20 @@ In other words,
.B FUTEX_WAKE_OP
does the following:
.RS
-.IP \(bu 3
+.IP \[bu] 3
saves the original value of the futex word at
.I uaddr2
and performs an operation to modify the value of the futex at
.IR uaddr2 ;
this is an atomic read-modify-write memory access (i.e., using atomic
machine instructions of the respective architecture)
-.IP \(bu
+.IP \[bu]
wakes up a maximum of
.I val
waiters on the futex for the futex word at
.IR uaddr ;
and
-.IP \(bu
+.IP \[bu]
dependent on the results of a test of the original value of the
futex word at
.IR uaddr2 ,
@@ -673,8 +673,8 @@ component has one of the following values:
FUTEX_OP_SET 0 /* uaddr2 = oparg; */
FUTEX_OP_ADD 1 /* uaddr2 += oparg; */
FUTEX_OP_OR 2 /* uaddr2 |= oparg; */
-FUTEX_OP_ANDN 3 /* uaddr2 &= \(tioparg; */
-FUTEX_OP_XOR 4 /* uaddr2 \(ha= oparg; */
+FUTEX_OP_ANDN 3 /* uaddr2 &= \[ti]oparg; */
+FUTEX_OP_XOR 4 /* uaddr2 \[ha]= oparg; */
.EE
.in
.IP
@@ -876,15 +876,15 @@ for the implementation of very specific IPC mechanisms.)
The PI-futex operations described below differ from the other
futex operations in that they impose policy on the use of the value of the
futex word:
-.IP \(bu 3
+.IP \[bu] 3
If the lock is not acquired, the futex word's value shall be 0.
-.IP \(bu
+.IP \[bu]
If the lock is acquired, the futex word's value shall
be the thread ID (TID;
see
.BR gettid (2))
of the owning thread.
-.IP \(bu
+.IP \[bu]
If the lock is owned and there are threads contending for the lock,
then the
.B FUTEX_WAITERS
@@ -974,7 +974,7 @@ PI futexes are operated on by specifying one of the values listed below in
.IR futex_op .
Note that the PI futex operations must be used as paired operations
and are subject to some additional requirements:
-.IP \(bu 3
+.IP \[bu] 3
.BR FUTEX_LOCK_PI ,
.BR FUTEX_LOCK_PI2 ,
and
@@ -986,7 +986,7 @@ must be called only on a futex owned by the calling thread,
as defined by the value policy, otherwise the error
.B EPERM
results.
-.IP \(bu
+.IP \[bu]
.B FUTEX_WAIT_REQUEUE_PI
pairs with
.BR FUTEX_CMP_REQUEUE_PI .
@@ -1010,7 +1010,7 @@ The PI futex operations are as follows:
.\" commit c87e2837be82df479a6bae9f155c43516d2feebc
This operation is used after an attempt to acquire
the lock via an atomic user-mode instruction failed
-because the futex word has a nonzero value\(emspecifically,
+because the futex word has a nonzero value\[em]specifically,
because it contained the (PID-namespace-specific) TID of the lock owner.
.IP
The operation checks the value of the futex word at the address
@@ -1545,7 +1545,7 @@ employs one or both of the pointers
.I uaddr
and
.IR uaddr2 ,
-but one of these does not point to a valid object\(emthat is,
+but one of these does not point to a valid object\[em]that is,
the address is not four-byte-aligned.
.TP
.B EINVAL
@@ -1576,7 +1576,7 @@ is invalid.
.BR FUTEX_CMP_REQUEUE )
The kernel detected an inconsistency between the user-space state at
.I uaddr
-and the kernel state\(emthat is, it detected a waiter which waits in
+and the kernel state\[em]that is, it detected a waiter which waits in
.B FUTEX_LOCK_PI
or
.B FUTEX_LOCK_PI2
@@ -1800,7 +1800,7 @@ Child (18535) 4
Demonstrate the use of futexes in a program where parent and child
use a pair of futexes located inside a shared anonymous mapping to
synchronize access to a shared resource: the terminal. The two
- processes each write \(aqnum\-loops\(aq messages to the terminal and employ
+ processes each write \[aq]num\-loops\[aq] messages to the terminal and employ
a synchronization protocol that ensures that they alternate in
writing messages.
*/
@@ -1828,7 +1828,7 @@ futex(uint32_t *uaddr, int futex_op, uint32_t val,
timeout, uaddr2, val3);
}
-/* Acquire the futex pointed to by \(aqfutexp\(aq: wait for its value to
+/* Acquire the futex pointed to by \[aq]futexp\[aq]: wait for its value to
become 1, and then set the value to 0. */
static void
@@ -1859,7 +1859,7 @@ fwait(uint32_t *futexp)
}
}
-/* Release the futex pointed to by \(aqfutexp\(aq: if the futex currently
+/* Release the futex pointed to by \[aq]futexp\[aq]: if the futex currently
has the value 0, set its value to 1 and then wake any futex waiters,
so that if the peer is blocked in fwait(), it can proceed. */
@@ -1945,15 +1945,15 @@ main(int argc, char *argv[])
.BR sched (7)
.PP
The following kernel source files:
-.IP \(bu 3
+.IP \[bu] 3
.I Documentation/pi\-futex.txt
-.IP \(bu
+.IP \[bu]
.I Documentation/futex\-requeue\-pi.txt
-.IP \(bu
+.IP \[bu]
.I Documentation/locking/rt\-mutex.txt
-.IP \(bu
+.IP \[bu]
.I Documentation/locking/rt\-mutex\-design.txt
-.IP \(bu
+.IP \[bu]
.I Documentation/robust\-futex\-ABI.txt
.PP
Franke, H., Russell, R., and Kirwood, M., 2002.
@@ -1968,7 +1968,7 @@ Hart, D., 2009. \fIA futex overview and update\fP,
.UE
.PP
Hart, D.\& and Guniguntala, D., 2009.
-\fIRequeue-PI: Making Glibc Condvars PI-Aware\fP
+\fIRequeue-PI: Making glibc Condvars PI-Aware\fP
(from proceedings of the 2009 Real-Time Linux Workshop),
.UR http://lwn.net/images/conf/rtlws11/papers/proc/p10.pdf
.UE
diff --git a/man2/futimesat.2 b/man2/futimesat.2
index d5fe5b273..34b75255b 100644
--- a/man2/futimesat.2
+++ b/man2/futimesat.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH futimesat 2 2022-12-04 "Linux man-pages 6.02"
+.TH futimesat 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
futimesat \- change timestamps of a file relative to a \
directory file descriptor
@@ -111,7 +111,7 @@ but that specification was replaced by the one for
.PP
A similar system call exists on Solaris.
.SH NOTES
-.SS Glibc notes
+.SS glibc notes
If
.I pathname
is NULL, then the glibc
diff --git a/man2/get_kernel_syms.2 b/man2/get_kernel_syms.2
index 74fc89012..b48b013ac 100644
--- a/man2/get_kernel_syms.2
+++ b/man2/get_kernel_syms.2
@@ -5,7 +5,7 @@
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
-.TH get_kernel_syms 2 2022-12-04 "Linux man-pages 6.02"
+.TH get_kernel_syms 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
get_kernel_syms \- retrieve exported kernel and module symbols
.SH SYNOPSIS
diff --git a/man2/get_mempolicy.2 b/man2/get_mempolicy.2
index 83678fd2b..9e9756ea3 100644
--- a/man2/get_mempolicy.2
+++ b/man2/get_mempolicy.2
@@ -24,7 +24,7 @@
.\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
.\" more precise specification of behavior.
.\"
-.TH get_mempolicy 2 2022-12-04 "Linux man-pages 6.02"
+.TH get_mempolicy 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
get_mempolicy \- retrieve NUMA memory policy for a thread
.SH LIBRARY
@@ -123,7 +123,7 @@ in the location pointed to by this argument.
.I maxnode
specifies the number of node IDs
that can be stored into
-.IR nodemask \(emthat
+.IR nodemask \[em]that
is, the maximum node ID plus one.
The value specified by
.I maxnode
diff --git a/man2/get_robust_list.2 b/man2/get_robust_list.2
index c2509a342..85c53b41e 100644
--- a/man2/get_robust_list.2
+++ b/man2/get_robust_list.2
@@ -7,7 +7,7 @@
.\" FIXME Something could be added to this page (or exit(2))
.\" about exit_robust_list processing
.\"
-.TH get_robust_list 2 2022-10-30 "Linux man-pages 6.02"
+.TH get_robust_list 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
get_robust_list, set_robust_list \- get/set list of robust futexes
.SH LIBRARY
diff --git a/man2/getcpu.2 b/man2/getcpu.2
index 1011beb3e..9066a20c9 100644
--- a/man2/getcpu.2
+++ b/man2/getcpu.2
@@ -9,7 +9,7 @@
.\"
.\" 2008, mtk, various edits
.\"
-.TH getcpu 2 2022-12-04 "Linux man-pages 6.02"
+.TH getcpu 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
getcpu \- determine CPU and NUMA node on which the calling thread is running
.SH LIBRARY
diff --git a/man2/getdents.2 b/man2/getdents.2
index 235e1dd35..5dfc5353c 100644
--- a/man2/getdents.2
+++ b/man2/getdents.2
@@ -8,7 +8,7 @@
.\" Derived from 'readdir.2'.
.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
.\"
-.TH getdents 2 2022-11-10 "Linux man-pages 6.02"
+.TH getdents 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getdents, getdents64 \- get directory entries
.SH LIBRARY
@@ -127,7 +127,7 @@ field is implemented since Linux 2.6.4.
It occupies a space that was previously a zero-filled padding byte in the
.I linux_dirent
structure.
-Thus, on kernels up to and including 2.6.3,
+Thus, on kernels up to and including Linux 2.6.3,
attempting to access this field always provides the value 0
.RB ( DT_UNKNOWN ).
.PP
@@ -204,7 +204,7 @@ SVr4.
Library support for
.BR getdents64 ()
was added in glibc 2.30;
-Glibc does not provide a wrapper for
+glibc does not provide a wrapper for
.BR getdents ();
call
.BR getdents ()
@@ -294,7 +294,7 @@ main(int argc, char *argv[])
printf("inode# file type d_reclen d_off d_name\en");
for (size_t bpos = 0; bpos < nread;) {
d = (struct linux_dirent *) (buf + bpos);
- printf("%8ld ", d\->d_ino);
+ printf("%8lu ", d\->d_ino);
d_type = *(buf + bpos + d\->d_reclen \- 1);
printf("%\-10s ", (d_type == DT_REG) ? "regular" :
(d_type == DT_DIR) ? "directory" :
diff --git a/man2/getdomainname.2 b/man2/getdomainname.2
index 7bcee3176..5e04738a9 100644
--- a/man2/getdomainname.2
+++ b/man2/getdomainname.2
@@ -6,7 +6,7 @@
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2008-11-27 by mtk
.\"
-.TH getdomainname 2 2022-10-30 "Linux man-pages 6.02"
+.TH getdomainname 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
getdomainname, setdomainname \- get/set NIS domain name
.SH LIBRARY
diff --git a/man2/getgid.2 b/man2/getgid.2
index 289d7cc61..efca9a7fc 100644
--- a/man2/getgid.2
+++ b/man2/getgid.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getgid 2 2022-10-30 "Linux man-pages 6.02"
+.TH getgid 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
getgid, getegid \- get group identity
.SH LIBRARY
diff --git a/man2/getgroups.2 b/man2/getgroups.2
index 833ae6119..cd0d83699 100644
--- a/man2/getgroups.2
+++ b/man2/getgroups.2
@@ -9,7 +9,7 @@
.\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN
.\" VALUE, made style of page more consistent with man-pages style.
.\"
-.TH getgroups 2 2022-12-03 "Linux man-pages 6.02"
+.TH getgroups 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getgroups, setgroups \- get/set list of supplementary group IDs
.SH LIBRARY
@@ -35,7 +35,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man2/gethostname.2 b/man2/gethostname.2
index 9cbc2640e..2ce03436d 100644
--- a/man2/gethostname.2
+++ b/man2/gethostname.2
@@ -9,7 +9,7 @@
.\" Modified 2004-06-17 by mtk
.\" Modified 2008-11-27 by mtk
.\"
-.TH gethostname 2 2022-12-04 "Linux man-pages 6.02"
+.TH gethostname 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
gethostname, sethostname \- get/set hostname
.SH LIBRARY
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
.BR gethostname ():
.nf
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
- || /* Glibc 2.19 and earlier */ _BSD_SOURCE
+ || /* glibc 2.19 and earlier */ _BSD_SOURCE
.\" The above is something of a simplification
.\" also before glibc 2.3 there was a bit churn
.fi
diff --git a/man2/getitimer.2 b/man2/getitimer.2
index 333c4bbd7..c207254f3 100644
--- a/man2/getitimer.2
+++ b/man2/getitimer.2
@@ -10,7 +10,7 @@
.\" 2005-04-06 mtk, Matthias Lang <matthias@corelatus.se>
.\" Noted MAX_SEC_IN_JIFFIES ceiling
.\"
-.TH getitimer 2 2022-12-04 "Linux man-pages 6.02"
+.TH getitimer 2 2023-02-12 "Linux man-pages 6.03"
.SH NAME
getitimer, setitimer \- get or set value of an interval timer
.SH LIBRARY
@@ -32,9 +32,9 @@ When a timer expires, a signal is generated for the calling process,
and the timer is reset to the specified interval
(if the interval is nonzero).
.PP
-Three types of timers\(emspecified via the
+Three types of timers\[em]specified via the
.I which
-argument\(emare provided,
+argument\[em]are provided,
each of which counts against a different clock and
generates a different signal on timer expiration:
.TP
@@ -158,7 +158,7 @@ or (since Linux 2.6.22) one of the
.I tv_usec
fields in the structure pointed to by
.I new_value
-contains a value outside the range 0 to 999999.
+contains a value outside the range [0, 999999].
.SH STANDARDS
POSIX.1-2001, SVr4, 4.4BSD (this call first appeared in 4.2BSD).
POSIX.1-2008 marks
@@ -253,7 +253,7 @@ POSIX.1-2001 says that
.BR setitimer ()
should fail if a
.I tv_usec
-value is specified that is outside of the range 0 to 999999.
+value is specified that is outside of the range [0, 999999].
However, up to and including Linux 2.6.21,
Linux does not give an error, but instead silently
adjusts the corresponding seconds value for the timer.
diff --git a/man2/getpagesize.2 b/man2/getpagesize.2
index b6716d49b..cc1bfed23 100644
--- a/man2/getpagesize.2
+++ b/man2/getpagesize.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getpagesize 2 2022-12-04 "Linux man-pages 6.02"
+.TH getpagesize 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getpagesize \- get memory page size
.SH LIBRARY
@@ -24,7 +24,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.20:
_DEFAULT_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
- Glibc 2.12 to glibc 2.19:
+ glibc 2.12 to glibc 2.19:
_BSD_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
diff --git a/man2/getpeername.2 b/man2/getpeername.2
index 0f3edd0bc..54a00fe4d 100644
--- a/man2/getpeername.2
+++ b/man2/getpeername.2
@@ -11,7 +11,7 @@
.\" Modified 17 Jul 2002, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added 'socket' to NAME, so that "man -k socket" will show this page.
.\"
-.TH getpeername 2 2022-10-30 "Linux man-pages 6.02"
+.TH getpeername 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
getpeername \- get name of connected peer socket
.SH LIBRARY
diff --git a/man2/getpid.2 b/man2/getpid.2
index e58006c79..7ce6ddf37 100644
--- a/man2/getpid.2
+++ b/man2/getpid.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getpid 2 2022-12-04 "Linux man-pages 6.02"
+.TH getpid 2 2023-01-22 "Linux man-pages 6.03"
.SH NAME
getpid, getppid \- get process identification
.SH LIBRARY
@@ -55,7 +55,7 @@ flag in
.BR clone (2).
.\"
.SS C library/kernel differences
-From glibc 2.3.4 up to and including Linux 2.24,
+From glibc 2.3.4 up to and including glibc 2.24,
the glibc wrapper function for
.BR getpid ()
cached PIDs,
diff --git a/man2/getpriority.2 b/man2/getpriority.2
index bb18e95bc..625514332 100644
--- a/man2/getpriority.2
+++ b/man2/getpriority.2
@@ -14,7 +14,7 @@
.\" Clarified meaning of 0 value for 'who' argument
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH getpriority 2 2022-12-04 "Linux man-pages 6.02"
+.TH getpriority 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
getpriority, setpriority \- get/set program scheduling priority
.SH LIBRARY
diff --git a/man2/getrandom.2 b/man2/getrandom.2
index a67fd55a6..1ee4e38e5 100644
--- a/man2/getrandom.2
+++ b/man2/getrandom.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getrandom 2 2022-12-04 "Linux man-pages 6.02"
+.TH getrandom 2 2023-02-08 "Linux man-pages 6.03"
.SH NAME
getrandom \- obtain a series of random bytes
.SH LIBRARY
@@ -185,15 +185,15 @@ that was opened by a library.
.\"
.SS Maximum number of bytes returned
As of Linux 3.19 the following limits apply:
-.IP \(bu 3
+.IP \[bu] 3
When reading from the
.I urandom
-source, a maximum of 33554431 bytes is returned by a single call to
+source, a maximum of 32Mi-1 bytes is returned by a single call to
.BR getrandom ()
on systems where
.I int
has a size of 32 bits.
-.IP \(bu
+.IP \[bu]
When reading from the
.I random
source, a maximum of 512 bytes is returned.
@@ -284,7 +284,7 @@ but the careful programmer will check for this anyway!
.SH BUGS
As of Linux 3.19, the following bug exists:
.\" FIXME patch proposed https://lkml.org/lkml/2014/11/29/16
-.IP \(bu 3
+.IP \[bu] 3
Depending on CPU load,
.BR getrandom ()
does not react to interrupts before reading all bytes requested.
diff --git a/man2/getresuid.2 b/man2/getresuid.2
index b1ea5253d..832d32e50 100644
--- a/man2/getresuid.2
+++ b/man2/getresuid.2
@@ -5,7 +5,7 @@
.\"
.\" Modified, 2003-05-26, Michael Kerrisk, <mtk.manpages@gmail.com>
.\"
-.TH getresuid 2 2022-12-04 "Linux man-pages 6.02"
+.TH getresuid 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
getresuid, getresgid \- get real, effective, and saved user/group IDs
.SH LIBRARY
diff --git a/man2/getrlimit.2 b/man2/getrlimit.2
index 63ca6ce53..cb69a04fc 100644
--- a/man2/getrlimit.2
+++ b/man2/getrlimit.2
@@ -42,7 +42,7 @@
.\" 2008-05-07, mtk / Peter Zijlstra, Added description of RLIMIT_RTTIME
.\" 2010-11-06, mtk: Added documentation of prlimit()
.\"
-.TH GETRLIMIT 2 2022-12-15 "Linux man-pages 6.02"
+.TH getrlimit 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getrlimit, setrlimit, prlimit \- get/set resource limits
.SH LIBRARY
@@ -744,7 +744,7 @@ The most pertinent limit here is
which specifies the maximum size to which a file can grow:
to be useful, this limit must be represented using a type
that is as wide as the type used to
-represent file offsets\(emthat is, as wide as a 64-bit
+represent file offsets\[em]that is, as wide as a 64-bit
.B off_t
(assuming a program compiled with
.IR _FILE_OFFSET_BITS=64 ).
diff --git a/man2/getrusage.2 b/man2/getrusage.2
index 0d093b209..d1d927738 100644
--- a/man2/getrusage.2
+++ b/man2/getrusage.2
@@ -17,7 +17,7 @@
.\" document ru_maxrss
.\" 2010-05-24, mtk, enhanced description of various fields
.\"
-.TH getrusage 2 2022-12-15 "Linux man-pages 6.02"
+.TH getrusage 2 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getrusage \- get resource usage
.SH LIBRARY
diff --git a/man2/getsid.2 b/man2/getsid.2
index a1f74d50d..aad2cb45c 100644
--- a/man2/getsid.2
+++ b/man2/getsid.2
@@ -5,7 +5,7 @@
.\"
.\" Modified Thu Oct 31 14:18:40 1996 by Eric S. Raymond <esr@y\thyrsus.com>
.\" Modified 2001-12-17, aeb
-.TH getsid 2 2022-12-04 "Linux man-pages 6.02"
+.TH getsid 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
getsid \- get session ID
.SH LIBRARY
diff --git a/man2/getsockname.2 b/man2/getsockname.2
index e6e8980c9..338004172 100644
--- a/man2/getsockname.2
+++ b/man2/getsockname.2
@@ -9,7 +9,7 @@
.\" Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Sun Mar 28 21:26:46 1999 by Andries Brouwer <aeb@cwi.nl>
.\"
-.TH getsockname 2 2022-10-30 "Linux man-pages 6.02"
+.TH getsockname 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
getsockname \- get socket name
.SH LIBRARY
diff --git a/man2/getsockopt.2 b/man2/getsockopt.2
index fb4795c1e..ec4ebbf7a 100644
--- a/man2/getsockopt.2
+++ b/man2/getsockopt.2
@@ -13,7 +13,7 @@
.\" Modified 1999 by Andi Kleen <ak@muc.de>.
.\" Removed most stuff because it is in socket.7 now.
.\"
-.TH getsockopt 2 2022-11-10 "Linux man-pages 6.02"
+.TH getsockopt 2 2022-11-10 "Linux man-pages 6.03"
.SH NAME
getsockopt, setsockopt \- get and set options on sockets
.SH LIBRARY
diff --git a/man2/gettid.2 b/man2/gettid.2
index 30509c272..68168fd36 100644
--- a/man2/gettid.2
+++ b/man2/gettid.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH gettid 2 2022-12-04 "Linux man-pages 6.02"
+.TH gettid 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
gettid \- get thread identification
.SH LIBRARY
diff --git a/man2/gettimeofday.2 b/man2/gettimeofday.2
index 88a80cb74..f131aba44 100644
--- a/man2/gettimeofday.2
+++ b/man2/gettimeofday.2
@@ -17,7 +17,7 @@
.\" Modified, 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirement.
.\"
-.TH gettimeofday 2 2022-12-04 "Linux man-pages 6.02"
+.TH gettimeofday 2 2023-02-12 "Linux man-pages 6.03"
.SH NAME
gettimeofday, settimeofday \- get / set time
.SH LIBRARY
@@ -42,7 +42,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
@@ -152,7 +152,7 @@ is invalid.
.I tv.tv_sec
is negative or
.I tv.tv_usec
-is outside the range [0..999,999].
+is outside the range [0, 999,999].
.TP
.BR EINVAL " (since Linux 4.3)"
.\" commit e1d7ba8735551ed79c7a0463a042353574b96da3
diff --git a/man2/getuid.2 b/man2/getuid.2
index 80899552a..829ddcb3e 100644
--- a/man2/getuid.2
+++ b/man2/getuid.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Historical remark, aeb, 2004-06-05
-.TH getuid 2 2022-10-30 "Linux man-pages 6.02"
+.TH getuid 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
getuid, geteuid \- get user identity
.SH LIBRARY
diff --git a/man2/getunwind.2 b/man2/getunwind.2
index 1bae0a74c..47afbaa5c 100644
--- a/man2/getunwind.2
+++ b/man2/getunwind.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getunwind 2 2022-11-10 "Linux man-pages 6.02"
+.TH getunwind 2 2022-11-10 "Linux man-pages 6.03"
.SH NAME
getunwind \- copy the unwind data to caller's buffer
.SH LIBRARY
diff --git a/man2/getxattr.2 b/man2/getxattr.2
index c47f458fc..a9cd3ce06 100644
--- a/man2/getxattr.2
+++ b/man2/getxattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH getxattr 2 2022-12-04 "Linux man-pages 6.02"
+.TH getxattr 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
getxattr, lgetxattr, fgetxattr \- retrieve an extended attribute value
.SH LIBRARY
diff --git a/man2/idle.2 b/man2/idle.2
index 1d66ad8c9..f4cdbc661 100644
--- a/man2/idle.2
+++ b/man2/idle.2
@@ -9,7 +9,7 @@
.\" N.B. calling "idle" from user process used to hang process!
.\" Modified Thu Oct 31 14:41:15 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" "
-.TH idle 2 2022-12-04 "Linux man-pages 6.02"
+.TH idle 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
idle \- make process 0 idle
.SH SYNOPSIS
diff --git a/man2/init_module.2 b/man2/init_module.2
index 226a4f903..7a03afb7f 100644
--- a/man2/init_module.2
+++ b/man2/init_module.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH init_module 2 2022-12-04 "Linux man-pages 6.02"
+.TH init_module 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
init_module, finit_module \- load a kernel module
.SH LIBRARY
diff --git a/man2/inotify_add_watch.2 b/man2/inotify_add_watch.2
index deee2f494..4c4ca5720 100644
--- a/man2/inotify_add_watch.2
+++ b/man2/inotify_add_watch.2
@@ -6,7 +6,7 @@
.\" 2005-07-19 Robert Love <rlove@rlove.org> - initial version
.\" 2006-02-07 mtk, various changes
.\"
-.TH inotify_add_watch 2 2022-10-30 "Linux man-pages 6.02"
+.TH inotify_add_watch 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
inotify_add_watch \- add a watch to an initialized inotify instance
.SH LIBRARY
diff --git a/man2/inotify_init.2 b/man2/inotify_init.2
index a3db2e256..58ba3ad1e 100644
--- a/man2/inotify_init.2
+++ b/man2/inotify_init.2
@@ -7,7 +7,7 @@
.\" 2006-02-07 mtk, minor changes
.\" 2008-10-10 mtk: add description of inotify_init1()
.\"
-.TH inotify_init 2 2022-12-04 "Linux man-pages 6.02"
+.TH inotify_init 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
inotify_init, inotify_init1 \- initialize an inotify instance
.SH LIBRARY
diff --git a/man2/inotify_rm_watch.2 b/man2/inotify_rm_watch.2
index 9dca60ca8..8d89537b9 100644
--- a/man2/inotify_rm_watch.2
+++ b/man2/inotify_rm_watch.2
@@ -5,7 +5,7 @@
.\" 2005-07-19 Robert Love <rlove@rlove.org> - initial version
.\" 2006-02-07 mtk, minor changes
.\"
-.TH inotify_rm_watch 2 2022-10-30 "Linux man-pages 6.02"
+.TH inotify_rm_watch 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
inotify_rm_watch \- remove an existing watch from an inotify instance
.SH LIBRARY
diff --git a/man2/intro.2 b/man2/intro.2
index 80dc72a00..4a7b2b2af 100644
--- a/man2/intro.2
+++ b/man2/intro.2
@@ -6,7 +6,7 @@
.\" new _syscall(2) page, and substantially enhanced and rewrote
.\" the remaining material on this page.
.\"
-.TH intro 2 2022-10-30 "Linux man-pages 6.02"
+.TH intro 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to system calls
.SH DESCRIPTION
@@ -21,13 +21,13 @@ Thus, making a system call looks the same as invoking a normal
library function.
.PP
In many cases, the C library wrapper function does nothing more than:
-.IP \(bu 3
+.IP \[bu] 3
copying arguments and the unique system call number to the
registers where the kernel expects them;
-.IP \(bu
+.IP \[bu]
trapping to kernel mode,
at which point the kernel does the real work of the system call;
-.IP \(bu
+.IP \[bu]
setting
.I errno
if the system call returns an error number when the kernel returns the
diff --git a/man2/io_cancel.2 b/man2/io_cancel.2
index 8ce00505d..13b6688f0 100644
--- a/man2/io_cancel.2
+++ b/man2/io_cancel.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_cancel 2 2022-10-30 "Linux man-pages 6.02"
+.TH io_cancel 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
io_cancel \- cancel an outstanding asynchronous I/O operation
.SH LIBRARY
diff --git a/man2/io_destroy.2 b/man2/io_destroy.2
index d8e153ebe..b917cda0d 100644
--- a/man2/io_destroy.2
+++ b/man2/io_destroy.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_destroy 2 2022-10-30 "Linux man-pages 6.02"
+.TH io_destroy 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
io_destroy \- destroy an asynchronous I/O context
.SH LIBRARY
diff --git a/man2/io_getevents.2 b/man2/io_getevents.2
index f064bdb9e..4f504e05b 100644
--- a/man2/io_getevents.2
+++ b/man2/io_getevents.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_getevents 2 2022-10-30 "Linux man-pages 6.02"
+.TH io_getevents 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
io_getevents \- read asynchronous I/O events from the completion queue
.SH LIBRARY
diff --git a/man2/io_setup.2 b/man2/io_setup.2
index 47938ce88..cf591725d 100644
--- a/man2/io_setup.2
+++ b/man2/io_setup.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_setup 2 2022-10-30 "Linux man-pages 6.02"
+.TH io_setup 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
io_setup \- create an asynchronous I/O context
.SH LIBRARY
@@ -77,7 +77,7 @@ The asynchronous I/O system calls first appeared in Linux 2.5.
is Linux-specific and should not be used in programs
that are intended to be portable.
.SH NOTES
-Glibc does not provide a wrapper for this system call.
+glibc does not provide a wrapper for this system call.
You could invoke it using
.BR syscall (2).
But instead, you probably want to use the
diff --git a/man2/io_submit.2 b/man2/io_submit.2
index a3e59b461..3f9c9afd6 100644
--- a/man2/io_submit.2
+++ b/man2/io_submit.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH io_submit 2 2022-10-30 "Linux man-pages 6.02"
+.TH io_submit 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
io_submit \- submit asynchronous I/O blocks for processing
.SH LIBRARY
@@ -252,7 +252,7 @@ The asynchronous I/O system calls first appeared in Linux 2.5.
is Linux-specific and should not be used in
programs that are intended to be portable.
.SH NOTES
-Glibc does not provide a wrapper for this system call.
+glibc does not provide a wrapper for this system call.
You could invoke it using
.BR syscall (2).
But instead, you probably want to use the
diff --git a/man2/ioctl.2 b/man2/ioctl.2
index 8f7769914..e436dd524 100644
--- a/man2/ioctl.2
+++ b/man2/ioctl.2
@@ -10,7 +10,7 @@
.\" Modified 1999-06-25 by Rachael Munns <vashti@dream.org.uk>
.\" Modified 2000-09-21 by Andries Brouwer <aeb@cwi.nl>
.\"
-.TH ioctl 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ioctl \- control device
.SH LIBRARY
@@ -134,9 +134,9 @@ one or more ASCII letters were used.
For example,
.B TCGETS
has value
-0x00005401, with 0x54 = \(aqT\(aq indicating the terminal driver, and
+0x00005401, with 0x54 = \[aq]T\[aq] indicating the terminal driver, and
.B CYGETTIMEOUT
-has value 0x00435906, with 0x43 0x59 = \(aqC\(aq \(aqY\(aq
+has value 0x00435906, with 0x43 0x59 = \[aq]C\[aq] \[aq]Y\[aq]
indicating the cyclades driver.
.PP
Later (0.98p5) some more information was built into the number.
diff --git a/man2/ioctl_console.2 b/man2/ioctl_console.2
index 75bd06282..5731d605c 100644
--- a/man2/ioctl_console.2
+++ b/man2/ioctl_console.2
@@ -19,7 +19,7 @@
.\" VT_UNLOCKSWITCH (since Linux 1.3.47, needs CAP_SYS_TTY_CONFIG)
.\" VT_GETHIFONTMASK (since Linux 2.6.18)
.\"
-.TH ioctl_console 2 2022-12-15 "Linux man-pages 6.02"
+.TH ioctl_console 2 2023-01-22 "Linux man-pages 6.03"
.SH NAME
ioctl_console \- ioctls for console terminal and virtual consoles
.SH DESCRIPTION
@@ -587,7 +587,7 @@ struct vt_stat {
For each vt in use, the corresponding bit in the
.I v_state
member is set.
-(Kernels 1.0 through 1.1.92.)
+(Linux 1.0 through Linux 1.1.92.)
.TP
.B VT_RELDISP
Release a display.
@@ -747,7 +747,7 @@ variable
.BR TIOCLINUX ", " subcode = 8
Dump screen width and height, cursor position, and all the
character-attribute pairs.
-(Kernels 1.1.67 through 1.1.91 only.
+(Linux 1.1.67 through Linux 1.1.91 only.
With Linux 1.1.92 or later, read from
.I /dev/vcsa*
instead.)
@@ -755,7 +755,7 @@ instead.)
.BR TIOCLINUX ", " subcode = 9
Restore screen width and height, cursor position, and all the
character-attribute pairs.
-(Kernels 1.1.67 through 1.1.91 only.
+(Linux 1.1.67 through Linux 1.1.91 only.
With Linux 1.1.92 or later, write to
.I /dev/vcsa*
instead.)
diff --git a/man2/ioctl_fat.2 b/man2/ioctl_fat.2
index 9c256cbfb..72393555f 100644
--- a/man2/ioctl_fat.2
+++ b/man2/ioctl_fat.2
@@ -1,7 +1,7 @@
.\" Copyright (C) 2014, Heinrich Schuchardt <xypron.glpk@gmx.de>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH ioctl_fat 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl_fat 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
ioctl_fat \- manipulating the FAT filesystem
.SH LIBRARY
@@ -310,7 +310,7 @@ main(int argc, char *argv[])
* Invert archive attribute.
*/
printf("Toggling archive flag\en");
- attr \(ha= ATTR_ARCH;
+ attr \[ha]= ATTR_ARCH;
/*
* Write the changed FAT file attributes.
@@ -408,11 +408,11 @@ The following was recorded when applying the program to the directory
.in +4n
.EX
$ \fB./fat_dir /mnt/user\fP
-\[char46] \-> \(aq\(aq
-\[char46]. \-> \(aq\(aq
-ALONGF\(ti1.TXT \-> \(aqa long filename.txt\(aq
-UPPER.TXT \-> \(aq\(aq
-LOWER.TXT \-> \(aqlower.txt\(aq
+\&. \-> \[aq]\[aq]
+\&.. \-> \[aq]\[aq]
+ALONGF\[ti]1.TXT \-> \[aq]a long filename.txt\[aq]
+UPPER.TXT \-> \[aq]\[aq]
+LOWER.TXT \-> \[aq]lower.txt\[aq]
.EE
.in
.\"
@@ -468,7 +468,7 @@ main(int argc, char *argv[])
/*
* Write both the short name and the long name.
*/
- printf("%s \-> \(aq%s\(aq\en", entry[0].d_name, entry[1].d_name);
+ printf("%s \-> \[aq]%s\[aq]\en", entry[0].d_name, entry[1].d_name);
}
if (ret == \-1) {
diff --git a/man2/ioctl_ficlonerange.2 b/man2/ioctl_ficlonerange.2
index 3a077b2c4..3797d362a 100644
--- a/man2/ioctl_ficlonerange.2
+++ b/man2/ioctl_ficlonerange.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2016, Oracle. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_ficlonerange 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl_ficlonerange 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ioctl_ficlonerange, ioctl_ficlone \-
share some the data of one file with another file
diff --git a/man2/ioctl_fideduperange.2 b/man2/ioctl_fideduperange.2
index b27e08076..dec914759 100644
--- a/man2/ioctl_fideduperange.2
+++ b/man2/ioctl_fideduperange.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2016, Oracle. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_fideduperange 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl_fideduperange 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ioctl_fideduperange \- share some the data of one file with another file
.SH LIBRARY
diff --git a/man2/ioctl_fslabel.2 b/man2/ioctl_fslabel.2
index e87a6268b..67be8d018 100644
--- a/man2/ioctl_fslabel.2
+++ b/man2/ioctl_fslabel.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2018, Red Hat, Inc. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_fslabel 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl_fslabel 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ioctl_fslabel \- get or set a filesystem label
.SH LIBRARY
@@ -60,7 +60,7 @@ This API is Linux-specific.
.SH NOTES
The maximum string length for this interface is
.BR FSLABEL_MAX ,
-including the terminating null byte (\(aq\\0\(aq).
+including the terminating null byte (\[aq]\\0\[aq]).
Filesystems have differing maximum label lengths, which may or
may not include the terminating null.
The string provided to
diff --git a/man2/ioctl_getfsmap.2 b/man2/ioctl_getfsmap.2
index bf686c7dd..3f63f0841 100644
--- a/man2/ioctl_getfsmap.2
+++ b/man2/ioctl_getfsmap.2
@@ -1,7 +1,7 @@
.\" Copyright (c) 2017, Oracle. All rights reserved.
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH ioctl_getfsmap 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl_getfsmap 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ioctl_getfsmap \- retrieve the physical layout of the filesystem
.SH LIBRARY
diff --git a/man2/ioctl_iflags.2 b/man2/ioctl_iflags.2
index aa4df8b44..e3d8b0ab8 100644
--- a/man2/ioctl_iflags.2
+++ b/man2/ioctl_iflags.2
@@ -3,12 +3,12 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ioctl_iflags 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl_iflags 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ioctl_iflags \- ioctl() operations for inode flags
.SH DESCRIPTION
Various Linux filesystems support the notion of
-.IR "inode flags" \(emattributes
+.IR "inode flags" \[em]attributes
that modify the semantics of files and directories.
These flags can be retrieved and modified using two
.BR ioctl (2)
@@ -20,10 +20,10 @@ int attr;
fd = open("pathname", ...);
ioctl(fd, FS_IOC_GETFLAGS, &attr); /* Place current flags
- in \(aqattr\(aq */
+ in \[aq]attr\[aq] */
attr |= FS_NOATIME_FL; /* Tweak returned bit mask */
ioctl(fd, FS_IOC_SETFLAGS, &attr); /* Update flags for inode
- referred to by \(aqfd\(aq */
+ referred to by \[aq]fd\[aq] */
.EE
.in
.PP
@@ -40,7 +40,7 @@ The following flags are supported
and
.BR chattr (1)):
.TP
-.BR FS_APPEND_FL " \(aqa\(aq"
+.BR FS_APPEND_FL " \[aq]a\[aq]"
The file can be opened only with the
.B O_APPEND
flag.
@@ -49,7 +49,7 @@ Only a privileged process
.RB ( CAP_LINUX_IMMUTABLE )
can set or clear this attribute.
.TP
-.BR FS_COMPR_FL " \(aqc\(aq"
+.BR FS_COMPR_FL " \[aq]c\[aq]"
Store the file in a compressed format on disk.
This flag is
.I not
@@ -57,7 +57,7 @@ supported by most of the mainstream filesystem implementations;
one exception is
.BR btrfs (5).
.TP
-.BR FS_DIRSYNC_FL " \(aqD\(aq (since Linux 2.6.0)"
+.BR FS_DIRSYNC_FL " \[aq]D\[aq] (since Linux 2.6.0)"
Write directory changes synchronously to disk.
This flag provides semantics equivalent to the
.BR mount (2)
@@ -65,10 +65,10 @@ This flag provides semantics equivalent to the
option, but on a per-directory basis.
This flag can be applied only to directories.
.\" .TP
-.\" .BR FS_EXTENT_FL " \(aqe\(aq"
+.\" .BR FS_EXTENT_FL " \[aq]e\[aq]"
.\" FIXME Some support on ext4? (EXT4_EXTENTS_FL)
.TP
-.BR FS_IMMUTABLE_FL " \(aqi\(aq"
+.BR FS_IMMUTABLE_FL " \[aq]i\[aq]"
The file is immutable:
no changes are permitted to the file contents or metadata
(permissions, timestamps, ownership, link count, and so on).
@@ -77,7 +77,7 @@ Only a privileged process
.RB ( CAP_LINUX_IMMUTABLE )
can set or clear this attribute.
.TP
-.BR FS_JOURNAL_DATA_FL " \(aqj\(aq"
+.BR FS_JOURNAL_DATA_FL " \[aq]j\[aq]"
Enable journaling of file data on
.BR ext3 (5)
and
@@ -92,7 +92,7 @@ mode, a privileged
process can set this flag to enable journaling of data updates on
a per-file basis.
.TP
-.BR FS_NOATIME_FL " \(aqA\(aq"
+.BR FS_NOATIME_FL " \[aq]A\[aq]"
Don't update the file last access time when the file is accessed.
This can provide I/O performance benefits for applications that do not care
about the accuracy of this timestamp.
@@ -101,10 +101,10 @@ This flag provides functionality similar to the
.B MS_NOATIME
flag, but on a per-file basis.
.\" .TP
-.\" .BR FS_NOCOMP_FL " \(aq\(aq"
+.\" .BR FS_NOCOMP_FL " \[aq]\[aq]"
.\" FIXME Support for FS_NOCOMP_FL on Btrfs?
.TP
-.BR FS_NOCOW_FL " \(aqC\(aq (since Linux 2.6.39)"
+.BR FS_NOCOW_FL " \[aq]C\[aq] (since Linux 2.6.39)"
The file will not be subject to copy-on-write updates.
This flag has an effect only on filesystems that support copy-on-write
semantics, such as Btrfs.
@@ -113,17 +113,17 @@ See
and
.BR btrfs (5).
.TP
-.BR FS_NODUMP_FL " \(aqd\(aq"
+.BR FS_NODUMP_FL " \[aq]d\[aq]"
Don't include this file in backups made using
.BR dump (8).
.TP
-.BR FS_NOTAIL_FL " \(aqt\(aq"
+.BR FS_NOTAIL_FL " \[aq]t\[aq]"
This flag is supported only on Reiserfs.
It disables the Reiserfs tail-packing feature,
which tries to pack small files (and the final fragment of larger files)
into the same disk block as the file metadata.
.TP
-.BR FS_PROJINHERIT_FL " \(aqP\(aq (since Linux 4.5)"
+.BR FS_PROJINHERIT_FL " \[aq]P\[aq] (since Linux 4.5)"
.\" commit 040cb3786d9b25293b8b0b05b90da0f871e1eb9b
.\" Flag name was added in Linux 4.4
.\" FIXME Not currently supported because not in FS_FL_USER_MODIFIABLE?
@@ -131,13 +131,13 @@ Inherit the quota project ID.
Files and subdirectories will inherit the project ID of the directory.
This flag can be applied only to directories.
.TP
-.BR FS_SECRM_FL " \(aqs\(aq"
+.BR FS_SECRM_FL " \[aq]s\[aq]"
Mark the file for secure deletion.
This feature is not implemented by any filesystem,
since the task of securely erasing a file from a recording medium
is surprisingly difficult.
.TP
-.BR FS_SYNC_FL " \(aqS\(aq"
+.BR FS_SYNC_FL " \[aq]S\[aq]"
Make file updates synchronous.
For files, this makes all writes synchronous
(as though all opens of the file were with the
@@ -147,7 +147,7 @@ For directories, this has the same effect as the
.B FS_DIRSYNC_FL
flag.
.TP
-.BR FS_TOPDIR_FL " \(aqT\(aq"
+.BR FS_TOPDIR_FL " \[aq]T\[aq]"
Mark a directory for special treatment under the Orlov block-allocation
strategy.
See
@@ -156,7 +156,7 @@ for details.
This flag can be applied only to directories and
has an effect only for ext2, ext3, and ext4.
.TP
-.BR FS_UNRM_FL " \(aqu\(aq"
+.BR FS_UNRM_FL " \[aq]u\[aq]"
Allow the file to be undeleted if it is deleted.
This feature is not implemented by any filesystem,
since it is possible to implement file-recovery mechanisms outside the kernel.
diff --git a/man2/ioctl_ns.2 b/man2/ioctl_ns.2
index 4a0c1148c..124e17e89 100644
--- a/man2/ioctl_ns.2
+++ b/man2/ioctl_ns.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ioctl_ns 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioctl_ns 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ioctl_ns \- ioctl() operations for Linux namespaces
.SH DESCRIPTION
@@ -259,12 +259,12 @@ main(int argc, char *argv[])
fprintf(stderr, "\enDisplay the result of one or both "
"of NS_GET_USERNS (u) or NS_GET_PARENT (p)\en"
"for the specified /proc/[pid]/ns/[file]. If neither "
- "\(aqp\(aq nor \(aqu\(aq is specified,\en"
+ "\[aq]p\[aq] nor \[aq]u\[aq] is specified,\en"
"NS_GET_USERNS is the default.\en");
exit(EXIT_FAILURE);
}
- /* Obtain a file descriptor for the \(aqns\(aq file specified
+ /* Obtain a file descriptor for the \[aq]ns\[aq] file specified
in argv[1]. */
fd = open(argv[1], O_RDONLY);
@@ -276,7 +276,7 @@ main(int argc, char *argv[])
/* Obtain a file descriptor for the owning user namespace and
then obtain and display the inode number of that namespace. */
- if (argc < 3 || strchr(argv[2], \(aqu\(aq)) {
+ if (argc < 3 || strchr(argv[2], \[aq]u\[aq])) {
userns_fd = ioctl(fd, NS_GET_USERNS);
if (userns_fd == \-1) {
@@ -304,12 +304,12 @@ main(int argc, char *argv[])
/* Obtain a file descriptor for the parent namespace and
then obtain and display the inode number of that namespace. */
- if (argc > 2 && strchr(argv[2], \(aqp\(aq)) {
+ if (argc > 2 && strchr(argv[2], \[aq]p\[aq])) {
parent_fd = ioctl(fd, NS_GET_PARENT);
if (parent_fd == \-1) {
if (errno == EINVAL)
- printf("Can\(aq get parent namespace of a "
+ printf("Can\[aq] get parent namespace of a "
"nonhierarchical namespace\en");
else if (errno == EPERM)
printf("The parent namespace is outside "
diff --git a/man2/ioctl_tty.2 b/man2/ioctl_tty.2
index b205885ee..352b92482 100644
--- a/man2/ioctl_tty.2
+++ b/man2/ioctl_tty.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH ioctl_tty 2 2022-12-15 "Linux man-pages 6.02"
+.TH ioctl_tty 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ioctl_tty \- ioctls for terminals and serial lines
.SH LIBRARY
@@ -489,7 +489,7 @@ otherwise).
In packet mode, each subsequent
.BR read (2)
will return a packet that either contains a single nonzero control byte,
-or has a single byte containing zero (\(aq\e0\(aq) followed by data
+or has a single byte containing zero (\[aq]\e0\[aq]) followed by data
written on the slave side of the pseudoterminal.
If the first byte is not
.B TIOCPKT_DATA
@@ -512,10 +512,10 @@ TIOCPKT_START T{
Output to the terminal is restarted.
T}
TIOCPKT_DOSTOP T{
-The start and stop characters are \fB\(haS\fP/\fB\(haQ\fP.
+The start and stop characters are \fB\[ha]S\fP/\fB\[ha]Q\fP.
T}
TIOCPKT_NOSTOP T{
-The start and stop characters are not \fB\(haS\fP/\fB\(haQ\fP.
+The start and stop characters are not \fB\[ha]S\fP/\fB\[ha]Q\fP.
T}
.TE
.ad
@@ -535,7 +535,7 @@ This mode is used by
and
.BR rlogind (8)
to implement a remote-echoed,
-locally \fB\(haS\fP/\fB\(haQ\fP flow-controlled remote login.
+locally \fB\[ha]S\fP/\fB\[ha]Q\fP flow-controlled remote login.
.TP
.B TIOCGPKT
Argument:
@@ -847,12 +847,12 @@ main(int argc, char *argv[])
/* Change baud rate when more arguments were provided */
if (argc == 3 || argc == 4) {
/* Clear the current output baud rate and fill a new value */
- tio.c_cflag &= \(tiCBAUD;
+ tio.c_cflag &= \[ti]CBAUD;
tio.c_cflag |= BOTHER;
tio.c_ospeed = atoi(argv[2]);
/* Clear the current input baud rate and fill a new value */
- tio.c_cflag &= \(ti(CBAUD << IBSHIFT);
+ tio.c_cflag &= \[ti](CBAUD << IBSHIFT);
tio.c_cflag |= BOTHER << IBSHIFT;
/* When 4th argument is not provided reuse output baud rate */
tio.c_ispeed = (argc == 4) ? atoi(argv[3]) : atoi(argv[2]);
diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2
index df9103f81..6bbef2503 100644
--- a/man2/ioctl_userfaultfd.2
+++ b/man2/ioctl_userfaultfd.2
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ioctl_userfaultfd 2 2022-12-15 "Linux man-pages 6.02"
+.TH ioctl_userfaultfd 2 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ioctl_userfaultfd \- create a file descriptor for handling page faults in user
space
diff --git a/man2/ioperm.2 b/man2/ioperm.2
index bb4e7d716..078f6c172 100644
--- a/man2/ioperm.2
+++ b/man2/ioperm.2
@@ -12,7 +12,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH ioperm 2 2022-10-30 "Linux man-pages 6.02"
+.TH ioperm 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ioperm \- set port input/output permissions
.SH LIBRARY
@@ -94,7 +94,7 @@ Before Linux 2.4,
permissions were not inherited by a child created by
.BR fork (2).
.PP
-Glibc has an
+glibc has an
.BR ioperm ()
prototype both in
.I <sys/io.h>
diff --git a/man2/iopl.2 b/man2/iopl.2
index b155697be..01c7dd96b 100644
--- a/man2/iopl.2
+++ b/man2/iopl.2
@@ -10,7 +10,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH iopl 2 2022-10-30 "Linux man-pages 6.02"
+.TH iopl 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iopl \- change I/O privilege level
.SH LIBRARY
@@ -66,8 +66,8 @@ intended to be portable.
.SH NOTES
.\" Libc5 treats it as a system call and has a prototype in
.\" .IR <unistd.h> .
-.\" Glibc1 does not have a prototype.
-Glibc2 has a prototype both in
+.\" glibc1 does not have a prototype.
+glibc2 has a prototype both in
.I <sys/io.h>
and in
.IR <sys/perm.h> .
diff --git a/man2/ioprio_set.2 b/man2/ioprio_set.2
index f0c30c248..cbb76f353 100644
--- a/man2/ioprio_set.2
+++ b/man2/ioprio_set.2
@@ -7,7 +7,7 @@
.\" with various additions by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\"
-.TH ioprio_set 2 2022-12-04 "Linux man-pages 6.02"
+.TH ioprio_set 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ioprio_get, ioprio_set \- get/set I/O scheduling class and priority
.SH LIBRARY
@@ -348,7 +348,7 @@ must follow both rules, or the call will fail with the error
.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=4464
.\" Ulrich Drepper replied that he wasn't going to add these
.\" to glibc.
-Glibc does not yet provide a suitable header file defining
+glibc does not yet provide a suitable header file defining
the function prototypes and macros described on this page.
Suitable definitions can be found in
.IR linux/ioprio.h .
diff --git a/man2/ipc.2 b/man2/ipc.2
index ab935e304..ec074ff44 100644
--- a/man2/ipc.2
+++ b/man2/ipc.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH ipc 2 2022-10-30 "Linux man-pages 6.02"
+.TH ipc 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ipc \- System V IPC system calls
.SH LIBRARY
@@ -42,7 +42,7 @@ Only standard library implementors and kernel hackers need to know about
is Linux-specific, and should not be used in programs
intended to be portable.
.SH NOTES
-On some architectures\(emfor example x86-64 and ARM\(emthere is no
+On some architectures\[em]for example x86-64 and ARM\[em]there is no
.BR ipc ()
system call; instead,
.BR msgctl (2),
diff --git a/man2/kcmp.2 b/man2/kcmp.2
index 8abe63db9..e70280a7b 100644
--- a/man2/kcmp.2
+++ b/man2/kcmp.2
@@ -5,7 +5,7 @@
.\"
.\" Kernel commit d97b46a64674a267bc41c9e16132ee2a98c3347d
.\"
-.TH kcmp 2 2022-10-30 "Linux man-pages 6.02"
+.TH kcmp 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
kcmp \- compare two processes to determine if they share a kernel resource
.SH LIBRARY
diff --git a/man2/kexec_load.2 b/man2/kexec_load.2
index bf396218b..33f0a7d4a 100644
--- a/man2/kexec_load.2
+++ b/man2/kexec_load.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH kexec_load 2 2022-10-30 "Linux man-pages 6.02"
+.TH kexec_load 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
kexec_load, kexec_file_load \- load a new kernel for later execution
.SH LIBRARY
@@ -128,7 +128,7 @@ If these checks pass, the kernel copies the segment data to kernel memory.
Each segment specified in
.I segments
is copied as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I buf
and
.I bufsz
@@ -139,14 +139,14 @@ The value in
may not exceed the value in the
.I memsz
field.
-.IP \(bu
+.IP \[bu]
.I mem
and
.I memsz
specify a physical address range that is the target of the copy.
The values specified in both fields must be multiples of
the system page size.
-.IP \(bu
+.IP \[bu]
.I bufsz
bytes are copied from the source buffer to the target kernel buffer.
If
@@ -193,7 +193,7 @@ for the new kernel.
The
.I cmdline_len
argument specifies size of the buffer.
-The last byte in the buffer must be a null byte (\(aq\e0\(aq).
+The last byte in the buffer must be a null byte (\[aq]\e0\[aq]).
.PP
The
.I flags
@@ -288,7 +288,7 @@ Two or more of the kernel target buffers overlap.
.B EINVAL
The value in
.I cmdline[cmdline_len\-1]
-is not \(aq\e0\(aq.
+is not \[aq]\e0\[aq].
.TP
.B EINVAL
The file referred to by
diff --git a/man2/keyctl.2 b/man2/keyctl.2
index fd112c087..d7c06d560 100644
--- a/man2/keyctl.2
+++ b/man2/keyctl.2
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH keyctl 2 2022-12-04 "Linux man-pages 6.02"
+.TH keyctl 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
keyctl \- manipulate the kernel's key management facility
.SH LIBRARY
@@ -120,8 +120,8 @@ does not exist depends on the value of
.IR int ).
If
.I arg3
-contains a nonzero value, then\(emif it is appropriate to do so
-(e.g., when looking up the user, user-session, or session key)\(ema new key
+contains a nonzero value, then\[em]if it is appropriate to do so
+(e.g., when looking up the user, user-session, or session key)\[em]a new key
is created and its real key ID returned as the function result.
.\" The keyctl_get_keyring_ID.3 page says that a new key
.\" "will be created *if it is appropriate to do so**. What is the
@@ -173,7 +173,7 @@ Otherwise,
is treated as the description (name) of a keyring,
and the behavior is as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
If a keyring with a matching description exists,
the process will attempt to subscribe to that keyring
as its session keyring if possible;
@@ -182,7 +182,7 @@ In order to subscribe to the keyring,
the caller must have
.I search
permission on the keyring.
-.IP \(bu
+.IP \[bu]
If a keyring with a matching description does not exist,
then a new keyring with the specified description is created,
and the process is subscribed to that keyring as its session keyring.
@@ -1438,7 +1438,7 @@ result as:
.IP
.in +4n
.EX
-base \(ha private mod prime
+base \[ha] private mod prime
.EE
.in
.IP
@@ -1698,26 +1698,26 @@ was
.B KEYCTL_DH_COMPUTE
and one of the following has failed:
.RS
-.IP \(bu 3
+.IP \[bu] 3
copying of the
.IR "struct keyctl_dh_params" ,
provided in the
.I arg2
argument, from user space;
-.IP \(bu
+.IP \[bu]
copying of the
.IR "struct keyctl_kdf_params" ,
provided in the non-NULL
.I arg5
argument, from user space
(in case kernel supports performing KDF operation on DH operation result);
-.IP \(bu
+.IP \[bu]
copying of data pointed by the
.I hashname
field of the
.I "struct keyctl_kdf_params"
from user space;
-.IP \(bu
+.IP \[bu]
copying of data pointed by the
.I otherinfo
field of the
@@ -1725,7 +1725,7 @@ field of the
from user space if the
.I otherinfolen
field was nonzero;
-.IP \(bu
+.IP \[bu]
copying of the result to user space.
.RE
.TP
@@ -2030,20 +2030,20 @@ Auth key description: .request_key_auth;1000;1000;0b010000;20d035bf
.PP
The last few lines of the above output show that the example program
was able to fetch:
-.IP \(bu 3
+.IP \[bu] 3
the description of the key to be instantiated,
which included the name of the key
.RI ( mykey );
-.IP \(bu
+.IP \[bu]
the payload of the authorization key, which consisted of the data
.RI ( somepayloaddata )
passed to
.BR request_key (2);
-.IP \(bu
+.IP \[bu]
the destination keyring that was specified in the call to
.BR request_key (2);
and
-.IP \(bu
+.IP \[bu]
the description of the authorization key,
where we can see that the name of the authorization key matches
the ID of the key that is to be instantiated
@@ -2065,7 +2065,7 @@ and ID
.PP
.in +4n
.EX
-$ \fBcat /proc/keys | egrep \(aqmykey|256e6a6\(aq\fP
+$ \fBcat /proc/keys | egrep \[aq]mykey|256e6a6\[aq]\fP
0256e6a6 I\-\-Q\-\-\- 194 perm 3f030000 1000 1000 keyring _ses: 3
20d035bf I\-\-Q\-\-\- 1 perm 3f010000 1000 1000 user mykey: 16
.EE
@@ -2177,7 +2177,7 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- auth_key_payload[akp_size] = \(aq\e0\(aq;
+ auth_key_payload[akp_size] = \[aq]\e0\[aq];
fprintf(fp, "Auth key payload: %s\en", auth_key_payload);
/*
diff --git a/man2/kill.2 b/man2/kill.2
index 8875b09c0..3486dde4a 100644
--- a/man2/kill.2
+++ b/man2/kill.2
@@ -21,7 +21,7 @@
.\" Modified 2004-06-24 by aeb
.\" Modified, 2004-11-30, after idea from emmanuel.colbus@ensimag.imag.fr
.\"
-.TH kill 2 2022-12-04 "Linux man-pages 6.02"
+.TH kill 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
kill \- send signal to a process
.SH LIBRARY
diff --git a/man2/landlock_add_rule.2 b/man2/landlock_add_rule.2
index 4dee498e5..aab0a703e 100644
--- a/man2/landlock_add_rule.2
+++ b/man2/landlock_add_rule.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH landlock_add_rule 2 2022-10-30 "Linux man-pages 6.02"
+.TH landlock_add_rule 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
landlock_add_rule \- add a new Landlock rule to a ruleset
.SH LIBRARY
@@ -89,12 +89,12 @@ Landlock is supported by the kernel but disabled at boot time.
.B EINVAL
.I flags
is not 0, or the rule accesses are inconsistent (i.e.,
-.I rule_attr->allowed_access
+.I rule_attr\->allowed_access
is not a subset of the ruleset handled accesses).
.TP
.B ENOMSG
Empty accesses (i.e.,
-.I rule_attr->allowed_access
+.I rule_attr\->allowed_access
is 0).
.TP
.B EBADF
diff --git a/man2/landlock_create_ruleset.2 b/man2/landlock_create_ruleset.2
index bc29c1d6b..615549156 100644
--- a/man2/landlock_create_ruleset.2
+++ b/man2/landlock_create_ruleset.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH landlock_create_ruleset 2 2022-10-30 "Linux man-pages 6.02"
+.TH landlock_create_ruleset 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
landlock_create_ruleset \- create a new Landlock ruleset
.SH LIBRARY
@@ -109,7 +109,7 @@ was not a valid address.
.TP
.B ENOMSG
Empty accesses (i.e.,
-.I attr->handled_access_fs
+.I attr\->handled_access_fs
is 0).
.SH VERSIONS
Landlock was added in Linux 5.13.
diff --git a/man2/landlock_restrict_self.2 b/man2/landlock_restrict_self.2
index f0ef20207..2eb3f0391 100644
--- a/man2/landlock_restrict_self.2
+++ b/man2/landlock_restrict_self.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH landlock_restrict_self 2 2022-10-30 "Linux man-pages 6.02"
+.TH landlock_restrict_self 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
landlock_restrict_self \- enforce a Landlock ruleset
.SH LIBRARY
diff --git a/man2/link.2 b/man2/link.2
index fd3bc965f..ef4979878 100644
--- a/man2/link.2
+++ b/man2/link.2
@@ -9,7 +9,7 @@
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
.\"
-.TH link 2 2022-12-04 "Linux man-pages 6.02"
+.TH link 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
link, linkat \- make a new name for a file
.SH LIBRARY
@@ -385,7 +385,7 @@ is dereferenced if it is a symbolic link.
For precise control over the treatment of symbolic links when
creating a link, use
.BR linkat ().
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR linkat ()
is unavailable, the glibc wrapper function falls back to the use of
diff --git a/man2/listen.2 b/man2/listen.2
index 8b3d0d475..370d8ae41 100644
--- a/man2/listen.2
+++ b/man2/listen.2
@@ -14,7 +14,7 @@
.\" Modified 11 May 2001 by Sam Varshavchik <mrsam@courier-mta.com>
.\"
.\"
-.TH listen 2 2022-12-04 "Linux man-pages 6.02"
+.TH listen 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
listen \- listen for connections on a socket
.SH LIBRARY
diff --git a/man2/listxattr.2 b/man2/listxattr.2
index 0acf72c1d..af3b42234 100644
--- a/man2/listxattr.2
+++ b/man2/listxattr.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH listxattr 2 2022-12-04 "Linux man-pages 6.02"
+.TH listxattr 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
listxattr, llistxattr, flistxattr \- list extended attribute names
.SH LIBRARY
@@ -86,7 +86,7 @@ from the second call.)
The
.I list
of names is returned as an unordered array of null-terminated character
-strings (attribute names are separated by null bytes (\(aq\e0\(aq)), like this:
+strings (attribute names are separated by null bytes (\[aq]\e0\[aq])), like this:
.PP
.in +4n
.EX
diff --git a/man2/llseek.2 b/man2/llseek.2
index 4607dfe45..c8d873a8d 100644
--- a/man2/llseek.2
+++ b/man2/llseek.2
@@ -6,7 +6,7 @@
.\"
.\" Modified Thu Oct 31 15:16:23 1996 by Eric S. Raymond <esr@thyrsus.com>
.\"
-.TH LLSEEK 2 2022-10-09 "Linux man-pages 6.02"
+.TH _llseek 2 2023-01-07 "Linux man-pages 6.03"
.SH NAME
_llseek \- reposition read/write file offset
.SH LIBRARY
diff --git a/man2/lookup_dcookie.2 b/man2/lookup_dcookie.2
index 1a05b8b59..bed1567b2 100644
--- a/man2/lookup_dcookie.2
+++ b/man2/lookup_dcookie.2
@@ -4,7 +4,7 @@
.\"
.\" Modified 2004-06-17 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH lookup_dcookie 2 2022-12-04 "Linux man-pages 6.02"
+.TH lookup_dcookie 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
lookup_dcookie \- return a directory entry's path
.SH LIBRARY
diff --git a/man2/lseek.2 b/man2/lseek.2
index 7c1331140..65f2abd46 100644
--- a/man2/lseek.2
+++ b/man2/lseek.2
@@ -15,7 +15,7 @@
.\" Modified 2003-08-21 by Andries Brouwer <aeb@cwi.nl>
.\" 2011-09-18, mtk, Added SEEK_DATA + SEEK_HOLE
.\"
-.TH lseek 2 2022-12-04 "Linux man-pages 6.02"
+.TH lseek 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
lseek \- reposition read/write file offset
.SH LIBRARY
@@ -57,7 +57,7 @@ bytes.
allows the file offset to be set beyond the end
of the file (but this does not change the size of the file).
If data is later written at this point, subsequent reads of the data
-in the gap (a "hole") return null bytes (\(aq\e0\(aq) until
+in the gap (a "hole") return null bytes (\[aq]\e0\[aq]) until
data is actually written into the gap.
.SS Seeking file data and holes
Since Linux 3.1, Linux supports the following additional values for
@@ -137,26 +137,26 @@ The
and
.B SEEK_DATA
operations are supported for the following filesystems:
-.IP \(bu 3
+.IP \[bu] 3
Btrfs (since Linux 3.1)
-.IP \(bu
+.IP \[bu]
OCFS (since Linux 3.2)
.\" commit 93862d5e1ab875664c6cc95254fc365028a48bb1
-.IP \(bu
+.IP \[bu]
XFS (since Linux 3.5)
-.IP \(bu
+.IP \[bu]
ext4 (since Linux 3.8)
-.IP \(bu
+.IP \[bu]
.BR tmpfs (5)
(since Linux 3.8)
-.IP \(bu
+.IP \[bu]
NFS (since Linux 3.18)
.\" commit 1c6dcbe5ceff81c2cf8d929646af675cd59fe7c0
.\" commit 24bab491220faa446d945624086d838af41d616c
-.IP \(bu
+.IP \[bu]
FUSE (since Linux 4.5)
.\" commit 0b5da8db145bfd44266ac964a2636a0cf8d7c286
-.IP \(bu
+.IP \[bu]
GFS2 (since Linux 4.15)
.\" commit 3a27411cb4bc3ce31db228e3569ad01b462a4310
.SH RETURN VALUE
diff --git a/man2/madvise.2 b/man2/madvise.2
index a2131f9f6..5b2895739 100644
--- a/man2/madvise.2
+++ b/man2/madvise.2
@@ -12,7 +12,7 @@
.\" 2011-09-18, Doug Goldstein <cardoe@cardoe.com>
.\" Document MADV_HUGEPAGE and MADV_NOHUGEPAGE
.\"
-.TH madvise 2 2022-12-04 "Linux man-pages 6.02"
+.TH madvise 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
madvise \- give advice about use of memory
.SH LIBRARY
@@ -362,8 +362,8 @@ and file-backed pages.
For all memory types,
memory may only be replaced by huge pages on hugepage-aligned boundaries.
For file-mapped memory
-\(emincluding tmpfs (see
-.BR tmpfs (2))\(em
+\[em]including tmpfs (see
+.BR tmpfs (2))\[em]
the mapping must also be naturally hugepage-aligned within the file.
Additionally,
for file-backed,
diff --git a/man2/mbind.2 b/man2/mbind.2
index 81f290eb5..d2eb581a5 100644
--- a/man2/mbind.2
+++ b/man2/mbind.2
@@ -32,7 +32,7 @@
.\" Author: Lee Schermerhorn <lee.schermerhorn@hp.com>
.\" Date: Thu Oct 25 14:16:32 2012 +0200
.\"
-.TH mbind 2 2022-12-04 "Linux man-pages 6.02"
+.TH mbind 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mbind \- set memory policy for a memory range
.SH LIBRARY
@@ -60,11 +60,11 @@ The memory policy defines from which node memory is allocated.
.PP
If the memory range specified by the
.IR addr " and " len
-arguments includes an "anonymous" region of memory\(emthat is
+arguments includes an "anonymous" region of memory\[em]that is
a region of memory created using the
.BR mmap (2)
system call with the
-.BR MAP_ANONYMOUS \(emor
+.BR MAP_ANONYMOUS \[em]or
a memory-mapped file, mapped using the
.BR mmap (2)
system call with the
diff --git a/man2/membarrier.2 b/man2/membarrier.2
index 3aa9f6d72..a530c662a 100644
--- a/man2/membarrier.2
+++ b/man2/membarrier.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH membarrier 2 2022-12-15 "Linux man-pages 6.02"
+.TH membarrier 2 2022-12-15 "Linux man-pages 6.03"
.SH NAME
membarrier \- issue memory barriers on a set of threads
.SH LIBRARY
diff --git a/man2/memfd_create.2 b/man2/memfd_create.2
index b8c881f77..5e7ebd3d6 100644
--- a/man2/memfd_create.2
+++ b/man2/memfd_create.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH memfd_create 2 2022-12-04 "Linux man-pages 6.02"
+.TH memfd_create 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
memfd_create \- create an anonymous file
.SH LIBRARY
@@ -297,7 +297,7 @@ A second process obtains a file descriptor for the
file and maps it.
Among the possible ways in which this could happen are the following:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The process that called
.BR memfd_create ()
could transfer the resulting file descriptor to the second process
@@ -307,7 +307,7 @@ and
.BR cmsg (3)).
The second process then maps the file using
.BR mmap (2).
-.IP \(bu
+.IP \[bu]
The second process is created via
.BR fork (2)
and thus automatically inherits the file descriptor and mapping.
@@ -315,7 +315,7 @@ and thus automatically inherits the file descriptor and mapping.
there is a natural trust relationship between the two processes,
since they are running under the same user ID.
Therefore, file sealing would not normally be necessary.)
-.IP \(bu
+.IP \[bu]
The second process opens the file
.IR /proc/<pid>/fd/<fd> ,
where
@@ -429,7 +429,7 @@ main(int argc, char *argv[])
if (argc < 3) {
fprintf(stderr, "%s name size [seals]\en", argv[0]);
- fprintf(stderr, "\et\(aqseals\(aq can contain any of the "
+ fprintf(stderr, "\et\[aq]seals\[aq] can contain any of the "
"following characters:\en");
fprintf(stderr, "\et\etg \- F_SEAL_GROW\en");
fprintf(stderr, "\et\ets \- F_SEAL_SHRINK\en");
@@ -461,21 +461,21 @@ main(int argc, char *argv[])
/* Code to map the file and populate the mapping with data
omitted. */
- /* If a \(aqseals\(aq command\-line argument was supplied, set some
+ /* If a \[aq]seals\[aq] command\-line argument was supplied, set some
seals on the file. */
if (seals_arg != NULL) {
seals = 0;
- if (strchr(seals_arg, \(aqg\(aq) != NULL)
+ if (strchr(seals_arg, \[aq]g\[aq]) != NULL)
seals |= F_SEAL_GROW;
- if (strchr(seals_arg, \(aqs\(aq) != NULL)
+ if (strchr(seals_arg, \[aq]s\[aq]) != NULL)
seals |= F_SEAL_SHRINK;
- if (strchr(seals_arg, \(aqw\(aq) != NULL)
+ if (strchr(seals_arg, \[aq]w\[aq]) != NULL)
seals |= F_SEAL_WRITE;
- if (strchr(seals_arg, \(aqW\(aq) != NULL)
+ if (strchr(seals_arg, \[aq]W\[aq]) != NULL)
seals |= F_SEAL_FUTURE_WRITE;
- if (strchr(seals_arg, \(aqS\(aq) != NULL)
+ if (strchr(seals_arg, \[aq]S\[aq]) != NULL)
seals |= F_SEAL_SEAL;
if (fcntl(fd, F_ADD_SEALS, seals) == \-1)
diff --git a/man2/memfd_secret.2 b/man2/memfd_secret.2
index 6b6c65156..5b2c87d37 100644
--- a/man2/memfd_secret.2
+++ b/man2/memfd_secret.2
@@ -7,7 +7,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH memfd_secret 2 2022-10-30 "Linux man-pages 6.02"
+.TH memfd_secret 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
memfd_secret \- create an anonymous RAM-based file
to access secret memory regions
@@ -154,7 +154,7 @@ it is much harder to exfiltrate data from these regions.
.PP
.BR memfd_secret ()
provides the following protections:
-.IP \(bu 3
+.IP \[bu] 3
Enhanced protection
(in conjunction with all the other in-kernel attack prevention systems)
against ROP attacks.
@@ -167,7 +167,7 @@ to reconstruct the missing page table entries,
which significantly increases difficulty of the attack,
especially when other protections like the kernel stack size limit
and address space layout randomization are in place.
-.IP \(bu
+.IP \[bu]
Prevent cross-process user-space memory exposures.
Once a region for a
.BR memfd_secret ()
@@ -176,7 +176,7 @@ the user can't accidentally pass it into the kernel
to be transmitted somewhere.
The memory pages in this region cannot be accessed via the direct map
and they are disallowed in get_user_pages.
-.IP \(bu
+.IP \[bu]
Harden against exploited kernel flaws.
In order to access memory areas backed by
.BR memfd_secret (),
diff --git a/man2/migrate_pages.2 b/man2/migrate_pages.2
index 6bc8c7bca..c2f29f59f 100644
--- a/man2/migrate_pages.2
+++ b/man2/migrate_pages.2
@@ -15,7 +15,7 @@
.\" permission notice identical to this one.
.\" %%%LICENSE_END
.\"
-.TH migrate_pages 2 2022-12-04 "Linux man-pages 6.02"
+.TH migrate_pages 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
migrate_pages \- move all pages in a process to another set of nodes
.SH LIBRARY
diff --git a/man2/mincore.2 b/man2/mincore.2
index a74dd2582..8ac2bdf6a 100644
--- a/man2/mincore.2
+++ b/man2/mincore.2
@@ -11,7 +11,7 @@
.\" after message from <gordon.jin@intel.com>
.\" 2007-01-08 mtk, rewrote various parts
.\"
-.TH mincore 2 2022-12-04 "Linux man-pages 6.02"
+.TH mincore 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mincore \- determine whether pages are resident in memory
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man2/mkdir.2 b/man2/mkdir.2
index 4dbe07b19..0e0f9f8a8 100644
--- a/man2/mkdir.2
+++ b/man2/mkdir.2
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH mkdir 2 2022-12-04 "Linux man-pages 6.02"
+.TH mkdir 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mkdir, mkdirat \- create a directory
.SH LIBRARY
@@ -49,7 +49,7 @@ It is modified by the process's
.I umask
in the usual way: in the absence of a default ACL, the mode of the
created directory is
-.RI ( mode " & \(ti" umask " & 0777)."
+.RI ( mode " & \[ti]" umask " & 0777)."
Whether other
.I mode
bits are honored for the created directory depends on the operating system.
@@ -223,7 +223,7 @@ bit is also honored.
There are many infelicities in the protocol underlying NFS.
Some of these affect
.BR mkdir ().
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR mkdirat ()
is unavailable, the glibc wrapper function falls back to the use of
diff --git a/man2/mknod.2 b/man2/mknod.2
index 7d1af906f..2fd730469 100644
--- a/man2/mknod.2
+++ b/man2/mknod.2
@@ -9,7 +9,7 @@
.\" Modified 2003-04-23 by Michael Kerrisk
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH mknod 2 2022-12-04 "Linux man-pages 6.02"
+.TH mknod 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mknod, mknodat \- create a special or ordinary file
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The system call
@@ -63,7 +63,7 @@ The file mode is modified by the process's
.I umask
in the usual way: in the absence of a default ACL, the permissions of the
created node are
-.RI ( mode " & \(ti" umask ).
+.RI ( mode " & \[ti]" umask ).
.PP
The file type must be one of
.BR S_IFREG ,
diff --git a/man2/mlock.2 b/man2/mlock.2
index 1e3bd17d7..ff0f20352 100644
--- a/man2/mlock.2
+++ b/man2/mlock.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH mlock 2 2022-12-04 "Linux man-pages 6.02"
+.TH mlock 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mlock, mlock2, munlock, mlockall, munlockall \- lock and unlock memory
.SH LIBRARY
@@ -352,7 +352,7 @@ after an
.BR mlockall ()
or
.BR mlock ()
-operation\(emnot even from a thread which runs at a low priority within
+operation\[em]not even from a thread which runs at a low priority within
a process which also has a thread running at elevated priority.
.PP
The memory lock on an address range is automatically removed
@@ -459,7 +459,7 @@ This bug was fixed
.\" commit 0cf2f6f6dc605e587d2c1120f295934c77e810e8
in Linux 4.9.
.PP
-In the 2.4 series Linux kernels up to and including 2.4.17,
+In Linux 2.4 series of kernels up to and including Linux 2.4.17,
a bug caused the
.BR mlockall ()
.B MCL_FUTURE
diff --git a/man2/mmap.2 b/man2/mmap.2
index dd2286816..c847a77ac 100644
--- a/man2/mmap.2
+++ b/man2/mmap.2
@@ -18,7 +18,7 @@
.\" 2007-07-10, mtk, Added an example program.
.\" 2008-11-18, mtk, document MAP_STACK
.\"
-.TH mmap 2 2022-12-15 "Linux man-pages 6.02"
+.TH mmap 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mmap, munmap \- map or unmap files or devices into memory
.SH LIBRARY
@@ -208,7 +208,7 @@ was added in Linux 2.4.
.B MAP_DENYWRITE
This flag is ignored.
.\" Introduced in 1.1.36, removed in 1.3.24.
-(Long ago\(emLinux 2.0 and earlier\(emit signaled
+(Long ago\[em]Linux 2.0 and earlier\[em]it signaled
that attempts to write to the underlying file should fail with
.BR ETXTBSY .
But this was a source of denial-of-service attacks.)
@@ -273,7 +273,7 @@ Note that older kernels which do not recognize the
.B MAP_FIXED_NOREPLACE
flag will typically (upon detecting a collision with a preexisting mapping)
fall back to a
-.RB \(lqnon- MAP_FIXED \(rq
+.RB \[lq]non- MAP_FIXED \[rq]
type of behavior:
they will return an address that is different from the requested address.
Therefore, backward-compatible software
@@ -966,7 +966,7 @@ main(int argc, char *argv[])
handle_error("fstat");
offset = atoi(argv[2]);
- pa_offset = offset & \(ti(sysconf(_SC_PAGE_SIZE) \- 1);
+ pa_offset = offset & \[ti](sysconf(_SC_PAGE_SIZE) \- 1);
/* offset for mmap() must be page aligned */
if (offset >= sb.st_size) {
@@ -978,7 +978,7 @@ main(int argc, char *argv[])
length = atoi(argv[3]);
if (offset + length > sb.st_size)
length = sb.st_size \- offset;
- /* Can\(aqt display bytes past end of file */
+ /* Can\[aq]t display bytes past end of file */
} else { /* No length arg ==> display to end of file */
length = sb.st_size \- offset;
@@ -1029,7 +1029,7 @@ The descriptions of the following files in
and
.IR /proc/[pid]/smaps .
.PP
-B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\(en129 and 389\(en391.
+B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\[en]129 and 389\[en]391.
.\"
.\" Repeat after me: private read-only mappings are 100% equivalent to
.\" shared read-only mappings. No ifs, buts, or maybes. -- Linus
diff --git a/man2/mmap2.2 b/man2/mmap2.2
index b123c7890..99ce33d66 100644
--- a/man2/mmap2.2
+++ b/man2/mmap2.2
@@ -6,7 +6,7 @@
.\" Added description of mmap2
.\" Modified, 2004-11-25, mtk -- removed stray #endif in prototype
.\"
-.TH mmap2 2 2022-10-30 "Linux man-pages 6.02"
+.TH mmap2 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
mmap2 \- map files or devices into memory
.SH LIBRARY
@@ -36,7 +36,7 @@ file in 4096-byte units (instead of bytes, as is done by
.BR mmap (2)).
This enables applications that use a 32-bit
.I off_t
-to map large files (up to 2^44 bytes).
+to map large files (up to 2\[ha]44 bytes).
.SH RETURN VALUE
On success,
.BR mmap2 ()
diff --git a/man2/modify_ldt.2 b/man2/modify_ldt.2
index 51d8e55f8..69a02387a 100644
--- a/man2/modify_ldt.2
+++ b/man2/modify_ldt.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH modify_ldt 2 2022-11-10 "Linux man-pages 6.02"
+.TH modify_ldt 2 2022-11-10 "Linux man-pages 6.03"
.SH NAME
modify_ldt \- get or set a per-process LDT entry
.SH LIBRARY
diff --git a/man2/mount.2 b/man2/mount.2
index 226b77126..7084c0cee 100644
--- a/man2/mount.2
+++ b/man2/mount.2
@@ -17,7 +17,7 @@
.\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
.\" 2008-10-06, mtk: Add discussion of namespaces.
.\"
-.TH mount 2 2022-12-04 "Linux man-pages 6.02"
+.TH mount 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mount \- mount filesystem
.SH LIBRARY
@@ -73,17 +73,17 @@ The choice of which operation to perform is determined by
testing the bits set in
.IR mountflags ,
with the tests being conducted in the order listed here:
-.IP \(bu 3
+.IP \[bu] 3
Remount an existing mount:
.I mountflags
includes
.BR MS_REMOUNT .
-.IP \(bu
+.IP \[bu]
Create a bind mount:
.I mountflags
includes
.BR MS_BIND .
-.IP \(bu
+.IP \[bu]
Change the propagation type of an existing mount:
.I mountflags
includes one of
@@ -92,12 +92,12 @@ includes one of
.BR MS_SLAVE ,
or
.BR MS_UNBINDABLE .
-.IP \(bu
+.IP \[bu]
Move an existing mount to a new location:
.I mountflags
includes
.BR MS_MOVE .
-.IP \(bu
+.IP \[bu]
Create a new mount:
.I mountflags
includes none of the above flags.
@@ -134,17 +134,17 @@ Reduce on-disk updates of inode timestamps (atime, mtime, ctime)
by maintaining these changes only in memory.
The on-disk timestamps are updated only when:
.RS
-.IP \(bu 3
+.IP \[bu] 3
the inode needs to be updated for some change unrelated to file timestamps;
-.IP \(bu
+.IP \[bu]
the application employs
.BR fsync (2),
.BR syncfs (2),
or
.BR sync (2);
-.IP \(bu
+.IP \[bu]
an undeleted inode is evicted from memory; or
-.IP \(bu
+.IP \[bu]
more than 24 hours have passed since the inode was written to disk.
.RE
.IP
@@ -179,7 +179,7 @@ this mount option requires the
capability and a kernel configured with the
.B CONFIG_MANDATORY_FILE_LOCKING
option.
-Mandatory locking has been fully deprecated in v5.15 kernels, so
+Mandatory locking has been fully deprecated in Linux 5.15, so
this flag should be considered deprecated.
.TP
.B MS_NOATIME
@@ -292,16 +292,16 @@ meaning that all mounts of the same filesystem share those flags.
(Previously, all of the flags were per-superblock.)
.PP
The per-mount-point flags are as follows:
-.IP \(bu 3
+.IP \[bu] 3
Since Linux 2.4:
.BR MS_NODEV ", " MS_NOEXEC ", and " MS_NOSUID
flags are settable on a per-mount-point basis.
-.IP \(bu
+.IP \[bu]
Additionally, since Linux 2.6.16:
.B MS_NOATIME
and
.BR MS_NODIRATIME .
-.IP \(bu
+.IP \[bu]
Additionally, since Linux 2.6.20:
.BR MS_RELATIME .
.PP
@@ -710,7 +710,7 @@ A move operation
.RB ( MS_MOVE )
was attempted, but
.I source
-was not a mount, or was \(aq/\(aq.
+was not a mount, or was \[aq]/\[aq].
.TP
.B EINVAL
A bind operation
diff --git a/man2/mount_setattr.2 b/man2/mount_setattr.2
index 6115eeccb..7eee0c77f 100644
--- a/man2/mount_setattr.2
+++ b/man2/mount_setattr.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mount_setattr 2 2022-10-30 "Linux man-pages 6.02"
+.TH mount_setattr 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
mount_setattr \- change properties of a mount or mount tree
.SH LIBRARY
@@ -174,21 +174,21 @@ are equivalent to the following steps:
.PP
.in +4n
.EX
-unsigned int current_mnt_flags = mnt->mnt_flags;
+unsigned int current_mnt_flags = mnt\->mnt_flags;
/*
* Clear all flags set in .attr_clr,
* clearing MOUNT_ATTR_NOEXEC and MOUNT_ATTR_NODEV.
*/
-current_mnt_flags &= ~attr->attr_clr;
+current_mnt_flags &= \(tiattr\->attr_clr;
/*
* Now set all flags set in .attr_set,
* applying MOUNT_ATTR_RDONLY and MOUNT_ATTR_NOSUID.
*/
-current_mnt_flags |= attr->attr_set;
+current_mnt_flags |= attr\->attr_set;
-mnt->mnt_flags = current_mnt_flags;
+mnt\->mnt_flags = current_mnt_flags;
.EE
.in
.PP
@@ -544,13 +544,13 @@ or
set and the flag is locked.
Mount attributes become locked on a mount if:
.RS
-.IP \(bu 3
+.IP \[bu] 3
A new mount or mount tree is created causing mount propagation across user
namespaces
(i.e., propagation to a mount namespace owned by a different user namespace).
The kernel will lock the aforementioned flags to prevent these sensitive
properties from being altered.
-.IP \(bu
+.IP \[bu]
A new mount and user namespace pair is created.
This happens for example when specifying
.B CLONE_NEWUSER | CLONE_NEWNS
@@ -564,7 +564,7 @@ to prevent sensitive mount properties from being altered.
Since the newly created mount namespace will be owned by the
newly created user namespace,
a calling process that is privileged in the new
-user namespace would\(emin the absence of such locking\(embe
+user namespace would\[em]in the absence of such locking\[em]be
able to alter sensitive mount properties (e.g., to remount a mount
that was marked read-only as read-write in the new mount namespace).
.RE
@@ -609,7 +609,7 @@ This encompasses the user and group IDs associated with inodes
and also the following
.BR xattr (7)
keys:
-.IP \(bu 3
+.IP \[bu] 3
.IR security.capability ,
whenever filesystem capabilities
are stored or returned in the
@@ -618,7 +618,7 @@ format,
which stores a root user ID alongside the capabilities
(see
.BR capabilities (7)).
-.IP \(bu
+.IP \[bu]
.I system.posix_acl_access
and
.IR system.posix_acl_default ,
@@ -629,7 +629,7 @@ or
entries.
.PP
The following conditions must be met in order to create an ID-mapped mount:
-.IP \(bu 3
+.IP \[bu] 3
The caller must have the
.B CAP_SYS_ADMIN
capability in the user namespace the filesystem was mounted in.
@@ -637,51 +637,51 @@ capability in the user namespace the filesystem was mounted in.
.\" Christian Brauner
.\" Note, currently no filesystems mountable in non-initial user namespaces
.\" support ID-mapped mounts.
-.IP \(bu
+.IP \[bu]
The underlying filesystem must support ID-mapped mounts.
Currently, the following filesystems support ID-mapped mounts:
.\" fs_flags = FS_ALLOW_IDMAP in kernel sources
.IP
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
.BR xfs (5)
(since Linux 5.12)
-.IP \(bu
+.IP \[bu]
.BR ext4 (5)
(since Linux 5.12)
-.IP \(bu
+.IP \[bu]
.B FAT
(since Linux 5.12)
-.IP \(bu
+.IP \[bu]
.BR btrfs (5)
(since Linux 5.15)
.\" commit 5b9b26f5d0b88b74001dcfe4ab8a8f2f4e744112
-.IP \(bu
+.IP \[bu]
.B ntfs3
(since Linux 5.15)
.\" commit 82cae269cfa953032fbb8980a7d554d60fb00b17
-.IP \(bu
+.IP \[bu]
.B f2fs
(since Linux 5.18)
.\" commit 984fc4e76d63345499f01c0c198a4b44860cf027
-.IP \(bu
+.IP \[bu]
.B erofs
(since Linux 5.19)
.\" commit 6c459b78d4793afbba6d864c466cc5cd2932459d
-.IP \(bu
+.IP \[bu]
.B overlayfs
(ID-mapped lower and upper layers supported since Linux 5.19)
.PD
.RE
-.IP \(bu 3
+.IP \[bu] 3
The mount must not already be ID-mapped.
This also implies that the ID mapping of a mount cannot be altered.
-.IP \(bu
+.IP \[bu]
The mount must be a detached mount;
that is,
it must have been created by calling
-.IP \(bu
+.IP \[bu]
The mount must not have any writers.
.\" commit 1bbcd277a53e08d619ffeec56c5c9287f2bf42f
.BR open_tree (2)
@@ -731,7 +731,7 @@ for the sake of ID mapping a mount.
.PP
ID-mapped mounts can be useful in the following
and a variety of other scenarios:
-.IP \(bu 3
+.IP \[bu] 3
Sharing files or filesystems
between multiple users or multiple machines,
especially in complex scenarios.
@@ -744,25 +744,25 @@ and use it on multiple computers
where they are assigned different user IDs and group IDs.
This effectively makes it possible to
assign random user IDs and group IDs at login time.
-.IP \(bu
+.IP \[bu]
Sharing files or filesystems
from the host with unprivileged containers.
This allows a user to avoid having to change ownership permanently through
.BR chown (2).
-.IP \(bu
+.IP \[bu]
ID mapping a container's root filesystem.
Users don't need to change ownership permanently through
.BR chown (2).
Especially for large root filesystems, using
.BR chown (2)
can be prohibitively expensive.
-.IP \(bu
+.IP \[bu]
Sharing files or filesystems
between containers with non-overlapping ID mappings.
-.IP \(bu
+.IP \[bu]
Implementing discretionary access (DAC) permission checking
for filesystems lacking a concept of ownership.
-.IP \(bu
+.IP \[bu]
Efficiently changing ownership on a per-mount basis.
In contrast to
.BR chown (2),
@@ -775,7 +775,7 @@ With ID-mapped mounts,
a single
.BR mount_setattr ()
system call will be sufficient to change the ownership of all files.
-.IP \(bu
+.IP \[bu]
Taking the current ownership into account.
ID mappings specify precisely
what a user or group ID is supposed to be mapped to.
@@ -784,7 +784,7 @@ This contrasts with the
system call which cannot by itself
take the current ownership of the files it changes into account.
It simply changes the ownership to the specified user ID and group ID.
-.IP \(bu
+.IP \[bu]
Locally and temporarily restricted ownership changes.
ID-mapped mounts make it possible to change ownership locally,
restricting the ownership changes to specific mounts,
@@ -821,7 +821,7 @@ and let
.I ksize
be the size of the structure which the kernel supports,
then there are three cases to consider:
-.IP \(bu 3
+.IP \[bu] 3
If
.I ksize
equals
@@ -829,7 +829,7 @@ equals
then there is no version mismatch and
.I attr
can be used verbatim.
-.IP \(bu
+.IP \[bu]
If
.I ksize
is larger than
@@ -841,7 +841,7 @@ the kernel treats all of the extension fields
not provided by the user-space application
as having zero values.
This provides backwards-compatibility.
-.IP \(bu
+.IP \[bu]
If
.I ksize
is smaller than
@@ -939,13 +939,13 @@ move_mount(int from_dirfd, const char *from_pathname,
}
static const struct option longopts[] = {
- {"map\-mount", required_argument, NULL, \(aqa\(aq},
- {"recursive", no_argument, NULL, \(aqb\(aq},
- {"read\-only", no_argument, NULL, \(aqc\(aq},
- {"block\-setid", no_argument, NULL, \(aqd\(aq},
- {"block\-devices", no_argument, NULL, \(aqe\(aq},
- {"block\-exec", no_argument, NULL, \(aqf\(aq},
- {"no\-access\-time", no_argument, NULL, \(aqg\(aq},
+ {"map\-mount", required_argument, NULL, \[aq]a\[aq]},
+ {"recursive", no_argument, NULL, \[aq]b\[aq]},
+ {"read\-only", no_argument, NULL, \[aq]c\[aq]},
+ {"block\-setid", no_argument, NULL, \[aq]d\[aq]},
+ {"block\-devices", no_argument, NULL, \[aq]e\[aq]},
+ {"block\-exec", no_argument, NULL, \[aq]f\[aq]},
+ {"no\-access\-time", no_argument, NULL, \[aq]g\[aq]},
{ NULL, 0, NULL, 0 },
};
@@ -953,35 +953,38 @@ int
main(int argc, char *argv[])
{
int fd_userns = \-1;
+ int fd_tree;
int index = 0;
int ret;
bool recursive = false;
+ const char *source;
+ const char *target;
struct mount_attr *attr = &(struct mount_attr){};
while ((ret = getopt_long_only(argc, argv, "",
longopts, &index)) != \-1) {
switch (ret) {
- case \(aqa\(aq:
+ case \[aq]a\[aq]:
fd_userns = open(optarg, O_RDONLY | O_CLOEXEC);
if (fd_userns == \-1)
err(EXIT_FAILURE, "open(%s)", optarg);
break;
- case \(aqb\(aq:
+ case \[aq]b\[aq]:
recursive = true;
break;
- case \(aqc\(aq:
+ case \[aq]c\[aq]:
attr\->attr_set |= MOUNT_ATTR_RDONLY;
break;
- case \(aqd\(aq:
+ case \[aq]d\[aq]:
attr\->attr_set |= MOUNT_ATTR_NOSUID;
break;
- case \(aqe\(aq:
+ case \[aq]e\[aq]:
attr\->attr_set |= MOUNT_ATTR_NODEV;
break;
- case \(aqf\(aq:
+ case \[aq]f\[aq]:
attr\->attr_set |= MOUNT_ATTR_NOEXEC;
break;
- case \(aqg\(aq:
+ case \[aq]g\[aq]:
attr\->attr_set |= MOUNT_ATTR_NOATIME;
attr\->attr_clr |= MOUNT_ATTR__ATIME;
break;
@@ -993,11 +996,11 @@ main(int argc, char *argv[])
if ((argc \- optind) < 2)
errx(EXIT_FAILURE, "Missing source or target mount point");
- const char *source = argv[optind];
- const char *target = argv[optind + 1];
+ source = argv[optind];
+ target = argv[optind + 1];
- /* In the following, \-1 as the \(aqdirfd\(aq argument ensures that
- open_tree() fails if \(aqsource\(aq is not an absolute pathname. */
+ /* In the following, \-1 as the \[aq]dirfd\[aq] argument ensures that
+ open_tree() fails if \[aq]source\[aq] is not an absolute pathname. */
.\" Christian Brauner
.\" When writing programs I like to never use relative paths with AT_FDCWD
.\" because. Because making assumptions about the current working directory
@@ -1011,9 +1014,9 @@ main(int argc, char *argv[])
.\" If I can't operate based on a well-known dirfd I use absolute paths
.\" with a -EBADF dirfd passed to *at() functions.
- int fd_tree = open_tree(\-1, source,
- OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC |
- AT_EMPTY_PATH | (recursive ? AT_RECURSIVE : 0));
+ fd_tree = open_tree(\-1, source,
+ OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC |
+ AT_EMPTY_PATH | (recursive ? AT_RECURSIVE : 0));
if (fd_tree == \-1)
err(EXIT_FAILURE, "open(%s)", source);
@@ -1030,8 +1033,8 @@ main(int argc, char *argv[])
close(fd_userns);
- /* In the following, \-1 as the \(aqto_dirfd\(aq argument ensures that
- open_tree() fails if \(aqtarget\(aq is not an absolute pathname. */
+ /* In the following, \-1 as the \[aq]to_dirfd\[aq] argument ensures that
+ open_tree() fails if \[aq]target\[aq] is not an absolute pathname. */
ret = move_mount(fd_tree, "", \-1, target,
MOVE_MOUNT_F_EMPTY_PATH);
diff --git a/man2/move_pages.2 b/man2/move_pages.2
index d678c8b73..644129ddf 100644
--- a/man2/move_pages.2
+++ b/man2/move_pages.2
@@ -17,7 +17,7 @@
.\" (e.g., compare with recommendation in mbind(2)).
.\" Does this page need to give advice on this topic?
.\"
-.TH move_pages 2 2022-12-04 "Linux man-pages 6.02"
+.TH move_pages 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
move_pages \- move individual pages of a process to another node
.SH LIBRARY
@@ -55,13 +55,13 @@ is 0, then
moves pages of the calling process.
.PP
To move pages in another process requires the following privileges:
-.IP \(bu 3
+.IP \[bu] 3
Up to and including Linux 4.12:
the caller must be privileged
.RB ( CAP_SYS_NICE )
or the real or effective user ID of the calling process must match the
real or saved-set user ID of the target process.
-.IP \(bu
+.IP \[bu]
The older rules allowed the caller to discover various
virtual address choices made by the kernel that could lead
to the defeat of address-space-layout randomization
diff --git a/man2/mprotect.2 b/man2/mprotect.2
index 9a8ed07aa..87576aadc 100644
--- a/man2/mprotect.2
+++ b/man2/mprotect.2
@@ -10,7 +10,7 @@
.\" 2007-06-02, mtk: Fairly substantial rewrites and additions, and
.\" a much improved example program.
.\"
-.TH mprotect 2 2022-12-04 "Linux man-pages 6.02"
+.TH mprotect 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mprotect, pkey_mprotect \- set protection on a region of memory
.SH LIBRARY
@@ -87,7 +87,7 @@ can have one of the following flags set:
Apply the protection mode up to the end of a mapping
that grows upwards.
(Such mappings are created for the stack area on
-architectures\(emfor example, HP-PARISC\(emthat
+architectures\[em]for example, HP-PARISC\[em]that
have an upwardly growing stack.)
.\" The VMA is one that was marked with VM_GROWSUP by the kernel
.\" when the stack was created. Note that (unlike VM_GROWSDOWN),
@@ -343,7 +343,7 @@ main(void)
handle_error("mprotect");
for (char *p = buffer ; ; )
- *(p++) = \(aqa\(aq;
+ *(p++) = \[aq]a\[aq];
printf("Loop completed\en"); /* Should never happen */
exit(EXIT_SUCCESS);
diff --git a/man2/mq_getsetattr.2 b/man2/mq_getsetattr.2
index 2ebbfb2f1..ef3320818 100644
--- a/man2/mq_getsetattr.2
+++ b/man2/mq_getsetattr.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_getsetattr 2 2022-10-30 "Linux man-pages 6.02"
+.TH mq_getsetattr 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
mq_getsetattr \- get/set message queue attributes
.SH SYNOPSIS
diff --git a/man2/mremap.2 b/man2/mremap.2
index 98e99f41a..09e03fc28 100644
--- a/man2/mremap.2
+++ b/man2/mremap.2
@@ -8,7 +8,7 @@
.\" Update for Linux 1.3.87 and later
.\" 2005-10-11 mtk: Added NOTES for MREMAP_FIXED; revised EINVAL text.
.\"
-.TH mremap 2 2022-12-04 "Linux man-pages 6.02"
+.TH mremap 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mremap \- remap a virtual memory address
.SH LIBRARY
@@ -170,10 +170,10 @@ whole address space requested, but those mappings are of different types.
An invalid argument was given.
Possible causes are:
.RS
-.IP \(bu 3
+.IP \[bu] 3
\fIold_address\fP was not
page aligned;
-.IP \(bu
+.IP \[bu]
a value other than
.B MREMAP_MAYMOVE
or
@@ -182,15 +182,15 @@ or
.B MREMAP_DONTUNMAP
was specified in
.IR flags ;
-.IP \(bu
+.IP \[bu]
.I new_size
was zero;
-.IP \(bu
+.IP \[bu]
.I new_size
or
.I new_address
was invalid;
-.IP \(bu
+.IP \[bu]
the new address range specified by
.I new_address
and
@@ -199,29 +199,29 @@ overlapped the old address range specified by
.I old_address
and
.IR old_size ;
-.IP \(bu
+.IP \[bu]
.B MREMAP_FIXED
or
.B MREMAP_DONTUNMAP
was specified without also specifying
.BR MREMAP_MAYMOVE ;
-.IP \(bu
+.IP \[bu]
.B MREMAP_DONTUNMAP
was specified, but one or more pages in the range specified by
.I old_address
and
.I old_size
were not private anonymous;
-.IP \(bu
+.IP \[bu]
.B MREMAP_DONTUNMAP
was specified and
.I old_size
was not equal to
.IR new_size ;
-.IP \(bu
+.IP \[bu]
\fIold_size\fP was zero and \fIold_address\fP does not refer to a
shareable mapping (but see BUGS);
-.IP \(bu
+.IP \[bu]
\fIold_size\fP was zero and the
.B MREMAP_MAYMOVE
flag was not specified.
@@ -231,12 +231,12 @@ flag was not specified.
Not enough memory was available to complete the operation.
Possible causes are:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The memory area cannot be expanded at the current virtual address, and the
.B MREMAP_MAYMOVE
flag is not set in \fIflags\fP.
Or, there is not enough (virtual) memory available.
-.IP \(bu
+.IP \[bu]
.B MREMAP_DONTUNMAP
was used causing a new mapping to be created that would exceed the
(virtual) memory available.
@@ -292,7 +292,7 @@ argument.
Possible applications for
.B MREMAP_DONTUNMAP
include:
-.IP \(bu 3
+.IP \[bu] 3
Non-cooperative
.BR userfaultfd (2):
an application can yank out a virtual address range using
@@ -301,7 +301,7 @@ and then employ a
.BR userfaultfd (2)
handler to handle the page faults that subsequently occur
as other threads in the process touch pages in the yanked range.
-.IP \(bu
+.IP \[bu]
Garbage collection:
.B MREMAP_DONTUNMAP
can be used in conjunction with
diff --git a/man2/msgctl.2 b/man2/msgctl.2
index f442ad3b5..9c42282b1 100644
--- a/man2/msgctl.2
+++ b/man2/msgctl.2
@@ -16,7 +16,7 @@
.\" 2005-08-02, mtk: Added IPC_INFO, MSG_INFO, MSG_STAT descriptions
.\" 2018-03-20, dbueso: Added MSG_STAT_ANY description.
.\"
-.TH msgctl 2 2022-12-15 "Linux man-pages 6.02"
+.TH msgctl 2 2022-12-15 "Linux man-pages 6.03"
.SH NAME
msgctl \- System V message control operations
.SH LIBRARY
diff --git a/man2/msgget.2 b/man2/msgget.2
index a73883b50..80bfeef23 100644
--- a/man2/msgget.2
+++ b/man2/msgget.2
@@ -12,7 +12,7 @@
.\" Language and formatting clean-ups
.\" Added notes on /proc files
.\"
-.TH msgget 2 2022-12-04 "Linux man-pages 6.02"
+.TH msgget 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
msgget \- get a System V message queue identifier
.SH LIBRARY
@@ -90,22 +90,22 @@ then its associated data structure
(see
.BR msgctl (2))
is initialized as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I msg_perm.cuid
and
.I msg_perm.uid
are set to the effective user ID of the calling process.
-.IP \(bu
+.IP \[bu]
.I msg_perm.cgid
and
.I msg_perm.gid
are set to the effective group ID of the calling process.
-.IP \(bu
+.IP \[bu]
The least significant 9 bits of
.I msg_perm.mode
are set to the least significant 9 bits of
.IR msgflg .
-.IP \(bu
+.IP \[bu]
.IR msg_qnum ,
.IR msg_lspid ,
.IR msg_lrpid ,
@@ -113,10 +113,10 @@ are set to the least significant 9 bits of
and
.I msg_rtime
are set to 0.
-.IP \(bu
+.IP \[bu]
.I msg_ctime
is set to the current time.
-.IP \(bu
+.IP \[bu]
.I msg_qbytes
is set to the system limit
.BR MSGMNB .
diff --git a/man2/msgop.2 b/man2/msgop.2
index 423a43334..3d4eafe8c 100644
--- a/man2/msgop.2
+++ b/man2/msgop.2
@@ -17,7 +17,7 @@
.\" Language and formatting clean-ups
.\" Added notes on /proc files
.\"
-.TH MSGOP 2 2022-11-10 "Linux man-pages 6.02"
+.TH MSGOP 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
msgrcv, msgsnd \- System V message queue operations
.SH LIBRARY
@@ -95,12 +95,12 @@ bytes, but this limit can be modified using
.BR msgctl (2).
A message queue is considered to be full if either of the following
conditions is true:
-.IP \(bu 3
+.IP \[bu] 3
Adding a new message to the queue would cause the total number of bytes
in the queue to exceed the queue's maximum size (the
.I msg_qbytes
field).
-.IP \(bu
+.IP \[bu]
Adding another message to the queue would cause the total number of messages
in the queue to exceed the queue's maximum size (the
.I msg_qbytes
@@ -124,14 +124,14 @@ then the call instead fails with the error
A blocked
.BR msgsnd ()
call may also fail if:
-.IP \(bu 3
+.IP \[bu] 3
the queue is removed,
in which case the system call fails with
.I errno
set to
.BR EIDRM ;
or
-.IP \(bu
+.IP \[bu]
a signal is caught, in which case the system call fails
with
.I errno
@@ -146,13 +146,13 @@ flag when establishing a signal handler.)
.PP
Upon successful completion the message queue data structure is updated
as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I msg_lspid
is set to the process ID of the calling process.
-.IP \(bu
+.IP \[bu]
.I msg_qnum
is incremented by 1.
-.IP \(bu
+.IP \[bu]
.I msg_stime
is set to the current time.
.SS msgrcv()
@@ -198,12 +198,12 @@ is specified in
the
.I msgtyp
argument specifies the type of message requested, as follows:
-.IP \(bu 3
+.IP \[bu] 3
If
.I msgtyp
is 0,
then the first message in the queue is read.
-.IP \(bu
+.IP \[bu]
If
.I msgtyp
is greater than 0,
@@ -217,7 +217,7 @@ in which case
the first message in the queue of type not equal to
.I msgtyp
will be read.
-.IP \(bu
+.IP \[bu]
If
.I msgtyp
is less than 0,
@@ -285,15 +285,15 @@ If no message of the requested type is available and
isn't specified in
.IR msgflg ,
the calling process is blocked until one of the following conditions occurs:
-.IP \(bu 3
+.IP \[bu] 3
A message of the desired type is placed in the queue.
-.IP \(bu
+.IP \[bu]
The message queue is removed from the system.
In this case, the system call fails with
.I errno
set to
.BR EIDRM .
-.IP \(bu
+.IP \[bu]
The calling process catches a signal.
In this case, the system call fails with
.I errno
@@ -636,18 +636,18 @@ main(int argc, char *argv[])
while ((opt = getopt(argc, argv, "srt:k:")) != \-1) {
switch (opt) {
- case \(aqs\(aq:
+ case \[aq]s\[aq]:
mode = 1;
break;
- case \(aqr\(aq:
+ case \[aq]r\[aq]:
mode = 2;
break;
- case \(aqt\(aq:
+ case \[aq]t\[aq]:
msgtype = atoi(optarg);
if (msgtype <= 0)
usage(argv[0], "\-t option must be greater than 0\en");
break;
- case \(aqk\(aq:
+ case \[aq]k\[aq]:
msgkey = atoi(optarg);
break;
default:
diff --git a/man2/msync.2 b/man2/msync.2
index dfab99a7e..270f4c40f 100644
--- a/man2/msync.2
+++ b/man2/msync.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH msync 2 2022-11-10 "Linux man-pages 6.02"
+.TH msync 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
msync \- synchronize a file with a memory map
.SH LIBRARY
@@ -135,4 +135,4 @@ in
.SH SEE ALSO
.BR mmap (2)
.PP
-B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\(en129 and 389\(en391.
+B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\[en]129 and 389\[en]391.
diff --git a/man2/nanosleep.2 b/man2/nanosleep.2
index 20a05ded9..0bd03d0de 100644
--- a/man2/nanosleep.2
+++ b/man2/nanosleep.2
@@ -12,7 +12,7 @@
.\" NOTES: describe case where clock_nanosleep() can be preferable.
.\" NOTES: describe CLOCK_REALTIME versus CLOCK_NANOSLEEP
.\" Replace crufty discussion of HZ with a pointer to time(7).
-.TH nanosleep 2 2022-12-04 "Linux man-pages 6.02"
+.TH nanosleep 2 2023-02-12 "Linux man-pages 6.03"
.SH NAME
nanosleep \- high-resolution sleep
.SH LIBRARY
@@ -66,7 +66,7 @@ The
structure
is used to specify intervals of time with nanosecond precision.
.PP
-The value of the nanoseconds field must be in the range 0 to 999999999.
+The value of the nanoseconds field must be in the range [0, 999999999].
.PP
Compared to
.BR sleep (3)
@@ -106,7 +106,7 @@ again and continue with the pause.
.B EINVAL
The value in the
.I tv_nsec
-field was not in the range 0 to 999999999 or
+field was not in the range [0, 999999999] or
.I tv_sec
was negative.
.SH STANDARDS
diff --git a/man2/nfsservctl.2 b/man2/nfsservctl.2
index d660e3f1f..f237dde23 100644
--- a/man2/nfsservctl.2
+++ b/man2/nfsservctl.2
@@ -2,7 +2,7 @@
.\" This text is in the public domain.
.\" %%%LICENSE_END
.\"
-.TH nfsservctl 2 2022-12-04 "Linux man-pages 6.02"
+.TH nfsservctl 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nfsservctl \- syscall interface to kernel nfs daemon
.SH LIBRARY
@@ -33,9 +33,9 @@ filesystem; see
#define NFSCTL_DELCLIENT 2 /* Remove an NFS client. */
#define NFSCTL_EXPORT 3 /* Export a filesystem. */
#define NFSCTL_UNEXPORT 4 /* Unexport a filesystem. */
-#define NFSCTL_UGIDUPDATE 5 /* Update a client\(aqs UID/GID map
+#define NFSCTL_UGIDUPDATE 5 /* Update a client\[aq]s UID/GID map
(only in Linux 2.4.x and earlier). */
-#define NFSCTL_GETFH 6 /* Get a file handle (used by mountd)
+#define NFSCTL_GETFH 6 /* Get a file handle (used by mountd(8))
(only in Linux 2.4.x and earlier). */
struct nfsctl_arg {
diff --git a/man2/nice.2 b/man2/nice.2
index 53caa0ffe..958bfeab7 100644
--- a/man2/nice.2
+++ b/man2/nice.2
@@ -8,7 +8,7 @@
.\" Modified 2001-06-04 by aeb
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH nice 2 2022-10-30 "Linux man-pages 6.02"
+.TH nice 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nice \- change process priority
.SH LIBRARY
@@ -30,7 +30,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
.BR nice ()
diff --git a/man2/open.2 b/man2/open.2
index 80c281fdc..19115a372 100644
--- a/man2/open.2
+++ b/man2/open.2
@@ -28,7 +28,7 @@
.\" FIXME . Apr 08: The next POSIX revision has O_EXEC, O_SEARCH, and
.\" O_TTYINIT. Eventually these may need to be documented. --mtk
.\"
-.TH OPEN 2 2022-12-04 "Linux man-pages 6.02"
+.TH open 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
open, openat, creat \- open and possibly create a file
.SH LIBRARY
@@ -293,7 +293,7 @@ The effective mode is modified by the process's
.I umask
in the usual way: in the absence of a default ACL, the mode of the
created file is
-.IR "(mode\ &\ \(tiumask)" .
+.IR "(mode\ &\ \[ti]umask)" .
.IP
Note that
.I mode
@@ -502,11 +502,11 @@ when the file is
.IP
This flag can be employed only if one of the following conditions is true:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The effective UID of the process
.\" Strictly speaking: the filesystem UID
matches the owner UID of the file.
-.IP \(bu
+.IP \[bu]
The calling process has the
.B CAP_FOWNER
capability in its user namespace and
@@ -523,8 +523,8 @@ One example is NFS, where the server maintains the access time.
.B O_NOCTTY
If
.I pathname
-refers to a terminal device\(emsee
-.BR tty (4)\(emit
+refers to a terminal device\[em]see
+.BR tty (4)\[em]it
will not become the process's controlling terminal even if the
process does not have one.
.TP
@@ -617,40 +617,40 @@ The following operations
.I can
be performed on the resulting file descriptor:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.BR close (2).
-.IP \(bu
+.IP \[bu]
.BR fchdir (2),
if the file descriptor refers to a directory
(since Linux 3.5).
.\" commit 332a2e1244bd08b9e3ecd378028513396a004a24
-.IP \(bu
+.IP \[bu]
.BR fstat (2)
(since Linux 3.6).
-.IP \(bu
+.IP \[bu]
.\" fstat(): commit 55815f70147dcfa3ead5738fd56d3574e2e3c1c2
.BR fstatfs (2)
(since Linux 3.12).
.\" fstatfs(): commit 9d05746e7b16d8565dddbe3200faa1e669d23bbf
-.IP \(bu
+.IP \[bu]
Duplicating the file descriptor
.RB ( dup (2),
.BR fcntl (2)
.BR F_DUPFD ,
etc.).
-.IP \(bu
+.IP \[bu]
Getting and setting file descriptor flags
.RB ( fcntl (2)
.B F_GETFD
and
.BR F_SETFD ).
-.IP \(bu
+.IP \[bu]
Retrieving open file status flags using the
.BR fcntl (2)
.B F_GETFL
operation: the returned flags will include the bit
.BR O_PATH .
-.IP \(bu
+.IP \[bu]
Passing the file descriptor as the
.I dirfd
argument of
@@ -663,7 +663,7 @@ with
(or via procfs using
.BR AT_SYMLINK_FOLLOW )
even if the file is not a directory.
-.IP \(bu
+.IP \[bu]
Passing the file descriptor to another process via a UNIX domain socket
(see
.B SCM_RIGHTS
@@ -804,11 +804,11 @@ char path[PATH_MAX];
fd = open("/path/to/dir", O_TMPFILE | O_RDWR,
S_IRUSR | S_IWUSR);
-/* File I/O on \(aqfd\(aq... */
+/* File I/O on \[aq]fd\[aq]... */
linkat(fd, "", AT_FDCWD, "/path/for/file", AT_EMPTY_PATH);
-/* If the caller doesn\(aqt have the CAP_DAC_READ_SEARCH
+/* If the caller doesn\[aq]t have the CAP_DAC_READ_SEARCH
capability (needed to use AT_EMPTY_PATH with linkat(2)),
and there is a proc(5) filesystem mounted, then the
linkat(2) call above can be replaced with:
@@ -843,7 +843,7 @@ There are two main use cases for
.\" Inspired by http://lwn.net/Articles/559147/
.BR O_TMPFILE :
.RS
-.IP \(bu 3
+.IP \[bu] 3
Improved
.BR tmpfile (3)
functionality: race-free creation of temporary files that
@@ -851,7 +851,7 @@ functionality: race-free creation of temporary files that
(2) can never be reached via any pathname;
(3) are not subject to symlink attacks; and
(4) do not require the caller to devise unique names.
-.IP \(bu
+.IP \[bu]
Creating a file that is initially invisible, which is then populated
with data and adjusted to have appropriate filesystem attributes
.RB ( fchown (2),
@@ -914,13 +914,13 @@ The
argument is used in conjunction with the
.I pathname
argument as follows:
-.IP \(bu 3
+.IP \[bu] 3
If the pathname given in
.I pathname
is absolute, then
.I dirfd
is ignored.
-.IP \(bu
+.IP \[bu]
If the pathname given in
.I pathname
is relative and
@@ -932,7 +932,7 @@ then
is interpreted relative to the current working
directory of the calling process (like
.BR open ()).
-.IP \(bu
+.IP \[bu]
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
@@ -1413,7 +1413,7 @@ entries in the system-wide table of open files.
In other contexts, this object is
variously also called an "open file object",
a "file handle", an "open file table entry",
-or\(emin kernel-developer parlance\(ema
+or\[em]in kernel-developer parlance\[em]a
.IR "struct file" .
.PP
When a file descriptor is duplicated (using
@@ -1536,7 +1536,7 @@ flag value.
This ensures that applications compiled against
new headers get at least
.B O_DSYNC
-semantics on pre-2.6.33 kernels.
+semantics before Linux 2.6.33.
.\"
.SS C library/kernel differences
Since glibc 2.26,
@@ -1678,10 +1678,10 @@ and
The use of the
.I dirfd
file descriptor also has other benefits:
-.IP \(bu 3
+.IP \[bu] 3
the file descriptor is a stable reference to the directory,
even if the directory is renamed; and
-.IP \(bu
+.IP \[bu]
the open file descriptor prevents the underlying filesystem from
being dismounted,
just as when a process has a current working directory on a filesystem.
diff --git a/man2/open_by_handle_at.2 b/man2/open_by_handle_at.2
index 396f9b7a1..59ddc9b49 100644
--- a/man2/open_by_handle_at.2
+++ b/man2/open_by_handle_at.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH open_by_handle_at 2 2022-12-04 "Linux man-pages 6.02"
+.TH open_by_handle_at 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
name_to_handle_at, open_by_handle_at \- obtain handle
for a pathname and open file via a handle
@@ -126,7 +126,7 @@ and
.I dirfd
arguments identify the file for which a handle is to be obtained.
There are four distinct cases:
-.IP \(bu 3
+.IP \[bu] 3
If
.I pathname
is a nonempty string containing an absolute pathname,
@@ -134,7 +134,7 @@ then a handle is returned for the file referred to by that pathname.
In this case,
.I dirfd
is ignored.
-.IP \(bu
+.IP \[bu]
If
.I pathname
is a nonempty string containing a relative pathname and
@@ -145,7 +145,7 @@ then
.I pathname
is interpreted relative to the current working directory of the caller,
and a handle is returned for the file to which it refers.
-.IP \(bu
+.IP \[bu]
If
.I pathname
is a nonempty string containing a relative pathname and
@@ -158,7 +158,7 @@ and a handle is returned for the file to which it refers.
(See
.BR openat (2)
for an explanation of why "directory file descriptors" are useful.)
-.IP \(bu
+.IP \[bu]
If
.I pathname
is an empty string and
@@ -492,7 +492,7 @@ The following shell session demonstrates the use of these two programs:
.PP
.in +4n
.EX
-$ \fBecho \(aqCan you please think about it?\(aq > cecilia.txt\fP
+$ \fBecho \[aq]Can you please think about it?\[aq] > cecilia.txt\fP
$ \fB./t_name_to_handle_at cecilia.txt > fh\fP
$ \fB./t_open_by_handle_at < fh\fP
open_by_handle_at: Operation not permitted
@@ -516,7 +516,7 @@ no longer exists.
$ \fBstat \-\-printf="%i\en" cecilia.txt\fP # Display inode number
4072121
$ \fBrm cecilia.txt\fP
-$ \fBecho \(aqCan you please think about it?\(aq > cecilia.txt\fP
+$ \fBecho \[aq]Can you please think about it?\[aq] > cecilia.txt\fP
$ \fBstat \-\-printf="%i\en" cecilia.txt\fP # Check inode number
4072121
$ \fBsudo ./t_open_by_handle_at < fh\fP
@@ -608,8 +608,8 @@ main(int argc, char *argv[])
#include <unistd.h>
/* Scan /proc/self/mountinfo to find the line whose mount ID matches
- \(aqmount_id\(aq. (An easier way to do this is to install and use the
- \(aqlibmount\(aq library provided by the \(aqutil\-linux\(aq project.)
+ \[aq]mount_id\[aq]. (An easier way to do this is to install and use the
+ \[aq]libmount\[aq] library provided by the \[aq]util\-linux\[aq] project.)
Open the corresponding mount path and return the resulting file
descriptor. */
@@ -704,7 +704,7 @@ main(int argc, char *argv[])
/* Obtain file descriptor for mount point, either by opening
the pathname specified on the command line, or by scanning
- /proc/self/mounts to find a mount that matches the \(aqmount_id\(aq
+ /proc/self/mounts to find a mount that matches the \[aq]mount_id\[aq]
that we received from stdin. */
if (argc > 1)
diff --git a/man2/openat2.2 b/man2/openat2.2
index 0b0fc2719..a24a3d0cc 100644
--- a/man2/openat2.2
+++ b/man2/openat2.2
@@ -1,7 +1,7 @@
.\" Copyright (C) 2019 Aleksa Sarai <cyphar@cyphar.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH openat2 2 2022-10-30 "Linux man-pages 6.02"
+.TH openat2 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
openat2 \- open and possibly create a file (extended)
.SH LIBRARY
@@ -251,7 +251,7 @@ for more details.)
Unknowingly opening magic links can be risky for some applications.
Examples of such risks include the following:
.RS
-.IP \(bu 3
+.IP \[bu] 3
If the process opening a pathname is a controlling process that
currently has no controlling terminal (see
.BR credentials (7)),
@@ -259,7 +259,7 @@ then opening a magic link inside
.IR /proc/ pid /fd
that happens to refer to a terminal
would cause the process to acquire a controlling terminal.
-.IP \(bu
+.IP \[bu]
.\" From https://lwn.net/Articles/796868/:
.\" The presence of this flag will prevent a path lookup operation
.\" from traversing through one of these magic links, thus blocking
@@ -332,8 +332,8 @@ Applications that employ the
flag are encouraged to make its use configurable
(unless it is used for a specific security purpose),
as symbolic links are very widely used by end-users.
-Setting this flag indiscriminately\(emi.e.,
-for purposes not specifically related to security\(emfor all uses of
+Setting this flag indiscriminately\[em]i.e.,
+for purposes not specifically related to security\[em]for all uses of
.BR openat2 ()
may result in spurious errors on previously functional systems.
This may occur if, for example,
@@ -359,8 +359,8 @@ Applications that employ the
flag are encouraged to make its use configurable (unless it is
used for a specific security purpose),
as bind mounts are widely used by end-users.
-Setting this flag indiscriminately\(emi.e.,
-for purposes not specifically related to security\(emfor all uses of
+Setting this flag indiscriminately\[em]i.e.,
+for purposes not specifically related to security\[em]for all uses of
.BR openat2 ()
may result in spurious errors on previously functional systems.
This may occur if, for example,
@@ -503,7 +503,7 @@ be the size of the structure as specified by the user-space application, and
.I ksize
be the size of the structure which the kernel supports, then there are
three cases to consider:
-.IP \(bu 3
+.IP \[bu] 3
If
.I ksize
equals
@@ -511,7 +511,7 @@ equals
then there is no version mismatch and
.I how
can be used verbatim.
-.IP \(bu
+.IP \[bu]
If
.I ksize
is larger than
@@ -524,7 +524,7 @@ the kernel
treats all of the extension fields not provided by the user-space application
as having zero values.
This provides backwards-compatibility.
-.IP \(bu
+.IP \[bu]
If
.I ksize
is smaller than
diff --git a/man2/outb.2 b/man2/outb.2
index f9bfabbdf..c9419e062 100644
--- a/man2/outb.2
+++ b/man2/outb.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH outb 2 2022-11-10 "Linux man-pages 6.02"
+.TH outb 2 2022-11-10 "Linux man-pages 6.03"
.SH NAME
outb, outw, outl, outsb, outsw, outsl,
inb, inw, inl, insb, insw, insl,
diff --git a/man2/pause.2 b/man2/pause.2
index d712c456b..a8f548a1e 100644
--- a/man2/pause.2
+++ b/man2/pause.2
@@ -7,7 +7,7 @@
.\" Modified 1995 by Mike Battersby (mib@deakin.edu.au)
.\" Modified 2000 by aeb, following Michael Kerrisk
.\"
-.TH pause 2 2022-10-30 "Linux man-pages 6.02"
+.TH pause 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pause \- wait for signal
.SH LIBRARY
diff --git a/man2/pciconfig_read.2 b/man2/pciconfig_read.2
index 2e9f55657..a83742266 100644
--- a/man2/pciconfig_read.2
+++ b/man2/pciconfig_read.2
@@ -5,7 +5,7 @@
.\" May be freely distributed and modified.
.\" %%%LICENSE_END
.\"
-.TH pciconfig_read 2 2022-10-30 "Linux man-pages 6.02"
+.TH pciconfig_read 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pciconfig_read, pciconfig_write, pciconfig_iobase \-
pci device information handling
diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
index c20f111c1..f0f81d7d5 100644
--- a/man2/perf_event_open.2
+++ b/man2/perf_event_open.2
@@ -5,7 +5,7 @@
.\" This document is based on the perf_event.h header file, the
.\" tools/perf/design.txt file, and a lot of bitter experience.
.\"
-.TH perf_event_open 2 2022-12-04 "Linux man-pages 6.02"
+.TH perf_event_open 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
perf_event_open \- set up performance monitoring
.SH LIBRARY
@@ -124,7 +124,7 @@ An event group is scheduled onto the CPU as a unit: it will
be put onto the CPU only if all of the events in the group can be put onto
the CPU.
This means that the values of the member events can be
-meaningfully compared\(emadded, divided (to get ratios), and so on\(emwith each
+meaningfully compared\[em]added, divided (to get ratios), and so on\[em]with each
other, since they have counted events for the same set of executed
instructions.
.PP
@@ -211,10 +211,10 @@ struct perf_event_attr {
inherit : 1, /* children inherit it */
pinned : 1, /* must always be on PMU */
exclusive : 1, /* only group on PMU */
- exclude_user : 1, /* don\(aqt count user */
- exclude_kernel : 1, /* don\(aqt count kernel */
- exclude_hv : 1, /* don\(aqt count hypervisor */
- exclude_idle : 1, /* don\(aqt count when idle */
+ exclude_user : 1, /* don\[aq]t count user */
+ exclude_kernel : 1, /* don\[aq]t count kernel */
+ exclude_hv : 1, /* don\[aq]t count hypervisor */
+ exclude_idle : 1, /* don\[aq]t count when idle */
mmap : 1, /* include mmap data */
comm : 1, /* include comm data */
freq : 1, /* use freq, not period */
@@ -225,8 +225,8 @@ struct perf_event_attr {
precise_ip : 2, /* skid constraint */
mmap_data : 1, /* non\-exec mmap data */
sample_id_all : 1, /* sample_type all events */
- exclude_host : 1, /* don\(aqt count in host */
- exclude_guest : 1, /* don\(aqt count in guest */
+ exclude_host : 1, /* don\[aq]t count in host */
+ exclude_guest : 1, /* don\[aq]t count in guest */
exclude_callchain_kernel : 1,
/* exclude kernel callchains */
exclude_callchain_user : 1,
@@ -245,8 +245,15 @@ struct perf_event_attr {
instead of events */
cgroup : 1, /* include cgroup events */
text_poke : 1, /* include text poke events */
+ build_id : 1, /* use build id in mmap2 events */
+ inherit_thread : 1, /* children only inherit */
+ /* if cloned with CLONE_THREAD */
+ remove_on_exec : 1, /* event is removed from task
+ on exec */
+ sigtrap : 1, /* send synchronous SIGTRAP
+ on event */
- __reserved_1 : 30;
+ __reserved_1 : 26;
union {
__u32 wakeup_events; /* wakeup every n events */
@@ -277,6 +284,9 @@ struct perf_event_attr {
__u32 aux_watermark; /* aux bytes before wakeup */
__u16 sample_max_stack; /* max frames in callchain */
__u16 __reserved_2; /* align to u64 */
+ __u32 aux_sample_size; /* max aux sample size */
+ __u32 __reserved_3; /* align to u64 */
+ __u64 sig_data; /* user data for sigtrap */
};
.EE
@@ -538,6 +548,19 @@ Informational sample record types such as mmap or comm
must be associated with an active event.
This dummy event allows gathering such records without requiring
a counting event.
+.TP
+.BR PERF_COUNT_SW_BPF_OUTPUT " (since Linux 4.4)"
+.\" commit a43eec304259a6c637f4014a6d4767159b6a3aa3
+This is used to generate raw sample data from BPF.
+BPF programs can write to this event using
+.B bpf_perf_event_output
+helper.
+.TP
+.BR PERF_COUNT_SW_CGROUP_SWITCHES " (since Linux 5.13)"
+.\" commit d0d1dd628527c77db2391ce0293c1ed344b2365f
+This counts context switches to a task in a different cgroup.
+In other words, if the next task is in the same cgroup,
+it won't count the switch.
.RE
.PP
.RS
@@ -879,6 +902,42 @@ This corresponds to the
field in the
.B PERF_RECORD_CGROUP
event.
+.TP
+.BR PERF_SAMPLE_DATA_PAGE_SIZE " (since Linux 5.11)"
+.\" commit 8d97e71811aaafe4abf611dc24822fd6e73df1a1
+Records page size of data like in
+.BR PERF_SAMPLE_ADDR .
+.TP
+.BR PERF_SAMPLE_CODE_PAGE_SIZE " (since Linux 5.11)"
+.\" commit 995f088efebe1eba0282a6ffa12411b37f8990c2
+Records page size of ip like in
+.BR PERF_SAMPLE_IP .
+.TP
+.BR PERF_SAMPLE_WEIGHT_STRUCT " (since Linux 5.12)"
+.\" commit 2a6c6b7d7ad346f0679d0963cb19b3f0ea7ef32c
+Records hardware provided weight values like in
+.BR PERF_SAMPLE_WEIGHT ,
+but it can represent multiple values in a struct.
+This shares the same space as
+.BR PERF_SAMPLE_WEIGHT ,
+so users can apply either of those,
+not both.
+It has the following format and
+the meaning of each field is
+dependent on the hardware implementation.
+.PP
+.in +4n
+.EX
+union perf_sample_weight {
+ u64 full; /* PERF_SAMPLE_WEIGHT */
+ struct { /* PERF_SAMPLE_WEIGHT_STRUCT */
+ u32 var1_dw;
+ u16 var2_w;
+ u16 var3_w;
+ };
+};
+.EE
+.in
.RE
.TP
.I read_format
@@ -908,6 +967,15 @@ Adds a 64-bit unique value that corresponds to the event group.
.TP
.B PERF_FORMAT_GROUP
Allows all counter values in an event group to be read with one read.
+.TP
+.B PERF_FORMAT_LOST " (since Linux 6.0)"
+.\" commit 119a784c81270eb88e573174ed2209225d646656
+Adds a 64-bit value that is the number of lost samples for this event.
+This would be only meaningful when
+.I sample_period
+or
+.I sample_freq
+is set.
.RE
.TP
.I disabled
@@ -1243,7 +1311,7 @@ This enables the generation of
.B PERF_RECORD_BPF_EVENT
records when an eBPF program is loaded or unloaded.
.TP
-.IR auxevent " (since Linux 5.4)"
+.IR aux_output " (since Linux 5.4)"
.\" commit ab43762ef010967e4ccd53627f70a2eecbeafefb
This allows normal (non-AUX) events to generate data for AUX events
if the hardware supports it.
@@ -1261,6 +1329,31 @@ This enables the generation of
records when there's a change to the kernel text
(i.e., self-modifying code).
.TP
+.IR build_id " (since Linux 5.12)"
+.\" commit 88a16a1309333e43d328621ece3e9fa37027e8eb
+This changes the contents in the
+.B PERF_RECORD_MMAP2
+to have a build-id instead of device and inode numbers.
+.TP
+.IR inherit_thread " (since Linux 5.13)"
+.\" commit 2b26f0aa004995f49f7b6f4100dd0e4c39a9ed5f
+This disables the inheritance of the event to a child process.
+Only new threads in the same process
+(which is cloned with
+.BR CLONE_THREAD )
+will inherit the event.
+.TP
+.IR remove_on_exec " (since Linux 5.13)"
+.\" commit 2e498d0a74e5b88a6689ae1b811f247f91ff188e
+This closes the event when it starts a new process image by
+.BR execve (2).
+.TP
+.IR sigtrap " (since Linux 5.13)"
+.\" commit 97ba62b278674293762c3d91f724f1bb922f04e0
+This enables synchronous signal delivery of
+.B SIGTRAP
+on event overflow.
+.TP
.IR wakeup_events ", " wakeup_watermark
This union sets how many samples
.RI ( wakeup_events )
@@ -1471,6 +1564,23 @@ includes
.BR PERF_SAMPLE_CALLCHAIN ,
this field specifies how many stack frames to report when
generating the callchain.
+.TP
+.IR aux_sample_size " (since Linux 5.5)"
+.\" commit a4faf00d994c40e64f656805ac375c65e324eefb
+When
+.B PERF_SAMPLE_AUX
+flag is set,
+specify the desired size of AUX data.
+Note that it can get smaller data than the specified size.
+.TP
+.IR sig_data " (since Linux 5.13)"
+.\" commit 97ba62b278674293762c3d91f724f1bb922f04e0
+This data will be copied to user's signal handler
+(through
+.I si_perf
+in the
+.IR siginfo_t )
+to disambiguate which event triggered the signal.
.SS Reading results
Once a
.BR perf_event_open ()
@@ -1488,7 +1598,7 @@ data, the error
results.
.PP
Here is the layout of the data returned by a read:
-.IP \(bu 3
+.IP \[bu] 3
If
.B PERF_FORMAT_GROUP
was specified to allow reading all events in a group at once:
@@ -1502,11 +1612,12 @@ struct read_format {
struct {
u64 value; /* The value of the event */
u64 id; /* if PERF_FORMAT_ID */
+ u64 lost; /* if PERF_FORMAT_LOST */
} values[nr];
};
.EE
.in
-.IP \(bu
+.IP \[bu]
If
.B PERF_FORMAT_GROUP
was
@@ -1520,6 +1631,7 @@ struct read_format {
u64 time_enabled; /* if PERF_FORMAT_TOTAL_TIME_ENABLED */
u64 time_running; /* if PERF_FORMAT_TOTAL_TIME_RUNNING */
u64 id; /* if PERF_FORMAT_ID */
+ u64 lost; /* if PERF_FORMAT_LOST */
};
.EE
.in
@@ -1551,6 +1663,13 @@ A globally unique value for this particular event; only present if
.B PERF_FORMAT_ID
was specified in
.IR read_format .
+.TP
+.I lost
+The number of lost samples of this event;
+only present if
+.B PERF_FORMAT_LOST
+was specified in
+.IR read_format .
.SS MMAP layout
When using
.BR perf_event_open ()
@@ -1562,7 +1681,7 @@ are logged into a ring-buffer.
This ring-buffer is created and accessed through
.BR mmap (2).
.PP
-The mmap size should be 1+2^n pages, where the first page is a
+The mmap size should be 1+2\[ha]n pages, where the first page is a
metadata page
.RI ( "struct perf_event_mmap_page" )
that contains various
@@ -2002,6 +2121,22 @@ to the actual instruction that triggered the event.
See also
.IR perf_event_attr.precise_ip .
.TP
+.BR PERF_RECORD_MISC_SWITCH_OUT_PREEMPT " (since Linux 4.17)"
+.\" commit 101592b4904ecf6b8ed2a4784d41d180319d95a1
+When a
+.B PERF_RECORD_SWITCH
+or
+.B PERF_RECORD_SWITCH_CPU_WIDE
+record is generated,
+this indicates the context switch was a preemption.
+.TP
+.BR PERF_RECORD_MISC_MMAP_BUILD_ID " (since Linux 5.12)"
+.\" commit 88a16a1309333e43d328621ece3e9fa37027e8eb
+This indicates that the content of
+.B PERF_SAMPLE_MMAP2
+contains build-ID data instead of device major and minor numbers
+as well as the inode number.
+.TP
.BR PERF_RECORD_MISC_EXT_RESERVED " (since Linux 2.6.35)"
.\" commit 1676b8a077c352085d52578fb4f29350b58b6e74
This indicates there is extended data available (currently not used).
@@ -2201,7 +2336,9 @@ struct {
char data[size]; /* if PERF_SAMPLE_STACK_USER */
u64 dyn_size; /* if PERF_SAMPLE_STACK_USER &&
size != 0 */
- u64 weight; /* if PERF_SAMPLE_WEIGHT */
+ union perf_sample_weight weight;
+ /* if PERF_SAMPLE_WEIGHT */
+ /* || PERF_SAMPLE_WEIGHT_STRUCT */
u64 data_src; /* if PERF_SAMPLE_DATA_SRC */
u64 transaction; /* if PERF_SAMPLE_TRANSACTION */
u64 abi; /* if PERF_SAMPLE_REGS_INTR */
@@ -2209,6 +2346,12 @@ struct {
/* if PERF_SAMPLE_REGS_INTR */
u64 phys_addr; /* if PERF_SAMPLE_PHYS_ADDR */
u64 cgroup; /* if PERF_SAMPLE_CGROUP */
+ u64 data_page_size;
+ /* if PERF_SAMPLE_DATA_PAGE_SIZE */
+ u64 code_page_size;
+ /* if PERF_SAMPLE_CODE_PAGE_SIZE */
+ u64 size; /* if PERF_SAMPLE_AUX */
+ char data[size]; /* if PERF_SAMPLE_AUX */
};
.EE
.in
@@ -2411,6 +2554,8 @@ is 0.
.I weight
If
.B PERF_SAMPLE_WEIGHT
+or
+.B PERF_SAMPLE_WEIGHT_STRUCT
is enabled, then a 64-bit value provided by the hardware
is recorded that indicates how costly the event was.
This allows expensive events to stand out more clearly
@@ -2643,7 +2788,31 @@ If the
flag is set,
then the 64-bit cgroup ID (for the perf_event subsystem) is recorded.
To get the pathname of the cgroup, the ID should match to one in a
-.B PERF_RECORD_CGROUP .
+.BR PERF_RECORD_CGROUP .
+.TP
+.I data_page_size
+If the
+.B PERF_SAMPLE_DATA_PAGE_SIZE
+flag is set,
+then the 64-bit page size value of the
+.B data
+address is recorded.
+.TP
+.I code_page_size
+If the
+.B PERF_SAMPLE_CODE_PAGE_SIZE
+flag is set,
+then the 64-bit page size value of the
+.B ip
+address is recorded.
+.TP
+.I size
+.TQ
+.IR data [ size ]
+If
+.B PERF_SAMPLE_AUX
+is enabled,
+a snapshot of the aux buffer is recorded.
.RE
.TP
.B PERF_RECORD_MMAP2
@@ -2654,6 +2823,10 @@ The format is similar to that of the
.B PERF_RECORD_MMAP
record, but includes extra values that allow uniquely identifying
shared mappings.
+Depending on the
+.B PERF_RECORD_MISC_MMAP_BUILD_ID
+bit in the header,
+the extra values have different layout and meanings.
.IP
.in +4n
.EX
@@ -2664,10 +2837,20 @@ struct {
u64 addr;
u64 len;
u64 pgoff;
- u32 maj;
- u32 min;
- u64 ino;
- u64 ino_generation;
+ union {
+ struct {
+ u32 maj;
+ u32 min;
+ u64 ino;
+ u64 ino_generation;
+ };
+ struct { /* if PERF_RECORD_MISC_MMAP_BUILD_ID */
+ u8 build_id_size;
+ u8 __reserved_1;
+ u16 __reserved_2;
+ u8 build_id[20];
+ };
+ };
u32 prot;
u32 flags;
char filename[];
@@ -2704,6 +2887,14 @@ is the inode number.
.I ino_generation
is the inode generation.
.TP
+.I build_id_size
+is the actual size of
+.I build_id
+field (up to 20).
+.TP
+.I build_id
+is a raw data to identify a binary.
+.TP
.I prot
is the protection information.
.TP
@@ -3424,7 +3615,7 @@ For example, the file
.I event
may contain the value
.I config1:1,6\-10,44
-which indicates that event is an attribute that occupies bits 1,6\(en10, and 44
+which indicates that event is an attribute that occupies bits 1,6\[en]10, and 44
of
.IR perf_event_attr::config1 .
.TP
diff --git a/man2/perfmonctl.2 b/man2/perfmonctl.2
index f51805529..fa7a69d61 100644
--- a/man2/perfmonctl.2
+++ b/man2/perfmonctl.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH perfmonctl 2 2022-11-10 "Linux man-pages 6.02"
+.TH perfmonctl 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
perfmonctl \- interface to IA-64 performance monitoring unit
.SH SYNOPSIS
@@ -51,7 +51,7 @@ The
parameter is ignored.
A new perfmon context is created as specified in
.I ctxt
-and its file descriptor is returned in \fIctxt->ctx_fd\fR.
+and its file descriptor is returned in \fIctxt\->ctx_fd\fR.
.IP
The file descriptor can be used in subsequent calls to
.BR perfmonctl ()
@@ -186,7 +186,7 @@ is Linux-specific and is available only on the IA-64 architecture.
This system call was broken for many years,
and ultimately removed in Linux 5.10.
.PP
-Glibc does not provide a wrapper for this system call;
+glibc does not provide a wrapper for this system call;
on kernels where it exists, call it using
.BR syscall (2).
.SH SEE ALSO
diff --git a/man2/personality.2 b/man2/personality.2
index 915706da8..09a510862 100644
--- a/man2/personality.2
+++ b/man2/personality.2
@@ -10,7 +10,7 @@
.\" changed prototype, documented 0xffffffff, aeb, 030101
.\" Modified 2004-11-03 patch from Martin Schulze <joey@infodrom.org>
.\"
-.TH personality 2 2022-12-04 "Linux man-pages 6.02"
+.TH personality 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
personality \- set the process execution domain
.SH LIBRARY
diff --git a/man2/pidfd_getfd.2 b/man2/pidfd_getfd.2
index 7189fb0df..f4abbbafa 100644
--- a/man2/pidfd_getfd.2
+++ b/man2/pidfd_getfd.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pidfd_getfd 2 2022-10-30 "Linux man-pages 6.02"
+.TH pidfd_getfd 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pidfd_getfd \- obtain a duplicate of another process's file descriptor
.SH LIBRARY
@@ -121,19 +121,19 @@ is similar to the use of
messages described in
.BR unix (7),
but differs in the following respects:
-.IP \(bu 3
+.IP \[bu] 3
In order to pass a file descriptor using an
.B SCM_RIGHTS
message,
the two processes must first establish a UNIX domain socket connection.
-.IP \(bu
+.IP \[bu]
The use of
.B SCM_RIGHTS
requires cooperation on the part of the process whose
file descriptor is being copied.
By contrast, no such cooperation is necessary when using
.BR pidfd_getfd ().
-.IP \(bu
+.IP \[bu]
The ability to use
.BR pidfd_getfd ()
is restricted by a
diff --git a/man2/pidfd_open.2 b/man2/pidfd_open.2
index ea71b8be6..ac8541c55 100644
--- a/man2/pidfd_open.2
+++ b/man2/pidfd_open.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pidfd_open 2 2022-10-30 "Linux man-pages 6.02"
+.TH pidfd_open 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pidfd_open \- obtain a file descriptor that refers to a process
.SH LIBRARY
@@ -107,14 +107,14 @@ call, its PID will not have been recycled and the returned
file descriptor will refer to the resulting zombie process.
Note, however, that this is guaranteed only if the following
conditions hold true:
-.IP \(bu 3
+.IP \[bu] 3
the disposition of
.B SIGCHLD
has not been explicitly set to
.B SIG_IGN
(see
.BR sigaction (2));
-.IP \(bu
+.IP \[bu]
the
.B SA_NOCLDWAIT
flag was not specified while establishing a handler for
@@ -124,7 +124,7 @@ or while setting the disposition of that signal to
(see
.BR sigaction (2));
and
-.IP \(bu
+.IP \[bu]
the zombie process was not reaped elsewhere in the program
(e.g., either by an asynchronously executed signal handler or by
.BR wait (2)
@@ -146,12 +146,12 @@ A PID file descriptor returned by
with the
.B CLONE_PID
flag) can be used for the following purposes:
-.IP \(bu 3
+.IP \[bu] 3
The
.BR pidfd_send_signal (2)
system call can be used to send a signal to the process referred to by
a PID file descriptor.
-.IP \(bu
+.IP \[bu]
A PID file descriptor can be monitored using
.BR poll (2),
.BR select (2),
@@ -164,21 +164,21 @@ nothing can be read from the file descriptor
.RB ( read (2)
on the file descriptor fails with the error
.BR EINVAL ).
-.IP \(bu
+.IP \[bu]
If the PID file descriptor refers to a child of the calling process,
then it can be waited on using
.BR waitid (2).
-.IP \(bu
+.IP \[bu]
The
.BR pidfd_getfd (2)
system call can be used to obtain a duplicate of a file descriptor
of another process referred to by a PID file descriptor.
-.IP \(bu
+.IP \[bu]
A PID file descriptor can be used as the argument of
.BR setns (2)
in order to move into one or more of the same namespaces as the process
referred to by the file descriptor.
-.IP \(bu
+.IP \[bu]
A PID file descriptor can be used as the argument of
.BR process_madvise (2)
in order to provide advice on the memory usage patterns of the process
diff --git a/man2/pidfd_send_signal.2 b/man2/pidfd_send_signal.2
index f2ec7fb0d..bd886a8df 100644
--- a/man2/pidfd_send_signal.2
+++ b/man2/pidfd_send_signal.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pidfd_send_signal 2 2022-12-03 "Linux man-pages 6.02"
+.TH pidfd_send_signal 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pidfd_send_signal \- send a signal to a process specified by a file descriptor
.SH LIBRARY
@@ -52,20 +52,20 @@ implicitly supplied when a signal is sent using
.BR kill (2):
.PP
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
.I si_signo
is set to the signal number;
-.IP \(bu
+.IP \[bu]
.I si_errno
is set to 0;
-.IP \(bu
+.IP \[bu]
.I si_code
is set to
.BR SI_USER ;
-.IP \(bu
+.IP \[bu]
.I si_pid
is set to the caller's PID; and
-.IP \(bu
+.IP \[bu]
.I si_uid
is set to the caller's real user ID.
.PD
@@ -131,15 +131,15 @@ The
argument is a PID file descriptor,
a file descriptor that refers to process.
Such a file descriptor can be obtained in any of the following ways:
-.IP \(bu 3
+.IP \[bu] 3
by opening a
.IR /proc/ pid
directory;
-.IP \(bu
+.IP \[bu]
using
.BR pidfd_open (2);
or
-.IP \(bu
+.IP \[bu]
via the PID file descriptor that is returned by a call to
.BR clone (2)
or
@@ -210,7 +210,7 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- /* Populate a \(aqsiginfo_t\(aq structure for use with
+ /* Populate a \[aq]siginfo_t\[aq] structure for use with
pidfd_send_signal(). */
memset(&info, 0, sizeof(info));
diff --git a/man2/pipe.2 b/man2/pipe.2
index 9b0a785e4..400406b41 100644
--- a/man2/pipe.2
+++ b/man2/pipe.2
@@ -13,7 +13,7 @@
.\" to EXAMPLE text.
.\" 2008-10-10, mtk: add description of pipe2()
.\"
-.TH PIPE 2 2022-12-04 "Linux man-pages 6.02"
+.TH pipe 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pipe, pipe2 \- create pipe
.SH LIBRARY
@@ -85,7 +85,7 @@ to the pipe is dealt with as a separate packet, and
from the pipe will read one packet at a time.
Note the following points:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Writes of greater than
.B PIPE_BUF
bytes (see
@@ -95,7 +95,7 @@ The constant
.B PIPE_BUF
is defined in
.IR <limits.h> .
-.IP \(bu
+.IP \[bu]
If a
.BR read (2)
specifies a buffer size that is smaller than the next packet,
@@ -105,7 +105,7 @@ Specifying a buffer size of
.B PIPE_BUF
will be sufficient to read the largest possible packets
(see the previous point).
-.IP \(bu
+.IP \[bu]
Zero-length packets are not supported.
(A
.BR read (2)
diff --git a/man2/pivot_root.2 b/man2/pivot_root.2
index 938b62d8d..d56ad996c 100644
--- a/man2/pivot_root.2
+++ b/man2/pivot_root.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pivot_root 2 2022-10-30 "Linux man-pages 6.02"
+.TH pivot_root 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pivot_root \- change the root mount
.SH LIBRARY
@@ -47,29 +47,29 @@ and thus it should be followed by a
\fBchdir("/")\fP call.
.PP
The following restrictions apply:
-.IP \(bu 3
+.IP \[bu] 3
.I new_root
and
.I put_old
must be directories.
-.IP \(bu
+.IP \[bu]
.I new_root
and
.I put_old
must not be on the same mount as the current root.
-.IP \(bu
+.IP \[bu]
\fIput_old\fP must be at or underneath \fInew_root\fP;
that is, adding some nonnegative
number of "\fI/..\fP" suffixes to the pathname pointed to by
.I put_old
must yield the same directory as \fInew_root\fP.
-.IP \(bu
+.IP \[bu]
.I new_root
must be a path to a mount point, but can't be
.IR """/""" .
A path that is not already a mount point can be converted into one by
bind mounting the path onto itself.
-.IP \(bu
+.IP \[bu]
The propagation type of the parent mount of
.I new_root
and the parent mount of the current root directory must not be
@@ -81,7 +81,7 @@ is an existing mount point, its propagation type must not be
These restrictions ensure that
.BR pivot_root ()
never propagates any changes to another mount namespace.
-.IP \(bu
+.IP \[bu]
The current root directory must be a mount point.
.SH RETURN VALUE
On success, zero is returned.
@@ -202,7 +202,7 @@ and exec the new
Helper programs for this process exist; see
.BR switch_root (8).
.\"
-.SS pivot_root(\(dq.\(dq, \(dq.\(dq)
+.SS pivot_root(\[dq].\[dq], \[dq].\[dq])
.I new_root
and
.I put_old
@@ -283,7 +283,7 @@ $ \fBmkdir /tmp/rootfs\fP
$ \fBls \-id /tmp/rootfs\fP # Show inode number of new root directory
319459 /tmp/rootfs
$ \fBcp $(which busybox) /tmp/rootfs\fP
-$ \fBPS1=\(aqbbsh$ \(aq sudo ./pivot_root_demo /tmp/rootfs /busybox sh\fP
+$ \fBPS1=\[aq]bbsh$ \[aq] sudo ./pivot_root_demo /tmp/rootfs /busybox sh\fP
bbsh$ \fBPATH=/\fP
bbsh$ \fBbusybox ln busybox ln\fP
bbsh$ \fBln busybox echo\fP
@@ -292,7 +292,7 @@ bbsh$ \fBls\fP
busybox echo ln ls
bbsh$ \fBls \-id /\fP # Compare with inode number above
319459 /
-bbsh$ \fBecho \(aqhello world\(aq\fP
+bbsh$ \fBecho \[aq]hello world\[aq]\fP
hello world
.EE
.in
@@ -333,7 +333,7 @@ child(void *arg)
char *new_root = args[0];
const char *put_old = "/oldrootfs";
- /* Ensure that \(aqnew_root\(aq and its parent mount don\(aqt have
+ /* Ensure that \[aq]new_root\[aq] and its parent mount don\[aq]t have
shared propagation (which would cause pivot_root() to
return an error), and prevent propagation of mount
events to the initial mount namespace. */
@@ -341,7 +341,7 @@ child(void *arg)
if (mount(NULL, "/", NULL, MS_REC | MS_PRIVATE, NULL) == \-1)
err(EXIT_FAILURE, "mount\-MS_PRIVATE");
- /* Ensure that \(aqnew_root\(aq is a mount point. */
+ /* Ensure that \[aq]new_root\[aq] is a mount point. */
if (mount(new_root, new_root, NULL, MS_BIND, NULL) == \-1)
err(EXIT_FAILURE, "mount\-MS_BIND");
diff --git a/man2/pkey_alloc.2 b/man2/pkey_alloc.2
index 3e0e1fe6a..26e8cb8c7 100644
--- a/man2/pkey_alloc.2
+++ b/man2/pkey_alloc.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pkey_alloc 2 2022-12-04 "Linux man-pages 6.02"
+.TH pkey_alloc 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pkey_alloc, pkey_free \- allocate or free a protection key
.SH LIBRARY
diff --git a/man2/poll.2 b/man2/poll.2
index 984a2e37e..7aecf02b4 100644
--- a/man2/poll.2
+++ b/man2/poll.2
@@ -7,7 +7,7 @@
.\" 2006-07-01, mtk, Added POLLRDHUP + various other wording and
.\" formatting changes.
.\"
-.TH poll 2 2022-12-04 "Linux man-pages 6.02"
+.TH poll 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
poll, ppoll \- wait for some event on a file descriptor
.SH LIBRARY
@@ -116,11 +116,11 @@ argument specifies the number of milliseconds that
.BR poll ()
should block waiting for a file descriptor to become ready.
The call will block until either:
-.IP \(bu 3
+.IP \[bu] 3
a file descriptor becomes ready;
-.IP \(bu
+.IP \[bu]
the call is interrupted by a signal handler; or
-.IP \(bu
+.IP \[bu]
the timeout expires.
.PP
Note that the
@@ -150,14 +150,14 @@ There is data to read.
There is some exceptional condition on the file descriptor.
Possibilities include:
.RS
-.IP \(bu 3
+.IP \[bu] 3
There is out-of-band data on a TCP socket (see
.BR tcp (7)).
-.IP \(bu
+.IP \[bu]
A pseudoterminal master in packet mode has seen a state change on the slave
(see
.BR ioctl_tty (2)).
-.IP \(bu
+.IP \[bu]
A
.I cgroup.events
file has been modified (see
@@ -461,14 +461,14 @@ The program loops, repeatedly using
to monitor the file descriptors,
printing the number of ready file descriptors on return.
For each ready file descriptor, the program:
-.IP \(bu 3
+.IP \[bu] 3
displays the returned
.I revents
field in a human-readable form;
-.IP \(bu
+.IP \[bu]
if the file descriptor is readable, reads some data from it,
and displays that data on standard output; and
-.IP \(bu
+.IP \[bu]
if the file descriptor was not readable,
but some other event occurred (presumably
.BR POLLHUP ),
@@ -517,7 +517,7 @@ All file descriptors closed; bye
In the above output, we see that
.BR poll ()
returned three times:
-.IP \(bu 3
+.IP \[bu] 3
On the first return, the bits returned in the
.I revents
field were
@@ -526,7 +526,7 @@ indicating that the file descriptor is readable, and
.BR POLLHUP ,
indicating that the other end of the FIFO has been closed.
The program then consumed some of the available input.
-.IP \(bu
+.IP \[bu]
The second return from
.BR poll ()
also indicated
@@ -534,7 +534,7 @@ also indicated
and
.BR POLLHUP ;
the program then consumed the last of the available input.
-.IP \(bu
+.IP \[bu]
On the final return,
.BR poll ()
indicated only
@@ -578,7 +578,7 @@ main(int argc, char *argv[])
if (pfds == NULL)
errExit("malloc");
- /* Open each file on command line, and add it to \(aqpfds\(aq array. */
+ /* Open each file on command line, and add it to \[aq]pfds\[aq] array. */
for (nfds_t j = 0; j < nfds; j++) {
pfds[j].fd = open(argv[j + 1], O_RDONLY);
diff --git a/man2/posix_fadvise.2 b/man2/posix_fadvise.2
index e3cbff21a..daf031cef 100644
--- a/man2/posix_fadvise.2
+++ b/man2/posix_fadvise.2
@@ -6,7 +6,7 @@
.\" 2005-04-08 mtk, noted kernel version and added BUGS
.\" 2010-10-09, mtk, document arm_fadvise64_64()
.\"
-.TH posix_fadvise 2 2022-12-04 "Linux man-pages 6.02"
+.TH posix_fadvise 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
posix_fadvise \- predeclare an access pattern for file data
.SH LIBRARY
diff --git a/man2/prctl.2 b/man2/prctl.2
index 7b48deeda..bfd94a477 100644
--- a/man2/prctl.2
+++ b/man2/prctl.2
@@ -36,7 +36,7 @@
.\" 2014-11-10 Dave Hansen, document PR_MPX_{EN,DIS}ABLE_MANAGEMENT
.\"
.\"
-.TH PRCTL 2 2022-12-04 "Linux man-pages 6.02"
+.TH prctl 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
prctl \- operations on a process or thread
.SH LIBRARY
@@ -208,8 +208,8 @@ The setting is preserved across
.IP
Establishing a subreaper process is useful in session management frameworks
where a hierarchical group of processes is managed by a subreaper process
-that needs to be informed when one of the processes\(emfor example,
-a double-forked daemon\(emterminates
+that needs to be informed when one of the processes\[em]for example,
+a double-forked daemon\[em]terminates
(perhaps so that it can restart that process).
Some
.BR init (1)
@@ -258,17 +258,17 @@ However, it is reset to the current value contained in the file
in the following circumstances:
.\" See kernel/cred.c::commit_creds() (Linux 3.18 sources)
.RS
-.IP \(bu 3
+.IP \[bu] 3
The process's effective user or group ID is changed.
-.IP \(bu
+.IP \[bu]
The process's filesystem user or group ID is changed (see
.BR credentials (7)).
-.IP \(bu
+.IP \[bu]
The process executes
.RB ( execve (2))
a set-user-ID or set-group-ID program, resulting in a change
of either the effective user ID or the effective group ID.
-.IP \(bu
+.IP \[bu]
The process executes
.RB ( execve (2))
a program that has file capabilities (see
@@ -727,7 +727,7 @@ To change the symbolic link, one needs to unmap all existing
executable memory areas, including those created by the kernel itself
(for example the kernel usually creates at least one executable
memory area for the ELF
-.I \.text
+.I .text
section).
.IP
In Linux 4.9 and earlier, the
@@ -769,6 +769,40 @@ This feature is available only if the kernel is built with the
.B CONFIG_CHECKPOINT_RESTORE
option enabled.
.RE
+.\" prctl PR_SET_VMA
+.TP
+.BR PR_SET_VMA " (since Linux 5.17)"
+.\" Commit 9a10064f5625d5572c3626c1516e0bebc6c9fe9b
+Sets an attribute specified in
+.I arg2
+for virtual memory areas starting from the address specified in
+.I arg3
+and spanning the size specified in
+.IR arg4 .
+.I arg5
+specifies the value of the attribute to be set.
+.IP
+Note that assigning an attribute to a virtual memory area
+might prevent it from being merged with adjacent virtual memory areas
+due to the difference in that attribute's value.
+.IP
+Currently,
+.I arg2
+must be one of:
+.RS
+.TP
+.B PR_SET_VMA_ANON_NAME
+Set a name for anonymous virtual memory areas.
+.I arg5
+should be a pointer to a null-terminated string containing the name.
+The name length including null byte cannot exceed 80 bytes.
+If
+.I arg5
+is NULL, the name of the appropriate anonymous virtual memory areas
+will be reset.
+The name can contain only printable ascii characters (including space),
+except \[aq][\[aq], \[aq]]\[aq], \[aq]\e\[aq], \[aq]$\[aq], and \[aq]\[ga]\[aq].
+.RE
.\" prctl PR_MPX_ENABLE_MANAGEMENT
.TP
.BR PR_MPX_ENABLE_MANAGEMENT ", " PR_MPX_DISABLE_MANAGEMENT " (since Linux 3.19, removed in Linux 5.4; only on x86)"
@@ -826,7 +860,7 @@ CPUID bit, like with the following command:
.IP
.in +4n
.EX
-cat /proc/cpuinfo | grep \(aq mpx \(aq
+cat /proc/cpuinfo | grep \[aq] mpx \[aq]
.EE
.in
.IP
@@ -964,7 +998,7 @@ data authentication key A
data authentication key B
.TP
.B PR_PAC_APGAKEY
-generic authentication \(lqA\(rq key.
+generic authentication \[lq]A\[rq] key.
.IP
(Yes folks, there really is no generic B key.)
.RE
@@ -1561,23 +1595,23 @@ structure (see
.BR sigaction (2))
associated with the signal:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I si_signo
will contain
.BR SIGSYS .
-.IP \(bu
+.IP \[bu]
.I si_call_addr
will show the address of the system call instruction.
-.IP \(bu
+.IP \[bu]
.I si_syscall
and
.I si_arch
will indicate which system call was attempted.
-.IP \(bu
+.IP \[bu]
.I si_code
will contain
.BR SYS_USER_DISPATCH .
-.IP \(bu
+.IP \[bu]
.I si_errno
will be set to 0.
.RE
@@ -1624,7 +1658,7 @@ see the kernel source file
.TP
.BR PR_SET_TAGGED_ADDR_CTRL " (since Linux 5.4, only on arm64)"
Controls support for passing tagged user-space addresses to the kernel
-(i.e., addresses where bits 56\(em63 are not all zero).
+(i.e., addresses where bits 56\[em]63 are not all zero).
.IP
The level of support is selected by
.IR "arg2" ,
@@ -1672,7 +1706,7 @@ Irrespective of which mode is set,
addresses passed to certain interfaces
must always be untagged:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.BR brk (2),
.BR mmap (2),
.BR shmat (2),
@@ -1685,8 +1719,8 @@ argument of
(Prior to Linux 5.6 these accepted tagged addresses,
but the behaviour may not be what you expect.
Don't rely on it.)
-.IP \(bu
-\(oqpolymorphic\(cq interfaces
+.IP \[bu]
+\[oq]polymorphic\[cq] interfaces
that accept pointers to arbitrary types cast to a
.I void *
or other generic type, specifically
@@ -2142,17 +2176,17 @@ is
.BR PR_SET_MM ,
and one of the following is true
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I arg4
or
.I arg5
is nonzero;
-.IP \(bu
+.IP \[bu]
.I arg3
is greater than
.B TASK_SIZE
(the limit on the size of the user address space for this architecture);
-.IP \(bu
+.IP \[bu]
.I arg2
is
.BR PR_SET_MM_START_CODE ,
@@ -2162,7 +2196,7 @@ is
or
.BR PR_SET_MM_START_STACK ,
and the permissions of the corresponding memory area are not as required;
-.IP \(bu
+.IP \[bu]
.I arg2
is
.B PR_SET_MM_START_BRK
@@ -2328,18 +2362,18 @@ is
.B PR_SET_SYSCALL_USER_DISPATCH
and one of the following is true:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I arg2
is
.B PR_SYS_DISPATCH_OFF
and the remaining arguments are not 0;
-.IP \(bu
+.IP \[bu]
.I arg2
is
.B PR_SYS_DISPATCH_ON
and the memory range specified is outside the
address space of the process.
-.IP \(bu
+.IP \[bu]
.I arg2
is invalid.
.RE
diff --git a/man2/pread.2 b/man2/pread.2
index 43bfecab5..bdea3023c 100644
--- a/man2/pread.2
+++ b/man2/pread.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pread 2 2022-12-04 "Linux man-pages 6.02"
+.TH pread 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pread, pwrite \- read from or write to a file descriptor at a given offset
.SH LIBRARY
diff --git a/man2/process_madvise.2 b/man2/process_madvise.2
index faacb85bd..e6eb017b4 100644
--- a/man2/process_madvise.2
+++ b/man2/process_madvise.2
@@ -5,7 +5,7 @@
.\"
.\" Commit ecb8ac8b1f146915aa6b96449b66dd48984caacc
.\"
-.TH process_madvise 2 2022-11-01 "Linux man-pages 6.02"
+.TH process_madvise 2 2022-11-01 "Linux man-pages 6.03"
.SH NAME
process_madvise \- give advice about use of memory to a process
.SH LIBRARY
diff --git a/man2/process_vm_readv.2 b/man2/process_vm_readv.2
index 0e195d496..d8329106a 100644
--- a/man2/process_vm_readv.2
+++ b/man2/process_vm_readv.2
@@ -6,7 +6,7 @@
.\"
.\" Commit fcf634098c00dd9cd247447368495f0b79be12d1
.\"
-.TH process_vm_readv 2 2022-12-04 "Linux man-pages 6.02"
+.TH process_vm_readv 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
process_vm_readv, process_vm_writev \-
transfer data between process address spaces
@@ -77,7 +77,7 @@ specifies the number of elements in
The
.BR process_vm_writev ()
system call is the converse of
-.BR process_vm_readv ()\(emit
+.BR process_vm_readv ()\[em]it
transfers data from the local process to the remote process.
Other than the direction of the transfer, the arguments
.IR liovcnt ,
diff --git a/man2/ptrace.2 b/man2/ptrace.2
index 2b248d300..5aefc6c08 100644
--- a/man2/ptrace.2
+++ b/man2/ptrace.2
@@ -83,7 +83,7 @@
.\"
.\" and others that can be found in the arch/*/include/uapi/asm/ptrace files
.\"
-.TH ptrace 2 2022-12-04 "Linux man-pages 6.02"
+.TH ptrace 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ptrace \- process trace
.SH LIBRARY
@@ -1554,7 +1554,7 @@ The kernel behavior described in the previous paragraph
causes a problem with transparent handling of stopping signals.
If the tracer restarts the tracee after group-stop,
the stopping signal
-is effectively ignored\(emthe tracee doesn't remain stopped, it runs.
+is effectively ignored\[em]the tracee doesn't remain stopped, it runs.
If the tracer doesn't restart the tracee before entering into the next
.BR waitpid (2),
future
@@ -2158,7 +2158,7 @@ and needs to be restarted and waited for again, until
is seen.
Yet another complication is to be sure that
the tracee is not already ptrace-stopped,
-because no signal delivery happens while it is\(emnot even
+because no signal delivery happens while it is\[em]not even
.BR SIGSTOP .
.\" FIXME Describe how to detach from a group-stopped tracee so that it
.\" doesn't run, but continues to wait for SIGCONT.
@@ -2189,7 +2189,7 @@ at completion of the call, it appears as though the
occurred in the thread group leader, regardless of which thread did the
.BR execve (2).)
This resetting of the thread ID looks very confusing to tracers:
-.IP \(bu 3
+.IP \[bu] 3
All other threads stop in
.B PTRACE_EVENT_EXIT
stop, if the
@@ -2199,7 +2199,7 @@ Then all other threads except the thread group leader report
death as if they exited via
.BR _exit (2)
with exit code 0.
-.IP \(bu
+.IP \[bu]
The execing tracee changes its thread ID while it is in the
.BR execve (2).
(Remember, under ptrace, the "pid" returned from
@@ -2207,13 +2207,13 @@ The execing tracee changes its thread ID while it is in the
or fed into ptrace calls, is the tracee's thread ID.)
That is, the tracee's thread ID is reset to be the same as its process ID,
which is the same as the thread group leader's thread ID.
-.IP \(bu
+.IP \[bu]
Then a
.B PTRACE_EVENT_EXEC
stop happens, if the
.B PTRACE_O_TRACEEXEC
option was turned on.
-.IP \(bu
+.IP \[bu]
If the thread group leader has reported its
.B PTRACE_EVENT_EXIT
stop by this time,
@@ -2269,7 +2269,7 @@ On receiving the
stop notification,
the tracer should clean up all its internal
data structures describing the threads of this process,
-and retain only one data structure\(emone which
+and retain only one data structure\[em]one which
describes the single still running tracee, with
.PP
.in +4n
@@ -2353,7 +2353,7 @@ Many of these bugs have been fixed, but as of Linux 2.6.38 several still
exist; see BUGS below.
.PP
As of Linux 2.6.38, the following is believed to work correctly:
-.IP \(bu 3
+.IP \[bu] 3
exit/death by signal is reported first to the tracer, then,
when the tracer consumes the
.BR waitpid (2)
@@ -2484,7 +2484,7 @@ The checks are based on factors such as the credentials and capabilities
of the two processes,
whether or not the "target" process is dumpable,
and the results of checks performed by any enabled Linux Security Module
-(LSM)\(emfor example, SELinux, Yama, or Smack\(emand by the commoncap LSM
+(LSM)\[em]for example, SELinux, Yama, or Smack\[em]and by the commoncap LSM
(which is always invoked).
.PP
Prior to Linux 2.6.27, all access checks were of a single type.
@@ -2625,13 +2625,13 @@ Deny access if
.I neither
of the following is true:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The real, effective, and saved-set user IDs of the target
match the caller's user ID,
.I and
the real, effective, and saved-set group IDs of the target
match the caller's group ID.
-.IP \(bu
+.IP \[bu]
The caller has the
.B CAP_SYS_PTRACE
capability in the user namespace of the target.
@@ -2672,12 +2672,12 @@ Deny access if
.I neither
of the following is true:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The caller and the target process are in the same user namespace,
and the caller's capabilities are a superset of the target process's
.I permitted
capabilities.
-.IP \(bu
+.IP \[bu]
The caller has the
.B CAP_SYS_PTRACE
capability in the target process's user namespace.
@@ -2715,14 +2715,14 @@ to gain additional credentials that may exist in memory
and thus expand the scope of the attack.
.PP
More precisely, the Yama LSM limits two types of operations:
-.IP \(bu 3
+.IP \[bu] 3
Any operation that performs a ptrace access mode
.B PTRACE_MODE_ATTACH
-check\(emfor example,
+check\[em]for example,
.BR ptrace ()
.BR PTRACE_ATTACH .
(See the "Ptrace access mode checking" discussion above.)
-.IP \(bu
+.IP \[bu]
.BR ptrace ()
.BR PTRACE_TRACEME .
.PP
diff --git a/man2/query_module.2 b/man2/query_module.2
index 21e61fbb1..228987715 100644
--- a/man2/query_module.2
+++ b/man2/query_module.2
@@ -5,7 +5,7 @@
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
-.TH query_module 2 2022-12-04 "Linux man-pages 6.02"
+.TH query_module 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
query_module \- query the kernel for various bits pertaining to modules
.SH SYNOPSIS
diff --git a/man2/quotactl.2 b/man2/quotactl.2
index 39cd74263..e29c405b7 100644
--- a/man2/quotactl.2
+++ b/man2/quotactl.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH quotactl 2 2022-12-04 "Linux man-pages 6.02"
+.TH quotactl 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
quotactl \- manipulate disk quotas
.SH LIBRARY
@@ -88,11 +88,11 @@ The original quota format.
.TP
.B QFMT_VFS_V0
The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs
-and quota limits up to 2^42 bytes and 2^32 inodes.
+and quota limits up to 2\[ha]42 bytes and 2\[ha]32 inodes.
.TP
.B QFMT_VFS_V1
A quota format that can handle 32-bit UIDs and GIDs
-and quota limits of 2^63 - 1 bytes and 2^63 - 1 inodes.
+and quota limits of 2\[ha]63 \- 1 bytes and 2\[ha]63 \- 1 inodes.
.RE
.IP
The
@@ -777,17 +777,17 @@ Instead of
one can use
.IR <linux/dqblk_xfs.h> ,
taking into account that there are several naming discrepancies:
-.IP \(bu 3
+.IP \[bu] 3
Quota enabling flags (of format
.BR XFS_QUOTA_[UGP]DQ_{ACCT,ENFD} )
are defined without a leading "X", as
.BR FS_QUOTA_[UGP]DQ_{ACCT,ENFD} .
-.IP \(bu
+.IP \[bu]
The same is true for
.B XFS_{USER,GROUP,PROJ}_QUOTA
quota type flags, which are defined as
.BR FS_{USER,GROUP,PROJ}_QUOTA .
-.IP \(bu
+.IP \[bu]
The
.I dqblk_xfs.h
header file defines its own
diff --git a/man2/read.2 b/man2/read.2
index f05f21833..73a632282 100644
--- a/man2/read.2
+++ b/man2/read.2
@@ -13,7 +13,7 @@
.\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt
.\" <michael@cantor.informatik.rwth-aachen.de>
.\"
-.TH read 2 2022-12-04 "Linux man-pages 6.02"
+.TH read 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
read \- read from a file descriptor
.SH LIBRARY
diff --git a/man2/readahead.2 b/man2/readahead.2
index a13b6eb29..5022c8494 100644
--- a/man2/readahead.2
+++ b/man2/readahead.2
@@ -5,7 +5,7 @@
.\" 2004-05-40 Created by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2004-10-05 aeb, minor correction
.\"
-.TH readahead 2 2022-12-04 "Linux man-pages 6.02"
+.TH readahead 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
readahead \- initiate file readahead into page cache
.SH LIBRARY
diff --git a/man2/readdir.2 b/man2/readdir.2
index 2f40ed8ad..3faff8aca 100644
--- a/man2/readdir.2
+++ b/man2/readdir.2
@@ -7,7 +7,7 @@
.\" In 1.3.X, returns only one entry each time; return value is different.
.\" Modified 2004-12-01, mtk, fixed headers listed in SYNOPSIS
.\"
-.TH readdir 2 2022-10-30 "Linux man-pages 6.02"
+.TH readdir 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
readdir \- read directory entry
.SH LIBRARY
@@ -74,7 +74,7 @@ is the distance from the start of the directory to this
.I d_reclen
is the size of
.IR d_name ,
-not counting the terminating null byte (\(aq\e0\(aq).
+not counting the terminating null byte (\[aq]\e0\[aq]).
.I d_name
is a null-terminated filename.
.SH RETURN VALUE
diff --git a/man2/readlink.2 b/man2/readlink.2
index 50b1ee247..fa11e8317 100644
--- a/man2/readlink.2
+++ b/man2/readlink.2
@@ -13,7 +13,7 @@
.\" 2011-09-20, Guillem Jover <guillem@hadrons.org>:
.\" Added text on dynamically allocating buffer + example program
.\"
-.TH readlink 2 2022-12-04 "Linux man-pages 6.02"
+.TH readlink 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
readlink, readlinkat \- read value of a symbolic link
.SH LIBRARY
@@ -42,7 +42,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.PP
.BR readlinkat ():
@@ -230,7 +230,7 @@ also addresses a common portability problem when using
for the buffer size,
as this constant is not guaranteed to be defined per POSIX
if the system does not have such limit.
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR readlinkat ()
is unavailable, the glibc wrapper function falls back to the use of
@@ -285,7 +285,7 @@ main(int argc, char *argv[])
bufsiz = sb.st_size + 1;
/* Some magic symlinks under (for example) /proc and /sys
- report \(aqst_size\(aq as zero. In that case, take PATH_MAX as
+ report \[aq]st_size\[aq] as zero. In that case, take PATH_MAX as
a "good enough" estimate. */
if (sb.st_size == 0)
@@ -303,9 +303,9 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- /* Print only \(aqnbytes\(aq of \(aqbuf\(aq, as it doesn't contain a terminating
- null byte (\(aq\e0\(aq). */
- printf("\(aq%s\(aq points to \(aq%.*s\(aq\en", argv[1], (int) nbytes, buf);
+ /* Print only \[aq]nbytes\[aq] of \[aq]buf\[aq], as it doesn't contain a terminating
+ null byte (\[aq]\e0\[aq]). */
+ printf("\[aq]%s\[aq] points to \[aq]%.*s\[aq]\en", argv[1], (int) nbytes, buf);
/* If the return value was equal to the buffer size, then the
the link target was larger than expected (perhaps because the
diff --git a/man2/readv.2 b/man2/readv.2
index 340f5c47e..0f2aca8d8 100644
--- a/man2/readv.2
+++ b/man2/readv.2
@@ -9,7 +9,7 @@
.\" add more details.
.\" 2010-11-16, mtk, Added documentation of preadv() and pwritev()
.\"
-.TH readv 2 2022-12-04 "Linux man-pages 6.02"
+.TH readv 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
readv, writev, preadv, pwritev, preadv2, pwritev2 \-
read or write data into multiple buffers
@@ -44,7 +44,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man2/reboot.2 b/man2/reboot.2
index 1b51e2031..cbc0c331b 100644
--- a/man2/reboot.2
+++ b/man2/reboot.2
@@ -5,7 +5,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH reboot 2 2022-12-04 "Linux man-pages 6.02"
+.TH reboot 2 2023-02-08 "Linux man-pages 6.03"
.SH NAME
reboot \- reboot or enable/disable Ctrl-Alt-Del
.SH LIBRARY
@@ -51,16 +51,16 @@ equals
.I magic2
equals
.B LINUX_REBOOT_MAGIC2
-(that is, 672274793).
+(that is, 0x28121969).
However, since Linux 2.1.17 also
.B LINUX_REBOOT_MAGIC2A
-(that is, 85072278)
+(that is, 0x05121996)
and since Linux 2.1.97 also
.B LINUX_REBOOT_MAGIC2B
-(that is, 369367448)
+(that is, 0x16041998)
and since Linux 2.5.71 also
.B LINUX_REBOOT_MAGIC2C
-(that is, 537993216)
+(that is, 0x20112000)
are permitted as values for
.IR magic2 .
(The hexadecimal values of these constants are meaningful.)
@@ -124,7 +124,7 @@ data will be lost.
.TP
.B LINUX_REBOOT_CMD_RESTART2
(0xa1b2c3d4; since Linux 2.1.30).
-The message "Restarting system with command \(aq%s\(aq" is printed,
+The message "Restarting system with command \[aq]%s\[aq]" is printed,
and a restart (using the command string given in
.IR arg )
is performed immediately.
diff --git a/man2/recv.2 b/man2/recv.2
index f6f900ae8..db3af8e48 100644
--- a/man2/recv.2
+++ b/man2/recv.2
@@ -10,7 +10,7 @@
.\" Modified 1998,1999 by Andi Kleen
.\" 2001-06-19 corrected SO_EE_OFFENDER, bug report by James Hawtin
.\"
-.TH recv 2 2022-12-03 "Linux man-pages 6.02"
+.TH recv 2 2022-12-03 "Linux man-pages 6.03"
.SH NAME
recv, recvfrom, recvmsg \- receive a message from a socket
.SH LIBRARY
diff --git a/man2/recvmmsg.2 b/man2/recvmmsg.2
index e1c2694ea..41853a5b9 100644
--- a/man2/recvmmsg.2
+++ b/man2/recvmmsg.2
@@ -8,7 +8,7 @@
.\" Author: Arnaldo Carvalho de Melo <acme@redhat.com>
.\" Date: Mon Oct 12 23:40:10 2009 -0700
.\"
-.TH recvmmsg 2 2022-12-04 "Linux man-pages 6.02"
+.TH recvmmsg 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
recvmmsg \- receive multiple messages on a socket
.SH LIBRARY
diff --git a/man2/remap_file_pages.2 b/man2/remap_file_pages.2
index 2ce30fb60..090b59431 100644
--- a/man2/remap_file_pages.2
+++ b/man2/remap_file_pages.2
@@ -5,7 +5,7 @@
.\" 2003-12-10 Initial creation, Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2004-10-28 aeb, corrected prototype, prot must be 0
.\"
-.TH remap_file_pages 2 2022-12-04 "Linux man-pages 6.02"
+.TH remap_file_pages 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
remap_file_pages \- create a nonlinear file mapping
.SH LIBRARY
diff --git a/man2/removexattr.2 b/man2/removexattr.2
index 2987e98a0..36ee6a178 100644
--- a/man2/removexattr.2
+++ b/man2/removexattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH removexattr 2 2022-12-04 "Linux man-pages 6.02"
+.TH removexattr 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
removexattr, lremovexattr, fremovexattr \- remove an extended attribute
.SH LIBRARY
diff --git a/man2/rename.2 b/man2/rename.2
index 95e33d93d..2c03d4e94 100644
--- a/man2/rename.2
+++ b/man2/rename.2
@@ -10,7 +10,7 @@
.\" Modified Thu Mar 3 09:49:35 2005 by Michael Haardt <michael@moria.de>
.\" 2007-03-25, mtk, added various text to DESCRIPTION.
.\"
-.TH rename 2 2022-12-04 "Linux man-pages 6.02"
+.TH rename 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rename, renameat, renameat2 \- change the name or location of a file
.SH LIBRARY
@@ -187,19 +187,19 @@ can't be employed together with
requires support from the underlying filesystem.
Support for various filesystems was added as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
ext4 (Linux 3.15);
.\" ext4: commit 0a7c3937a1f23f8cb5fc77ae01661e9968a51d0c
-.IP \(bu
+.IP \[bu]
btrfs, tmpfs, and cifs (Linux 3.17);
-.IP \(bu
+.IP \[bu]
xfs (Linux 4.0);
.\" btrfs: commit 80ace85c915d0f41016f82917218997b72431258
.\" tmpfs: commit 3b69ff51d087d265aa4af3a532fc4f20bf33e718
.\" cifs: commit 7c33d5972ce382bcc506d16235f1e9b7d22cbef8
.\"
.\" gfs2 in Linux 4.2?
-.IP \(bu
+.IP \[bu]
Support for many other filesystems was added in Linux 4.9, including
ext2, minix, reiserfs, jfs, vfat, and bpf.
.\" Also affs, bfs, exofs, hfs, hfsplus, jffs2, logfs, msdos,
@@ -310,7 +310,7 @@ this an error.
(Note that there is no requirement to return
.B EBUSY
in such
-cases\(emthere is nothing wrong with doing the rename anyway\(embut
+cases\[em]there is nothing wrong with doing the rename anyway\[em]but
it is allowed to return
.B EBUSY
if the system cannot otherwise
@@ -497,7 +497,7 @@ library support was added in glibc 2.4.
was added in Linux 3.15; library support was added in glibc 2.28.
.SH STANDARDS
.BR rename ():
-4.3BSD, C89, C99, POSIX.1-2001, POSIX.1-2008.
+4.3BSD, C99, POSIX.1-2001, POSIX.1-2008.
.PP
.BR renameat ():
POSIX.1-2008.
@@ -506,7 +506,7 @@ POSIX.1-2008.
is Linux-specific.
.SH NOTES
.\"
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR renameat ()
is unavailable, the glibc wrapper function falls back to the use of
diff --git a/man2/request_key.2 b/man2/request_key.2
index b2073719e..c71ae710f 100644
--- a/man2/request_key.2
+++ b/man2/request_key.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH request_key 2 2022-12-03 "Linux man-pages 6.02"
+.TH request_key 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
request_key \- request a key from the kernel's key management facility
.SH LIBRARY
@@ -113,7 +113,7 @@ beginning with the keyring set via the
.B KEYCTL_SET_REQKEY_KEYRING
operation and continuing in the order shown below
until it finds the first keyring that exists:
-.IP \(bu 3
+.IP \[bu] 3
.\" 8bbf4976b59fc9fc2861e79cab7beb3f6d647640
The requestor keyring
.RB ( KEY_REQKEY_DEFL_REQUESTOR_KEYRING ,
@@ -123,28 +123,28 @@ since Linux 2.6.29).
.\" If I understand correctly, we'll only get here if
.\" 'dest_keyring' is zero, in which case KEY_REQKEY_DEFL_REQUESTOR_KEYRING
.\" won't refer to a keyring. Have I misunderstood?
-.IP \(bu
+.IP \[bu]
The thread-specific keyring
.RB ( KEY_REQKEY_DEFL_THREAD_KEYRING ;
see
.BR thread\-keyring (7)).
-.IP \(bu
+.IP \[bu]
The process-specific keyring
.RB ( KEY_REQKEY_DEFL_PROCESS_KEYRING ;
see
.BR process\-keyring (7)).
-.IP \(bu
+.IP \[bu]
The session-specific keyring
.RB ( KEY_REQKEY_DEFL_SESSION_KEYRING ;
see
.BR session\-keyring (7)).
-.IP \(bu
+.IP \[bu]
The session keyring for the process's user ID
.RB ( KEY_REQKEY_DEFL_USER_SESSION_KEYRING ;
see
.BR user\-session\-keyring (7)).
This keyring is expected to always exist.
-.IP \(bu
+.IP \[bu]
The UID-specific keyring
.RB ( KEY_REQKEY_DEFL_USER_KEYRING ;
see
@@ -225,13 +225,13 @@ the context from which associated key requests may be satisfied.
.IP
The authorization key is constructed as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The key type is
.IR """.request_key_auth""" .
-.IP \(bu
+.IP \[bu]
The key's UID and GID are the same as the corresponding filesystem IDs
of the requesting process.
-.IP \(bu
+.IP \[bu]
The key grants
.IR view ,
.IR read ,
@@ -240,14 +240,14 @@ and
permissions to the key possessor as well as
.I view
permission for the key user.
-.IP \(bu
+.IP \[bu]
The description (name) of the key is the hexadecimal
string representing the ID of the key that is to be instantiated
in the requesting program.
-.IP \(bu
+.IP \[bu]
The payload of the key is taken from the data specified in
.IR callout_info .
-.IP \(bu
+.IP \[bu]
Internally, the kernel also records the PID of the process that called
.BR request_key ().
.RE
@@ -298,14 +298,14 @@ which are shown as hexadecimal values).
.IP (4)
The program spawned in the previous step:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Assumes the authority to instantiate the key U using the
.BR keyctl (2)
.B KEYCTL_ASSUME_AUTHORITY
operation (typically via the
.BR keyctl_assume_authority (3)
function).
-.IP \(bu
+.IP \[bu]
Obtains the callout data from the payload of the authorization key V
(using the
.BR keyctl (2)
@@ -314,7 +314,7 @@ operation (or, more commonly, the
.BR keyctl_read (3)
function) with a key ID value of
.BR KEY_SPEC_REQKEY_AUTH_KEY ).
-.IP \(bu
+.IP \[bu]
Instantiates the key
(or execs another program that performs that task),
specifying the payload and destination keyring.
@@ -362,8 +362,8 @@ is no longer accessible from the
.BR request\-key (8)
program.
.PP
-If a key is created, then\(emregardless of whether it is a valid key or
-a negatively instantiated key\(emit will displace any other key with
+If a key is created, then\[em]regardless of whether it is a valid key or
+a negatively instantiated key\[em]it will displace any other key with
the same type and description from the keyring specified in
.IR dest_keyring .
.SH RETURN VALUE
@@ -424,7 +424,7 @@ Insufficient memory to create a key.
.B EPERM
The
.I type
-argument started with a period (\(aq.\(aq).
+argument started with a period (\[aq].\[aq]).
.SH VERSIONS
This system call first appeared in Linux 2.6.10.
The ability to instantiate keys upon request was added
@@ -451,7 +451,7 @@ we first create a suitable entry in the file
.in +4n
.EX
$ sudo sh
-# \fBecho \(aqcreate user mtk:* * /bin/keyctl instantiate %k %c %S\(aq \e\fP
+# \fBecho \[aq]create user mtk:* * /bin/keyctl instantiate %k %c %S\[aq] \e\fP
\fB> /etc/request\-key.conf\fP
# \fBexit\fP
.EE
@@ -489,7 +489,7 @@ to verify that the requested key has been instantiated:
.in +4n
.EX
$ \fB./t_request_key user mtk:key1 "Payload data"\fP
-$ \fBgrep \(aq2dddaf50\(aq /proc/keys\fP
+$ \fBgrep \[aq]2dddaf50\[aq] /proc/keys\fP
2dddaf50 I\-\-Q\-\-\- 1 perm 3f010000 1000 1000 user mtk:key1: 12
.EE
.in
diff --git a/man2/restart_syscall.2 b/man2/restart_syscall.2
index 68a7b9c7b..a87d85363 100644
--- a/man2/restart_syscall.2
+++ b/man2/restart_syscall.2
@@ -10,7 +10,7 @@
.\"
.\" See also Section 11.3.3 of Understanding the Linux Kernel, 3rd edition
.\"
-.TH restart_syscall 2 2022-10-30 "Linux man-pages 6.02"
+.TH restart_syscall 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
restart_syscall \- restart a system call after interruption by a stop signal
.SH SYNOPSIS
@@ -35,7 +35,7 @@ This system call is designed only for internal use by the kernel.
.PP
.BR restart_syscall ()
is used for restarting only those system calls that,
-when restarted, should adjust their time-related parameters\(emnamely
+when restarted, should adjust their time-related parameters\[em]namely
.BR poll (2)
(since Linux 2.6.24),
.BR nanosleep (2)
diff --git a/man2/rmdir.2 b/man2/rmdir.2
index 53e0c09c7..8b99df8b8 100644
--- a/man2/rmdir.2
+++ b/man2/rmdir.2
@@ -7,7 +7,7 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH rmdir 2 2022-10-30 "Linux man-pages 6.02"
+.TH rmdir 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
rmdir \- delete a directory
.SH LIBRARY
diff --git a/man2/rt_sigqueueinfo.2 b/man2/rt_sigqueueinfo.2
index 136cb88b7..fa712fa2f 100644
--- a/man2/rt_sigqueueinfo.2
+++ b/man2/rt_sigqueueinfo.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH rt_sigqueueinfo 2 2022-12-04 "Linux man-pages 6.02"
+.TH rt_sigqueueinfo 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rt_sigqueueinfo, rt_tgsigqueueinfo \- queue a signal and data
.SH LIBRARY
@@ -72,7 +72,7 @@ codes in the Linux kernel source file
If the signal is being sent to any process other than the caller itself,
the following restrictions apply:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The code can't be a value greater than or equal to zero.
In particular, it can't be
.BR SI_USER ,
@@ -81,7 +81,7 @@ which is used by the kernel to indicate a signal sent by
and nor can it be
.BR SI_KERNEL ,
which is used to indicate a signal generated by the kernel.
-.IP \(bu
+.IP \[bu]
The code can't (since Linux 2.6.39) be
.BR SI_TKILL ,
which is used by the kernel to indicate a signal sent using
diff --git a/man2/s390_guarded_storage.2 b/man2/s390_guarded_storage.2
index 822ac2392..b866ae7a6 100644
--- a/man2/s390_guarded_storage.2
+++ b/man2/s390_guarded_storage.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH s390_guarded_storage 2 2022-10-30 "Linux man-pages 6.02"
+.TH s390_guarded_storage 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
s390_guarded_storage \- operations with z/Architecture guarded storage facility
.SH LIBRARY
diff --git a/man2/s390_pci_mmio_write.2 b/man2/s390_pci_mmio_write.2
index 642be7eba..ef631763f 100644
--- a/man2/s390_pci_mmio_write.2
+++ b/man2/s390_pci_mmio_write.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH s390_pci_mmio_write 2 2022-11-10 "Linux man-pages 6.02"
+.TH s390_pci_mmio_write 2 2022-11-10 "Linux man-pages 6.03"
.SH NAME
s390_pci_mmio_write, s390_pci_mmio_read \- transfer data to/from PCI
MMIO memory page
diff --git a/man2/s390_runtime_instr.2 b/man2/s390_runtime_instr.2
index 951befa51..4b648aeda 100644
--- a/man2/s390_runtime_instr.2
+++ b/man2/s390_runtime_instr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH s390_runtime_instr 2 2022-10-30 "Linux man-pages 6.02"
+.TH s390_runtime_instr 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
s390_runtime_instr \- enable/disable s390 CPU run-time instrumentation
.SH LIBRARY
diff --git a/man2/s390_sthyi.2 b/man2/s390_sthyi.2
index 3fcc2964e..e99950afb 100644
--- a/man2/s390_sthyi.2
+++ b/man2/s390_sthyi.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH s390_sthyi 2 2022-10-30 "Linux man-pages 6.02"
+.TH s390_sthyi 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
s390_sthyi \- emulate STHYI instruction
.SH LIBRARY
diff --git a/man2/sched_get_priority_max.2 b/man2/sched_get_priority_max.2
index 316079246..2e3620fdf 100644
--- a/man2/sched_get_priority_max.2
+++ b/man2/sched_get_priority_max.2
@@ -7,7 +7,7 @@
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" revision
.\"
-.TH sched_get_priority_max 2 2022-10-30 "Linux man-pages 6.02"
+.TH sched_get_priority_max 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sched_get_priority_max, sched_get_priority_min \- get static priority range
.SH LIBRARY
diff --git a/man2/sched_rr_get_interval.2 b/man2/sched_rr_get_interval.2
index e009debf8..aff03bd9a 100644
--- a/man2/sched_rr_get_interval.2
+++ b/man2/sched_rr_get_interval.2
@@ -7,7 +7,7 @@
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" revision
.\"
-.TH sched_rr_get_interval 2 2022-10-30 "Linux man-pages 6.02"
+.TH sched_rr_get_interval 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sched_rr_get_interval \- get the SCHED_RR interval for the named process
.SH LIBRARY
diff --git a/man2/sched_setaffinity.2 b/man2/sched_setaffinity.2
index 12a94c032..6538b44ec 100644
--- a/man2/sched_setaffinity.2
+++ b/man2/sched_setaffinity.2
@@ -12,7 +12,7 @@
.\" 2008-11-12, mtk, removed CPU_*() macro descriptions to a
.\" separate CPU_SET(3) page.
.\"
-.TH sched_setaffinity 2 2022-12-04 "Linux man-pages 6.02"
+.TH sched_setaffinity 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sched_setaffinity, sched_getaffinity \- \
set and get a thread's CPU affinity mask
@@ -311,7 +311,7 @@ system has two cores, each with two CPUs:
.PP
.in +4n
.EX
-$ \fBlscpu | egrep \-i \(aqcore.*:|socket\(aq\fP
+$ \fBlscpu | egrep \-i \[aq]core.*:|socket\[aq]\fP
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
diff --git a/man2/sched_setattr.2 b/man2/sched_setattr.2
index 8b9debd9a..bc64a4aa4 100644
--- a/man2/sched_setattr.2
+++ b/man2/sched_setattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sched_setattr 2 2022-12-04 "Linux man-pages 6.02"
+.TH sched_setattr 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sched_setattr, sched_getattr \-
set and get scheduling policy and attributes
@@ -378,7 +378,7 @@ These system calls first appeared in Linux 3.14.
.SH STANDARDS
These system calls are nonstandard Linux extensions.
.SH NOTES
-Glibc does not provide wrappers for these system calls; call them using
+glibc does not provide wrappers for these system calls; call them using
.BR syscall (2).
.PP
.BR sched_setattr ()
diff --git a/man2/sched_setparam.2 b/man2/sched_setparam.2
index ec2513859..0076804dc 100644
--- a/man2/sched_setparam.2
+++ b/man2/sched_setparam.2
@@ -8,7 +8,7 @@
.\" revision
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH sched_setparam 2 2022-10-30 "Linux man-pages 6.02"
+.TH sched_setparam 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sched_setparam, sched_getparam \- set and get scheduling parameters
.SH LIBRARY
diff --git a/man2/sched_setscheduler.2 b/man2/sched_setscheduler.2
index 14460bfc4..be8071277 100644
--- a/man2/sched_setscheduler.2
+++ b/man2/sched_setscheduler.2
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH sched_setscheduler 2 2022-10-30 "Linux man-pages 6.02"
+.TH sched_setscheduler 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sched_setscheduler, sched_getscheduler \-
set and get scheduling policy/parameters
diff --git a/man2/sched_yield.2 b/man2/sched_yield.2
index addafff1c..6c2ebd89b 100644
--- a/man2/sched_yield.2
+++ b/man2/sched_yield.2
@@ -7,7 +7,7 @@
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" revision
.\"
-.TH sched_yield 2 2022-10-30 "Linux man-pages 6.02"
+.TH sched_yield 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sched_yield \- yield the processor
.SH LIBRARY
diff --git a/man2/seccomp.2 b/man2/seccomp.2
index 55e1c0340..640b6c179 100644
--- a/man2/seccomp.2
+++ b/man2/seccomp.2
@@ -6,7 +6,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH seccomp 2 2022-12-04 "Linux man-pages 6.02"
+.TH seccomp 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
seccomp \- operate on Secure Computing state of the process
.SH LIBRARY
@@ -277,7 +277,7 @@ which has the following form:
struct seccomp_notif_sizes
__u16 seccomp_notif; /* Size of notification structure */
__u16 seccomp_notif_resp; /* Size of response structure */
- __u16 seccomp_data; /* Size of \(aqstruct seccomp_data\(aq */
+ __u16 seccomp_data; /* Size of \[aq]struct seccomp_data\[aq] */
};
.EE
.IP
@@ -454,7 +454,7 @@ the least significant 16-bits (defined by the constant
are "data" to be associated with this return value.
.PP
If multiple filters exist, they are \fIall\fP executed,
-in reverse order of their addition to the filter tree\(emthat is,
+in reverse order of their addition to the filter tree\[em]that is,
the most recently installed filter is executed first.
(Note that all filters will be called
even if one of the earlier filters returns
@@ -565,23 +565,23 @@ structure (see
.BR sigaction (2))
associated with signal:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I si_signo
will contain
.BR SIGSYS .
-.IP \(bu
+.IP \[bu]
.I si_call_addr
will show the address of the system call instruction.
-.IP \(bu
+.IP \[bu]
.I si_syscall
and
.I si_arch
will indicate which system call was attempted.
-.IP \(bu
+.IP \[bu]
.I si_code
will contain
.BR SYS_SECCOMP .
-.IP \(bu
+.IP \[bu]
.I si_errno
will contain the
.B SECCOMP_RET_DATA
@@ -660,9 +660,9 @@ notified.
(This means that, on older kernels, seccomp-based sandboxes
.B "must not"
allow use of
-.BR ptrace (2)\(emeven
+.BR ptrace (2)\[em]even
of other
-sandboxed processes\(emwithout extreme care;
+sandboxed processes\[em]without extreme care;
ptracers can use this mechanism to escape from the seccomp sandbox.)
.IP
Note that a tracer process will not be notified
@@ -742,11 +742,11 @@ file, and whether kernel auditing is enabled
.IR audit=1 ).
.\" or auditing could be enabled via the netlink API (AUDIT_SET)
The rules are as follows:
-.IP \(bu 3
+.IP \[bu] 3
If the action is
.BR SECCOMP_RET_ALLOW ,
the action is not logged.
-.IP \(bu
+.IP \[bu]
Otherwise, if the action is either
.B SECCOMP_RET_KILL_PROCESS
or
@@ -754,18 +754,18 @@ or
and that action appears in the
.I actions_logged
file, the action is logged.
-.IP \(bu
+.IP \[bu]
Otherwise, if the filter has requested logging (the
.B SECCOMP_FILTER_FLAG_LOG
flag)
and the action appears in the
.I actions_logged
file, the action is logged.
-.IP \(bu
+.IP \[bu]
Otherwise, if kernel auditing is enabled and the process is being audited
.RB ( autrace (8)),
the action is logged.
-.IP \(bu
+.IP \[bu]
Otherwise, the action is not logged.
.SH RETURN VALUE
On success,
@@ -900,22 +900,22 @@ Architecture support for seccomp BPF filtering
.\" Check by grepping for HAVE_ARCH_SECCOMP_FILTER in Kconfig files in
.\" kernel source. Last checked in Linux 4.16-rc source.
is available on the following architectures:
-.IP \(bu 3
+.IP \[bu] 3
x86-64, i386, x32 (since Linux 3.5)
.PD 0
-.IP \(bu
+.IP \[bu]
ARM (since Linux 3.8)
-.IP \(bu
+.IP \[bu]
s390 (since Linux 3.8)
-.IP \(bu
+.IP \[bu]
MIPS (since Linux 3.16)
-.IP \(bu
+.IP \[bu]
ARM-64 (since Linux 3.19)
-.IP \(bu
+.IP \[bu]
PowerPC (since Linux 4.3)
-.IP \(bu
+.IP \[bu]
Tile (since Linux 4.3)
-.IP \(bu
+.IP \[bu]
PA-RISC (since Linux 4.6)
.\" User mode Linux since Linux 4.6
.PD
@@ -923,7 +923,7 @@ PA-RISC (since Linux 4.6)
.SS Caveats
There are various subtleties to consider when applying seccomp filters
to a program, including the following:
-.IP \(bu 3
+.IP \[bu] 3
Some traditional system calls have user-space implementations in the
.BR vdso (7)
on many architectures.
@@ -938,14 +938,14 @@ seccomp filtering for these system calls will have no effect.
.BR vdso (7)
implementations may fall back to invoking the true system call,
in which case seccomp filters would see the system call.)
-.IP \(bu
+.IP \[bu]
Seccomp filtering is based on system call numbers.
However, applications typically do not directly invoke system calls,
but instead call wrapper functions in the C library which
in turn invoke the system calls.
Consequently, one must be aware of the following:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The glibc wrappers for some traditional system calls may actually
employ system calls with different names in the kernel.
For example, the
@@ -956,12 +956,12 @@ system call, and the
.BR fork (2)
wrapper function actually calls
.BR clone (2).
-.IP \(bu
+.IP \[bu]
The behavior of wrapper functions may vary across architectures,
according to the range of system calls provided on those architectures.
In other words, the same wrapper function may invoke
different system calls on different architectures.
-.IP \(bu
+.IP \[bu]
Finally, the behavior of wrapper functions can change across glibc versions.
For example, in older versions, the glibc wrapper function for
.BR open (2)
@@ -987,7 +987,7 @@ filters if the bugs occur in rarely used application code paths.
.\"
.SS Seccomp-specific BPF details
Note the following BPF details specific to seccomp filters:
-.IP \(bu 3
+.IP \[bu] 3
The
.B BPF_H
and
@@ -995,13 +995,13 @@ and
size modifiers are not supported: all operations must load and store
(4-byte) words
.RB ( BPF_W ).
-.IP \(bu
+.IP \[bu]
To access the contents of the
.I seccomp_data
buffer, use the
.B BPF_ABS
addressing mode modifier.
-.IP \(bu
+.IP \[bu]
The
.B BPF_LEN
addressing mode modifier yields an immediate mode operand
@@ -1014,11 +1014,11 @@ The first three arguments are a system call number,
a numeric architecture identifier, and an error number.
The program uses these values to construct a BPF filter
that is used at run time to perform the following checks:
-.IP \(bu 3
+.IP \[bu] 3
If the program is not running on the specified architecture,
the BPF filter causes system calls to fail with the error
.BR ENOSYS .
-.IP \(bu
+.IP \[bu]
If the program attempts to execute the system call with the specified number,
the BPF filter causes the system call to fail, with
.I errno
@@ -1043,7 +1043,7 @@ $ \fBuname \-m\fP
x86_64
$ \fBsyscall_nr() {
cat /usr/src/linux/arch/x86/syscalls/syscall_64.tbl | \e
- awk \(aq$2 != "x32" && $3 == "\(aq$1\(aq" { print $1 }\(aq
+ awk \[aq]$2 != "x32" && $3 == "\[aq]$1\[aq]" { print $1 }\[aq]
}\fP
.EE
.in
@@ -1129,21 +1129,21 @@ install_filter(int syscall_nr, unsigned int t_arch, int f_errno)
/* Assume that AUDIT_ARCH_X86_64 means the normal x86\-64 ABI
(in the x32 ABI, all system calls have bit 30 set in the
- \(aqnr\(aq field, meaning the numbers are >= X32_SYSCALL_BIT). */
+ \[aq]nr\[aq] field, meaning the numbers are >= X32_SYSCALL_BIT). */
if (t_arch == AUDIT_ARCH_X86_64)
upper_nr_limit = X32_SYSCALL_BIT \- 1;
struct sock_filter filter[] = {
- /* [0] Load architecture from \(aqseccomp_data\(aq buffer into
+ /* [0] Load architecture from \[aq]seccomp_data\[aq] buffer into
accumulator. */
BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
(offsetof(struct seccomp_data, arch))),
/* [1] Jump forward 5 instructions if architecture does not
- match \(aqt_arch\(aq. */
+ match \[aq]t_arch\[aq]. */
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, t_arch, 0, 5),
- /* [2] Load system call number from \(aqseccomp_data\(aq buffer into
+ /* [2] Load system call number from \[aq]seccomp_data\[aq] buffer into
accumulator. */
BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
(offsetof(struct seccomp_data, nr))),
@@ -1154,11 +1154,11 @@ install_filter(int syscall_nr, unsigned int t_arch, int f_errno)
BPF_JUMP(BPF_JMP | BPF_JGT | BPF_K, upper_nr_limit, 3, 0),
/* [4] Jump forward 1 instruction if system call number
- does not match \(aqsyscall_nr\(aq. */
+ does not match \[aq]syscall_nr\[aq]. */
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, syscall_nr, 0, 1),
- /* [5] Matching architecture and system call: don\(aqt execute
- the system call, and return \(aqf_errno\(aq in \(aqerrno\(aq. */
+ /* [5] Matching architecture and system call: don\[aq]t execute
+ the system call, and return \[aq]f_errno\[aq] in \[aq]errno\[aq]. */
BPF_STMT(BPF_RET | BPF_K,
SECCOMP_RET_ERRNO | (f_errno & SECCOMP_RET_DATA)),
diff --git a/man2/seccomp_unotify.2 b/man2/seccomp_unotify.2
index 830b8d063..6b4376cd2 100644
--- a/man2/seccomp_unotify.2
+++ b/man2/seccomp_unotify.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH seccomp_unotify 2 2022-10-30 "Linux man-pages 6.02"
+.TH seccomp_unotify 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
seccomp_unotify \- Seccomp user-space notification mechanism
.SH LIBRARY
@@ -77,7 +77,7 @@ is as follows:
The target establishes a seccomp filter in the usual manner,
but with two differences:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The
.BR seccomp (2)
.I flags
@@ -101,7 +101,7 @@ Only one "listening" seccomp filter can be installed for a thread.
.\" suddenly it might break if a container manager is trying to listen to it
.\" too, etc. I expect it won't be needed soon, but I do think it'll change.
.\"
-.IP \(bu
+.IP \[bu]
In cases where it is appropriate, the seccomp filter returns the action value
.BR SECCOMP_RET_USER_NOTIF .
This return value will trigger a notification event.
@@ -336,12 +336,12 @@ This is a cookie for the notification.
Each such cookie is guaranteed to be unique for the corresponding
seccomp filter.
.RS
-.IP \(bu 3
+.IP \[bu] 3
The cookie can be used with the
.B SECCOMP_IOCTL_NOTIF_ID_VALID
.BR ioctl (2)
operation described below.
-.IP \(bu
+.IP \[bu]
When returning a notification response to the kernel,
the supervisor must include the cookie value in the
.I seccomp_notif_resp
@@ -539,7 +539,7 @@ Tell the kernel to execute the target's system call.
.RE
.PP
Two kinds of response are possible:
-.IP \(bu 3
+.IP \[bu] 3
A response to the kernel telling it to execute the
target's system call.
In this case, the
@@ -562,7 +562,7 @@ be executed normally in the target.
The
.B SECCOMP_USER_NOTIF_FLAG_CONTINUE
flag should be used with caution; see NOTES.
-.IP \(bu
+.IP \[bu]
A spoofed return value for the target's system call.
In this case, the kernel does not execute the target's system call,
instead causing the system call to return a spoofed value as specified by
@@ -848,11 +848,11 @@ operation (here, to emulate a call to
.in +4n
int fd, removeFd;
-fd = openat(req->data.args[0], path, req->data.args[2],
- req->data.args[3]);
+fd = openat(req\->data.args[0], path, req\->data.args[2],
+ req\->data.args[3]);
struct seccomp_notif_addfd addfd;
-addfd.id = req->id; /* Cookie from SECCOMP_IOCTL_NOTIF_RECV */
+addfd.id = req\->id; /* Cookie from SECCOMP_IOCTL_NOTIF_RECV */
addfd.srcfd = fd;
addfd.newfd = 0;
addfd.flags = 0;
@@ -864,10 +864,10 @@ close(fd); /* No longer needed in supervisor */
struct seccomp_notif_resp *resp;
/* Code to allocate 'resp' omitted */
-resp->id = req->id;
-resp->error = 0; /* "Success" */
-resp->val = targetFd;
-resp->flags = 0;
+resp\->id = req\->id;
+resp\->error = 0; /* "Success" */
+resp\->val = targetFd;
+resp\->flags = 0;
ioctl(notifyFd, SECCOMP_IOCTL_NOTIF_SEND, resp);
.in
.EE
@@ -906,7 +906,7 @@ flag can be monitored using
and
.BR select (2).
These interfaces indicate that the file descriptor is ready as follows:
-.IP \(bu 3
+.IP \[bu] 3
When a notification is pending,
these interfaces indicate that the file descriptor is readable.
Following such an indication, a subsequent
@@ -917,7 +917,7 @@ or else failing with the error
.B EINTR
if the target has been killed by a signal or its system call
has been interrupted by a signal handler.
-.IP \(bu
+.IP \[bu]
After the notification has been received (i.e., by the
.B SECCOMP_IOCTL_NOTIF_RECV
.BR ioctl (2)
@@ -926,7 +926,7 @@ meaning that a notification response can be sent using the
.B SECCOMP_IOCTL_NOTIF_SEND
.BR ioctl (2)
operation.
-.IP \(bu
+.IP \[bu]
After the last thread using the filter has terminated and been reaped using
.BR waitpid (2)
(or similar),
@@ -1205,7 +1205,7 @@ the supervisor examines the memory of the target process (using
to discover the pathname argument that was supplied to the
.BR mkdir (2)
call, and performs one of the following actions:
-.IP \(bu 3
+.IP \[bu] 3
If the pathname begins with the prefix "/tmp/",
then the supervisor attempts to create the specified directory,
and then spoofs a return for the target process based on the return
@@ -1214,7 +1214,7 @@ value of the supervisor's
call.
In the event that that call succeeds,
the spoofed success return value is the length of the pathname.
-.IP \(bu
+.IP \[bu]
If the pathname begins with "./" (i.e., it is a relative pathname),
the supervisor sends a
.B SECCOMP_USER_NOTIF_FLAG_CONTINUE
@@ -1222,7 +1222,7 @@ response to the kernel to say that the kernel should execute
the target process's
.BR mkdir (2)
call.
-.IP \(bu
+.IP \[bu]
If the pathname begins with some other prefix,
the supervisor spoofs an error return for the target process,
so that the target process's
@@ -1419,8 +1419,8 @@ T: terminating
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
-/* Send the file descriptor \(aqfd\(aq over the connected UNIX domain socket
- \(aqsockfd\(aq. Returns 0 on success, or \-1 on error. */
+/* Send the file descriptor \[aq]fd\[aq] over the connected UNIX domain socket
+ \[aq]sockfd\[aq]. Returns 0 on success, or \-1 on error. */
static int
sendfd(int sockfd, int fd)
@@ -1431,17 +1431,17 @@ sendfd(int sockfd, int fd)
struct cmsghdr *cmsgp;
/* Allocate a char array of suitable size to hold the ancillary data.
- However, since this buffer is in reality a \(aqstruct cmsghdr\(aq, use a
+ However, since this buffer is in reality a \[aq]struct cmsghdr\[aq], use a
union to ensure that it is suitably aligned. */
union {
char buf[CMSG_SPACE(sizeof(int))];
- /* Space large enough to hold an \(aqint\(aq */
+ /* Space large enough to hold an \[aq]int\[aq] */
struct cmsghdr align;
} controlMsg;
- /* The \(aqmsg_name\(aq field can be used to specify the address of the
+ /* The \[aq]msg_name\[aq] field can be used to specify the address of the
destination socket when sending a datagram. However, we do not
- need to use this field because \(aqsockfd\(aq is a connected socket. */
+ need to use this field because \[aq]sockfd\[aq] is a connected socket. */
msgh.msg_name = NULL;
msgh.msg_namelen = 0;
@@ -1456,7 +1456,7 @@ sendfd(int sockfd, int fd)
iov.iov_len = sizeof(int);
data = 12345;
- /* Set \(aqmsghdr\(aq fields that describe ancillary data */
+ /* Set \[aq]msghdr\[aq] fields that describe ancillary data */
msgh.msg_control = controlMsg.buf;
msgh.msg_controllen = sizeof(controlMsg.buf);
@@ -1496,7 +1496,7 @@ recvfd(int sockfd)
} controlMsg;
struct cmsghdr *cmsgp;
- /* The \(aqmsg_name\(aq field can be used to obtain the address of the
+ /* The \[aq]msg_name\[aq] field can be used to obtain the address of the
sending socket. However, we do not need this information. */
msgh.msg_name = NULL;
@@ -1506,10 +1506,10 @@ recvfd(int sockfd)
msgh.msg_iov = &iov;
msgh.msg_iovlen = 1;
- iov.iov_base = &data; /* Real data is an \(aqint\(aq */
+ iov.iov_base = &data; /* Real data is an \[aq]int\[aq] */
iov.iov_len = sizeof(int);
- /* Set \(aqmsghdr\(aq fields that describe ancillary data */
+ /* Set \[aq]msghdr\[aq] fields that describe ancillary data */
msgh.msg_control = controlMsg.buf;
msgh.msg_controllen = sizeof(controlMsg.buf);
@@ -1522,7 +1522,7 @@ recvfd(int sockfd)
cmsgp = CMSG_FIRSTHDR(&msgh);
- /* Check the validity of the \(aqcmsghdr\(aq */
+ /* Check the validity of the \[aq]cmsghdr\[aq] */
if (cmsgp == NULL
|| cmsgp\->cmsg_len != CMSG_LEN(sizeof(int))
@@ -1629,8 +1629,8 @@ closeSocketPair(int sockPair[2])
(1) installs a seccomp filter with the
SECCOMP_FILTER_FLAG_NEW_LISTENER flag;
(2) writes the seccomp notification file descriptor returned from
- the previous step onto the UNIX domain socket, \(aqsockPair[0]\(aq;
- (3) calls mkdir(2) for each element of \(aqargv\(aq.
+ the previous step onto the UNIX domain socket, \[aq]sockPair[0]\[aq];
+ (3) calls mkdir(2) for each element of \[aq]argv\[aq].
The function return value in the parent is the PID of the child
process; the child does not return from this function. */
@@ -1706,9 +1706,9 @@ cookieIsValid(int notifyFd, uint64_t id)
}
/* Access the memory of the target process in order to fetch the
- pathname referred to by the system call argument \(aqargNum\(aq in
- \(aqreq\->data.args[]\(aq. The pathname is returned in \(aqpath\(aq,
- a buffer of \(aqlen\(aq bytes allocated by the caller.
+ pathname referred to by the system call argument \[aq]argNum\[aq] in
+ \[aq]req\->data.args[]\[aq]. The pathname is returned in \[aq]path\[aq],
+ a buffer of \[aq]len\[aq] bytes allocated by the caller.
Returns true if the pathname is successfully fetched, and false
otherwise. For possible causes of failure, see the comments below. */
@@ -1751,11 +1751,11 @@ getTargetPathname(struct seccomp_notif *req, int notifyFd,
/* Once again check that the notification ID is still valid. The
case we are particularly concerned about here is that just
- before we fetched the pathname, the target\(aqs blocked system
+ before we fetched the pathname, the target\[aq]s blocked system
call was interrupted by a signal handler, and after the handler
returned, the target carried on execution (past the interrupted
system call). In that case, we have no guarantees about what we
- are reading, since the target\(aqs memory may have been arbitrarily
+ are reading, since the target\[aq]s memory may have been arbitrarily
changed by subsequent operations. */
if (!cookieIsValid(notifyFd, req\->id)) {
@@ -1763,7 +1763,7 @@ getTargetPathname(struct seccomp_notif *req, int notifyFd,
return false;
}
- /* Even if the target\(aqs system call was not interrupted by a signal,
+ /* Even if the target\[aq]s system call was not interrupted by a signal,
we have no guarantees about what was in the memory of the target
process. (The memory may have been modified by another thread, or
even by an external attacking process.) We therefore treat the
@@ -1778,8 +1778,8 @@ getTargetPathname(struct seccomp_notif *req, int notifyFd,
}
/* Allocate buffers for the seccomp user\-space notification request and
- response structures. It is the caller\(aqs responsibility to free the
- buffers returned via \(aqreq\(aq and \(aqresp\(aq. */
+ response structures. It is the caller\[aq]s responsibility to free the
+ buffers returned via \[aq]req\[aq] and \[aq]resp\[aq]. */
static void
allocSeccompNotifBuffers(struct seccomp_notif **req,
@@ -1801,7 +1801,7 @@ allocSeccompNotifBuffers(struct seccomp_notif **req,
/* When allocating the response buffer, we must allow for the fact
that the user\-space binary may have been built with user\-space
- headers where \(aqstruct seccomp_notif_resp\(aq is bigger than the
+ headers where \[aq]struct seccomp_notif_resp\[aq] is bigger than the
response buffer expected by the (older) kernel. Therefore, we
allocate a buffer that is the maximum of the two sizes. This
ensures that if the supervisor places bytes into the response
@@ -1813,13 +1813,13 @@ allocSeccompNotifBuffers(struct seccomp_notif **req,
resp_size = sizeof(struct seccomp_notif_resp);
*resp = malloc(resp_size);
- if (resp == NULL)
+ if (*resp == NULL)
err(EXIT_FAILURE, "malloc\-seccomp_notif_resp");
}
/* Handle notifications that arrive via the SECCOMP_RET_USER_NOTIF file
- descriptor, \(aqnotifyFd\(aq. */
+ descriptor, \[aq]notifyFd\[aq]. */
static void
handleNotifications(int notifyFd)
@@ -1836,7 +1836,7 @@ handleNotifications(int notifyFd)
for (;;) {
- /* Wait for next notification, returning info in \(aq*req\(aq */
+ /* Wait for next notification, returning info in \[aq]*req\[aq] */
memset(req, 0, sizes.seccomp_notif);
if (ioctl(notifyFd, SECCOMP_IOCTL_NOTIF_RECV, req) == \-1) {
@@ -1872,7 +1872,7 @@ handleNotifications(int notifyFd)
response (sending this response may yield an error if the
failure occurred because the notification ID was no longer
valid); if the directory is in /tmp, then create it on behalf
- of the supervisor; if the pathname starts with \(aq.\(aq, tell the
+ of the supervisor; if the pathname starts with \[aq].\[aq], tell the
kernel to let the target process execute the mkdir();
otherwise, give an error for a directory pathname in any other
location. */
@@ -1919,7 +1919,7 @@ handleNotifications(int notifyFd)
if (ioctl(notifyFd, SECCOMP_IOCTL_NOTIF_SEND, resp) == \-1) {
if (errno == ENOENT)
printf("\etS: response failed with ENOENT; "
- "perhaps target process\(aqs syscall was "
+ "perhaps target process\[aq]s syscall was "
"interrupted by a signal?\en");
else
perror("ioctl\-SECCOMP_IOCTL_NOTIF_SEND");
@@ -1941,7 +1941,7 @@ handleNotifications(int notifyFd)
/* Implementation of the supervisor process:
- (1) obtains the notification file descriptor from \(aqsockPair[1]\(aq
+ (1) obtains the notification file descriptor from \[aq]sockPair[1]\[aq]
(2) handles notifications that arrive on that file descriptor. */
static void
@@ -1981,7 +1981,7 @@ main(int argc, char *argv[])
/* Create a child process\-\-the "target"\-\-that installs seccomp
filtering. The target process writes the seccomp notification
- file descriptor onto \(aqsockPair[0]\(aq and then calls mkdir(2) for
+ file descriptor onto \[aq]sockPair[0]\[aq] and then calls mkdir(2) for
each directory in the command\-line arguments. */
(void) targetProcess(sockPair, &argv[optind]);
diff --git a/man2/select.2 b/man2/select.2
index f8aa5353f..bf6316c39 100644
--- a/man2/select.2
+++ b/man2/select.2
@@ -17,7 +17,7 @@
.\" 2005-03-11, mtk, modified pselect() text (it is now a system
.\" call in Linux 2.6.16.
.\"
-.TH select 2 2022-12-04 "Linux man-pages 6.02"
+.TH select 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO, fd_set \-
synchronous I/O multiplexing
@@ -61,7 +61,7 @@ Feature Test Macro Requirements for glibc (see
.BR select ()
can monitor only file descriptors numbers that are less than
.B FD_SETSIZE
-(1024)\(eman unreasonably low limit for many modern applications\(emand
+(1024)\[em]an unreasonably low limit for many modern applications\[em]and
this limitation will not change.
All modern applications should instead use
.BR poll (2)
@@ -205,11 +205,11 @@ structure (shown below) that specifies the interval that
should block waiting for a file descriptor to become ready.
The call will block until either:
.RS
-.IP \(bu 3
+.IP \[bu] 3
a file descriptor becomes ready;
-.IP \(bu
+.IP \[bu]
the call is interrupted by a signal handler; or
-.IP \(bu
+.IP \[bu]
the timeout expires.
.RE
.IP
@@ -243,7 +243,7 @@ The operation of
and
.BR pselect ()
is identical, other than these three differences:
-.IP \(bu 3
+.IP \[bu] 3
.BR select ()
uses a timeout that is a
.I struct timeval
@@ -252,14 +252,14 @@ uses a timeout that is a
uses a
.I struct timespec
(with seconds and nanoseconds).
-.IP \(bu
+.IP \[bu]
.BR select ()
may update the
.I timeout
argument to indicate how much time was left.
.BR pselect ()
does not change this argument.
-.IP \(bu
+.IP \[bu]
.BR select ()
has no
.I sigmask
@@ -601,7 +601,7 @@ pointer, but is instead a structure of the form:
struct {
const kernel_sigset_t *ss; /* Pointer to signal set */
size_t ss_len; /* Size (in bytes) of object
- pointed to by \(aqss\(aq */
+ pointed to by \[aq]ss\[aq] */
};
.EE
.in
@@ -616,7 +616,7 @@ for a discussion of the difference between the kernel and libc
notion of the signal set.
.\"
.SS Historical glibc details
-Glibc 2.0 provided an incorrect version of
+glibc 2.0 provided an incorrect version of
.BR pselect ()
that did not take a
.I sigmask
@@ -735,7 +735,7 @@ main(void)
tv.tv_usec = 0;
retval = select(1, &rfds, NULL, NULL, &tv);
- /* Don\(aqt rely on the value of tv now! */
+ /* Don\[aq]t rely on the value of tv now! */
if (retval == \-1)
perror("select()");
diff --git a/man2/select_tut.2 b/man2/select_tut.2
index 6b322e50f..5d4a233df 100644
--- a/man2/select_tut.2
+++ b/man2/select_tut.2
@@ -9,7 +9,7 @@
.\" various other changes
.\" 2008-01-26, mtk, substantial changes and rewrites
.\"
-.TH SELECT_TUT 2 2022-12-03 "Linux man-pages 6.02"
+.TH SELECT_TUT 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
select, pselect \- synchronous I/O multiplexing
.SH LIBRARY
@@ -620,7 +620,7 @@ inefficient timeouts.
.PP
The program does not handle more than one simultaneous connection at a
time, although it could easily be extended to do this with a linked list
-of buffers\(emone for each connection.
+of buffers\[em]one for each connection.
At the moment, new
connections cause the current connection to be dropped.
.SH SEE ALSO
diff --git a/man2/semctl.2 b/man2/semctl.2
index f34d24d0d..8f616a34e 100644
--- a/man2/semctl.2
+++ b/man2/semctl.2
@@ -20,7 +20,7 @@
.\" 2005-08-02, mtk: Added IPC_INFO, SEM_INFO, SEM_STAT descriptions.
.\" 2018-03-20, dbueso: Added SEM_STAT_ANY description.
.\"
-.TH semctl 2 2022-12-15 "Linux man-pages 6.02"
+.TH semctl 2 2022-12-15 "Linux man-pages 6.03"
.SH NAME
semctl \- System V semaphore control operations
.SH LIBRARY
diff --git a/man2/semget.2 b/man2/semget.2
index 3d47f5a12..deb82a06b 100644
--- a/man2/semget.2
+++ b/man2/semget.2
@@ -14,7 +14,7 @@
.\" Rewrote BUGS note about semget()'s failure to initialize
.\" semaphore values
.\"
-.TH semget 2 2022-12-04 "Linux man-pages 6.02"
+.TH semget 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
semget \- get a System V semaphore set identifier
.SH LIBRARY
@@ -95,29 +95,29 @@ initializes the set's associated data structure,
(see
.BR semctl (2)),
as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I sem_perm.cuid
and
.I sem_perm.uid
are set to the effective user ID of the calling process.
-.IP \(bu
+.IP \[bu]
.I sem_perm.cgid
and
.I sem_perm.gid
are set to the effective group ID of the calling process.
-.IP \(bu
+.IP \[bu]
The least significant 9 bits of
.I sem_perm.mode
are set to the least significant 9 bits of
.IR semflg .
-.IP \(bu
+.IP \[bu]
.I sem_nsems
is set to the value of
.IR nsems .
-.IP \(bu
+.IP \[bu]
.I sem_otime
is set to 0.
-.IP \(bu
+.IP \[bu]
.I sem_ctime
is set to the current time.
.PP
@@ -357,7 +357,7 @@ $ \fBln mykey link\fP
$ \fBls \-i1 link mykey\fP
2233197 link
2233197 mykey
-$ \fB./t_semget link p 1\fP # Generates same key as \(aqmykey\(aq
+$ \fB./t_semget link p 1\fP # Generates same key as \[aq]mykey\[aq]
ID = 9
.EE
.in
@@ -394,8 +394,8 @@ main(int argc, char *argv[])
flags = 0;
while ((opt = getopt(argc, argv, "cx")) != \-1) {
switch (opt) {
- case \(aqc\(aq: flags |= IPC_CREAT; break;
- case \(aqx\(aq: flags |= IPC_EXCL; break;
+ case \[aq]c\[aq]: flags |= IPC_CREAT; break;
+ case \[aq]x\[aq]: flags |= IPC_EXCL; break;
default: usage(argv[0]);
}
}
diff --git a/man2/semop.2 b/man2/semop.2
index 9953507ae..eb76690fe 100644
--- a/man2/semop.2
+++ b/man2/semop.2
@@ -12,7 +12,7 @@
.\" 2005-04-08, mtk, Noted kernel version numbers for semtimedop()
.\" 2007-07-09, mtk, Added an EXAMPLE code segment.
.\"
-.TH semop 2 2022-12-04 "Linux man-pages 6.02"
+.TH semop 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
semop, semtimedop \- System V semaphore operations
.SH LIBRARY
@@ -115,7 +115,7 @@ is specified for this operation, the system subtracts the value
from the semaphore adjustment
.RI ( semadj )
value for this semaphore.
-This operation can always proceed\(emit never forces a thread to wait.
+This operation can always proceed\[em]it never forces a thread to wait.
The calling process must have alter permission on the semaphore set.
.PP
If
@@ -142,12 +142,12 @@ Otherwise,
(the count of threads waiting until this semaphore's value becomes zero)
is incremented by one and the thread sleeps until
one of the following occurs:
-.IP \(bu 3
+.IP \[bu] 3
.I semval
becomes 0, at which time the value of
.I semzcnt
is decremented.
-.IP \(bu
+.IP \[bu]
The semaphore set
is removed:
.BR semop ()
@@ -155,7 +155,7 @@ fails, with
.I errno
set to
.BR EIDRM .
-.IP \(bu
+.IP \[bu]
The calling thread catches a signal:
the value of
.I semzcnt
@@ -207,19 +207,19 @@ Otherwise,
(the counter of threads waiting for this semaphore's value to increase)
is incremented by one and the thread sleeps until
one of the following occurs:
-.IP \(bu 3
+.IP \[bu] 3
.I semval
becomes greater than or equal to the absolute value of
.IR sem_op :
the operation now proceeds, as described above.
-.IP \(bu
+.IP \[bu]
The semaphore set is removed from the system:
.BR semop ()
fails, with
.I errno
set to
.BR EIDRM .
-.IP \(bu
+.IP \[bu]
The calling thread catches a signal:
the value of
.I semncnt
@@ -359,7 +359,7 @@ the implementation dependent maximum value for
.BR semtimedop ()
first appeared in Linux 2.5.52,
and was subsequently backported into Linux 2.4.22.
-Glibc support for
+glibc support for
.BR semtimedop ()
first appeared in Linux 2.3.3.
.SH STANDARDS
@@ -388,7 +388,7 @@ of all operations performed on a semaphore specifying the
flag.
Each process has a list of
.I semadj
-values\(emone value for each semaphore on which it has operated using
+values\[em]one value for each semaphore on which it has operated using
.BR SEM_UNDO .
When a process terminates, each of its per-semaphore
.I semadj
diff --git a/man2/send.2 b/man2/send.2
index f866f4f50..d89f4e2ff 100644
--- a/man2/send.2
+++ b/man2/send.2
@@ -9,7 +9,7 @@
.\" Modified Oct 2003 by aeb
.\" Modified 2004-07-01 by mtk
.\"
-.TH send 2 2022-12-04 "Linux man-pages 6.02"
+.TH send 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
send, sendto, sendmsg \- send a message on a socket
.SH LIBRARY
diff --git a/man2/sendfile.2 b/man2/sendfile.2
index a582afa34..0afde967e 100644
--- a/man2/sendfile.2
+++ b/man2/sendfile.2
@@ -16,7 +16,7 @@
.\"
.\" 2005-03-31 Martin Pool <mbp@sourcefrog.net> mmap() improvements
.\"
-.TH sendfile 2 2022-12-04 "Linux man-pages 6.02"
+.TH sendfile 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
sendfile \- transfer data between file descriptors
.SH LIBRARY
diff --git a/man2/sendmmsg.2 b/man2/sendmmsg.2
index dc8b56b4f..da2c19cf0 100644
--- a/man2/sendmmsg.2
+++ b/man2/sendmmsg.2
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sendmmsg 2 2022-12-04 "Linux man-pages 6.02"
+.TH sendmmsg 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
sendmmsg \- send multiple messages on a socket
.SH LIBRARY
diff --git a/man2/set_mempolicy.2 b/man2/set_mempolicy.2
index 1fa3f74e2..a65db9bbe 100644
--- a/man2/set_mempolicy.2
+++ b/man2/set_mempolicy.2
@@ -24,7 +24,7 @@
.\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
.\" more precise specification of behavior.
.\"
-.TH set_mempolicy 2 2022-12-04 "Linux man-pages 6.02"
+.TH set_mempolicy 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
set_mempolicy \- set default NUMA memory policy for a thread and its children
.SH LIBRARY
@@ -179,7 +179,7 @@ argument must include one of the following values:
.B MPOL_DEFAULT
This mode specifies that any nondefault thread memory policy be removed,
so that the memory policy "falls back" to the system default policy.
-The system default policy is "local allocation"\(emthat is,
+The system default policy is "local allocation"\[em]that is,
allocate memory on the node of the CPU that triggered the allocation.
.I nodemask
must be specified as NULL.
diff --git a/man2/set_thread_area.2 b/man2/set_thread_area.2
index 9a55c81aa..99038f351 100644
--- a/man2/set_thread_area.2
+++ b/man2/set_thread_area.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH set_thread_area 2 2022-10-30 "Linux man-pages 6.02"
+.TH set_thread_area 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
get_thread_area, set_thread_area \- manipulate thread-local storage information
.SH LIBRARY
diff --git a/man2/set_tid_address.2 b/man2/set_tid_address.2
index c4a3fe158..bd2d6e043 100644
--- a/man2/set_tid_address.2
+++ b/man2/set_tid_address.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH set_tid_address 2 2022-10-30 "Linux man-pages 6.02"
+.TH set_tid_address 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
set_tid_address \- set pointer to thread ID
.SH LIBRARY
diff --git a/man2/seteuid.2 b/man2/seteuid.2
index dec1f8a55..f7b182577 100644
--- a/man2/seteuid.2
+++ b/man2/seteuid.2
@@ -6,7 +6,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH seteuid 2 2022-10-30 "Linux man-pages 6.02"
+.TH seteuid 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
seteuid, setegid \- set effective user or group ID
.SH LIBRARY
@@ -29,7 +29,7 @@ Feature Test Macro Requirements for glibc (see
.BR setegid ():
.nf
_POSIX_C_SOURCE >= 200112L
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
.BR seteuid ()
diff --git a/man2/setfsgid.2 b/man2/setfsgid.2
index 8f4e51724..664ed3814 100644
--- a/man2/setfsgid.2
+++ b/man2/setfsgid.2
@@ -9,7 +9,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH setfsgid 2 2022-12-04 "Linux man-pages 6.02"
+.TH setfsgid 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
setfsgid \- set group identity used for filesystem checks
.SH LIBRARY
diff --git a/man2/setfsuid.2 b/man2/setfsuid.2
index a6ec9d2c1..588d89e80 100644
--- a/man2/setfsuid.2
+++ b/man2/setfsuid.2
@@ -9,7 +9,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH setfsuid 2 2022-12-04 "Linux man-pages 6.02"
+.TH setfsuid 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
setfsuid \- set user identity used for filesystem checks
.SH LIBRARY
diff --git a/man2/setgid.2 b/man2/setgid.2
index c55507fc2..4a2003707 100644
--- a/man2/setgid.2
+++ b/man2/setgid.2
@@ -7,7 +7,7 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2002-03-09 by aeb
.\"
-.TH setgid 2 2022-10-30 "Linux man-pages 6.02"
+.TH setgid 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
setgid \- set group identity
.SH LIBRARY
diff --git a/man2/setns.2 b/man2/setns.2
index 737a5f0f6..54d7597d8 100644
--- a/man2/setns.2
+++ b/man2/setns.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-only
.\"
-.TH setns 2 2022-12-04 "Linux man-pages 6.02"
+.TH setns 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setns \- reassociate thread with a namespace
.SH LIBRARY
@@ -23,11 +23,11 @@ system call allows the calling thread to move into different namespaces.
The
.I fd
argument is one of the following:
-.IP \(bu 3
+.IP \[bu] 3
a file descriptor referring to one of the magic links in a
.IR /proc/ pid /ns/
directory (or a bind mount to such a link);
-.IP \(bu
+.IP \[bu]
a PID file descriptor (see
.BR pidfd_open (2)).
.PP
diff --git a/man2/setpgid.2 b/man2/setpgid.2
index 0e14cf86c..bef612c56 100644
--- a/man2/setpgid.2
+++ b/man2/setpgid.2
@@ -17,7 +17,7 @@
.\" 2007-07-25, mtk, fairly substantial rewrites and rearrangements
.\" of text.
.\"
-.TH setpgid 2 2022-10-30 "Linux man-pages 6.02"
+.TH setpgid 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setpgid, getpgid, setpgrp, getpgrp \- set/get process group
.SH LIBRARY
@@ -54,7 +54,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.PP
.BR setpgrp "() (BSD),"
diff --git a/man2/setresuid.2 b/man2/setresuid.2
index db59c85ce..19542bc93 100644
--- a/man2/setresuid.2
+++ b/man2/setresuid.2
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified, 2003-05-26, Michael Kerrisk, <mtk.manpages@gmail.com>
-.TH setresuid 2 2022-12-04 "Linux man-pages 6.02"
+.TH setresuid 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
setresuid, setresgid \- set real, effective, and saved user or group ID
.SH LIBRARY
diff --git a/man2/setreuid.2 b/man2/setreuid.2
index 4b3de45c6..e9a47f6c4 100644
--- a/man2/setreuid.2
+++ b/man2/setreuid.2
@@ -15,7 +15,7 @@
.\" 2004-07-04 by aeb
.\" 2004-05-27 by Michael Kerrisk
.\"
-.TH setreuid 2 2022-10-30 "Linux man-pages 6.02"
+.TH setreuid 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setreuid, setregid \- set real and/or effective user or group ID
.SH LIBRARY
@@ -40,7 +40,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
.BR setreuid ()
diff --git a/man2/setsid.2 b/man2/setsid.2
index e73eff929..d454c72a8 100644
--- a/man2/setsid.2
+++ b/man2/setsid.2
@@ -9,7 +9,7 @@
.\" tiny changes from a man page by Charles Livingston).
.\" Modified Sun Jul 21 14:45:46 1996 <aeb@cwi.nl>
.\"
-.TH setsid 2 2022-10-30 "Linux man-pages 6.02"
+.TH setsid 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
setsid \- creates a session and sets the process group ID
.SH LIBRARY
diff --git a/man2/setuid.2 b/man2/setuid.2
index 7c69e2df2..9e416b932 100644
--- a/man2/setuid.2
+++ b/man2/setuid.2
@@ -8,7 +8,7 @@
.\" <richard@greenend.org.uk>, aeb 970616.
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
-.TH setuid 2 2022-10-30 "Linux man-pages 6.02"
+.TH setuid 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
setuid \- set user identity
.SH LIBRARY
diff --git a/man2/setup.2 b/man2/setup.2
index 93f3cb3c3..160f5961b 100644
--- a/man2/setup.2
+++ b/man2/setup.2
@@ -11,7 +11,7 @@
.\" Modified Wed Nov 6 04:05:28 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Sat Jan 29 01:08:23 2000 by aeb
.\"
-.TH setup 2 2022-10-30 "Linux man-pages 6.02"
+.TH setup 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
setup \- setup devices and filesystems, mount root filesystem
.SH LIBRARY
diff --git a/man2/setxattr.2 b/man2/setxattr.2
index 98ebbe4eb..7331bf5d0 100644
--- a/man2/setxattr.2
+++ b/man2/setxattr.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH setxattr 2 2022-12-04 "Linux man-pages 6.02"
+.TH setxattr 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
setxattr, lsetxattr, fsetxattr \- set an extended attribute value
.SH LIBRARY
diff --git a/man2/sgetmask.2 b/man2/sgetmask.2
index 2d3d59037..5a6d1079c 100644
--- a/man2/sgetmask.2
+++ b/man2/sgetmask.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sgetmask 2 2022-10-30 "Linux man-pages 6.02"
+.TH sgetmask 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sgetmask, ssetmask \- manipulation of signal mask (obsolete)
.SH LIBRARY
diff --git a/man2/shmctl.2 b/man2/shmctl.2
index e29abb13d..dfbac19c6 100644
--- a/man2/shmctl.2
+++ b/man2/shmctl.2
@@ -24,7 +24,7 @@
.\" 2005-08-02, mtk: Added IPC_INFO, SHM_INFO, SHM_STAT descriptions.
.\" 2018-03-20, dbueso: Added SHM_STAT_ANY description.
.\"
-.TH shmctl 2 2022-12-15 "Linux man-pages 6.02"
+.TH shmctl 2 2022-12-15 "Linux man-pages 6.03"
.SH NAME
shmctl \- System V shared memory control
.SH LIBRARY
diff --git a/man2/shmget.2 b/man2/shmget.2
index 5963362bb..dfb5c8364 100644
--- a/man2/shmget.2
+++ b/man2/shmget.2
@@ -15,7 +15,7 @@
.\" Language and formatting clean-ups
.\" Added notes on /proc files
.\"
-.TH shmget 2 2022-12-04 "Linux man-pages 6.02"
+.TH shmget 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
shmget \- allocates a System V shared memory segment
.SH LIBRARY
@@ -161,33 +161,33 @@ its associated data structure,
(see
.BR shmctl (2)),
is initialized as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I shm_perm.cuid
and
.I shm_perm.uid
are set to the effective user ID of the calling process.
-.IP \(bu
+.IP \[bu]
.I shm_perm.cgid
and
.I shm_perm.gid
are set to the effective group ID of the calling process.
-.IP \(bu
+.IP \[bu]
The least significant 9 bits of
.I shm_perm.mode
are set to the least significant 9 bit of
.IR shmflg .
-.IP \(bu
+.IP \[bu]
.I shm_segsz
is set to the value of
.IR size .
-.IP \(bu
+.IP \[bu]
.IR shm_lpid ,
.IR shm_nattch ,
.IR shm_atime ,
and
.I shm_dtime
are set to 0.
-.IP \(bu
+.IP \[bu]
.I shm_ctime
is set to the current time.
.PP
@@ -297,7 +297,7 @@ the default value for this limit is:
.IP
.in +4n
.EX
-ULONG_MAX - 2^24
+ULONG_MAX - 2\[ha]24
.EE
.in
.IP
@@ -340,7 +340,7 @@ the default value for this limit is:
.IP
.in +4n
.EX
-ULONG_MAX - 2^24
+ULONG_MAX - 2\[ha]24
.EE
.in
.IP
@@ -354,7 +354,7 @@ for a discussion of why this default value (rather than
is used.
.IP
From Linux 2.2 up to Linux 3.15, the default value of
-this limit was 0x2000000 (32\ MB).
+this limit was 0x2000000 (32\ MiB).
.IP
Because it is not possible to map just part of a shared memory segment,
the amount of virtual memory places another limit on the maximum size of a
@@ -375,8 +375,8 @@ since Linux 2.4, the default value is 4096.
.IP
On Linux, this limit can be read and modified via
.IR /proc/sys/kernel/shmmni .
-.\" Kernels between 2.4.x and 2.6.8 had an off-by-one error that meant
-.\" that we could create one more segment than SHMMNI -- MTK
+.\" Kernels between Linux 2.4.x and Linux 2.6.8 had an off-by-one error
+.\" that meant that we could create one more segment than SHMMNI -- MTK
.\" This /proc file is not available in Linux 2.2 and earlier -- MTK
.PP
The implementation has no specific limits for the per-process maximum
diff --git a/man2/shmop.2 b/man2/shmop.2
index 0df8b1931..6c1c4c237 100644
--- a/man2/shmop.2
+++ b/man2/shmop.2
@@ -17,7 +17,7 @@
.\" Changed wording and placement of sentence regarding attachment
.\" of segments marked for destruction
.\"
-.TH SHMOP 2 2022-12-04 "Linux man-pages 6.02"
+.TH SHMOP 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
shmat, shmdt \- System V shared memory operations
.SH LIBRARY
@@ -40,13 +40,13 @@ to the address space of the calling process.
The attaching address is specified by
.I shmaddr
with one of the following criteria:
-.IP \(bu 3
+.IP \[bu] 3
If
.I shmaddr
is NULL,
the system chooses a suitable (unused) page-aligned address to attach
the segment.
-.IP \(bu
+.IP \[bu]
If
.I shmaddr
isn't NULL
@@ -58,7 +58,7 @@ the attach occurs at the address equal to
.I shmaddr
rounded down to the nearest multiple of
.BR SHMLBA .
-.IP \(bu
+.IP \[bu]
Otherwise,
.I shmaddr
must be a page-aligned address at which the attach occurs.
@@ -108,13 +108,13 @@ call updates the members of the
structure (see
.BR shmctl (2))
associated with the shared memory segment as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I shm_atime
is set to the current time.
-.IP \(bu
+.IP \[bu]
.I shm_lpid
is set to the process-ID of the calling process.
-.IP \(bu
+.IP \[bu]
.I shm_nattch
is incremented by one.
.\"
@@ -135,13 +135,13 @@ On a successful
call, the system updates the members of the
.I shmid_ds
structure associated with the shared memory segment as follows:
-.IP \(bu 3
+.IP \[bu] 3
.I shm_dtime
is set to the current time.
-.IP \(bu
+.IP \[bu]
.I shm_lpid
is set to the process-ID of the calling process.
-.IP \(bu
+.IP \[bu]
.I shm_nattch
is decremented by one.
If it becomes 0 and the segment is marked for deletion,
@@ -292,7 +292,7 @@ copies the string to the shared memory, and modifies the semaphore value.
.PP
.in +4n
.EX
-$ \fB./svshm_string_write 1114194 15 \(aqHello, world\(aq\fP
+$ \fB./svshm_string_write 1114194 15 \[aq]Hello, world\[aq]\fP
.EE
.in
.PP
@@ -461,7 +461,7 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- len = strlen(argv[3]) + 1; /* +1 to include trailing \(aq\e0\(aq */
+ len = strlen(argv[3]) + 1; /* +1 to include trailing \[aq]\e0\[aq] */
if (len > MEM_SIZE) {
fprintf(stderr, "String is too big!\en");
exit(EXIT_FAILURE);
diff --git a/man2/shutdown.2 b/man2/shutdown.2
index 254cf664d..1f6d9d689 100644
--- a/man2/shutdown.2
+++ b/man2/shutdown.2
@@ -9,7 +9,7 @@
.\" Modified Tue Oct 22 22:04:51 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1998 by Andi Kleen
.\"
-.TH shutdown 2 2022-10-30 "Linux man-pages 6.02"
+.TH shutdown 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
shutdown \- shut down part of a full-duplex connection
.SH LIBRARY
diff --git a/man2/sigaction.2 b/man2/sigaction.2
index b6f98dac8..b1b900918 100644
--- a/man2/sigaction.2
+++ b/man2/sigaction.2
@@ -25,7 +25,7 @@
.\" 2015-01-17, Kees Cook <keescook@chromium.org>
.\" Added notes on ptrace SIGTRAP and SYS_SECCOMP.
.\"
-.TH sigaction 2 2022-12-04 "Linux man-pages 6.02"
+.TH sigaction 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
sigaction, rt_sigaction \- examine and change a signal action
.SH LIBRARY
@@ -114,13 +114,13 @@ Some further details of the purpose of this field can be found in
specifies the action to be associated with
.I signum
and can be one of the following:
-.IP \(bu 3
+.IP \[bu] 3
.B SIG_DFL
for the default action.
-.IP \(bu
+.IP \[bu]
.B SIG_IGN
to ignore this signal.
-.IP \(bu
+.IP \[bu]
A pointer to a signal handling function.
This function receives the signal number as its only argument.
.PP
@@ -260,9 +260,9 @@ argument yields
.B SA_UNSUPPORTED
.I clear
in
-.IR oldact->sa_flags ,
+.IR oldact\->sa_flags ,
then
-.I oldact->sa_flags
+.I oldact\->sa_flags
may be used as a bitmask
describing which of the potentially unsupported flags are,
in fact, supported.
@@ -387,7 +387,7 @@ are defined for all signals.
is generally unused on Linux.)
The rest of the struct may be a union, so that one should
read only the fields that are meaningful for the given signal:
-.IP \(bu 3
+.IP \[bu] 3
Signals sent with
.BR kill (2)
and
@@ -402,7 +402,7 @@ with the values specified by the sender of the signal;
see
.BR sigqueue (3)
for more details.
-.IP \(bu
+.IP \[bu]
Signals sent by POSIX.1b timers (since Linux 2.6) fill in
.I si_overrun
and
@@ -418,7 +418,7 @@ field is the timer overrun count;
this is the same information as is obtained by a call to
.BR timer_getoverrun (2).
These fields are nonstandard Linux extensions.
-.IP \(bu
+.IP \[bu]
Signals sent for message queue notification (see the description of
.B SIGEV_SIGNAL
in
@@ -433,7 +433,7 @@ supplied to
with the process ID of the message sender; and
.IR si_uid ,
with the real user ID of the message sender.
-.IP \(bu
+.IP \[bu]
.B SIGCHLD
fills in
.IR si_pid ", " si_uid ", " si_status ", " si_utime ", and " si_stime ,
@@ -480,7 +480,7 @@ of the (configurable) system jiffy (see
.\" But note that these fields still don't return the times of
.\" waited-for children (as is done by getrusage() and times()
.\" and wait4()). Solaris 8 does include child times.
-.IP \(bu
+.IP \[bu]
.BR SIGILL ,
.BR SIGFPE ,
.BR SIGSEGV ,
@@ -544,7 +544,7 @@ suberror of
.B SIGSEGV
populates
.IR si_pkey .
-.IP \(bu
+.IP \[bu]
.BR SIGIO / SIGPOLL
(the two names are synonyms on Linux)
fills in
@@ -564,7 +564,7 @@ for further details, see the description of
.B F_SETSIG
in
.BR fcntl (2).
-.IP \(bu
+.IP \[bu]
.BR SIGSYS ,
generated (since Linux 3.5)
.\" commit a0727e8ce513fe6890416da960181ceb10fbfae6
@@ -613,15 +613,15 @@ the definitions of most of these symbols are obtained from
by defining feature test macros (before including
.I any
header file) as follows:
-.IP \(bu 3
+.IP \[bu] 3
.B _XOPEN_SOURCE
with the value 500 or greater;
-.IP \(bu
+.IP \[bu]
.B _XOPEN_SOURCE
and
.BR _XOPEN_SOURCE_EXTENDED ;
or
-.IP \(bu
+.IP \[bu]
.B _POSIX_C_SOURCE
with the value 200809L or greater.
.PP
diff --git a/man2/sigaltstack.2 b/man2/sigaltstack.2
index e2dda7342..fb305d75a 100644
--- a/man2/sigaltstack.2
+++ b/man2/sigaltstack.2
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" aeb, various minor fixes
-.TH sigaltstack 2 2022-12-15 "Linux man-pages 6.02"
+.TH sigaltstack 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sigaltstack \- set and/or get signal stack context
.SH LIBRARY
@@ -28,7 +28,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
.BR sigaltstack ()
diff --git a/man2/signal.2 b/man2/signal.2
index b46b9f913..269103e7d 100644
--- a/man2/signal.2
+++ b/man2/signal.2
@@ -13,7 +13,7 @@
.\" various sections.
.\" 2008-07-11, mtk: rewrote and expanded portability discussion.
.\"
-.TH signal 2 2022-10-30 "Linux man-pages 6.02"
+.TH signal 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
signal \- ANSI C signal handling
.SH LIBRARY
@@ -94,7 +94,7 @@ is set to indicate the error.
.I signum
is invalid.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH NOTES
The effects of
.BR signal ()
@@ -219,11 +219,11 @@ sa.sa_flags = SA_RESTART;
.in
.PP
The situation on Linux is as follows:
-.IP \(bu 3
+.IP \[bu] 3
The kernel's
.BR signal ()
system call provides System\ V semantics.
-.IP \(bu
+.IP \[bu]
By default, in glibc 2 and later, the
.BR signal ()
wrapper function does not invoke the kernel system call.
diff --git a/man2/signalfd.2 b/man2/signalfd.2
index ec6ababc2..c6ed4d8cd 100644
--- a/man2/signalfd.2
+++ b/man2/signalfd.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH signalfd 2 2022-12-04 "Linux man-pages 6.02"
+.TH signalfd 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
signalfd \- create a file descriptor for accepting signals
.SH LIBRARY
@@ -449,11 +449,11 @@ The following shell session demonstrates the use of the program:
.in +4n
.EX
.RB "$" " ./signalfd_demo"
-.BR "\(haC" " # Control\-C generates SIGINT"
+.BR "\[ha]C" " # Control\-C generates SIGINT"
Got SIGINT
-.B \(haC
+.B \[ha]C
Got SIGINT
-\fB\(ha\e\fP # Control\-\e generates SIGQUIT
+\fB\[ha]\e\fP # Control\-\e generates SIGQUIT
Got SIGQUIT
$
.EE
@@ -481,7 +481,7 @@ main(void)
sigaddset(&mask, SIGINT);
sigaddset(&mask, SIGQUIT);
- /* Block signals so that they aren\(aqt handled
+ /* Block signals so that they aren\[aq]t handled
according to their default dispositions. */
if (sigprocmask(SIG_BLOCK, &mask, NULL) == \-1)
diff --git a/man2/sigpending.2 b/man2/sigpending.2
index ba7fae541..65ca7a41d 100644
--- a/man2/sigpending.2
+++ b/man2/sigpending.2
@@ -6,7 +6,7 @@
.\"
.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2
.\"
-.TH sigpending 2 2022-12-04 "Linux man-pages 6.02"
+.TH sigpending 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
sigpending, rt_sigpending \- examine pending signals
.SH LIBRARY
diff --git a/man2/sigprocmask.2 b/man2/sigprocmask.2
index 878f87514..2ca69309e 100644
--- a/man2/sigprocmask.2
+++ b/man2/sigprocmask.2
@@ -6,7 +6,7 @@
.\"
.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2
.\"
-.TH sigprocmask 2 2022-12-03 "Linux man-pages 6.02"
+.TH sigprocmask 2 2022-12-03 "Linux man-pages 6.03"
.SH NAME
sigprocmask, rt_sigprocmask \- examine and change blocked signals
.SH LIBRARY
diff --git a/man2/sigreturn.2 b/man2/sigreturn.2
index 6c19a5e5e..c4769841b 100644
--- a/man2/sigreturn.2
+++ b/man2/sigreturn.2
@@ -7,7 +7,7 @@
.\" 2008-06-26, mtk, added some more detail on the work done by sigreturn()
.\" 2014-12-05, mtk, rewrote all of the rest of the original page
.\"
-.TH sigreturn 2 2022-12-04 "Linux man-pages 6.02"
+.TH sigreturn 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sigreturn, rt_sigreturn \- return from signal handler and cleanup stack frame
.SH LIBRARY
@@ -38,8 +38,8 @@ The signal trampoline code in turn calls
This
.BR sigreturn ()
call undoes everything that was
-done\(emchanging the process's signal mask, switching signal stacks (see
-.BR sigaltstack "(2))\(emin"
+done\[em]changing the process's signal mask, switching signal stacks (see
+.BR sigaltstack "(2))\[em]in"
order to invoke the signal handler.
Using the information that was earlier saved on the user-space stack
.BR sigreturn ()
diff --git a/man2/sigsuspend.2 b/man2/sigsuspend.2
index b3e06b08a..622e9a39e 100644
--- a/man2/sigsuspend.2
+++ b/man2/sigsuspend.2
@@ -6,7 +6,7 @@
.\"
.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2
.\"
-.TH sigsuspend 2 2022-10-30 "Linux man-pages 6.02"
+.TH sigsuspend 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sigsuspend, rt_sigsuspend \- wait for a signal
.SH LIBRARY
diff --git a/man2/sigwaitinfo.2 b/man2/sigwaitinfo.2
index c4e0b55f5..9324eda36 100644
--- a/man2/sigwaitinfo.2
+++ b/man2/sigwaitinfo.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sigwaitinfo 2 2022-12-03 "Linux man-pages 6.02"
+.TH sigwaitinfo 2 2022-12-03 "Linux man-pages 6.03"
.SH NAME
sigwaitinfo, sigtimedwait, rt_sigtimedwait \- synchronously wait
for queued signals
diff --git a/man2/socket.2 b/man2/socket.2
index cded9c476..2eece28e0 100644
--- a/man2/socket.2
+++ b/man2/socket.2
@@ -12,7 +12,7 @@
.\" Modified 2002-07-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH socket 2 2022-12-15 "Linux man-pages 6.02"
+.TH socket 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
socket \- create an endpoint for communication
.SH LIBRARY
@@ -485,8 +485,8 @@ is shown in
.BR udp (7),
.BR unix (7)
.PP
-\(lqAn Introductory 4.3BSD Interprocess Communication Tutorial\(rq
+\[lq]An Introductory 4.3BSD Interprocess Communication Tutorial\[rq]
and
-\(lqBSD Interprocess Communication Tutorial\(rq,
+\[lq]BSD Interprocess Communication Tutorial\[rq],
reprinted in
.I UNIX Programmer's Supplementary Documents Volume 1.
diff --git a/man2/socketcall.2 b/man2/socketcall.2
index de0de2fa3..c22acd8db 100644
--- a/man2/socketcall.2
+++ b/man2/socketcall.2
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Tue Oct 22 22:11:53 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH socketcall 2 2022-12-15 "Linux man-pages 6.02"
+.TH socketcall 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
socketcall \- socket system calls
.SH LIBRARY
@@ -146,7 +146,7 @@ T}
This call is specific to Linux, and should not be used in programs
intended to be portable.
.SH NOTES
-On some architectures\(emfor example, x86-64 and ARM\(emthere is no
+On some architectures\[em]for example, x86-64 and ARM\[em]there is no
.BR socketcall ()
system call; instead
.BR socket (2),
diff --git a/man2/socketpair.2 b/man2/socketpair.2
index 49781ab7f..1b04b94e7 100644
--- a/man2/socketpair.2
+++ b/man2/socketpair.2
@@ -11,7 +11,7 @@
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 2008-10-11, mtk: Add description of SOCK_NONBLOCK and SOCK_CLOEXEC
.\"
-.TH socketpair 2 2022-10-30 "Linux man-pages 6.02"
+.TH socketpair 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
socketpair \- create a pair of connected sockets
.SH LIBRARY
diff --git a/man2/splice.2 b/man2/splice.2
index 2e192db52..a704f2f95 100644
--- a/man2/splice.2
+++ b/man2/splice.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH splice 2 2022-12-04 "Linux man-pages 6.02"
+.TH splice 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
splice \- splice data to/from a pipe
.SH LIBRARY
@@ -35,13 +35,13 @@ The following semantics apply for
.I fd_in
and
.IR off_in :
-.IP \(bu 3
+.IP \[bu] 3
If
.I fd_in
refers to a pipe, then
.I off_in
must be NULL.
-.IP \(bu
+.IP \[bu]
If
.I fd_in
does not refer to a pipe and
@@ -50,7 +50,7 @@ is NULL, then bytes are read from
.I fd_in
starting from the file offset,
and the file offset is adjusted appropriately.
-.IP \(bu
+.IP \[bu]
If
.I fd_in
does not refer to a pipe and
diff --git a/man2/spu_create.2 b/man2/spu_create.2
index 313c38142..8c969e879 100644
--- a/man2/spu_create.2
+++ b/man2/spu_create.2
@@ -8,7 +8,7 @@
.\" 2007-07-10, some polishing by mtk
.\" 2007-09-28, updates for newer kernels by Jeremy Kerr <jk@ozlabs.org>
.\"
-.TH spu_create 2 2022-12-04 "Linux man-pages 6.02"
+.TH spu_create 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
spu_create \- create a new spu context
.SH LIBRARY
@@ -102,7 +102,7 @@ argument to
Create an SPU gang instead of a context.
(A gang is a group of SPU contexts that are
functionally related to each other and which share common scheduling
-parameters\(empriority and policy.
+parameters\[em]priority and policy.
In the future, gang scheduling may be implemented causing
the group to be switched in and out as a single unit.)
.IP
diff --git a/man2/spu_run.2 b/man2/spu_run.2
index ea49072b9..a67e1e606 100644
--- a/man2/spu_run.2
+++ b/man2/spu_run.2
@@ -9,7 +9,7 @@
.\" 2007-09-28, updates for newer kernels, added example
.\" by Jeremy Kerr <jk@ozlabs.org>
.\"
-.TH spu_run 2 2022-12-04 "Linux man-pages 6.02"
+.TH spu_run 2 2023-02-08 "Linux man-pages 6.03"
.SH NAME
spu_run \- execute an SPU context
.SH LIBRARY
@@ -223,7 +223,7 @@ int main(void)
err(EXIT_FAILURE, "spu_create");
/*
- * Write a \(aqstop 0x1234\(aq instruction to the SPU\(aqs
+ * Write a \[aq]stop 0x1234\[aq] instruction to the SPU\[aq]s
* local store memory.
*/
instruction = 0x00001234;
@@ -245,7 +245,7 @@ int main(void)
err(EXIT_FAILURE, "open");
/*
- * We should see a status code of 0x1234002:
+ * We should see a status code of 0x12340002:
* 0x00000002 (spu was stopped due to stop\-and\-signal)
* | 0x12340000 (the stop\-and\-signal code)
*/
diff --git a/man2/stat.2 b/man2/stat.2
index 79f064a71..096e00132 100644
--- a/man2/stat.2
+++ b/man2/stat.2
@@ -16,7 +16,7 @@
.\" 2007-06-08 mtk: Added example program
.\" 2007-07-05 mtk: Added details on underlying system call interfaces
.\"
-.TH stat 2 2022-12-04 "Linux man-pages 6.02"
+.TH stat 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
stat, fstat, lstat, fstatat \- get file status
.SH LIBRARY
@@ -50,7 +50,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200112L
- || /* Glibc 2.19 and earlier */ _BSD_SOURCE
+ || /* glibc 2.19 and earlier */ _BSD_SOURCE
.fi
.PP
.BR fstatat ():
@@ -63,11 +63,11 @@ Feature Test Macro Requirements for glibc (see
.SH DESCRIPTION
These functions return information about a file, in the buffer pointed to by
.IR statbuf .
-No permissions are required on the file itself, but\(emin the case of
+No permissions are required on the file itself, but\[em]in the case of
.BR stat (),
.BR fstatat (),
and
-.BR lstat ()\(emexecute
+.BR lstat ()\[em]execute
(search) permission is required on all of the directories in
.I pathname
that lead to the file.
diff --git a/man2/statfs.2 b/man2/statfs.2
index 5853173f6..02923984a 100644
--- a/man2/statfs.2
+++ b/man2/statfs.2
@@ -5,7 +5,7 @@
.\" Modified 2003-08-17 by Walter Harms
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH statfs 2 2022-10-30 "Linux man-pages 6.02"
+.TH statfs 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
statfs, fstatfs \- get filesystem statistics
.SH LIBRARY
diff --git a/man2/statx.2 b/man2/statx.2
index 0442a6c18..2829bd456 100644
--- a/man2/statx.2
+++ b/man2/statx.2
@@ -8,7 +8,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH statx 2 2022-12-15 "Linux man-pages 6.02"
+.TH statx 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
statx \- get file status (extended)
.SH LIBRARY
@@ -44,7 +44,7 @@ struct statx {
__u64 stx_size; /* Total size in bytes */
__u64 stx_blocks; /* Number of 512B blocks allocated */
__u64 stx_attributes_mask;
- /* Mask to show what\(aqs supported
+ /* Mask to show what\[aq]s supported
in stx_attributes */
/* The following fields are file timestamps */
@@ -238,7 +238,7 @@ is an ORed combination of the following constants:
.TS
lB l.
STATX_TYPE Want stx_mode & S_IFMT
-STATX_MODE Want stx_mode & \(tiS_IFMT
+STATX_MODE Want stx_mode & \[ti]S_IFMT
STATX_NLINK Want stx_nlink
STATX_UID Want stx_uid
STATX_GID Want stx_gid
diff --git a/man2/stime.2 b/man2/stime.2
index aa3e864ca..980e6ee18 100644
--- a/man2/stime.2
+++ b/man2/stime.2
@@ -7,7 +7,7 @@
.\" Modified 2001-03-16 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH stime 2 2022-10-30 "Linux man-pages 6.02"
+.TH stime 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
stime \- set time
.SH SYNOPSIS
@@ -26,7 +26,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man2/subpage_prot.2 b/man2/subpage_prot.2
index 0484d51c1..443712c97 100644
--- a/man2/subpage_prot.2
+++ b/man2/subpage_prot.2
@@ -7,7 +7,7 @@
.\" in Linux commit fa28237cfcc5827553044cbd6ee52e33692b0faa
.\" both written by Paul Mackerras <paulus@samba.org>
.\"
-.TH subpage_prot 2 2022-12-04 "Linux man-pages 6.02"
+.TH subpage_prot 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
subpage_prot \- define a subpage protection for an address range
.SH LIBRARY
diff --git a/man2/swapon.2 b/man2/swapon.2
index 6b846173f..eaa716e83 100644
--- a/man2/swapon.2
+++ b/man2/swapon.2
@@ -22,7 +22,7 @@
.\" Author: Rafael Aquini <aquini@redhat.com>
.\" Date: Wed Jul 3 15:02:46 2013 -0700
.\"
-.TH swapon 2 2022-12-04 "Linux man-pages 6.02"
+.TH swapon 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
swapon, swapoff \- start/stop swapping to file/device
.SH LIBRARY
diff --git a/man2/symlink.2 b/man2/symlink.2
index b8c1692e8..9fa1e84e3 100644
--- a/man2/symlink.2
+++ b/man2/symlink.2
@@ -10,7 +10,7 @@
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH symlink 2 2022-12-04 "Linux man-pages 6.02"
+.TH symlink 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
symlink, symlinkat \- make a new name for a file
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.PP
.BR symlinkat ():
@@ -237,7 +237,7 @@ Deleting the name referred to by a symbolic link will actually delete the
file (unless it also has other hard links).
If this behavior is not desired, use
.BR link (2).
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR symlinkat ()
is unavailable, the glibc wrapper function falls back to the use of
diff --git a/man2/sync.2 b/man2/sync.2
index af7040e1a..693984ef7 100644
--- a/man2/sync.2
+++ b/man2/sync.2
@@ -13,7 +13,7 @@
.\" Modified 2001-10-10 by aeb, following Michael Kerrisk.
.\" 2011-09-07, mtk, Added syncfs() documentation,
.\"
-.TH sync 2 2022-12-04 "Linux man-pages 6.02"
+.TH sync 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sync, syncfs \- commit filesystem caches to disk
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.PP
.BR syncfs ():
diff --git a/man2/sync_file_range.2 b/man2/sync_file_range.2
index 44a08d68f..f48fbd498 100644
--- a/man2/sync_file_range.2
+++ b/man2/sync_file_range.2
@@ -7,7 +7,7 @@
.\" Andrew Morton's comments in fs/sync.c
.\" 2010-10-09, mtk, Document sync_file_range2()
.\"
-.TH sync_file_range 2 2022-12-04 "Linux man-pages 6.02"
+.TH sync_file_range 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
sync_file_range \- sync a file segment with disk
.SH LIBRARY
diff --git a/man2/syscall.2 b/man2/syscall.2
index aa0ff6ed8..3051baa52 100644
--- a/man2/syscall.2
+++ b/man2/syscall.2
@@ -12,7 +12,7 @@
.\" 2015-01-17, Kees Cook <keescook@chromium.org>
.\" Added mips and arm64.
.\"
-.TH syscall 2 2022-12-15 "Linux man-pages 6.02"
+.TH syscall 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
syscall \- indirect system call
.SH LIBRARY
@@ -198,7 +198,7 @@ xtensa syscall a2 a2 - -
.TE
.PP
Notes:
-.IP \(bu 3
+.IP \[bu] 3
On a few architectures,
a register is used as a boolean
(0 indicating no error, and \-1 indicating an error) to signal that the
@@ -214,31 +214,31 @@ On powerpc64, the summary overflow bit
in field 0 of the condition register
.RI ( cr0 )
is used.
-.IP \(bu
+.IP \[bu]
.I NR
is the system call number.
-.IP \(bu
+.IP \[bu]
For s390 and s390x,
.I NR
(the system call number) may be passed directly with
.I "svc\ NR"
if it is less than 256.
-.IP \(bu
+.IP \[bu]
On SuperH additional trap numbers are supported for historic reasons, but
.BR trapa #31
is the recommended "unified" ABI.
-.IP \(bu
+.IP \[bu]
The x32 ABI shares syscall table with x86-64 ABI, but there are some
nuances:
.RS
-.IP \(bu 3
+.IP \[bu] 3
In order to indicate that a system call is called under the x32 ABI,
an additional bit,
.BR __X32_SYSCALL_BIT ,
is bitwise-ORed with the system call number.
The ABI used by a process affects some process behaviors,
including signal handling or system call restarting.
-.IP \(bu
+.IP \[bu]
Since x32 has different sizes for
.I long
and pointer types, layouts of some (but not all;
@@ -267,7 +267,7 @@ but passes an 8-byte
.I pos
argument in a single register and not two, as is done in every other ABI.
.RE
-.IP \(bu
+.IP \[bu]
Some architectures
(namely, Alpha, IA-64, MIPS, SuperH, sparc/32, and sparc/64)
use an additional register ("Retval2" in the above table)
@@ -325,7 +325,7 @@ xtensa a6 a3 a4 a5 a8 a9 -
.TE
.PP
Notes:
-.IP \(bu 3
+.IP \[bu] 3
The mips/o32 system call convention passes
arguments 5 through 8 on the user stack.
.if t \{\
@@ -333,7 +333,7 @@ arguments 5 through 8 on the user stack.
.ft P
\}
.PP
-Note that these tables don't cover the entire calling convention\(emsome
+Note that these tables don't cover the entire calling convention\[em]some
architectures may indiscriminately clobber other registers not listed here.
.SH EXAMPLES
.\" SRC BEGIN (syscall.c)
diff --git a/man2/syscalls.2 b/man2/syscalls.2
index 8148298cd..d7c9f9df0 100644
--- a/man2/syscalls.2
+++ b/man2/syscalls.2
@@ -9,7 +9,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH syscalls 2 2022-12-15 "Linux man-pages 6.02"
+.TH syscalls 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
syscalls \- Linux system calls
.SH SYNOPSIS
@@ -69,16 +69,16 @@ column indicates the kernel version
for those system calls that were new in Linux 2.2,
or have appeared since that kernel version.
Note the following points:
-.IP \(bu 3
+.IP \[bu] 3
Where no kernel version is indicated,
the system call appeared in Linux 1.0 or earlier.
-.IP \(bu
+.IP \[bu]
Where a system call is marked "1.2"
this means the system call probably appeared in a Linux 1.1.x kernel version,
and first appeared in a stable kernel with 1.2.
(Development of the 1.2 kernel was initiated from a branch of kernel
1.0.6 via the 1.1.x unstable kernel series.)
-.IP \(bu
+.IP \[bu]
Where a system call is marked "2.0"
this means the system call probably appeared in a Linux 1.3.x kernel version,
and first appeared in a stable kernel with Linux 2.0.
@@ -94,25 +94,25 @@ via the Linux 1.3.x unstable kernel series.)
.\" timestamps of some files in Linux 1.3.0 seem to be older
.\" than those in Linux 1.2.10. All of this suggests
.\" that there might not have been a clean branch point.
-.IP \(bu
+.IP \[bu]
Where a system call is marked "2.2"
this means the system call probably appeared in a Linux 2.1.x kernel version,
and first appeared in a stable kernel with Linux 2.2.0.
(Development of the Linux 2.2 kernel was initiated from a branch of kernel
Linux 2.0.21 via the Linux 2.1.x unstable kernel series.)
-.IP \(bu
+.IP \[bu]
Where a system call is marked "2.4"
this means the system call probably appeared in a Linux 2.3.x kernel version,
and first appeared in a stable kernel with Linux 2.4.0.
(Development of the Linux 2.4 kernel was initiated from a branch of
Linux 2.2.8 via the Linux 2.3.x unstable kernel series.)
-.IP \(bu
+.IP \[bu]
Where a system call is marked "2.6"
this means the system call probably appeared in a Linux 2.5.x kernel version,
and first appeared in a stable kernel with Linux 2.6.0.
(Development of Linux 2.6 was initiated from a branch
of Linux 2.4.15 via the Linux 2.5.x unstable kernel series.)
-.IP \(bu
+.IP \[bu]
Starting with Linux 2.6.0, the development model changed,
and new system calls may appear in each Linux 2.6.x release.
In this case, the exact version number where the system call appeared
@@ -121,7 +121,7 @@ This convention continues with the Linux 3.x kernel series,
which followed on from Linux 2.6.39; and the Linux 4.x kernel series,
which followed on from Linux 3.19; and the Linux 5.x kernel series,
which followed on from Linux 4.20.
-.IP \(bu
+.IP \[bu]
In some cases, a system call was added to a stable kernel
series after it branched from the previous stable kernel
series, and then backported into the earlier stable kernel series.
@@ -898,9 +898,9 @@ since been removed from the kernel:
AVR32 (port removed in Linux 4.12)
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
.BR pread (2)
-.IP \(bu
+.IP \[bu]
.BR pwrite (2)
.PD
.RE
@@ -908,22 +908,22 @@ AVR32 (port removed in Linux 4.12)
Blackfin (port removed in Linux 4.17)
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
.BR bfin_spinlock (2)
(added in Linux 2.6.22)
-.IP \(bu
+.IP \[bu]
.BR dma_memcpy (2)
(added in Linux 2.6.22)
-.IP \(bu
+.IP \[bu]
.BR pread (2)
(added in Linux 2.6.22)
-.IP \(bu
+.IP \[bu]
.BR pwrite (2)
(added in Linux 2.6.22)
-.IP \(bu
+.IP \[bu]
.BR sram_alloc (2)
(added in Linux 2.6.22)
-.IP \(bu
+.IP \[bu]
.BR sram_free (2)
(added in Linux 2.6.22)
.PD
@@ -932,16 +932,16 @@ Blackfin (port removed in Linux 4.17)
Metag (port removed in Linux 4.17)
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
.BR metag_get_tls (2)
(add in Linux 3.9)
-.IP \(bu
+.IP \[bu]
.BR metag_set_fpu_flags (2)
(add in Linux 3.9)
-.IP \(bu
+.IP \[bu]
.BR metag_set_tls (2)
(add in Linux 3.9)
-.IP \(bu
+.IP \[bu]
.BR metag_setglobalbit (2)
(add in Linux 3.9)
.PD
@@ -950,7 +950,7 @@ Metag (port removed in Linux 4.17)
Tile (port removed in Linux 4.17)
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
.BR cmpxchg_badaddr (2)
(added in Linux 2.6.36)
.PD
@@ -988,7 +988,7 @@ system call is invoked, and that ABI compatibility is
preserved for old binaries.)
Examples of systems calls that exist in multiple versions are
the following:
-.IP \(bu 3
+.IP \[bu] 3
By now there are three different versions of
.BR stat (2):
.IR sys_stat ()
@@ -1009,7 +1009,7 @@ A similar story applies for
.BR lstat (2)
and
.BR fstat (2).
-.IP \(bu
+.IP \[bu]
Similarly, the defines
.IR __NR_oldolduname ,
.IR __NR_olduname ,
@@ -1020,14 +1020,14 @@ refer to the routines
.IR sys_uname (),
and
.IR sys_newuname ().
-.IP \(bu
+.IP \[bu]
In Linux 2.0, a new version of
.BR vm86 (2)
appeared, with the old and the new kernel routines being named
.IR sys_vm86old ()
and
.IR sys_vm86 ().
-.IP \(bu
+.IP \[bu]
In Linux 2.4, a new version of
.BR getrlimit (2)
appeared, with the old and the new kernel routines being named
@@ -1038,7 +1038,7 @@ and
.IR sys_getrlimit ()
(slot
.IR __NR_ugetrlimit ).
-.IP \(bu
+.IP \[bu]
Linux 2.4 increased the size of user and group IDs from 16 to 32 bits.
.\" 64-bit off_t changes: ftruncate64, *stat64,
.\" fcntl64 (because of the flock structure), getdents64, *statfs64
@@ -1050,7 +1050,7 @@ To support this change, a range of system calls were added
.BR setresuid32 (2)),
superseding earlier calls of the same name without the
"32" suffix.
-.IP \(bu
+.IP \[bu]
Linux 2.4 added support for applications on 32-bit architectures
to access large files (i.e., files for which the sizes and
file offsets can't be represented in 32 bits.)
@@ -1073,7 +1073,7 @@ On newer platforms that only have 64-bit file access and 32-bit UIDs/GIDs
the UID/GID and file access system calls.
On platforms (typically, 32-bit platforms) where the *64 and *32 calls exist,
the other versions are obsolete.
-.IP \(bu
+.IP \[bu]
The
.I rt_sig*
calls were added in Linux 2.2 to support the addition
@@ -1081,7 +1081,7 @@ of real-time signals (see
.BR signal (7)).
These system calls supersede the older system calls of the same
name without the "rt_" prefix.
-.IP \(bu
+.IP \[bu]
The
.BR select (2)
and
diff --git a/man2/sysctl.2 b/man2/sysctl.2
index fe8b9032f..8cef090be 100644
--- a/man2/sysctl.2
+++ b/man2/sysctl.2
@@ -7,7 +7,7 @@
.\" Modified Tue Oct 22 22:28:41 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Mon Jan 5 20:31:04 1998 by aeb.
.\"
-.TH sysctl 2 2022-12-04 "Linux man-pages 6.02"
+.TH sysctl 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
sysctl \- read/write system parameters
.SH SYNOPSIS
diff --git a/man2/sysfs.2 b/man2/sysfs.2
index 3b23f9b1c..2f7a18d2e 100644
--- a/man2/sysfs.2
+++ b/man2/sysfs.2
@@ -4,7 +4,7 @@
.\"
.\" Created Wed Aug 9 1995 Thomas K. Dyas <tdyas@eden.rutgers.edu>
.\"
-.TH sysfs 2 2022-10-30 "Linux man-pages 6.02"
+.TH sysfs 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sysfs \- get filesystem type information
.SH SYNOPSIS
diff --git a/man2/sysinfo.2 b/man2/sysinfo.2
index 6b0533367..f620ee947 100644
--- a/man2/sysinfo.2
+++ b/man2/sysinfo.2
@@ -12,7 +12,7 @@
.\" Modified Tue Oct 22 22:29:51 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Mon Aug 25 16:06:11 1997 by Nicolás Lichtmaier <nick@debian.org>
.\"
-.TH sysinfo 2 2022-10-30 "Linux man-pages 6.02"
+.TH sysinfo 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sysinfo \- return system information
.SH LIBRARY
diff --git a/man2/syslog.2 b/man2/syslog.2
index 655f0c8cb..9ee68a281 100644
--- a/man2/syslog.2
+++ b/man2/syslog.2
@@ -10,7 +10,7 @@
.\" 2008-02-15, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Update LOG_BUF_LEN details; update RETURN VALUE section.
.\"
-.TH syslog 2 2022-12-15 "Linux man-pages 6.02"
+.TH syslog 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
syslog, klogctl \- read and/or clear kernel message ring buffer;
set console_loglevel
@@ -246,7 +246,7 @@ and to 15 in case
of a kernel fault (the 10 and 15 are just silly, and equivalent to 8).
The value of
.I console_loglevel
-can be set (to a value in the range 1\(en8) by a
+can be set (to a value in the range 1\[en]8) by a
.BR syslog ()
call with a
.I type
diff --git a/man2/tee.2 b/man2/tee.2
index 18366fc1f..faba7f7ba 100644
--- a/man2/tee.2
+++ b/man2/tee.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH tee 2 2022-12-04 "Linux man-pages 6.02"
+.TH tee 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
tee \- duplicating pipe content
.SH LIBRARY
diff --git a/man2/time.2 b/man2/time.2
index 709030762..e6038140c 100644
--- a/man2/time.2
+++ b/man2/time.2
@@ -6,7 +6,7 @@
.\" Modified Sat Jul 24 14:13:40 1993 by Rik Faith <faith@cs.unc.edu>
.\" Additions by Joseph S. Myers <jsm28@cam.ac.uk>, 970909
.\"
-.TH time 2 2022-12-03 "Linux man-pages 6.02"
+.TH time 2 2022-12-29 "Linux man-pages 6.03"
.SH NAME
time \- get time in seconds
.SH LIBRARY
@@ -48,7 +48,7 @@ an invalid address may instead trigger a
.B SIGSEGV
signal.
.SH STANDARDS
-SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
+SVr4, 4.3BSD, C99, POSIX.1-2001.
.\" Under 4.3BSD, this call is obsoleted by
.\" .BR gettimeofday (2).
POSIX does not specify any error conditions.
diff --git a/man2/timer_create.2 b/man2/timer_create.2
index 331ea689c..a8d553275 100644
--- a/man2/timer_create.2
+++ b/man2/timer_create.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_create 2 2022-12-04 "Linux man-pages 6.02"
+.TH timer_create 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
timer_create \- create a POSIX per-process timer
.SH LIBRARY
@@ -282,7 +282,7 @@ option.
Part of the implementation of the POSIX timers API is provided by glibc.
.\" See nptl/sysdeps/unix/sysv/linux/timer_create.c
In particular:
-.IP \(bu 3
+.IP \[bu] 3
Much of the functionality for
.B SIGEV_THREAD
is implemented within glibc, rather than the kernel.
@@ -296,14 +296,14 @@ value of
.B SIGEV_THREAD_ID
along with a real-time signal that is reserved by the implementation (see
.BR nptl (7)).
-.IP \(bu
+.IP \[bu]
The implementation of the default case where
.I evp
is NULL is handled inside glibc,
which invokes the underlying system call with a suitably populated
.I sigevent
structure.
-.IP \(bu
+.IP \[bu]
The timer IDs presented at user level are maintained by glibc,
which maps these IDs to the timer IDs employed by the kernel.
.\" See the glibc source file kernel-posix-timers.h for the structure
@@ -318,7 +318,7 @@ timers only) using POSIX threads,
and before glibc 2.17,
.\" glibc commit 93a78ac437ba44f493333d7e2a4b0249839ce460
the implementation falls back to this technique on systems
-running pre-2.6 Linux kernels.
+running kernels older than Linux 2.6.
.SH EXAMPLES
The program below takes two arguments: a sleep period in seconds,
and a timer frequency in nanoseconds.
diff --git a/man2/timer_delete.2 b/man2/timer_delete.2
index 66865f885..f7d9c1688 100644
--- a/man2/timer_delete.2
+++ b/man2/timer_delete.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_delete 2 2022-10-30 "Linux man-pages 6.02"
+.TH timer_delete 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
timer_delete \- delete a POSIX per-process timer
.SH LIBRARY
diff --git a/man2/timer_getoverrun.2 b/man2/timer_getoverrun.2
index 694c9a2d6..e2a40d0b4 100644
--- a/man2/timer_getoverrun.2
+++ b/man2/timer_getoverrun.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_getoverrun 2 2022-10-30 "Linux man-pages 6.02"
+.TH timer_getoverrun 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
timer_getoverrun \- get overrun count for a POSIX per-process timer
.SH LIBRARY
diff --git a/man2/timer_settime.2 b/man2/timer_settime.2
index a110b0997..6c9dcf956 100644
--- a/man2/timer_settime.2
+++ b/man2/timer_settime.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timer_settime 2 2022-12-03 "Linux man-pages 6.02"
+.TH timer_settime 2 2022-12-03 "Linux man-pages 6.03"
.SH NAME
timer_settime, timer_gettime \- arm/disarm and fetch
state of POSIX per-process timer
diff --git a/man2/timerfd_create.2 b/man2/timerfd_create.2
index 18e12ff27..56514d56c 100644
--- a/man2/timerfd_create.2
+++ b/man2/timerfd_create.2
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH TIMERFD_CREATE 2 2022-12-04 "Linux man-pages 6.02"
+.TH timerfd_create 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
timerfd_create, timerfd_settime, timerfd_gettime \-
timers that notify via file descriptors
@@ -255,7 +255,7 @@ then the buffer given to
returns an unsigned 8-byte integer
.RI ( uint64_t )
containing the number of expirations that have occurred.
-(The returned value is in host byte order\(emthat is,
+(The returned value is in host byte order\[em]that is,
the native byte order for integers on the host machine.)
.IP
If no timer expirations have occurred at the time of the
@@ -502,7 +502,7 @@ to rearm the timer (without first doing a
on the file descriptor).
.PP
In this case the following occurs:
-.IP \(bu 3
+.IP \[bu] 3
The
.BR timerfd_settime ()
returns \-1 with
@@ -511,7 +511,7 @@ set to
.BR ECANCELED .
(This enables the caller to know that the previous timer was affected
by a discontinuous change to the clock.)
-.IP \(bu
+.IP \[bu]
The timer
.I "is successfully rearmed"
with the settings provided in the second
@@ -543,14 +543,14 @@ The following shell session demonstrates the use of the program:
0.000: timer started
3.000: read: 1; total=1
4.000: read: 1; total=2
-.BR "\(haZ " " # type control\-Z to suspend the program"
+.BR "\[ha]Z " " # type control\-Z to suspend the program"
[1]+ Stopped ./timerfd3_demo 3 1 100
.RB "$ " "fg" " # Resume execution after a few seconds"
a.out 3 1 100
9.660: read: 5; total=7
10.000: read: 1; total=8
11.000: read: 1; total=9
-.BR "\(haC " " # type control\-C to suspend the program"
+.BR "\[ha]C " " # type control\-C to suspend the program"
.EE
.in
.SS Program source
diff --git a/man2/times.2 b/man2/times.2
index 427f40ad5..a0a644f06 100644
--- a/man2/times.2
+++ b/man2/times.2
@@ -15,7 +15,7 @@
.\" Added notes on nonstandard behavior: Linux allows 'buf' to
.\" be NULL, but POSIX.1 doesn't specify this and it's nonportable.
.\"
-.TH times 2 2022-12-04 "Linux man-pages 6.02"
+.TH times 2 2023-02-10 "Linux man-pages 6.03"
.SH NAME
times \- get process times
.SH LIBRARY
@@ -80,7 +80,8 @@ are added in at the moment
or
.BR waitpid (2)
returns their process ID.
-In particular, times of grandchildren
+In particular,
+times of grandchildren
that the children did not wait for are never seen.
.PP
All times reported are in clock ticks.
@@ -90,7 +91,9 @@ returns the number of clock ticks that have elapsed since
an arbitrary point in the past.
The return value may overflow the possible range of type
.IR clock_t .
-On error, \fI(clock_t)\ \-1\fP is returned, and
+On error,
+\fI(clock_t)\ \-1\fP is returned,
+and
.I errno
is set to indicate the error.
.SH ERRORS
@@ -99,7 +102,10 @@ is set to indicate the error.
.I tms
points outside the process's address space.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+POSIX.1-2001,
+POSIX.1-2008,
+SVr4,
+4.3BSD.
.SH NOTES
The number of clock ticks per second can be obtained using:
.PP
@@ -124,7 +130,8 @@ are automatically included in the
.I tms_cstime
and
.I tms_cutime
-fields, although POSIX.1-2001 says that this should happen
+fields,
+although POSIX.1-2001 says that this should happen
only if the calling process
.BR wait (2)s
on its children.
@@ -133,12 +140,16 @@ This nonconformance is rectified in Linux 2.6.9 and later.
.\" The times of a terminated child process are included... when wait()
.\" or waitpid() returns the process ID of this terminated child.
.PP
-On Linux, the
+On Linux,
+the
.I buf
-argument can be specified as NULL, with the result that
+argument can be specified as NULL,
+with the result that
.BR times ()
just returns a function result.
-However, POSIX does not specify this behavior, and most
+However,
+POSIX does not specify this behavior,
+and most
other UNIX implementations require a non-NULL value for
.IR buf .
.PP
@@ -151,17 +162,22 @@ but this value is measured in units of
not the clock ticks used by
.BR times ().
.PP
-On Linux, the "arbitrary point in the past" from which the return value of
+On Linux,
+the \[lq]arbitrary point in the past\[rq]
+from which the return value of
.BR times ()
is measured has varied across kernel versions.
-On Linux 2.4 and earlier, this point is the moment the system was booted.
-Since Linux 2.6, this point is \fI(2^32/HZ) \- 300\fP
+On Linux 2.4 and earlier,
+this point is the moment the system was booted.
+Since Linux 2.6,
+this point is \fI(2\[ha]32/HZ) \- 300\fP
seconds before system boot time.
This variability across kernel versions (and across UNIX implementations),
combined with the fact that the returned value may overflow the range of
.IR clock_t ,
means that a portable application would be wise to avoid using this value.
-To measure changes in elapsed time, use
+To measure changes in elapsed time,
+use
.BR clock_gettime (2)
instead.
.\" .PP
@@ -172,10 +188,12 @@ SVr1-3 returns
.I long
and the struct members are of type
.I time_t
-although they store clock ticks, not seconds since the Epoch.
+although they store clock ticks,
+not seconds since the Epoch.
V7 used
.I long
-for the struct members, because it had no type
+for the struct members,
+because it had no type
.I time_t
yet.
.SH BUGS
@@ -183,7 +201,8 @@ A limitation of the Linux system call conventions on some architectures
(notably i386) means that on Linux 2.6 there is a small time window
(41 seconds) soon after boot when
.BR times ()
-can return \-1, falsely indicating that an error occurred.
+can return \-1,
+falsely indicating that an error occurred.
The same problem can occur when the return value wraps past
the maximum value that can be stored in
.BR clock_t .
diff --git a/man2/tkill.2 b/man2/tkill.2
index c41d07528..0e893f7c2 100644
--- a/man2/tkill.2
+++ b/man2/tkill.2
@@ -6,7 +6,7 @@
.\" 2004-05-31, added tgkill, ahu, aeb
.\" 2008-01-15 mtk -- rewrote DESCRIPTION
.\"
-.TH tkill 2 2022-12-04 "Linux man-pages 6.02"
+.TH tkill 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
tkill, tgkill \- send a signal to a thread
.SH LIBRARY
diff --git a/man2/truncate.2 b/man2/truncate.2
index eaa074a0f..5488e8106 100644
--- a/man2/truncate.2
+++ b/man2/truncate.2
@@ -12,7 +12,7 @@
.\" Modified 2002-04-06 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH truncate 2 2022-10-30 "Linux man-pages 6.02"
+.TH truncate 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
truncate, ftruncate \- truncate a file to a specified length
.SH LIBRARY
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.PP
.BR ftruncate ():
@@ -44,7 +44,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
The
@@ -61,7 +61,7 @@ bytes.
.PP
If the file previously was larger than this size, the extra data is lost.
If the file previously was shorter, it is extended, and
-the extended part reads as null bytes (\(aq\e0\(aq).
+the extended part reads as null bytes (\[aq]\e0\[aq]).
.PP
The file offset is not changed.
.PP
diff --git a/man2/umask.2 b/man2/umask.2
index 9c9952862..db57df55c 100644
--- a/man2/umask.2
+++ b/man2/umask.2
@@ -11,7 +11,7 @@
.\" <nick@debian.com> with Lars Wirzenius <liw@iki.fi> suggestion
.\" 2006-05-13, mtk, substantial rewrite of description of 'mask'
.\" 2008-01-09, mtk, a few rewrites and additions.
-.TH umask 2 2022-10-30 "Linux man-pages 6.02"
+.TH umask 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
umask \- set file mode creation mask
.SH LIBRARY
@@ -95,7 +95,7 @@ resulting file will be:
.EE
.in
.PP
-(because 0666 & \(ti022 = 0644; i.e. rw\-r\-\-r\-\-).
+(because 0666 & \[ti]022 = 0644; i.e. rw\-r\-\-r\-\-).
.SH RETURN VALUE
This system call always succeeds and the previous value of the mask
is returned.
diff --git a/man2/umount.2 b/man2/umount.2
index 4ffb84c4c..605d91fd1 100644
--- a/man2/umount.2
+++ b/man2/umount.2
@@ -7,7 +7,7 @@
.\" 2008-10-06, mtk: Created this as a new page by splitting
.\" umount/umount2 material out of mount.2
.\"
-.TH umount 2 2022-12-04 "Linux man-pages 6.02"
+.TH umount 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
umount, umount2 \- unmount filesystem
.SH LIBRARY
diff --git a/man2/uname.2 b/man2/uname.2
index 0f437567e..601b674f4 100644
--- a/man2/uname.2
+++ b/man2/uname.2
@@ -4,7 +4,7 @@
.\"
.\" 2007-07-05 mtk: Added details on underlying system call interfaces
.\"
-.TH uname 2 2022-10-30 "Linux man-pages 6.02"
+.TH uname 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
uname \- get name and information about current kernel
.SH LIBRARY
@@ -45,7 +45,7 @@ struct utsname {
The length of the arrays in a
.I struct utsname
is unspecified (see NOTES);
-the fields are terminated by a null byte (\(aq\e0\(aq).
+the fields are terminated by a null byte (\[aq]\e0\[aq]).
.SH RETURN VALUE
On success, zero is returned.
On error, \-1 is returned, and
@@ -89,7 +89,7 @@ or
Clearly, it is a bad
idea to use any of these constants; just use sizeof(...).
SVr4 uses 257, "to support Internet hostnames"
-\(em this is the largest value likely to be encountered in the wild.
+\[em] this is the largest value likely to be encountered in the wild.
.PP
Part of the utsname information is also accessible via
.IR /proc/sys/kernel/ { ostype ,
diff --git a/man2/unimplemented.2 b/man2/unimplemented.2
index 1d4e6fba9..143411e2e 100644
--- a/man2/unimplemented.2
+++ b/man2/unimplemented.2
@@ -4,7 +4,7 @@
.\"
.\" Updated, aeb, 980612
.\"
-.TH UNIMPLEMENTED 2 2022-10-09 "Linux man-pages 6.02"
+.TH UNIMPLEMENTED 2 2022-10-09 "Linux man-pages 6.03"
.SH NAME
afs_syscall, break, fattach, fdetach, ftime, getmsg, getpmsg, gtty, isastream,
lock, madvise1, mpx, prof, profil, putmsg, putpmsg, security,
diff --git a/man2/unlink.2 b/man2/unlink.2
index dac8997bd..4ace85760 100644
--- a/man2/unlink.2
+++ b/man2/unlink.2
@@ -10,7 +10,7 @@
.\" Modified 2001-05-17 by aeb
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH unlink 2 2022-12-04 "Linux man-pages 6.02"
+.TH unlink 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
unlink, unlinkat \- delete a name and possibly the file it refers to
.SH LIBRARY
@@ -265,7 +265,7 @@ SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
.BR unlinkat ():
POSIX.1-2008.
.SH NOTES
-.SS Glibc notes
+.SS glibc notes
On older kernels where
.BR unlinkat ()
is unavailable, the glibc wrapper function falls back to the use of
diff --git a/man2/unshare.2 b/man2/unshare.2
index a992aa395..5796ddc52 100644
--- a/man2/unshare.2
+++ b/man2/unshare.2
@@ -15,7 +15,7 @@
.\" by clone, which would require porting and maintaining all commands
.\" such as login, and su, that establish a user session.
.\"
-.TH unshare 2 2022-12-04 "Linux man-pages 6.02"
+.TH unshare 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
unshare \- disassociate parts of the process execution context
.SH LIBRARY
@@ -536,14 +536,14 @@ main(int argc, char *argv[])
while ((opt = getopt(argc, argv, "CimnptuU")) != \-1) {
switch (opt) {
- case \(aqC\(aq: flags |= CLONE_NEWCGROUP; break;
- case \(aqi\(aq: flags |= CLONE_NEWIPC; break;
- case \(aqm\(aq: flags |= CLONE_NEWNS; break;
- case \(aqn\(aq: flags |= CLONE_NEWNET; break;
- case \(aqp\(aq: flags |= CLONE_NEWPID; break;
- case \(aqt\(aq: flags |= CLONE_NEWTIME; break;
- case \(aqu\(aq: flags |= CLONE_NEWUTS; break;
- case \(aqU\(aq: flags |= CLONE_NEWUSER; break;
+ case \[aq]C\[aq]: flags |= CLONE_NEWCGROUP; break;
+ case \[aq]i\[aq]: flags |= CLONE_NEWIPC; break;
+ case \[aq]m\[aq]: flags |= CLONE_NEWNS; break;
+ case \[aq]n\[aq]: flags |= CLONE_NEWNET; break;
+ case \[aq]p\[aq]: flags |= CLONE_NEWPID; break;
+ case \[aq]t\[aq]: flags |= CLONE_NEWTIME; break;
+ case \[aq]u\[aq]: flags |= CLONE_NEWUTS; break;
+ case \[aq]U\[aq]: flags |= CLONE_NEWUSER; break;
default: usage(argv[0]);
}
}
diff --git a/man2/uselib.2 b/man2/uselib.2
index fa1ecaeaf..d941a76ad 100644
--- a/man2/uselib.2
+++ b/man2/uselib.2
@@ -8,7 +8,7 @@
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2005-01-09 by aeb
.\"
-.TH USELIB 2 2022-12-04 "Linux man-pages 6.02"
+.TH uselib 2 2023-01-07 "Linux man-pages 6.03"
.SH NAME
uselib \- load shared library
.SH SYNOPSIS
diff --git a/man2/userfaultfd.2 b/man2/userfaultfd.2
index 8a6f50b38..eabf32cf7 100644
--- a/man2/userfaultfd.2
+++ b/man2/userfaultfd.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH userfaultfd 2 2022-12-04 "Linux man-pages 6.02"
+.TH userfaultfd 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
userfaultfd \- create a file descriptor for handling page faults in user space
.SH LIBRARY
@@ -832,11 +832,11 @@ fault_handler_thread(void *arg)
printf("flags = %"PRIx64"; ", msg.arg.pagefault.flags);
printf("address = %"PRIx64"\en", msg.arg.pagefault.address);
- /* Copy the page pointed to by \(aqpage\(aq into the faulting
+ /* Copy the page pointed to by \[aq]page\[aq] into the faulting
region. Vary the contents that are copied in, so that it
is more obvious that each fault is handled separately. */
- memset(page, \(aqA\(aq + fault_cnt % 20, page_size);
+ memset(page, \[aq]A\[aq] + fault_cnt % 20, page_size);
fault_cnt++;
uffdio_copy.src = (unsigned long) page;
@@ -845,7 +845,7 @@ fault_handler_thread(void *arg)
So, round faulting address down to page boundary. */
uffdio_copy.dst = (unsigned long) msg.arg.pagefault.address &
- \(ti(page_size \- 1);
+ \[ti](page_size \- 1);
uffdio_copy.len = page_size;
uffdio_copy.mode = 0;
uffdio_copy.copy = 0;
diff --git a/man2/ustat.2 b/man2/ustat.2
index bb66f3edf..3bd447793 100644
--- a/man2/ustat.2
+++ b/man2/ustat.2
@@ -7,7 +7,7 @@
.\" Modified 2001-03-22 by aeb
.\" Modified 2003-08-04 by aeb
.\"
-.TH ustat 2 2022-12-04 "Linux man-pages 6.02"
+.TH ustat 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ustat \- get filesystem statistics
.SH LIBRARY
@@ -47,7 +47,7 @@ The last two fields,
and
.IR f_fpack ,
are not implemented and will
-always be filled with null bytes (\(aq\e0\(aq).
+always be filled with null bytes (\[aq]\e0\[aq]).
.SH RETURN VALUE
On success, zero is returned and the
.I ustat
diff --git a/man2/utime.2 b/man2/utime.2
index 42bd22fb0..1b41ef590 100644
--- a/man2/utime.2
+++ b/man2/utime.2
@@ -8,7 +8,7 @@
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2004-10-10 by Andries Brouwer <aeb@cwi.nl>
.\"
-.TH utime 2 2022-12-03 "Linux man-pages 6.02"
+.TH utime 2 2022-12-03 "Linux man-pages 6.03"
.SH NAME
utime, utimes \- change file last access and modification times
.SH LIBRARY
diff --git a/man2/utimensat.2 b/man2/utimensat.2
index 4218ab84f..fd1f70ba5 100644
--- a/man2/utimensat.2
+++ b/man2/utimensat.2
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH utimensat 2 2022-12-15 "Linux man-pages 6.02"
+.TH utimensat 2 2023-02-12 "Linux man-pages 6.03"
.SH NAME
utimensat, futimens \- change file timestamps with nanosecond precision
.SH LIBRARY
@@ -113,15 +113,15 @@ is NULL, or both
fields specify
.BR UTIME_NOW ),
either:
-.IP \(bu 3
+.IP \[bu] 3
the caller must have write access to the file;
.\" 2.6.22 was broken here -- for futimens() the check is
.\" based on whether or not the file descriptor is writable,
.\" not on whether the caller's effective UID has write
.\" permission for the file referred to by the descriptor.
-.IP \(bu
+.IP \[bu]
the caller's effective user ID must match the owner of the file; or
-.IP \(bu
+.IP \[bu]
the caller must have appropriate privileges.
.PP
To make any change other than setting both timestamps to the
@@ -272,7 +272,7 @@ Invalid value in
.B EINVAL
Invalid value in one of the
.I tv_nsec
-fields (value outside range 0 to 999,999,999, and not
+fields (value outside range [0, 999,999,999], and not
.B UTIME_NOW
or
.BR UTIME_OMIT );
@@ -340,13 +340,13 @@ field is
.BR UTIME_OMIT )
and either:
.RS
-.IP \(bu 3
+.IP \[bu] 3
the caller's effective user ID does not match the owner of file,
and the caller is not privileged
(Linux: does not have the
.B CAP_FOWNER
capability); or,
-.IP \(bu
+.IP \[bu]
.\" Linux 2.6.22 was broken here:
.\" it was not consistent with the old utimes() implementation,
.\" since the case when both tv_nsec fields are UTIME_NOW, was not
@@ -463,7 +463,7 @@ and
before Linux 2.6.26.
These bugs are either nonconformances with the POSIX.1 draft specification
or inconsistencies with historical Linux behavior.
-.IP \(bu 3
+.IP \[bu] 3
POSIX.1 specifies that if one of the
.I tv_nsec
fields has the value
@@ -478,7 +478,7 @@ Instead, the value of the
field is required to be 0 (or the error
.B EINVAL
results).
-.IP \(bu
+.IP \[bu]
Various bugs mean that for the purposes of permission checking,
the case where both
.I tv_nsec
@@ -580,7 +580,7 @@ value is returned in case of an error.
.\" .BR UTIME_NOW .
.\" Instead, the call fails with the error
.\" .BR EPERM .
-.IP \(bu
+.IP \[bu]
POSIX.1 says that a process that has \fIwrite access to the file\fP
can make a call with
.I times
diff --git a/man2/vfork.2 b/man2/vfork.2
index 6c02b1b4f..0c3ad6c0f 100644
--- a/man2/vfork.2
+++ b/man2/vfork.2
@@ -6,7 +6,7 @@
.\" 1999-11-10: Merged text taken from the page contributed by
.\" Reed H. Petty (rhp@draper.net)
.\"
-.TH vfork 2 2022-12-04 "Linux man-pages 6.02"
+.TH vfork 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
vfork \- create a child process and block parent
.SH LIBRARY
@@ -29,7 +29,7 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
@@ -167,11 +167,11 @@ and
.BR vfork (),
there are various reasons why Linux and other systems have retained
.BR vfork ():
-.IP \(bu 3
+.IP \[bu] 3
Some performance-critical applications require the small performance
advantage conferred by
.BR vfork ().
-.IP \(bu
+.IP \[bu]
.BR vfork ()
can be implemented on systems that lack a memory-management unit (MMU), but
.BR fork (2)
@@ -189,7 +189,7 @@ is designed to be implementable on systems that lack an MMU.)
.\" http://developers.sun.com/solaris/articles/subprocess/subprocess.html
.\" http://mailman.uclinux.org/pipermail/uclinux-dev/2009-April/000684.html
.\"
-.IP \(bu
+.IP \[bu]
On systems where memory is constrained,
.BR vfork ()
avoids the need to temporarily commit memory (see the description of
diff --git a/man2/vhangup.2 b/man2/vhangup.2
index 9ff43620e..a156d55fb 100644
--- a/man2/vhangup.2
+++ b/man2/vhangup.2
@@ -5,7 +5,7 @@
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on capability requirements
.\"
-.TH vhangup 2 2022-10-30 "Linux man-pages 6.02"
+.TH vhangup 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
vhangup \- virtually hangup the current terminal
.SH LIBRARY
diff --git a/man2/vm86.2 b/man2/vm86.2
index 97f027766..04c533e44 100644
--- a/man2/vm86.2
+++ b/man2/vm86.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH vm86 2 2022-10-30 "Linux man-pages 6.02"
+.TH vm86 2 2022-10-30 "Linux man-pages 6.03"
.SH NAME
vm86old, vm86 \- enter virtual 8086 mode
.SH LIBRARY
diff --git a/man2/vmsplice.2 b/man2/vmsplice.2
index 1355e4bf9..50e154e40 100644
--- a/man2/vmsplice.2
+++ b/man2/vmsplice.2
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH vmsplice 2 2022-12-04 "Linux man-pages 6.02"
+.TH vmsplice 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
vmsplice \- splice user pages to/from a pipe
.SH LIBRARY
diff --git a/man2/wait.2 b/man2/wait.2
index 14102875b..9164f656c 100644
--- a/man2/wait.2
+++ b/man2/wait.2
@@ -26,7 +26,7 @@
.\" 2005-05-10, mtk, __W* flags can't be used with waitid()
.\" 2008-07-04, mtk, removed erroneous text about SA_NOCLDSTOP
.\"
-.TH wait 2 2022-12-03 "Linux man-pages 6.02"
+.TH wait 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wait, waitpid, waitid \- wait for process to change state
.SH LIBRARY
@@ -55,10 +55,10 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.26:
_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L
.\" (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
- Glibc 2.25 and earlier:
+ glibc 2.25 and earlier:
_XOPEN_SOURCE
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
All of these system calls are used to wait for state changes
diff --git a/man2/wait4.2 b/man2/wait4.2
index f13156b61..9f74d4a04 100644
--- a/man2/wait4.2
+++ b/man2/wait4.2
@@ -10,7 +10,7 @@
.\" Rewrote much of this page, and removed much duplicated text,
.\" replacing with pointers to wait.2
.\"
-.TH wait4 2 2022-12-04 "Linux man-pages 6.02"
+.TH wait4 2 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wait3, wait4 \- wait for process to change state, BSD style
.SH LIBRARY
@@ -40,7 +40,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 600))
From glibc 2.19 to glibc 2.25:
_DEFAULT_SOURCE || _XOPEN_SOURCE >= 500
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
.fi
@@ -49,7 +49,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man2/write.2 b/man2/write.2
index e72dcd057..f4061b508 100644
--- a/man2/write.2
+++ b/man2/write.2
@@ -16,7 +16,7 @@
.\" gave some examples of why this might occur.
.\" Noted what happens if write() is interrupted by a signal.
.\"
-.TH write 2 2022-12-04 "Linux man-pages 6.02"
+.TH write 2 2022-12-04 "Linux man-pages 6.03"
.SH NAME
write \- write to a file descriptor
.SH LIBRARY
diff --git a/man2type/open_how.2type b/man2type/open_how.2type
index 04f75f536..3c9aa9b07 100644
--- a/man2type/open_how.2type
+++ b/man2type/open_how.2type
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH open_how 2type 2022-10-30 "Linux man-pages 6.02"
+.TH open_how 2type 2022-12-30 "Linux man-pages 6.03"
.SH NAME
open_how \- how to open a pathname
.SH LIBRARY
@@ -20,7 +20,7 @@ Linux kernel headers
.B };
.EE
.SH DESCRIPTION
-Specifies how a pathname should be open.
+Specifies how a pathname should be opened.
.PP
The fields are as follows:
.TP
diff --git a/man3/CPU_SET.3 b/man3/CPU_SET.3
index adf0632b8..c41dadc8d 100644
--- a/man3/CPU_SET.3
+++ b/man3/CPU_SET.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH CPU_SET 3 2022-10-09 "Linux man-pages 6.02"
+.TH CPU_SET 3 2022-10-09 "Linux man-pages 6.03"
.SH NAME
CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT,
CPU_AND, CPU_OR, CPU_XOR, CPU_EQUAL,
diff --git a/man3/INFINITY.3 b/man3/INFINITY.3
index e992642f2..a14fad975 100644
--- a/man3/INFINITY.3
+++ b/man3/INFINITY.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH INFINITY 3 2022-10-09 "Linux man-pages 6.02"
+.TH INFINITY 3 2022-10-09 "Linux man-pages 6.03"
.SH NAME
INFINITY, NAN, HUGE_VAL, HUGE_VALF, HUGE_VALL \- floating-point constants
.SH LIBRARY
diff --git a/man3/MAX.3 b/man3/MAX.3
index f58e9fc66..2fa4216fc 100644
--- a/man3/MAX.3
+++ b/man3/MAX.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH MAX 3 2022-10-30 "Linux man-pages 6.02"
+.TH MAX 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
MAX, MIN \- maximum or minimum of two values
.SH LIBRARY
diff --git a/man3/MB_CUR_MAX.3 b/man3/MB_CUR_MAX.3
index 6714fe5e9..90a6ffd9b 100644
--- a/man3/MB_CUR_MAX.3
+++ b/man3/MB_CUR_MAX.3
@@ -9,7 +9,7 @@
.\"
.\" Modified, aeb, 990824
.\"
-.TH MB_CUR_MAX 3 2022-10-09 "Linux man-pages 6.02"
+.TH MB_CUR_MAX 3 2022-10-09 "Linux man-pages 6.03"
.SH NAME
MB_CUR_MAX \- maximum length of a multibyte character in the current locale
.SH LIBRARY
diff --git a/man3/MB_LEN_MAX.3 b/man3/MB_LEN_MAX.3
index c67e7688b..234d7a1da 100644
--- a/man3/MB_LEN_MAX.3
+++ b/man3/MB_LEN_MAX.3
@@ -9,7 +9,7 @@
.\"
.\" Modified, aeb, 990824
.\"
-.TH MB_LEN_MAX 3 2022-10-09 "Linux man-pages 6.02"
+.TH MB_LEN_MAX 3 2022-10-09 "Linux man-pages 6.03"
.SH NAME
MB_LEN_MAX \- maximum multibyte length of a character across all locales
.SH LIBRARY
diff --git a/man3/_Generic.3 b/man3/_Generic.3
index b36739ba7..14e21d46c 100644
--- a/man3/_Generic.3
+++ b/man3/_Generic.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH _Generic 3 2022-11-12 "Linux man-pages 6.02"
+.TH _Generic 3 2023-02-12 "Linux man-pages 6.03"
.SH NAME
_Generic \- type-generic selection
.SH SYNOPSIS
@@ -27,95 +27,6 @@ that will behave differently depending on the type of the argument.
.SH STANDARDS
C11 and later.
.SH EXAMPLES
-The following code demonstrates how to write
-a macro similar to C++'s
-.BR \%static_cast (),
-which will allow casting safely between a limited set of types.
-It is useful for example when calling
-system calls or library functions that use compatible structures,
-like for example
-.BR bind (2)
-with
-.BR \%sockaddr (3type).
-.IP
-.EX
-/* This code is in the public domain. */
-
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#define sockaddr_cast(t, p) \e
- _Generic(&*(p), \e
- struct sockaddr *: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr_in *: (t) (p), \e
- struct sockaddr_in6 *: (t) (p), \e
- struct sockaddr_un *: (t) (p), \e
- default: (p)), \e
- struct sockaddr **: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr_in **: (t) (p), \e
- struct sockaddr_in6 **: (t) (p), \e
- struct sockaddr_un **: (t) (p), \e
- default: (p)), \e
- const struct sockaddr *: \e
- _Generic((t) NULL, \e
- const struct sockaddr_in *: (t) (p), \e
- const struct sockaddr_in6 *: (t) (p), \e
- const struct sockaddr_un *: (t) (p), \e
- default: (p)), \e
- \e
- struct sockaddr_in *: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr *: (t) (p), \e
- default: (p)), \e
- struct sockaddr_in **: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr **: (t) (p), \e
- default: (p)), \e
- const struct sockaddr_in *: \e
- _Generic((t) NULL, \e
- const struct sockaddr *: (t) (p), \e
- default: (p)), \e
- \e
- struct sockaddr_in6 *: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr *: (t) (p), \e
- default: (p)), \e
- struct sockaddr_in6 **: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr **: (t) (p), \e
- default: (p)), \e
- const struct sockaddr_in6 *: \e
- _Generic((t) NULL, \e
- const struct sockaddr *: (t) (p), \e
- default: (p)), \e
- \e
- struct sockaddr_un *: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr *: (t) (p), \e
- default: (p)), \e
- struct sockaddr_un **: \e
- _Generic((typeof_unqual(t)) NULL, \e
- struct sockaddr **: (t) (p), \e
- default: (p)), \e
- const struct sockaddr_un *: \e
- _Generic((t) NULL, \e
- const struct sockaddr *: (t) (p), \e
- default: (p)), \e
- \e
- default: \e
- (p) \e
- )
-
-socklen_t slen;
-struct sockaddr_un sun;
-
-slen = sizeof(ss);
-getsockname(sfd, sockaddr_cast(struct sockaddr *, &sun), &slen);
-.EE
-.PP
The following program demonstrates how to write
a replacement for the standard
.BR imaxabs (3)
diff --git a/man3/__ppc_get_timebase.3 b/man3/__ppc_get_timebase.3
index 74011c6f4..f5ae9af3e 100644
--- a/man3/__ppc_get_timebase.3
+++ b/man3/__ppc_get_timebase.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH __ppc_get_timebase 3 2022-12-04 "Linux man-pages 6.02"
+.TH __ppc_get_timebase 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
__ppc_get_timebase, __ppc_get_timebase_freq \- get the current value
of the Time Base Register on Power architecture and its frequency.
@@ -60,7 +60,7 @@ between two calls to
#include <stdlib.h>
#include <sys/platform/ppc.h>
-/* Maximum value of the Time Base Register: 2\(ha60 \- 1.
+/* Maximum value of the Time Base Register: 2\[ha]60 \- 1.
Source: POWER ISA. */
#define MAX_TB 0xFFFFFFFFFFFFFFF
diff --git a/man3/__ppc_set_ppr_med.3 b/man3/__ppc_set_ppr_med.3
index 2df23530c..a4140e120 100644
--- a/man3/__ppc_set_ppr_med.3
+++ b/man3/__ppc_set_ppr_med.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH __ppc_set_ppr_med 3 2022-12-15 "Linux man-pages 6.02"
+.TH __ppc_set_ppr_med 3 2022-12-15 "Linux man-pages 6.03"
Programmer's Manual"
.SH NAME
__ppc_set_ppr_med, __ppc_set_ppr_very_low, __ppc_set_ppr_low,
diff --git a/man3/__ppc_yield.3 b/man3/__ppc_yield.3
index b0eae5854..db44c85ad 100644
--- a/man3/__ppc_yield.3
+++ b/man3/__ppc_yield.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH __ppc_yield 3 2022-12-15 "Linux man-pages 6.02"
+.TH __ppc_yield 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
__ppc_yield, __ppc_mdoio, __ppc_mdoom \-
Hint the processor to release shared resources
diff --git a/man3/__setfpucw.3 b/man3/__setfpucw.3
index 83bd3b124..2a581a783 100644
--- a/man3/__setfpucw.3
+++ b/man3/__setfpucw.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH __setfpucw 3 2022-10-30 "Linux man-pages 6.02"
+.TH __setfpucw 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
__setfpucw \- set FPU control word on i386 architecture (obsolete)
.SH LIBRARY
@@ -57,11 +57,11 @@ can be used.
Set FPU control word on the i386 architecture to
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
extended precision
-.IP \(bu
+.IP \[bu]
rounding to nearest
-.IP \(bu
+.IP \[bu]
exceptions on overflow, zero divide and NaN
.PD
.RE
diff --git a/man3/a64l.3 b/man3/a64l.3
index bdcd1073f..4b54dd94d 100644
--- a/man3/a64l.3
+++ b/man3/a64l.3
@@ -6,7 +6,7 @@
.\"
.\" Corrected, aeb, 2002-05-30
.\"
-.TH a64l 3 2022-12-15 "Linux man-pages 6.02"
+.TH a64l 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
a64l, l64a \- convert between long and base-64
.SH LIBRARY
@@ -30,8 +30,8 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions provide a conversion between 32-bit long integers
@@ -53,15 +53,15 @@ The 64 digits in the base-64 system are:
.PP
.RS
.nf
-\&\(aq.\(aq represents a 0
-\&\(aq/\(aq represents a 1
+\&\[aq].\[aq] represents a 0
+\&\[aq]/\[aq] represents a 1
0-9 represent 2-11
A-Z represent 12-37
a-z represent 38-63
.fi
.RE
.PP
-So 123 = 59*64\(ha0 + 1*64\(ha1 = "v/".
+So 123 = 59*64\[ha]0 + 1*64\[ha]1 = "v/".
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
diff --git a/man3/abort.3 b/man3/abort.3
index f0123494e..e97b663fd 100644
--- a/man3/abort.3
+++ b/man3/abort.3
@@ -12,7 +12,7 @@
.\" Modified Fri Aug 4 10:51:53 2000 - patch from Joseph S. Myers
.\" 2007-12-15, mtk, Mostly rewritten
.\"
-.TH abort 3 2022-12-15 "Linux man-pages 6.02"
+.TH abort 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
abort \- cause abnormal process termination
.SH LIBRARY
@@ -69,7 +69,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-SVr4, POSIX.1-2001, POSIX.1-2008, 4.3BSD, C89, C99.
+SVr4, POSIX.1-2001, POSIX.1-2008, 4.3BSD, C99.
.SH NOTES
Up until glibc 2.26,
if the
diff --git a/man3/abs.3 b/man3/abs.3
index 0bdbe08ea..9251606de 100644
--- a/man3/abs.3
+++ b/man3/abs.3
@@ -12,7 +12,7 @@
.\" Modified Sat Jul 24 21:45:37 1993, Rik Faith (faith@cs.unc.edu)
.\" Modified Sat Dec 16 15:02:59 2000, Joseph S. Myers
.\"
-.TH abs 3 2022-12-15 "Linux man-pages 6.02"
+.TH abs 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
abs, labs, llabs, imaxabs \- compute the absolute value of an integer
.SH LIBRARY
@@ -77,19 +77,6 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
-.\" POSIX.1 (1996 edition) requires only the
-.\" .BR abs ()
-.\" function.
-C89 only
-includes the
-.BR abs ()
-and
-.BR labs ()
-functions; the functions
-.BR llabs ()
-and
-.BR imaxabs ()
-were added in C99.
.SH NOTES
Trying to take the absolute value of the most negative integer
is not defined.
diff --git a/man3/acos.3 b/man3/acos.3
index f5c4965aa..23fa603bb 100644
--- a/man3/acos.3
+++ b/man3/acos.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-25 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH acos 3 2022-12-15 "Linux man-pages 6.02"
+.TH acos 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
acos, acosf, acosl \- arc cosine function
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions calculate the arc cosine of
@@ -111,7 +111,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR asin (3),
.BR atan (3),
diff --git a/man3/acosh.3 b/man3/acosh.3
index 5c47f07cd..671c55832 100644
--- a/man3/acosh.3
+++ b/man3/acosh.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-25 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH acosh 3 2022-12-15 "Linux man-pages 6.02"
+.TH acosh 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
acosh, acoshf, acoshl \- inverse hyperbolic cosine function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR acoshf (),
@@ -47,7 +47,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions calculate the inverse hyperbolic cosine of
diff --git a/man3/addseverity.3 b/man3/addseverity.3
index 23d7d2e7a..5b654a1cc 100644
--- a/man3/addseverity.3
+++ b/man3/addseverity.3
@@ -5,7 +5,7 @@
.\" adapted glibc info page
.\"
.\" polished a little, aeb
-.TH addseverity 3 2022-12-15 "Linux man-pages 6.02"
+.TH addseverity 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
addseverity \- introduce new severity classes
.SH LIBRARY
@@ -28,7 +28,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/adjtime.3 b/man3/adjtime.3
index e747e422e..f5fb095ed 100644
--- a/man3/adjtime.3
+++ b/man3/adjtime.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH adjtime 3 2022-12-15 "Linux man-pages 6.02"
+.TH adjtime 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
adjtime \- correct the time to synchronize the system clock
.SH LIBRARY
@@ -25,7 +25,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/aio_cancel.3 b/man3/aio_cancel.3
index 59c521672..c7159b0b0 100644
--- a/man3/aio_cancel.3
+++ b/man3/aio_cancel.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH aio_cancel 3 2022-12-15 "Linux man-pages 6.02"
+.TH aio_cancel 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
aio_cancel \- cancel an outstanding asynchronous I/O request
.SH LIBRARY
diff --git a/man3/aio_error.3 b/man3/aio_error.3
index b76609436..c2bd642ac 100644
--- a/man3/aio_error.3
+++ b/man3/aio_error.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH aio_error 3 2022-12-15 "Linux man-pages 6.02"
+.TH aio_error 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
aio_error \- get error status of asynchronous I/O operation
.SH LIBRARY
diff --git a/man3/aio_fsync.3 b/man3/aio_fsync.3
index 369425a34..2c5e1d95f 100644
--- a/man3/aio_fsync.3
+++ b/man3/aio_fsync.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH aio_fsync 3 2022-12-15 "Linux man-pages 6.02"
+.TH aio_fsync 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
aio_fsync \- asynchronous file synchronization
.SH LIBRARY
diff --git a/man3/aio_init.3 b/man3/aio_init.3
index 09b5de7bd..1d4afa837 100644
--- a/man3/aio_init.3
+++ b/man3/aio_init.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH aio_init 3 2022-10-30 "Linux man-pages 6.02"
+.TH aio_init 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
aio_init \- asynchronous I/O initialization
.SH LIBRARY
diff --git a/man3/aio_read.3 b/man3/aio_read.3
index f4b8c0ed7..e1f3e1fd4 100644
--- a/man3/aio_read.3
+++ b/man3/aio_read.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH aio_read 3 2022-12-15 "Linux man-pages 6.02"
+.TH aio_read 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
aio_read \- asynchronous read
.SH LIBRARY
@@ -85,7 +85,7 @@ be reported via
.BR aio_return (3)
(returns status \-1) and
.BR aio_error (3)
-(error status\(emwhatever one would have gotten in
+(error status\[em]whatever one would have gotten in
.IR errno ,
such as
.BR EBADF ).
diff --git a/man3/aio_return.3 b/man3/aio_return.3
index 1332db132..6f9d7863d 100644
--- a/man3/aio_return.3
+++ b/man3/aio_return.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH aio_return 3 2022-12-15 "Linux man-pages 6.02"
+.TH aio_return 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
aio_return \- get return status of asynchronous I/O operation
.SH LIBRARY
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
index e2e4ce105..f3e9b0924 100644
--- a/man3/aio_suspend.3
+++ b/man3/aio_suspend.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH aio_suspend 3 2022-12-15 "Linux man-pages 6.02"
+.TH aio_suspend 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
aio_suspend \- wait for asynchronous I/O operation or timeout
.SH LIBRARY
@@ -22,13 +22,13 @@ Real-time library
The
.BR aio_suspend ()
function suspends the calling thread until one of the following occurs:
-.IP \(bu 3
+.IP \[bu] 3
One or more of the asynchronous I/O requests in the list
.I aiocb_list
has completed.
-.IP \(bu
+.IP \[bu]
A signal is delivered.
-.IP \(bu
+.IP \[bu]
.I timeout
is not NULL and the specified time interval has passed.
(For details of the
diff --git a/man3/aio_write.3 b/man3/aio_write.3
index 5ba2aee6b..3200d5a7e 100644
--- a/man3/aio_write.3
+++ b/man3/aio_write.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH aio_write 3 2022-12-15 "Linux man-pages 6.02"
+.TH aio_write 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
aio_write \- asynchronous write
.SH LIBRARY
@@ -92,7 +92,7 @@ be reported via
.BR aio_return (3)
(returns status \-1) and
.BR aio_error (3)
-(error status\(emwhatever one would have gotten in
+(error status\[em]whatever one would have gotten in
.IR errno ,
such as
.BR EBADF ).
diff --git a/man3/alloca.3 b/man3/alloca.3
index 63e6c7599..3c219c2cc 100644
--- a/man3/alloca.3
+++ b/man3/alloca.3
@@ -13,7 +13,7 @@
.\" Various rewrites and additions (notes on longjmp() and SIGSEGV).
.\" Weaken warning against use of alloca() (as per Debian bug 461100).
.\"
-.TH alloca 3 2022-12-15 "Linux man-pages 6.02"
+.TH alloca 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
alloca \- allocate memory that is automatically freed
.SH LIBRARY
diff --git a/man3/arc4random.3 b/man3/arc4random.3
new file mode 100644
index 000000000..0ffe9355e
--- /dev/null
+++ b/man3/arc4random.3
@@ -0,0 +1,104 @@
+.\" Copyright (C) 2023 Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH arc4random 3 2023-01-05 "Linux man-pages 6.03"
+.SH NAME
+arc4random, arc4random_uniform, arc4random_buf
+\- cryptographically-secure pseudorandom number generator
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " -lc )
+.SH SYNOPSIS
+.nf
+.B #include <stdlib.h>
+.PP
+.B uint32_t arc4random(void);
+.BI "uint32_t arc4random_uniform(uint32_t " upper_bound );
+.BI "void arc4random_buf(void " buf [. n "], size_t " n );
+.fi
+.SH DESCRIPTION
+These functions give cryptographically-secure pseudorandom numbers.
+.PP
+.BR arc4random ()
+returns a uniformly-distributed value.
+.PP
+.BR arc4random_uniform ()
+returns a uniformly-distributed value less than
+.I upper_bound
+(see BUGS).
+.PP
+.BR arc4random_buf ()
+fills the memory pointed to by
+.IR buf ,
+with
+.I n
+bytes of pseudorandom data.
+.PP
+The
+.BR rand (3)
+and
+.BR drand48 (3)
+families of functions should only be used where
+the quality of the pseudorandom numbers is not a concern
+.I and
+there's a need for repeatability of the results.
+Unless you meet both of those conditions,
+use the
+.BR arc4random ()
+functions.
+.SH RETURN VALUE
+.BR arc4random ()
+returns a pseudorandom number.
+.PP
+.BR arc4random_uniform ()
+returns a pseudorandom number less than
+.I upper_bound
+for valid input, or
+.B 0
+when
+.I upper_bound
+is invalid.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.ad l
+.nh
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR arc4random (),
+.BR arc4random_uniform (),
+.BR arc4random_buf ()
+T} Thread safety MT-Safe
+.TE
+.hy
+.ad
+.sp 1
+.SH STANDARDS
+These nonstandard functions are present on several Unix systems.
+.SH BUGS
+An
+.I upper_bound
+of
+.B 0
+doesn't make sense in a call to
+.BR arc4random_uniform ().
+Such a call will fail, and return
+.BR 0 .
+Be careful,
+since that value is
+.I not
+less than
+.IR upper_bound .
+In some cases,
+such as accessing an array,
+using that value could result in Undefined Behavior.
+.SH SEE ALSO
+.BR getrandom (3),
+.BR rand (3),
+.BR drand48 (3),
+.BR random (7)
diff --git a/man3/arc4random_buf.3 b/man3/arc4random_buf.3
new file mode 100644
index 000000000..74a34ce1a
--- /dev/null
+++ b/man3/arc4random_buf.3
@@ -0,0 +1 @@
+.so man3/arc4random.3
diff --git a/man3/arc4random_uniform.3 b/man3/arc4random_uniform.3
new file mode 100644
index 000000000..74a34ce1a
--- /dev/null
+++ b/man3/arc4random_uniform.3
@@ -0,0 +1 @@
+.so man3/arc4random.3
diff --git a/man3/argz_add.3 b/man3/argz_add.3
index 11abbabab..cf401af5a 100644
--- a/man3/argz_add.3
+++ b/man3/argz_add.3
@@ -6,7 +6,7 @@
.\" based on the description in glibc source and infopages
.\"
.\" Corrections and additions, aeb
-.TH argz_add 3 2022-12-15 "Linux man-pages 6.02"
+.TH argz_add 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
argz_add, argz_add_sep, argz_append, argz_count, argz_create,
argz_create_sep, argz_delete, argz_extract, argz_insert,
@@ -60,7 +60,7 @@ These functions are glibc-specific.
.PP
An argz vector is a pointer to a character buffer together with a length.
The intended interpretation of the character buffer is an array
-of strings, where the strings are separated by null bytes (\(aq\e0\(aq).
+of strings, where the strings are separated by null bytes (\[aq]\e0\[aq]).
If the length is nonzero, the last byte of the buffer must be a null byte.
.PP
These functions are for handling argz vectors.
@@ -88,7 +88,7 @@ is similar, but splits the string
into substrings separated by the delimiter
.IR delim .
For example, one might use this on a UNIX search path with
-delimiter \(aq:\(aq.
+delimiter \[aq]:\[aq].
.PP
.BR argz_append ()
appends the argz vector
@@ -106,7 +106,7 @@ will be increased by
.PP
.BR argz_count ()
counts the number of strings, that is,
-the number of null bytes (\(aq\e0\(aq), in
+the number of null bytes (\[aq]\e0\[aq]), in
.RI ( argz ,\ argz_len ).
.PP
.BR argz_create ()
@@ -194,7 +194,7 @@ will be incremented by the number of replacements.
is the opposite of
.BR argz_create_sep ().
It transforms the argz vector into a normal string by replacing
-all null bytes (\(aq\e0\(aq) except the last by
+all null bytes (\[aq]\e0\[aq]) except the last by
.IR sep .
.SH RETURN VALUE
All argz functions that do memory allocation have a return type of
diff --git a/man3/asin.3 b/man3/asin.3
index f15199738..8d2f039a5 100644
--- a/man3/asin.3
+++ b/man3/asin.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-25 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH asin 3 2022-12-15 "Linux man-pages 6.02"
+.TH asin 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
asin, asinf, asinl \- arc sine function
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions calculate the principal value of the arc sine of
@@ -107,7 +107,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR acos (3),
.BR atan (3),
diff --git a/man3/asinh.3 b/man3/asinh.3
index 90bda57fc..8f46fb4ca 100644
--- a/man3/asinh.3
+++ b/man3/asinh.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH asinh 3 2022-12-15 "Linux man-pages 6.02"
+.TH asinh 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
asinh, asinhf, asinhl \- inverse hyperbolic sine function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR asinhf (),
@@ -47,7 +47,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions calculate the inverse hyperbolic sine of
diff --git a/man3/asprintf.3 b/man3/asprintf.3
index 3229d4e39..a03328114 100644
--- a/man3/asprintf.3
+++ b/man3/asprintf.3
@@ -5,7 +5,7 @@
.\"
.\" Text fragments inspired by Martin Schulze <joey@infodrom.org>.
.\"
-.TH asprintf 3 2022-12-15 "Linux man-pages 6.02"
+.TH asprintf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
asprintf, vasprintf \- print to allocated string
.SH LIBRARY
@@ -30,7 +30,7 @@ are analogs of
and
.BR vsprintf (3),
except that they allocate a string large enough to hold the output
-including the terminating null byte (\(aq\e0\(aq),
+including the terminating null byte (\[aq]\e0\[aq]),
and return a pointer to it via the first argument.
This pointer should be passed to
.BR free (3)
diff --git a/man3/assert.3 b/man3/assert.3
index 9532cff28..24cdfe749 100644
--- a/man3/assert.3
+++ b/man3/assert.3
@@ -6,7 +6,7 @@
.\" Modified Sat Jul 24 21:42:42 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Tue Oct 22 23:44:11 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Thu Jun 2 23:44:11 2016 by Nikos Mavrogiannopoulos <nmav@redhat.com>
-.TH assert 3 2022-12-15 "Linux man-pages 6.02"
+.TH assert 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
assert \- abort the program if assertion is false
.SH LIBRARY
@@ -37,7 +37,7 @@ something like:
.PP
.in +4n
.EX
-prog: some_file.c:16: some_func: Assertion \`val == 0\(aq failed.
+prog: some_file.c:16: some_func: Assertion \`val == 0\[aq] failed.
.EE
.in
.PP
@@ -74,14 +74,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-In C89,
-.I expression
-is required to be of type
-.I int
-and undefined behavior results if it is not, but in C99
-it may have any scalar type.
-.\" See Defect Report 107 for more details.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH BUGS
.BR assert ()
is implemented as a macro; if the expression tested has side-effects,
diff --git a/man3/assert_perror.3 b/man3/assert_perror.3
index d5d7dfbf4..df35b9ffb 100644
--- a/man3/assert_perror.3
+++ b/man3/assert_perror.3
@@ -6,7 +6,7 @@
.\" This replaces an earlier man page written by Walter Harms
.\" <walter.harms@informatik.uni-oldenburg.de>.
.\"
-.TH assert_perror 3 2022-12-15 "Linux man-pages 6.02"
+.TH assert_perror 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
assert_perror \- test errnum and abort
.SH LIBRARY
diff --git a/man3/atan.3 b/man3/atan.3
index b33ec2eba..2da15cbde 100644
--- a/man3/atan.3
+++ b/man3/atan.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH atan 3 2022-12-15 "Linux man-pages 6.02"
+.TH atan 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
atan, atanf, atanl \- arc tangent function
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions calculate the principal value of the arc tangent of
@@ -92,7 +92,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR acos (3),
.BR asin (3),
diff --git a/man3/atan2.3 b/man3/atan2.3
index 90b0a21cf..539e911cb 100644
--- a/man3/atan2.3
+++ b/man3/atan2.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH atan2 3 2022-12-15 "Linux man-pages 6.02"
+.TH atan2 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
atan2, atan2f, atan2l \- arc tangent function of two variables
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions calculate the principal value of the arc tangent of
@@ -164,7 +164,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR acos (3),
.BR asin (3),
diff --git a/man3/atanh.3 b/man3/atanh.3
index 84efedc0f..a67718450 100644
--- a/man3/atanh.3
+++ b/man3/atanh.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH atanh 3 2022-12-15 "Linux man-pages 6.02"
+.TH atanh 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
atanh, atanhf, atanhl \- inverse hyperbolic tangent function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR atanhf (),
@@ -47,7 +47,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions calculate the inverse hyperbolic tangent of
diff --git a/man3/atexit.3 b/man3/atexit.3
index 88efb8279..8122ddc32 100644
--- a/man3/atexit.3
+++ b/man3/atexit.3
@@ -11,7 +11,7 @@
.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu)
.\" Modified 2003-10-25, Walter Harms
.\"
-.TH atexit 3 2022-12-15 "Linux man-pages 6.02"
+.TH atexit 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
atexit \- register a function to be called at normal process termination
.SH LIBRARY
@@ -76,7 +76,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
Functions registered using
.BR atexit ()
@@ -103,7 +103,7 @@ is undefined.
On some systems (but not Linux), this can result in an infinite recursion;
.\" This can happen on OpenBSD 4.2 for example, and is documented
.\" as occurring on FreeBSD as well.
-.\" Glibc does "the Right Thing" -- invocation of the remaining
+.\" glibc does "the Right Thing" -- invocation of the remaining
.\" exit handlers carries on as normal.
portable programs should not invoke
.BR exit (3)
diff --git a/man3/atof.3 b/man3/atof.3
index 02ef3bbe8..035fed0b6 100644
--- a/man3/atof.3
+++ b/man3/atof.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Mon Mar 29 22:39:24 1993, David Metcalfe
.\" Modified Sat Jul 24 21:39:22 1993, Rik Faith (faith@cs.unc.edu)
-.TH atof 3 2022-12-15 "Linux man-pages 6.02"
+.TH atof 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
atof \- convert a string to a double
.SH LIBRARY
@@ -58,7 +58,7 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH SEE ALSO
.BR atoi (3),
.BR atol (3),
diff --git a/man3/atoi.3 b/man3/atoi.3
index aefd03ce0..27ed0ca28 100644
--- a/man3/atoi.3
+++ b/man3/atoi.3
@@ -11,7 +11,7 @@
.\" Modified Sat Jul 24 21:38:42 1993, Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Dec 17 18:35:06 2000, Joseph S. Myers
.\"
-.TH atoi 3 2022-12-15 "Linux man-pages 6.02"
+.TH atoi 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
atoi, atol, atoll \- convert a string to an integer
.SH LIBRARY
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
.BR atoll ():
.nf
_ISOC99_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
@@ -85,12 +85,6 @@ T} Thread safety MT-Safe locale
.sp 1
.SH STANDARDS
POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
-C89 and
-POSIX.1-1996 include the functions
-.BR atoi ()
-and
-.BR atol ()
-only.
.\" .SH NOTES
.\" Linux libc provided
.\" .BR atoq ()
diff --git a/man3/backtrace.3 b/man3/backtrace.3
index 46dca842c..bff6e0beb 100644
--- a/man3/backtrace.3
+++ b/man3/backtrace.3
@@ -25,7 +25,7 @@
.\"
.\" References:
.\" glibc manual and source
-.TH BACKTRACE 3 2022-12-15 "Linux man-pages 6.02"
+.TH backtrace 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
backtrace, backtrace_symbols, backtrace_symbols_fd \- support
for application self-debugging
@@ -161,17 +161,17 @@ These functions are GNU extensions.
These functions make some assumptions about how a function's return
address is stored on the stack.
Note the following:
-.IP \(bu 3
+.IP \[bu] 3
Omission of the frame pointers (as
implied by any of
.BR gcc (1)'s
nonzero optimization levels) may cause these assumptions to be
violated.
-.IP \(bu
+.IP \[bu]
Inlined functions do not have stack frames.
-.IP \(bu
+.IP \[bu]
Tail-call optimization causes one stack frame to replace another.
-.IP \(bu
+.IP \[bu]
.BR backtrace ()
and
.BR backtrace_symbols_fd ()
@@ -253,7 +253,7 @@ myfunc3(void)
free(strings);
}
-static void /* "static" means don\(aqt export the symbol... */
+static void /* "static" means don\[aq]t export the symbol... */
myfunc2(void)
{
myfunc3();
diff --git a/man3/basename.3 b/man3/basename.3
index babc5f02a..8c1ce7fad 100644
--- a/man3/basename.3
+++ b/man3/basename.3
@@ -5,7 +5,7 @@
.\"
.\" Created, 14 Dec 2000 by Michael Kerrisk
.\"
-.TH basename 3 2022-12-15 "Linux man-pages 6.02"
+.TH basename 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
basename, dirname \- parse pathname components
.SH LIBRARY
@@ -31,10 +31,10 @@ break a null-terminated pathname string into directory
and filename components.
In the usual case,
.BR dirname ()
-returns the string up to, but not including, the final \(aq/\(aq, and
+returns the string up to, but not including, the final \[aq]/\[aq], and
.BR basename ()
-returns the component following the final \(aq/\(aq.
-Trailing \(aq/\(aq characters are not counted as part of the pathname.
+returns the component following the final \[aq]/\[aq].
+Trailing \[aq]/\[aq] characters are not counted as part of the pathname.
.PP
If
.I path
@@ -164,7 +164,7 @@ such as "/usr/".
.PP
Before glibc 2.2.1, the glibc version of
.BR dirname ()
-did not correctly handle pathnames with trailing \(aq/\(aq characters,
+did not correctly handle pathnames with trailing \[aq]/\[aq] characters,
and generated a segfault if given a NULL argument.
.SH EXAMPLES
The following code snippet demonstrates the use of
diff --git a/man3/bcmp.3 b/man3/bcmp.3
index 02f30233c..77f44479e 100644
--- a/man3/bcmp.3
+++ b/man3/bcmp.3
@@ -1,15 +1,8 @@
-'\" t
-.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\" Copyright 2022 Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.\" References consulted:
-.\" Linux libc source code
-.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
-.\" 386BSD man pages
-.\" Modified Sat Jul 24 21:36:50 1993 by Rik Faith <faith@cs.unc.edu>
-.\" Modified Tue Oct 22 23:47:36 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH bcmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH bcmp 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
bcmp \- compare byte sequences
.SH LIBRARY
@@ -23,55 +16,14 @@ Standard C library
size_t " n );
.fi
.SH DESCRIPTION
-The
.BR bcmp ()
-function compares the two byte sequences
-.I s1
-and
-.I s2
-of length
-.I n
-each.
-If they are equal, and in particular if
-.I n
-is zero,
-.BR bcmp ()
-returns 0.
-Otherwise, it returns a nonzero result.
-.SH RETURN VALUE
-The
-.BR bcmp ()
-function returns 0 if the byte sequences are equal,
-otherwise a nonzero result is returned.
-.SH ATTRIBUTES
-For an explanation of the terms used in this section, see
-.BR attributes (7).
-.ad l
-.nh
-.TS
-allbox;
-lbx lb lb
-l l l.
-Interface Attribute Value
-T{
-.BR bcmp ()
-T} Thread safety MT-Safe
-.TE
-.hy
-.ad
-.sp 1
+is identical to
+.BR memcmp (3);
+use it instead.
.SH STANDARDS
4.3BSD.
-This function is deprecated (marked as LEGACY in POSIX.1-2001): use
-.BR memcmp (3)
-in new programs.
+This function is deprecated (marked as LEGACY in POSIX.1-2001);
POSIX.1-2008 removes the specification of
.BR bcmp ().
.SH SEE ALSO
-.BR bstring (3),
-.BR memcmp (3),
-.BR strcasecmp (3),
-.BR strcmp (3),
-.BR strcoll (3),
-.BR strncasecmp (3),
-.BR strncmp (3)
+.BR memcmp (3)
diff --git a/man3/bcopy.3 b/man3/bcopy.3
index 23bc5cf20..e878b0037 100644
--- a/man3/bcopy.3
+++ b/man3/bcopy.3
@@ -11,7 +11,7 @@
.\" Modified Sun Feb 26 14:52:00 1995 by Rik Faith <faith@cs.unc.edu>
.\" Modified Tue Oct 22 23:48:10 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" "
-.TH bcopy 3 2022-12-15 "Linux man-pages 6.02"
+.TH bcopy 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
bcopy \- copy byte sequence
.SH LIBRARY
diff --git a/man3/bindresvport.3 b/man3/bindresvport.3
index 4fba757f3..22de0a477 100644
--- a/man3/bindresvport.3
+++ b/man3/bindresvport.3
@@ -8,7 +8,7 @@
.\" 2007-05-31, mtk: Rewrite and substantial additional text.
.\" 2008-12-03, mtk: Rewrote some pieces and fixed some errors
.\"
-.TH bindresvport 3 2022-12-15 "Linux man-pages 6.02"
+.TH bindresvport 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
bindresvport \- bind a socket to a privileged IP port
.SH LIBRARY
@@ -28,7 +28,7 @@ file descriptor
.I sockfd
to a privileged anonymous IP port,
that is, a port number arbitrarily selected from the range 512 to 1023.
-.\" Glibc actually starts searching with a port # in the range 600 to 1023
+.\" glibc actually starts searching with a port # in the range 600 to 1023
.PP
If the
.BR bind (2)
diff --git a/man3/bsd_signal.3 b/man3/bsd_signal.3
index 36e87b606..20e58cfed 100644
--- a/man3/bsd_signal.3
+++ b/man3/bsd_signal.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH bsd_signal 3 2022-12-15 "Linux man-pages 6.02"
+.TH bsd_signal 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
bsd_signal \- signal handling with BSD semantics
.SH LIBRARY
@@ -29,7 +29,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
&& ! (_POSIX_C_SOURCE >= 200809L)
- Glibc 2.25 and earlier:
+ glibc 2.25 and earlier:
_XOPEN_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/bsearch.3 b/man3/bsearch.3
index 9b89cb6f9..a6ed9c55e 100644
--- a/man3/bsearch.3
+++ b/man3/bsearch.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Mon Mar 29 22:41:16 1993, David Metcalfe
.\" Modified Sat Jul 24 21:35:16 1993, Rik Faith (faith@cs.unc.edu)
-.TH bsearch 3 2022-12-15 "Linux man-pages 6.02"
+.TH bsearch 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
bsearch \- binary search of a sorted array
.SH LIBRARY
@@ -78,7 +78,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH EXAMPLES
The example below first sorts an array of structures using
.BR qsort (3),
@@ -125,7 +125,7 @@ main(int argc, char *argv[])
res = bsearch(&key, months, ARRAY_SIZE(months),
sizeof(months[0]), compmi);
if (res == NULL)
- printf("\(aq%s\(aq: unknown month\en", argv[i]);
+ printf("\[aq]%s\[aq]: unknown month\en", argv[i]);
else
printf("%s: month #%d\en", res\->name, res\->nr);
}
diff --git a/man3/bstring.3 b/man3/bstring.3
index 7e4a359e7..e9d2f30db 100644
--- a/man3/bstring.3
+++ b/man3/bstring.3
@@ -9,7 +9,7 @@
.\" Modified 1993-04-12, David Metcalfe
.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu)
.\" Modified 2002-01-20, Walter Harms
-.TH BSTRING 3 2022-11-10 "Linux man-pages 6.02"
+.TH bstring 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
bcmp, bcopy, bzero, memccpy, memchr, memcmp, memcpy, memfrob, memmem,
memmove, memset \- byte string operations
@@ -51,16 +51,14 @@ See the individual man pages
for descriptions of each function.
.SH NOTES
The functions
-.BR bcmp (),
-.BR bcopy (),
+.BR bcmp ()
and
-.BR bzero ()
+.BR bcopy ()
are obsolete.
Use
-.BR memcmp (),
-.BR memcpy (),
+.BR memcmp ()
and
-.BR memset ()
+.BR memmove ()
instead.
.\" The old functions are not even available on some non-GNU/Linux systems.
.SH SEE ALSO
diff --git a/man3/bswap.3 b/man3/bswap.3
index 76611552b..a1851507a 100644
--- a/man3/bswap.3
+++ b/man3/bswap.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH BSWAP 3 2022-10-09 "Linux man-pages 6.02"
+.TH bswap 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
bswap_16, bswap_32, bswap_64 \- reverse order of bytes
.SH LIBRARY
diff --git a/man3/btowc.3 b/man3/btowc.3
index 2243d16cd..694178eee 100644
--- a/man3/btowc.3
+++ b/man3/btowc.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH btowc 3 2022-12-15 "Linux man-pages 6.02"
+.TH btowc 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
btowc \- convert single byte to wide character
.SH LIBRARY
diff --git a/man3/btree.3 b/man3/btree.3
index 902075e4e..43153d991 100644
--- a/man3/btree.3
+++ b/man3/btree.3
@@ -5,7 +5,7 @@
.\"
.\" @(#)btree.3 8.4 (Berkeley) 8/18/94
.\"
-.TH btree 3 2022-12-04 "Linux man-pages 6.02"
+.TH btree 3 2022-12-04 "Linux man-pages 6.03"
.\".UC 7
.SH NAME
btree \- btree database access method
diff --git a/man3/byteorder.3 b/man3/byteorder.3
index 582ad4c4b..4318b54c2 100644
--- a/man3/byteorder.3
+++ b/man3/byteorder.3
@@ -10,7 +10,7 @@
.\" Modified Sat Jul 24 21:29:05 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Thu Jul 26 14:06:20 2001 by Andries Brouwer (aeb@cwi.nl)
.\"
-.TH BYTEORDER 3 2022-12-15 "Linux man-pages 6.02"
+.TH BYTEORDER 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
htonl, htons, ntohl, ntohs \- convert values between host and network
byte order
diff --git a/man3/bzero.3 b/man3/bzero.3
index 1471db5f4..35232e140 100644
--- a/man3/bzero.3
+++ b/man3/bzero.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH bzero 3 2022-12-15 "Linux man-pages 6.02"
+.TH bzero 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
bzero, explicit_bzero \- zero a byte string
.SH LIBRARY
@@ -26,7 +26,7 @@ function erases the data in the
.I n
bytes of the memory starting at the location pointed to by
.IR s ,
-by writing zeros (bytes containing \(aq\e0\(aq) to that area.
+by writing zeros (bytes containing \[aq]\e0\[aq]) to that area.
.PP
The
.BR explicit_bzero ()
@@ -102,7 +102,7 @@ are never optimized away by the compiler.
The
.BR explicit_bzero ()
function does not solve all problems associated with erasing sensitive data:
-.IP \(bu 3
+.IP \[bu] 3
The
.BR explicit_bzero ()
function does
@@ -115,7 +115,7 @@ a register and in "scratch" stack areas.
The
.BR explicit_bzero ()
function is not aware of these copies, and can't erase them.
-.IP \(bu
+.IP \[bu]
In some circumstances,
.BR explicit_bzero ()
can
diff --git a/man3/cabs.3 b/man3/cabs.3
index ba7bf916b..fa20b6453 100644
--- a/man3/cabs.3
+++ b/man3/cabs.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cabs 3 2022-12-15 "Linux man-pages 6.02"
+.TH cabs 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cabs, cabsf, cabsl \- absolute value of a complex number
.SH LIBRARY
diff --git a/man3/cacos.3 b/man3/cacos.3
index 9d0bd6b33..0e89b9f64 100644
--- a/man3/cacos.3
+++ b/man3/cacos.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cacos 3 2022-12-15 "Linux man-pages 6.02"
+.TH cacos 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cacos, cacosf, cacosl \- complex arc cosine
.SH LIBRARY
diff --git a/man3/cacosh.3 b/man3/cacosh.3
index 8627eb056..4b21d8680 100644
--- a/man3/cacosh.3
+++ b/man3/cacosh.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cacosh 3 2022-12-15 "Linux man-pages 6.02"
+.TH cacosh 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cacosh, cacoshf, cacoshl \- complex arc hyperbolic cosine
.SH LIBRARY
diff --git a/man3/canonicalize_file_name.3 b/man3/canonicalize_file_name.3
index bc2bfb883..64dd2e4c3 100644
--- a/man3/canonicalize_file_name.3
+++ b/man3/canonicalize_file_name.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH canonicalize_file_name 3 2022-12-15 "Linux man-pages 6.02"
+.TH canonicalize_file_name 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
canonicalize_file_name \- return the canonicalized absolute pathname
.SH LIBRARY
diff --git a/man3/carg.3 b/man3/carg.3
index 8b61478a7..736ccaa57 100644
--- a/man3/carg.3
+++ b/man3/carg.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH carg 3 2022-12-15 "Linux man-pages 6.02"
+.TH carg 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
carg, cargf, cargl \- calculate the complex argument
.SH LIBRARY
diff --git a/man3/casin.3 b/man3/casin.3
index fef6e2f26..c9917c0f5 100644
--- a/man3/casin.3
+++ b/man3/casin.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH casin 3 2022-12-15 "Linux man-pages 6.02"
+.TH casin 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
casin, casinf, casinl \- complex arc sine
.SH LIBRARY
diff --git a/man3/casinh.3 b/man3/casinh.3
index 699be1a02..f99610e53 100644
--- a/man3/casinh.3
+++ b/man3/casinh.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH casinh 3 2022-12-15 "Linux man-pages 6.02"
+.TH casinh 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
casinh, casinhf, casinhl \- complex arc sine hyperbolic
.SH LIBRARY
diff --git a/man3/catan.3 b/man3/catan.3
index 0d6b7b745..98b4871f1 100644
--- a/man3/catan.3
+++ b/man3/catan.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH catan 3 2022-12-15 "Linux man-pages 6.02"
+.TH catan 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
catan, catanf, catanl \- complex arc tangents
.SH LIBRARY
diff --git a/man3/catanh.3 b/man3/catanh.3
index de5955851..1dc83d324 100644
--- a/man3/catanh.3
+++ b/man3/catanh.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH catanh 3 2022-12-15 "Linux man-pages 6.02"
+.TH catanh 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
catanh, catanhf, catanhl \- complex arc tangents hyperbolic
.SH LIBRARY
diff --git a/man3/catgets.3 b/man3/catgets.3
index c43164849..a8f718f5c 100644
--- a/man3/catgets.3
+++ b/man3/catgets.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Updated, aeb, 980809
-.TH CATGETS 3 2022-12-15 "Linux man-pages 6.02"
+.TH catgets 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
catgets \- get message from a message catalog
.SH LIBRARY
@@ -39,7 +39,7 @@ The
message-text is contained in an internal buffer area and should be copied by
the application if it is to be saved or modified.
The return string is
-always terminated with a null byte (\(aq\e0\(aq).
+always terminated with a null byte (\[aq]\e0\[aq]).
.SH RETURN VALUE
On success,
.BR catgets ()
diff --git a/man3/catopen.3 b/man3/catopen.3
index d110808a3..9df1b888f 100644
--- a/man3/catopen.3
+++ b/man3/catopen.3
@@ -6,7 +6,7 @@
.\" Modified Thu Dec 13 22:51:19 2001 by Martin Schulze <joey@infodrom.org>
.\" Modified 2001-12-14 aeb
.\"
-.TH catopen 3 2022-12-15 "Linux man-pages 6.02"
+.TH catopen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
catopen, catclose \- open/close a message catalog
.SH LIBRARY
@@ -37,7 +37,7 @@ The argument
specifies the name of the message catalog to be opened.
If
.I name
-specifies an absolute path (i.e., contains a \(aq/\(aq),
+specifies an absolute path (i.e., contains a \[aq]/\[aq]),
then
.I name
specifies a pathname for the message catalog.
diff --git a/man3/cbrt.3 b/man3/cbrt.3
index 9200f520c..68e582064 100644
--- a/man3/cbrt.3
+++ b/man3/cbrt.3
@@ -8,7 +8,7 @@
.\" Modified 2002-07-27 Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH cbrt 3 2022-12-15 "Linux man-pages 6.02"
+.TH cbrt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cbrt, cbrtf, cbrtl \- cube root function
.SH LIBRARY
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR cbrtf (),
@@ -42,7 +42,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the (real) cube root of
diff --git a/man3/ccos.3 b/man3/ccos.3
index 71a3b0fa2..e2695e47a 100644
--- a/man3/ccos.3
+++ b/man3/ccos.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH ccos 3 2022-12-15 "Linux man-pages 6.02"
+.TH ccos 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ccos, ccosf, ccosl \- complex cosine function
.SH LIBRARY
diff --git a/man3/ccosh.3 b/man3/ccosh.3
index 74d585701..43a706004 100644
--- a/man3/ccosh.3
+++ b/man3/ccosh.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH ccosh 3 2022-12-04 "Linux man-pages 6.02"
+.TH ccosh 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
ccosh, ccoshf, ccoshl \- complex hyperbolic cosine
.SH LIBRARY
diff --git a/man3/ceil.3 b/man3/ceil.3
index da3b53c10..65628e426 100644
--- a/man3/ceil.3
+++ b/man3/ceil.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH ceil 3 2022-12-15 "Linux man-pages 6.02"
+.TH ceil 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ceil, ceilf, ceill \- ceiling function: smallest integral value not
less than argument
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the smallest integral value that is not less than
@@ -79,7 +79,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH NOTES
SUSv2 and POSIX.1-2001 contain text about overflow (which might set
.I errno
diff --git a/man3/cexp.3 b/man3/cexp.3
index f20175d25..2e374a374 100644
--- a/man3/cexp.3
+++ b/man3/cexp.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cexp 3 2022-12-15 "Linux man-pages 6.02"
+.TH cexp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cexp, cexpf, cexpl \- complex exponential function
.SH LIBRARY
diff --git a/man3/cexp2.3 b/man3/cexp2.3
index e729366dc..43b9f2970 100644
--- a/man3/cexp2.3
+++ b/man3/cexp2.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cexp2 3 2022-12-04 "Linux man-pages 6.02"
+.TH cexp2 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
cexp2, cexp2f, cexp2l \- base-2 exponent of a complex number
.SH LIBRARY
diff --git a/man3/cfree.3 b/man3/cfree.3
index ae0970b9f..f2a5cb6a1 100644
--- a/man3/cfree.3
+++ b/man3/cfree.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH CFREE 3 2022-12-15 "Linux man-pages 6.02"
+.TH cfree 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cfree \- free allocated memory
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/cimag.3 b/man3/cimag.3
index 1145e5293..8b97af19b 100644
--- a/man3/cimag.3
+++ b/man3/cimag.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cimag 3 2022-12-15 "Linux man-pages 6.02"
+.TH cimag 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cimag, cimagf, cimagl \- get imaginary part of a complex number
.SH LIBRARY
diff --git a/man3/circleq.3 b/man3/circleq.3
index cf5465ad2..fb138190c 100644
--- a/man3/circleq.3
+++ b/man3/circleq.3
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
.\"
-.TH CIRCLEQ 3 2022-10-30 "Linux man-pages 6.02"
+.TH CIRCLEQ 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
CIRCLEQ_EMPTY,
CIRCLEQ_ENTRY,
diff --git a/man3/clearenv.3 b/man3/clearenv.3
index 8aa5670af..f4375a776 100644
--- a/man3/clearenv.3
+++ b/man3/clearenv.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Additions, aeb, 2001-10-17.
-.TH clearenv 3 2022-12-15 "Linux man-pages 6.02"
+.TH clearenv 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
clearenv \- clear the environment
.SH LIBRARY
@@ -24,8 +24,8 @@ Feature Test Macro Requirements for glibc (see
.PP
.BR clearenv ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
The
@@ -44,7 +44,7 @@ The
function returns zero on success, and a nonzero
value on failure.
.\" Most versions of UNIX return -1 on error, or do not even have errors.
-.\" Glibc info and the Watcom C library document "a nonzero value".
+.\" glibc info and the Watcom C library document "a nonzero value".
.SH VERSIONS
Available since glibc 2.0.
.SH ATTRIBUTES
diff --git a/man3/clock.3 b/man3/clock.3
index 57d2de7b7..9247240b1 100644
--- a/man3/clock.3
+++ b/man3/clock.3
@@ -7,7 +7,7 @@
.\" Modified 14 Jun 2002, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added notes on differences from other UNIX systems with respect to
.\" waited-for children.
-.TH clock 3 2022-12-15 "Linux man-pages 6.02"
+.TH clock 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
clock \- determine processor time
.SH LIBRARY
@@ -49,7 +49,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
XSI requires that
.B CLOCKS_PER_SEC
equals 1000000 independent
diff --git a/man3/clock_getcpuclockid.3 b/man3/clock_getcpuclockid.3
index fbbfb5a73..ba150d1d5 100644
--- a/man3/clock_getcpuclockid.3
+++ b/man3/clock_getcpuclockid.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH clock_getcpuclockid 3 2022-12-15 "Linux man-pages 6.02"
+.TH clock_getcpuclockid 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
clock_getcpuclockid \- obtain ID of a process CPU-time clock
.SH LIBRARY
diff --git a/man3/clog.3 b/man3/clog.3
index d98e37117..35636e6a0 100644
--- a/man3/clog.3
+++ b/man3/clog.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH clog 3 2022-12-15 "Linux man-pages 6.02"
+.TH clog 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
clog, clogf, clogl \- natural logarithm of a complex number
.SH LIBRARY
diff --git a/man3/clog10.3 b/man3/clog10.3
index 9c67278fd..943ff4535 100644
--- a/man3/clog10.3
+++ b/man3/clog10.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH clog10 3 2022-12-15 "Linux man-pages 6.02"
+.TH clog10 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
clog10, clog10f, clog10l \- base-10 logarithm of a complex number
.SH LIBRARY
diff --git a/man3/clog2.3 b/man3/clog2.3
index 220099f2a..d4ca0256d 100644
--- a/man3/clog2.3
+++ b/man3/clog2.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH clog2 3 2022-12-04 "Linux man-pages 6.02"
+.TH clog2 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
clog2, clog2f, clog2l \- base-2 logarithm of a complex number
.SH LIBRARY
diff --git a/man3/closedir.3 b/man3/closedir.3
index 44a2ef8db..f5062fb5a 100644
--- a/man3/closedir.3
+++ b/man3/closedir.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Sat Jul 24 21:25:52 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl)
-.TH closedir 3 2022-12-15 "Linux man-pages 6.02"
+.TH closedir 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
closedir \- close a directory
.SH LIBRARY
diff --git a/man3/cmsg.3 b/man3/cmsg.3
index 73dcc06e1..b218baf2b 100644
--- a/man3/cmsg.3
+++ b/man3/cmsg.3
@@ -8,7 +8,7 @@
.\" %%%LICENSE_END
.\"
.\" $Id: cmsg.3,v 1.8 2000/12/20 18:10:31 ak Exp $
-.TH CMSG 3 2022-10-29 "Linux man-pages 6.02"
+.TH CMSG 3 2022-10-29 "Linux man-pages 6.03"
.SH NAME
CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR \- access ancillary data
.SH LIBRARY
diff --git a/man3/confstr.3 b/man3/confstr.3
index cf0e6d73c..00d971ae1 100644
--- a/man3/confstr.3
+++ b/man3/confstr.3
@@ -11,7 +11,7 @@
.\" These should all be added to this page.
.\" See also the POSIX.1-2001 specification of confstr()
.\"
-.TH confstr 3 2022-12-15 "Linux man-pages 6.02"
+.TH confstr 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
confstr \- get configuration dependent string variables
.SH LIBRARY
@@ -66,7 +66,7 @@ copies the value of the string to
.I buf
truncated to
.I size \- 1
-bytes if necessary, with a null byte (\(aq\e0\(aq) as terminator.
+bytes if necessary, with a null byte (\[aq]\e0\[aq]) as terminator.
This can be detected by comparing the return value of
.BR confstr ()
against
diff --git a/man3/conj.3 b/man3/conj.3
index 24136867b..5b9ed7e7b 100644
--- a/man3/conj.3
+++ b/man3/conj.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH conj 3 2022-12-15 "Linux man-pages 6.02"
+.TH conj 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
conj, conjf, conjl \- calculate the complex conjugate
.SH LIBRARY
diff --git a/man3/copysign.3 b/man3/copysign.3
index 2cf449010..89d88e4d6 100644
--- a/man3/copysign.3
+++ b/man3/copysign.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2002-08-10 by Walter Harms (walter.harms@informatik.uni-oldenburg.de)
-.TH copysign 3 2022-12-15 "Linux man-pages 6.02"
+.TH copysign 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
copysign, copysignf, copysignl \- copy sign of a number
.SH LIBRARY
@@ -35,7 +35,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return a value whose absolute value matches that of
diff --git a/man3/cos.3 b/man3/cos.3
index 907ace9d6..d0e2f5346 100644
--- a/man3/cos.3
+++ b/man3/cos.3
@@ -12,7 +12,7 @@
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
-.TH cos 3 2022-12-15 "Linux man-pages 6.02"
+.TH cos 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cos, cosf, cosl \- cosine function
.SH LIBRARY
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the cosine of
diff --git a/man3/cosh.3 b/man3/cosh.3
index ddf5933d6..a75e0b821 100644
--- a/man3/cosh.3
+++ b/man3/cosh.3
@@ -14,7 +14,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH cosh 3 2022-12-15 "Linux man-pages 6.02"
+.TH cosh 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cosh, coshf, coshl \- hyperbolic cosine function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the hyperbolic cosine of
diff --git a/man3/cpow.3 b/man3/cpow.3
index f0273028b..f0eba03db 100644
--- a/man3/cpow.3
+++ b/man3/cpow.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cpow 3 2022-12-15 "Linux man-pages 6.02"
+.TH cpow 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cpow, cpowf, cpowl \- complex power function
.SH LIBRARY
diff --git a/man3/cproj.3 b/man3/cproj.3
index 12cd67202..35d8608ee 100644
--- a/man3/cproj.3
+++ b/man3/cproj.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH cproj 3 2022-12-15 "Linux man-pages 6.02"
+.TH cproj 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cproj, cprojf, cprojl \- project into Riemann Sphere
.SH LIBRARY
diff --git a/man3/creal.3 b/man3/creal.3
index 5bfaa0d2e..7a5ab0afe 100644
--- a/man3/creal.3
+++ b/man3/creal.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH creal 3 2022-12-15 "Linux man-pages 6.02"
+.TH creal 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
creal, crealf, creall \- get real part of a complex number
.SH LIBRARY
diff --git a/man3/crypt.3 b/man3/crypt.3
index 0186274d0..2675cb9ad 100644
--- a/man3/crypt.3
+++ b/man3/crypt.3
@@ -15,7 +15,7 @@
.\" added _XOPEN_SOURCE, aeb, 970705
.\" added GNU MD5 stuff, aeb, 011223
.\"
-.TH crypt 3 2022-12-15 "Linux man-pages 6.02"
+.TH crypt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
crypt, crypt_r \- password and data encryption
.SH LIBRARY
@@ -42,7 +42,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.28:
_DEFAULT_SOURCE
- Glibc 2.27 and earlier:
+ glibc 2.27 and earlier:
_XOPEN_SOURCE
.fi
.PP
diff --git a/man3/csin.3 b/man3/csin.3
index bd7e04681..615b60ab4 100644
--- a/man3/csin.3
+++ b/man3/csin.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH csin 3 2022-12-15 "Linux man-pages 6.02"
+.TH csin 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
csin, csinf, csinl \- complex sine function
.SH LIBRARY
diff --git a/man3/csinh.3 b/man3/csinh.3
index e9ca0c01c..65b8cccad 100644
--- a/man3/csinh.3
+++ b/man3/csinh.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH csinh 3 2022-12-15 "Linux man-pages 6.02"
+.TH csinh 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
csinh, csinhf, csinhl \- complex hyperbolic sine
.SH LIBRARY
diff --git a/man3/csqrt.3 b/man3/csqrt.3
index 2fc25e9df..95ea62b4a 100644
--- a/man3/csqrt.3
+++ b/man3/csqrt.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH csqrt 3 2022-12-15 "Linux man-pages 6.02"
+.TH csqrt 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
csqrt, csqrtf, csqrtl \- complex square root
.SH LIBRARY
diff --git a/man3/ctan.3 b/man3/ctan.3
index 5a0f46f84..370661601 100644
--- a/man3/ctan.3
+++ b/man3/ctan.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH ctan 3 2022-12-15 "Linux man-pages 6.02"
+.TH ctan 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ctan, ctanf, ctanl \- complex tangent function
.SH LIBRARY
diff --git a/man3/ctanh.3 b/man3/ctanh.3
index c22e2e0a0..068ff8bcb 100644
--- a/man3/ctanh.3
+++ b/man3/ctanh.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH ctanh 3 2022-12-15 "Linux man-pages 6.02"
+.TH ctanh 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ctanh, ctanhf, ctanhl \- complex hyperbolic tangent
.SH LIBRARY
diff --git a/man3/ctermid.3 b/man3/ctermid.3
index 4d13abec4..c74e7022b 100644
--- a/man3/ctermid.3
+++ b/man3/ctermid.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Sat Jul 24 19:51:06 1993 by Rik Faith (faith@cs.unc.edu)
-.TH ctermid 3 2022-12-15 "Linux man-pages 6.02"
+.TH ctermid 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ctermid \- get controlling terminal name
.SH LIBRARY
diff --git a/man3/ctime.3 b/man3/ctime.3
index 798858635..487264c7f 100644
--- a/man3/ctime.3
+++ b/man3/ctime.3
@@ -13,7 +13,7 @@
.\" Modified 2001-12-13, joey, aeb
.\" Modified 2004-11-16, mtk
.\"
-.TH ctime 3 2022-12-15 "Linux man-pages 6.02"
+.TH ctime 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
asctime, ctime, gmtime, localtime, mktime, asctime_r, ctime_r, gmtime_r,
localtime_r \- transform date and time to broken-down time or ASCII
@@ -54,7 +54,7 @@ Feature Test Macro Requirements for glibc (see
.BR localtime_r ():
.nf
_POSIX_C_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
@@ -302,7 +302,7 @@ T}
.sp 1
.SH STANDARDS
POSIX.1-2001.
-C89 and C99 specify
+C99 specifies
.BR asctime (),
.BR ctime (),
.BR gmtime (),
diff --git a/man3/daemon.3 b/man3/daemon.3
index 9744e213e..2abc37737 100644
--- a/man3/daemon.3
+++ b/man3/daemon.3
@@ -6,7 +6,7 @@
.\"
.\" @(#)daemon.3 8.1 (Berkeley) 6/9/93
.\" Added mentioning of glibc weirdness wrt unistd.h. 5/11/98, Al Viro
-.TH daemon 3 2022-12-15 "Linux man-pages 6.02"
+.TH daemon 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
daemon \- run in the background
.SH LIBRARY
diff --git a/man3/dbopen.3 b/man3/dbopen.3
index ceb2018a9..523836963 100644
--- a/man3/dbopen.3
+++ b/man3/dbopen.3
@@ -5,7 +5,7 @@
.\"
.\" @(#)dbopen.3 8.5 (Berkeley) 1/2/94
.\"
-.TH dbopen 3 2022-12-04 "Linux man-pages 6.02"
+.TH dbopen 3 2022-12-04 "Linux man-pages 6.03"
.UC 7
.SH NAME
dbopen \- database access methods
diff --git a/man3/des_crypt.3 b/man3/des_crypt.3
index c2cd8e320..eb83f50ef 100644
--- a/man3/des_crypt.3
+++ b/man3/des_crypt.3
@@ -10,7 +10,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH des_crypt 3 2022-12-15 "Linux man-pages 6.02"
+.TH des_crypt 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED \- fast
DES encryption
diff --git a/man3/difftime.3 b/man3/difftime.3
index 5d850fb57..2773f384d 100644
--- a/man3/difftime.3
+++ b/man3/difftime.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 19:48:17 1993 by Rik Faith (faith@cs.unc.edu)
-.TH difftime 3 2022-12-15 "Linux man-pages 6.02"
+.TH difftime 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
difftime \- calculate time difference
.SH LIBRARY
@@ -47,7 +47,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
On a POSIX system,
.I time_t
diff --git a/man3/dirfd.3 b/man3/dirfd.3
index 7743f5f42..0e15acd85 100644
--- a/man3/dirfd.3
+++ b/man3/dirfd.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH dirfd 3 2022-12-15 "Linux man-pages 6.02"
+.TH dirfd 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dirfd \- get directory stream file descriptor
.SH LIBRARY
@@ -25,7 +25,7 @@ Feature Test Macro Requirements for glibc (see
.BR dirfd ():
.nf
/* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The function
diff --git a/man3/div.3 b/man3/div.3
index 18f52bce8..8ad9a3f49 100644
--- a/man3/div.3
+++ b/man3/div.3
@@ -12,7 +12,7 @@
.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu)
.\" Modified 2002-08-10, 2003-11-01 Walter Harms, aeb
.\"
-.TH div 3 2022-12-15 "Linux man-pages 6.02"
+.TH div 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
div, ldiv, lldiv, imaxdiv \- compute quotient and remainder of
an integer division
@@ -85,7 +85,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
The functions
.BR lldiv ()
and
diff --git a/man3/dl_iterate_phdr.3 b/man3/dl_iterate_phdr.3
index e084c4b1a..978f9c853 100644
--- a/man3/dl_iterate_phdr.3
+++ b/man3/dl_iterate_phdr.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH DL_ITERATE_PHDR 3 2022-12-15 "Linux man-pages 6.02"
+.TH dl_iterate_phdr 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dl_iterate_phdr \- walk through list of shared objects
.SH LIBRARY
@@ -83,8 +83,8 @@ struct dl_phdr_info {
/* If there is a PT_TLS segment, its module
ID as used in TLS relocations, else zero */
void *dlpi_tls_data;
- /* The address of the calling thread\(aqs instance
- of this module\(aqs PT_TLS segment, if it has
+ /* The address of the calling thread\[aq]s instance
+ of this module\[aq]s PT_TLS segment, if it has
one and it has been allocated in the calling
thread, otherwise a null pointer */
};
diff --git a/man3/dladdr.3 b/man3/dladdr.3
index 7377cd680..db117b48a 100644
--- a/man3/dladdr.3
+++ b/man3/dladdr.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH DLADDR 3 2022-12-15 "Linux man-pages 6.02"
+.TH dladdr 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
dladdr, dladdr1 \- translate address to symbolic information
.SH LIBRARY
diff --git a/man3/dlerror.3 b/man3/dlerror.3
index e0edfb18c..a49221639 100644
--- a/man3/dlerror.3
+++ b/man3/dlerror.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH dlerror 3 2022-12-15 "Linux man-pages 6.02"
+.TH dlerror 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
dlerror \- obtain error diagnostic for functions in the dlopen API
.SH LIBRARY
diff --git a/man3/dlinfo.3 b/man3/dlinfo.3
index eb7c456be..be6516aaf 100644
--- a/man3/dlinfo.3
+++ b/man3/dlinfo.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH DLINFO 3 2022-12-15 "Linux man-pages 6.02"
+.TH dlinfo 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dlinfo \- obtain information about a dynamically loaded object
.SH LIBRARY
@@ -142,9 +142,9 @@ typedef struct {
size_t dls_size; /* Size in bytes of
the whole buffer */
unsigned int dls_cnt; /* Number of elements
- in \(aqdls_serpath\(aq */
+ in \[aq]dls_serpath\[aq] */
Dl_serpath dls_serpath[1]; /* Actually longer,
- \(aqdls_cnt\(aq elements */
+ \[aq]dls_cnt\[aq] elements */
} Dl_serinfo;
.EE
.in
@@ -290,7 +290,7 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- /* Initialize the \(aqdls_size\(aq and \(aqdls_cnt\(aq fields in the newly
+ /* Initialize the \[aq]dls_size\[aq] and \[aq]dls_cnt\[aq] fields in the newly
allocated buffer. */
if (dlinfo(handle, RTLD_DI_SERINFOSIZE, sip) == \-1) {
diff --git a/man3/dlopen.3 b/man3/dlopen.3
index c42f10d3d..cf1ad4384 100644
--- a/man3/dlopen.3
+++ b/man3/dlopen.3
@@ -14,7 +14,7 @@
.\" Modified by Walter Harms: dladdr, dlvsym
.\" Modified by Petr Baudis <pasky@suse.cz>, 2008-12-04: dladdr caveat
.\"
-.TH DLOPEN 3 2022-12-15 "Linux man-pages 6.02"
+.TH dlopen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dlclose, dlopen, dlmopen \-
open and close a shared object
@@ -68,32 +68,32 @@ Otherwise, the dynamic linker searches for the object as follows
(see
.BR ld.so (8)
for further details):
-.IP \(bu 3
+.IP \[bu] 3
(ELF only) If the calling object
(i.e., the shared library or executable from which
.BR dlopen ()
is called)
contains a DT_RPATH tag, and does not contain a DT_RUNPATH tag,
then the directories listed in the DT_RPATH tag are searched.
-.IP \(bu
+.IP \[bu]
If, at the time that the program was started, the environment variable
.B LD_LIBRARY_PATH
was defined to contain a colon-separated list of directories,
then these are searched.
(As a security measure, this variable is ignored for set-user-ID and
set-group-ID programs.)
-.IP \(bu
+.IP \[bu]
(ELF only) If the calling object
contains a DT_RUNPATH tag, then the directories listed in that tag
are searched.
-.IP \(bu
+.IP \[bu]
The cache file
.I /etc/ld.so.cache
(maintained by
.BR ldconfig (8))
is checked to see whether it contains an entry for
.IR filename .
-.IP \(bu
+.IP \[bu]
The directories
.I /lib
and
@@ -245,7 +245,7 @@ fails for any reason, it returns NULL.
.\"
.SS dlmopen()
This function performs the same task as
-.BR dlopen ()\(emthe
+.BR dlopen ()\[em]the
.I filename
and
.I flags
@@ -400,7 +400,7 @@ objects that have been (explicitly and implicitly) loaded into the namespace.
.PP
The
.BR dlmopen ()
-function permits object-load isolation\(emthe ability
+function permits object-load isolation\[em]the ability
to load a shared object in a new namespace without
exposing the rest of the application to the symbols
made available by the new object.
@@ -578,7 +578,7 @@ main(void)
cosine = (double (*)(double)) dlsym(handle, "cos");
/* According to the ISO C standard, casting between function
- pointers and \(aqvoid *\(aq, as done above, produces undefined results.
+ pointers and \[aq]void *\[aq], as done above, produces undefined results.
POSIX.1\-2001 and POSIX.1\-2008 accepted this state of affairs and
proposed the following workaround:
@@ -589,8 +589,8 @@ main(void)
The 2013 Technical Corrigendum 1 to POSIX.1\-2008 improved matters
by requiring that conforming implementations support casting
- \(aqvoid *\(aq to a function pointer. Nevertheless, some compilers
- (e.g., gcc with the \(aq\-pedantic\(aq option) may complain about the
+ \[aq]void *\[aq] to a function pointer. Nevertheless, some compilers
+ (e.g., gcc with the \[aq]\-pedantic\[aq] option) may complain about the
cast used in this program. */
.\" http://pubs.opengroup.org/onlinepubs/009695399/functions/dlsym.html#tag_03_112_08
.\" http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html#tag_16_96_07
diff --git a/man3/dlsym.3 b/man3/dlsym.3
index d6559cc83..e4d5d5b56 100644
--- a/man3/dlsym.3
+++ b/man3/dlsym.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH DLSYM 3 2022-12-15 "Linux man-pages 6.02"
+.TH dlsym 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
dlsym, dlvsym \- obtain address of a symbol in a shared object or executable
.SH LIBRARY
diff --git a/man3/drand48.3 b/man3/drand48.3
index 69eb95cbc..93381cfd6 100644
--- a/man3/drand48.3
+++ b/man3/drand48.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 19:46:03 1993 by Rik Faith (faith@cs.unc.edu)
-.TH drand48 3 2022-12-15 "Linux man-pages 6.02"
+.TH drand48 3 2023-02-10 "Linux man-pages 6.03"
.SH NAME
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48,
lcong48 \- generate uniformly distributed pseudo-random numbers
@@ -50,8 +50,8 @@ All functions shown above:
.\" .BR lcong48 ():
.nf
_XOPEN_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions generate pseudo-random numbers using the linear congruential
@@ -70,14 +70,14 @@ The
and
.BR nrand48 ()
functions return nonnegative
-long integers uniformly distributed over the interval [0,\ 2^31).
+long integers uniformly distributed over the interval [0,\ 2\[ha]31).
.PP
The
.BR mrand48 ()
and
.BR jrand48 ()
functions return signed long
-integers uniformly distributed over the interval [\-2^31,\ 2^31).
+integers uniformly distributed over the interval [\-2\[ha]31,\ 2\[ha]31).
.PP
The
.BR srand48 (),
@@ -110,7 +110,7 @@ according to the linear congruential formula:
.PP
The parameter
.I m
-= 2^48, hence 48-bit integer arithmetic is performed.
+= 2\[ha]48, hence 48-bit integer arithmetic is performed.
Unless
.BR lcong48 ()
is called,
diff --git a/man3/drand48_r.3 b/man3/drand48_r.3
index 36ffc4d40..fc436de37 100644
--- a/man3/drand48_r.3
+++ b/man3/drand48_r.3
@@ -5,7 +5,7 @@
.\"
.\" Created 2004-10-31. Text taken from a page by Walter Harms, 2003-09-08
.\"
-.TH drand48_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH drand48_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
drand48_r, erand48_r, lrand48_r, nrand48_r, mrand48_r, jrand48_r,
srand48_r, seed48_r, lcong48_r
@@ -56,8 +56,8 @@ All functions shown above:
.\" .BR seed48_r (),
.\" .BR lcong48_r ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
These functions are the reentrant analogs of the functions described in
diff --git a/man3/duplocale.3 b/man3/duplocale.3
index 2f99d6710..259a57163 100644
--- a/man3/duplocale.3
+++ b/man3/duplocale.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH duplocale 3 2022-12-04 "Linux man-pages 6.02"
+.TH duplocale 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
duplocale \- duplicate a locale object
.SH LIBRARY
@@ -62,11 +62,11 @@ function were added in glibc 2.3.
POSIX.1-2008.
.SH NOTES
Duplicating a locale can serve the following purposes:
-.IP \(bu 3
+.IP \[bu] 3
To create a copy of a locale object in which one of more categories
are to be modified (using
.BR newlocale (3)).
-.IP \(bu
+.IP \[bu]
To obtain a handle for the current locale which can used in
other functions that employ a locale handle, such as
.BR toupper_l (3).
@@ -139,7 +139,7 @@ main(int argc, char *argv[])
}
/* This sequence is necessary, because uselocale() might return
- the value LC_GLOBAL_LOCALE, which can\(aqt be passed as an
+ the value LC_GLOBAL_LOCALE, which can\[aq]t be passed as an
argument to toupper_l(). */
loc = uselocale((locale_t) 0);
diff --git a/man3/dysize.3 b/man3/dysize.3
index 0570cb746..a95e13e5c 100644
--- a/man3/dysize.3
+++ b/man3/dysize.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" aeb: some corrections
-.TH dysize 3 2022-12-15 "Linux man-pages 6.02"
+.TH dysize 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dysize \- get number of days for a given year
.SH LIBRARY
@@ -26,7 +26,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/ecvt.3 b/man3/ecvt.3
index 8f9ce3500..1949e8953 100644
--- a/man3/ecvt.3
+++ b/man3/ecvt.3
@@ -10,7 +10,7 @@
.\" Modified Sat Jul 24 19:40:39 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Fri Jun 25 12:10:47 1999 by Andries Brouwer (aeb@cwi.nl)
.\"
-.TH ecvt 3 2022-12-15 "Linux man-pages 6.02"
+.TH ecvt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ecvt, fcvt \- convert a floating-point number to a string
.SH LIBRARY
@@ -36,9 +36,9 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.17
(_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200809L))
- || /* Glibc >= 2.20 */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19 */ _SVID_SOURCE
- Glibc 2.12 to glibc 2.16:
+ || /* glibc >= 2.20 */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19 */ _SVID_SOURCE
+ glibc 2.12 to glibc 2.16:
(_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200112L))
|| _SVID_SOURCE
Before glibc 2.12:
diff --git a/man3/ecvt_r.3 b/man3/ecvt_r.3
index d6262bf7d..abcfdfb91 100644
--- a/man3/ecvt_r.3
+++ b/man3/ecvt_r.3
@@ -8,7 +8,7 @@
.\"
.\" Corrected return types; from Fabian; 2004-10-05
.\"
-.TH ecvt_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH ecvt_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ecvt_r, fcvt_r, qecvt_r, qfcvt_r \- convert a floating-point number to a string
.SH LIBRARY
@@ -43,8 +43,8 @@ Feature Test Macro Requirements for glibc (see
.BR qecvt_r (),
.BR qfcvt_r ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
The functions
diff --git a/man3/encrypt.3 b/man3/encrypt.3
index e9c4dbfa7..0ff57911e 100644
--- a/man3/encrypt.3
+++ b/man3/encrypt.3
@@ -9,7 +9,7 @@
.\"
.\" Modified 2003-04-04, aeb
.\"
-.TH encrypt 3 2022-12-15 "Linux man-pages 6.02"
+.TH encrypt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
encrypt, setkey, encrypt_r, setkey_r \- encrypt 64-bit messages
.SH LIBRARY
@@ -184,19 +184,19 @@ main(void)
encrypt(buf, 0);
for (size_t i = 0; i < 8; i++) {
- for (size_t j = 0, txt[i] = \(aq\e0\(aq; j < 8; j++) {
+ for (size_t j = 0, txt[i] = \[aq]\e0\[aq]; j < 8; j++) {
txt[i] |= buf[i * 8 + j] << j;
}
- txt[8] = \(aq\e0\(aq;
+ txt[8] = \[aq]\e0\[aq];
}
printf("After encrypting: %s\en", txt);
encrypt(buf, 1);
for (size_t i = 0; i < 8; i++) {
- for (size_t j = 0, txt[i] = \(aq\e0\(aq; j < 8; j++) {
+ for (size_t j = 0, txt[i] = \[aq]\e0\[aq]; j < 8; j++) {
txt[i] |= buf[i * 8 + j] << j;
}
- txt[8] = \(aq\e0\(aq;
+ txt[8] = \[aq]\e0\[aq];
}
printf("After decrypting: %s\en", txt);
exit(EXIT_SUCCESS);
diff --git a/man3/end.3 b/man3/end.3
index e5f32de10..c99fa15e5 100644
--- a/man3/end.3
+++ b/man3/end.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH end 3 2022-10-30 "Linux man-pages 6.02"
+.TH end 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
etext, edata, end \- end of program segments
.SH SYNOPSIS
diff --git a/man3/endian.3 b/man3/endian.3
index 57b3f61f1..6e572390d 100644
--- a/man3/endian.3
+++ b/man3/endian.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH ENDIAN 3 2022-12-04 "Linux man-pages 6.02"
+.TH endian 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
htobe16, htole16, be16toh, le16toh, htobe32, htole32, be32toh, le32toh,
htobe64, htole64, be64toh, le64toh \-
diff --git a/man3/envz_add.3 b/man3/envz_add.3
index 9a2a9a1e8..274dda727 100644
--- a/man3/envz_add.3
+++ b/man3/envz_add.3
@@ -6,7 +6,7 @@
.\" based on the description in glibc source and infopages
.\"
.\" Corrections and additions, aeb
-.TH envz_add 3 2022-12-15 "Linux man-pages 6.02"
+.TH envz_add 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
envz_add, envz_entry, envz_get, envz_merge,
envz_remove, envz_strip \- environment string support
@@ -44,10 +44,10 @@ see
.BR argz_add (3).
An envz vector is a special argz vector, namely one where the strings
have the form "name=value".
-Everything after the first \(aq=\(aq is considered
+Everything after the first \[aq]=\[aq] is considered
to be the value.
-If there is no \(aq=\(aq, the value is taken to be NULL.
-(While the value in case of a trailing \(aq=\(aq is the empty string "".)
+If there is no \[aq]=\[aq], the value is taken to be NULL.
+(While the value in case of a trailing \[aq]=\[aq] is the empty string "".)
.PP
These functions are for handling envz vectors.
.PP
@@ -86,7 +86,7 @@ and returns the value if found, or NULL if not.
(Note that the value can also be NULL, namely when there is
an entry for
.I name
-without \(aq=\(aq sign.)
+without \[aq]=\[aq] sign.)
.PP
.BR envz_merge ()
adds each entry in
diff --git a/man3/erf.3 b/man3/erf.3
index c1a8131dd..55daaf3d9 100644
--- a/man3/erf.3
+++ b/man3/erf.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH erf 3 2022-12-15 "Linux man-pages 6.02"
+.TH erf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
erf, erff, erfl \- error function
.SH LIBRARY
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR erff (),
@@ -45,7 +45,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the error function of
diff --git a/man3/erfc.3 b/man3/erfc.3
index 65c93940c..6f27b36db 100644
--- a/man3/erfc.3
+++ b/man3/erfc.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH erfc 3 2022-12-15 "Linux man-pages 6.02"
+.TH erfc 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
erfc, erfcf, erfcl \- complementary error function
.SH LIBRARY
@@ -28,7 +28,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR erfcf (),
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the complementary error function of
diff --git a/man3/err.3 b/man3/err.3
index be676df65..c306430ed 100644
--- a/man3/err.3
+++ b/man3/err.3
@@ -9,7 +9,7 @@
.\"
.\" 2011-09-10, mtk, Converted from mdoc to man macros
.\"
-.TH err 3 2022-12-15 "Linux man-pages 6.02"
+.TH err 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
err, verr, errx, verrx, warn, vwarn, warnx, vwarnx \- formatted error messages
.SH LIBRARY
diff --git a/man3/errno.3 b/man3/errno.3
index bab317c3c..990c13484 100644
--- a/man3/errno.3
+++ b/man3/errno.3
@@ -9,7 +9,7 @@
.\" 2006-02-09 Kurt Wall, mtk
.\" Added non-POSIX errors
.\"
-.TH errno 3 2022-12-04 "Linux man-pages 6.02"
+.TH errno 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
errno \- number of last error
.SH LIBRARY
diff --git a/man3/error.3 b/man3/error.3
index 5e36b2df3..0c8f56472 100644
--- a/man3/error.3
+++ b/man3/error.3
@@ -25,7 +25,7 @@
.\"
.\" References:
.\" glibc manual and source
-.TH error 3 2022-12-15 "Linux man-pages 6.02"
+.TH error 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
error, error_at_line, error_message_count, error_one_per_line,
error_print_progname \- glibc error reporting functions
diff --git a/man3/ether_aton.3 b/man3/ether_aton.3
index abd5a8efb..890933241 100644
--- a/man3/ether_aton.3
+++ b/man3/ether_aton.3
@@ -9,7 +9,7 @@
.\"
.\" Minor additions, aeb, 2013-06-21
.\"
-.TH ether_aton 3 2022-12-15 "Linux man-pages 6.02"
+.TH ether_aton 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ether_aton, ether_ntoa, ether_ntohost, ether_hostton, ether_line,
ether_ntoa_r, ether_aton_r \- Ethernet address manipulation routines
@@ -74,7 +74,7 @@ The
function parses a line in
.I /etc/ethers
format (ethernet address followed by whitespace followed by
-hostname; \(aq#\(aq introduces a comment) and returns an address
+hostname; \[aq]#\[aq] introduces a comment) and returns an address
and hostname pair, or nonzero if it cannot be parsed.
The buffer pointed to by
.I hostname
diff --git a/man3/euidaccess.3 b/man3/euidaccess.3
index 2881a3811..f06cb3d62 100644
--- a/man3/euidaccess.3
+++ b/man3/euidaccess.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH euidaccess 3 2022-12-15 "Linux man-pages 6.02"
+.TH euidaccess 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
euidaccess, eaccess \- check effective user's permissions for a file
.SH LIBRARY
diff --git a/man3/exec.3 b/man3/exec.3
index 923edde53..23945814b 100644
--- a/man3/exec.3
+++ b/man3/exec.3
@@ -11,7 +11,7 @@
.\" Modified, 24 Jun 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added note on casting NULL
.\"
-.TH EXEC 3 2022-12-15 "Linux man-pages 6.02"
+.TH exec 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
execl, execlp, execle, execv, execvp, execvpe \- execute a file
.SH LIBRARY
diff --git a/man3/exit.3 b/man3/exit.3
index 1391da827..bd702d4c8 100644
--- a/man3/exit.3
+++ b/man3/exit.3
@@ -7,7 +7,7 @@
.\" could be listed on this page. See, for example, the list in the
.\" POSIX exit(3p) page.
.\"
-.TH exit 3 2022-12-15 "Linux man-pages 6.02"
+.TH exit 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
exit \- cause normal process termination
.SH LIBRARY
@@ -94,7 +94,7 @@ The
function uses a global variable that is not protected,
so it is not thread-safe.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
The behavior is undefined if one of the functions registered using
.BR atexit (3)
@@ -130,7 +130,7 @@ After
the exit status must be transmitted to the
parent process.
There are three cases:
-.IP \(bu 3
+.IP \[bu] 3
If the parent has set
.BR SA_NOCLDWAIT ,
or has set the
@@ -138,10 +138,10 @@ or has set the
handler to
.BR SIG_IGN ,
the status is discarded and the child dies immediately.
-.IP \(bu
+.IP \[bu]
If the parent was waiting on the child,
it is notified of the exit status and the child dies immediately.
-.IP \(bu
+.IP \[bu]
Otherwise,
the child becomes a "zombie" process:
most of the process resources are recycled,
diff --git a/man3/exp.3 b/man3/exp.3
index 93d65487f..0906ee0d0 100644
--- a/man3/exp.3
+++ b/man3/exp.3
@@ -14,7 +14,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH exp 3 2022-12-15 "Linux man-pages 6.02"
+.TH exp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
exp, expf, expl \- base-e exponential function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the value of e (the base of natural
@@ -124,7 +124,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR cbrt (3),
.BR cexp (3),
diff --git a/man3/exp10.3 b/man3/exp10.3
index a1a9f349b..58f27ff6d 100644
--- a/man3/exp10.3
+++ b/man3/exp10.3
@@ -13,7 +13,7 @@
.\" Modified 1995-08-14 by Arnt Gulbrandsen <agulbra@troll.no>
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
-.TH exp10 3 2022-12-15 "Linux man-pages 6.02"
+.TH exp10 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
exp10, exp10f, exp10l \- base-10 exponential function
.SH LIBRARY
diff --git a/man3/exp2.3 b/man3/exp2.3
index 8145b0490..15639b79a 100644
--- a/man3/exp2.3
+++ b/man3/exp2.3
@@ -14,7 +14,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH exp2 3 2022-12-15 "Linux man-pages 6.02"
+.TH exp2 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
exp2, exp2f, exp2l \- base-2 exponential function
.SH LIBRARY
diff --git a/man3/expm1.3 b/man3/expm1.3
index ba4b138c8..dd2c71a90 100644
--- a/man3/expm1.3
+++ b/man3/expm1.3
@@ -8,7 +8,7 @@
.\" Modified 2002-07-27 Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH expm1 3 2022-12-15 "Linux man-pages 6.02"
+.TH expm1 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
expm1, expm1f, expm1l \- exponential minus 1
.SH LIBRARY
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR expm1f (),
@@ -42,7 +42,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return a value equivalent to
@@ -54,7 +54,7 @@ These functions return a value equivalent to
The result is computed in a way that is accurate even if the value of
.I x
is near
-zero\(ema case where
+zero\[em]a case where
.I "exp(x) \- 1"
would be inaccurate due to
subtraction of two numbers that are nearly equal.
@@ -105,7 +105,7 @@ An overflow floating-point exception
is raised.
.\"
.\" POSIX.1 specifies an optional range error (underflow) if
-.\" x is subnormal. Glibc does not implement this.
+.\" x is subnormal. glibc does not implement this.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
diff --git a/man3/fabs.3 b/man3/fabs.3
index 5c6b62e2f..018165f70 100644
--- a/man3/fabs.3
+++ b/man3/fabs.3
@@ -10,7 +10,7 @@
.\" Modified Sat Jul 24 19:42:04 1993 by Rik Faith (faith@cs.unc.edu)
.\" Added fabsl, fabsf, aeb, 2001-06-07
.\"
-.TH fabs 3 2022-12-15 "Linux man-pages 6.02"
+.TH fabs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fabs, fabsf, fabsl \- absolute value of floating-point number
.SH LIBRARY
@@ -35,7 +35,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the absolute value of the floating-point
@@ -83,7 +83,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR abs (3),
.BR cabs (3),
diff --git a/man3/fclose.3 b/man3/fclose.3
index 530e57439..9e1e25a62 100644
--- a/man3/fclose.3
+++ b/man3/fclose.3
@@ -14,7 +14,7 @@
.\"
.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
.\"
-.TH fclose 3 2022-12-15 "Linux man-pages 6.02"
+.TH fclose 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
fclose \- close a stream
.SH LIBRARY
@@ -83,7 +83,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH NOTES
Note that
.BR fclose ()
diff --git a/man3/fcloseall.3 b/man3/fcloseall.3
index 4539f6acc..df30f95df 100644
--- a/man3/fcloseall.3
+++ b/man3/fcloseall.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH fcloseall 3 2022-12-15 "Linux man-pages 6.02"
+.TH fcloseall 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fcloseall \- close all open streams
.SH LIBRARY
diff --git a/man3/fdim.3 b/man3/fdim.3
index d53ee3e40..e09d0e4fa 100644
--- a/man3/fdim.3
+++ b/man3/fdim.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH FDIM 3 2022-12-15 "Linux man-pages 6.02"
+.TH fdim 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
fdim, fdimf, fdiml \- positive difference
.SH LIBRARY
diff --git a/man3/fenv.3 b/man3/fenv.3
index 2130f57b1..9335169e4 100644
--- a/man3/fenv.3
+++ b/man3/fenv.3
@@ -6,7 +6,7 @@
.\" 2000-08-14 added GNU additions from Andreas Jaeger
.\" 2000-12-05 some changes inspired by acahalan's remarks
.\"
-.TH FENV 3 2022-12-15 "Linux man-pages 6.02"
+.TH fenv 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag,
fetestexcept, fegetenv, fegetround, feholdexcept, fesetround,
@@ -279,7 +279,7 @@ T}
.SH STANDARDS
IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99, POSIX.1-2001.
.SH NOTES
-.SS Glibc notes
+.SS glibc notes
If possible, the GNU C Library defines a macro
.B FE_NOMASK_ENV
which represents an environment where every exception raised causes a
diff --git a/man3/ferror.3 b/man3/ferror.3
index 2c606db53..773907610 100644
--- a/man3/ferror.3
+++ b/man3/ferror.3
@@ -14,7 +14,7 @@
.\"
.\" Converted for Linux, Mon Nov 29 14:24:40 1993, faith@cs.unc.edu
.\"
-.TH ferror 3 2022-12-15 "Linux man-pages 6.02"
+.TH ferror 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
clearerr, feof, ferror \- check and reset stream status
.SH LIBRARY
@@ -93,7 +93,7 @@ The functions
.BR feof (),
and
.BR ferror ()
-conform to C89, C99, POSIX.1-2001, and POSIX.1-2008.
+conform to C99, POSIX.1-2001, and POSIX.1-2008.
.SH NOTES
POSIX.1-2008 specifies
.\"https://www.austingroupbugs.net/view.php?id=401
diff --git a/man3/fexecve.3 b/man3/fexecve.3
index 8cedc9f3e..1c259eaa5 100644
--- a/man3/fexecve.3
+++ b/man3/fexecve.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH fexecve 3 2022-12-15 "Linux man-pages 6.02"
+.TH fexecve 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fexecve \- execute program specified via file descriptor
.SH LIBRARY
diff --git a/man3/fflush.3 b/man3/fflush.3
index 761c9f6be..dcbda7978 100644
--- a/man3/fflush.3
+++ b/man3/fflush.3
@@ -15,7 +15,7 @@
.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
.\" Modified 2001-10-16 by John Levon <moz@compsoc.man.ac.uk>
.\"
-.TH fflush 3 2022-12-15 "Linux man-pages 6.02"
+.TH fflush 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
fflush \- flush a stream
.SH LIBRARY
@@ -91,7 +91,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C89, C99, POSIX.1-2001, POSIX.1-2008.
+C99, POSIX.1-2001, POSIX.1-2008.
.PP
POSIX.1-2001 did not specify the behavior for flushing of input streams,
but the behavior is specified in POSIX.1-2008.
diff --git a/man3/ffs.3 b/man3/ffs.3
index 463834849..7a17abb4b 100644
--- a/man3/ffs.3
+++ b/man3/ffs.3
@@ -11,7 +11,7 @@
.\"
.\" Modified 2003 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH ffs 3 2022-12-15 "Linux man-pages 6.02"
+.TH ffs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ffs, ffsl, ffsll \- find first bit set in a word
.SH LIBRARY
@@ -39,8 +39,8 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.12:
_XOPEN_SOURCE >= 700
|| ! (_POSIX_C_SOURCE >= 200809L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
Before glibc 2.12:
none
.fi
diff --git a/man3/fgetc.3 b/man3/fgetc.3
index 06b5f6768..89d951707 100644
--- a/man3/fgetc.3
+++ b/man3/fgetc.3
@@ -5,7 +5,7 @@
.\"
.\" Modified Wed Jul 28 11:12:07 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Fri Sep 8 15:48:13 1995 by Andries Brouwer (aeb@cwi.nl)
-.TH fgetc 3 2022-12-15 "Linux man-pages 6.02"
+.TH fgetc 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fgetc, fgets, getc, getchar, ungetc \- input of characters and strings
.SH LIBRARY
@@ -58,7 +58,7 @@ Reading stops after an
.B EOF
or a newline.
If a newline is read, it is stored into the buffer.
-A terminating null byte (\(aq\e0\(aq)
+A terminating null byte (\[aq]\e0\[aq])
is stored after the last character in the buffer.
.PP
.BR ungetc ()
@@ -126,7 +126,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.PP
It is not advisable to mix calls to input functions from the
.I stdio
diff --git a/man3/fgetgrent.3 b/man3/fgetgrent.3
index b6a2a7b6c..4a8526911 100644
--- a/man3/fgetgrent.3
+++ b/man3/fgetgrent.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 19:38:44 1993 by Rik Faith (faith@cs.unc.edu)
-.TH fgetgrent 3 2022-12-15 "Linux man-pages 6.02"
+.TH fgetgrent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fgetgrent \- get group file entry
.SH LIBRARY
@@ -32,7 +32,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/fgetpwent.3 b/man3/fgetpwent.3
index c93e06e0c..a5ee43447 100644
--- a/man3/fgetpwent.3
+++ b/man3/fgetpwent.3
@@ -11,7 +11,7 @@
.\" Modified Sat Jul 24 19:37:37 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Mon May 27 22:40:48 1996 by Martin Schulze (joey@linux.de)
.\"
-.TH fgetpwent 3 2022-12-15 "Linux man-pages 6.02"
+.TH fgetpwent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fgetpwent \- get password file entry
.SH LIBRARY
@@ -35,7 +35,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/fgetwc.3 b/man3/fgetwc.3
index 3a1976d9b..67dc004c8 100644
--- a/man3/fgetwc.3
+++ b/man3/fgetwc.3
@@ -11,7 +11,7 @@
.\" ISO/IEC 9899:1999
.\"
.\" Modified Tue Oct 16 23:18:40 BST 2001 by John Levon <moz@compsoc.man.ac.uk>
-.TH fgetwc 3 2022-12-15 "Linux man-pages 6.02"
+.TH fgetwc 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fgetwc, getwc \- read a wide character from a FILE stream
.SH LIBRARY
diff --git a/man3/fgetws.3 b/man3/fgetws.3
index eda596647..37beae3a0 100644
--- a/man3/fgetws.3
+++ b/man3/fgetws.3
@@ -11,7 +11,7 @@
.\" ISO/IEC 9899:1999
.\"
.\" Modified Tue Oct 16 23:18:40 BST 2001 by John Levon <moz@compsoc.man.ac.uk>
-.TH fgetws 3 2022-12-15 "Linux man-pages 6.02"
+.TH fgetws 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fgetws \- read a wide-character string from a FILE stream
.SH LIBRARY
@@ -33,7 +33,7 @@ of the
function.
It reads a string of at most \fIn\-1\fP wide characters into the
wide-character array pointed to by \fIws\fP,
-and adds a terminating null wide character (L\(aq\e0\(aq).
+and adds a terminating null wide character (L\[aq]\e0\[aq]).
It stops reading wide characters after it has encountered and
stored a newline wide character.
It also stops when end of stream is reached.
diff --git a/man3/fileno.3 b/man3/fileno.3
index 7e9a8cd85..674394ceb 100644
--- a/man3/fileno.3
+++ b/man3/fileno.3
@@ -12,7 +12,7 @@
.\" Converted for Linux, Mon Nov 29 14:24:40 1993, faith@cs.unc.edu
.\" Added remark on EBADF for fileno, aeb, 2001-03-22
.\"
-.TH fileno 3 2022-12-15 "Linux man-pages 6.02"
+.TH fileno 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fileno \- obtain file descriptor of a stdio stream
.SH LIBRARY
diff --git a/man3/finite.3 b/man3/finite.3
index d12d515ac..13f2f76f7 100644
--- a/man3/finite.3
+++ b/man3/finite.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH finite 3 2022-12-15 "Linux man-pages 6.02"
+.TH finite 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
finite, finitef, finitel, isinf, isinff, isinfl, isnan, isnanf, isnanl \-
BSD floating-point classification functions
@@ -36,35 +36,35 @@ Feature Test Macro Requirements for glibc (see
.BR finitef (),
.BR finitel ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.PP
.BR isinf ():
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR isinff (),
.BR isinfl ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR isnan ():
.nf
_XOPEN_SOURCE || _ISOC99_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR isnanf (),
.BR isnanl ():
.nf
_XOPEN_SOURCE >= 600
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/flockfile.3 b/man3/flockfile.3
index 7dbebe90d..2edc70753 100644
--- a/man3/flockfile.3
+++ b/man3/flockfile.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH flockfile 3 2022-12-15 "Linux man-pages 6.02"
+.TH flockfile 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
flockfile, ftrylockfile, funlockfile \- lock FILE for stdio
.SH LIBRARY
@@ -26,8 +26,8 @@ Feature Test Macro Requirements for glibc (see
All functions shown above:
.nf
/* Since glibc 2.24: */ _POSIX_C_SOURCE >= 199309L
- || /* Glibc <= 2.23: */ _POSIX_C_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.23: */ _POSIX_C_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The stdio functions are thread-safe.
diff --git a/man3/floor.3 b/man3/floor.3
index d33b28b04..66f277e5a 100644
--- a/man3/floor.3
+++ b/man3/floor.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH floor 3 2022-12-15 "Linux man-pages 6.02"
+.TH floor 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
floor, floorf, floorl \- largest integral value not greater than argument
.SH LIBRARY
@@ -30,7 +30,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the largest integral value that is not greater than
@@ -78,7 +78,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH NOTES
SUSv2 and POSIX.1-2001 contain text about overflow (which might set
.I errno
diff --git a/man3/fma.3 b/man3/fma.3
index 83ada78ad..5b313569a 100644
--- a/man3/fma.3
+++ b/man3/fma.3
@@ -8,7 +8,7 @@
.\" Modified 2004-11-15, Added further text on FLT_ROUNDS
.\" as suggested by AEB and Fabian Kreutz
.\"
-.TH fma 3 2022-12-15 "Linux man-pages 6.02"
+.TH fma 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fma, fmaf, fmal \- floating-point multiply and add
.SH LIBRARY
diff --git a/man3/fmax.3 b/man3/fmax.3
index 7b48d4bd7..ff39d852b 100644
--- a/man3/fmax.3
+++ b/man3/fmax.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH fmax 3 2022-12-15 "Linux man-pages 6.02"
+.TH fmax 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fmax, fmaxf, fmaxl \- determine maximum of two floating-point numbers
.SH LIBRARY
diff --git a/man3/fmemopen.3 b/man3/fmemopen.3
index b80347c2b..5f5020d24 100644
--- a/man3/fmemopen.3
+++ b/man3/fmemopen.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH fmemopen 3 2022-12-15 "Linux man-pages 6.02"
+.TH fmemopen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fmemopen \- open memory as stream
.SH LIBRARY
@@ -59,7 +59,7 @@ Open the stream for reading and writing.
.I w+
Open the stream for reading and writing.
The buffer contents are truncated
-(i.e., \(aq\e0\(aq is placed in the first byte of the buffer).
+(i.e., \[aq]\e0\[aq] is placed in the first byte of the buffer).
.TP
.I a+
Append; open the stream for reading and writing,
@@ -112,7 +112,7 @@ counts that byte)
to allow for this.
.PP
In a stream opened for reading,
-null bytes (\(aq\e0\(aq) in the buffer do not cause read
+null bytes (\[aq]\e0\[aq]) in the buffer do not cause read
operations to return an end-of-file indication.
A read from the buffer will indicate end-of-file
only when the current buffer position advances
@@ -172,13 +172,13 @@ POSIX.1-2008.
This function is not specified in POSIX.1-2001,
and is not widely available on other systems.
.PP
-POSIX.1-2008 specifies that \(aqb\(aq in
+POSIX.1-2008 specifies that \[aq]b\[aq] in
.I mode
shall be ignored.
However, Technical Corrigendum 1
.\" http://austingroupbugs.net/view.php?id=396
adjusts the standard to allow implementation-specific treatment for this case,
-thus permitting the glibc treatment of \(aqb\(aq.
+thus permitting the glibc treatment of \[aq]b\[aq].
.SH NOTES
There is no file descriptor associated with the file stream
returned by this function
@@ -195,7 +195,7 @@ were fixed, and a new versioned symbol was created for this interface.
From glibc 2.9 to glibc 2.21, the glibc implementation of
.BR fmemopen ()
supported a "binary" mode,
-enabled by specifying the letter \(aqb\(aq as the second character in
+enabled by specifying the letter \[aq]b\[aq] as the second character in
.IR mode .
In this mode,
writes don't implicitly add a terminating null byte, and
@@ -206,7 +206,7 @@ is relative to the end of the buffer (i.e., the value specified by the
argument), rather than the current string length.
.PP
An API bug afflicted the implementation of binary mode:
-to specify binary mode, the \(aqb\(aq must be the
+to specify binary mode, the \[aq]b\[aq] must be the
.I second
character in
.IR mode .
@@ -217,7 +217,7 @@ This is inconsistent with the treatment of
by
.BR fopen (3).
.PP
-Binary mode was removed in glibc 2.22; a \(aqb\(aq specified in
+Binary mode was removed in glibc 2.22; a \[aq]b\[aq] specified in
.I mode
has no effect.
.SH BUGS
@@ -281,7 +281,7 @@ The glibc 2.9 addition of "binary" mode for
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=6544
silently changed the ABI: previously,
.BR fmemopen ()
-ignored \(aqb\(aq in
+ignored \[aq]b\[aq] in
.IR mode .
.SH EXAMPLES
The program below uses
@@ -296,7 +296,7 @@ An example of the output produced by this program is the following:
.PP
.in +4n
.EX
-.RB "$" " ./a.out \(aq1 23 43\(aq"
+.RB "$" " ./a.out \[aq]1 23 43\[aq]"
size=11; ptr=1 529 1849
.EE
.in
@@ -319,7 +319,7 @@ main(int argc, char *argv[])
char *ptr;
if (argc != 2) {
- fprintf(stderr, "Usage: %s \(aq<num>...\(aq\en", argv[0]);
+ fprintf(stderr, "Usage: %s \[aq]<num>...\[aq]\en", argv[0]);
exit(EXIT_FAILURE);
}
diff --git a/man3/fmin.3 b/man3/fmin.3
index 3dd45f984..75a30565e 100644
--- a/man3/fmin.3
+++ b/man3/fmin.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH fmin 3 2022-12-15 "Linux man-pages 6.02"
+.TH fmin 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fmin, fminf, fminl \- determine minimum of two floating-point numbers
.SH LIBRARY
diff --git a/man3/fmod.3 b/man3/fmod.3
index f41d8d736..bc012b4ca 100644
--- a/man3/fmod.3
+++ b/man3/fmod.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH fmod 3 2022-12-15 "Linux man-pages 6.02"
+.TH fmod 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fmod, fmodf, fmodl \- floating-point remainder function
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions compute the floating-point remainder of dividing
@@ -142,7 +142,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH BUGS
Before glibc 2.10, the glibc implementation did not set
.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6784
diff --git a/man3/fmtmsg.3 b/man3/fmtmsg.3
index 37ab00ca2..e497c98d3 100644
--- a/man3/fmtmsg.3
+++ b/man3/fmtmsg.3
@@ -9,7 +9,7 @@
.\" The function is quite complex and deserves an example
.\"
.\" Polished, aeb, 2003-11-01
-.TH fmtmsg 3 2022-12-15 "Linux man-pages 6.02"
+.TH fmtmsg 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fmtmsg \- print formatted error messages
.SH LIBRARY
@@ -202,7 +202,7 @@ severity-keyword,level,printstring
then
.BR fmtmsg ()
will also accept the indicated values for the level (in addition to
-the standard levels 0\(en4), and use the indicated printstring when
+the standard levels 0\[en]4), and use the indicated printstring when
such a level occurs.
.PP
The severity-keyword part is not used by
diff --git a/man3/fnmatch.3 b/man3/fnmatch.3
index fce0496c9..80c708f8e 100644
--- a/man3/fnmatch.3
+++ b/man3/fnmatch.3
@@ -6,7 +6,7 @@
.\" Modified Sat Jul 24 19:35:54 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Mon Oct 16 00:16:29 2000 following Joseph S. Myers
.\"
-.TH fnmatch 3 2022-12-15 "Linux man-pages 6.02"
+.TH fnmatch 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fnmatch \- match filename or pathname
.SH LIBRARY
diff --git a/man3/fopen.3 b/man3/fopen.3
index 30bca87fc..a66bfe0f1 100644
--- a/man3/fopen.3
+++ b/man3/fopen.3
@@ -14,7 +14,7 @@
.\" Modified, aeb, 960421, 970806
.\" Modified, joey, aeb, 2002-01-03
.\"
-.TH fopen 3 2022-12-15 "Linux man-pages 6.02"
+.TH fopen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fopen, fdopen, freopen \- stream open functions
.SH LIBRARY
@@ -87,14 +87,14 @@ initial file position for reading is at the end of the file.
.PP
The
.I mode
-string can also include the letter \(aqb\(aq either as a last character or as
+string can also include the letter \[aq]b\[aq] either as a last character or as
a character between the characters in any of the two-character strings
described above.
-This is strictly for compatibility with C89
-and has no effect; the \(aqb\(aq is ignored on all POSIX
+This is strictly for compatibility with ISO C
+and has no effect; the \[aq]b\[aq] is ignored on all POSIX
conforming systems, including Linux.
(Other systems may treat text files and binary files differently,
-and adding the \(aqb\(aq may be a good idea if you do I/O to a binary
+and adding the \[aq]b\[aq] may be a good idea if you do I/O to a binary
file and expect that your program may be ported to non-UNIX
environments.)
.PP
@@ -291,12 +291,12 @@ T} Thread safety MT-Safe
.SH STANDARDS
.BR fopen (),
.BR freopen ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.PP
.BR fdopen ():
POSIX.1-2001, POSIX.1-2008.
.SH NOTES
-.SS Glibc notes
+.SS glibc notes
The GNU C library allows the following extensions for the string specified in
.IR mode :
.TP
diff --git a/man3/fopencookie.3 b/man3/fopencookie.3
index 23c8d214e..e5b2936b5 100644
--- a/man3/fopencookie.3
+++ b/man3/fopencookie.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH fopencookie 3 2022-12-15 "Linux man-pages 6.02"
+.TH fopencookie 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fopencookie \- opening a custom stream
.SH LIBRARY
@@ -32,10 +32,10 @@ which provides a stream interface to data that is stored in a
buffer in memory.
.PP
In order to create a custom stream the programmer must:
-.IP \(bu 3
+.IP \[bu] 3
Implement four "hook" functions that are used internally by the
standard I/O library when performing I/O on the stream.
-.IP \(bu
+.IP \[bu]
Define a "cookie" data type,
a structure that provides bookkeeping information
(e.g., where to store data) used by the aforementioned hook functions.
@@ -46,7 +46,7 @@ when passed to
.BR fopencookie ()),
but automatically supplies the cookie
as the first argument when calling the hook functions.
-.IP \(bu
+.IP \[bu]
Call
.BR fopencookie ()
to open a new stream and associate the cookie and hook functions
@@ -273,7 +273,7 @@ The following shell session demonstrates the use of the program:
.PP
.in +4n
.EX
-.RB "$" " ./a.out \(aqhello world\(aq"
+.RB "$" " ./a.out \[aq]hello world\[aq]"
/he/
/ w/
/d/
@@ -445,6 +445,8 @@ main(int argc, char *argv[])
printf("/%.*s/\en", (int) nread, buf);
}
+ free(mycookie.buf);
+
exit(EXIT_SUCCESS);
}
.EE
diff --git a/man3/fpathconf.3 b/man3/fpathconf.3
index 744dcd18c..a80cc49d5 100644
--- a/man3/fpathconf.3
+++ b/man3/fpathconf.3
@@ -20,7 +20,7 @@
.\" _PC_SYMLINK_MAX,
.\" _PC_2_SYMLINKS
.\"
-.TH fpathconf 3 2022-12-15 "Linux man-pages 6.02"
+.TH fpathconf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fpathconf, pathconf \- get configuration values for files
.SH LIBRARY
@@ -157,7 +157,7 @@ or
must refer to a terminal.
.SH RETURN VALUE
The return value of these functions is one of the following:
-.IP \(bu 3
+.IP \[bu] 3
On error, \-1 is returned and
.I errno
is set to indicate the error
@@ -166,7 +166,7 @@ is set to indicate the error
indicating that
.I name
is invalid).
-.IP \(bu
+.IP \[bu]
If
.I name
corresponds to a maximum or minimum limit, and that limit is indeterminate,
@@ -178,13 +178,13 @@ is not changed.
to zero before the call, and then check whether
.I errno
is nonzero when \-1 is returned.)
-.IP \(bu
+.IP \[bu]
If
.I name
corresponds to an option,
a positive value is returned if the option is supported,
and \-1 is returned if the option is not supported.
-.IP \(bu
+.IP \[bu]
Otherwise,
the current value of the option or limit is returned.
This value will not be more restrictive than
diff --git a/man3/fpclassify.3 b/man3/fpclassify.3
index 518874096..3ae17dda6 100644
--- a/man3/fpclassify.3
+++ b/man3/fpclassify.3
@@ -6,7 +6,7 @@
.\" This was done with the help of the glibc manual.
.\"
.\" 2004-10-31, aeb, corrected
-.TH fpclassify 3 2022-12-15 "Linux man-pages 6.02"
+.TH fpclassify 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fpclassify, isfinite, isnormal, isnan, isinf \- floating-point
classification macros
@@ -43,14 +43,14 @@ Feature Test Macro Requirements for glibc (see
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| _XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR isinf ():
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
Floating point numbers can have special values, such as
diff --git a/man3/fpurge.3 b/man3/fpurge.3
index 3bada9348..0f8ecf96b 100644
--- a/man3/fpurge.3
+++ b/man3/fpurge.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH fpurge 3 2022-12-15 "Linux man-pages 6.02"
+.TH fpurge 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fpurge, __fpurge \- purge a stream
.SH LIBRARY
diff --git a/man3/fputwc.3 b/man3/fputwc.3
index 6aa770255..38f1c4c7f 100644
--- a/man3/fputwc.3
+++ b/man3/fputwc.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH fputwc 3 2022-12-15 "Linux man-pages 6.02"
+.TH fputwc 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fputwc, putwc \- write a wide character to a FILE stream
.SH LIBRARY
diff --git a/man3/fputws.3 b/man3/fputws.3
index 5fb42e4df..ee8ec8324 100644
--- a/man3/fputws.3
+++ b/man3/fputws.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH fputws 3 2022-12-15 "Linux man-pages 6.02"
+.TH fputws 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fputws \- write a wide-character string to a FILE stream
.SH LIBRARY
@@ -29,7 +29,7 @@ the
.BR fputs (3)
function.
It writes the wide-character string starting at \fIws\fP,
-up to but not including the terminating null wide character (L\(aq\e0\(aq),
+up to but not including the terminating null wide character (L\[aq]\e0\[aq]),
to \fIstream\fP.
.PP
For a nonlocking counterpart, see
diff --git a/man3/fread.3 b/man3/fread.3
index 72941123e..fbfd4f60f 100644
--- a/man3/fread.3
+++ b/man3/fread.3
@@ -16,7 +16,7 @@
.\" Modified Thu Apr 20 20:43:53 1995 by Jim Van Zandt <jrv@vanzandt.mv.com>
.\" Modified Fri May 17 10:21:51 1996 by Martin Schulze <joey@infodrom.north.de>
.\"
-.TH fread 3 2022-12-15 "Linux man-pages 6.02"
+.TH fread 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
fread, fwrite \- binary stream input/output
.SH LIBRARY
@@ -98,7 +98,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH EXAMPLES
The program below demonstrates the use of
.BR fread ()
diff --git a/man3/frexp.3 b/man3/frexp.3
index 1f8fd7687..e41b09777 100644
--- a/man3/frexp.3
+++ b/man3/frexp.3
@@ -11,7 +11,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH frexp 3 2022-12-15 "Linux man-pages 6.02"
+.TH frexp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
frexp, frexpf, frexpl \- convert floating-point number to fractional
and integral components
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions are used to split the number
@@ -102,16 +102,16 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH EXAMPLES
The program below produces results such as the following:
.PP
.in +4n
.EX
.RB "$" " ./a.out 2560"
-frexp(2560, &e) = 0.625: 0.625 * 2\(ha12 = 2560
+frexp(2560, &e) = 0.625: 0.625 * 2\[ha]12 = 2560
.RB "$" " ./a.out \-4"
-frexp(\-4, &e) = \-0.5: \-0.5 * 2\(ha3 = \-4
+frexp(\-4, &e) = \-0.5: \-0.5 * 2\[ha]3 = \-4
.EE
.in
.SS Program source
@@ -132,7 +132,7 @@ main(int argc, char *argv[])
x = strtod(argv[1], NULL);
r = frexp(x, &exp);
- printf("frexp(%g, &e) = %g: %g * %d\(ha%d = %g\en",
+ printf("frexp(%g, &e) = %g: %g * %d\[ha]%d = %g\en",
x, r, r, FLT_RADIX, exp, x);
exit(EXIT_SUCCESS);
}
diff --git a/man3/fseek.3 b/man3/fseek.3
index 33aa65c85..fda61d292 100644
--- a/man3/fseek.3
+++ b/man3/fseek.3
@@ -12,7 +12,7 @@
.\"
.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
.\"
-.TH fseek 3 2022-12-15 "Linux man-pages 6.02"
+.TH fseek 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
fgetpos, fseek, fsetpos, ftell, rewind \- reposition a stream
.SH LIBRARY
@@ -172,7 +172,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH SEE ALSO
.BR lseek (2),
.BR fseeko (3)
diff --git a/man3/fseeko.3 b/man3/fseeko.3
index 4c51eda15..bc9428773 100644
--- a/man3/fseeko.3
+++ b/man3/fseeko.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH fseeko 3 2022-12-15 "Linux man-pages 6.02"
+.TH fseeko 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fseeko, ftello \- seek to or report file position
.SH LIBRARY
diff --git a/man3/ftime.3 b/man3/ftime.3
index 1d020be6c..df4bcf5fa 100644
--- a/man3/ftime.3
+++ b/man3/ftime.3
@@ -9,7 +9,7 @@
.\" Modified Sun Oct 18 17:31:43 1998 by Andries Brouwer (aeb@cwi.nl)
.\" 2008-06-23, mtk, minor rewrites, added some details
.\"
-.TH ftime 3 2022-12-15 "Linux man-pages 6.02"
+.TH ftime 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ftime \- return date and time
.SH LIBRARY
diff --git a/man3/ftok.3 b/man3/ftok.3
index e68216dee..dc51d65bb 100644
--- a/man3/ftok.3
+++ b/man3/ftok.3
@@ -7,7 +7,7 @@
.\" Changed data type of proj_id; minor fixes
.\" aeb: further fixes; added notes.
.\"
-.TH ftok 3 2022-12-15 "Linux man-pages 6.02"
+.TH ftok 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ftok \- convert a pathname and a project identifier to a System V IPC key
.SH LIBRARY
diff --git a/man3/fts.3 b/man3/fts.3
index c40292b5e..1d1fe8528 100644
--- a/man3/fts.3
+++ b/man3/fts.3
@@ -10,7 +10,7 @@
.\"
.\" 2007-12-08, mtk, Converted from mdoc to man macros
.\"
-.TH fts 3 2022-12-15 "Linux man-pages 6.02"
+.TH fts 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fts, fts_open, fts_read, fts_children, fts_set, fts_close \- \
traverse a file hierarchy
diff --git a/man3/ftw.3 b/man3/ftw.3
index 02ced7eed..a8a395e45 100644
--- a/man3/ftw.3
+++ b/man3/ftw.3
@@ -15,7 +15,7 @@
.\" 2006-05-24, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Added an example program.
.\"
-.TH ftw 3 2022-12-15 "Linux man-pages 6.02"
+.TH ftw 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ftw, nftw \- file tree walk
.SH LIBRARY
@@ -307,7 +307,7 @@ is never called for a directory that would be a descendant of itself.
is an older function that offers a subset of the functionality of
.BR nftw ().
The notable differences are as follows:
-.IP \(bu 3
+.IP \[bu] 3
.BR ftw ()
has no
.I flags
@@ -317,11 +317,11 @@ It behaves the same as when
is called with
.I flags
specified as zero.
-.IP \(bu
+.IP \[bu]
The callback function,
.IR fn (),
is not supplied with a fourth argument.
-.IP \(bu
+.IP \[bu]
The range of values that is passed via the
.I typeflag
argument supplied to
@@ -481,9 +481,9 @@ main(int argc, char *argv[])
{
int flags = 0;
- if (argc > 2 && strchr(argv[2], \(aqd\(aq) != NULL)
+ if (argc > 2 && strchr(argv[2], \[aq]d\[aq]) != NULL)
flags |= FTW_DEPTH;
- if (argc > 2 && strchr(argv[2], \(aqp\(aq) != NULL)
+ if (argc > 2 && strchr(argv[2], \[aq]p\[aq]) != NULL)
flags |= FTW_PHYS;
if (nftw((argc < 2) ? "." : argv[1], display_info, 20, flags)
diff --git a/man3/futimes.3 b/man3/futimes.3
index c815af5b2..55c63fb6d 100644
--- a/man3/futimes.3
+++ b/man3/futimes.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH futimes 3 2022-12-15 "Linux man-pages 6.02"
+.TH futimes 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
futimes, lutimes \- change file timestamps
.SH LIBRARY
@@ -27,7 +27,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/fwide.3 b/man3/fwide.3
index 513ff35f6..eda3bea56 100644
--- a/man3/fwide.3
+++ b/man3/fwide.3
@@ -8,7 +8,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH fwide 3 2022-10-30 "Linux man-pages 6.02"
+.TH fwide 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fwide \- set and determine the orientation of a FILE stream
.SH LIBRARY
@@ -39,7 +39,7 @@ orientation of \fIstream\fP.
It returns a positive value if \fIstream\fP is
wide-character oriented, that is, if wide-character I/O is permitted but char
I/O is disallowed.
-It returns a negative value if \fIstream\fP is byte oriented\(emthat is,
+It returns a negative value if \fIstream\fP is byte oriented\[em]that is,
if char I/O is permitted but wide-character I/O is disallowed.
It
returns zero if \fIstream\fP has no orientation yet; in this case the next
diff --git a/man3/gamma.3 b/man3/gamma.3
index 8758ac97a..1aef0c10a 100644
--- a/man3/gamma.3
+++ b/man3/gamma.3
@@ -5,7 +5,7 @@
.\"
.\" Modified 2003-11-18, aeb: historical remarks
.\"
-.TH gamma 3 2022-12-15 "Linux man-pages 6.02"
+.TH gamma 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
gamma, gammaf, gammal \- (logarithm of the) gamma function
.SH LIBRARY
@@ -29,7 +29,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR gammaf (),
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 600 || (_XOPEN_SOURCE && _ISOC99_SOURCE)
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions are deprecated: instead, use either the
@@ -53,7 +53,7 @@ The libm in 4.4BSD and some versions of FreeBSD had a
.BR gamma ()
function that computes the Gamma function, as one would expect.
.SS glibc version
-Glibc has a
+glibc has a
.BR gamma ()
function that is equivalent to
.BR lgamma (3)
diff --git a/man3/gcvt.3 b/man3/gcvt.3
index ddd9f5ac2..b8b174a50 100644
--- a/man3/gcvt.3
+++ b/man3/gcvt.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 19:32:25 1993 by Rik Faith (faith@cs.unc.edu)
-.TH gcvt 3 2022-12-15 "Linux man-pages 6.02"
+.TH gcvt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
gcvt \- convert a floating-point number to a string
.SH LIBRARY
@@ -30,9 +30,9 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.17
(_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200809L))
- || /* Glibc >= 2.20 */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19 */ _SVID_SOURCE
- Glibc 2.12 to glibc 2.16:
+ || /* glibc >= 2.20 */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19 */ _SVID_SOURCE
+ glibc 2.12 to glibc 2.16:
(_XOPEN_SOURCE >= 500 && ! (_POSIX_C_SOURCE >= 200112L))
|| _SVID_SOURCE
Before glibc 2.12:
diff --git a/man3/get_nprocs.3 b/man3/get_nprocs.3
index 3851e1d15..4aab90802 100644
--- a/man3/get_nprocs.3
+++ b/man3/get_nprocs.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH get_nprocs 3 2022-12-15 "Linux man-pages 6.02"
+.TH get_nprocs 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
get_nprocs, get_nprocs_conf \- get number of processors
.SH LIBRARY
diff --git a/man3/get_phys_pages.3 b/man3/get_phys_pages.3
index 0f26603ab..b734efb4d 100644
--- a/man3/get_phys_pages.3
+++ b/man3/get_phys_pages.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH get_phys_pages 3 2022-10-30 "Linux man-pages 6.02"
+.TH get_phys_pages 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
get_phys_pages, get_avphys_pages \- get total and available physical
page counts
diff --git a/man3/getaddrinfo.3 b/man3/getaddrinfo.3
index e9415f3e6..6d4295f71 100644
--- a/man3/getaddrinfo.3
+++ b/man3/getaddrinfo.3
@@ -22,7 +22,7 @@
.\" FIXME . glibc's 2.9 NEWS file documents DCCP and UDP-lite support
.\" and is SCTP support now also there?
.\"
-.TH getaddrinfo 3 2022-12-15 "Linux man-pages 6.02"
+.TH getaddrinfo 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getaddrinfo, freeaddrinfo, gai_strerror \- network address and
service translation
@@ -56,7 +56,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.22:
_POSIX_C_SOURCE >= 200112L
- Glibc 2.21 and earlier:
+ glibc 2.21 and earlier:
_POSIX_C_SOURCE
.fi
.SH DESCRIPTION
@@ -330,7 +330,7 @@ official name of the host.
The remaining fields of each returned
.I addrinfo
structure are initialized as follows:
-.IP \(bu 3
+.IP \[bu] 3
The
.IR ai_family ,
.IR ai_socktype ,
@@ -353,7 +353,7 @@ or
and
.I ai_protocol
returns the protocol for the socket.
-.IP \(bu
+.IP \[bu]
A pointer to the socket address is placed in the
.I ai_addr
field, and the length of the socket address, in bytes,
@@ -713,14 +713,14 @@ main(int argc, char *argv[])
/* Read datagrams and echo them back to sender. */
for (;;) {
+ char host[NI_MAXHOST], service[NI_MAXSERV];
+
peer_addrlen = sizeof(peer_addr);
nread = recvfrom(sfd, buf, BUF_SIZE, 0,
(struct sockaddr *) &peer_addr, &peer_addrlen);
if (nread == \-1)
continue; /* Ignore failed request */
- char host[NI_MAXHOST], service[NI_MAXSERV];
-
s = getnameinfo((struct sockaddr *) &peer_addr,
peer_addrlen, host, NI_MAXHOST,
service, NI_MAXSERV, NI_NUMERICSERV);
diff --git a/man3/getaddrinfo_a.3 b/man3/getaddrinfo_a.3
index 0f5f7ffda..64e0d044f 100644
--- a/man3/getaddrinfo_a.3
+++ b/man3/getaddrinfo_a.3
@@ -8,7 +8,7 @@
.\" References: http://people.redhat.com/drepper/asynchnl.pdf,
.\" http://www.imperialviolet.org/2005/06/01/asynchronous-dns-lookups-with-glibc.html
.\"
-.TH getaddrinfo_a 3 2022-12-15 "Linux man-pages 6.02"
+.TH getaddrinfo_a 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getaddrinfo_a, gai_suspend, gai_error, gai_cancel \- asynchronous
network address and service translation
@@ -169,13 +169,13 @@ The
argument specifies the size of the array
.IR list .
The call blocks until one of the following occurs:
-.IP \(bu 3
+.IP \[bu] 3
One or more of the operations in
.I list
completes.
-.IP \(bu
+.IP \[bu]
The call is interrupted by a signal that is caught.
-.IP \(bu
+.IP \[bu]
The time interval specified in
.I timeout
elapses.
@@ -444,7 +444,7 @@ getcmd(void)
if (fgets(buf, sizeof(buf), stdin) == NULL)
return NULL;
- if (buf[strlen(buf) \- 1] == \(aq\en\(aq)
+ if (buf[strlen(buf) \- 1] == \[aq]\en\[aq])
buf[strlen(buf) \- 1] = 0;
return buf;
@@ -582,16 +582,16 @@ main(void)
list_requests();
} else {
switch (cmd[0]) {
- case \(aqa\(aq:
+ case \[aq]a\[aq]:
add_requests();
break;
- case \(aqw\(aq:
+ case \[aq]w\[aq]:
wait_requests();
break;
- case \(aqc\(aq:
+ case \[aq]c\[aq]:
cancel_requests();
break;
- case \(aql\(aq:
+ case \[aq]l\[aq]:
list_requests();
break;
default:
diff --git a/man3/getauxval.3 b/man3/getauxval.3
index 767ad9665..6c5bcf479 100644
--- a/man3/getauxval.3
+++ b/man3/getauxval.3
@@ -5,7 +5,7 @@
.\"
.\" See also https://lwn.net/Articles/519085/
.\"
-.TH GETAUXVAL 3 2022-12-15 "Linux man-pages 6.02"
+.TH getauxval 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
getauxval \- retrieve a value from the auxiliary vector
.SH LIBRARY
diff --git a/man3/getcontext.3 b/man3/getcontext.3
index 49406e9b9..5d341db8b 100644
--- a/man3/getcontext.3
+++ b/man3/getcontext.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getcontext 3 2022-12-15 "Linux man-pages 6.02"
+.TH getcontext 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getcontext, setcontext \- get or set the user context
.SH LIBRARY
diff --git a/man3/getcwd.3 b/man3/getcwd.3
index 330412abb..412d4007a 100644
--- a/man3/getcwd.3
+++ b/man3/getcwd.3
@@ -10,7 +10,7 @@
.\" Modified Mon Dec 11 13:32:51 MET 2000 by aeb
.\" Modified Thu Apr 22 03:49:15 CEST 2002 by Roger Luethi <rl@hellgate.ch>
.\"
-.TH getcwd 3 2022-12-15 "Linux man-pages 6.02"
+.TH getcwd 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getcwd, getwd, get_current_dir_name \- get current working directory
.SH LIBRARY
@@ -40,8 +40,8 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
diff --git a/man3/getdate.3 b/man3/getdate.3
index 3d059ebef..266202704 100644
--- a/man3/getdate.3
+++ b/man3/getdate.3
@@ -8,7 +8,7 @@
.\" Modified, 2001-12-26, aeb
.\" 2008-09-07, mtk, Various rewrites; added an example program.
.\"
-.TH getdate 3 2022-12-15 "Linux man-pages 6.02"
+.TH getdate 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getdate, getdate_r \- convert a date-plus-time string to broken-down time
.SH LIBRARY
@@ -229,12 +229,12 @@ The following shell session demonstrates the operation of the program:
.in +4n
.EX
.RB "$" " TFILE=$PWD/tfile"
-.RB "$" " echo \(aq%A\(aq > $TFILE " " # Full name of the day of the week"
-.RB "$" " echo \(aq%T\(aq >> $TFILE" " # Time (HH:MM:SS)"
-.RB "$" " echo \(aq%F\(aq >> $TFILE" " # ISO date (YYYY\-MM\-DD)"
+.RB "$" " echo \[aq]%A\[aq] > $TFILE " " # Full name of the day of the week"
+.RB "$" " echo \[aq]%T\[aq] >> $TFILE" " # Time (HH:MM:SS)"
+.RB "$" " echo \[aq]%F\[aq] >> $TFILE" " # ISO date (YYYY\-MM\-DD)"
.RB "$" " date"
.RB "$" " export DATEMSK=$TFILE"
-.RB "$" " ./a.out Tuesday \(aq2009\-12\-28\(aq \(aq12:22:33\(aq"
+.RB "$" " ./a.out Tuesday \[aq]2009\-12\-28\[aq] \[aq]12:22:33\[aq]"
Sun Sep 7 06:03:36 CEST 2008
Call 1 ("Tuesday") succeeded:
tm_sec = 36
@@ -286,7 +286,7 @@ main(int argc, char *argv[])
tmp = getdate(argv[j]);
if (tmp == NULL) {
- printf("Call %d failed; getdate_err = %d\en",
+ printf("Call %zu failed; getdate_err = %d\en",
j, getdate_err);
continue;
}
diff --git a/man3/getdirentries.3 b/man3/getdirentries.3
index b11ffd707..47087fe1a 100644
--- a/man3/getdirentries.3
+++ b/man3/getdirentries.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getdirentries 3 2022-12-15 "Linux man-pages 6.02"
+.TH getdirentries 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getdirentries \- get directory entries in a filesystem-independent format
.SH LIBRARY
@@ -29,7 +29,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getdtablesize.3 b/man3/getdtablesize.3
index 0cad06ac6..b49a977f2 100644
--- a/man3/getdtablesize.3
+++ b/man3/getdtablesize.3
@@ -5,7 +5,7 @@
.\"
.\" Modified 2002-04-15 by Roger Luethi <rl@hellgate.ch> and aeb
.\"
-.TH getdtablesize 3 2022-12-15 "Linux man-pages 6.02"
+.TH getdtablesize 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getdtablesize \- get file descriptor table size
.SH LIBRARY
@@ -27,7 +27,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.20:
_DEFAULT_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
- Glibc 2.12 to glibc 2.19:
+ glibc 2.12 to glibc 2.19:
_BSD_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
diff --git a/man3/getentropy.3 b/man3/getentropy.3
index f641f7c6e..ecdac4c36 100644
--- a/man3/getentropy.3
+++ b/man3/getentropy.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getentropy 3 2022-11-10 "Linux man-pages 6.02"
+.TH getentropy 3 2022-11-10 "Linux man-pages 6.03"
.SH NAME
getentropy \- fill a buffer with random bytes
.SH LIBRARY
diff --git a/man3/getenv.3 b/man3/getenv.3
index 913879cce..afe15962b 100644
--- a/man3/getenv.3
+++ b/man3/getenv.3
@@ -11,7 +11,7 @@
.\" Modified Sat Jul 24 19:30:29 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Fri Feb 14 21:47:50 1997 by Andries Brouwer (aeb@cwi.nl)
.\"
-.TH getenv 3 2022-12-15 "Linux man-pages 6.02"
+.TH getenv 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getenv, secure_getenv \- get an environment variable
.SH LIBRARY
@@ -51,14 +51,14 @@ function is just like
except that it returns NULL in cases where "secure execution" is required.
Secure execution is required if one of the following conditions
was true when the program run by the calling process was loaded:
-.IP \(bu 3
+.IP \[bu] 3
the process's effective user ID did not match its real user ID or
the process's effective group ID did not match its real group ID
(typically this is the result of executing a set-user-ID or
set-group-ID program);
-.IP \(bu
+.IP \[bu]
the effective capability bit was set on the executable file; or
-.IP \(bu
+.IP \[bu]
the process has a nonempty permitted capability set.
.PP
Secure execution may also be required if triggered
@@ -98,7 +98,7 @@ T} Thread safety MT-Safe env
.sp 1
.SH STANDARDS
.BR getenv ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.PP
.BR secure_getenv ()
is a GNU extension.
diff --git a/man3/getfsent.3 b/man3/getfsent.3
index 967d0e437..ff000c079 100644
--- a/man3/getfsent.3
+++ b/man3/getfsent.3
@@ -5,7 +5,7 @@
.\"
.\" Inspired by a page written by Walter Harms.
.\"
-.TH getfsent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getfsent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getfsent, getfsspec, getfsfile, setfsent, endfsent \- handle fstab entries
.SH LIBRARY
diff --git a/man3/getgrent.3 b/man3/getgrent.3
index fda8a7701..254d1b85a 100644
--- a/man3/getgrent.3
+++ b/man3/getgrent.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 19:29:54 1993 by Rik Faith (faith@cs.unc.edu)
-.TH getgrent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getgrent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getgrent, setgrent, endgrent \- get group file entry
.SH LIBRARY
@@ -34,8 +34,8 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR getgrent (),
@@ -44,11 +44,11 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.22:
_XOPEN_SOURCE >= 500 || _DEFAULT_SOURCE
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- Glibc 2.21 and earlier
+ glibc 2.21 and earlier
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/getgrent_r.3 b/man3/getgrent_r.3
index 486b2bb44..1d648bee9 100644
--- a/man3/getgrent_r.3
+++ b/man3/getgrent_r.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH getgrent_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH getgrent_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getgrent_r, fgetgrent_r \- get group file entry reentrantly
.SH LIBRARY
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getgrnam.3 b/man3/getgrnam.3
index c056500a6..c29e04f29 100644
--- a/man3/getgrnam.3
+++ b/man3/getgrnam.3
@@ -11,7 +11,7 @@
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2003-11-15 by aeb
.\"
-.TH getgrnam 3 2022-12-15 "Linux man-pages 6.02"
+.TH getgrnam 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getgrnam, getgrnam_r, getgrgid, getgrgid_r \- get group file entry
.SH LIBRARY
@@ -43,7 +43,7 @@ Feature Test Macro Requirements for glibc (see
.BR getgrgid_r ():
.nf
_POSIX_C_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/getgrouplist.3 b/man3/getgrouplist.3
index 65804b1cf..4b514e0aa 100644
--- a/man3/getgrouplist.3
+++ b/man3/getgrouplist.3
@@ -7,7 +7,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getgrouplist 3 2022-12-15 "Linux man-pages 6.02"
+.TH getgrouplist 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getgrouplist \- get list of groups to which a user belongs
.SH LIBRARY
@@ -30,7 +30,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/gethostbyname.3 b/man3/gethostbyname.3
index 7e4801727..9b1f6aacb 100644
--- a/man3/gethostbyname.3
+++ b/man3/gethostbyname.3
@@ -16,7 +16,7 @@
.\" Modified 2002-08-05, Michael Kerrisk
.\" Modified 2004-10-31, Andries Brouwer
.\"
-.TH gethostbyname 3 2022-12-15 "Linux man-pages 6.02"
+.TH gethostbyname 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent,
h_errno,
@@ -89,7 +89,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc up to and including 2.19:
+ glibc up to and including 2.19:
_BSD_SOURCE || _SVID_SOURCE
.fi
.PP
@@ -98,7 +98,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.8 to glibc 2.19:
+ glibc 2.8 to glibc 2.19:
_BSD_SOURCE || _SVID_SOURCE
Before glibc 2.8:
none
@@ -108,7 +108,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19
_DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L
- Glibc 2.12 to glibc 2.19:
+ glibc 2.12 to glibc 2.19:
_BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L
Before glibc 2.12:
none
@@ -462,13 +462,13 @@ This function is not reentrant,
and glibc adds a reentrant version
.BR gethostent_r ().
.SS GNU extensions
-Glibc2 also has a
+glibc2 also has a
.BR gethostbyname2 ()
that works like
.BR gethostbyname (),
but permits to specify the address family to which the address must belong.
.PP
-Glibc2 also has reentrant versions
+glibc2 also has reentrant versions
.BR gethostent_r (),
.BR gethostbyaddr_r (),
.BR gethostbyname_r (),
diff --git a/man3/gethostid.3 b/man3/gethostid.3
index 8599bf723..4b1b16ae5 100644
--- a/man3/gethostid.3
+++ b/man3/gethostid.3
@@ -7,7 +7,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH gethostid 3 2022-12-15 "Linux man-pages 6.02"
+.TH gethostid 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
gethostid, sethostid \- get or set the unique identifier of the current host
.SH LIBRARY
diff --git a/man3/getifaddrs.3 b/man3/getifaddrs.3
index 83a7de609..c814dc2d8 100644
--- a/man3/getifaddrs.3
+++ b/man3/getifaddrs.3
@@ -14,7 +14,7 @@
.\" for glibc specificities, provide an example.
.\" 2009-01-14 mtk, many edits and changes, rewrote example program.
.\"
-.TH getifaddrs 3 2022-12-15 "Linux man-pages 6.02"
+.TH getifaddrs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getifaddrs, freeifaddrs \- get interface addresses
.SH LIBRARY
@@ -172,7 +172,7 @@ T} Thread safety MT-Safe
Not in POSIX.1.
This function first appeared in BSDi and is
present on the BSD systems, but with slightly different
-semantics documented\(emreturning one entry per interface,
+semantics documented\[em]returning one entry per interface,
not per address.
This means
.I ifa_addr
diff --git a/man3/getipnodebyname.3 b/man3/getipnodebyname.3
index e1983e00b..d5414a63d 100644
--- a/man3/getipnodebyname.3
+++ b/man3/getipnodebyname.3
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" References: RFC 2553
-.TH getipnodebyname 3 2022-11-10 "Linux man-pages 6.02"
+.TH getipnodebyname 3 2022-11-10 "Linux man-pages 6.03"
.SH NAME
getipnodebyname, getipnodebyaddr, freehostent \- get network
hostnames and addresses
diff --git a/man3/getline.3 b/man3/getline.3
index 88e376ba1..3ad4c4392 100644
--- a/man3/getline.3
+++ b/man3/getline.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getline 3 2022-12-15 "Linux man-pages 6.02"
+.TH getline 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getline, getdelim \- delimited string input
.SH LIBRARY
@@ -91,7 +91,7 @@ On success,
and
.BR getdelim ()
return the number of characters read, including the delimiter character,
-but not including the terminating null byte (\(aq\e0\(aq).
+but not including the terminating null byte (\[aq]\e0\[aq]).
This value can be used
to handle embedded null bytes in the line read.
.PP
diff --git a/man3/getloadavg.3 b/man3/getloadavg.3
index 1ad9af233..1cdef1ce3 100644
--- a/man3/getloadavg.3
+++ b/man3/getloadavg.3
@@ -8,7 +8,7 @@
.\"
.\" 2007-12-08, mtk, Converted from mdoc to man macros
.\"
-.TH getloadavg 3 2022-12-15 "Linux man-pages 6.02"
+.TH getloadavg 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getloadavg \- get system load averages
.SH LIBRARY
diff --git a/man3/getlogin.3 b/man3/getlogin.3
index 05b11b398..4932fbadd 100644
--- a/man3/getlogin.3
+++ b/man3/getlogin.3
@@ -6,7 +6,7 @@
.\" Changed Tue Sep 19 01:49:29 1995, aeb: moved from man2 to man3
.\" added ref to /etc/utmp, added BUGS section, etc.
.\" modified 2003 Walter Harms, aeb - added getlogin_r, note on stdin use
-.TH getlogin 3 2022-12-15 "Linux man-pages 6.02"
+.TH getlogin 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getlogin, getlogin_r, cuserid \- get username
.SH LIBRARY
@@ -108,7 +108,7 @@ The calling process has no controlling terminal.
.TP
.B ERANGE
(getlogin_r)
-The length of the username, including the terminating null byte (\(aq\e0\(aq),
+The length of the username, including the terminating null byte (\[aq]\e0\[aq]),
is larger than
.IR bufsize .
.PP
diff --git a/man3/getmntent.3 b/man3/getmntent.3
index f6a6c0065..c930e4a4d 100644
--- a/man3/getmntent.3
+++ b/man3/getmntent.3
@@ -10,7 +10,7 @@
.\" Modified Sat Jul 24 21:46:57 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 961109, 031115, aeb
.\"
-.TH getmntent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getmntent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getmntent, setmntent, addmntent, endmntent, hasmntopt,
getmntent_r \- get filesystem descriptor file entry
@@ -50,7 +50,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getnameinfo.3 b/man3/getnameinfo.3
index 598fadc32..cc2ac9a16 100644
--- a/man3/getnameinfo.3
+++ b/man3/getnameinfo.3
@@ -8,7 +8,7 @@
.\" 2004-12-14, mtk, Added EAI_OVERFLOW error
.\" 2004-12-14 Fixed description of error return
.\"
-.TH getnameinfo 3 2022-12-15 "Linux man-pages 6.02"
+.TH getnameinfo 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getnameinfo \- address-to-name translation in protocol-independent manner
.SH LIBRARY
@@ -21,8 +21,10 @@ Standard C library
.PP
.BI "int getnameinfo(const struct sockaddr *restrict " addr \
", socklen_t " addrlen ,
-.BI " char " host "[restrict ." hostlen "], socklen_t " hostlen ,
-.BI " char " serv "[restrict ." servlen "], socklen_t " servlen ,
+.BI " char " host "[_Nullable restrict ." hostlen ],
+.BI " socklen_t " hostlen ,
+.BI " char " serv "[_Nullable restrict ." servlen ],
+.BI " socklen_t " servlen ,
.BI " int " flags );
.fi
.PP
@@ -35,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.22:
_POSIX_C_SOURCE >= 200112L
- Glibc 2.21 and earlier:
+ glibc 2.21 and earlier:
_POSIX_C_SOURCE
.fi
.SH DESCRIPTION
@@ -102,7 +104,7 @@ If set, then an error is returned if the hostname cannot be determined.
.B NI_DGRAM
If set, then the service is datagram (UDP) based rather than
stream (TCP) based.
-This is required for the few ports (512\(en514)
+This is required for the few ports (512\[en]514)
that have different services for UDP and TCP.
.TP
.B NI_NOFQDN
diff --git a/man3/getnetent.3 b/man3/getnetent.3
index 0d78db92f..e553b87f4 100644
--- a/man3/getnetent.3
+++ b/man3/getnetent.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 21:48:06 1993 by Rik Faith (faith@cs.unc.edu)
-.TH getnetent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getnetent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getnetent, getnetbyname, getnetbyaddr, setnetent, endnetent \-
get network entry
diff --git a/man3/getnetent_r.3 b/man3/getnetent_r.3
index bfb040aa5..5ba672424 100644
--- a/man3/getnetent_r.3
+++ b/man3/getnetent_r.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getnetent_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH getnetent_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getnetent_r, getnetbyname_r, getnetbyaddr_r \- get
network entry (reentrant)
@@ -42,7 +42,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getopt.3 b/man3/getopt.3
index 712049359..6b2fcf5f4 100644
--- a/man3/getopt.3
+++ b/man3/getopt.3
@@ -20,7 +20,7 @@
.\" the start of optstring
.\" Modified 2006-12-15, mtk, Added getopt() example program.
.\"
-.TH getopt 3 2022-12-15 "Linux man-pages 6.02"
+.TH getopt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getopt, getopt_long, getopt_long_only,
optarg, optind, opterr, optopt \- Parse command-line options
@@ -73,11 +73,11 @@ and
are the argument count and array as passed to the
.IR main ()
function on program invocation.
-An element of \fIargv\fP that starts with \(aq\-\(aq
+An element of \fIargv\fP that starts with \[aq]\-\[aq]
(and is not exactly "\-" or "\-\-")
is an option element.
The characters of this element
-(aside from the initial \(aq\-\(aq) are option characters.
+(aside from the initial \[aq]\-\[aq]) are option characters.
If
.BR getopt ()
is called repeatedly, it returns successively each of the option characters
@@ -114,7 +114,7 @@ A legitimate option character is any visible one byte
.BR ascii (7)
character (for which
.BR isgraph (3)
-would return nonzero) that is not \(aq\-\(aq, \(aq:\(aq, or \(aq;\(aq.
+would return nonzero) that is not \[aq]\-\[aq], \[aq]:\[aq], or \[aq];\[aq].
If such a
character is followed by a colon, the option requires an argument, so
.BR getopt ()
@@ -146,19 +146,19 @@ permutes the contents of \fIargv\fP as it
scans, so that eventually all the nonoptions are at the end.
Two other scanning modes are also implemented.
If the first character of
-\fIoptstring\fP is \(aq+\(aq or the environment variable
+\fIoptstring\fP is \[aq]+\[aq] or the environment variable
.B POSIXLY_CORRECT
is set, then option processing stops as soon as a nonoption argument is
encountered.
-If \(aq+\(aq is not the first character of
+If \[aq]+\[aq] is not the first character of
.IR optstring ,
it is treated as a normal option.
If
.B POSIXLY_CORRECT
behaviour is required in this case
.I optstring
-will contain two \(aq+\(aq symbols.
-If the first character of \fIoptstring\fP is \(aq\-\(aq, then
+will contain two \[aq]+\[aq] symbols.
+If the first character of \fIoptstring\fP is \[aq]\-\[aq], then
each nonoption \fIargv\fP-element is handled as if it were the argument of
an option with character code 1.
(This is used by programs that were
@@ -175,32 +175,32 @@ can detect two kinds of errors:
and (2) a missing option argument
(i.e., an option at the end of the command line without an expected argument).
Such errors are handled and reported as follows:
-.IP \(bu 3
+.IP \[bu] 3
By default,
.BR getopt ()
prints an error message on standard error,
places the erroneous option character in
.IR optopt ,
-and returns \(aq?\(aq as the function result.
-.IP \(bu
+and returns \[aq]?\[aq] as the function result.
+.IP \[bu]
If the caller has set the global variable
.I opterr
to zero, then
.BR getopt ()
does not print an error message.
The caller can determine that there was an error by testing whether
-the function return value is \(aq?\(aq.
+the function return value is \[aq]?\[aq].
(By default,
.I opterr
has a nonzero value.)
-.IP \(bu
+.IP \[bu]
If the first character
-(following any optional \(aq+\(aq or \(aq\-\(aq described above)
+(following any optional \[aq]+\[aq] or \[aq]\-\[aq] described above)
of \fIoptstring\fP
-is a colon (\(aq:\(aq), then
+is a colon (\[aq]:\[aq]), then
.BR getopt ()
likewise does not print an error message.
-In addition, it returns \(aq:\(aq instead of \(aq?\(aq to
+In addition, it returns \[aq]:\[aq] instead of \[aq]?\[aq] to
indicate a missing option argument.
This allows the caller to distinguish the two different types of errors.
.\"
@@ -277,9 +277,9 @@ points to a variable which is set to the index of the long option relative to
.BR getopt_long_only ()
is like
.BR getopt_long (),
-but \(aq\-\(aq as well
+but \[aq]\-\[aq] as well
as "\-\-" can indicate a long option.
-If an option that starts with \(aq\-\(aq
+If an option that starts with \[aq]\-\[aq]
(not "\-\-") doesn't match a long option, but does match a short option,
it is parsed as a short option instead.
.SH RETURN VALUE
@@ -293,13 +293,13 @@ If
.BR getopt ()
encounters an option character that was not in
.IR optstring ,
-then \(aq?\(aq is returned.
+then \[aq]?\[aq] is returned.
If
.BR getopt ()
encounters an option with a missing argument,
then the return value depends on the first character in
.IR optstring :
-if it is \(aq:\(aq, then \(aq:\(aq is returned; otherwise \(aq?\(aq is returned.
+if it is \[aq]:\[aq], then \[aq]:\[aq] is returned; otherwise \[aq]?\[aq] is returned.
.PP
.BR getopt_long ()
and
@@ -310,7 +310,7 @@ For a long option, they
return \fIval\fP if \fIflag\fP is NULL, and 0 otherwise.
Error and \-1 returns are the same as for
.BR getopt (),
-plus \(aq?\(aq for an
+plus \[aq]?\[aq] for an
ambiguous match or an extraneous parameter.
.SH ENVIRONMENT
.TP
@@ -361,7 +361,7 @@ Nevertheless,
.I const
is used in the prototype to be compatible with other systems.
.IP
-The use of \(aq+\(aq and \(aq\-\(aq in
+The use of \[aq]+\[aq] and \[aq]\-\[aq] in
.I optstring
is a GNU extension.
.IP
@@ -384,8 +384,8 @@ These functions are GNU extensions.
.SH NOTES
A program that scans multiple argument vectors,
or rescans the same vector more than once,
-and wants to make use of GNU extensions such as \(aq+\(aq
-and \(aq\-\(aq at the start of
+and wants to make use of GNU extensions such as \[aq]+\[aq]
+and \[aq]\-\[aq] at the start of
.IR optstring ,
or changes the value of
.B POSIXLY_CORRECT
@@ -445,14 +445,14 @@ main(int argc, char *argv[])
flags = 0;
while ((opt = getopt(argc, argv, "nt:")) != \-1) {
switch (opt) {
- case \(aqn\(aq:
+ case \[aq]n\[aq]:
flags = 1;
break;
- case \(aqt\(aq:
+ case \[aq]t\[aq]:
nsecs = atoi(optarg);
tfnd = 1;
break;
- default: /* \(aq?\(aq */
+ default: /* \[aq]?\[aq] */
fprintf(stderr, "Usage: %s [\-t nsecs] [\-n] name\en",
argv[0]);
exit(EXIT_FAILURE);
@@ -500,7 +500,7 @@ main(int argc, char *argv[])
{"append", no_argument, 0, 0 },
{"delete", required_argument, 0, 0 },
{"verbose", no_argument, 0, 0 },
- {"create", required_argument, 0, \(aqc\(aq},
+ {"create", required_argument, 0, \[aq]c\[aq]},
{"file", required_argument, 0, 0 },
{0, 0, 0, 0 }
};
@@ -518,32 +518,32 @@ main(int argc, char *argv[])
printf("\en");
break;
- case \(aq0\(aq:
- case \(aq1\(aq:
- case \(aq2\(aq:
+ case \[aq]0\[aq]:
+ case \[aq]1\[aq]:
+ case \[aq]2\[aq]:
if (digit_optind != 0 && digit_optind != this_option_optind)
printf("digits occur in two different argv\-elements.\en");
digit_optind = this_option_optind;
printf("option %c\en", c);
break;
- case \(aqa\(aq:
+ case \[aq]a\[aq]:
printf("option a\en");
break;
- case \(aqb\(aq:
+ case \[aq]b\[aq]:
printf("option b\en");
break;
- case \(aqc\(aq:
- printf("option c with value \(aq%s\(aq\en", optarg);
+ case \[aq]c\[aq]:
+ printf("option c with value \[aq]%s\[aq]\en", optarg);
break;
- case \(aqd\(aq:
- printf("option d with value \(aq%s\(aq\en", optarg);
+ case \[aq]d\[aq]:
+ printf("option d with value \[aq]%s\[aq]\en", optarg);
break;
- case \(aq?\(aq:
+ case \[aq]?\[aq]:
break;
default:
diff --git a/man3/getpass.3 b/man3/getpass.3
index 98812aa7c..7af6fee07 100644
--- a/man3/getpass.3
+++ b/man3/getpass.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH getpass 3 2022-12-15 "Linux man-pages 6.02"
+.TH getpass 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getpass \- get a password
.SH LIBRARY
@@ -25,8 +25,8 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.2.2:
_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
Before glibc 2.2.2:
none
.fi
@@ -56,7 +56,7 @@ The function
returns a pointer to a static buffer containing (the first
.B PASS_MAX
bytes of) the password without the trailing
-newline, terminated by a null byte (\(aq\e0\(aq).
+newline, terminated by a null byte (\[aq]\e0\[aq]).
This buffer may be overwritten by a following call.
On error, the terminal state is restored,
.I errno
diff --git a/man3/getprotoent.3 b/man3/getprotoent.3
index 3fec0bcb9..2420c331b 100644
--- a/man3/getprotoent.3
+++ b/man3/getprotoent.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 19:26:03 1993 by Rik Faith (faith@cs.unc.edu)
-.TH getprotoent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getprotoent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getprotoent, getprotobyname, getprotobynumber, setprotoent,
endprotoent \- get protocol entry
diff --git a/man3/getprotoent_r.3 b/man3/getprotoent_r.3
index 558ed6a9d..438d1dcad 100644
--- a/man3/getprotoent_r.3
+++ b/man3/getprotoent_r.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getprotoent_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH getprotoent_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getprotoent_r, getprotobyname_r, getprotobynumber_r \- get
protocol entry (reentrant)
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getpt.3 b/man3/getpt.3
index a1f6cb12c..c22316318 100644
--- a/man3/getpt.3
+++ b/man3/getpt.3
@@ -5,7 +5,7 @@
.\" Redistribute and modify at will.
.\" %%%LICENSE_END
.\"
-.TH getpt 3 2022-12-15 "Linux man-pages 6.02"
+.TH getpt 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getpt \- open a new pseudoterminal master
.SH LIBRARY
diff --git a/man3/getpw.3 b/man3/getpw.3
index dde01a9ec..6f199e53a 100644
--- a/man3/getpw.3
+++ b/man3/getpw.3
@@ -10,7 +10,7 @@
.\" Modified Sat Jul 24 19:23:25 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Mon May 27 21:37:47 1996 by Martin Schulze (joey@linux.de)
.\"
-.TH getpw 3 2022-12-15 "Linux man-pages 6.02"
+.TH getpw 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getpw \- reconstruct password line entry
.SH LIBRARY
diff --git a/man3/getpwent.3 b/man3/getpwent.3
index 49a96031e..e93d596fa 100644
--- a/man3/getpwent.3
+++ b/man3/getpwent.3
@@ -11,7 +11,7 @@
.\" Modified Sat Jul 24 19:22:14 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Mon May 27 21:37:47 1996 by Martin Schulze (joey@linux.de)
.\"
-.TH getpwent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getpwent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getpwent, setpwent, endpwent \- get password file entry
.SH LIBRARY
@@ -38,8 +38,8 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/getpwent_r.3 b/man3/getpwent_r.3
index 1fe9f0c4a..b9bbc54e8 100644
--- a/man3/getpwent_r.3
+++ b/man3/getpwent_r.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH getpwent_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH getpwent_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getpwent_r, fgetpwent_r \- get passwd file entry reentrantly
.SH LIBRARY
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.PP
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getpwnam.3 b/man3/getpwnam.3
index 76580ea56..2557f8b31 100644
--- a/man3/getpwnam.3
+++ b/man3/getpwnam.3
@@ -15,7 +15,7 @@
.\" Modified 2003-11-15 by aeb
.\" 2008-11-07, mtk, Added an example program for getpwnam_r().
.\"
-.TH getpwnam 3 2022-12-15 "Linux man-pages 6.02"
+.TH getpwnam 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getpwnam, getpwnam_r, getpwuid, getpwuid_r \- get password file entry
.SH LIBRARY
@@ -47,7 +47,7 @@ Feature Test Macro Requirements for glibc (see
.BR getpwuid_r ():
.nf
_POSIX_C_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/getrpcent.3 b/man3/getrpcent.3
index 8b3d5fc20..d28704a20 100644
--- a/man3/getrpcent.3
+++ b/man3/getrpcent.3
@@ -6,7 +6,7 @@
.\" %%%LICENSE_END
.\"
.\" @(#)getrpcent.3n 2.2 88/08/02 4.0 RPCSRC; from 1.11 88/03/14 SMI
-.TH getrpcent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getrpcent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getrpcent, getrpcbyname, getrpcbynumber, setrpcent, endrpcent \- get
RPC entry
diff --git a/man3/getrpcent_r.3 b/man3/getrpcent_r.3
index 580f6208b..c3298d54e 100644
--- a/man3/getrpcent_r.3
+++ b/man3/getrpcent_r.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getrpcent_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH getrpcent_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getrpcent_r, getrpcbyname_r, getrpcbynumber_r \- get
RPC entry (reentrant)
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getrpcport.3 b/man3/getrpcport.3
index fc628423e..043df378c 100644
--- a/man3/getrpcport.3
+++ b/man3/getrpcport.3
@@ -6,7 +6,7 @@
.\" %%%LICENSE_END
.\"
.\" @(#)getrpcport.3r 2.2 88/08/02 4.0 RPCSRC; from 1.12 88/02/26 SMI
-.TH getrpcport 3 2022-12-15 "Linux man-pages 6.02"
+.TH getrpcport 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getrpcport \- get RPC port number
.SH LIBRARY
diff --git a/man3/gets.3 b/man3/gets.3
index 42514b8ac..49c67f65b 100644
--- a/man3/gets.3
+++ b/man3/gets.3
@@ -7,7 +7,7 @@
.\" Modified Fri Sep 8 15:48:13 1995 by Andries Brouwer (aeb@cwi.nl)
.\" Modified 2013-12-31, David Malcolm <dmalcolm@redhat.com>
.\" Split gets(3) into its own page; fgetc() et al. move to fgetc(3)
-.TH gets 3 2022-12-15 "Linux man-pages 6.02"
+.TH gets 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
gets \- get a string from standard input (DEPRECATED)
.SH LIBRARY
@@ -29,7 +29,7 @@ into the buffer pointed to by
.I s
until either a terminating newline or
.BR EOF ,
-which it replaces with a null byte (\(aq\e0\(aq).
+which it replaces with a null byte (\[aq]\e0\[aq]).
No check for buffer overrun is performed (see BUGS below).
.SH RETURN VALUE
.BR gets ()
@@ -57,7 +57,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-C89, C99, POSIX.1-2001.
+C99, POSIX.1-2001.
.PP
LSB deprecates
.BR gets ().
diff --git a/man3/getservent.3 b/man3/getservent.3
index 36fe6c00e..819b28bf2 100644
--- a/man3/getservent.3
+++ b/man3/getservent.3
@@ -12,7 +12,7 @@
.\" Modified Mon Apr 22 01:50:54 1996 by Martin Schulze <joey@infodrom.north.de>
.\" 2001-07-25 added a clause about NULL proto (Martin Michlmayr or David N. Welton)
.\"
-.TH getservent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getservent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getservent, getservbyname, getservbyport, setservent, endservent \-
get service entry
diff --git a/man3/getservent_r.3 b/man3/getservent_r.3
index eee14d4f0..d46d3d8c1 100644
--- a/man3/getservent_r.3
+++ b/man3/getservent_r.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getservent_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH getservent_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getservent_r, getservbyname_r, getservbyport_r \- get
service entry (reentrant)
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getspnam.3 b/man3/getspnam.3
index c7ba9961a..8ae1517e0 100644
--- a/man3/getspnam.3
+++ b/man3/getspnam.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH getspnam 3 2022-12-15 "Linux man-pages 6.02"
+.TH getspnam 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getspnam, getspnam_r, getspent, getspent_r, setspent, endspent,
fgetspent, fgetspent_r, sgetspent, sgetspent_r, putspent,
@@ -61,7 +61,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/getsubopt.3 b/man3/getsubopt.3
index 3d23d881a..6688d2a73 100644
--- a/man3/getsubopt.3
+++ b/man3/getsubopt.3
@@ -23,7 +23,7 @@
.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
.\" %%%LICENSE_END
.\"
-.TH getsubopt 3 2022-12-15 "Linux man-pages 6.02"
+.TH getsubopt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getsubopt \- parse suboption arguments from a string
.SH LIBRARY
@@ -108,7 +108,7 @@ When
returns,
.I optionp
points to the next suboption,
-or to the null byte (\(aq\e0\(aq) at the end of the
+or to the null byte (\[aq]\e0\[aq]) at the end of the
string if the last suboption was just processed.
.SH RETURN VALUE
If the first suboption in
@@ -190,9 +190,9 @@ main(int argc, char *argv[])
while ((opt = getopt(argc, argv, "o:")) != \-1) {
switch (opt) {
- case \(aqo\(aq:
+ case \[aq]o\[aq]:
subopts = optarg;
- while (*subopts != \(aq\e0\(aq && !errfnd) {
+ while (*subopts != \[aq]\e0\[aq] && !errfnd) {
switch (getsubopt(&subopts, token, &value)) {
case RO_OPT:
@@ -206,7 +206,7 @@ main(int argc, char *argv[])
case NAME_OPT:
if (value == NULL) {
fprintf(stderr,
- "Missing value for suboption \(aq%s\(aq\en",
+ "Missing value for suboption \[aq]%s\[aq]\en",
token[NAME_OPT]);
errfnd = 1;
continue;
@@ -224,7 +224,7 @@ main(int argc, char *argv[])
}
if (readwrite && readonly) {
fprintf(stderr,
- "Only one of \(aq%s\(aq and \(aq%s\(aq can be specified\en",
+ "Only one of \[aq]%s\[aq] and \[aq]%s\[aq] can be specified\en",
token[RO_OPT], token[RW_OPT]);
errfnd = 1;
}
@@ -238,7 +238,7 @@ main(int argc, char *argv[])
if (errfnd || argc == 1) {
fprintf(stderr, "\enUsage: %s \-o <suboptstring>\en", argv[0]);
fprintf(stderr,
- "suboptions are \(aqro\(aq, \(aqrw\(aq, and \(aqname=<value>\(aq\en");
+ "suboptions are \[aq]ro\[aq], \[aq]rw\[aq], and \[aq]name=<value>\[aq]\en");
exit(EXIT_FAILURE);
}
diff --git a/man3/getttyent.3 b/man3/getttyent.3
index 4294d835a..bcab90958 100644
--- a/man3/getttyent.3
+++ b/man3/getttyent.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH getttyent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getttyent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getttyent, getttynam, setttyent, endttyent \- get ttys file entry
.SH LIBRARY
diff --git a/man3/getusershell.3 b/man3/getusershell.3
index 404020d3d..53a56d594 100644
--- a/man3/getusershell.3
+++ b/man3/getusershell.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 19:17:53 1993 by Rik Faith (faith@cs.unc.edu)
-.TH getusershell 3 2022-12-15 "Linux man-pages 6.02"
+.TH getusershell 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getusershell, setusershell, endusershell \- get permitted user shells
.SH LIBRARY
diff --git a/man3/getutent.3 b/man3/getutent.3
index c60cb9713..bd0369db4 100644
--- a/man3/getutent.3
+++ b/man3/getutent.3
@@ -10,7 +10,7 @@
.\" Modified Thu Jul 25 14:43:46 MET DST 1996 by Michael Haardt
.\" <michael@cantor.informatik.rwth-aachen.de>
.\"
-.TH getutent 3 2022-12-15 "Linux man-pages 6.02"
+.TH getutent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getutent, getutid, getutline, pututline, setutent, endutent,
utmpname \- access utmp file entries
@@ -249,9 +249,9 @@ their counterparts without the "x" (e.g.,
is an alias for
.BR getutent ()).
.SH NOTES
-.SS Glibc notes
+.SS glibc notes
The above functions are not thread-safe.
-Glibc adds reentrant versions
+glibc adds reentrant versions
.PP
.nf
.B #include <utmp.h>
@@ -272,7 +272,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_GNU_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.PP
These functions are GNU extensions, analogs of the functions of the
diff --git a/man3/getutmp.3 b/man3/getutmp.3
index 43ccd595d..d6e4df7b0 100644
--- a/man3/getutmp.3
+++ b/man3/getutmp.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getutmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH getutmp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getutmp, getutmpx \- copy utmp structure to utmpx, and vice versa
.SH LIBRARY
diff --git a/man3/getw.3 b/man3/getw.3
index 3a53bc616..0223f1729 100644
--- a/man3/getw.3
+++ b/man3/getw.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getw 3 2022-12-15 "Linux man-pages 6.02"
+.TH getw 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getw, putw \- input and output of words (ints)
.SH LIBRARY
@@ -27,8 +27,8 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.3.3:
_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
Before glibc 2.3.3:
_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE
.fi
diff --git a/man3/getwchar.3 b/man3/getwchar.3
index 0c02055dc..6378479a4 100644
--- a/man3/getwchar.3
+++ b/man3/getwchar.3
@@ -10,7 +10,7 @@
.\" http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH getwchar 3 2022-12-15 "Linux man-pages 6.02"
+.TH getwchar 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
getwchar \- read a wide character from standard input
.SH LIBRARY
diff --git a/man3/glob.3 b/man3/glob.3
index 402ef2bd8..5887c3420 100644
--- a/man3/glob.3
+++ b/man3/glob.3
@@ -12,7 +12,7 @@
.\" Expanded the description of various flags
.\" Various wording fixes.
.\"
-.TH glob 3 2022-12-15 "Linux man-pages 6.02"
+.TH glob 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
glob, globfree \- find pathnames matching a pattern, free memory from glob()
.SH LIBRARY
@@ -112,7 +112,7 @@ Do not set this flag on the first invocation of
.BR glob ().
.TP
.B GLOB_NOESCAPE
-Don't allow backslash (\(aq\e\(aq) to be used as an escape
+Don't allow backslash (\[aq]\e\[aq]) to be used as an escape
character.
Normally, a backslash can be used to quote the following character,
providing a mechanism to turn off the special meaning
@@ -160,11 +160,11 @@ even if there is no file with that name.
.TP
.B GLOB_TILDE
Carry out tilde expansion.
-If a tilde (\(aq\(ti\(aq) is the only character in the pattern,
-or an initial tilde is followed immediately by a slash (\(aq/\(aq),
+If a tilde (\[aq]\[ti]\[aq]) is the only character in the pattern,
+or an initial tilde is followed immediately by a slash (\[aq]/\[aq]),
then the home directory of the caller is substituted for
the tilde.
-If an initial tilde is followed by a username (e.g., "\(tiandrea/bin"),
+If an initial tilde is followed by a username (e.g., "\[ti]andrea/bin"),
then the tilde and username are substituted by the home directory
of that user.
If the username is invalid, or the home directory cannot be
diff --git a/man3/gnu_get_libc_version.3 b/man3/gnu_get_libc_version.3
index 55bc0c6f2..0b610d30d 100644
--- a/man3/gnu_get_libc_version.3
+++ b/man3/gnu_get_libc_version.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH gnu_get_libc_version 3 2022-12-15 "Linux man-pages 6.02"
+.TH gnu_get_libc_version 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
gnu_get_libc_version, gnu_get_libc_release \- get glibc version and release
.SH LIBRARY
diff --git a/man3/grantpt.3 b/man3/grantpt.3
index 5f7339a6c..b33fdc452 100644
--- a/man3/grantpt.3
+++ b/man3/grantpt.3
@@ -3,7 +3,7 @@
.\" This page is in the public domain. - aeb
.\" %%%LICENSE_END
.\"
-.TH grantpt 3 2022-12-15 "Linux man-pages 6.02"
+.TH grantpt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
grantpt \- grant access to the slave pseudoterminal
.SH LIBRARY
@@ -26,7 +26,7 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.24:
_XOPEN_SOURCE >= 500
.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
- Glibc 2.23 and earlier:
+ glibc 2.23 and earlier:
_XOPEN_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/group_member.3 b/man3/group_member.3
index 124e5a9c9..42e9af9d4 100644
--- a/man3/group_member.3
+++ b/man3/group_member.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH group_member 3 2022-10-30 "Linux man-pages 6.02"
+.TH group_member 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
group_member \- test whether a process is in a group
.SH LIBRARY
diff --git a/man3/gsignal.3 b/man3/gsignal.3
index 1c4ef9cf5..f1b50cf99 100644
--- a/man3/gsignal.3
+++ b/man3/gsignal.3
@@ -5,7 +5,7 @@
.\"
.\" This replaces an earlier man page written by Walter Harms
.\" <walter.harms@informatik.uni-oldenburg.de>.
-.TH gsignal 3 2022-12-15 "Linux man-pages 6.02"
+.TH gsignal 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
gsignal, ssignal \- software signal facility
.SH LIBRARY
@@ -32,7 +32,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
@@ -80,7 +80,7 @@ the action function with argument
and returns the value returned by that function.
The range of possible values
.I signum
-varies (often 1\(en15 or 1\(en17).
+varies (often 1\[en]15 or 1\[en]17).
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
diff --git a/man3/hash.3 b/man3/hash.3
index b354f2548..a2ccff238 100644
--- a/man3/hash.3
+++ b/man3/hash.3
@@ -5,7 +5,7 @@
.\"
.\" @(#)hash.3 8.6 (Berkeley) 8/18/94
.\"
-.TH hash 3 2022-12-04 "Linux man-pages 6.02"
+.TH hash 3 2022-12-04 "Linux man-pages 6.03"
.UC 7
.SH NAME
hash \- hash database access method
diff --git a/man3/hsearch.3 b/man3/hsearch.3
index e45a36731..72ae4a7e2 100644
--- a/man3/hsearch.3
+++ b/man3/hsearch.3
@@ -14,7 +14,7 @@
.\" 2008-09-03, mtk, restructured somewhat, in part after suggestions from
.\" Timothy S. Nelson <wayland@wayland.id.au>
.\"
-.TH hsearch 3 2022-12-15 "Linux man-pages 6.02"
+.TH hsearch 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
hcreate, hdestroy, hsearch, hcreate_r, hdestroy_r,
hsearch_r \- hash table management
diff --git a/man3/hypot.3 b/man3/hypot.3
index 9f9c858af..9c64e6ce5 100644
--- a/man3/hypot.3
+++ b/man3/hypot.3
@@ -11,7 +11,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH HYPOT 3 2022-12-15 "Linux man-pages 6.02"
+.TH hypot 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
hypot, hypotf, hypotl \- Euclidean distance function
.SH LIBRARY
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| _XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR hypotf (),
@@ -44,7 +44,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return
diff --git a/man3/iconv.3 b/man3/iconv.3
index ce46f16ba..d035603e3 100644
--- a/man3/iconv.3
+++ b/man3/iconv.3
@@ -11,7 +11,7 @@
.\" 2000-06-30 correction by Yuichi SATO <sato@complex.eng.hokudai.ac.jp>
.\" 2000-11-15 aeb, fixed prototype
.\"
-.TH iconv 3 2022-12-15 "Linux man-pages 6.02"
+.TH iconv 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iconv \- perform character set conversion
.SH LIBRARY
@@ -72,21 +72,21 @@ function can also convert a sequence of input bytes
to an update to the conversion state without producing any output bytes;
such input is called a \fIshift sequence\fP.
The conversion can stop for four reasons:
-.IP \(bu 3
+.IP \[bu] 3
An invalid multibyte sequence is encountered in the input.
In this case,
it sets \fIerrno\fP to \fBEILSEQ\fP and returns
.IR (size_t)\ \-1 .
\fI*inbuf\fP
is left pointing to the beginning of the invalid multibyte sequence.
-.IP \(bu
+.IP \[bu]
The input byte sequence has been entirely converted,
that is, \fI*inbytesleft\fP has gone down to 0.
In this case,
.BR iconv ()
returns the number of
nonreversible conversions performed during this call.
-.IP \(bu
+.IP \[bu]
An incomplete multibyte sequence is encountered in the input, and the
input byte sequence terminates after it.
In this case, it sets \fIerrno\fP to
@@ -94,7 +94,7 @@ In this case, it sets \fIerrno\fP to
.IR (size_t)\ \-1 .
\fI*inbuf\fP is left pointing to the
beginning of the incomplete multibyte sequence.
-.IP \(bu
+.IP \[bu]
The output buffer has no more room for the next converted character.
In this case, it sets \fIerrno\fP to \fBE2BIG\fP and returns
.IR (size_t)\ \-1 .
diff --git a/man3/iconv_close.3 b/man3/iconv_close.3
index 3930b13cf..7698a2f85 100644
--- a/man3/iconv_close.3
+++ b/man3/iconv_close.3
@@ -7,7 +7,7 @@
.\" GNU glibc-2 source code and manual
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH iconv_close 3 2022-12-15 "Linux man-pages 6.02"
+.TH iconv_close 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iconv_close \- deallocate descriptor for character set conversion
.SH LIBRARY
diff --git a/man3/iconv_open.3 b/man3/iconv_open.3
index b40cc4d49..a33369a20 100644
--- a/man3/iconv_open.3
+++ b/man3/iconv_open.3
@@ -11,7 +11,7 @@
.\" 2007-03-31 Bruno Haible, Describe the glibc/libiconv //TRANSLIT
.\" and //IGNORE extensions for 'tocode'.
.\"
-.TH iconv_open 3 2022-12-15 "Linux man-pages 6.02"
+.TH iconv_open 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iconv_open \- allocate descriptor for character set conversion
.SH LIBRARY
diff --git a/man3/if_nameindex.3 b/man3/if_nameindex.3
index b51dafa59..9021eee3c 100644
--- a/man3/if_nameindex.3
+++ b/man3/if_nameindex.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH if_nameindex 3 2022-12-15 "Linux man-pages 6.02"
+.TH if_nameindex 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
if_nameindex, if_freenameindex \- get network interface names and indexes
.SH LIBRARY
diff --git a/man3/if_nametoindex.3 b/man3/if_nametoindex.3
index 8dca3199c..d25ef93ce 100644
--- a/man3/if_nametoindex.3
+++ b/man3/if_nametoindex.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH if_nametoindex 3 2022-12-15 "Linux man-pages 6.02"
+.TH if_nametoindex 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
if_nametoindex, if_indextoname \- mappings between network interface
names and indexes
diff --git a/man3/ilogb.3 b/man3/ilogb.3
index e9479872b..a825d5766 100644
--- a/man3/ilogb.3
+++ b/man3/ilogb.3
@@ -7,7 +7,7 @@
.\"
.\" Inspired by a page by Walter Harms created 2002-08-10
.\"
-.TH ilogb 3 2022-12-15 "Linux man-pages 6.02"
+.TH ilogb 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ilogb, ilogbf, ilogbl \- get integer exponent of a floating-point value
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR ilogbf (),
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the exponent part of their argument
@@ -133,13 +133,13 @@ C99, POSIX.1-2001, POSIX.1-2008.
.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6794
Before glibc 2.16, the following bugs existed in the
glibc implementation of these functions:
-.IP \(bu 3
+.IP \[bu] 3
The domain error case where
.I x
is 0 or a NaN did not cause
.I errno
to be set or (on some architectures) raise a floating-point exception.
-.IP \(bu
+.IP \[bu]
The domain error case where
.I x
is an infinity did not cause
diff --git a/man3/index.3 b/man3/index.3
index 96f1ba8fe..5a852c3fb 100644
--- a/man3/index.3
+++ b/man3/index.3
@@ -1,15 +1,9 @@
'\" t
-.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\" Copyright 2022 Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.\" References consulted:
-.\" Linux libc source code
-.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
-.\" 386BSD man pages
-.\" Modified Mon Apr 12 12:54:34 1993, David Metcalfe
-.\" Modified Sat Jul 24 19:13:52 1993, Rik Faith (faith@cs.unc.edu)
-.TH index 3 2022-12-15 "Linux man-pages 6.02"
+.TH index 3 2023-01-05 "Linux man-pages 6.03"
.SH NAME
index, rindex \- locate character in string
.SH LIBRARY
@@ -19,47 +13,23 @@ Standard C library
.nf
.B #include <strings.h>
.PP
-.BI "char *index(const char *" s ", int " c );
-.BI "char *rindex(const char *" s ", int " c );
+.BI "[[deprecated]] char *index(const char *" s ", int " c );
+.BI "[[deprecated]] char *rindex(const char *" s ", int " c );
.fi
.SH DESCRIPTION
-The
.BR index ()
-function returns a pointer to the first occurrence
-of the character \fIc\fP in the string \fIs\fP.
+is identical to
+.BR strchr (3).
.PP
-The
.BR rindex ()
-function returns a pointer to the last occurrence
-of the character \fIc\fP in the string \fIs\fP.
+is identical to
+.BR strrchr (3).
.PP
-The terminating null byte (\(aq\e0\(aq) is considered to be a part of the
-strings.
-.SH RETURN VALUE
-The
-.BR index ()
+Use
+.BR strchr (3)
and
-.BR rindex ()
-functions return a pointer to
-the matched character or NULL if the character is not found.
-.SH ATTRIBUTES
-For an explanation of the terms used in this section, see
-.BR attributes (7).
-.ad l
-.nh
-.TS
-allbox;
-lbx lb lb
-l l l.
-Interface Attribute Value
-T{
-.BR index (),
-.BR rindex ()
-T} Thread safety MT-Safe
-.TE
-.hy
-.ad
-.sp 1
+.BR strrchr (3)
+instead of these functions.
.SH STANDARDS
4.3BSD; marked as LEGACY in POSIX.1-2001.
POSIX.1-2008 removes the specifications of
@@ -72,12 +42,5 @@ and
.BR strrchr (3)
instead.
.SH SEE ALSO
-.BR memchr (3),
.BR strchr (3),
-.BR string (3),
-.BR strpbrk (3),
-.BR strrchr (3),
-.BR strsep (3),
-.BR strspn (3),
-.BR strstr (3),
-.BR strtok (3)
+.BR strrchr (3)
diff --git a/man3/inet.3 b/man3/inet.3
index 7980b7e05..e0afe9d44 100644
--- a/man3/inet.3
+++ b/man3/inet.3
@@ -20,7 +20,7 @@
.\" Add discussion of Classful Addressing, noting that it is obsolete.
.\" Added an EXAMPLE program.
.\"
-.TH INET 3 2022-12-15 "Linux man-pages 6.02"
+.TH inet 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof,
inet_netof \- Internet address manipulation routines
diff --git a/man3/inet_net_pton.3 b/man3/inet_net_pton.3
index 335b7ba9b..bffa27b71 100644
--- a/man3/inet_net_pton.3
+++ b/man3/inet_net_pton.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH inet_net_pton 3 2022-11-10 "Linux man-pages 6.02"
+.TH inet_net_pton 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
inet_net_pton, inet_net_ntop \- Internet network number conversion
.SH LIBRARY
@@ -183,34 +183,34 @@ an explicit size value, then that size becomes the return value of
Otherwise, the return value,
.IR bits ,
is inferred as follows:
-.IP \(bu 3
+.IP \[bu] 3
If the most significant byte of the network number is
greater than or equal to 240,
then
.I bits
is 32.
-.IP \(bu
+.IP \[bu]
Otherwise,
if the most significant byte of the network number is
greater than or equal to 224,
then
.I bits
is 4.
-.IP \(bu
+.IP \[bu]
Otherwise,
if the most significant byte of the network number is
greater than or equal to 192,
then
.I bits
is 24.
-.IP \(bu
+.IP \[bu]
Otherwise,
if the most significant byte of the network number is
greater than or equal to 128,
then
.I bits
is 16.
-.IP \(bu
+.IP \[bu]
Otherwise,
.I bits
is 8.
@@ -349,7 +349,7 @@ main(int argc, char *argv[])
printf("inet_net_pton() returned: %d\en", bits);
- /* Convert binary format back to presentation, using \(aqbits\(aq
+ /* Convert binary format back to presentation, using \[aq]bits\[aq]
returned by inet_net_pton(). */
if (inet_net_ntop(AF_INET, &addr, bits, buf, sizeof(buf)) == NULL)
@@ -357,7 +357,7 @@ main(int argc, char *argv[])
printf("inet_net_ntop() yielded: %s\en", buf);
- /* Display \(aqaddr\(aq in raw form (in network byte order), so we can
+ /* Display \[aq]addr\[aq] in raw form (in network byte order), so we can
see bytes not displayed by inet_net_ntop(); some of those bytes
may not have been touched by inet_net_ntop(), and so will still
have any initial value that was specified in argv[2]. */
diff --git a/man3/inet_ntop.3 b/man3/inet_ntop.3
index d0e27e32b..960510950 100644
--- a/man3/inet_ntop.3
+++ b/man3/inet_ntop.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" References: RFC 2553
-.TH inet_ntop 3 2022-12-15 "Linux man-pages 6.02"
+.TH inet_ntop 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
inet_ntop \- convert IPv4 and IPv6 addresses from binary to text form
.SH LIBRARY
@@ -105,7 +105,7 @@ Note that RFC\ 2553 defines a prototype where the last argument
is of type
.IR size_t .
Many systems follow RFC\ 2553.
-Glibc 2.0 and 2.1 have
+glibc 2.0 and 2.1 have
.IR size_t ,
but 2.2 and later have
.IR socklen_t .
diff --git a/man3/inet_pton.3 b/man3/inet_pton.3
index 1068a68f6..2c9630110 100644
--- a/man3/inet_pton.3
+++ b/man3/inet_pton.3
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" References: RFC 2553
-.TH inet_pton 3 2022-12-15 "Linux man-pages 6.02"
+.TH inet_pton 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
inet_pton \- convert IPv4 and IPv6 addresses from text to binary form
.SH LIBRARY
@@ -64,14 +64,14 @@ which must be
(16) bytes (128 bits) long.
The allowed formats for IPv6 addresses follow these rules:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The preferred format is
.IR x:x:x:x:x:x:x:x .
This form consists of eight hexadecimal numbers,
each of which expresses a 16-bit value (i.e., each
.I x
can be up to 4 hex digits).
-.IP \(bu
+.IP \[bu]
A series of contiguous zero values in the preferred format
can be abbreviated to
.IR :: .
@@ -84,7 +84,7 @@ can be abbreviated as
.IR ::1 .
The wildcard address, consisting of all zeros, can be written as
.IR :: .
-.IP \(bu
+.IP \[bu]
An alternate format is useful for expressing IPv4-mapped IPv6 addresses.
This form is written as
.IR x:x:x:x:x:x:d.d.d.d ,
diff --git a/man3/initgroups.3 b/man3/initgroups.3
index 47fb149f2..883e1bf1f 100644
--- a/man3/initgroups.3
+++ b/man3/initgroups.3
@@ -10,7 +10,7 @@
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
.\" Modified 2004-10-10 by aeb
.\"
-.TH initgroups 3 2022-12-15 "Linux man-pages 6.02"
+.TH initgroups 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
initgroups \- initialize the supplementary group access list
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/insque.3 b/man3/insque.3
index ff113d580..337ff87d7 100644
--- a/man3/insque.3
+++ b/man3/insque.3
@@ -14,7 +14,7 @@
.\" mtk, 2010-09-09: Noted glibc 2.4 bug, added info on circular
.\" lists, added example program
.\"
-.TH insque 3 2022-12-15 "Linux man-pages 6.02"
+.TH insque 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
insque, remque \- insert/remove an item from a queue
.SH LIBRARY
@@ -38,8 +38,8 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.SH DESCRIPTION
The
@@ -190,7 +190,7 @@ main(int argc, char *argv[])
circular = 0;
while ((opt = getopt(argc, argv, "c")) != \-1) {
switch (opt) {
- case \(aqc\(aq:
+ case \[aq]c\[aq]:
circular = 1;
break;
default:
diff --git a/man3/intro.3 b/man3/intro.3
index d17651bf7..8f0559dfe 100644
--- a/man3/intro.3
+++ b/man3/intro.3
@@ -3,24 +3,27 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" 2007-10-23 mtk, Nearly a complete rewrite of the earlier page.
-.TH intro 3 2022-12-12 "Linux man-pages 6.02"
+.TH intro 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to library functions
.SH DESCRIPTION
-Section 3 of the manual describes all library functions excluding the library
-functions (system call wrappers) described in Section 2,
+Section 3 of the manual describes all library functions
+excluding the library functions
+(system call wrappers)
+described in Section 2,
which implement system calls.
.PP
Many of the functions described in the section are part of the
Standard C Library
.RI ( libc ).
-Some functions are part of other libraries (e.g.,
+Some functions are part of other libraries
+(e.g.,
the math library,
.IR libm ,
or the real-time library,
.IR librt )
-in which case the manual page will indicate the linker
-option needed to link against the required library
+in which case the manual page will indicate
+the linker option needed to link against the required library
(e.g.,
.I \-lm
and
@@ -32,19 +35,26 @@ In some cases,
the programmer must define a feature test macro in order to obtain
the declaration of a function from the header file specified
in the man page SYNOPSIS section.
-(Where required, these feature test macros must be defined before including
+(Where required,
+these
+.I feature test macros
+must be defined before including
.I any
header files.)
-In such cases, the required macro is described in the man page.
-For further information on feature test macros, see
+In such cases,
+the required macro is described in the man page.
+For further information on feature test macros,
+see
.BR feature_test_macros (7).
.\"
.\" There
.\" are various function groups which can be identified by a letter which
.\" is appended to the chapter number:
.\" .IP (3C)
-.\" These functions, the functions from chapter 2 and from chapter 3S are
-.\" contained in the C standard library libc, which will be used by
+.\" These functions,
+.\" the functions from chapter 2 and from chapter 3S are
+.\" contained in the C standard library libc,
+.\" which will be used by
.\" .BR cc (1)
.\" by default.
.\" .IP (3S)
@@ -55,9 +65,11 @@ For further information on feature test macros, see
.\" These functions are contained in the arithmetic library libm. They are
.\" used by the
.\" .BR f77 (1)
-.\" FORTRAN compiler by default, but not by the
+.\" FORTRAN compiler by default,
+.\" but not by the
.\" .BR cc (1)
-.\" C compiler, which needs the option \fI\-lm\fP.
+.\" C compiler,
+.\" which needs the option \fI\-lm\fP.
.\" .IP (3F)
.\" These functions are part of the FORTRAN library libF77. There are no
.\" special compiler flags needed to use these functions.
@@ -68,15 +80,17 @@ For further information on feature test macros, see
Section 3 of this manual is organized into subsections
that reflect the complex structure of the standard C library
and its many implementations:
-.IP \(bu 3
+.IP \[bu] 3
3const
-.IP \(bu
+.IP \[bu]
3head
-.IP \(bu
+.IP \[bu]
3type
.PP
This difficult history frequently makes it a poor example to follow
-in design, implementation, and presentation.
+in design,
+implementation,
+and presentation.
.PP
Ideally,
a library for the C language
@@ -89,7 +103,7 @@ Together,
these are termed an API or
.IR "application program interface" .
Types and constants to be shared among multiple APIs
-shopuld be placed in header files that declare no functions.
+should be placed in header files that declare no functions.
This organization permits a C library module
to be documented concisely with one header file per manual page.
Such an approach
@@ -102,8 +116,8 @@ See
.BR standards (7).
.SH NOTES
.SS Authors and copyright conditions
-Look at the header of the manual page source for the author(s) and copyright
-conditions.
+Look at the header of the manual page source
+for the author(s) and copyright conditions.
Note that these can be different from page to page!
.SH SEE ALSO
.BR intro (2),
diff --git a/man3/isalpha.3 b/man3/isalpha.3
index 4a6c54040..ef264dfa0 100644
--- a/man3/isalpha.3
+++ b/man3/isalpha.3
@@ -8,7 +8,7 @@
.\" Modified Sat Sep 2 21:52:01 1995 by Jim Van Zandt <jrv@vanzandt.mv.com>
.\" Modified Mon May 27 22:55:26 1996 by Martin Schulze (joey@linux.de)
.\"
-.TH isalpha 3 2022-12-15 "Linux man-pages 6.02"
+.TH isalpha 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, islower,
isprint, ispunct, isspace, isupper, isxdigit,
@@ -63,8 +63,8 @@ Feature Test Macro Requirements for glibc (see
.BR isascii ():
.nf
_XOPEN_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.PP
.BR isblank ():
@@ -139,7 +139,7 @@ locale, it is equivalent to
.BI "(isupper(" c ") || islower(" c "))" \fR.
In some locales, there may be additional characters for which
.BR isalpha ()
-is true\(emletters which are neither uppercase nor lowercase.
+is true\[em]letters which are neither uppercase nor lowercase.
.TP
.BR isascii ()
checks whether \fIc\fP is a 7-bit
@@ -176,15 +176,15 @@ In the
and
.B """POSIX"""
locales, these are: space, form-feed
-.RB ( \(aq\ef\(aq ),
+.RB ( \[aq]\ef\[aq] ),
newline
-.RB ( \(aq\en\(aq ),
+.RB ( \[aq]\en\[aq] ),
carriage return
-.RB ( \(aq\er\(aq ),
+.RB ( \[aq]\er\[aq] ),
horizontal tab
-.RB ( \(aq\et\(aq ),
+.RB ( \[aq]\et\[aq] ),
and vertical tab
-.RB ( \(aq\ev\(aq ).
+.RB ( \[aq]\ev\[aq] ).
.TP
.BR isupper ()
checks for an uppercase letter.
@@ -244,9 +244,10 @@ T} Thread safety MT-Safe
.sp 1
.\" FIXME: need a thread-safety statement about the *_l functions
.SH STANDARDS
-C89 specifies
+POSIX.1-2001 specifies
.BR isalnum (),
.BR isalpha (),
+.BR isblank (),
.BR iscntrl (),
.BR isdigit (),
.BR isgraph (),
@@ -257,16 +258,9 @@ C89 specifies
.BR isupper (),
and
.BR isxdigit (),
-but not
-.BR isascii ()
-and
-.BR isblank ().
-POSIX.1-2001
-also specifies those functions, and also
+and also
.BR isascii ()
-(as an XSI extension)
-and
-.BR isblank ().
+(as an XSI extension).
C99 specifies all of the preceding functions, except
.BR isascii ().
.PP
diff --git a/man3/isatty.3 b/man3/isatty.3
index 82a342a79..a059000a5 100644
--- a/man3/isatty.3
+++ b/man3/isatty.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH isatty 3 2022-12-15 "Linux man-pages 6.02"
+.TH isatty 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
isatty \- test whether a file descriptor refers to a terminal
.SH LIBRARY
diff --git a/man3/isfdtype.3 b/man3/isfdtype.3
index 67eb6e5a9..66b81b942 100644
--- a/man3/isfdtype.3
+++ b/man3/isfdtype.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH isfdtype 3 2022-10-30 "Linux man-pages 6.02"
+.TH isfdtype 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
isfdtype \- test file type of a file descriptor
.SH LIBRARY
diff --git a/man3/isgreater.3 b/man3/isgreater.3
index cd7716a48..7b897e729 100644
--- a/man3/isgreater.3
+++ b/man3/isgreater.3
@@ -6,7 +6,7 @@
.\" 2002-07-27 Walter Harms
.\" this was done with the help of the glibc manual
.\"
-.TH isgreater 3 2022-12-15 "Linux man-pages 6.02"
+.TH isgreater 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
isgreater, isgreaterequal, isless, islessequal, islessgreater,
isunordered \- floating-point relational tests without exception for NaN
diff --git a/man3/iswalnum.3 b/man3/iswalnum.3
index 291f82774..6112daa27 100644
--- a/man3/iswalnum.3
+++ b/man3/iswalnum.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswalnum 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswalnum 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswalnum \- test for alphanumeric wide character
.SH LIBRARY
@@ -51,8 +51,8 @@ The wide-character class "alnum" is the union of the wide-character classes
As such, it also contains the wide-character class
"xdigit".
.PP
-The wide-character class "alnum" always contains at least the letters \(aqA\(aq
-to \(aqZ\(aq, \(aqa\(aq to \(aqz\(aq and the digits \(aq0\(aq to \(aq9\(aq.
+The wide-character class "alnum" always contains at least the letters \[aq]A\[aq]
+to \[aq]Z\[aq], \[aq]a\[aq] to \[aq]z\[aq] and the digits \[aq]0\[aq] to \[aq]9\[aq].
.SH RETURN VALUE
The
.BR iswalnum ()
diff --git a/man3/iswalpha.3 b/man3/iswalpha.3
index 53db1c476..6e256630d 100644
--- a/man3/iswalpha.3
+++ b/man3/iswalpha.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswalpha 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswalpha 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswalpha \- test for alphabetic wide character
.SH LIBRARY
@@ -56,7 +56,7 @@ The wide-character class "alpha" contains the wide-character classes "upper"
and "lower".
.PP
The wide-character class "alpha" always contains at least the
-letters \(aqA\(aq to \(aqZ\(aq and \(aqa\(aq to \(aqz\(aq.
+letters \[aq]A\[aq] to \[aq]Z\[aq] and \[aq]a\[aq] to \[aq]z\[aq].
.SH RETURN VALUE
The
.BR iswalpha ()
diff --git a/man3/iswblank.3 b/man3/iswblank.3
index d41509b56..71d8aeeb3 100644
--- a/man3/iswblank.3
+++ b/man3/iswblank.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswblank 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswblank 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswblank \- test for whitespace wide character
.SH LIBRARY
@@ -51,7 +51,7 @@ from its subclasses "alnum", "alpha", "upper", "lower", "digit",
.PP
The wide-character class "blank" always contains
at least the space character
-and the control character \(aq\et\(aq.
+and the control character \[aq]\et\[aq].
.SH RETURN VALUE
The
.BR iswblank ()
diff --git a/man3/iswcntrl.3 b/man3/iswcntrl.3
index 01e99b77a..ecaea8af1 100644
--- a/man3/iswcntrl.3
+++ b/man3/iswcntrl.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswcntrl 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswcntrl 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iswcntrl \- test for control wide character
.SH LIBRARY
diff --git a/man3/iswctype.3 b/man3/iswctype.3
index 30b1bbc5c..07c3079eb 100644
--- a/man3/iswctype.3
+++ b/man3/iswctype.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswctype 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswctype 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iswctype \- wide-character classification
.SH LIBRARY
diff --git a/man3/iswdigit.3 b/man3/iswdigit.3
index 10705356b..1c6d97ceb 100644
--- a/man3/iswdigit.3
+++ b/man3/iswdigit.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswdigit 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswdigit 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswdigit \- test for decimal digit wide character
.SH LIBRARY
@@ -55,7 +55,7 @@ disjoint from the wide-character class
"alpha" and therefore also disjoint from its subclasses "lower", "upper".
.PP
The wide-character class "digit" always
-contains exactly the digits \(aq0\(aq to \(aq9\(aq.
+contains exactly the digits \[aq]0\[aq] to \[aq]9\[aq].
.SH RETURN VALUE
The
.BR iswdigit ()
diff --git a/man3/iswgraph.3 b/man3/iswgraph.3
index 3e1f3bed5..03ea186d7 100644
--- a/man3/iswgraph.3
+++ b/man3/iswgraph.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswgraph 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswgraph 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iswgraph \- test for graphic wide character
.SH LIBRARY
diff --git a/man3/iswlower.3 b/man3/iswlower.3
index b980e1f77..ec67ca190 100644
--- a/man3/iswlower.3
+++ b/man3/iswlower.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswlower 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswlower 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswlower \- test for lowercase wide character
.SH LIBRARY
@@ -62,7 +62,7 @@ and different from
.IR towupper(wc) .
.PP
The wide-character class "lower" always contains
-at least the letters \(aqa\(aq to \(aqz\(aq.
+at least the letters \[aq]a\[aq] to \[aq]z\[aq].
.SH RETURN VALUE
The
.BR iswlower ()
diff --git a/man3/iswprint.3 b/man3/iswprint.3
index 4dea03380..cd75dab4c 100644
--- a/man3/iswprint.3
+++ b/man3/iswprint.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswprint 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswprint 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iswprint \- test for printing wide character
.SH LIBRARY
diff --git a/man3/iswpunct.3 b/man3/iswpunct.3
index 4338eb681..6744ef3cc 100644
--- a/man3/iswpunct.3
+++ b/man3/iswpunct.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswpunct 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswpunct 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iswpunct \- test for punctuation or symbolic wide character
.SH LIBRARY
diff --git a/man3/iswspace.3 b/man3/iswspace.3
index 78759304a..684440b79 100644
--- a/man3/iswspace.3
+++ b/man3/iswspace.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswspace 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswspace 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswspace \- test for whitespace wide character
.SH LIBRARY
@@ -43,7 +43,7 @@ The wide-character class "space" contains the wide-character class "blank".
.PP
The wide-character class "space" always contains at least the space character
and the control
-characters \(aq\ef\(aq, \(aq\en\(aq, \(aq\er\(aq, \(aq\et\(aq, \(aq\ev\(aq.
+characters \[aq]\ef\[aq], \[aq]\en\[aq], \[aq]\er\[aq], \[aq]\et\[aq], \[aq]\ev\[aq].
.SH RETURN VALUE
The
.BR iswspace ()
diff --git a/man3/iswupper.3 b/man3/iswupper.3
index 551172a0d..9a3203149 100644
--- a/man3/iswupper.3
+++ b/man3/iswupper.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswupper 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswupper 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswupper \- test for uppercase wide character
.SH LIBRARY
@@ -57,7 +57,7 @@ and different from
.IR towlower(wc) .
.PP
The wide-character class "upper" always contains at least the
-letters \(aqA\(aq to \(aqZ\(aq.
+letters \[aq]A\[aq] to \[aq]Z\[aq].
.SH RETURN VALUE
The
.BR iswupper ()
diff --git a/man3/iswxdigit.3 b/man3/iswxdigit.3
index e3b373924..89065602d 100644
--- a/man3/iswxdigit.3
+++ b/man3/iswxdigit.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH iswxdigit 3 2022-12-15 "Linux man-pages 6.02"
+.TH iswxdigit 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
iswxdigit \- test for hexadecimal digit wide character
.SH LIBRARY
@@ -47,8 +47,8 @@ Being a subclass of the wide-character class "alnum", the wide-character class
"xdigit" is disjoint from the wide-character class "punct".
.PP
The wide-character class "xdigit" always contains at least the
-letters \(aqA\(aq to \(aqF\(aq, \(aqa\(aq to \(aqf\(aq
-and the digits \(aq0\(aq to \(aq9\(aq.
+letters \[aq]A\[aq] to \[aq]F\[aq], \[aq]a\[aq] to \[aq]f\[aq]
+and the digits \[aq]0\[aq] to \[aq]9\[aq].
.SH RETURN VALUE
The
.BR iswxdigit ()
diff --git a/man3/j0.3 b/man3/j0.3
index b9ef73626..e9d43bd13 100644
--- a/man3/j0.3
+++ b/man3/j0.3
@@ -14,7 +14,7 @@
.\" Modified 2004-11-12 as per suggestion by Fabian Kreutz/AEB
.\" 2008-07-24, mtk, moved yxx() material into separate y0.3 page
.\"
-.TH j0 3 2022-12-15 "Linux man-pages 6.02"
+.TH j0 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
j0, j0f, j0l, j1, j1f, j1l, jn, jnf, jnl \-
Bessel functions of the first kind
@@ -49,7 +49,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.PP
.BR j0f (),
@@ -62,7 +62,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 600
|| (_ISOC99_SOURCE && _XOPEN_SOURCE)
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/key_setsecret.3 b/man3/key_setsecret.3
index a6e863278..d19c2b25d 100644
--- a/man3/key_setsecret.3
+++ b/man3/key_setsecret.3
@@ -5,7 +5,7 @@
.\"
.\" I had no way the check the functions out
.\" be careful
-.TH key_setsecret 3 2022-12-15 "Linux man-pages 6.02"
+.TH key_setsecret 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
key_decryptsession, key_encryptsession, key_setsecret, key_gendes,
key_secretkey_is_set \- interfaces to rpc keyserver daemon
diff --git a/man3/killpg.3 b/man3/killpg.3
index 185a05abe..83e2d9cdf 100644
--- a/man3/killpg.3
+++ b/man3/killpg.3
@@ -11,7 +11,7 @@
.\" Added notes on CAP_KILL
.\" Modified 2004-06-21 by aeb
.\"
-.TH killpg 3 2022-10-30 "Linux man-pages 6.02"
+.TH killpg 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
killpg \- send signal to a process group
.SH LIBRARY
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
.BR killpg ()
diff --git a/man3/ldexp.3 b/man3/ldexp.3
index db4a19998..adab68d7f 100644
--- a/man3/ldexp.3
+++ b/man3/ldexp.3
@@ -12,7 +12,7 @@
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2004-10-31 by aeb
.\"
-.TH ldexp 3 2022-12-15 "Linux man-pages 6.02"
+.TH ldexp 3 2023-02-10 "Linux man-pages 6.03"
.SH NAME
ldexp, ldexpf, ldexpl \- multiply floating-point number by integral power of 2
.SH LIBRARY
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the result of multiplying the floating-point number
@@ -46,7 +46,7 @@ by 2 raised to the power
.IR exp .
.SH RETURN VALUE
On success, these functions return
-.IR "x * (2^exp)" .
+.IR "x * (2\[ha]exp)" .
.PP
If
.I exp
@@ -125,7 +125,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR frexp (3),
.BR modf (3),
diff --git a/man3/lgamma.3 b/man3/lgamma.3
index cd26194d5..d051c9843 100644
--- a/man3/lgamma.3
+++ b/man3/lgamma.3
@@ -6,7 +6,7 @@
.\"
.\" based on glibc infopages
.\"
-.TH lgamma 3 2022-12-04 "Linux man-pages 6.02"
+.TH lgamma 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r, signgam \-
log gamma function
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.BR lgamma ():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR lgammaf (),
@@ -45,7 +45,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR lgamma_r (),
@@ -53,14 +53,14 @@ Feature Test Macro Requirements for glibc (see
.BR lgammal_r ():
.nf
/* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.IR signgam :
.nf
_XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
For the definition of the Gamma function, see
diff --git a/man3/lio_listio.3 b/man3/lio_listio.3
index 41dc19284..694c4b2b8 100644
--- a/man3/lio_listio.3
+++ b/man3/lio_listio.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH lio_listio 3 2022-12-15 "Linux man-pages 6.02"
+.TH lio_listio 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
lio_listio \- initiate a list of I/O requests
.SH LIBRARY
diff --git a/man3/list.3 b/man3/list.3
index 551b4428a..1b95dc13b 100644
--- a/man3/list.3
+++ b/man3/list.3
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
.\"
-.TH LIST 3 2022-10-30 "Linux man-pages 6.02"
+.TH LIST 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
LIST_EMPTY,
LIST_ENTRY,
diff --git a/man3/localeconv.3 b/man3/localeconv.3
index a175f5734..fd1e28200 100644
--- a/man3/localeconv.3
+++ b/man3/localeconv.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Sat Jul 24 19:01:20 1993 by Rik Faith (faith@cs.unc.edu)
-.TH localeconv 3 2022-12-15 "Linux man-pages 6.02"
+.TH localeconv 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
localeconv \- get numeric formatting information
.SH LIBRARY
@@ -66,7 +66,7 @@ T}
.ad
.sp 1
.SH STANDARDS
-C89, C99.
+C99.
.SH BUGS
The
.BR printf (3)
diff --git a/man3/lockf.3 b/man3/lockf.3
index 88908d3cf..dad5ce95a 100644
--- a/man3/lockf.3
+++ b/man3/lockf.3
@@ -7,7 +7,7 @@
.\" Added section stuff, aeb, 2002-04-22.
.\" Corrected include file, drepper, 2003-06-15.
.\"
-.TH lockf 3 2022-12-15 "Linux man-pages 6.02"
+.TH lockf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
lockf \- apply, test or remove a POSIX lock on an open file
.SH LIBRARY
@@ -29,8 +29,8 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
Apply, test, or remove a POSIX lock on a section of an open file.
diff --git a/man3/log.3 b/man3/log.3
index 30a36c82f..fa04e1826 100644
--- a/man3/log.3
+++ b/man3/log.3
@@ -14,7 +14,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH log 3 2022-12-15 "Linux man-pages 6.02"
+.TH log 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
log, logf, logl \- natural logarithmic function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the natural logarithm of
@@ -124,7 +124,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH BUGS
In glibc 2.5 and earlier,
taking the
diff --git a/man3/log10.3 b/man3/log10.3
index 8966bbc1d..e834b584b 100644
--- a/man3/log10.3
+++ b/man3/log10.3
@@ -14,7 +14,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH log10 3 2022-12-15 "Linux man-pages 6.02"
+.TH log10 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
log10, log10f, log10l \- base-10 logarithmic function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the base 10 logarithm of
@@ -85,7 +85,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR cbrt (3),
.BR clog10 (3),
diff --git a/man3/log1p.3 b/man3/log1p.3
index 6e9c0e22d..3fc85cef9 100644
--- a/man3/log1p.3
+++ b/man3/log1p.3
@@ -7,7 +7,7 @@
.\"
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
-.TH LOG1P 3 2022-12-15 "Linux man-pages 6.02"
+.TH log1p 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
log1p, log1pf, log1pl \- logarithm of 1 plus argument
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR log1pf (),
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return a value equivalent to
diff --git a/man3/log2.3 b/man3/log2.3
index 51a9f11f0..645824781 100644
--- a/man3/log2.3
+++ b/man3/log2.3
@@ -14,7 +14,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH log2 3 2022-12-15 "Linux man-pages 6.02"
+.TH log2 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
log2, log2f, log2l \- base-2 logarithmic function
.SH LIBRARY
diff --git a/man3/logb.3 b/man3/logb.3
index efdbe6b5d..5293f4425 100644
--- a/man3/logb.3
+++ b/man3/logb.3
@@ -7,7 +7,7 @@
.\"
.\" Inspired by a page by Walter Harms created 2002-08-10
.\"
-.TH logb 3 2022-12-15 "Linux man-pages 6.02"
+.TH logb 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
logb, logbf, logbl \- get exponent of a floating-point value
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR logbf (),
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions extract the exponent from the
diff --git a/man3/login.3 b/man3/login.3
index 4d2d2815a..07e4ec01e 100644
--- a/man3/login.3
+++ b/man3/login.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH login 3 2022-12-15 "Linux man-pages 6.02"
+.TH login 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
login, logout \- write utmp and wtmp entries
.SH LIBRARY
diff --git a/man3/lrint.3 b/man3/lrint.3
index 13964585d..3e6fd820c 100644
--- a/man3/lrint.3
+++ b/man3/lrint.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH lrint 3 2022-12-15 "Linux man-pages 6.02"
+.TH lrint 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
lrint, lrintf, lrintl, llrint, llrintf, llrintl \- round to nearest integer
.SH LIBRARY
diff --git a/man3/lround.3 b/man3/lround.3
index f66202a83..19978c9e4 100644
--- a/man3/lround.3
+++ b/man3/lround.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH lround 3 2022-12-15 "Linux man-pages 6.02"
+.TH lround 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
lround, lroundf, lroundl, llround, llroundf, llroundl \- round to
nearest integer
diff --git a/man3/lsearch.3 b/man3/lsearch.3
index 5cd36c12e..978da20e2 100644
--- a/man3/lsearch.3
+++ b/man3/lsearch.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Corrected prototype and include, aeb, 990927
-.TH lsearch 3 2022-12-15 "Linux man-pages 6.02"
+.TH lsearch 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
lfind, lsearch \- linear search of an array
.SH LIBRARY
diff --git a/man3/lseek64.3 b/man3/lseek64.3
index 0ce981cbe..f4b58a905 100644
--- a/man3/lseek64.3
+++ b/man3/lseek64.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH lseek64 3 2022-12-15 "Linux man-pages 6.02"
+.TH lseek64 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
lseek64 \- reposition 64-bit read/write file offset
.SH LIBRARY
diff --git a/man3/makecontext.3 b/man3/makecontext.3
index c20cf5bb0..6cd65e339 100644
--- a/man3/makecontext.3
+++ b/man3/makecontext.3
@@ -6,7 +6,7 @@
.\"
.\" 2006-08-02, mtk, Added example program
.\"
-.TH makecontext 3 2022-12-15 "Linux man-pages 6.02"
+.TH makecontext 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
makecontext, swapcontext \- manipulate user context
.SH LIBRARY
diff --git a/man3/makedev.3 b/man3/makedev.3
index 32375342e..609fd3b5c 100644
--- a/man3/makedev.3
+++ b/man3/makedev.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH makedev 3 2022-12-15 "Linux man-pages 6.02"
+.TH makedev 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
makedev, major, minor \- manage a device number
.SH LIBRARY
diff --git a/man3/mallinfo.3 b/man3/mallinfo.3
index a46a14fbc..9c213c544 100644
--- a/man3/mallinfo.3
+++ b/man3/mallinfo.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mallinfo 3 2022-12-15 "Linux man-pages 6.02"
+.TH mallinfo 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mallinfo, mallinfo2 \- obtain memory allocation information
.SH LIBRARY
@@ -94,7 +94,7 @@ The number of bytes in blocks currently allocated using
.I usmblks
This field is unused, and is always 0.
.\" It seems to have been zero since at least as far back as glibc 2.15
-Historically, it was the "highwater mark" for allocated space\(emthat is,
+Historically, it was the "highwater mark" for allocated space\[em]that is,
the maximum amount of space that was ever allocated (in bytes);
this field was maintained only in nonthreading environments.
.TP
diff --git a/man3/malloc.3 b/man3/malloc.3
index 3c63ddaa4..71b776f86 100644
--- a/man3/malloc.3
+++ b/man3/malloc.3
@@ -12,7 +12,7 @@
.\" FIXME . Review http://austingroupbugs.net/view.php?id=374
.\" to see what changes are required on this page.
.\"
-.TH malloc 3 2022-12-15 "Linux man-pages 6.02"
+.TH malloc 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
malloc, free, calloc, realloc, reallocarray \- allocate and free dynamic memory
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.29:
_DEFAULT_SOURCE
- Glibc 2.28 and earlier:
+ glibc 2.28 and earlier:
_GNU_SOURCE
.fi
.SH DESCRIPTION
@@ -264,7 +264,7 @@ T} Thread safety MT-Safe
.BR free (),
.BR calloc (),
.BR realloc ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.PP
.BR reallocarray ()
is a nonstandard extension that first appeared in OpenBSD 5.6 and FreeBSD 11.0.
diff --git a/man3/malloc_get_state.3 b/man3/malloc_get_state.3
index 35076e29a..4296f622e 100644
--- a/man3/malloc_get_state.3
+++ b/man3/malloc_get_state.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH malloc_get_state 3 2022-12-15 "Linux man-pages 6.02"
+.TH malloc_get_state 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
malloc_get_state, malloc_set_state \-
record and restore state of malloc implementation
diff --git a/man3/malloc_hook.3 b/man3/malloc_hook.3
index 3d5cf4c2b..0c6af2abe 100644
--- a/man3/malloc_hook.3
+++ b/man3/malloc_hook.3
@@ -5,7 +5,7 @@
.\" Heavily based on glibc documentation
.\" Polished, added docs, removed glibc doc bug, 2002-07-20, aeb
.\"
-.TH MALLOC_HOOK 3 2022-10-09 "Linux man-pages 6.02"
+.TH __malloc_hook 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
__malloc_hook, __malloc_initialize_hook,
__memalign_hook, __free_hook, __realloc_hook,
diff --git a/man3/malloc_info.3 b/man3/malloc_info.3
index 0ef29127a..ef57abaab 100644
--- a/man3/malloc_info.3
+++ b/man3/malloc_info.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH malloc_info 3 2022-12-15 "Linux man-pages 6.02"
+.TH malloc_info 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
malloc_info \- export malloc state to a stream
.SH LIBRARY
@@ -184,7 +184,7 @@ thread_func(void *arg)
{
int tn = (int) arg;
- /* The multiplier \(aq(2 + tn)\(aq ensures that each thread (including
+ /* The multiplier \[aq](2 + tn)\[aq] ensures that each thread (including
the main thread) allocates a different amount of memory. */
for (unsigned int j = 0; j < numBlocks; j++)
@@ -229,8 +229,8 @@ main(int argc, char *argv[])
err(EXIT_FAILURE, "pthread_create");
/* If we add a sleep interval after the start\-up of each
- thread, the threads likely won\(aqt contend for malloc
- mutexes, and therefore additional arenas won\(aqt be
+ thread, the threads likely won\[aq]t contend for malloc
+ mutexes, and therefore additional arenas won\[aq]t be
allocated (see malloc(3)). */
if (sleepTime > 0)
diff --git a/man3/malloc_stats.3 b/man3/malloc_stats.3
index 8c5003edf..9d5b7e456 100644
--- a/man3/malloc_stats.3
+++ b/man3/malloc_stats.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH malloc_stats 3 2022-12-15 "Linux man-pages 6.02"
+.TH malloc_stats 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
malloc_stats \- print memory allocation statistics
.SH LIBRARY
diff --git a/man3/malloc_trim.3 b/man3/malloc_trim.3
index 5b945b253..9433bf1d6 100644
--- a/man3/malloc_trim.3
+++ b/man3/malloc_trim.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH malloc_trim 3 2022-12-15 "Linux man-pages 6.02"
+.TH malloc_trim 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
malloc_trim \- release free memory from the heap
.SH LIBRARY
diff --git a/man3/malloc_usable_size.3 b/man3/malloc_usable_size.3
index ccb9e9c6d..11598a471 100644
--- a/man3/malloc_usable_size.3
+++ b/man3/malloc_usable_size.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH malloc_usable_size 3 2022-12-15 "Linux man-pages 6.02"
+.TH malloc_usable_size 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
malloc_usable_size \- obtain size of block of memory allocated from heap
.SH LIBRARY
diff --git a/man3/mallopt.3 b/man3/mallopt.3
index 0ee02b3b8..9d29de597 100644
--- a/man3/mallopt.3
+++ b/man3/mallopt.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH MALLOPT 3 2022-12-04 "Linux man-pages 6.02"
+.TH mallopt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mallopt \- set memory allocation parameters
.SH LIBRARY
@@ -285,13 +285,13 @@ to modify the program break.
(The measurement unit for this parameter is bytes.)
This parameter has an effect in the following circumstances:
.RS
-.IP \(bu 3
+.IP \[bu] 3
When the program break is increased, then
.B M_TOP_PAD
bytes are added to the
.BR sbrk (2)
request.
-.IP \(bu
+.IP \[bu]
When the heap is trimmed as a consequence of calling
.BR free (3)
(see the discussion of
diff --git a/man3/matherr.3 b/man3/matherr.3
index 9c2a1bf50..1a2805cce 100644
--- a/man3/matherr.3
+++ b/man3/matherr.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH matherr 3 2022-12-15 "Linux man-pages 6.02"
+.TH matherr 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
matherr \- SVID math library exception handling
.SH LIBRARY
@@ -371,7 +371,7 @@ x=12345.000000
static int matherr_ret = 0; /* Value that matherr()
should return */
static int change_retval = 0; /* Should matherr() change
- function\(aqs return value? */
+ function\[aq]s return value? */
static double new_retval; /* New function return value */
int
diff --git a/man3/mblen.3 b/man3/mblen.3
index 678601566..c79cf57f7 100644
--- a/man3/mblen.3
+++ b/man3/mblen.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH mblen 3 2022-12-15 "Linux man-pages 6.02"
+.TH mblen 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mblen \- determine number of bytes in next multibyte character
.SH LIBRARY
diff --git a/man3/mbrlen.3 b/man3/mbrlen.3
index f332622df..e60075e8a 100644
--- a/man3/mbrlen.3
+++ b/man3/mbrlen.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH mbrlen 3 2022-12-15 "Linux man-pages 6.02"
+.TH mbrlen 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mbrlen \- determine number of bytes in next multibyte character
.SH LIBRARY
diff --git a/man3/mbrtowc.3 b/man3/mbrtowc.3
index b76183757..fc025581f 100644
--- a/man3/mbrtowc.3
+++ b/man3/mbrtowc.3
@@ -10,7 +10,7 @@
.\" http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH mbrtowc 3 2022-12-15 "Linux man-pages 6.02"
+.TH mbrtowc 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mbrtowc \- convert a multibyte sequence to a wide character
.SH LIBRARY
@@ -42,11 +42,11 @@ multibyte character, converts it to a wide character and stores it at
It updates the shift state
.IR *ps .
If the converted wide
-character is not L\(aq\e0\(aq (the null wide character),
+character is not L\[aq]\e0\[aq] (the null wide character),
it returns the number of bytes that were consumed
from
.IR s .
-If the converted wide character is L\(aq\e0\(aq, it resets the shift
+If the converted wide character is L\[aq]\e0\[aq], it resets the shift
state
.I *ps
to the initial state and returns 0.
@@ -154,9 +154,9 @@ The
function returns the number of bytes parsed from the
multibyte sequence starting at
.IR s ,
-if a non-L\(aq\e0\(aq wide character
+if a non-L\[aq]\e0\[aq] wide character
was recognized.
-It returns 0, if a L\(aq\e0\(aq wide character was recognized.
+It returns 0, if a L\[aq]\e0\[aq] wide character was recognized.
It returns
.I (size_t)\ \-1
and sets
diff --git a/man3/mbsinit.3 b/man3/mbsinit.3
index 04440bef8..44cd5ac66 100644
--- a/man3/mbsinit.3
+++ b/man3/mbsinit.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH mbsinit 3 2022-12-15 "Linux man-pages 6.02"
+.TH mbsinit 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mbsinit \- test for initial shift state
.SH LIBRARY
diff --git a/man3/mbsnrtowcs.3 b/man3/mbsnrtowcs.3
index efcc91046..0698e5264 100644
--- a/man3/mbsnrtowcs.3
+++ b/man3/mbsnrtowcs.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH mbsnrtowcs 3 2022-12-15 "Linux man-pages 6.02"
+.TH mbsnrtowcs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mbsnrtowcs \- convert a multibyte string to a wide-character string
.SH LIBRARY
@@ -79,7 +79,7 @@ by one and
by the number of bytes consumed.
The
conversion can stop for three reasons:
-.IP \(bu 3
+.IP \[bu] 3
An invalid multibyte sequence has been encountered.
In this case,
.I *src
@@ -90,13 +90,13 @@ and
.I errno
is set to
.BR EILSEQ .
-.IP \(bu
+.IP \[bu]
The
.I nms
limit forces a stop,
or
.I len
-non-L\(aq\e0\(aq wide characters
+non-L\[aq]\e0\[aq] wide characters
have been stored at
.IR dest .
In this case,
@@ -106,9 +106,9 @@ next multibyte sequence to be converted, and the number of wide characters
written to
.I dest
is returned.
-.IP \(bu
+.IP \[bu]
The multibyte string has been completely converted, including the
-terminating null wide character (\(aq\e0\(aq)
+terminating null wide character (\[aq]\e0\[aq])
(which has the side effect of bringing back
.I *ps
to the
diff --git a/man3/mbsrtowcs.3 b/man3/mbsrtowcs.3
index 519088ad1..c814d391e 100644
--- a/man3/mbsrtowcs.3
+++ b/man3/mbsrtowcs.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH mbsrtowcs 3 2022-12-15 "Linux man-pages 6.02"
+.TH mbsrtowcs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mbsrtowcs \- convert a multibyte string to a wide-character string
.SH LIBRARY
@@ -51,7 +51,7 @@ by one and
.I *src
by the number of bytes consumed.
The conversion can stop for three reasons:
-.IP \(bu 3
+.IP \[bu] 3
An invalid multibyte sequence has been encountered.
In this case,
.I *src
@@ -62,9 +62,9 @@ and
.I errno
is set to
.BR EILSEQ .
-.IP \(bu
+.IP \[bu]
.I len
-non-L\(aq\e0\(aq wide characters have been stored at
+non-L\[aq]\e0\[aq] wide characters have been stored at
.IR dest .
In this case,
.I *src
@@ -73,9 +73,9 @@ multibyte sequence to be converted,
and the number of wide characters written to
.I dest
is returned.
-.IP \(bu
+.IP \[bu]
The multibyte string has been completely converted, including the
-terminating null wide character (\(aq\e0\(aq), which has the side
+terminating null wide character (\[aq]\e0\[aq]), which has the side
effect of bringing back
.I *ps
to the
diff --git a/man3/mbstowcs.3 b/man3/mbstowcs.3
index a45476cf9..44cc989c7 100644
--- a/man3/mbstowcs.3
+++ b/man3/mbstowcs.3
@@ -10,7 +10,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH mbstowcs 3 2022-12-15 "Linux man-pages 6.02"
+.TH mbstowcs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mbstowcs \- convert a multibyte string to a wide-character string
.SH LIBRARY
@@ -43,22 +43,22 @@ The sequence of characters in the string
.I src
shall begin in the initial shift state.
The conversion can stop for three reasons:
-.IP \(bu 3
+.IP \[bu] 3
An invalid multibyte sequence has been encountered.
In this case,
.I (size_t)\ \-1
is returned.
-.IP \(bu
+.IP \[bu]
.I n
-non-L\(aq\e0\(aq wide characters have been stored at
+non-L\[aq]\e0\[aq] wide characters have been stored at
.IR dest .
In this case, the number of wide characters written to
.I dest
is returned, but the
shift state at this point is lost.
-.IP \(bu
+.IP \[bu]
The multibyte string has been completely converted, including the
-terminating null character (\(aq\e0\(aq).
+terminating null character (\[aq]\e0\[aq]).
In this case, the number of wide characters written to
.IR dest ,
excluding the terminating null wide character, is returned.
@@ -190,7 +190,7 @@ main(int argc, char *argv[])
printf(" %zu multibyte characters\en\en", mbslen);
/* Allocate wide character string of the desired size. Add 1
- to allow for terminating null wide character (L\(aq\e0\(aq). */
+ to allow for terminating null wide character (L\[aq]\e0\[aq]). */
wcs = calloc(mbslen + 1, sizeof(*wcs));
if (wcs == NULL) {
@@ -227,7 +227,7 @@ main(int argc, char *argv[])
printf("lower ");
}
- putchar(\(aq\en\(aq);
+ putchar(\[aq]\en\[aq]);
}
exit(EXIT_SUCCESS);
diff --git a/man3/mbtowc.3 b/man3/mbtowc.3
index 114d61502..8446ab87b 100644
--- a/man3/mbtowc.3
+++ b/man3/mbtowc.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH mbtowc 3 2022-12-15 "Linux man-pages 6.02"
+.TH mbtowc 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mbtowc \- convert a multibyte sequence to a wide character
.SH LIBRARY
@@ -43,7 +43,7 @@ It updates an internal shift state known only to the
function.
If
.I s
-does not point to a null byte (\(aq\e0\(aq), it returns the number
+does not point to a null byte (\[aq]\e0\[aq]), it returns the number
of bytes that were consumed from
.IR s ,
otherwise it returns 0.
diff --git a/man3/mcheck.3 b/man3/mcheck.3
index 3ad5cf763..a9d3eb8eb 100644
--- a/man3/mcheck.3
+++ b/man3/mcheck.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mcheck 3 2022-12-15 "Linux man-pages 6.02"
+.TH mcheck 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mcheck, mcheck_check_all, mcheck_pedantic, mprobe \- heap consistency checking
.SH LIBRARY
diff --git a/man3/memccpy.3 b/man3/memccpy.3
index 301b71df8..f25c4a16f 100644
--- a/man3/memccpy.3
+++ b/man3/memccpy.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:57:24 1993 by Rik Faith (faith@cs.unc.edu)
-.TH memccpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH memccpy 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
memccpy \- copy memory area
.SH LIBRARY
diff --git a/man3/memchr.3 b/man3/memchr.3
index bb03e2639..3d15fb1a9 100644
--- a/man3/memchr.3
+++ b/man3/memchr.3
@@ -10,7 +10,7 @@
.\" Modified Wed Feb 20 21:09:36 2002, Ian Redfern (redferni@logica.com)
.\" 2008-07-09, mtk, add rawmemchr()
.\"
-.TH memchr 3 2022-12-15 "Linux man-pages 6.02"
+.TH memchr 3 2023-01-05 "Linux man-pages 6.03"
.SH NAME
memchr, memrchr, rawmemchr \- scan memory for a character
.SH LIBRARY
@@ -22,7 +22,8 @@ Standard C library
.PP
.BI "void *memchr(const void " s [. n "], int " c ", size_t " n );
.BI "void *memrchr(const void " s [. n "], int " c ", size_t " n );
-.BI "void *rawmemchr(const void " s [. n "], int " c );
+.PP
+.BI "[[deprecated]] void *rawmemchr(const void " s [. n "], int " c );
.fi
.PP
.RS -4
@@ -66,26 +67,21 @@ instead of forward from the beginning.
The
.BR rawmemchr ()
function is similar to
-.BR memchr ():
-it assumes (i.e., the programmer knows for certain)
+.BR memchr (),
+but it assumes
+(i.e., the programmer knows for certain)
that an instance of
.I c
lies somewhere in the memory area starting at the location pointed to by
-.IR s ,
-and so performs an optimized search for
-.I c
-(i.e., no use of a count argument to limit the range of the search).
+.IR s .
If an instance of
.I c
-is not found, the results are unpredictable.
-The following call is a fast means of locating a string's
-terminating null byte:
-.PP
-.in +4n
-.EX
-char *p = rawmemchr(s,\ \(aq\e0\(aq);
-.EE
-.in
+is not found, the behavior is undefined.
+Use either
+.BR strlen (3)
+or
+.BR memchr (3)
+instead.
.SH RETURN VALUE
The
.BR memchr ()
@@ -97,8 +93,7 @@ the given memory area.
.PP
The
.BR rawmemchr ()
-function returns a pointer to the matching byte, if one is found.
-If no matching byte is found, the result is unspecified.
+function returns a pointer to the matching byte.
.SH VERSIONS
.BR rawmemchr ()
first appeared in glibc 2.1.
@@ -126,7 +121,7 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
.BR memchr ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.PP
The
.BR memrchr ()
@@ -138,9 +133,7 @@ function is a GNU extension, available since glibc 2.1.
.SH SEE ALSO
.BR bstring (3),
.BR ffs (3),
-.BR index (3),
.BR memmem (3),
-.BR rindex (3),
.BR strchr (3),
.BR strpbrk (3),
.BR strrchr (3),
diff --git a/man3/memcmp.3 b/man3/memcmp.3
index 1dceb1fa8..a2a33cedc 100644
--- a/man3/memcmp.3
+++ b/man3/memcmp.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:55:27 1993 by Rik Faith (faith@cs.unc.edu)
-.TH memcmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH memcmp 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
memcmp \- compare memory areas
.SH LIBRARY
@@ -63,7 +63,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
Do not use
.BR memcmp ()
@@ -75,7 +75,6 @@ Some operating systems provide such a function (e.g., NetBSD's
but no such function is specified in POSIX.
On Linux, it may be necessary to implement such a function oneself.
.SH SEE ALSO
-.BR bcmp (3),
.BR bstring (3),
.BR strcasecmp (3),
.BR strcmp (3),
diff --git a/man3/memcpy.3 b/man3/memcpy.3
index 9829a59fa..1dab9516f 100644
--- a/man3/memcpy.3
+++ b/man3/memcpy.3
@@ -9,7 +9,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:41:09 1993 by Rik Faith (faith@cs.unc.edu)
-.TH memcpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH memcpy 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
memcpy \- copy memory area
.SH LIBRARY
@@ -53,7 +53,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
Failure to observe the requirement that the memory areas
do not overlap has been the source of significant bugs.
diff --git a/man3/memfrob.3 b/man3/memfrob.3
index 58e672b11..4d688fd2a 100644
--- a/man3/memfrob.3
+++ b/man3/memfrob.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:54:45 1993 by Rik Faith (faith@cs.unc.edu)
-.TH memfrob 3 2022-12-15 "Linux man-pages 6.02"
+.TH memfrob 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
memfrob \- frobnicate (obfuscate) a memory area
.SH LIBRARY
diff --git a/man3/memmem.3 b/man3/memmem.3
index f2b50fe41..8a1623d84 100644
--- a/man3/memmem.3
+++ b/man3/memmem.3
@@ -8,7 +8,7 @@
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:50:48 1993 by Rik Faith (faith@cs.unc.edu)
.\" Interchanged 'needle' and 'haystack'; added history, aeb, 980113.
-.TH memmem 3 2022-12-15 "Linux man-pages 6.02"
+.TH memmem 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
memmem \- locate a substring
.SH LIBRARY
diff --git a/man3/memmove.3 b/man3/memmove.3
index ca78a307d..216cb9a9f 100644
--- a/man3/memmove.3
+++ b/man3/memmove.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:49:59 1993 by Rik Faith (faith@cs.unc.edu)
-.TH memmove 3 2022-12-15 "Linux man-pages 6.02"
+.TH memmove 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
memmove \- copy memory area
.SH LIBRARY
@@ -61,7 +61,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH SEE ALSO
.BR bcopy (3),
.BR bstring (3),
diff --git a/man3/mempcpy.3 b/man3/mempcpy.3
index aed3b27f7..d9b176223 100644
--- a/man3/mempcpy.3
+++ b/man3/mempcpy.3
@@ -6,7 +6,7 @@
.\" Heavily based on glibc infopages, copyright Free Software Foundation
.\"
.\" aeb, 2003, polished a little
-.TH mempcpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH mempcpy 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mempcpy, wmempcpy \- copy memory area
.SH LIBRARY
diff --git a/man3/memset.3 b/man3/memset.3
index 53878123b..8f80432a1 100644
--- a/man3/memset.3
+++ b/man3/memset.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:49:23 1993 by Rik Faith (faith@cs.unc.edu)
-.TH memset 3 2022-12-15 "Linux man-pages 6.02"
+.TH memset 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
memset \- fill memory with a constant byte
.SH LIBRARY
@@ -53,7 +53,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH SEE ALSO
.BR bstring (3),
.BR bzero (3),
diff --git a/man3/mkdtemp.3 b/man3/mkdtemp.3
index a5fdd5772..573df4c09 100644
--- a/man3/mkdtemp.3
+++ b/man3/mkdtemp.3
@@ -4,7 +4,7 @@
.\" and GNU libc documentation
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH mkdtemp 3 2022-12-15 "Linux man-pages 6.02"
+.TH mkdtemp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mkdtemp \- create a unique temporary directory
.SH LIBRARY
@@ -25,7 +25,7 @@ Feature Test Macro Requirements for glibc (see
.BR mkdtemp ():
.nf
/* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc 2.19 and earlier: */ _BSD_SOURCE
+ || /* glibc 2.19 and earlier: */ _BSD_SOURCE
|| /* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200809L
.fi
.SH DESCRIPTION
diff --git a/man3/mkfifo.3 b/man3/mkfifo.3
index aeaa6cf77..3e41cae3b 100644
--- a/man3/mkfifo.3
+++ b/man3/mkfifo.3
@@ -6,7 +6,7 @@
.\"
.\" changed section from 2 to 3, aeb, 950919
.\"
-.TH mkfifo 3 2022-12-15 "Linux man-pages 6.02"
+.TH mkfifo 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mkfifo, mkfifoat \- make a FIFO special file (a named pipe)
.SH LIBRARY
@@ -43,7 +43,7 @@ makes a FIFO special file with name \fIpathname\fP.
\fImode\fP specifies the FIFO's permissions.
It is modified by the
process's \fBumask\fP in the usual way: the permissions of the created
-file are \fB(\fP\fImode\fP\fB & \(tiumask)\fP.
+file are \fB(\fP\fImode\fP\fB & \[ti]umask)\fP.
.PP
A FIFO special file is similar to a pipe, except that it is created
in a different way.
diff --git a/man3/mkstemp.3 b/man3/mkstemp.3
index b691bb54c..8b355170c 100644
--- a/man3/mkstemp.3
+++ b/man3/mkstemp.3
@@ -13,7 +13,7 @@
.\" Modified 990328, aeb
.\" 2008-06-19, mtk, Added mkostemp(); various other changes
.\"
-.TH mkstemp 3 2022-12-15 "Linux man-pages 6.02"
+.TH mkstemp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mkstemp, mkostemp, mkstemps, mkostemps \- create a unique temporary file
.SH LIBRARY
@@ -38,8 +38,8 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc >= 2.12: */ _POSIX_C_SOURCE >= 200809L
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.PP
.BR mkostemp ():
@@ -49,8 +49,8 @@ Feature Test Macro Requirements for glibc (see
.PP
.BR mkstemps ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.PP
.BR mkostemps ():
@@ -85,8 +85,8 @@ The
.BR mkostemp ()
function is like
.BR mkstemp (),
-with the difference that the following bits\(emwith the same meaning as for
-.BR open (2)\(emmay
+with the difference that the following bits\[em]with the same meaning as for
+.BR open (2)\[em]may
be specified in
.IR flags :
.BR O_APPEND ,
diff --git a/man3/mktemp.3 b/man3/mktemp.3
index d378eedbe..df1cdb5b1 100644
--- a/man3/mktemp.3
+++ b/man3/mktemp.3
@@ -12,7 +12,7 @@
.\" (prompted by Scott Burkett <scottb@IntNet.net>)
.\" Modified Sun Mar 28 23:44:38 1999 by Andries Brouwer (aeb@cwi.nl)
.\"
-.TH mktemp 3 2022-12-15 "Linux man-pages 6.02"
+.TH mktemp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mktemp \- make a unique temporary filename
.SH LIBRARY
@@ -34,8 +34,8 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
Before glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
diff --git a/man3/modf.3 b/man3/modf.3
index ae205e8b2..a5478a7b2 100644
--- a/man3/modf.3
+++ b/man3/modf.3
@@ -11,7 +11,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH modf 3 2022-12-15 "Linux man-pages 6.02"
+.TH modf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
modf, modff, modfl \- extract signed integral and fractional values from
floating-point number
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions break the argument
@@ -89,7 +89,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR frexp (3),
.BR ldexp (3)
diff --git a/man3/mpool.3 b/man3/mpool.3
index 6409fd92b..956ad2372 100644
--- a/man3/mpool.3
+++ b/man3/mpool.3
@@ -5,7 +5,7 @@
.\"
.\" @(#)mpool.3 8.1 (Berkeley) 6/4/93
.\"
-.TH mpool 3 2022-12-04 "Linux man-pages 6.02"
+.TH mpool 3 2022-12-04 "Linux man-pages 6.03"
.UC 7
.SH NAME
mpool \- shared memory buffer pool
diff --git a/man3/mq_close.3 b/man3/mq_close.3
index b8f78c11d..1d1e3f5f4 100644
--- a/man3/mq_close.3
+++ b/man3/mq_close.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_close 3 2022-12-15 "Linux man-pages 6.02"
+.TH mq_close 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mq_close \- close a message queue descriptor
.SH LIBRARY
diff --git a/man3/mq_getattr.3 b/man3/mq_getattr.3
index 3441df854..de08ab850 100644
--- a/man3/mq_getattr.3
+++ b/man3/mq_getattr.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_getattr 3 2022-12-15 "Linux man-pages 6.02"
+.TH mq_getattr 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mq_getattr, mq_setattr \- get/set message queue attributes
.SH LIBRARY
diff --git a/man3/mq_notify.3 b/man3/mq_notify.3
index 953240874..ae016c107 100644
--- a/man3/mq_notify.3
+++ b/man3/mq_notify.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_notify 3 2022-12-15 "Linux man-pages 6.02"
+.TH mq_notify 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mq_notify \- register for notification when a message is available
.SH LIBRARY
diff --git a/man3/mq_open.3 b/man3/mq_open.3
index e7d1b33f0..ca77ea90f 100644
--- a/man3/mq_open.3
+++ b/man3/mq_open.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_open 3 2022-12-15 "Linux man-pages 6.02"
+.TH mq_open 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mq_open \- open a message queue
.SH LIBRARY
diff --git a/man3/mq_receive.3 b/man3/mq_receive.3
index e646a7aa0..b792b9212 100644
--- a/man3/mq_receive.3
+++ b/man3/mq_receive.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_receive 3 2022-12-15 "Linux man-pages 6.02"
+.TH mq_receive 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mq_receive, mq_timedreceive \- receive a message from a message queue
.SH LIBRARY
diff --git a/man3/mq_send.3 b/man3/mq_send.3
index 2940a809b..5fa05dd30 100644
--- a/man3/mq_send.3
+++ b/man3/mq_send.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_send 3 2022-12-15 "Linux man-pages 6.02"
+.TH mq_send 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mq_send, mq_timedsend \- send a message to a message queue
.SH LIBRARY
diff --git a/man3/mq_unlink.3 b/man3/mq_unlink.3
index dbc696f47..8bd7b9d43 100644
--- a/man3/mq_unlink.3
+++ b/man3/mq_unlink.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_unlink 3 2022-12-15 "Linux man-pages 6.02"
+.TH mq_unlink 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mq_unlink \- remove a message queue
.SH LIBRARY
diff --git a/man3/mtrace.3 b/man3/mtrace.3
index d1b5b11ed..5e8b508a3 100644
--- a/man3/mtrace.3
+++ b/man3/mtrace.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mtrace 3 2022-12-15 "Linux man-pages 6.02"
+.TH mtrace 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
mtrace, muntrace \- malloc tracing
.SH LIBRARY
diff --git a/man3/nan.3 b/man3/nan.3
index 14a064732..bb941a8b2 100644
--- a/man3/nan.3
+++ b/man3/nan.3
@@ -7,7 +7,7 @@
.\"
.\" Corrections by aeb
.\"
-.TH nan 3 2022-12-15 "Linux man-pages 6.02"
+.TH nan 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
nan, nanf, nanl \- return 'Not a Number'
.SH LIBRARY
diff --git a/man3/netlink.3 b/man3/netlink.3
index 34d502804..918c6794f 100644
--- a/man3/netlink.3
+++ b/man3/netlink.3
@@ -5,7 +5,7 @@
.\" Based on the original comments from Alexey Kuznetsov
.\" $Id: netlink.3,v 1.1 1999/05/14 17:17:24 freitag Exp $
.\"
-.TH netlink 3 2022-10-30 "Linux man-pages 6.02"
+.TH netlink 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
netlink \- Netlink macros
.SH LIBRARY
@@ -62,7 +62,7 @@ The caller must check if the current
.I nlmsghdr
didn't have the
.B NLMSG_DONE
-set\(emthis function doesn't return NULL on end.
+set\[em]this function doesn't return NULL on end.
The
.I len
argument is an lvalue containing the remaining length
diff --git a/man3/newlocale.3 b/man3/newlocale.3
index 4e45c9d1d..f79237b68 100644
--- a/man3/newlocale.3
+++ b/man3/newlocale.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH newlocale 3 2022-12-04 "Linux man-pages 6.02"
+.TH newlocale 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
newlocale, freelocale \- create, modify, and free a locale object
.SH LIBRARY
@@ -38,13 +38,13 @@ returning a reference to the new or modified object as the function result.
Whether the call creates a new object or modifies an existing object
is determined by the value of
.IR base :
-.IP \(bu 3
+.IP \[bu] 3
If
.I base
is
.IR "(locale_t)\ 0" ,
a new object is created.
-.IP \(bu
+.IP \[bu]
If
.I base
refers to valid existing locale object
@@ -311,8 +311,8 @@ main(int argc, char *argv[])
/* If a second command\-line argument was specified, modify the
locale object to take the LC_TIME settings from the locale
specified in argv[2]. We assign the result of this newlocale()
- call to \(aqnloc\(aq rather than \(aqloc\(aq, since in some cases, we might
- want to preserve \(aqloc\(aq if this call fails. */
+ call to \[aq]nloc\[aq] rather than \[aq]loc\[aq], since in some cases, we might
+ want to preserve \[aq]loc\[aq] if this call fails. */
if (argc > 2) {
nloc = newlocale(LC_TIME_MASK, argv[2], loc);
@@ -344,7 +344,7 @@ main(int argc, char *argv[])
/* Free the locale object. */
- uselocale(LC_GLOBAL_LOCALE); /* So \(aqloc\(aq is no longer in use */
+ uselocale(LC_GLOBAL_LOCALE); /* So \[aq]loc\[aq] is no longer in use */
freelocale(loc);
exit(EXIT_SUCCESS);
diff --git a/man3/nextafter.3 b/man3/nextafter.3
index 91459b62c..715b182aa 100644
--- a/man3/nextafter.3
+++ b/man3/nextafter.3
@@ -7,7 +7,7 @@
.\"
.\" Based on glibc infopages
.\"
-.TH NEXTAFTER 3 2022-12-15 "Linux man-pages 6.02"
+.TH nextafter 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nextafter, nextafterf, nextafterl, nexttoward, nexttowardf, nexttowardl \-
floating-point number manipulation
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR nextafterf (),
@@ -46,7 +46,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR nexttoward (),
diff --git a/man3/nextup.3 b/man3/nextup.3
index 827a6e74c..c5fe45335 100644
--- a/man3/nextup.3
+++ b/man3/nextup.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH nextup 3 2022-12-15 "Linux man-pages 6.02"
+.TH nextup 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
nextup, nextupf, nextupl, nextdown, nextdownf, nextdownl \-
return next floating-point number toward positive/negative infinity
diff --git a/man3/nl_langinfo.3 b/man3/nl_langinfo.3
index 108141e4d..face3fb34 100644
--- a/man3/nl_langinfo.3
+++ b/man3/nl_langinfo.3
@@ -11,7 +11,7 @@
.\"
.\" Corrected prototype, 2002-10-18, aeb
.\"
-.TH nl_langinfo 3 2022-12-15 "Linux man-pages 6.02"
+.TH nl_langinfo 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nl_langinfo, nl_langinfo_l \- query language and locale information
.SH LIBRARY
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.24:
_POSIX_C_SOURCE >= 200809L
- Glibc 2.23 and earlier:
+ glibc 2.23 and earlier:
_POSIX_C_SOURCE >= 200112L
.fi
.SH DESCRIPTION
@@ -198,7 +198,7 @@ for alternative representation of a time in a locale-specific way
.RB ( %EX
conversion specification).
.TP
-.BR DAY_ "{1\(en7} (LC_TIME)"
+.BR DAY_ "{1\[en]7} (LC_TIME)"
Return name of the \fIn\fP-th day of the week.
[Warning: this follows
the US convention DAY_1 = Sunday, not the international convention
@@ -208,21 +208,21 @@ the US convention DAY_1 = Sunday, not the international convention
.BR strftime (3)
conversion specification.)
.TP
-.BR ABDAY_ "{1\(en7} (LC_TIME)"
+.BR ABDAY_ "{1\[en]7} (LC_TIME)"
Return abbreviated name of the \fIn\fP-th day of the week.
(Used in
.B %a
.BR strftime (3)
conversion specification.)
.TP
-.BR MON_ "{1\(en12} (LC_TIME)"
+.BR MON_ "{1\[en]12} (LC_TIME)"
Return name of the \fIn\fP-th month.
(Used in
.B %B
.BR strftime (3)
conversion specification.)
.TP
-.BR ABMON_ "{1\(en12} (LC_TIME)"
+.BR ABMON_ "{1\[en]12} (LC_TIME)"
Return abbreviated name of the \fIn\fP-th month.
(Used in
.B %b
diff --git a/man3/ntp_gettime.3 b/man3/ntp_gettime.3
index 444cdaad8..488d16472 100644
--- a/man3/ntp_gettime.3
+++ b/man3/ntp_gettime.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH ntp_gettime 3 2022-12-15 "Linux man-pages 6.02"
+.TH ntp_gettime 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ntp_gettime, ntp_gettimex \- get time parameters (NTP daemon interface)
.SH LIBRARY
diff --git a/man3/offsetof.3 b/man3/offsetof.3
index 5808805c8..1c69152d8 100644
--- a/man3/offsetof.3
+++ b/man3/offsetof.3
@@ -25,7 +25,7 @@
.\" References:
.\" /usr/lib/gcc/i486-linux-gnu/4.1.1/include/stddef.h
.\" glibc-doc
-.TH offsetof 3 2022-10-30 "Linux man-pages 6.02"
+.TH offsetof 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
offsetof \- offset of a structure member
.SH LIBRARY
@@ -64,7 +64,7 @@ within the given
.IR type ,
in units of bytes.
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH EXAMPLES
On a Linux/i386 system, when compiled using the default
.BR gcc (1)
diff --git a/man3/on_exit.3 b/man3/on_exit.3
index c585d7c77..6d1494e0c 100644
--- a/man3/on_exit.3
+++ b/man3/on_exit.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified 1993-04-02, David Metcalfe
.\" Modified 1993-07-25, Rik Faith (faith@cs.unc.edu)
-.TH on_exit 3 2022-12-15 "Linux man-pages 6.02"
+.TH on_exit 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
on_exit \- register a function to be called at normal process termination
.SH LIBRARY
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/open_memstream.3 b/man3/open_memstream.3
index 65708228b..2ddb284d7 100644
--- a/man3/open_memstream.3
+++ b/man3/open_memstream.3
@@ -5,7 +5,7 @@
.\"
.\" 2008-12-04, Petr Baudis <pasky@suse.cz>: Document open_wmemstream()
.\"
-.TH open_memstream 3 2022-12-15 "Linux man-pages 6.02"
+.TH open_memstream 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
open_memstream, open_wmemstream \- open a dynamic memory buffer stream
.SH LIBRARY
diff --git a/man3/opendir.3 b/man3/opendir.3
index 9c3a8d0e1..319ee400c 100644
--- a/man3/opendir.3
+++ b/man3/opendir.3
@@ -10,7 +10,7 @@
.\" Modified Sat Jul 24 18:46:01 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl)
.\" 2007-07-30 Ulrich Drepper <drepper@redhat.com>: document fdopendir().
-.TH opendir 3 2022-12-15 "Linux man-pages 6.02"
+.TH opendir 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
opendir, fdopendir \- open a directory
.SH LIBRARY
diff --git a/man3/openpty.3 b/man3/openpty.3
index 6dbf82027..fd17a8315 100644
--- a/man3/openpty.3
+++ b/man3/openpty.3
@@ -8,7 +8,7 @@
.\"
.\" Added -lutil remark, 030718
.\"
-.TH openpty 3 2022-12-15 "Linux man-pages 6.02"
+.TH openpty 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
openpty, login_tty, forkpty \- terminal utility functions
.SH LIBRARY
diff --git a/man3/perror.3 b/man3/perror.3
index 6b812d646..2c9559874 100644
--- a/man3/perror.3
+++ b/man3/perror.3
@@ -10,7 +10,7 @@
.\" (msmith@falcon.mercer.peachnet.edu) and various other changes.
.\" Modified 1996-05-16 by Martin Schulze (joey@infodrom.north.de)
.\"
-.TH perror 3 2022-12-15 "Linux man-pages 6.02"
+.TH perror 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
perror \- print a system error message
.SH LIBRARY
@@ -40,7 +40,7 @@ Feature Test Macro Requirements for glibc (see
.nf
From glibc 2.19 to glibc 2.31:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
@@ -53,7 +53,7 @@ First (if
.I s
is not NULL and
.I *s
-is not a null byte (\(aq\e0\(aq)), the argument string
+is not a null byte (\[aq]\e0\[aq])), the argument string
.I s
is printed, followed by a colon and a blank.
Then an error message corresponding to the current value of
@@ -126,7 +126,7 @@ T} Thread safety MT-Safe race:stderr
.SH STANDARDS
.BR perror (),
.IR errno :
-POSIX.1-2001, POSIX.1-2008, C89, C99, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, 4.3BSD.
.PP
The externals
.I sys_nerr
diff --git a/man3/popen.3 b/man3/popen.3
index f44baad70..170ceb511 100644
--- a/man3/popen.3
+++ b/man3/popen.3
@@ -10,7 +10,7 @@
.\" Modified Sat May 18 20:37:44 1996 by Martin Schulze (joey@linux.de)
.\" Modified 7 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk)
.\"
-.TH popen 3 2022-12-15 "Linux man-pages 6.02"
+.TH popen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
popen, pclose \- pipe stream to or from a process
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
.BR pclose ():
.nf
_POSIX_C_SOURCE >= 2
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
@@ -58,9 +58,9 @@ flag; interpretation, if any, is performed by the shell.
The
.I type
argument is a pointer to a null-terminated string which must contain
-either the letter \(aqr\(aq for reading or the letter \(aqw\(aq for writing.
+either the letter \[aq]r\[aq] for reading or the letter \[aq]w\[aq] for writing.
Since glibc 2.9,
-this argument can additionally include the letter \(aqe\(aq,
+this argument can additionally include the letter \[aq]e\[aq],
which causes the close-on-exec flag
.RB ( FD_CLOEXEC )
to be set on the underlying file descriptor;
@@ -168,7 +168,7 @@ T} Thread safety MT-Safe
.SH STANDARDS
POSIX.1-2001, POSIX.1-2008.
.PP
-The \(aqe\(aq value for
+The \[aq]e\[aq] value for
.I type
is a Linux extension.
.SH NOTES
diff --git a/man3/posix_fallocate.3 b/man3/posix_fallocate.3
index d68b811ec..22d0ae972 100644
--- a/man3/posix_fallocate.3
+++ b/man3/posix_fallocate.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH posix_fallocate 3 2022-12-15 "Linux man-pages 6.02"
+.TH posix_fallocate 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
posix_fallocate \- allocate file space
.SH LIBRARY
@@ -147,16 +147,16 @@ system call, which is MT-safe.
If the underlying filesystem does not support
.BR fallocate (2),
then the operation is emulated with the following caveats:
-.IP \(bu 3
+.IP \[bu] 3
The emulation is inefficient.
-.IP \(bu
+.IP \[bu]
There is a race condition where concurrent writes from another thread or
process could be overwritten with null bytes.
-.IP \(bu
+.IP \[bu]
There is a race condition where concurrent file size increases by
another thread or process could result in a file whose size is smaller
than expected.
-.IP \(bu
+.IP \[bu]
If
.I fd
has been opened with the
diff --git a/man3/posix_madvise.3 b/man3/posix_madvise.3
index 0d5164b9f..5347a4580 100644
--- a/man3/posix_madvise.3
+++ b/man3/posix_madvise.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH posix_madvise 3 2022-12-04 "Linux man-pages 6.02"
+.TH posix_madvise 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
posix_madvise \- give advice about patterns of memory usage
.SH LIBRARY
diff --git a/man3/posix_memalign.3 b/man3/posix_memalign.3
index 6e9d4ac35..50a105d6e 100644
--- a/man3/posix_memalign.3
+++ b/man3/posix_memalign.3
@@ -7,7 +7,7 @@
.\" 2001-10-11, 2003-08-22, aeb, added some details
.\" 2012-03-23, Michael Kerrisk <mtk.manpages@mail.com>
.\" Document pvalloc() and aligned_alloc()
-.TH posix_memalign 3 2022-12-15 "Linux man-pages 6.02"
+.TH posix_memalign 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
posix_memalign, aligned_alloc, memalign, valloc, pvalloc \-
allocate aligned memory
@@ -47,8 +47,8 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.12:
(_XOPEN_SOURCE >= 500) && !(_POSIX_C_SOURCE >= 200112L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
@@ -220,7 +220,7 @@ According to SUSv2,
.BR valloc ()
is declared in \fI<stdlib.h>\fP.
.\" Libc4,5 and
-Glibc declares it in \fI<malloc.h>\fP, and also in
+glibc declares it in \fI<malloc.h>\fP, and also in
\fI<stdlib.h>\fP
if suitable feature test macros are defined (see above).
.SH NOTES
diff --git a/man3/posix_openpt.3 b/man3/posix_openpt.3
index 053992f9e..e076b777f 100644
--- a/man3/posix_openpt.3
+++ b/man3/posix_openpt.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH posix_openpt 3 2022-12-15 "Linux man-pages 6.02"
+.TH posix_openpt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
posix_openpt \- open a pseudoterminal device
.SH LIBRARY
@@ -55,7 +55,7 @@ is set to indicate the error.
See
.BR open (2).
.SH VERSIONS
-Glibc support for
+glibc support for
.BR posix_openpt ()
has been provided since glibc 2.2.1.
.SH ATTRIBUTES
diff --git a/man3/posix_spawn.3 b/man3/posix_spawn.3
index fee477c0a..6dbad2ea0 100644
--- a/man3/posix_spawn.3
+++ b/man3/posix_spawn.3
@@ -8,7 +8,7 @@
.\" POSIX 1003.1-2004 documentation
.\" (http://www.opengroup.org/onlinepubs/009695399)
.\"
-.TH posix_spawn 3 2022-12-04 "Linux man-pages 6.02"
+.TH posix_spawn 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
posix_spawn, posix_spawnp \- spawn a process
.SH LIBRARY
@@ -168,7 +168,7 @@ Before glibc 2.24, the child process is created using
instead of
.BR fork (2)
when either of the following is true:
-.IP \(bu 3
+.IP \[bu] 3
the
.I spawn-flags
element of the attributes object pointed to by
@@ -176,7 +176,7 @@ element of the attributes object pointed to by
contains the GNU-specific flag
.BR POSIX_SPAWN_USEVFORK ;
or
-.IP \(bu
+.IP \[bu]
.I file_actions
is NULL and the
.I spawn-flags
@@ -306,7 +306,7 @@ of the object pointed to by
Set the scheduling policy algorithm and parameters of the child,
as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The scheduling policy is set to the value specified in the
.I spawn-schedpolicy
attribute
@@ -315,7 +315,7 @@ attribute
.\" .BR posix_spawnattr_setpolicy (3))
of the object pointed to by
.IR attrp .
-.IP \(bu
+.IP \[bu]
The scheduling parameters are set to the value specified in the
.I spawn-schedparam
attribute
@@ -409,7 +409,7 @@ If
.I file_actions
is NULL, then no special action is taken, and standard
.BR exec (3)
-semantics apply\(emfile descriptors open before the exec
+semantics apply\[em]file descriptors open before the exec
remain open in the new process,
except those for which the
.B FD_CLOEXEC
@@ -698,7 +698,7 @@ main(int argc, char *argv[])
while ((opt = getopt(argc, argv, "sc")) != \-1) {
switch (opt) {
- case \(aqc\(aq: /* \-c: close standard output in child */
+ case \[aq]c\[aq]: /* \-c: close standard output in child */
/* Create a file actions object and add a "close"
action to it. */
@@ -715,7 +715,7 @@ main(int argc, char *argv[])
file_actionsp = &file_actions;
break;
- case \(aqs\(aq: /* \-s: block all signals in child */
+ case \[aq]s\[aq]: /* \-s: block all signals in child */
/* Create an attributes object and add a "set signal mask"
action to it. */
@@ -740,7 +740,7 @@ main(int argc, char *argv[])
/* Spawn the child. The name of the program to execute and the
command\-line arguments are taken from the command\-line arguments
of this program. The environment of the program execed in the
- child is made the same as the parent\(aqs environment. */
+ child is made the same as the parent\[aq]s environment. */
s = posix_spawnp(&child_pid, argv[optind], file_actionsp, attrp,
&argv[optind], environ);
diff --git a/man3/pow.3 b/man3/pow.3
index 4ea1c033d..24ccaac71 100644
--- a/man3/pow.3
+++ b/man3/pow.3
@@ -13,7 +13,7 @@
.\" Modified 1995-08-14 by Arnt Gulbrandsen <agulbra@troll.no>
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
-.TH pow 3 2022-12-15 "Linux man-pages 6.02"
+.TH pow 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pow, powf, powl \- power functions
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the value of
@@ -331,7 +331,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH BUGS
.SS Historical bugs (now fixed)
Before glibc 2.28,
diff --git a/man3/pow10.3 b/man3/pow10.3
index 404451f14..7dba9de1b 100644
--- a/man3/pow10.3
+++ b/man3/pow10.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pow10 3 2022-12-15 "Linux man-pages 6.02"
+.TH pow10 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pow10, pow10f, pow10l \- base-10 power functions
.SH LIBRARY
diff --git a/man3/powerof2.3 b/man3/powerof2.3
new file mode 100644
index 000000000..78ecb7f2e
--- /dev/null
+++ b/man3/powerof2.3
@@ -0,0 +1,46 @@
+.\" Copyright (C) 2022 Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH powerof2 3 2022-12-31 "Linux man-pages 6.03"
+.SH NAME
+powerof2 \- test if a value is a power of 2
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/param.h>
+.PP
+.BI "int powerof2(" x );
+.fi
+.SH DESCRIPTION
+This macro returns true if
+.I x
+is a power of 2,
+and false otherwise.
+.PP
+.B 0
+is considered a power of 2.
+This can make sense considering wrapping of unsigned integers,
+and has interesting properties.
+.SH RETURN VALUE
+True or false,
+if
+.I x
+is a power of 2 or not,
+respectively.
+.SH STANDARDS
+This nonstandard macro is present in glibc and the BSDs.
+.SH CAVEATS
+The arguments may be evaluated more than once.
+.PP
+Because this macro is implemented using bitwise operations,
+some negative values can invoke undefined behavior.
+For example,
+the following invokes undefined behavior:
+.IR "powerof2(INT_MIN);".
+Call it only with unsigned types to be safe.
+.SH SEE ALSO
+.BR stdc_bit_ceil (3),
+.BR stdc_bit_floor (3)
diff --git a/man3/printf.3 b/man3/printf.3
index 282411d20..33fe60067 100644
--- a/man3/printf.3
+++ b/man3/printf.3
@@ -13,7 +13,7 @@
.\" 2000-07-26 jsm28@hermes.cam.ac.uk - three small fixes
.\" 2000-10-16 jsm28@hermes.cam.ac.uk - more fixes
.\"
-.TH printf 3 2022-12-15 "Linux man-pages 6.02"
+.TH printf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf,
vsprintf, vsnprintf \- formatted output conversion
@@ -54,7 +54,7 @@ Feature Test Macro Requirements for glibc (see
.BR vsnprintf ():
.nf
_XOPEN_SOURCE >= 500 || _ISOC99_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.PP
.BR dprintf (),
@@ -107,7 +107,7 @@ and
.BR vsnprintf ()
write at most
.I size
-bytes (including the terminating null byte (\(aq\e0\(aq)) to
+bytes (including the terminating null byte (\[aq]\e0\[aq])) to
.IR str .
.PP
The functions
@@ -187,7 +187,7 @@ The overall syntax of a conversion specification is:
The arguments must correspond properly (after type promotion) with the
conversion specifier.
By default, the arguments are used in the order
-given, where each \(aq*\(aq (see
+given, where each \[aq]*\[aq] (see
.I "Field width"
and
.I Precision
@@ -195,7 +195,7 @@ below) and each conversion specifier asks for the next
argument (and it is an error if insufficiently many arguments are given).
One can also specify explicitly which argument is taken,
at each place where an argument is required, by writing "%m$" instead
-of \(aq%\(aq and "*m$" instead of \(aq*\(aq,
+of \[aq]%\[aq] and "*m$" instead of \[aq]*\[aq],
where the decimal integer \fIm\fP denotes
the position in the argument list of the desired argument, indexed starting
from 1.
@@ -218,14 +218,14 @@ printf("%2$*1$d", width, num);
are equivalent.
The second style allows repeated references to the
same argument.
-The C99 standard does not include the style using \(aq$\(aq,
+The C99 standard does not include the style using \[aq]$\[aq],
which comes from the Single UNIX Specification.
If the style using
-\(aq$\(aq is used, it must be used throughout for all conversions taking an
+\[aq]$\[aq] is used, it must be used throughout for all conversions taking an
argument and all width and precision arguments, but it may be mixed
with "%%" formats, which do not consume an argument.
There may be no
-gaps in the numbers of arguments specified using \(aq$\(aq; for example, if
+gaps in the numbers of arguments specified using \[aq]$\[aq]; for example, if
arguments 1 and 3 are specified, argument 2 must also be specified
somewhere in the format string.
.PP
@@ -238,12 +238,12 @@ part of the locale.
(See
.BR setlocale (3).)
The POSIX locale
-uses \(aq.\(aq as radix character, and does not have a grouping character.
+uses \[aq].\[aq] as radix character, and does not have a grouping character.
Thus,
.PP
.in +4n
.EX
-printf("%\(aq.2f", 1234567.89);
+printf("%\[aq].2f", 1234567.89);
.EE
.in
.PP
@@ -348,7 +348,7 @@ overrides a
.B \&0
if both are given.
.TP
-.B \(aq \(aq
+.B \[aq] \[aq]
(a space) A blank should be left before a positive number
(or empty string) produced by a signed conversion.
.TP
@@ -363,7 +363,7 @@ overrides a space if both are used.
The five flag characters above are defined in the C99 standard.
The Single UNIX Specification specifies one further flag character.
.TP
-.B \(aq
+.B \[aq]
For decimal conversion
.RB ( i ,
.BR d ,
@@ -380,7 +380,7 @@ Note that many versions of
.BR gcc (1)
cannot parse this option and will issue a warning.
(SUSv2 did not
-include \fI%\(aqF\fP, but SUSv3 added it.)
+include \fI%\[aq]F\fP, but SUSv3 added it.)
Note also that the default locale of a C program is "C"
whose locale information indicates no thousands' grouping character.
Therefore, without a prior call to
@@ -409,20 +409,20 @@ Instead of a decimal digit string one may write "*" or "*m$"
is given in the next argument, or in the \fIm\fP-th argument, respectively,
which must be of type
.IR int .
-A negative field width is taken as a \(aq\-\(aq flag followed by a
+A negative field width is taken as a \[aq]\-\[aq] flag followed by a
positive field width.
In no case does a nonexistent or small field width cause truncation of a
field; if the result of a conversion is wider than the field width, the
field is expanded to contain the conversion result.
.SS Precision
-An optional precision, in the form of a period (\(aq.\(aq) followed by an
+An optional precision, in the form of a period (\[aq].\[aq]) followed by an
optional decimal digit string.
Instead of a decimal digit string one may write "*" or "*m$"
(for some decimal integer \fIm\fP) to specify that the precision
is given in the next argument, or in the \fIm\fP-th argument, respectively,
which must be of type
.IR int .
-If the precision is given as just \(aq.\(aq, the precision is taken to
+If the precision is given as just \[aq].\[aq], the precision is taken to
be zero.
A negative precision is taken as if the precision were omitted.
This gives the minimum number of digits to appear for
@@ -794,7 +794,7 @@ modifier is present: the
argument is expected to be a pointer to an array of character type (pointer
to a string).
Characters from the array are written up to (but not
-including) a terminating null byte (\(aq\e0\(aq);
+including) a terminating null byte (\[aq]\e0\[aq]);
if a precision is specified, no more than the number specified
are written.
If a precision is given, no null byte need be present;
@@ -861,7 +861,7 @@ The behavior is undefined if the conversion specification includes
any flags, a field width, or a precision.
.TP
.B m
-(Glibc extension; supported by uClibc and musl.)
+(glibc extension; supported by uClibc and musl.)
Print output of
.I strerror(errno)
(or
@@ -870,10 +870,10 @@ in the alternate form).
No argument is required.
.TP
.B %
-A \(aq%\(aq is written.
+A \[aq]%\[aq] is written.
No argument is converted.
The complete conversion
-specification is \(aq%%\(aq.
+specification is \[aq]%%\[aq].
.SH RETURN VALUE
Upon successful return, these functions return the number of characters
printed (excluding the null byte used to end output to strings).
@@ -884,7 +884,7 @@ and
.BR vsnprintf ()
do not write more than
.I size
-bytes (including the terminating null byte (\(aq\e0\(aq)).
+bytes (including the terminating null byte (\[aq]\e0\[aq])).
If the output was truncated due to this limit, then the return value
is the number of characters (excluding the terminating null byte)
which would have been written to the final string if enough space
@@ -910,7 +910,7 @@ If an output error is encountered, a negative value is returned.
.\" No locale-dependent radix character,
.\" no thousands' separator, no NaN or infinity, no "%m$" and "*m$".
.\" .PP
-.\" Linux libc5 knows about the five C standard flags and the \(aq flag,
+.\" Linux libc5 knows about the five C standard flags and the \[aq] flag,
.\" locale, "%m$" and "*m$".
.\" It knows about the length modifiers \fBh\fP, \fBl\fP, \fBL\fP,
.\" \fBZ\fP, and \fBq\fP, but accepts \fBL\fP and \fBq\fP
@@ -963,12 +963,10 @@ T} Thread safety MT-Safe locale
.BR fprintf (),
.BR printf (),
.BR sprintf (),
+.BR snprintf (),
.BR vprintf (),
.BR vfprintf (),
-.BR vsprintf ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
-.PP
-.BR snprintf (),
+.BR vsprintf (),
.BR vsnprintf ():
POSIX.1-2001, POSIX.1-2008, C99.
.PP
@@ -1182,7 +1180,7 @@ make_message(const char *fmt, ...)
if (n < 0)
return NULL;
- size = (size_t) n + 1; /* One extra byte for \(aq\e0\(aq */
+ size = (size_t) n + 1; /* One extra byte for \[aq]\e0\[aq] */
p = malloc(size);
if (p == NULL)
return NULL;
diff --git a/man3/profil.3 b/man3/profil.3
index 5f61a7dc9..b9ddbaeef 100644
--- a/man3/profil.3
+++ b/man3/profil.3
@@ -6,7 +6,7 @@
.\" Modified Fri Jun 23 01:35:19 1995 Andries Brouwer <aeb@cwi.nl>
.\" (prompted by Bas V. de Bakker <bas@phys.uva.nl>)
.\" Corrected (and moved to man3), 980612, aeb
-.TH profil 3 2022-12-15 "Linux man-pages 6.02"
+.TH profil 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
profil \- execution time profile
.SH LIBRARY
diff --git a/man3/program_invocation_name.3 b/man3/program_invocation_name.3
index f3a3518db..440d7aaeb 100644
--- a/man3/program_invocation_name.3
+++ b/man3/program_invocation_name.3
@@ -21,7 +21,7 @@
.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
.\" %%%LICENSE_END
.\"
-.TH program_invocation_name 3 2022-10-30 "Linux man-pages 6.02"
+.TH program_invocation_name 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
program_invocation_name, program_invocation_short_name \- \
obtain name used to invoke calling program
diff --git a/man3/psignal.3 b/man3/psignal.3
index d6e46f438..fa730da68 100644
--- a/man3/psignal.3
+++ b/man3/psignal.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:45:17 1993 by Rik Faith (faith@cs.unc.edu)
-.TH psignal 3 2022-12-15 "Linux man-pages 6.02"
+.TH psignal 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
psignal, psiginfo \- print signal description
.SH LIBRARY
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.PP
@@ -103,11 +103,11 @@ POSIX.1-2008, 4.3BSD.
Up to glibc 2.12,
.BR psiginfo ()
had the following bugs:
-.IP \(bu 3
+.IP \[bu] 3
In some circumstances, a trailing newline is not printed.
.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=12107
.\" Reportedly now fixed; check glibc 2.13
-.IP \(bu
+.IP \[bu]
Additional details are not displayed for real-time signals.
.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=12108
.\" Reportedly now fixed; check glibc 2.13
diff --git a/man3/pthread_atfork.3 b/man3/pthread_atfork.3
index dd41ba8d4..e6ec6ddb0 100644
--- a/man3/pthread_atfork.3
+++ b/man3/pthread_atfork.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_atfork 3 2022-10-30 "Linux man-pages 6.02"
+.TH pthread_atfork 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_atfork \- register fork handlers
.SH LIBRARY
@@ -25,17 +25,17 @@ The handlers are executed in the context of the thread that calls
.BR fork (2).
.PP
Three kinds of handler can be registered:
-.IP \(bu 3
+.IP \[bu] 3
.I prepare
specifies a handler that is executed in the parent process before
.BR fork (2)
processing starts.
-.IP \(bu
+.IP \[bu]
.I parent
specifies a handler that is executed in the parent process after
.BR fork (2)
processing completes.
-.IP \(bu
+.IP \[bu]
.I child
specifies a handler that is executed in the child process after
.BR fork (2)
diff --git a/man3/pthread_attr_init.3 b/man3/pthread_attr_init.3
index 57134e219..bb1f7a567 100644
--- a/man3/pthread_attr_init.3
+++ b/man3/pthread_attr_init.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_init 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_init 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_init, pthread_attr_destroy \- initialize and destroy
thread attributes object
diff --git a/man3/pthread_attr_setaffinity_np.3 b/man3/pthread_attr_setaffinity_np.3
index 1a5523e56..03e28cca9 100644
--- a/man3/pthread_attr_setaffinity_np.3
+++ b/man3/pthread_attr_setaffinity_np.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setaffinity_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setaffinity_np 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setaffinity_np, pthread_attr_getaffinity_np \- set/get
CPU affinity attribute in thread attributes object
diff --git a/man3/pthread_attr_setdetachstate.3 b/man3/pthread_attr_setdetachstate.3
index 6e2cc92d5..3c0144809 100644
--- a/man3/pthread_attr_setdetachstate.3
+++ b/man3/pthread_attr_setdetachstate.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setdetachstate 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setdetachstate 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setdetachstate, pthread_attr_getdetachstate \-
set/get detach state attribute in thread attributes object
diff --git a/man3/pthread_attr_setguardsize.3 b/man3/pthread_attr_setguardsize.3
index 4f8099fdd..13b3ee6f4 100644
--- a/man3/pthread_attr_setguardsize.3
+++ b/man3/pthread_attr_setguardsize.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setguardsize 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setguardsize 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setguardsize, pthread_attr_getguardsize \- set/get guard size
attribute in thread attributes object
diff --git a/man3/pthread_attr_setinheritsched.3 b/man3/pthread_attr_setinheritsched.3
index 6e6005846..8aa764e78 100644
--- a/man3/pthread_attr_setinheritsched.3
+++ b/man3/pthread_attr_setinheritsched.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setinheritsched 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setinheritsched 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setinheritsched, pthread_attr_getinheritsched \- set/get
inherit-scheduler attribute in thread attributes object
diff --git a/man3/pthread_attr_setschedparam.3 b/man3/pthread_attr_setschedparam.3
index beff4b774..977e15776 100644
--- a/man3/pthread_attr_setschedparam.3
+++ b/man3/pthread_attr_setschedparam.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setschedparam 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setschedparam 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setschedparam, pthread_attr_getschedparam \- set/get
scheduling parameter attributes in thread attributes object
diff --git a/man3/pthread_attr_setschedpolicy.3 b/man3/pthread_attr_setschedpolicy.3
index 0ea354674..a24dfebcf 100644
--- a/man3/pthread_attr_setschedpolicy.3
+++ b/man3/pthread_attr_setschedpolicy.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setschedpolicy 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setschedpolicy 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setschedpolicy, pthread_attr_getschedpolicy \- set/get
scheduling policy attribute in thread attributes object
diff --git a/man3/pthread_attr_setscope.3 b/man3/pthread_attr_setscope.3
index c071cde23..102c5dd48 100644
--- a/man3/pthread_attr_setscope.3
+++ b/man3/pthread_attr_setscope.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setscope 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setscope 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setscope, pthread_attr_getscope \- set/get contention scope
attribute in thread attributes object
diff --git a/man3/pthread_attr_setsigmask_np.3 b/man3/pthread_attr_setsigmask_np.3
index 687abc983..ece2ef1e4 100644
--- a/man3/pthread_attr_setsigmask_np.3
+++ b/man3/pthread_attr_setsigmask_np.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setsigmask_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setsigmask_np 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setsigmask_np, pthread_attr_getsigmask_np \- set/get
signal mask attribute in thread attributes object
@@ -108,18 +108,18 @@ that can be used to manipulate and inspect signal sets, see
In the absence of
.BR pthread_attr_setsigmask_np ()
it is possible to create a thread with a desired signal mask as follows:
-.IP \(bu 3
+.IP \[bu] 3
The creating thread uses
.BR pthread_sigmask (3)
to save its current signal mask and set its mask to block all signals.
-.IP \(bu
+.IP \[bu]
The new thread is then created using
.BR pthread_create ();
the new thread will inherit the creating thread's signal mask.
-.IP \(bu
+.IP \[bu]
The new thread sets its signal mask to the desired value using
.BR pthread_sigmask (3).
-.IP \(bu
+.IP \[bu]
The creating thread restores its signal mask to the original value.
.PP
Following the above steps,
diff --git a/man3/pthread_attr_setstack.3 b/man3/pthread_attr_setstack.3
index 8f248a367..7ce31c9bf 100644
--- a/man3/pthread_attr_setstack.3
+++ b/man3/pthread_attr_setstack.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setstack 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setstack 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setstack, pthread_attr_getstack \- set/get stack
attributes in thread attributes object
diff --git a/man3/pthread_attr_setstackaddr.3 b/man3/pthread_attr_setstackaddr.3
index 8e40a5a82..7b0747924 100644
--- a/man3/pthread_attr_setstackaddr.3
+++ b/man3/pthread_attr_setstackaddr.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setstackaddr 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setstackaddr 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setstackaddr, pthread_attr_getstackaddr \-
set/get stack address attribute in thread attributes object
diff --git a/man3/pthread_attr_setstacksize.3 b/man3/pthread_attr_setstacksize.3
index 6e454cd90..83195bd6f 100644
--- a/man3/pthread_attr_setstacksize.3
+++ b/man3/pthread_attr_setstacksize.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_attr_setstacksize 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_attr_setstacksize 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_attr_setstacksize, pthread_attr_getstacksize \- set/get stack size
attribute in thread attributes object
diff --git a/man3/pthread_cancel.3 b/man3/pthread_cancel.3
index a94401b9b..c36b22c58 100644
--- a/man3/pthread_cancel.3
+++ b/man3/pthread_cancel.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_cancel 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_cancel 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_cancel \- send a cancelation request to a thread
.SH LIBRARY
@@ -165,7 +165,7 @@ thread_func(void *ignored_argument)
{
int s;
- /* Disable cancelation for a while, so that we don\(aqt
+ /* Disable cancelation for a while, so that we don\[aq]t
immediately react to a cancelation request. */
s = pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
@@ -219,7 +219,7 @@ main(void)
if (res == PTHREAD_CANCELED)
printf("%s(): thread was canceled\en", __func__);
else
- printf("%s(): thread wasn\(aqt canceled (shouldn\(aqt happen!)\en",
+ printf("%s(): thread wasn\[aq]t canceled (shouldn\[aq]t happen!)\en",
__func__);
exit(EXIT_SUCCESS);
}
diff --git a/man3/pthread_cleanup_push.3 b/man3/pthread_cleanup_push.3
index 3f98d1368..4a0cf32ee 100644
--- a/man3/pthread_cleanup_push.3
+++ b/man3/pthread_cleanup_push.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_cleanup_push 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_cleanup_push 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_cleanup_push, pthread_cleanup_pop \- push and pop
thread cancelation clean-up handlers
@@ -47,11 +47,11 @@ is nonzero.
.PP
A cancelation clean-up handler is popped from the stack
and executed in the following circumstances:
-.IP \(bu 3
+.IP \[bu] 3
When a thread is canceled,
all of the stacked clean-up handlers are popped and executed in
the reverse of the order in which they were pushed onto the stack.
-.IP \(bu
+.IP \[bu]
When a thread terminates by calling
.BR pthread_exit (3),
all clean-up handlers are executed as described in the preceding point.
@@ -61,7 +61,7 @@ called if the thread terminates by
performing a
.I return
from the thread start function.)
-.IP \(bu
+.IP \[bu]
When a thread calls
.BR pthread_cleanup_pop ()
with a nonzero
@@ -73,7 +73,7 @@ POSIX.1 permits
and
.BR pthread_cleanup_pop ()
to be implemented as macros that expand to text
-containing \(aq\fB{\fP\(aq and \(aq\fB}\fP\(aq, respectively.
+containing \[aq]\fB{\fP\[aq] and \[aq]\fB}\fP\[aq], respectively.
For this reason, the caller must ensure that calls to these
functions are paired within the same function,
and at the same lexical nesting level.
@@ -133,7 +133,7 @@ and
functions
.I are
implemented as macros that expand to text
-containing \(aq\fB{\fP\(aq and \(aq\fB}\fP\(aq, respectively.
+containing \[aq]\fB{\fP\[aq] and \[aq]\fB}\fP\[aq], respectively.
This means that variables declared within the scope of
paired calls to these functions will be visible within only that scope.
.PP
diff --git a/man3/pthread_cleanup_push_defer_np.3 b/man3/pthread_cleanup_push_defer_np.3
index 7d0cf8c08..ee00d4268 100644
--- a/man3/pthread_cleanup_push_defer_np.3
+++ b/man3/pthread_cleanup_push_defer_np.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_cleanup_push_defer_np 3 2022-10-30 "Linux man-pages 6.02"
+.TH pthread_cleanup_push_defer_np 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np \- push and pop
thread cancelation clean-up handlers while saving cancelability type
diff --git a/man3/pthread_create.3 b/man3/pthread_create.3
index 773bfa3d2..f661c11ad 100644
--- a/man3/pthread_create.3
+++ b/man3/pthread_create.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_create 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_create 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_create \- create a new thread
.SH LIBRARY
@@ -30,13 +30,13 @@ is passed as the sole argument of
.IR start_routine ().
.PP
The new thread terminates in one of the following ways:
-.IP \(bu 3
+.IP \[bu] 3
It calls
.BR pthread_exit (3),
specifying an exit status value that is available to another thread
in the same process that calls
.BR pthread_join (3).
-.IP \(bu
+.IP \[bu]
It returns from
.IR start_routine ().
This is equivalent to calling
@@ -44,10 +44,10 @@ This is equivalent to calling
with the value supplied in the
.I return
statement.
-.IP \(bu
+.IP \[bu]
It is canceled (see
.BR pthread_cancel (3)).
-.IP \(bu
+.IP \[bu]
Any of the threads in the process calls
.BR exit (3),
or the main thread performs a return from
@@ -163,7 +163,7 @@ by
Unless real-time scheduling policies are being employed,
after a call to
.BR pthread_create (),
-it is indeterminate which thread\(emthe caller or the new thread\(emwill
+it is indeterminate which thread\[em]the caller or the new thread\[em]will
next execute.
.PP
A thread may either be
@@ -303,7 +303,7 @@ thread_start(void *arg)
if (uargv == NULL)
handle_error("strdup");
- for (char *p = uargv; *p != \(aq\e0\(aq; p++)
+ for (char *p = uargv; *p != \[aq]\e0\[aq]; p++)
*p = toupper(*p);
return uargv;
@@ -324,7 +324,7 @@ main(int argc, char *argv[])
stack_size = \-1;
while ((opt = getopt(argc, argv, "s:")) != \-1) {
switch (opt) {
- case \(aqs\(aq:
+ case \[aq]s\[aq]:
stack_size = strtoul(optarg, NULL, 0);
break;
diff --git a/man3/pthread_detach.3 b/man3/pthread_detach.3
index f516f53d9..4a93fc00d 100644
--- a/man3/pthread_detach.3
+++ b/man3/pthread_detach.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_detach 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_detach 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_detach \- detach a thread
.SH LIBRARY
diff --git a/man3/pthread_equal.3 b/man3/pthread_equal.3
index 36427f003..e7cc0a5d8 100644
--- a/man3/pthread_equal.3
+++ b/man3/pthread_equal.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_equal 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_equal 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_equal \- compare thread IDs
.SH LIBRARY
diff --git a/man3/pthread_exit.3 b/man3/pthread_exit.3
index abda18f11..c7ed85b3d 100644
--- a/man3/pthread_exit.3
+++ b/man3/pthread_exit.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_exit 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_exit 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_exit \- terminate calling thread
.SH LIBRARY
diff --git a/man3/pthread_getattr_default_np.3 b/man3/pthread_getattr_default_np.3
index c54b25a88..e96d87008 100644
--- a/man3/pthread_getattr_default_np.3
+++ b/man3/pthread_getattr_default_np.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_getattr_default_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_getattr_default_np 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_getattr_default_np, pthread_setattr_default_np, \-
get or set default thread-creation attributes
@@ -22,20 +22,20 @@ POSIX threads library
The
.BR pthread_setattr_default_np ()
function sets the default attributes used for creation of a new
-thread\(emthat is, the attributes that are used when
+thread\[em]that is, the attributes that are used when
.BR pthread_create (3)
is called with a second argument that is NULL.
The default attributes are set using the attributes supplied in
.IR *attr ,
a previously initialized thread attributes object.
Note the following details about the supplied attributes object:
-.IP \(bu 3
+.IP \[bu] 3
The attribute settings in the object must be valid.
-.IP \(bu
+.IP \[bu]
The
.I stack address
attribute must not be set in the object.
-.IP \(bu
+.IP \[bu]
Setting the
.I stack size
attribute to zero means leave the default stack size unchanged.
diff --git a/man3/pthread_getattr_np.3 b/man3/pthread_getattr_np.3
index c46f95f28..df8d2a67c 100644
--- a/man3/pthread_getattr_np.3
+++ b/man3/pthread_getattr_np.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_getattr_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_getattr_np 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_getattr_np \- get attributes of created thread
.SH LIBRARY
@@ -31,13 +31,13 @@ the corresponding attribute values passed in the
object that was used to create the thread using
.BR pthread_create (3).
In particular, the following attributes may differ:
-.IP \(bu 3
+.IP \[bu] 3
the detach state, since a joinable thread may have detached itself
after creation;
-.IP \(bu
+.IP \[bu]
the stack size,
which the implementation may align to a suitable boundary.
-.IP \(bu
+.IP \[bu]
and the guard size,
which the implementation may round upward to a multiple of the page size,
or ignore (i.e., treat as 0),
@@ -262,9 +262,9 @@ get_thread_attributes_from_cl(int argc, char *argv[],
while ((opt = getopt(argc, argv, "ag:s:")) != \-1) {
switch (opt) {
- case \(aqa\(aq: allocate_stack = 1; break;
- case \(aqg\(aq: guard_size = strtoul(optarg, NULL, 0); break;
- case \(aqs\(aq: stack_size = strtoul(optarg, NULL, 0); break;
+ case \[aq]a\[aq]: allocate_stack = 1; break;
+ case \[aq]g\[aq]: guard_size = strtoul(optarg, NULL, 0); break;
+ case \[aq]s\[aq]: stack_size = strtoul(optarg, NULL, 0); break;
default: usage(argv[0], NULL);
}
}
diff --git a/man3/pthread_getcpuclockid.3 b/man3/pthread_getcpuclockid.3
index 949606c49..8c11a301c 100644
--- a/man3/pthread_getcpuclockid.3
+++ b/man3/pthread_getcpuclockid.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_getcpuclockid 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_getcpuclockid 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_getcpuclockid \- retrieve ID of a thread's CPU time clock
.SH LIBRARY
diff --git a/man3/pthread_join.3 b/man3/pthread_join.3
index 732a4bfa3..31464db89 100644
--- a/man3/pthread_join.3
+++ b/man3/pthread_join.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_join 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_join 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_join \- join with a terminated thread
.SH LIBRARY
diff --git a/man3/pthread_kill.3 b/man3/pthread_kill.3
index 3518ad71e..5b0533f64 100644
--- a/man3/pthread_kill.3
+++ b/man3/pthread_kill.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_kill 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_kill 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_kill \- send a signal to a thread
.SH LIBRARY
diff --git a/man3/pthread_kill_other_threads_np.3 b/man3/pthread_kill_other_threads_np.3
index f2c3add3b..476e13d4c 100644
--- a/man3/pthread_kill_other_threads_np.3
+++ b/man3/pthread_kill_other_threads_np.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_kill_other_threads_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_kill_other_threads_np 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_kill_other_threads_np \- terminate all other threads in process
.SH LIBRARY
diff --git a/man3/pthread_mutex_consistent.3 b/man3/pthread_mutex_consistent.3
index c1bd43433..9fe3f8939 100644
--- a/man3/pthread_mutex_consistent.3
+++ b/man3/pthread_mutex_consistent.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_mutex_consistent 3 2022-12-04 "Linux man-pages 6.02"
+.TH pthread_mutex_consistent 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pthread_mutex_consistent \- make a robust mutex consistent
.SH LIBRARY
diff --git a/man3/pthread_mutexattr_getpshared.3 b/man3/pthread_mutexattr_getpshared.3
index 5d56f3fa3..7f44bb9e6 100644
--- a/man3/pthread_mutexattr_getpshared.3
+++ b/man3/pthread_mutexattr_getpshared.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_mutexattr_getpshared 3 2022-10-30 "Linux man-pages 6.02"
+.TH pthread_mutexattr_getpshared 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pthread_mutexattr_getpshared, pthread_mutexattr_setpshared \- get/set
process-shared mutex attribute
diff --git a/man3/pthread_mutexattr_init.3 b/man3/pthread_mutexattr_init.3
index 9965c1e73..2ccd65e98 100644
--- a/man3/pthread_mutexattr_init.3
+++ b/man3/pthread_mutexattr_init.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_mutexattr_init 3 2022-10-30 "Linux man-pages 6.02"
+.TH pthread_mutexattr_init 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pthread_mutexattr_init, pthread_mutexattr_destroy \- initialize and
destroy a mutex attributes object
diff --git a/man3/pthread_mutexattr_setrobust.3 b/man3/pthread_mutexattr_setrobust.3
index ae1b8c10f..73291a81f 100644
--- a/man3/pthread_mutexattr_setrobust.3
+++ b/man3/pthread_mutexattr_setrobust.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_mutexattr_setrobust 3 2022-12-04 "Linux man-pages 6.02"
+.TH pthread_mutexattr_setrobust 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pthread_mutexattr_getrobust, pthread_mutexattr_setrobust
\- get and set the robustness attribute of a mutex attributes object
diff --git a/man3/pthread_rwlockattr_setkind_np.3 b/man3/pthread_rwlockattr_setkind_np.3
index d0e396df4..0a429ff9b 100644
--- a/man3/pthread_rwlockattr_setkind_np.3
+++ b/man3/pthread_rwlockattr_setkind_np.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_rwlockattr_setkind_np 3 2022-10-30 "Linux man-pages 6.02"
+.TH pthread_rwlockattr_setkind_np 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pthread_rwlockattr_setkind_np, pthread_rwlockattr_getkind_np \- set/get
the read-write lock kind of the thread read-write lock attribute object
diff --git a/man3/pthread_self.3 b/man3/pthread_self.3
index f42621f80..1ca2a0932 100644
--- a/man3/pthread_self.3
+++ b/man3/pthread_self.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_self 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_self 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_self \- obtain ID of the calling thread
.SH LIBRARY
diff --git a/man3/pthread_setaffinity_np.3 b/man3/pthread_setaffinity_np.3
index c5e38d760..a85a56e63 100644
--- a/man3/pthread_setaffinity_np.3
+++ b/man3/pthread_setaffinity_np.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_setaffinity_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_setaffinity_np 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_setaffinity_np, pthread_getaffinity_np \- set/get
CPU affinity of a thread
diff --git a/man3/pthread_setcancelstate.3 b/man3/pthread_setcancelstate.3
index d8be05d3f..ddcdc3dd6 100644
--- a/man3/pthread_setcancelstate.3
+++ b/man3/pthread_setcancelstate.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_setcancelstate 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_setcancelstate 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_setcancelstate, pthread_setcanceltype \-
set cancelability state and type
diff --git a/man3/pthread_setconcurrency.3 b/man3/pthread_setconcurrency.3
index 6d43314a2..59d6ccbb0 100644
--- a/man3/pthread_setconcurrency.3
+++ b/man3/pthread_setconcurrency.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_setconcurrency 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_setconcurrency 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_setconcurrency, pthread_getconcurrency \- set/get
the concurrency level
diff --git a/man3/pthread_setname_np.3 b/man3/pthread_setname_np.3
index d374fd2e2..92de26913 100644
--- a/man3/pthread_setname_np.3
+++ b/man3/pthread_setname_np.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_setname_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_setname_np 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_setname_np, pthread_getname_np \- set/get the name of a thread
.SH LIBRARY
@@ -29,7 +29,7 @@ function can be used to set a unique name for a thread,
which can be useful for debugging
multithreaded applications.
The thread name is a meaningful C language string, whose length is
-restricted to 16 characters, including the terminating null byte (\(aq\e0\(aq).
+restricted to 16 characters, including the terminating null byte (\[aq]\e0\[aq]).
The
.I thread
argument specifies the thread whose name is to be changed;
@@ -126,9 +126,9 @@ The following shell session shows a sample run of the program:
.RB "$" " ./a.out"
Created a thread. Default name is: a.out
The thread name after setting it is THREADFOO.
-\fB\(haZ\fP # Suspend the program
+\fB\[ha]Z\fP # Suspend the program
[1]+ Stopped ./a.out
-.RB "$ " "ps H \-C a.out \-o \(aqpid tid cmd comm\(aq"
+.RB "$ " "ps H \-C a.out \-o \[aq]pid tid cmd comm\[aq]"
PID TID CMD COMMAND
5990 5990 ./a.out a.out
5990 5991 ./a.out THREADFOO
diff --git a/man3/pthread_setschedparam.3 b/man3/pthread_setschedparam.3
index 74386d7c7..2eb9bea22 100644
--- a/man3/pthread_setschedparam.3
+++ b/man3/pthread_setschedparam.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_setschedparam 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_setschedparam 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthread_setschedparam, pthread_getschedparam \- set/get
scheduling policy and parameters of a thread
@@ -178,7 +178,7 @@ Password:
Scheduler settings of main thread
policy=SCHED_FIFO, priority=10
-Scheduler settings in \(aqattr\(aq
+Scheduler settings in \[aq]attr\[aq]
policy=SCHED_RR, priority=20
inheritsched is EXPLICIT
@@ -203,7 +203,7 @@ and instead take their scheduling attributes from the creating thread.
Scheduler settings of main thread
policy=SCHED_FIFO, priority=10
-Scheduler settings in \(aqattr\(aq
+Scheduler settings in \[aq]attr\[aq]
policy=SCHED_RR, priority=20
inheritsched is INHERIT
@@ -253,7 +253,7 @@ usage(char *prog_name, char *msg)
fpe(" o SCHED_OTHER\en");
fpe("\-A Use default thread attributes object\en");
fpe("\-i {e|i} Set inherit scheduler attribute to\en");
- fpe(" \(aqexplicit\(aq or \(aqinherit\(aq\en");
+ fpe(" \[aq]explicit\[aq] or \[aq]inherit\[aq]\en");
fpe("\-m<policy><prio> Set scheduling policy and priority on\en");
fpe(" main thread before pthread_create() call\en");
exit(EXIT_FAILURE);
@@ -263,9 +263,9 @@ static int
get_policy(char p, int *policy)
{
switch (p) {
- case \(aqf\(aq: *policy = SCHED_FIFO; return 1;
- case \(aqr\(aq: *policy = SCHED_RR; return 1;
- case \(aqo\(aq: *policy = SCHED_OTHER; return 1;
+ case \[aq]f\[aq]: *policy = SCHED_FIFO; return 1;
+ case \[aq]r\[aq]: *policy = SCHED_RR; return 1;
+ case \[aq]o\[aq]: *policy = SCHED_OTHER; return 1;
default: return 0;
}
}
@@ -322,10 +322,10 @@ main(int argc, char *argv[])
while ((opt = getopt(argc, argv, "a:Ai:m:")) != \-1) {
switch (opt) {
- case \(aqa\(aq: attr_sched_str = optarg; break;
- case \(aqA\(aq: use_null_attrib = 1; break;
- case \(aqi\(aq: inheritsched_str = optarg; break;
- case \(aqm\(aq: main_sched_str = optarg; break;
+ case \[aq]a\[aq]: attr_sched_str = optarg; break;
+ case \[aq]A\[aq]: use_null_attrib = 1; break;
+ case \[aq]i\[aq]: inheritsched_str = optarg; break;
+ case \[aq]m\[aq]: main_sched_str = optarg; break;
default: usage(argv[0], "Unrecognized option\en");
}
}
@@ -333,7 +333,7 @@ main(int argc, char *argv[])
if (use_null_attrib
&& (inheritsched_str != NULL || attr_sched_str != NULL))
{
- usage(argv[0], "Can\(aqt specify \-A with \-i or \-a\en");
+ usage(argv[0], "Can\[aq]t specify \-A with \-i or \-a\en");
}
/* Optionally set scheduling attributes of main thread,
@@ -364,12 +364,12 @@ main(int argc, char *argv[])
}
if (inheritsched_str != NULL) {
- if (inheritsched_str[0] == \(aqe\(aq)
+ if (inheritsched_str[0] == \[aq]e\[aq])
inheritsched = PTHREAD_EXPLICIT_SCHED;
- else if (inheritsched_str[0] == \(aqi\(aq)
+ else if (inheritsched_str[0] == \[aq]i\[aq])
inheritsched = PTHREAD_INHERIT_SCHED;
else
- usage(argv[0], "Value for \-i must be \(aqe\(aq or \(aqi\(aq\en");
+ usage(argv[0], "Value for \-i must be \[aq]e\[aq] or \[aq]i\[aq]\en");
s = pthread_attr_setinheritsched(&attr, inheritsched);
if (s != 0)
@@ -378,7 +378,7 @@ main(int argc, char *argv[])
if (attr_sched_str != NULL) {
if (!get_policy(attr_sched_str[0], &policy))
- usage(argv[0], "Bad policy for \(aqattr\(aq (\-a)\en");
+ usage(argv[0], "Bad policy for \[aq]attr\[aq] (\-a)\en");
param.sched_priority = strtol(&attr_sched_str[1], NULL, 0);
s = pthread_attr_setschedpolicy(&attr, policy);
@@ -400,10 +400,10 @@ main(int argc, char *argv[])
if (s != 0)
handle_error_en(s, "pthread_attr_getschedpolicy");
- printf("Scheduler settings in \(aqattr\(aq\en");
+ printf("Scheduler settings in \[aq]attr\[aq]\en");
display_sched_attr(policy, &param);
- s = pthread_attr_getinheritsched(&attr, &inheritsched);
+ pthread_attr_getinheritsched(&attr, &inheritsched);
printf(" inheritsched is %s\en",
(inheritsched == PTHREAD_INHERIT_SCHED) ? "INHERIT" :
(inheritsched == PTHREAD_EXPLICIT_SCHED) ? "EXPLICIT" :
diff --git a/man3/pthread_setschedprio.3 b/man3/pthread_setschedprio.3
index 0b3e395ea..bd8026450 100644
--- a/man3/pthread_setschedprio.3
+++ b/man3/pthread_setschedprio.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_setschedprio 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_setschedprio 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_setschedprio \- set scheduling priority of a thread
.SH LIBRARY
diff --git a/man3/pthread_sigmask.3 b/man3/pthread_sigmask.3
index 8c871f1fa..26e41b10a 100644
--- a/man3/pthread_sigmask.3
+++ b/man3/pthread_sigmask.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_sigmask 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_sigmask 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_sigmask \- examine and change mask of blocked signals
.SH LIBRARY
diff --git a/man3/pthread_sigqueue.3 b/man3/pthread_sigqueue.3
index 268478a8c..48ebe0095 100644
--- a/man3/pthread_sigqueue.3
+++ b/man3/pthread_sigqueue.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_sigqueue 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_sigqueue 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_sigqueue \- queue a signal and data to a thread
.SH LIBRARY
diff --git a/man3/pthread_spin_init.3 b/man3/pthread_spin_init.3
index 652dfb735..65e0cf050 100644
--- a/man3/pthread_spin_init.3
+++ b/man3/pthread_spin_init.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_spin_init 3 2022-12-04 "Linux man-pages 6.02"
+.TH pthread_spin_init 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pthread_spin_init, pthread_spin_destroy \- initialize or destroy a spin lock
.SH LIBRARY
diff --git a/man3/pthread_spin_lock.3 b/man3/pthread_spin_lock.3
index 17ff5434b..910bd0b4a 100644
--- a/man3/pthread_spin_lock.3
+++ b/man3/pthread_spin_lock.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_spin_lock 3 2022-12-04 "Linux man-pages 6.02"
+.TH pthread_spin_lock 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock \-
lock and unlock a spin lock
diff --git a/man3/pthread_testcancel.3 b/man3/pthread_testcancel.3
index ea1b404a7..ae362ccf3 100644
--- a/man3/pthread_testcancel.3
+++ b/man3/pthread_testcancel.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_testcancel 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_testcancel 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_testcancel \- request delivery of any pending cancelation request
.SH LIBRARY
diff --git a/man3/pthread_tryjoin_np.3 b/man3/pthread_tryjoin_np.3
index 12aa0ed7e..adc844cca 100644
--- a/man3/pthread_tryjoin_np.3
+++ b/man3/pthread_tryjoin_np.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_tryjoin_np 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_tryjoin_np 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_tryjoin_np, pthread_timedjoin_np \- try to join with a
terminated thread
diff --git a/man3/pthread_yield.3 b/man3/pthread_yield.3
index d3663aefd..e367aa372 100644
--- a/man3/pthread_yield.3
+++ b/man3/pthread_yield.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pthread_yield 3 2022-12-15 "Linux man-pages 6.02"
+.TH pthread_yield 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
pthread_yield \- yield the processor
.SH LIBRARY
diff --git a/man3/ptsname.3 b/man3/ptsname.3
index 6cd6d139d..525563a4e 100644
--- a/man3/ptsname.3
+++ b/man3/ptsname.3
@@ -5,7 +5,7 @@
.\"
.\" 2004-12-17, mtk, added description of ptsname_r() + ERRORS
.\"
-.TH ptsname 3 2022-12-15 "Linux man-pages 6.02"
+.TH ptsname 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ptsname, ptsname_r \- get the name of the slave pseudoterminal
.SH LIBRARY
@@ -29,7 +29,7 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.24:
_XOPEN_SOURCE >= 500
.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
- Glibc 2.23 and earlier:
+ glibc 2.23 and earlier:
_XOPEN_SOURCE
.fi
.PP
diff --git a/man3/putenv.3 b/man3/putenv.3
index 543bf4de8..9f4db0155 100644
--- a/man3/putenv.3
+++ b/man3/putenv.3
@@ -14,7 +14,7 @@
.\" Modified Mon Oct 11 11:11:11 1999 by Andries Brouwer (aeb@cwi.nl)
.\" Modified Wed Nov 10 00:02:26 1999 by Andries Brouwer (aeb@cwi.nl)
.\" Modified Sun May 20 22:17:20 2001 by Andries Brouwer (aeb@cwi.nl)
-.TH putenv 3 2022-12-15 "Linux man-pages 6.02"
+.TH putenv 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
putenv \- change or add an environment variable
.SH LIBRARY
@@ -36,8 +36,8 @@ Feature Test Macro Requirements for glibc (see
.BR putenv ():
.nf
_XOPEN_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.SH DESCRIPTION
The
@@ -90,7 +90,7 @@ one in glibc 2.0 is not, but the glibc 2.1 version is.
.\" .LP
.\" Description for libc4, libc5, glibc:
.\" If the argument \fIstring\fP is of the form \fIname\fP,
-.\" and does not contain an \(aq=\(aq character, then the variable \fIname\fP
+.\" and does not contain an \[aq]=\[aq] character, then the variable \fIname\fP
.\" is removed from the environment.
.\" If
.\" .BR putenv ()
diff --git a/man3/putgrent.3 b/man3/putgrent.3
index 31980ec8b..b2ab436e3 100644
--- a/man3/putgrent.3
+++ b/man3/putgrent.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH putgrent 3 2022-12-15 "Linux man-pages 6.02"
+.TH putgrent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
putgrent \- write a group database entry to a file
.SH LIBRARY
diff --git a/man3/putpwent.3 b/man3/putpwent.3
index 41c5b0011..d73e43b57 100644
--- a/man3/putpwent.3
+++ b/man3/putpwent.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:43:46 1993 by Rik Faith (faith@cs.unc.edu)
-.TH putpwent 3 2022-12-15 "Linux man-pages 6.02"
+.TH putpwent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
putpwent \- write a password file entry
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/puts.3 b/man3/puts.3
index 45d4a4e35..d4d267979 100644
--- a/man3/puts.3
+++ b/man3/puts.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Sat Jul 24 18:42:59 1993 by Rik Faith (faith@cs.unc.edu)
-.TH puts 3 2022-12-15 "Linux man-pages 6.02"
+.TH puts 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fputc, fputs, putc, putchar, puts \- output of characters and strings
.SH LIBRARY
@@ -46,7 +46,7 @@ writes the string
.I s
to
.IR stream ,
-without its terminating null byte (\(aq\e0\(aq).
+without its terminating null byte (\[aq]\e0\[aq]).
.PP
.BR puts ()
writes the string
@@ -103,7 +103,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH BUGS
It is not advisable to mix calls to output functions from the
.I stdio
diff --git a/man3/putwchar.3 b/man3/putwchar.3
index c85a953cc..57eec985f 100644
--- a/man3/putwchar.3
+++ b/man3/putwchar.3
@@ -10,7 +10,7 @@
.\" http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH putwchar 3 2022-12-15 "Linux man-pages 6.02"
+.TH putwchar 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
putwchar \- write a wide character to standard output
.SH LIBRARY
diff --git a/man3/qecvt.3 b/man3/qecvt.3
index 161111369..cbca76aaa 100644
--- a/man3/qecvt.3
+++ b/man3/qecvt.3
@@ -6,7 +6,7 @@
.\" This replaces an earlier man page written by Walter Harms
.\" <walter.harms@informatik.uni-oldenburg.de>.
.\"
-.TH qecvt 3 2022-12-15 "Linux man-pages 6.02"
+.TH qecvt 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
qecvt, qfcvt, qgcvt \- convert a floating-point number to a string
.SH LIBRARY
diff --git a/man3/qsort.3 b/man3/qsort.3
index 82ef61ce6..e226775b9 100644
--- a/man3/qsort.3
+++ b/man3/qsort.3
@@ -15,7 +15,7 @@
.\" and Ben Bacarisse <software@bsb.me.uk>
.\" Document qsort_r()
.\"
-.TH QSORT 3 2022-12-15 "Linux man-pages 6.02"
+.TH qsort 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
qsort, qsort_r \- sort an array
.SH LIBRARY
@@ -104,7 +104,7 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
.BR qsort ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
To compare C strings, the comparison function can call
.BR strcmp (3),
diff --git a/man3/raise.3 b/man3/raise.3
index f1932e6c2..b7a6530fc 100644
--- a/man3/raise.3
+++ b/man3/raise.3
@@ -7,7 +7,7 @@
.\" Modified Sat Jul 24 18:40:56 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 1995 by Mike Battersby (mib@deakin.edu.au)
.\"
-.TH raise 3 2022-12-15 "Linux man-pages 6.02"
+.TH raise 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
raise \- send a signal to the caller
.SH LIBRARY
@@ -63,7 +63,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH NOTES
Since glibc 2.3.3,
.BR raise ()
diff --git a/man3/rand.3 b/man3/rand.3
index f52a8c93c..d1af5921b 100644
--- a/man3/rand.3
+++ b/man3/rand.3
@@ -19,7 +19,7 @@
.\" Modified 2003-11-15, aeb, added rand_r
.\" 2010-09-13, mtk, added example program
.\"
-.TH rand 3 2022-12-15 "Linux man-pages 6.02"
+.TH rand 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rand, rand_r, srand \- pseudo-random number generator
.SH LIBRARY
@@ -30,8 +30,9 @@ Standard C library
.B #include <stdlib.h>
.PP
.B int rand(void);
-.BI "int rand_r(unsigned int *" seedp );
.BI "void srand(unsigned int " seed );
+.PP
+.BI "[[deprecated]] int rand_r(unsigned int *" seedp );
.fi
.PP
.RS -4
@@ -43,7 +44,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.24:
_POSIX_C_SOURCE >= 199506L
- Glibc 2.23 and earlier
+ glibc 2.23 and earlier
_POSIX_C_SOURCE
.fi
.SH DESCRIPTION
@@ -137,7 +138,7 @@ The functions
.BR rand ()
and
.BR srand ()
-conform to SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
+conform to SVr4, 4.3BSD, C99, POSIX.1-2001.
The function
.BR rand_r ()
is from POSIX.1-2001.
@@ -190,6 +191,9 @@ The following program can be used to display the
pseudo-random sequence produced by
.BR rand ()
when given a particular seed.
+When the seed is
+.IR \-1 ,
+the program uses a random seed.
.PP
.in +4n
.\" SRC BEGIN (rand.c)
@@ -211,6 +215,11 @@ main(int argc, char *argv[])
seed = atoi(argv[1]);
nloops = atoi(argv[2]);
+ if (seed == \-1) {
+ seed = arc4random();
+ printf("seed: %u\en", seed);
+ }
+
srand(seed);
for (unsigned int j = 0; j < nloops; j++) {
r = rand();
diff --git a/man3/random.3 b/man3/random.3
index 574206117..2958b5be1 100644
--- a/man3/random.3
+++ b/man3/random.3
@@ -11,7 +11,7 @@
.\" Modified Sat Jul 24 18:13:39 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Aug 20 21:47:07 2000, aeb
.\"
-.TH random 3 2022-12-15 "Linux man-pages 6.02"
+.TH random 3 2023-02-10 "Linux man-pages 6.03"
.SH NAME
random, srandom, initstate, setstate \- random number generator
.SH LIBRARY
@@ -40,8 +40,8 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
The
@@ -49,9 +49,9 @@ The
function uses a nonlinear additive feedback random
number generator employing a default table of size 31 long integers to
return successive pseudo-random numbers in
-the range from 0 to 2^31\ \-\ 1.
+the range from 0 to 2\[ha]31\ \-\ 1.
The period of this random number generator is very large, approximately
-.IR "16\ *\ ((2^31)\ \-\ 1)" .
+.IR "16\ *\ ((2\[ha]31)\ \-\ 1)" .
.PP
The
.BR srandom ()
@@ -76,7 +76,7 @@ The size of the state array
\fIn\fP is used by
.BR initstate ()
to decide how sophisticated a
-random number generator it should use\(emthe larger the state array,
+random number generator it should use\[em]the larger the state array,
the better the random numbers will be.
Current "optimal" values for the size of the state array \fIn\fP are
8, 32, 64, 128, and 256 bytes; other amounts will be rounded down to
@@ -105,7 +105,7 @@ or be the result of a previous call of
The
.BR random ()
function returns a value between 0 and
-.IR "(2^31)\ \-\ 1" .
+.IR "(2\[ha]31)\ \-\ 1" .
The
.BR srandom ()
function returns no value.
diff --git a/man3/random_r.3 b/man3/random_r.3
index 9f3f0080a..e5567028f 100644
--- a/man3/random_r.3
+++ b/man3/random_r.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH random_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH random_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
random_r, srandom_r, initstate_r, setstate_r \- reentrant
random number generator
@@ -36,8 +36,8 @@ Feature Test Macro Requirements for glibc (see
.BR initstate_r (),
.BR setstate_r ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
These functions are the reentrant equivalents
diff --git a/man3/rcmd.3 b/man3/rcmd.3
index 46e0ed15f..072590e26 100644
--- a/man3/rcmd.3
+++ b/man3/rcmd.3
@@ -13,7 +13,7 @@
.\"
.\" 2007-12-08, mtk, Converted from mdoc to man macros
.\"
-.TH rcmd 3 2022-12-15 "Linux man-pages 6.02"
+.TH rcmd 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rcmd, rresvport, iruserok, ruserok, rcmd_af,
rresvport_af, iruserok_af, ruserok_af \- routines for returning a
@@ -70,7 +70,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.ad
diff --git a/man3/re_comp.3 b/man3/re_comp.3
index f836e4f47..e61d40c86 100644
--- a/man3/re_comp.3
+++ b/man3/re_comp.3
@@ -5,7 +5,7 @@
.\"
.\" Wed Jun 14 16:10:28 BST 1995 Wilf. (G.Wilford@@ee.surrey.ac.uk)
.\"
-.TH re_comp 3 2022-12-15 "Linux man-pages 6.02"
+.TH re_comp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
re_comp, re_exec \- BSD regex functions
.SH LIBRARY
diff --git a/man3/readdir.3 b/man3/readdir.3
index 43ccf0ead..75be4343e 100644
--- a/man3/readdir.3
+++ b/man3/readdir.3
@@ -14,7 +14,7 @@
.\" 2007-07-30 Ulrich Drepper <drepper@redhat.com>, mtk:
.\" Rework discussion of nonstandard structure fields.
.\"
-.TH readdir 3 2022-12-15 "Linux man-pages 6.02"
+.TH readdir 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
readdir \- read a directory
.SH LIBRARY
@@ -256,7 +256,7 @@ POSIX defines it as
.IR "char\ d_name[]",
a character array of unspecified size, with at most
.B NAME_MAX
-characters preceding the terminating null byte (\(aq\e0\(aq).
+characters preceding the terminating null byte (\[aq]\e0\[aq]).
.PP
POSIX.1 explicitly notes that this field should not be used as an lvalue.
The standard also notes that the use of
diff --git a/man3/readdir_r.3 b/man3/readdir_r.3
index e65a08292..ecab7c4c4 100644
--- a/man3/readdir_r.3
+++ b/man3/readdir_r.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH readdir_r 3 2022-12-15 "Linux man-pages 6.02"
+.TH readdir_r 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
readdir_r \- read a directory
.SH LIBRARY
@@ -27,7 +27,7 @@ Feature Test Macro Requirements for glibc (see
.BR readdir_r ():
.nf
_POSIX_C_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
This function is deprecated; use
@@ -60,14 +60,14 @@ instead of
Furthermore, since glibc 2.24, glibc deprecates
.BR readdir_r ().
The reasons are as follows:
-.IP \(bu 3
+.IP \[bu] 3
On systems where
.B NAME_MAX
is undefined, calling
.BR readdir_r ()
may be unsafe because the interface does not allow the caller to specify
the length of the buffer used for the returned directory entry.
-.IP \(bu
+.IP \[bu]
On some systems,
.BR readdir_r ()
can't read directory entries with very long names.
@@ -81,7 +81,7 @@ On some other systems,
may return a success status, but the returned
.I d_name
field may not be null terminated or may be truncated.
-.IP \(bu
+.IP \[bu]
In the current POSIX.1 specification (POSIX.1-2008),
.BR readdir (3)
is not required to be thread-safe.
@@ -98,7 +98,7 @@ using
with external synchronization is still preferable to the use of
.BR readdir_r (),
for the reasons given in the points above.
-.IP \(bu
+.IP \[bu]
It is expected that a future version of POSIX.1
.\" FIXME .
.\" http://www.austingroupbugs.net/view.php?id=696
diff --git a/man3/realpath.3 b/man3/realpath.3
index 5ca1a8a01..cafbafd11 100644
--- a/man3/realpath.3
+++ b/man3/realpath.3
@@ -6,7 +6,7 @@
.\" Rewritten old page, 990824, aeb@cwi.nl
.\" 2004-12-14, mtk, added discussion of resolved_path == NULL
.\"
-.TH realpath 3 2022-12-15 "Linux man-pages 6.02"
+.TH realpath 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
realpath \- return the canonicalized absolute pathname
.SH LIBRARY
@@ -30,15 +30,15 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
.BR realpath ()
expands all symbolic links and resolves references
to
.IR "/./" ", " "/../"
-and extra \(aq/\(aq
+and extra \[aq]/\[aq]
characters in the null-terminated string named by
.I path
to produce a canonicalized absolute pathname.
diff --git a/man3/recno.3 b/man3/recno.3
index cdd3469d4..dad21d3d8 100644
--- a/man3/recno.3
+++ b/man3/recno.3
@@ -5,7 +5,7 @@
.\"
.\" @(#)recno.3 8.5 (Berkeley) 8/18/94
.\"
-.TH recno 3 2022-12-04 "Linux man-pages 6.02"
+.TH recno 3 2022-12-04 "Linux man-pages 6.03"
.UC 7
.SH NAME
recno \- record number database access method
diff --git a/man3/regex.3 b/man3/regex.3
index 41ad78922..98f411ef5 100644
--- a/man3/regex.3
+++ b/man3/regex.3
@@ -8,7 +8,7 @@
.\" Modified 8 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk)
.\"
.\" show the synopsis section nicely
-.TH REGEX 3 2022-12-15 "Linux man-pages 6.02"
+.TH regex 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
regcomp, regexec, regerror, regfree \- POSIX regex functions
.SH LIBRARY
@@ -88,11 +88,11 @@ are ignored if the pattern buffer supplied was compiled with this flag set.
Match-any-character operators don't match a newline.
.IP
A nonmatching list
-.RB ( [\(ha...] )
+.RB ( [\[ha]...] )
not containing a newline does not match a newline.
.IP
Match-beginning-of-line operator
-.RB ( \(ha )
+.RB ( \[ha] )
matches the empty string immediately after a newline, regardless of
whether
.IR eflags ,
@@ -235,12 +235,12 @@ are nonzero,
.I errbuf
is filled in with the first
.I "errbuf_size \- 1"
-characters of the error message and a terminating null byte (\(aq\e0\(aq).
+characters of the error message and a terminating null byte (\[aq]\e0\[aq]).
.SS POSIX pattern buffer freeing
Supplying
.BR regfree ()
with a precompiled pattern buffer,
-.I preg
+.IR preg ,
will free the memory allocated to the pattern buffer by the compiling
process,
.BR regcomp ().
@@ -263,7 +263,7 @@ Invalid use of back reference operator.
Invalid use of pattern operators such as group or list.
.TP
.B REG_BADRPT
-Invalid use of repetition operators such as using \(aq*\(aq
+Invalid use of repetition operators such as using \[aq]*\[aq]
as the first character.
.TP
.B REG_EBRACE
diff --git a/man3/register_printf_modifier.3 b/man3/register_printf_modifier.3
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3/register_printf_modifier.3
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3/register_printf_specifier.3 b/man3/register_printf_specifier.3
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3/register_printf_specifier.3
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3/register_printf_type.3 b/man3/register_printf_type.3
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3/register_printf_type.3
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3/remainder.3 b/man3/remainder.3
index b7f4fb884..035e42e13 100644
--- a/man3/remainder.3
+++ b/man3/remainder.3
@@ -15,7 +15,7 @@
.\" (walter.harms@informatik.uni-oldenburg.de)
.\" Modified 2003-11-18, 2004-10-05 aeb
.\"
-.TH remainder 3 2022-12-15 "Linux man-pages 6.02"
+.TH remainder 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
drem, dremf, dreml, remainder, remainderf, remainderl \- \
floating-point remainder function
@@ -48,7 +48,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR remainderf (),
@@ -56,7 +56,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR drem (),
@@ -64,7 +64,7 @@ Feature Test Macro Requirements for glibc (see
.BR dreml ():
.nf
/* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These
diff --git a/man3/remove.3 b/man3/remove.3
index 8e9dae6ac..eaaeb46b6 100644
--- a/man3/remove.3
+++ b/man3/remove.3
@@ -9,7 +9,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH remove 3 2022-12-15 "Linux man-pages 6.02"
+.TH remove 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
remove \- remove a file or directory
.SH LIBRARY
@@ -71,7 +71,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, 4.3BSD.
.\" .SH NOTES
.\" Under libc4 and libc5,
.\" .BR remove ()
diff --git a/man3/remquo.3 b/man3/remquo.3
index d058e415e..f5dd12b84 100644
--- a/man3/remquo.3
+++ b/man3/remquo.3
@@ -8,7 +8,7 @@
.\" based on glibc infopages
.\" polished, aeb
.\"
-.TH remquo 3 2022-12-15 "Linux man-pages 6.02"
+.TH remquo 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
remquo, remquof, remquol \- remainder and part of quotient
.SH LIBRARY
diff --git a/man3/resolver.3 b/man3/resolver.3
index 6baac54ae..16ddae9de 100644
--- a/man3/resolver.3
+++ b/man3/resolver.3
@@ -11,7 +11,7 @@
.\" Modified 1993-07-25 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2004-10-31 by aeb
.\"
-.TH RESOLVER 3 2022-12-15 "Linux man-pages 6.02"
+.TH resolver 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
res_ninit, res_nquery, res_nsearch, res_nquerydomain, res_nmkquery, res_nsend,
res_nclose,
@@ -299,7 +299,7 @@ by the domain name server, not by
If set,
.BR res_search ()
will append the default domain name to
-single component names\(emthat is, those that do not contain a dot.
+single component names\[em]that is, those that do not contain a dot.
[Enabled by default].
.TP
.B RES_STAYOPEN
diff --git a/man3/rewinddir.3 b/man3/rewinddir.3
index ec9793921..d00bfeda6 100644
--- a/man3/rewinddir.3
+++ b/man3/rewinddir.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:29:11 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl)
-.TH rewinddir 3 2022-12-15 "Linux man-pages 6.02"
+.TH rewinddir 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
rewinddir \- reset directory stream
.SH LIBRARY
diff --git a/man3/rexec.3 b/man3/rexec.3
index 7457efda5..acdf155f4 100644
--- a/man3/rexec.3
+++ b/man3/rexec.3
@@ -11,7 +11,7 @@
.\"
.\" 2013-06-21, mtk, Converted from mdoc to man macros
.\"
-.TH rexec 3 2022-12-15 "Linux man-pages 6.02"
+.TH rexec 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
rexec, rexec_af \- return stream to a remote command
.SH LIBRARY
diff --git a/man3/rint.3 b/man3/rint.3
index 11a71b740..431b41e6f 100644
--- a/man3/rint.3
+++ b/man3/rint.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH rint 3 2022-12-15 "Linux man-pages 6.02"
+.TH rint 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nearbyint, nearbyintf, nearbyintl, rint, rintf, rintl \- round
to nearest integer
@@ -43,7 +43,7 @@ Feature Test Macro Requirements for glibc (see
|| _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR rintf (),
@@ -51,7 +51,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/round.3 b/man3/round.3
index 5efdf0e1c..7b9fbf96f 100644
--- a/man3/round.3
+++ b/man3/round.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH round 3 2022-12-15 "Linux man-pages 6.02"
+.TH round 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
round, roundf, roundl \- round to nearest integer, away from zero
.SH LIBRARY
diff --git a/man3/roundup.3 b/man3/roundup.3
new file mode 100644
index 000000000..cc86d61d3
--- /dev/null
+++ b/man3/roundup.3
@@ -0,0 +1,56 @@
+.\" Copyright (C) 2023 Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH roundup 3 2023-01-19 "Linux man-pages 6.03"
+.SH NAME
+roundup \- round up in steps
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/param.h>
+.PP
+.BI roundup( x ", " step );
+.fi
+.SH DESCRIPTION
+This macro rounds
+.I x
+to the nearest multiple of
+.I step
+that is not less than
+.IR x .
+.PP
+It is typically used for
+rounding up a pointer to align it or
+increasing a buffer to be allocated.
+.PP
+This API is not designed to be generic,
+and doesn't work in some cases
+that are not important for the typical use cases described above.
+See CAVEATS.
+.SH RETURN VALUE
+This macro returns the rounded value.
+.SH STANDARDS
+This nonstandard macro is present in glibc and some BSDs.
+.SH CAVEATS
+The arguments may be evaluated more than once.
+.PP
+.I x
+should be nonnegative,
+and
+.I step
+should be positive.
+.PP
+If
+.I x + step
+would overflow or wrap around,
+the behavior is undefined.
+.SH SEE ALSO
+.BR ceil (3),
+.BR floor (3),
+.BR lrint (3),
+.BR rint (3),
+.BR lround (3),
+.BR round (3)
diff --git a/man3/rpc.3 b/man3/rpc.3
index b9498f860..0535aa296 100644
--- a/man3/rpc.3
+++ b/man3/rpc.3
@@ -9,7 +9,7 @@
.\"
.\" 2007-12-30, mtk, Convert function prototypes to modern C syntax
.\"
-.TH rpc 3 2022-12-15 "Linux man-pages 6.02"
+.TH rpc 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rpc \- library routines for remote procedure calls
.SH LIBRARY
@@ -229,8 +229,8 @@ Generic client creation routine.
identifies the name of the remote host where the server is located.
.I proto
indicates which kind of transport protocol to use.
-The currently supported values for this field are \(lqudp\(rq
-and \(lqtcp\(rq.
+The currently supported values for this field are \[lq]udp\[rq]
+and \[lq]tcp\[rq].
Default timeouts are set, but can be modified using
.BR clnt_control ().
.IP
@@ -269,7 +269,7 @@ will be ignored in all future calls.
.in +4n
.EX
\fBCLGET_SERVER_ADDR\fP \fIstruct sockaddr_in\fP
- // get server\(aqs address
+ // get server\[aq]s address
.EE
.in
.IP
@@ -599,7 +599,7 @@ in
.BR callrpc ()
and
.BR clnt_call ().
-This procedure should be used for a \(lqping\(rq and nothing else.
+This procedure should be used for a \[lq]ping\[rq] and nothing else.
See also
.BR clnt_broadcast ().
.PP
diff --git a/man3/rpmatch.3 b/man3/rpmatch.3
index 79dfc865c..44c780699 100644
--- a/man3/rpmatch.3
+++ b/man3/rpmatch.3
@@ -27,7 +27,7 @@
.\"
.\" 2006-05-19, mtk, various edits and example program
.\"
-.TH rpmatch 3 2022-12-15 "Linux man-pages 6.02"
+.TH rpmatch 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rpmatch \- determine if the answer to a question is affirmative or negative
.SH LIBRARY
@@ -49,7 +49,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_SVID_SOURCE
.fi
.SH DESCRIPTION
@@ -75,9 +75,9 @@ if the program has called
to effect their changes.
.PP
Regardless of the locale, responses matching
-.B \(ha[Yy]
+.B \[ha][Yy]
are always accepted as affirmative, and those matching
-.B \(ha[Nn]
+.B \[ha][Nn]
are always accepted as negative.
.SH RETURN VALUE
After examining
@@ -144,7 +144,7 @@ is applied to the string given in the program's command-line argument.
.PP
.\" SRC BEGIN (rpmatch.c)
.EX
-#define _SVID_SOURCE
+#define _DEFAULT_SOURCE
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/man3/rtime.3 b/man3/rtime.3
index f0ff763ce..c3c8b2b34 100644
--- a/man3/rtime.3
+++ b/man3/rtime.3
@@ -8,7 +8,7 @@
.\"
.\" Slightly polished, aeb, 2003-04-06
.\"
-.TH rtime 3 2022-12-15 "Linux man-pages 6.02"
+.TH rtime 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
rtime \- get time from a remote machine
.SH LIBRARY
diff --git a/man3/rtnetlink.3 b/man3/rtnetlink.3
index 69b708bf7..b15c9f172 100644
--- a/man3/rtnetlink.3
+++ b/man3/rtnetlink.3
@@ -9,7 +9,7 @@
.\"
.\" $Id: rtnetlink.3,v 1.2 1999/05/18 10:35:10 freitag Exp $
.\"
-.TH rtnetlink 3 2022-10-30 "Linux man-pages 6.02"
+.TH rtnetlink 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
rtnetlink \- macros to manipulate rtnetlink messages
.SH LIBRARY
diff --git a/man3/scalb.3 b/man3/scalb.3
index e48553172..804b4f6fa 100644
--- a/man3/scalb.3
+++ b/man3/scalb.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH scalb 3 2022-12-15 "Linux man-pages 6.02"
+.TH scalb 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
scalb, scalbf, scalbl \- multiply floating-point number
by integral power of radix (OBSOLETE)
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR scalbf (),
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE >= 600
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions multiply their first argument
diff --git a/man3/scalbln.3 b/man3/scalbln.3
index 7a444bfc8..529e1e6ce 100644
--- a/man3/scalbln.3
+++ b/man3/scalbln.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH scalbln 3 2022-12-15 "Linux man-pages 6.02"
+.TH scalbln 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl \-
multiply floating-point number by integral power of radix
@@ -44,7 +44,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions multiply their first argument
diff --git a/man3/scandir.3 b/man3/scandir.3
index b3a9e54f3..f734e6ac7 100644
--- a/man3/scandir.3
+++ b/man3/scandir.3
@@ -21,7 +21,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH SCANDIR 3 2022-12-15 "Linux man-pages 6.02"
+.TH scandir 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
scandir, scandirat, alphasort, versionsort \- scan
a directory for matching entries
@@ -60,7 +60,7 @@ Feature Test Macro Requirements for glibc (see
.BR alphasort ():
.nf
/* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR versionsort ():
diff --git a/man3/scanf.3 b/man3/scanf.3
index 45aba9f0e..f38e109db 100644
--- a/man3/scanf.3
+++ b/man3/scanf.3
@@ -1,30 +1,10 @@
'\" t
-.\" Copyright (c) 1990, 1991 The Regents of the University of California.
-.\" All rights reserved.
+.\" Copyright 2022 Alejandro Colomar <alx@kernel.org>
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Chris Torek and the American National Standards Committee X3,
-.\" on Information Processing Systems.
-.\"
-.\" SPDX-License-Identifier: BSD-4-Clause-UC
-.\"
-.\" @(#)scanf.3 6.14 (Berkeley) 1/8/93
-.\"
-.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
-.\" modified to resemble the GNU libio setup used in the Linux libc
-.\" used in versions 4.x (x>4) and 5 Helmut.Geyer@iwr.uni-heidelberg.de
-.\" Modified, aeb, 970121
-.\" 2005-07-14, mtk, added description of %n$ form; various text
-.\" incorporated from the GNU C library documentation ((C) The
-.\" Free Software Foundation); other parts substantially rewritten.
-.\"
-.\" 2008-06-23, mtk
-.\" Add ERRORS section.
-.\" Document the 'a' and 'm' modifiers for dynamic string allocation.
-.\"
-.TH scanf 3 2022-12-15 "Linux man-pages 6.02"
+.TH scanf 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
-scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf \- input format conversion
+scanf, fscanf, vscanf, vfscanf \- input FILE format conversion
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
@@ -35,16 +15,12 @@ Standard C library
.BI "int scanf(const char *restrict " format ", ...);"
.BI "int fscanf(FILE *restrict " stream ,
.BI " const char *restrict " format ", ...);"
-.BI "int sscanf(const char *restrict " str ,
-.BI " const char *restrict " format ", ...);"
.PP
.B #include <stdarg.h>
.PP
.BI "int vscanf(const char *restrict " format ", va_list " ap );
.BI "int vfscanf(FILE *restrict " stream ,
.BI " const char *restrict " format ", va_list " ap );
-.BI "int vsscanf(const char *restrict " str ,
-.BI " const char *restrict " format ", va_list " ap );
.fi
.PP
.RS -4
@@ -53,7 +29,6 @@ Feature Test Macro Requirements for glibc (see
.RE
.PP
.BR vscanf (),
-.BR vsscanf (),
.BR vfscanf ():
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
@@ -61,43 +36,28 @@ Feature Test Macro Requirements for glibc (see
.SH DESCRIPTION
The
.BR scanf ()
-family of functions scans input according to
-.I format
-as described below.
-This format may contain
-.IR "conversion specifications" ;
-the results from such conversions, if any,
-are stored in the locations pointed to by the
-.I pointer
-arguments that follow
-.IR format .
-Each
-.I pointer
-argument must be of a type that is appropriate for the value returned
-by the corresponding conversion specification.
-.PP
-If the number of conversion specifications in
-.I format
-exceeds the number of
-.I pointer
-arguments, the results are undefined.
-If the number of
-.I pointer
-arguments exceeds the number of conversion specifications, then the excess
-.I pointer
-arguments are evaluated, but are otherwise ignored.
+family of functions scans input like
+.BR sscanf (3),
+but read from a
+.IR FILE .
+It is very difficult to use these functions correctly,
+and it is preferable to read entire lines with
+.BR fgets (3)
+or
+.BR getline (3)
+and parse them later with
+.BR sscanf (3)
+or more specialized functions such as
+.BR strtol (3).
.PP
The
.BR scanf ()
function reads input from the standard input stream
-.IR stdin ,
+.I stdin
+and
.BR fscanf ()
reads input from the stream pointer
-.IR stream ,
-and
-.BR sscanf ()
-reads its input from the character string pointed to by
-.IR str .
+.IR stream .
.PP
The
.BR vfscanf ()
@@ -109,442 +69,9 @@ using a variable argument list of pointers (see
.BR stdarg (3).
The
.BR vscanf ()
-function scans a variable argument list from the standard input and the
-.BR vsscanf ()
-function scans it from a string; these are analogous to the
+function is analogous to
.BR vprintf (3)
-and
-.BR vsprintf (3)
-functions respectively.
-.PP
-The
-.I format
-string consists of a sequence of
-.I directives
-which describe how to process the sequence of input characters.
-If processing of a directive fails, no further input is read, and
-.BR scanf ()
-returns.
-A "failure" can be either of the following:
-.IR "input failure" ,
-meaning that input characters were unavailable, or
-.IR "matching failure" ,
-meaning that the input was inappropriate (see below).
-.PP
-A directive is one of the following:
-.TP
-\(bu
-A sequence of white-space characters (space, tab, newline, etc.; see
-.BR isspace (3)).
-This directive matches any amount of white space,
-including none, in the input.
-.TP
-\(bu
-An ordinary character (i.e., one other than white space or \(aq%\(aq).
-This character must exactly match the next character of input.
-.TP
-\(bu
-A conversion specification,
-which commences with a \(aq%\(aq (percent) character.
-A sequence of characters from the input is converted according to
-this specification, and the result is placed in the corresponding
-.I pointer
-argument.
-If the next item of input does not match the conversion specification,
-the conversion fails\(emthis is a
-.IR "matching failure" .
-.PP
-Each
-.I conversion specification
-in
-.I format
-begins with either the character \(aq%\(aq or the character sequence
-"\fB%\fP\fIn\fP\fB$\fP"
-(see below for the distinction) followed by:
-.TP
-\(bu
-An optional \(aq*\(aq assignment-suppression character:
-.BR scanf ()
-reads input as directed by the conversion specification,
-but discards the input.
-No corresponding
-.I pointer
-argument is required, and this specification is not
-included in the count of successful assignments returned by
-.BR scanf ().
-.TP
-\(bu
-For decimal conversions, an optional quote character (\(aq).
-This specifies that the input number may include thousands'
-separators as defined by the
-.B LC_NUMERIC
-category of the current locale.
-(See
-.BR setlocale (3).)
-The quote character may precede or follow the \(aq*\(aq
-assignment-suppression character.
-.TP
-\(bu
-An optional \(aqm\(aq character.
-This is used with string conversions
-.RI ( %s ,
-.IR %c ,
-.IR %[ ),
-and relieves the caller of the
-need to allocate a corresponding buffer to hold the input: instead,
-.BR scanf ()
-allocates a buffer of sufficient size,
-and assigns the address of this buffer to the corresponding
-.I pointer
-argument, which should be a pointer to a
-.I "char\ *"
-variable (this variable does not need to be initialized before the call).
-The caller should subsequently
-.BR free (3)
-this buffer when it is no longer required.
-.TP
-\(bu
-An optional decimal integer which specifies the
-.IR "maximum field width" .
-Reading of characters stops either when this maximum is reached or
-when a nonmatching character is found, whichever happens first.
-Most conversions discard initial white space characters (the exceptions
-are noted below),
-and these discarded characters don't count toward the maximum field width.
-String input conversions store a terminating null byte (\(aq\e0\(aq)
-to mark the end of the input;
-the maximum field width does not include this terminator.
-.TP
-\(bu
-An optional
-.IR "type modifier character" .
-For example, the
-.B l
-type modifier is used with integer conversions such as
-.B %d
-to specify that the corresponding
-.I pointer
-argument refers to a
-.I "long"
-rather than a pointer to an
-.IR int .
-.TP
-\(bu
-A
-.I "conversion specifier"
-that specifies the type of input conversion to be performed.
-.PP
-The conversion specifications in
-.I format
-are of two forms, either beginning with \(aq%\(aq or beginning with
-"\fB%\fP\fIn\fP\fB$\fP".
-The two forms should not be mixed in the same
-.I format
-string, except that a string containing
-"\fB%\fP\fIn\fP\fB$\fP"
-specifications can include
-.B %%
-and
-.BR %* .
-If
-.I format
-contains \(aq%\(aq
-specifications, then these correspond in order with successive
-.I pointer
-arguments.
-In the
-"\fB%\fP\fIn\fP\fB$\fP"
-form (which is specified in POSIX.1-2001, but not C99),
-.I n
-is a decimal integer that specifies that the converted input should
-be placed in the location referred to by the
-.IR n -th
-.I pointer
-argument following
-.IR format .
-.SS Conversions
-The following
-.I "type modifier characters"
-can appear in a conversion specification:
-.TP
-.B h
-Indicates that the conversion will be one of
-\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, or \fBn\fP
-and the next pointer is a pointer to a
-.I short
-or
-.I unsigned short
-(rather than
-.IR int ).
-.TP
-.B hh
-As for
-.BR h ,
-but the next pointer is a pointer to a
-.I signed char
-or
-.IR "unsigned char" .
-.TP
-.B j
-As for
-.BR h ,
-but the next pointer is a pointer to an
-.I intmax_t
-or a
-.IR uintmax_t .
-This modifier was introduced in C99.
-.TP
-.B l
-Indicates either that the conversion will be one of
-\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, or \fBn\fP
-and the next pointer is a pointer to a
-.I long
-or
-.I unsigned long
-(rather than
-.IR int ),
-or that the conversion will be one of
-\fBe\fP, \fBf\fP, or \fBg\fP
-and the next pointer is a pointer to
-.I double
-(rather than
-.IR float ).
-If used with
-.B %c
-or
-.BR %s ,
-the corresponding parameter is considered
-as a pointer to a wide character or wide-character string respectively.
-.\" This use of l was introduced in Amendment 1 to ISO C90.
-.TP
-.B ll
-(ell-ell)
-Indicates that the conversion will be one of
-.BR b ,
-.BR d ,
-.BR i ,
-.BR o ,
-.BR u ,
-.BR x ,
-.BR X ,
-or
-.B n
-and the next pointer is a pointer to a
-.I long long
-or
-.I unsigned long long
-(rather than
-.IR int ).
-.TP
-.B L
-Indicates that the conversion will be either
-\fBe\fP, \fBf\fP, or \fBg\fP
-and the next pointer is a pointer to
-.I "long double"
-or
-(as a GNU extension)
-the conversion will be
-\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, or \fBx\fP
-and the next pointer is a pointer to
-.IR "long long" .
-.\" MTK, Jul 05: The following is no longer true for modern
-.\" ANSI C (i.e., C99):
-.\" (Note that long long is not an
-.\" ANSI C
-.\" type. Any program using this will not be portable to all
-.\" architectures).
-.TP
-.B q
-equivalent to
-.BR L .
-This specifier does not exist in ANSI C.
-.TP
-.B t
-As for
-.BR h ,
-but the next pointer is a pointer to a
-.IR ptrdiff_t .
-This modifier was introduced in C99.
-.TP
-.B z
-As for
-.BR h ,
-but the next pointer is a pointer to a
-.IR size_t .
-This modifier was introduced in C99.
-.PP
-The following
-.I "conversion specifiers"
-are available:
-.TP
-.B %
-Matches a literal \(aq%\(aq.
-That is,
-.B %\&%
-in the format string matches a
-single input \(aq%\(aq character.
-No conversion is done (but initial white space characters are discarded),
-and assignment does not occur.
-.TP
-.B d
-.IR Deprecated .
-Matches an optionally signed decimal integer;
-the next pointer must be a pointer to
-.IR int .
-.\" .TP
-.\" .B D
-.\" Equivalent to
-.\" .IR ld ;
-.\" this exists only for backward compatibility.
-.\" (Note: thus only in libc4
-.\" In libc5 and glibc the
-.\" .B %D
-.\" is silently ignored, causing old programs to fail mysteriously.)
-.TP
-.B i
-.IR Deprecated .
-Matches an optionally signed integer; the next pointer must be a pointer to
-.IR int .
-The integer is read in base 16 if it begins with
-.I 0x
-or
-.IR 0X ,
-in base 8 if it begins with
-.IR 0 ,
-and in base 10 otherwise.
-Only characters that correspond to the base are used.
-.TP
-.B o
-.IR Deprecated .
-Matches an unsigned octal integer; the next pointer must be a pointer to
-.IR "unsigned int" .
-.TP
-.B u
-.IR Deprecated .
-Matches an unsigned decimal integer; the next pointer must be a
-pointer to
-.IR "unsigned int" .
-.TP
-.B x
-.IR Deprecated .
-Matches an unsigned hexadecimal integer
-(that may optionally begin with a prefix of
-.I 0x
-or
-.IR 0X ,
-which is discarded); the next pointer must
-be a pointer to
-.IR "unsigned int" .
-.TP
-.B X
-.IR Deprecated .
-Equivalent to
-.BR x .
-.TP
-.B f
-.IR Deprecated .
-Matches an optionally signed floating-point number; the next pointer must
-be a pointer to
-.IR float .
-.TP
-.B e
-.IR Deprecated .
-Equivalent to
-.BR f .
-.TP
-.B g
-.IR Deprecated .
-Equivalent to
-.BR f .
-.TP
-.B E
-.IR Deprecated .
-Equivalent to
-.BR f .
-.TP
-.B a
-.IR Deprecated .
-(C99) Equivalent to
-.BR f .
-.TP
-.B s
-Matches a sequence of non-white-space characters;
-the next pointer must be a pointer to the initial element of a
-character array that is long enough to hold the input sequence and
-the terminating null byte (\(aq\e0\(aq), which is added automatically.
-The input string stops at white space or at the maximum field
-width, whichever occurs first.
-.TP
-.B c
-Matches a sequence of characters whose length is specified by the
-.I maximum field width
-(default 1); the next pointer must be a pointer to
-.IR char ,
-and there must be enough room for all the characters
-(no terminating null byte is added).
-The usual skip of leading white space is suppressed.
-To skip white space first, use an explicit space in the format.
-.TP
-.B \&[
-Matches a nonempty sequence of characters from the specified set of
-accepted characters; the next pointer must be a pointer to
-.IR char ,
-and there must be enough room for all the characters in the string, plus a
-terminating null byte.
-The usual skip of leading white space is suppressed.
-The string is to be made up of characters in (or not in) a particular set;
-the set is defined by the characters between the open bracket
-.B [
-character and a close bracket
-.B ]
-character.
-The set
-.I excludes
-those characters if the first character after the open bracket is a
-circumflex
-.RB ( \(ha ).
-To include a close bracket in the set, make it the first character after
-the open bracket or the circumflex; any other position will end the set.
-The hyphen character
-.B \-
-is also special; when placed between two other characters, it adds all
-intervening characters to the set.
-To include a hyphen, make it the last
-character before the final close bracket.
-For instance,
-.B [\(ha]0\-9\-]
-means
-the set "everything except close bracket, zero through nine, and hyphen".
-The string ends with the appearance of a character not in the (or, with a
-circumflex, in) set or when the field width runs out.
-.TP
-.B p
-Matches a pointer value (as printed by
-.B %p
-in
-.BR printf (3));
-the next pointer must be a pointer to a pointer to
-.IR void .
-.TP
-.B n
-Nothing is expected; instead, the number of characters consumed thus far
-from the input is stored through the next pointer, which must be a pointer
-to
-.IR int ,
-or variant whose size matches the (optionally)
-supplied integer length modifier.
-This is
-.I not
-a conversion and does
-.I not
-increase the count returned by the function.
-The assignment can be suppressed with the
-.B *
-assignment-suppression character, but the effect on the
-return value is undefined.
-Therefore
-.B %*n
-conversions should not be used.
+and reads from the standard input.
.SH RETURN VALUE
On success, these functions return the number of input items
successfully matched and assigned;
@@ -601,9 +128,7 @@ Interface Attribute Value
T{
.BR scanf (),
.BR fscanf (),
-.BR sscanf (),
.BR vscanf (),
-.BR vsscanf (),
.BR vfscanf ()
T} Thread safety MT-Safe locale
.TE
@@ -611,171 +136,8 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-The functions
-.BR fscanf (),
-.BR scanf (),
-and
-.BR sscanf ()
-conform to C89 and C99 and POSIX.1-2001.
-.PP
-The
-.B q
-specifier is the 4.4BSD notation for
-.IR "long long" ,
-while
-.B ll
-or the usage of
-.B L
-in integer conversions is the GNU notation.
-.PP
-The Linux version of these functions is based on the
-.I GNU
-.I libio
-library.
-Take a look at the
-.I info
-documentation of
-.I GNU
-.I libc (glibc-1.08)
-for a more concise description.
-.SH NOTES
-.SS The 'a' assignment-allocation modifier
-Originally, the GNU C library supported dynamic allocation for string inputs
-(as a nonstandard extension) via the
-.B a
-character.
-(This feature is present at least as far back as glibc 2.0.)
-Thus, one could write the following to have
-.BR scanf ()
-allocate a buffer for an input string,
-with a pointer to that buffer being returned in
-.IR *buf :
-.PP
-.in +4n
-.EX
-char *buf;
-scanf("%as", &buf);
-.EE
-.in
-.PP
-The use of the letter
-.B a
-for this purpose was problematic, since
-.B a
-is also specified by the ISO C standard as a synonym for
-.B f
-(floating-point input).
-POSIX.1-2008 instead specifies the
-.B m
-modifier for assignment allocation (as documented in DESCRIPTION, above).
-.PP
-Note that the
-.B a
-modifier is not available if the program is compiled with
-.I gcc\~\-std=c99
-or
-.I gcc\~\-D_ISOC99_SOURCE
-(unless
-.B _GNU_SOURCE
-is also specified), in which case the
-.B a
-is interpreted as a specifier for floating-point numbers (see above).
-.PP
-Support for the
-.B m
-modifier was added to glibc 2.7,
-and new programs should use that modifier instead of
-.BR a .
-.PP
-As well as being standardized by POSIX, the
-.B m
-modifier has the following further advantages over
-the use of
-.BR a :
-.IP \(bu 3
-It may also be applied to
-.B %c
-conversion specifiers (e.g.,
-.BR %3mc ).
-.IP \(bu
-It avoids ambiguity with respect to the
-.B %a
-floating-point conversion specifier (and is unaffected by
-.I gcc\~\-std=c99
-etc.).
-.SH BUGS
-All functions are fully C89 conformant, but provide the
-additional modifiers
-.B q
-and
-.B a
-as well as an additional behavior of the
-.B L
-and
-.B ll
-modifiers.
-The latter may be considered to be a bug, as it changes the
-behavior of modifiers defined in C89.
-.PP
-Some combinations of the type modifiers and conversion
-specifiers defined by ANSI C do not make sense
-(e.g.,
-.BR "%Ld" ).
-While they may have a well-defined behavior on Linux, this need not
-to be so on other architectures.
-Therefore it usually is better to use
-modifiers that are not defined by ANSI C at all, that is, use
-.B q
-instead of
-.B L
-in combination with
-\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, and \fBX\fP
-conversions or
-.BR ll .
-.PP
-The usage of
-.B q
-is not the same as on 4.4BSD,
-as it may be used in float conversions equivalently to
-.BR L .
-.SH EXAMPLES
-To use the dynamic allocation conversion specifier, specify
-.B m
-as a length modifier (thus
-.B %ms
-or
-\fB%m[\fP\fIrange\fP\fB]\fP).
-The caller must
-.BR free (3)
-the returned string, as in the following example:
-.PP
-.in +4n
-.EX
-char *p;
-int n;
-
-errno = 0;
-n = scanf("%m[a\-z]", &p);
-if (n == 1) {
- printf("read: %s\en", p);
- free(p);
-} else if (errno != 0) {
- perror("scanf");
-} else {
- fprintf(stderr, "No matching characters\en");
-}
-.EE
-.in
-.PP
-As shown in the above example, it is necessary to call
-.BR free (3)
-only if the
-.BR scanf ()
-call successfully read a string.
+These functions conform to C99 and POSIX.1-2001.
.SH SEE ALSO
-.BR getc (3),
-.BR printf (3),
-.BR setlocale (3),
-.BR strtod (3),
-.BR strtol (3),
-.BR strtoul (3)
+.BR fgets (3),
+.BR getline (3),
+.BR sscanf (3)
diff --git a/man3/sched_getcpu.3 b/man3/sched_getcpu.3
index cf9e1f456..694e70911 100644
--- a/man3/sched_getcpu.3
+++ b/man3/sched_getcpu.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sched_getcpu 3 2022-12-15 "Linux man-pages 6.02"
+.TH sched_getcpu 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sched_getcpu \- determine CPU on which the calling thread is running
.SH LIBRARY
diff --git a/man3/seekdir.3 b/man3/seekdir.3
index a5bbc28d8..0d941a704 100644
--- a/man3/seekdir.3
+++ b/man3/seekdir.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:25:21 1993 by Rik Faith (faith@cs.unc.edu)
.\"
-.TH seekdir 3 2022-12-15 "Linux man-pages 6.02"
+.TH seekdir 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
seekdir \- set the position of the next readdir() call in the directory
stream.
@@ -31,8 +31,8 @@ Feature Test Macro Requirements for glibc (see
.BR seekdir ():
.nf
_XOPEN_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/sem_close.3 b/man3/sem_close.3
index 220ab18a8..1cc0afb5d 100644
--- a/man3/sem_close.3
+++ b/man3/sem_close.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_close 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_close 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_close \- close a named semaphore
.SH LIBRARY
diff --git a/man3/sem_destroy.3 b/man3/sem_destroy.3
index c67f080a7..ebbf68b12 100644
--- a/man3/sem_destroy.3
+++ b/man3/sem_destroy.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_destroy 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_destroy 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_destroy \- destroy an unnamed semaphore
.SH LIBRARY
diff --git a/man3/sem_getvalue.3 b/man3/sem_getvalue.3
index 81241b6ad..4e839fc98 100644
--- a/man3/sem_getvalue.3
+++ b/man3/sem_getvalue.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_getvalue 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_getvalue 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_getvalue \- get the value of a semaphore
.SH LIBRARY
diff --git a/man3/sem_init.3 b/man3/sem_init.3
index 95a031541..abc822c4b 100644
--- a/man3/sem_init.3
+++ b/man3/sem_init.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_init 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_init 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_init \- initialize an unnamed semaphore
.SH LIBRARY
diff --git a/man3/sem_open.3 b/man3/sem_open.3
index 6532d124e..79b48bf05 100644
--- a/man3/sem_open.3
+++ b/man3/sem_open.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_open 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_open 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_open \- initialize and open a named semaphore
.SH LIBRARY
diff --git a/man3/sem_post.3 b/man3/sem_post.3
index 50be95c44..e7643138a 100644
--- a/man3/sem_post.3
+++ b/man3/sem_post.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_post 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_post 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_post \- unlock a semaphore
.SH LIBRARY
diff --git a/man3/sem_unlink.3 b/man3/sem_unlink.3
index 7ee62517d..ade49b0ac 100644
--- a/man3/sem_unlink.3
+++ b/man3/sem_unlink.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_unlink 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_unlink 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_unlink \- remove a named semaphore
.SH LIBRARY
diff --git a/man3/sem_wait.3 b/man3/sem_wait.3
index f4fbb68f2..e08e53f0d 100644
--- a/man3/sem_wait.3
+++ b/man3/sem_wait.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_wait 3 2022-12-15 "Linux man-pages 6.02"
+.TH sem_wait 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sem_wait, sem_timedwait, sem_trywait \- lock a semaphore
.SH LIBRARY
diff --git a/man3/setaliasent.3 b/man3/setaliasent.3
index 3b8cc6067..1c7892849 100644
--- a/man3/setaliasent.3
+++ b/man3/setaliasent.3
@@ -5,7 +5,7 @@
.\"
.\" Polished a bit, added a little, aeb
.\"
-.TH setaliasent 3 2022-12-15 "Linux man-pages 6.02"
+.TH setaliasent 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
setaliasent, endaliasent, getaliasent, getaliasent_r,
getaliasbyname, getaliasbyname_r \- read an alias entry
diff --git a/man3/setbuf.3 b/man3/setbuf.3
index 2d7fa1754..1ae1cf299 100644
--- a/man3/setbuf.3
+++ b/man3/setbuf.3
@@ -18,7 +18,7 @@
.\" Correction, 2000-03-03, Andreas Jaeger <aj@suse.de>
.\" Added return value for setvbuf, aeb,
.\"
-.TH setbuf 3 2022-12-15 "Linux man-pages 6.02"
+.TH setbuf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setbuf, setbuffer, setlinebuf, setvbuf \- stream buffering operations
.SH LIBRARY
@@ -47,7 +47,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
@@ -164,7 +164,7 @@ The
.BR setbuf ()
and
.BR setvbuf ()
-functions conform to C89 and C99.
+functions conform to C99.
.SH NOTES
POSIX notes
.\" https://www.austingroupbugs.net/view.php?id=397#c799
diff --git a/man3/setenv.3 b/man3/setenv.3
index 99c306da7..0561854ec 100644
--- a/man3/setenv.3
+++ b/man3/setenv.3
@@ -15,7 +15,7 @@
.\" Noted nonstandard behavior of setenv() if name contains '='
.\" 2005-08-12, mtk, glibc 2.3.4 fixed the "name contains '='" bug
.\"
-.TH setenv 3 2022-12-15 "Linux man-pages 6.02"
+.TH setenv 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setenv \- change or add an environment variable
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.BR unsetenv ():
.nf
_POSIX_C_SOURCE >= 200112L
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
The
@@ -97,7 +97,7 @@ set to indicate the error.
.B EINVAL
.I name
is NULL, points to a string of length 0,
-or contains an \(aq=\(aq character.
+or contains an \[aq]=\[aq] character.
.TP
.B ENOMEM
Insufficient memory to add a new variable to the environment.
@@ -138,11 +138,11 @@ POSIX.1-compliant prototype shown in the SYNOPSIS.
.SH BUGS
POSIX.1 specifies that if
.I name
-contains an \(aq=\(aq character, then
+contains an \[aq]=\[aq] character, then
.BR setenv ()
should fail with the error
.BR EINVAL ;
-however, versions of glibc before glibc 2.3.4 allowed an \(aq=\(aq sign in
+however, versions of glibc before glibc 2.3.4 allowed an \[aq]=\[aq] sign in
.IR name .
.SH SEE ALSO
.BR clearenv (3),
diff --git a/man3/setjmp.3 b/man3/setjmp.3
index cb73c31a2..e9f22daf0 100644
--- a/man3/setjmp.3
+++ b/man3/setjmp.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH setjmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH setjmp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setjmp, sigsetjmp, longjmp, siglongjmp \- performing a nonlocal goto
.SH LIBRARY
@@ -143,7 +143,7 @@ T} Thread safety MT-Safe
.SH STANDARDS
.BR setjmp (),
.BR longjmp ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.PP
.BR sigsetjmp (),
.BR siglongjmp ():
@@ -212,17 +212,17 @@ Consequently, the values of automatic variables are unspecified
after a call to
.BR longjmp ()
if they meet all the following criteria:
-.IP \(bu 3
+.IP \[bu] 3
they are local to the function that made the corresponding
.BR setjmp ()
call;
-.IP \(bu
+.IP \[bu]
their values are changed between the calls to
.BR setjmp ()
and
.BR longjmp ();
and
-.IP \(bu
+.IP \[bu]
they are not declared as
.IR volatile .
.PP
@@ -302,12 +302,12 @@ that occur upon a return from the initial call to
the behavior is undefined if the program subsequently makes a call to
a non-async-signal-safe function.
The only way of avoiding undefined behavior is to ensure one of the following:
-.IP \(bu 3
+.IP \[bu] 3
After long jumping from the signal handler,
the program does not call any non-async-signal-safe functions
and does not return from the initial call to
.IR main ().
-.IP \(bu
+.IP \[bu]
Any signal whose handler performs a long jump must be blocked during
.I every
call to a non-async-signal-safe function and
diff --git a/man3/setlocale.3 b/man3/setlocale.3
index 825d2e0d5..e0d625733 100644
--- a/man3/setlocale.3
+++ b/man3/setlocale.3
@@ -10,7 +10,7 @@
.\" Modified Tue Aug 24 17:11:01 1999 by Andries Brouwer (aeb@cwi.nl)
.\" Modified Tue Feb 6 03:31:55 2001 by Andries Brouwer (aeb@cwi.nl)
.\"
-.TH setlocale 3 2022-12-15 "Linux man-pages 6.02"
+.TH setlocale 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setlocale \- set the current locale
.SH LIBRARY
@@ -153,20 +153,20 @@ setlocale(LC_ALL, "");
.in
.PP
after program initialization, and then:
-.IP \(bu 3
+.IP \[bu] 3
using the values returned from a
.BR localeconv (3)
call for locale-dependent information;
-.IP \(bu
+.IP \[bu]
using the multibyte and wide character functions for text processing if
.BR "MB_CUR_MAX > 1" ;
-.IP \(bu
+.IP \[bu]
using
.BR strcoll (3)
and
.BR strxfrm (3)
to compare strings; and
-.IP \(bu
+.IP \[bu]
using
.BR wcscoll (3)
and
@@ -199,7 +199,7 @@ T} Thread safety MT-Unsafe const:locale env
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.PP
The C standards specify only the categories
.BR LC_ALL ,
diff --git a/man3/setlogmask.3 b/man3/setlogmask.3
index dae2314f1..afe2189dd 100644
--- a/man3/setlogmask.3
+++ b/man3/setlogmask.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH setlogmask 3 2022-12-15 "Linux man-pages 6.02"
+.TH setlogmask 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
setlogmask \- set log priority mask
.SH LIBRARY
diff --git a/man3/setnetgrent.3 b/man3/setnetgrent.3
index 4cb96d637..9238c7ac6 100644
--- a/man3/setnetgrent.3
+++ b/man3/setnetgrent.3
@@ -6,7 +6,7 @@
.\" based on glibc infopages
.\" polished - aeb
.\"
-.TH setnetgrent 3 2022-12-15 "Linux man-pages 6.02"
+.TH setnetgrent 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr \-
handle network group entries
@@ -46,7 +46,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.ad
diff --git a/man3/shm_open.3 b/man3/shm_open.3
index c6374add0..24eddb027 100644
--- a/man3/shm_open.3
+++ b/man3/shm_open.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH shm_open 3 2022-12-15 "Linux man-pages 6.02"
+.TH shm_open 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
shm_open, shm_unlink \- create/open or unlink POSIX shared memory objects
.SH LIBRARY
@@ -90,7 +90,7 @@ is listed in
(Symbolic definitions of these constants can be obtained by including
.IR <sys/stat.h> .)
.IP
-A new shared memory object initially has zero length\(emthe size of the
+A new shared memory object initially has zero length\[em]the size of the
object can be set using
.BR ftruncate (2).
The newly allocated bytes of a shared memory
@@ -257,7 +257,7 @@ and
.B O_TRUNC
unspecified.
On Linux, this will successfully truncate an existing
-shared memory object\(emthis may not be so on other UNIX systems.
+shared memory object\[em]this may not be so on other UNIX systems.
.PP
The POSIX shared memory object implementation on Linux makes use
of a dedicated
@@ -311,7 +311,7 @@ on the memory object that is shared between the two programs.
struct shmbuf {
sem_t sem1; /* POSIX unnamed semaphore */
sem_t sem2; /* POSIX unnamed semaphore */
- size_t cnt; /* Number of bytes used in \(aqbuf\(aq */
+ size_t cnt; /* Number of bytes used in \[aq]buf\[aq] */
char buf[BUF_SIZE]; /* Data being transferred */
};
.EE
@@ -367,7 +367,7 @@ main(int argc, char *argv[])
if (ftruncate(fd, sizeof(struct shmbuf)) == \-1)
errExit("ftruncate");
- /* Map the object into the caller\(aqs address space. */
+ /* Map the object into the caller\[aq]s address space. */
shmp = mmap(NULL, sizeof(*shmp), PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0);
@@ -381,7 +381,7 @@ main(int argc, char *argv[])
if (sem_init(&shmp\->sem2, 1, 0) == \-1)
errExit("sem_init\-sem2");
- /* Wait for \(aqsem1\(aq to be posted by peer before touching
+ /* Wait for \[aq]sem1\[aq] to be posted by peer before touching
shared memory. */
if (sem_wait(&shmp\->sem1) == \-1)
@@ -392,7 +392,7 @@ main(int argc, char *argv[])
for (size_t j = 0; j < shmp\->cnt; j++)
shmp\->buf[j] = toupper((unsigned char) shmp\->buf[j]);
- /* Post \(aqsem2\(aq to tell the peer that it can now
+ /* Post \[aq]sem2\[aq] to tell the peer that it can now
access the modified data in shared memory. */
if (sem_post(&shmp\->sem2) == \-1)
@@ -459,7 +459,7 @@ main(int argc, char *argv[])
}
/* Open the existing shared memory object and map it
- into the caller\(aqs address space. */
+ into the caller\[aq]s address space. */
fd = shm_open(shmpath, O_RDWR, 0);
if (fd == \-1)
diff --git a/man3/siginterrupt.3 b/man3/siginterrupt.3
index 51ce35f03..95191dab0 100644
--- a/man3/siginterrupt.3
+++ b/man3/siginterrupt.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:40:51 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Apr 14 16:20:34 1996 by Andries Brouwer (aeb@cwi.nl)
-.TH siginterrupt 3 2022-12-15 "Linux man-pages 6.02"
+.TH siginterrupt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
siginterrupt \- allow signals to interrupt system calls
.SH LIBRARY
@@ -32,7 +32,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/signbit.3 b/man3/signbit.3
index 431101a51..da6de44bd 100644
--- a/man3/signbit.3
+++ b/man3/signbit.3
@@ -7,7 +7,7 @@
.\"
.\" Based on glibc infopages, copyright Free Software Foundation
.\"
-.TH signbit 3 2022-12-15 "Linux man-pages 6.02"
+.TH signbit 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
signbit \- test sign of a real floating-point number
.SH LIBRARY
diff --git a/man3/significand.3 b/man3/significand.3
index 70eef979d..7ff36d43b 100644
--- a/man3/significand.3
+++ b/man3/significand.3
@@ -5,7 +5,7 @@
.\"
.\" heavily based on glibc infopages, copyright Free Software Foundation
.\"
-.TH significand 3 2022-12-15 "Linux man-pages 6.02"
+.TH significand 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
significand, significandf, significandl \-
get mantissa of floating-point number
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
.BR significandl ():
.nf
/* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the mantissa of
diff --git a/man3/sigpause.3 b/man3/sigpause.3
index 8bc111bd4..a65ef208b 100644
--- a/man3/sigpause.3
+++ b/man3/sigpause.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sigpause 3 2022-12-15 "Linux man-pages 6.02"
+.TH sigpause 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sigpause \- atomically release blocked signals and wait for interrupt
.SH LIBRARY
@@ -90,7 +90,7 @@ architecture.
.PP
.\" Libc4 and libc5 know only about the BSD version.
.\"
-Glibc uses the BSD version if the
+glibc uses the BSD version if the
.B _BSD_SOURCE
feature test macro is defined and none of
.BR _POSIX_SOURCE ,
@@ -102,12 +102,12 @@ or
is defined.
Otherwise, the System V version is used,
and feature test macros must be defined as follows to obtain the declaration:
-.IP \(bu 3
+.IP \[bu] 3
Since glibc 2.26:
_XOPEN_SOURCE >= 500
.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
-.IP \(bu
-Glibc 2.25 and earlier: _XOPEN_SOURCE
+.IP \[bu]
+glibc 2.25 and earlier: _XOPEN_SOURCE
.PP
Since glibc 2.19, only the System V version is exposed by
.IR <signal.h> ;
diff --git a/man3/sigqueue.3 b/man3/sigqueue.3
index edf639f8f..f9892c43c 100644
--- a/man3/sigqueue.3
+++ b/man3/sigqueue.3
@@ -6,7 +6,7 @@
.\" added note on self-signaling, aeb, 2002-06-07
.\" added note on CAP_KILL, mtk, 2004-06-16
.\"
-.TH sigqueue 3 2022-12-15 "Linux man-pages 6.02"
+.TH sigqueue 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sigqueue \- queue a signal and data to a process
.SH LIBRARY
diff --git a/man3/sigset.3 b/man3/sigset.3
index 5fd4b4938..e64387e49 100644
--- a/man3/sigset.3
+++ b/man3/sigset.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sigset 3 2022-12-15 "Linux man-pages 6.02"
+.TH sigset 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sigset, sighold, sigrelse, sigignore \- System V signal API
.SH LIBRARY
diff --git a/man3/sigsetops.3 b/man3/sigsetops.3
index b0f924c37..414afae3c 100644
--- a/man3/sigsetops.3
+++ b/man3/sigsetops.3
@@ -9,7 +9,7 @@
.\" 2007-10-26 mdw added wording that a sigset_t must be initialized
.\" prior to use
.\"
-.TH SIGSETOPS 3 2022-12-15 "Linux man-pages 6.02"
+.TH SIGSETOPS 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sigemptyset, sigfillset, sigaddset, sigdelset, sigismember \- POSIX
signal set operations
@@ -146,7 +146,7 @@ See
.BR nptl (7)
for details.
.\"
-.SS Glibc extensions
+.SS glibc extensions
If the
.B _GNU_SOURCE
feature test macro is defined, then \fI<signal.h>\fP
diff --git a/man3/sigvec.3 b/man3/sigvec.3
index 56b99bdd6..c219a402e 100644
--- a/man3/sigvec.3
+++ b/man3/sigvec.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sigvec 3 2022-12-15 "Linux man-pages 6.02"
+.TH sigvec 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sigvec, sigblock, sigsetmask, siggetmask, sigmask \- BSD signal API
.SH LIBRARY
@@ -31,7 +31,7 @@ All functions shown above:
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/sigwait.3 b/man3/sigwait.3
index 8e9c71fc2..b9f9e7e3c 100644
--- a/man3/sigwait.3
+++ b/man3/sigwait.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sigwait 3 2022-12-15 "Linux man-pages 6.02"
+.TH sigwait 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sigwait \- wait for a signal
.SH LIBRARY
@@ -26,7 +26,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.26:
_POSIX_C_SOURCE >= 199506L
- Glibc 2.25 and earlier:
+ glibc 2.25 and earlier:
_POSIX_C_SOURCE
.fi
.SH DESCRIPTION
@@ -46,12 +46,12 @@ The operation of
is the same as
.BR sigwaitinfo (2),
except that:
-.IP \(bu 3
+.IP \[bu] 3
.BR sigwait ()
returns only the signal number, rather than a
.I siginfo_t
structure describing the signal.
-.IP \(bu
+.IP \[bu]
The return values of the two functions are different.
.SH RETURN VALUE
On success,
diff --git a/man3/sin.3 b/man3/sin.3
index 08f1002be..64cbe9556 100644
--- a/man3/sin.3
+++ b/man3/sin.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH sin 3 2022-12-15 "Linux man-pages 6.02"
+.TH sin 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sin, sinf, sinl \- sine function
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the sine of
@@ -104,7 +104,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH BUGS
Before glibc 2.10, the glibc implementation did not set
.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6781
diff --git a/man3/sincos.3 b/man3/sincos.3
index 17aa58ebe..9c694b597 100644
--- a/man3/sincos.3
+++ b/man3/sincos.3
@@ -5,7 +5,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH SINCOS 3 2022-12-15 "Linux man-pages 6.02"
+.TH sincos 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
sincos, sincosf, sincosl \- calculate sin and cos simultaneously
.SH LIBRARY
diff --git a/man3/sinh.3 b/man3/sinh.3
index a6f5cbaa7..94f5cc547 100644
--- a/man3/sinh.3
+++ b/man3/sinh.3
@@ -14,7 +14,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH sinh 3 2022-12-15 "Linux man-pages 6.02"
+.TH sinh 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sinh, sinhf, sinhl \- hyperbolic sine function
.SH LIBRARY
@@ -39,7 +39,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the hyperbolic sine of
@@ -120,7 +120,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR acosh (3),
.BR asinh (3),
diff --git a/man3/sleep.3 b/man3/sleep.3
index 02b851260..b7d7bdac4 100644
--- a/man3/sleep.3
+++ b/man3/sleep.3
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Sat Jul 24 18:16:02 1993 by Rik Faith (faith@cs.unc.edu)
-.TH sleep 3 2022-12-15 "Linux man-pages 6.02"
+.TH sleep 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sleep \- sleep for a specified number of seconds
.SH LIBRARY
diff --git a/man3/slist.3 b/man3/slist.3
index eec1ca526..045a3f629 100644
--- a/man3/slist.3
+++ b/man3/slist.3
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
.\"
-.TH SLIST 3 2022-10-30 "Linux man-pages 6.02"
+.TH SLIST 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
SLIST_EMPTY,
SLIST_ENTRY,
diff --git a/man3/sockatmark.3 b/man3/sockatmark.3
index 83cda60f8..d9ea1e573 100644
--- a/man3/sockatmark.3
+++ b/man3/sockatmark.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sockatmark 3 2022-12-15 "Linux man-pages 6.02"
+.TH sockatmark 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sockatmark \- determine whether socket is at out-of-band mark
.SH LIBRARY
diff --git a/man3/sqrt.3 b/man3/sqrt.3
index fe6fc91f6..9860fe876 100644
--- a/man3/sqrt.3
+++ b/man3/sqrt.3
@@ -12,7 +12,7 @@
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
-.TH sqrt 3 2022-12-15 "Linux man-pages 6.02"
+.TH sqrt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sqrt, sqrtf, sqrtl \- square root function
.SH LIBRARY
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the nonnegative square root of
@@ -103,7 +103,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR cbrt (3),
.BR csqrt (3),
diff --git a/man3/sscanf.3 b/man3/sscanf.3
index 9fd424bb2..3c668d6aa 100644
--- a/man3/sscanf.3
+++ b/man3/sscanf.3
@@ -1 +1,749 @@
-.so man3/scanf.3
+'\" t
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" SPDX-License-Identifier: BSD-4-Clause-UC
+.\"
+.\" @(#)scanf.3 6.14 (Berkeley) 1/8/93
+.\"
+.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
+.\" modified to resemble the GNU libio setup used in the Linux libc
+.\" used in versions 4.x (x>4) and 5 Helmut.Geyer@iwr.uni-heidelberg.de
+.\" Modified, aeb, 970121
+.\" 2005-07-14, mtk, added description of %n$ form; various text
+.\" incorporated from the GNU C library documentation ((C) The
+.\" Free Software Foundation); other parts substantially rewritten.
+.\"
+.\" 2008-06-23, mtk
+.\" Add ERRORS section.
+.\" Document the 'a' and 'm' modifiers for dynamic string allocation.
+.\"
+.TH sscanf 3 2023-02-05 "Linux man-pages 6.03"
+.SH NAME
+sscanf, vsscanf \- input string format conversion
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.PP
+.BI "int sscanf(const char *restrict " str ,
+.BI " const char *restrict " format ", ...);"
+.PP
+.B #include <stdarg.h>
+.PP
+.BI "int vsscanf(const char *restrict " str ,
+.BI " const char *restrict " format ", va_list " ap );
+.fi
+.PP
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.PP
+.BR vsscanf ():
+.nf
+ _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
+.fi
+.SH DESCRIPTION
+The
+.BR sscanf ()
+family of functions scans input according to
+.I format
+as described below.
+This format may contain
+.IR "conversion specifications" ;
+the results from such conversions, if any,
+are stored in the locations pointed to by the
+.I pointer
+arguments that follow
+.IR format .
+Each
+.I pointer
+argument must be of a type that is appropriate for the value returned
+by the corresponding conversion specification.
+.PP
+If the number of conversion specifications in
+.I format
+exceeds the number of
+.I pointer
+arguments, the results are undefined.
+If the number of
+.I pointer
+arguments exceeds the number of conversion specifications, then the excess
+.I pointer
+arguments are evaluated, but are otherwise ignored.
+.PP
+.BR sscanf ()
+These functions
+read their input from the string pointed to by
+.IR str .
+.PP
+The
+.BR vsscanf ()
+function is analogous to
+.BR vsprintf (3).
+.PP
+The
+.I format
+string consists of a sequence of
+.I directives
+which describe how to process the sequence of input characters.
+If processing of a directive fails, no further input is read, and
+.BR sscanf ()
+returns.
+A "failure" can be either of the following:
+.IR "input failure" ,
+meaning that input characters were unavailable, or
+.IR "matching failure" ,
+meaning that the input was inappropriate (see below).
+.PP
+A directive is one of the following:
+.TP
+\[bu]
+A sequence of white-space characters (space, tab, newline, etc.; see
+.BR isspace (3)).
+This directive matches any amount of white space,
+including none, in the input.
+.TP
+\[bu]
+An ordinary character (i.e., one other than white space or \[aq]%\[aq]).
+This character must exactly match the next character of input.
+.TP
+\[bu]
+A conversion specification,
+which commences with a \[aq]%\[aq] (percent) character.
+A sequence of characters from the input is converted according to
+this specification, and the result is placed in the corresponding
+.I pointer
+argument.
+If the next item of input does not match the conversion specification,
+the conversion fails\[em]this is a
+.IR "matching failure" .
+.PP
+Each
+.I conversion specification
+in
+.I format
+begins with either the character \[aq]%\[aq] or the character sequence
+"\fB%\fP\fIn\fP\fB$\fP"
+(see below for the distinction) followed by:
+.TP
+\[bu]
+An optional \[aq]*\[aq] assignment-suppression character:
+.BR sscanf ()
+reads input as directed by the conversion specification,
+but discards the input.
+No corresponding
+.I pointer
+argument is required, and this specification is not
+included in the count of successful assignments returned by
+.BR scanf ().
+.TP
+\[bu]
+For decimal conversions, an optional quote character (\[aq]).
+This specifies that the input number may include thousands'
+separators as defined by the
+.B LC_NUMERIC
+category of the current locale.
+(See
+.BR setlocale (3).)
+The quote character may precede or follow the \[aq]*\[aq]
+assignment-suppression character.
+.TP
+\[bu]
+An optional \[aq]m\[aq] character.
+This is used with string conversions
+.RI ( %s ,
+.IR %c ,
+.IR %[ ),
+and relieves the caller of the
+need to allocate a corresponding buffer to hold the input: instead,
+.BR sscanf ()
+allocates a buffer of sufficient size,
+and assigns the address of this buffer to the corresponding
+.I pointer
+argument, which should be a pointer to a
+.I "char\ *"
+variable (this variable does not need to be initialized before the call).
+The caller should subsequently
+.BR free (3)
+this buffer when it is no longer required.
+.TP
+\[bu]
+An optional decimal integer which specifies the
+.IR "maximum field width" .
+Reading of characters stops either when this maximum is reached or
+when a nonmatching character is found, whichever happens first.
+Most conversions discard initial white space characters (the exceptions
+are noted below),
+and these discarded characters don't count toward the maximum field width.
+String input conversions store a terminating null byte (\[aq]\e0\[aq])
+to mark the end of the input;
+the maximum field width does not include this terminator.
+.TP
+\[bu]
+An optional
+.IR "type modifier character" .
+For example, the
+.B l
+type modifier is used with integer conversions such as
+.B %d
+to specify that the corresponding
+.I pointer
+argument refers to a
+.I "long"
+rather than a pointer to an
+.IR int .
+.TP
+\[bu]
+A
+.I "conversion specifier"
+that specifies the type of input conversion to be performed.
+.PP
+The conversion specifications in
+.I format
+are of two forms, either beginning with \[aq]%\[aq] or beginning with
+"\fB%\fP\fIn\fP\fB$\fP".
+The two forms should not be mixed in the same
+.I format
+string, except that a string containing
+"\fB%\fP\fIn\fP\fB$\fP"
+specifications can include
+.B %%
+and
+.BR %* .
+If
+.I format
+contains \[aq]%\[aq]
+specifications, then these correspond in order with successive
+.I pointer
+arguments.
+In the
+"\fB%\fP\fIn\fP\fB$\fP"
+form (which is specified in POSIX.1-2001, but not C99),
+.I n
+is a decimal integer that specifies that the converted input should
+be placed in the location referred to by the
+.IR n -th
+.I pointer
+argument following
+.IR format .
+.SS Conversions
+The following
+.I "type modifier characters"
+can appear in a conversion specification:
+.TP
+.B h
+Indicates that the conversion will be one of
+\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, or \fBn\fP
+and the next pointer is a pointer to a
+.I short
+or
+.I unsigned short
+(rather than
+.IR int ).
+.TP
+.B hh
+As for
+.BR h ,
+but the next pointer is a pointer to a
+.I signed char
+or
+.IR "unsigned char" .
+.TP
+.B j
+As for
+.BR h ,
+but the next pointer is a pointer to an
+.I intmax_t
+or a
+.IR uintmax_t .
+This modifier was introduced in C99.
+.TP
+.B l
+Indicates either that the conversion will be one of
+\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, or \fBn\fP
+and the next pointer is a pointer to a
+.I long
+or
+.I unsigned long
+(rather than
+.IR int ),
+or that the conversion will be one of
+\fBe\fP, \fBf\fP, or \fBg\fP
+and the next pointer is a pointer to
+.I double
+(rather than
+.IR float ).
+If used with
+.B %c
+or
+.BR %s ,
+the corresponding parameter is considered
+as a pointer to a wide character or wide-character string respectively.
+.\" This use of l was introduced in Amendment 1 to ISO C90.
+.TP
+.B ll
+(ell-ell)
+Indicates that the conversion will be one of
+.BR b ,
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.B n
+and the next pointer is a pointer to a
+.I long long
+or
+.I unsigned long long
+(rather than
+.IR int ).
+.TP
+.B L
+Indicates that the conversion will be either
+\fBe\fP, \fBf\fP, or \fBg\fP
+and the next pointer is a pointer to
+.I "long double"
+or
+(as a GNU extension)
+the conversion will be
+\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, or \fBx\fP
+and the next pointer is a pointer to
+.IR "long long" .
+.\" MTK, Jul 05: The following is no longer true for modern
+.\" ANSI C (i.e., C99):
+.\" (Note that long long is not an
+.\" ANSI C
+.\" type. Any program using this will not be portable to all
+.\" architectures).
+.TP
+.B q
+equivalent to
+.BR L .
+This specifier does not exist in ANSI C.
+.TP
+.B t
+As for
+.BR h ,
+but the next pointer is a pointer to a
+.IR ptrdiff_t .
+This modifier was introduced in C99.
+.TP
+.B z
+As for
+.BR h ,
+but the next pointer is a pointer to a
+.IR size_t .
+This modifier was introduced in C99.
+.PP
+The following
+.I "conversion specifiers"
+are available:
+.TP
+.B %
+Matches a literal \[aq]%\[aq].
+That is,
+.B %\&%
+in the format string matches a
+single input \[aq]%\[aq] character.
+No conversion is done (but initial white space characters are discarded),
+and assignment does not occur.
+.TP
+.B d
+.IR Deprecated .
+Matches an optionally signed decimal integer;
+the next pointer must be a pointer to
+.IR int .
+.\" .TP
+.\" .B D
+.\" Equivalent to
+.\" .IR ld ;
+.\" this exists only for backward compatibility.
+.\" (Note: thus only in libc4
+.\" In libc5 and glibc the
+.\" .B %D
+.\" is silently ignored, causing old programs to fail mysteriously.)
+.TP
+.B i
+.IR Deprecated .
+Matches an optionally signed integer; the next pointer must be a pointer to
+.IR int .
+The integer is read in base 16 if it begins with
+.I 0x
+or
+.IR 0X ,
+in base 8 if it begins with
+.IR 0 ,
+and in base 10 otherwise.
+Only characters that correspond to the base are used.
+.TP
+.B o
+.IR Deprecated .
+Matches an unsigned octal integer; the next pointer must be a pointer to
+.IR "unsigned int" .
+.TP
+.B u
+.IR Deprecated .
+Matches an unsigned decimal integer; the next pointer must be a
+pointer to
+.IR "unsigned int" .
+.TP
+.B x
+.IR Deprecated .
+Matches an unsigned hexadecimal integer
+(that may optionally begin with a prefix of
+.I 0x
+or
+.IR 0X ,
+which is discarded); the next pointer must
+be a pointer to
+.IR "unsigned int" .
+.TP
+.B X
+.IR Deprecated .
+Equivalent to
+.BR x .
+.TP
+.B f
+.IR Deprecated .
+Matches an optionally signed floating-point number; the next pointer must
+be a pointer to
+.IR float .
+.TP
+.B e
+.IR Deprecated .
+Equivalent to
+.BR f .
+.TP
+.B g
+.IR Deprecated .
+Equivalent to
+.BR f .
+.TP
+.B E
+.IR Deprecated .
+Equivalent to
+.BR f .
+.TP
+.B a
+.IR Deprecated .
+(C99) Equivalent to
+.BR f .
+.TP
+.B s
+Matches a sequence of non-white-space characters;
+the next pointer must be a pointer to the initial element of a
+character array that is long enough to hold the input sequence and
+the terminating null byte (\[aq]\e0\[aq]), which is added automatically.
+The input string stops at white space or at the maximum field
+width, whichever occurs first.
+.TP
+.B c
+Matches a sequence of characters whose length is specified by the
+.I maximum field width
+(default 1); the next pointer must be a pointer to
+.IR char ,
+and there must be enough room for all the characters
+(no terminating null byte is added).
+The usual skip of leading white space is suppressed.
+To skip white space first, use an explicit space in the format.
+.TP
+.B \&[
+Matches a nonempty sequence of characters from the specified set of
+accepted characters; the next pointer must be a pointer to
+.IR char ,
+and there must be enough room for all the characters in the string, plus a
+terminating null byte.
+The usual skip of leading white space is suppressed.
+The string is to be made up of characters in (or not in) a particular set;
+the set is defined by the characters between the open bracket
+.B [
+character and a close bracket
+.B ]
+character.
+The set
+.I excludes
+those characters if the first character after the open bracket is a
+circumflex
+.RB ( \[ha] ).
+To include a close bracket in the set, make it the first character after
+the open bracket or the circumflex; any other position will end the set.
+The hyphen character
+.B \-
+is also special; when placed between two other characters, it adds all
+intervening characters to the set.
+To include a hyphen, make it the last
+character before the final close bracket.
+For instance,
+.B [\[ha]]0\-9\-]
+means
+the set "everything except close bracket, zero through nine, and hyphen".
+The string ends with the appearance of a character not in the (or, with a
+circumflex, in) set or when the field width runs out.
+.TP
+.B p
+Matches a pointer value (as printed by
+.B %p
+in
+.BR printf (3));
+the next pointer must be a pointer to a pointer to
+.IR void .
+.TP
+.B n
+Nothing is expected; instead, the number of characters consumed thus far
+from the input is stored through the next pointer, which must be a pointer
+to
+.IR int ,
+or variant whose size matches the (optionally)
+supplied integer length modifier.
+This is
+.I not
+a conversion and does
+.I not
+increase the count returned by the function.
+The assignment can be suppressed with the
+.B *
+assignment-suppression character, but the effect on the
+return value is undefined.
+Therefore
+.B %*n
+conversions should not be used.
+.SH RETURN VALUE
+On success, these functions return the number of input items
+successfully matched and assigned;
+this can be fewer than provided for,
+or even zero, in the event of an early matching failure.
+.PP
+The value
+.B EOF
+is returned if the end of input is reached before either the first
+successful conversion or a matching failure occurs.
+.B EOF
+is also returned if a read error occurs,
+in which case the error indicator for the stream (see
+.BR ferror (3))
+is set, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EILSEQ
+Input byte sequence does not form a valid character.
+.TP
+.B EINVAL
+Not enough arguments; or
+.I format
+is NULL.
+.TP
+.B ENOMEM
+Out of memory.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.ad l
+.nh
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR sscanf (),
+.BR vsscanf ()
+T} Thread safety MT-Safe locale
+.TE
+.hy
+.ad
+.sp 1
+.SH STANDARDS
+These functions conform to C99 and POSIX.1-2001.
+.PP
+The
+.B q
+specifier is the 4.4BSD notation for
+.IR "long long" ,
+while
+.B ll
+or the usage of
+.B L
+in integer conversions is the GNU notation.
+.PP
+The Linux version of these functions is based on the
+.I GNU
+.I libio
+library.
+Take a look at the
+.I info
+documentation of
+.I GNU
+.I libc (glibc-1.08)
+for a more concise description.
+.SH NOTES
+.SS The 'a' assignment-allocation modifier
+Originally, the GNU C library supported dynamic allocation for string inputs
+(as a nonstandard extension) via the
+.B a
+character.
+(This feature is present at least as far back as glibc 2.0.)
+Thus, one could write the following to have
+.BR sscanf ()
+allocate a buffer for a string,
+with a pointer to that buffer being returned in
+.IR *buf :
+.PP
+.in +4n
+.EX
+char *buf;
+sscanf(str, "%as", &buf);
+.EE
+.in
+.PP
+The use of the letter
+.B a
+for this purpose was problematic, since
+.B a
+is also specified by the ISO C standard as a synonym for
+.B f
+(floating-point input).
+POSIX.1-2008 instead specifies the
+.B m
+modifier for assignment allocation (as documented in DESCRIPTION, above).
+.PP
+Note that the
+.B a
+modifier is not available if the program is compiled with
+.I gcc\~\-std=c99
+or
+.I gcc\~\-D_ISOC99_SOURCE
+(unless
+.B _GNU_SOURCE
+is also specified), in which case the
+.B a
+is interpreted as a specifier for floating-point numbers (see above).
+.PP
+Support for the
+.B m
+modifier was added to glibc 2.7,
+and new programs should use that modifier instead of
+.BR a .
+.PP
+As well as being standardized by POSIX, the
+.B m
+modifier has the following further advantages over
+the use of
+.BR a :
+.IP \[bu] 3
+It may also be applied to
+.B %c
+conversion specifiers (e.g.,
+.BR %3mc ).
+.IP \[bu]
+It avoids ambiguity with respect to the
+.B %a
+floating-point conversion specifier (and is unaffected by
+.I gcc\~\-std=c99
+etc.).
+.SH BUGS
+.SS Numeric conversion specifiers
+Use of the numeric conversion specifiers produces Undefined Behavior
+for invalid input.
+See
+.UR https://port70.net/\:%7Ensz/\:c/\:c11/\:n1570.html\:#7.21.6.2p10
+C11 7.21.6.2/10
+.UE .
+This is a bug in the ISO C standard,
+and not an inherent design issue with the API.
+However,
+current implementations are not safe from that bug,
+so it is not recommended to use them.
+Instead,
+programs should use functions such as
+.BR strtol (3)
+to parse numeric input.
+This manual page deprecates use of the numeric conversion specifiers
+until they are fixed by ISO C.
+.SS Nonstandard modifiers
+These functions are fully C99 conformant, but provide the
+additional modifiers
+.B q
+and
+.B a
+as well as an additional behavior of the
+.B L
+and
+.B ll
+modifiers.
+The latter may be considered to be a bug, as it changes the
+behavior of modifiers defined in C99.
+.PP
+Some combinations of the type modifiers and conversion
+specifiers defined by C99 do not make sense
+(e.g.,
+.BR "%Ld" ).
+While they may have a well-defined behavior on Linux, this need not
+to be so on other architectures.
+Therefore it usually is better to use
+modifiers that are not defined by C99 at all, that is, use
+.B q
+instead of
+.B L
+in combination with
+\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, and \fBX\fP
+conversions or
+.BR ll .
+.PP
+The usage of
+.B q
+is not the same as on 4.4BSD,
+as it may be used in float conversions equivalently to
+.BR L .
+.SH EXAMPLES
+To use the dynamic allocation conversion specifier, specify
+.B m
+as a length modifier (thus
+.B %ms
+or
+\fB%m[\fP\fIrange\fP\fB]\fP).
+The caller must
+.BR free (3)
+the returned string, as in the following example:
+.PP
+.in +4n
+.EX
+char *p;
+int n;
+
+errno = 0;
+n = sscanf(str, "%m[a\-z]", &p);
+if (n == 1) {
+ printf("read: %s\en", p);
+ free(p);
+} else if (errno != 0) {
+ perror("sscanf");
+} else {
+ fprintf(stderr, "No matching characters\en");
+}
+.EE
+.in
+.PP
+As shown in the above example, it is necessary to call
+.BR free (3)
+only if the
+.BR sscanf ()
+call successfully read a string.
+.SH SEE ALSO
+.BR getc (3),
+.BR printf (3),
+.BR setlocale (3),
+.BR strtod (3),
+.BR strtol (3),
+.BR strtoul (3)
diff --git a/man3/stailq.3 b/man3/stailq.3
index 0aea3ae12..fc2973d08 100644
--- a/man3/stailq.3
+++ b/man3/stailq.3
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
.\"
-.TH STAILQ 3 2022-10-30 "Linux man-pages 6.02"
+.TH STAILQ 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
.\"SIMPLEQ_CONCAT,
SIMPLEQ_EMPTY,
@@ -294,7 +294,7 @@ They are identical, but for historical reasons
they were named differently on different BSDs.
STAILQ originated on FreeBSD, and SIMPLEQ originated on NetBSD.
For compatibility reasons, some systems provide both sets of macros.
-Glibc provides both STAILQ and SIMPLEQ,
+glibc provides both STAILQ and SIMPLEQ,
which are identical except for a missing SIMPLEQ equivalent to
.BR STAILQ_CONCAT ().
.SH BUGS
diff --git a/man3/static_assert.3 b/man3/static_assert.3
index 67f2bb8ca..334e73d6d 100644
--- a/man3/static_assert.3
+++ b/man3/static_assert.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH static_assert 3 2022-12-02 "Linux man-pages 6.02"
+.TH static_assert 3 2023-01-26 "Linux man-pages 6.03"
.SH NAME
static_assert, _Static_assert \- fail compilation if assertion is false
.SH LIBRARY
@@ -113,6 +113,7 @@ main(void)
exit(EXIT_SUCCESS);
}
.EE
+.\" SRC END
.in
.SH SEE ALSO
.BR assert (3)
diff --git a/man3/statvfs.3 b/man3/statvfs.3
index 1b7ec7a87..6cbe38d2f 100644
--- a/man3/statvfs.3
+++ b/man3/statvfs.3
@@ -8,7 +8,7 @@
.\"
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH statvfs 3 2022-12-15 "Linux man-pages 6.02"
+.TH statvfs 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
statvfs, fstatvfs \- get filesystem statistics
.SH LIBRARY
diff --git a/man3/stdarg.3 b/man3/stdarg.3
index 7e1aa21a1..2f47409c0 100644
--- a/man3/stdarg.3
+++ b/man3/stdarg.3
@@ -13,7 +13,7 @@
.\" Converted for Linux, Mon Nov 29 15:11:11 1993, faith@cs.unc.edu
.\" Additions, 2001-10-14, aeb
.\"
-.TH stdarg 3 2022-12-15 "Linux man-pages 6.02"
+.TH stdarg 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
stdarg, va_start, va_arg, va_end, va_copy \- variable argument lists
.SH LIBRARY
@@ -224,15 +224,7 @@ T} Thread safety MT-Safe race:ap
.ad
.sp 1
.SH STANDARDS
-The
-.BR va_start (),
-.BR va_arg (),
-and
-.BR va_end ()
-macros conform to C89.
-C99 defines the
-.BR va_copy ()
-macro.
+C99.
.SH BUGS
Unlike the historical
.B varargs
@@ -260,7 +252,7 @@ with each format character based on the type.
#include <stdarg.h>
void
-foo(char *fmt, ...) /* \(aq...\(aq is C syntax for a variadic function */
+foo(char *fmt, ...) /* \[aq]...\[aq] is C syntax for a variadic function */
{
va_list ap;
@@ -271,15 +263,15 @@ foo(char *fmt, ...) /* \(aq...\(aq is C syntax for a variadic function */
va_start(ap, fmt);
while (*fmt)
switch (*fmt++) {
- case \(aqs\(aq: /* string */
+ case \[aq]s\[aq]: /* string */
s = va_arg(ap, char *);
printf("string %s\en", s);
break;
- case \(aqd\(aq: /* int */
+ case \[aq]d\[aq]: /* int */
d = va_arg(ap, int);
printf("int %d\en", d);
break;
- case \(aqc\(aq: /* char */
+ case \[aq]c\[aq]: /* char */
/* need a cast here since va_arg only
takes fully promoted types */
c = (char) va_arg(ap, int);
diff --git a/man3/stdin.3 b/man3/stdin.3
index 9ae989234..7c21a299d 100644
--- a/man3/stdin.3
+++ b/man3/stdin.3
@@ -10,7 +10,7 @@
.\" 2005-06-16 mtk, mentioned freopen()
.\" 2007-12-08, mtk, Converted from mdoc to man macros
.\"
-.TH stdin 3 2022-10-30 "Linux man-pages 6.02"
+.TH stdin 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
stdin, stdout, stderr \- standard I/O streams
.SH LIBRARY
@@ -119,7 +119,7 @@ The
.IR stdout ,
and
.I stderr
-macros conform to C89
+macros conform to C99
and this standard also stipulates that these three
streams shall be open at program startup.
.SH NOTES
diff --git a/man3/stdio.3 b/man3/stdio.3
index 37a12d5b9..d52a24556 100644
--- a/man3/stdio.3
+++ b/man3/stdio.3
@@ -9,7 +9,7 @@
.\" Converted for Linux, Mon Nov 29 16:07:22 1993, faith@cs.unc.edu
.\" Modified, 2001-12-26, aeb
.\"
-.TH stdio 3 2022-12-15 "Linux man-pages 6.02"
+.TH stdio 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
stdio \- standard input/output library functions
.SH LIBRARY
@@ -335,7 +335,7 @@ T}
.SH STANDARDS
The
.I stdio
-library conforms to C89.
+library conforms to C99.
.SH SEE ALSO
.BR close (2),
.BR open (2),
diff --git a/man3/stdio_ext.3 b/man3/stdio_ext.3
index 83fd96cbe..b200a07e5 100644
--- a/man3/stdio_ext.3
+++ b/man3/stdio_ext.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH STDIO_EXT 3 2022-12-15 "Linux man-pages 6.02"
+.TH stdio_ext 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
__fbufsize, __flbf, __fpending, __fpurge, __freadable,
__freading, __fsetlocking, __fwritable, __fwriting, _flushlbf \-
diff --git a/man3/stpncpy.3 b/man3/stpncpy.3
index 345faaaaa..b097301f8 100644
--- a/man3/stpncpy.3
+++ b/man3/stpncpy.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH stpncpy 3 2022-12-20 "Linux man-pages 6.02"
+.TH stpncpy 3 2023-01-26 "Linux man-pages 6.03"
.SH NAME
stpncpy, strncpy
\- zero a fixed-width buffer and
@@ -101,7 +101,7 @@ POSIX.1-2008.
.\" It first appeared in glibc 1.07 in 1993.
.TP
.BR strncpy ()
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH CAVEATS
The name of these functions is confusing.
These functions produce a null-padded character sequence,
@@ -144,7 +144,7 @@ main(void)
if (sizeof(buf2) < strlen("Hello world!"))
warnx("strncpy: truncating character sequence");
- strncpy(buf2, "Hello world!", sizeof(buf));
+ strncpy(buf2, "Hello world!", sizeof(buf2));
len = strnlen(buf2, sizeof(buf2));
printf("[len = %zu]: ", len);
diff --git a/man3/strcasecmp.3 b/man3/strcasecmp.3
index 1c96d6044..83755fe80 100644
--- a/man3/strcasecmp.3
+++ b/man3/strcasecmp.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:12:45 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strcasecmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH strcasecmp 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
strcasecmp, strncasecmp \- compare two strings ignoring case
.SH LIBRARY
@@ -104,7 +104,6 @@ to lowercase and then a byte comparison performed.
Otherwise, the results are unspecified.
.RE
.SH SEE ALSO
-.BR bcmp (3),
.BR memcmp (3),
.BR strcmp (3),
.BR strcoll (3),
diff --git a/man3/strchr.3 b/man3/strchr.3
index 024d8ae5b..7be7ce0f1 100644
--- a/man3/strchr.3
+++ b/man3/strchr.3
@@ -11,7 +11,7 @@
.\" 2006-05-19, Justin Pryzby <pryzbyj@justinpryzby.com>
.\" Document strchrnul(3).
.\"
-.TH strchr 3 2022-12-15 "Linux man-pages 6.02"
+.TH strchr 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strchr, strrchr, strchrnul \- locate character in string
.SH LIBRARY
@@ -71,7 +71,7 @@ the matched character or NULL if the character is not found.
The terminating null byte is considered part of the string,
so that if
.I c
-is specified as \(aq\e0\(aq,
+is specified as \[aq]\e0\[aq],
these functions return a pointer to the terminator.
.PP
The
@@ -107,14 +107,12 @@ T} Thread safety MT-Safe
.SH STANDARDS
.BR strchr (),
.BR strrchr ():
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.PP
.BR strchrnul ()
is a GNU extension.
.SH SEE ALSO
-.BR index (3),
.BR memchr (3),
-.BR rindex (3),
.BR string (3),
.BR strlen (3),
.BR strpbrk (3),
diff --git a/man3/strcmp.3 b/man3/strcmp.3
index 9398e4733..a37c3adfe 100644
--- a/man3/strcmp.3
+++ b/man3/strcmp.3
@@ -11,7 +11,7 @@
.\" Modified Sat Jul 24 18:08:52 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2001-08-31, aeb
.\"
-.TH strcmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH strcmp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strcmp, strncmp \- compare two strings
.SH LIBRARY
@@ -37,18 +37,18 @@ The comparison is done using unsigned characters.
.PP
.BR strcmp ()
returns an integer indicating the result of the comparison, as follows:
-.IP \(bu 3
+.IP \[bu] 3
0, if the
.I s1
and
.I s2
are equal;
-.IP \(bu
+.IP \[bu]
a negative value if
.I s1
is less than
.IR s2 ;
-.IP \(bu
+.IP \[bu]
a positive value if
.I s1
is greater than
@@ -95,7 +95,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
POSIX.1 specifies only that:
.RS
@@ -127,13 +127,13 @@ First, some examples using
.EX
$ \fB./string_comp ABC ABC\fP
<str1> and <str2> are equal
-$ \fB./string_comp ABC AB\fP # \(aqC\(aq is ASCII 67; \(aqC\(aq \- \(aq\e0\(aq = 67
+$ \fB./string_comp ABC AB\fP # \[aq]C\[aq] is ASCII 67; \[aq]C\[aq] \- \[aq]\e0\[aq] = 67
<str1> is greater than <str2> (67)
-$ \fB./string_comp ABA ABZ\fP # \(aqA\(aq is ASCII 65; \(aqZ\(aq is ASCII 90
+$ \fB./string_comp ABA ABZ\fP # \[aq]A\[aq] is ASCII 65; \[aq]Z\[aq] is ASCII 90
<str1> is less than <str2> (\-25)
$ \fB./string_comp ABJ ABC\fP
<str1> is greater than <str2> (7)
-$ .\fB/string_comp $\(aq\e201\(aq A\fP # 0201 \- 0101 = 0100 (or 64 decimal)
+$ .\fB/string_comp $\[aq]\e201\[aq] A\fP # 0201 \- 0101 = 0100 (or 64 decimal)
<str1> is greater than <str2> (64)
.EE
.in
@@ -198,7 +198,6 @@ main(int argc, char *argv[])
.EE
.\" SRC END
.SH SEE ALSO
-.BR bcmp (3),
.BR memcmp (3),
.BR strcasecmp (3),
.BR strcoll (3),
diff --git a/man3/strcoll.3 b/man3/strcoll.3
index 722198552..d6b18c625 100644
--- a/man3/strcoll.3
+++ b/man3/strcoll.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:40:44 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strcoll 3 2022-12-15 "Linux man-pages 6.02"
+.TH strcoll 3 2023-01-07 "Linux man-pages 6.03"
.SH NAME
strcoll \- compare two strings using the current locale
.SH LIBRARY
@@ -68,7 +68,7 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH NOTES
In the
.I "POSIX"
@@ -79,7 +79,6 @@ locales
is equivalent to
.BR strcmp (3).
.SH SEE ALSO
-.BR bcmp (3),
.BR memcmp (3),
.BR setlocale (3),
.BR strcasecmp (3),
diff --git a/man3/strcpy.3 b/man3/strcpy.3
index 8ab5d0877..d4cdcbf32 100644
--- a/man3/strcpy.3
+++ b/man3/strcpy.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH strcpy 3 2022-12-21 "Linux man-pages 6.02"
+.TH strcpy 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
stpcpy, strcpy, strcat \- copy or catenate a string
.SH LIBRARY
@@ -65,7 +65,7 @@ stpcpy(char *restrict dst, const char *restrict src)
char *p;
p = mempcpy(dst, src, strlen(src));
- *p = \(aq\e0\(aq;
+ *p = \[aq]\e0\[aq];
return p;
}
@@ -123,7 +123,7 @@ POSIX.1-2008.
.BR strcpy ()
.TQ
.BR strcat ()
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH CAVEATS
The strings
.I src
diff --git a/man3/strdup.3 b/man3/strdup.3
index a674fbfa1..efeb5921b 100644
--- a/man3/strdup.3
+++ b/man3/strdup.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:41:34 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Wed Oct 17 01:12:26 2001 by John Levon <moz@compsoc.man.ac.uk>
-.TH strdup 3 2022-12-15 "Linux man-pages 6.02"
+.TH strdup 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strdup, strndup, strdupa, strndupa \- duplicate a string
.SH LIBRARY
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.PP
.BR strndup ():
@@ -75,7 +75,7 @@ is longer than
.IR n ,
only
.I n
-bytes are copied, and a terminating null byte (\(aq\e0\(aq) is added.
+bytes are copied, and a terminating null byte (\[aq]\e0\[aq]) is added.
.PP
.BR strdupa ()
and
diff --git a/man3/strerror.3 b/man3/strerror.3
index 11ea1a4bd..6240e48a6 100644
--- a/man3/strerror.3
+++ b/man3/strerror.3
@@ -17,7 +17,7 @@
.\" 2005-12-13, mtk, Substantial rewrite of strerror_r() description
.\" Addition of extra material on portability and standards.
.\"
-.TH strerror 3 2022-12-15 "Linux man-pages 6.02"
+.TH strerror 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l \-
return string describing error number
@@ -148,7 +148,7 @@ bytes are stored (the string may be truncated if
is too small and
.I errnum
is unknown).
-The string always includes a terminating null byte (\(aq\e0\(aq).
+The string always includes a terminating null byte (\[aq]\e0\[aq]).
.\"
.SS strerror_l()
.BR strerror_l ()
@@ -255,7 +255,7 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
.BR strerror ()
-is specified by POSIX.1-2001, POSIX.1-2008, C89, and C99.
+is specified by POSIX.1-2001, POSIX.1-2008, and C99.
.BR strerror_r ()
is specified by POSIX.1-2001 and POSIX.1-2008.
.\" FIXME . for later review when Issue 8 is one day released...
diff --git a/man3/strfmon.3 b/man3/strfmon.3
index d39561dbf..0a35adaf4 100644
--- a/man3/strfmon.3
+++ b/man3/strfmon.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH strfmon 3 2022-12-15 "Linux man-pages 6.02"
+.TH strfmon 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strfmon, strfmon_l \- convert monetary value to a string
.SH LIBRARY
@@ -53,7 +53,7 @@ Ordinary characters in
are copied to
.I s
without conversion.
-Conversion specifiers are introduced by a \(aq%\(aq
+Conversion specifiers are introduced by a \[aq]%\[aq]
character.
Immediately following it there can be zero or more
of the following flags:
@@ -65,7 +65,7 @@ is used as the numeric fill character (to be used with
a left precision, see below).
When not specified, the space character is used.
.TP
-.B \(ha
+.B \[ha]
Do not use any grouping characters that might be defined
for the current locale.
By default, grouping is enabled.
@@ -118,7 +118,7 @@ The three conversion characters are
.TP
.B %
(In this case, the entire specification must be exactly "%%".)
-Put a \(aq%\(aq character in the result string.
+Put a \[aq]%\[aq] character in the result string.
.TP
.B i
One argument of type
@@ -169,7 +169,7 @@ The call
.PP
.in +4n
.EX
-strfmon(buf, sizeof(buf), "[%\(ha=*#6n] [%=*#6i]",
+strfmon(buf, sizeof(buf), "[%\[ha]=*#6n] [%=*#6i]",
1234.567, 1234.567);
.EE
.in
@@ -196,7 +196,7 @@ locales yield
.in +4n
.EX
[ **1234,57 €] [ **1.234,57 EUR]
-[ Fr. **1234.57] [ CHF **1\(aq234.57]
+[ Fr. **1234.57] [ CHF **1\[aq]234.57]
[ $**1234.57] [ AUD**1,234.57]
[ £**1234.57] [ GBP**1,234.57]
.EE
diff --git a/man3/strfromd.3 b/man3/strfromd.3
index f4e22cbf0..d5efa6fc0 100644
--- a/man3/strfromd.3
+++ b/man3/strfromd.3
@@ -5,12 +5,12 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" References consulted:
-.\" Glibc 2.25 source code and manual.
+.\" glibc 2.25 source code and manual.
.\" C99 standard document.
.\" ISO/IEC TS 18661-1 technical specification.
.\" snprintf and other man.3 pages.
.\"
-.TH strfromd 3 2022-12-15 "Linux man-pages 6.02"
+.TH strfromd 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strfromd, strfromf, strfroml \- convert a floating-point value into
a string
@@ -78,7 +78,7 @@ string.
.SS Format of the format string
The
.I format
-string must start with the character \(aq%\(aq.
+string must start with the character \[aq]%\[aq].
This is followed by an optional precision which starts with the period
character (.), followed by an optional decimal integer.
If no integer is specified after the period character,
diff --git a/man3/strfry.3 b/man3/strfry.3
index d71d5b6e4..a52874c1c 100644
--- a/man3/strfry.3
+++ b/man3/strfry.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:39:43 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strfry 3 2022-12-15 "Linux man-pages 6.02"
+.TH strfry 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
strfry \- randomize a string
.SH LIBRARY
diff --git a/man3/strftime.3 b/man3/strftime.3
index 298110fb2..c16af1341 100644
--- a/man3/strftime.3
+++ b/man3/strftime.3
@@ -12,10 +12,10 @@
.\" Applied fix by Wolfgang Franke, aeb, 961011
.\" Corrected return value, aeb, 970307
.\" Added Single UNIX Spec conversions and %z, aeb/esr, 990329.
-.\" 2005-11-22 mtk, added Glibc Notes covering optional 'flag' and
+.\" 2005-11-22 mtk, added glibc Notes covering optional 'flag' and
.\" 'width' components of conversion specifications.
.\"
-.TH strftime 3 2022-12-15 "Linux man-pages 6.02"
+.TH strftime 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strftime \- format date and time
.SH LIBRARY
@@ -58,7 +58,7 @@ See also
The format specification is a null-terminated string and may contain
special character sequences called
.IR "conversion specifications",
-each of which is introduced by a \(aq%\(aq character and terminated by
+each of which is introduced by a \[aq]%\[aq] character and terminated by
some other character known as a
.IR "conversion specifier character".
All other character sequences are
@@ -82,7 +82,7 @@ The abbreviated name of the day of the week according to the current locale.
(The specific names used in the current locale can be obtained by calling
.BR nl_langinfo (3)
with
-.BR ABDAY_ { 1 \(en 7 }
+.BR ABDAY_ { 1 \[en] 7 }
as an argument.)
.TP
.B %A
@@ -92,7 +92,7 @@ The full name of the day of the week according to the current locale.
(The specific names used in the current locale can be obtained by calling
.BR nl_langinfo (3)
with
-.BR DAY_ { 1 \(en 7 }
+.BR DAY_ { 1 \[en] 7 }
as an argument.)
.TP
.B %b
@@ -102,7 +102,7 @@ The abbreviated month name according to the current locale.
(The specific names used in the current locale can be obtained by calling
.BR nl_langinfo (3)
with
-.BR ABMON_ { 1 \(en 12 }
+.BR ABMON_ { 1 \[en] 12 }
as an argument.)
.TP
.B %B
@@ -112,7 +112,7 @@ The full month name according to the current locale.
(The specific names used in the current locale can be obtained by calling
.BR nl_langinfo (3)
with
-.BR MON_ { 1 \(en 12 }
+.BR MON_ { 1 \[en] 12 }
as an argument.)
.TP
.B %c
@@ -147,7 +147,7 @@ The day of the month as a decimal number (range 01 to 31).
.B %D
Equivalent to
.BR %m/%d/%y .
-(Yecch\(emfor Americans only.
+(Yecch\[em]for Americans only.
Americans should note that in other countries
.B %d/%m/%y
is rather common.
@@ -187,7 +187,7 @@ and
.B %g
Like
.BR %G ,
-but without century, that is, with a 2-digit year (00\(en99). (TZ)
+but without century, that is, with a 2-digit year (00\[en]99). (TZ)
(Calculated from
.IR tm_year ,
.IR tm_yday ,
@@ -430,7 +430,7 @@ format. (TZ)
(Not supported in glibc2.)
.TP
.B %%
-A literal \(aq%\(aq character.
+A literal \[aq]%\[aq] character.
.PP
Some conversion specifications can be modified by preceding the
conversion specifier character by the
@@ -542,7 +542,7 @@ T} Thread safety MT-Safe env locale
.sp 1
.SH STANDARDS
.BR strftime ():
-SVr4, C89, C99.
+SVr4, C99.
.PD 0
.PP
.PD
@@ -602,12 +602,12 @@ of the year 2009
week 01 of ISO\ 8601 year 2010 starts on Monday, 4 January 2010.
Similarly, the first two days of January 2011 are considered to be part
of week 52 of the year 2010.
-.SS Glibc notes
-Glibc provides some extensions for conversion specifications.
+.SS glibc notes
+glibc provides some extensions for conversion specifications.
(These extensions are not specified in POSIX.1-2001, but a few other
systems provide similar features.)
.\" HP-UX and Tru64 also have features like this.
-Between the \(aq%\(aq character and the conversion specifier character,
+Between the \[aq]%\[aq] character and the conversion specifier character,
an optional
.I flag
and field
@@ -633,7 +633,7 @@ Do not pad a numeric result string.
Pad a numeric result string with zeros even if the conversion
specifier character uses space-padding by default.
.TP
-.B \(ha
+.B \[ha]
Convert alphabetic characters in result string to uppercase.
.TP
.B #
@@ -668,7 +668,7 @@ Some buggy versions of
.BR gcc (1)
complain about the use of
.BR %c :
-.IR "warning: \`%c\(aq yields only last 2 digits of year in some locales" .
+.IR "warning: \`%c\[aq] yields only last 2 digits of year in some locales" .
Of course programmers are encouraged to use
.BR %c ,
as it gives the preferred date and time representation.
@@ -724,11 +724,11 @@ are as follows:
.PP
.in +4n
.EX
-.RB "$" " ./a.out \(aq%m\(aq"
+.RB "$" " ./a.out \[aq]%m\[aq]"
Result string is "11"
-.RB "$" " ./a.out \(aq%5m\(aq"
+.RB "$" " ./a.out \[aq]%5m\[aq]"
Result string is "00011"
-.RB "$" " ./a.out \(aq%_5m\(aq"
+.RB "$" " ./a.out \[aq]%_5m\[aq]"
Result string is " 11"
.EE
.in
diff --git a/man3/string.3 b/man3/string.3
index 5d90e0deb..e6516f88f 100644
--- a/man3/string.3
+++ b/man3/string.3
@@ -7,7 +7,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:54:31 1993, Rik Faith (faith@cs.unc.edu)
-.TH STRING 3 2022-12-06 "Linux man-pages 6.02"
+.TH string 3 2023-01-22 "Linux man-pages 6.03"
.SH NAME
stpcpy, strcasecmp, strcat, strchr, strcmp, strcoll, strcpy, strcspn,
strdup, strfry, strlen, strncat, strncmp, strncpy, strncasecmp, strpbrk,
@@ -37,16 +37,12 @@ and
ignoring case.
.TP
.BI "char *index(const char *" s ", int " c );
-Return a pointer to the first occurrence of the character
-.I c
-in the string
-.IR s .
+Identical to
+.BR strchr (3).
.TP
.BI "char *rindex(const char *" s ", int " c );
-Return a pointer to the last occurrence of the character
-.I c
-in the string
-.IR s .
+Identical to
+.BR strrchr (3).
.TP
.B #include <string.h>
.TP
@@ -173,7 +169,7 @@ that are delimited by one of the bytes in
.IR delim .
.TP
.nf
-.BI "size_t strxfrm(char " dst "[restrict ." n "], \
+.BI "size_t strxfrm(char " dest "[restrict ." n "], \
const char " src "[restrict ." n ],
.BI " size_t " n );
.fi
@@ -182,7 +178,7 @@ Transforms
to the current locale and copies the first
.I n
bytes to
-.IR dst .
+.IR dest .
.SS Obsolete functions
.TP
.nf
@@ -204,8 +200,6 @@ strings.
See the individual man pages for descriptions of each function.
.SH SEE ALSO
.BR bstring (3),
-.BR index (3),
-.BR rindex (3),
.BR stpcpy (3),
.BR strcasecmp (3),
.BR strcat (3),
diff --git a/man3/strlen.3 b/man3/strlen.3
index fc8320bf6..11f1f96c9 100644
--- a/man3/strlen.3
+++ b/man3/strlen.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:02:26 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strlen 3 2022-12-15 "Linux man-pages 6.02"
+.TH strlen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strlen \- calculate the length of a string
.SH LIBRARY
@@ -25,7 +25,7 @@ The
.BR strlen ()
function calculates the length of the string pointed to by
.IR s ,
-excluding the terminating null byte (\(aq\e0\(aq).
+excluding the terminating null byte (\[aq]\e0\[aq]).
.SH RETURN VALUE
The
.BR strlen ()
@@ -49,7 +49,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, C11, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, C11, SVr4, 4.3BSD.
.SH NOTES
In cases where the input buffer may not contain
a terminating null byte,
diff --git a/man3/strncat.3 b/man3/strncat.3
index 5b9735bfc..f6437190a 100644
--- a/man3/strncat.3
+++ b/man3/strncat.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH strncat 3 2022-12-21 "Linux man-pages 6.02"
+.TH strncat 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strncat \- concatenate a null-padded character sequence into a string
.SH LIBRARY
@@ -38,7 +38,7 @@ strncat(char *restrict dst, const char *restrict src, size_t sz)
len = strnlen(src, sz);
p = dst + strlen(dst);
p = mempcpy(p, src, len);
- *p = \(aq\e0\(aq;
+ *p = \[aq]\e0\[aq];
return dst;
}
@@ -66,7 +66,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH CAVEATS
The name of this function is confusing.
This function has no relation to
@@ -114,7 +114,7 @@ main(void)
if (dest == NULL)
err(EXIT_FAILURE, "malloc()");
- dest[0] = \(aq\e0\(aq; // There's no 'cpy' function to this 'cat'.
+ dest[0] = \[aq]\e0\[aq]; // There's no 'cpy' function to this 'cat'.
strncat(dest, pre, nitems(pre));
strncat(dest, src, strlen(src) \- strlen(post));
strncat(dest, new_post, nitems(new_post));
diff --git a/man3/strnlen.3 b/man3/strnlen.3
index b8c9a2c37..d6d178665 100644
--- a/man3/strnlen.3
+++ b/man3/strnlen.3
@@ -6,7 +6,7 @@
.\" References consulted:
.\" GNU glibc-2 source code and manual
.\"
-.TH strnlen 3 2022-12-15 "Linux man-pages 6.02"
+.TH strnlen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strnlen \- determine the length of a fixed-size string
.SH LIBRARY
@@ -37,7 +37,7 @@ The
function returns the number of bytes in the string
pointed to by
.IR s ,
-excluding the terminating null byte (\(aq\e0\(aq),
+excluding the terminating null byte (\[aq]\e0\[aq]),
but at most
.IR maxlen .
In doing this,
@@ -57,7 +57,7 @@ if that is less than
.IR maxlen ,
or
.I maxlen
-if there is no null terminating (\(aq\e0\(aq) among the first
+if there is no null terminating (\[aq]\e0\[aq]) among the first
.I maxlen
characters pointed to by
.IR s .
diff --git a/man3/strpbrk.3 b/man3/strpbrk.3
index 3ca6283c1..185f02325 100644
--- a/man3/strpbrk.3
+++ b/man3/strpbrk.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 18:01:24 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strpbrk 3 2022-12-15 "Linux man-pages 6.02"
+.TH strpbrk 3 2023-01-05 "Linux man-pages 6.03"
.SH NAME
strpbrk \- search a string for any of a set of bytes
.SH LIBRARY
@@ -55,11 +55,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH SEE ALSO
-.BR index (3),
.BR memchr (3),
-.BR rindex (3),
.BR strchr (3),
.BR string (3),
.BR strsep (3),
diff --git a/man3/strptime.3 b/man3/strptime.3
index 4b0e1098b..a4c48a652 100644
--- a/man3/strptime.3
+++ b/man3/strptime.3
@@ -9,7 +9,7 @@
.\" Modified, aeb, 2001-08-31
.\" Modified, wharms 2001-11-12, remark on white space and example
.\"
-.TH strptime 3 2022-12-15 "Linux man-pages 6.02"
+.TH strptime 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strptime \- convert a string representation of time to a time tm structure
.SH LIBRARY
@@ -92,10 +92,10 @@ in abbreviated form or the full name.
The date and time representation for the current locale.
.TP
.B %C
-The century number (0\(en99).
+The century number (0\[en]99).
.TP
.BR %d " or " %e
-The day of month (1\(en31).
+The day of month (1\[en]31).
.TP
.B %D
Equivalent to
@@ -108,19 +108,19 @@ The ISO 8601 standard format is
.BR %Y\-%m\-%d .)
.TP
.B %H
-The hour (0\(en23).
+The hour (0\[en]23).
.TP
.B %I
-The hour on a 12-hour clock (1\(en12).
+The hour on a 12-hour clock (1\[en]12).
.TP
.B %j
-The day number in the year (1\(en366).
+The day number in the year (1\[en]366).
.TP
.B %m
-The month number (1\(en12).
+The month number (1\[en]12).
.TP
.B %M
-The minute (0\(en59).
+The minute (0\[en]59).
.TP
.B %n
Arbitrary whitespace.
@@ -145,7 +145,7 @@ Equivalent to
.BR %H:%M .
.TP
.B %S
-The second (0\(en60; 60 may occur for leap seconds;
+The second (0\[en]60; 60 may occur for leap seconds;
earlier also 61 was allowed).
.TP
.B %t
@@ -156,14 +156,14 @@ Equivalent to
.BR %H:%M:%S .
.TP
.B %U
-The week number with Sunday the first day of the week (0\(en53).
+The week number with Sunday the first day of the week (0\[en]53).
The first Sunday of January is the first day of week 1.
.TP
.B %w
-The ordinal number of the day of the week (0\(en6), with Sunday = 0.
+The ordinal number of the day of the week (0\[en]6), with Sunday = 0.
.TP
.B %W
-The week number with Monday the first day of the week (0\(en53).
+The week number with Monday the first day of the week (0\[en]53).
The first Monday of January is the first day of week 1.
.TP
.B %x
@@ -173,10 +173,10 @@ The date, using the locale's date format.
The time, using the locale's time format.
.TP
.B %y
-The year within century (0\(en99).
-When a century is not otherwise specified, values in the range 69\(en99 refer
-to years in the twentieth century (1969\(en1999); values in the
-range 00\(en68 refer to years in the twenty-first century (2000\(en2068).
+The year within century (0\[en]99).
+When a century is not otherwise specified, values in the range 69\[en]99 refer
+to years in the twentieth century (1969\[en]1999); values in the
+range 00\[en]68 refer to years in the twenty-first century (2000\[en]2068).
.TP
.B %Y
The year, including century (for example, 1991).
@@ -305,19 +305,19 @@ field if any of the year, month, or day elements changed.
.\" are defined.
.\" .PP
.\" Before libc 5.4.13 whitespace
-.\" (and the \(aqn\(aq and \(aqt\(aq specifications) was not handled,
-.\" no \(aqE\(aq and \(aqO\(aq locale modifier characters were accepted,
-.\" and the \(aqC\(aq specification was a synonym for the \(aqc\(aq specification.
+.\" (and the \[aq]n\[aq] and \[aq]t\[aq] specifications) was not handled,
+.\" no \[aq]E\[aq] and \[aq]O\[aq] locale modifier characters were accepted,
+.\" and the \[aq]C\[aq] specification was a synonym for the \[aq]c\[aq] specification.
.PP
-The \(aqy\(aq (year in century) specification is taken to specify a year
+The \[aq]y\[aq] (year in century) specification is taken to specify a year
.\" in the 20th century by libc4 and libc5.
.\" It is taken to be a year
-in the range 1950\(en2049 by glibc 2.0.
+in the range 1950\[en]2049 by glibc 2.0.
It is taken to be a year in
-1969\(en2068 since glibc 2.1.
+1969\[en]2068 since glibc 2.1.
.\" In libc4 and libc5 the code for %I is broken (fixed in glibc;
.\" %OI was fixed in glibc 2.2.4).
-.SS Glibc notes
+.SS glibc notes
For reasons of symmetry, glibc tries to support for
.BR strptime ()
the same format characters as for
@@ -334,17 +334,17 @@ the ISO 8601 date format.
.TP
.B %g
The year corresponding to the ISO week number, but without the century
-(0\(en99).
+(0\[en]99).
.TP
.B %G
The year corresponding to the ISO week number.
(For example, 1991.)
.TP
.B %u
-The day of the week as a decimal number (1\(en7, where Monday = 1).
+The day of the week as a decimal number (1\[en]7, where Monday = 1).
.TP
.B %V
-The ISO 8601:1988 week number as a decimal number (1\(en53).
+The ISO 8601:1988 week number as a decimal number (1\[en]53).
If the week (starting on Monday) containing 1 January has four or more days
in the new year, then it is considered week 1.
Otherwise, it is the last week
diff --git a/man3/strsep.3 b/man3/strsep.3
index 83b5b55be..5cf99a450 100644
--- a/man3/strsep.3
+++ b/man3/strsep.3
@@ -11,7 +11,7 @@
.\" Modified Mon Jan 20 12:04:18 1997 by Andries Brouwer (aeb@cwi.nl)
.\" Modified Tue Jan 23 20:23:07 2001 by Andries Brouwer (aeb@cwi.nl)
.\"
-.TH strsep 3 2022-12-15 "Linux man-pages 6.02"
+.TH strsep 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strsep \- extract token from string
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
@@ -49,7 +49,7 @@ in the string
that is delimited by one of the bytes in the string
.IR delim .
This token is terminated by overwriting the delimiter
-with a null byte (\(aq\e0\(aq),
+with a null byte (\[aq]\e0\[aq]),
and
.I *stringp
is updated to point past the token.
@@ -92,15 +92,15 @@ function was introduced as a replacement for
since the latter cannot handle empty fields.
However,
.BR strtok (3)
-conforms to C89/C99 and hence is more portable.
+conforms to C99 and hence is more portable.
.SH BUGS
Be cautious when using this function.
If you do use it, note that:
-.IP \(bu 3
+.IP \[bu] 3
This function modifies its first argument.
-.IP \(bu
+.IP \[bu]
This function cannot be used on constant strings.
-.IP \(bu
+.IP \[bu]
The identity of the delimiting character is lost.
.SH EXAMPLES
The program below is a port of the one found in
@@ -109,7 +109,7 @@ which, however, doesn't discard multiple delimiters or empty tokens:
.PP
.in +4n
.EX
-.RB "$" " ./a.out \(aqa/bbb///cc;xxx:yyy:\(aq \(aq:;\(aq \(aq/\(aq"
+.RB "$" " ./a.out \[aq]a/bbb///cc;xxx:yyy:\[aq] \[aq]:;\[aq] \[aq]/\[aq]"
1: a/bbb///cc
\-\-> a
\-\-> bbb
@@ -154,9 +154,7 @@ main(int argc, char *argv[])
.EE
.\" SRC END
.SH SEE ALSO
-.BR index (3),
.BR memchr (3),
-.BR rindex (3),
.BR strchr (3),
.BR string (3),
.BR strpbrk (3),
diff --git a/man3/strsignal.3 b/man3/strsignal.3
index 53031968a..c25ef2099 100644
--- a/man3/strsignal.3
+++ b/man3/strsignal.3
@@ -9,7 +9,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 17:59:03 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strsignal 3 2022-12-15 "Linux man-pages 6.02"
+.TH strsignal 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strsignal, sigabbrev_np, sigdescr_np, sys_siglist \-
return string describing signal
@@ -50,7 +50,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/strspn.3 b/man3/strspn.3
index 87e6cc869..ef66bf4de 100644
--- a/man3/strspn.3
+++ b/man3/strspn.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 17:57:50 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strspn 3 2022-12-15 "Linux man-pages 6.02"
+.TH strspn 3 2023-01-05 "Linux man-pages 6.03"
.SH NAME
strspn, strcspn \- get length of a prefix substring
.SH LIBRARY
@@ -73,11 +73,9 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH SEE ALSO
-.BR index (3),
.BR memchr (3),
-.BR rindex (3),
.BR strchr (3),
.BR string (3),
.BR strpbrk (3),
diff --git a/man3/strstr.3 b/man3/strstr.3
index ce12e8276..7062e15d0 100644
--- a/man3/strstr.3
+++ b/man3/strstr.3
@@ -11,7 +11,7 @@
.\" Added history, aeb, 980113.
.\" 2005-05-05 mtk: added strcasestr()
.\"
-.TH strstr 3 2022-12-15 "Linux man-pages 6.02"
+.TH strstr 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strstr, strcasestr \- locate a substring
.SH LIBRARY
@@ -35,7 +35,7 @@ function finds the first occurrence of the substring
.I needle
in the string
.IR haystack .
-The terminating null bytes (\(aq\e0\(aq) are not compared.
+The terminating null bytes (\[aq]\e0\[aq]) are not compared.
.PP
The
.BR strcasestr ()
@@ -74,16 +74,14 @@ T} Thread safety MT-Safe locale
.sp 1
.SH STANDARDS
.BR strstr ():
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.PP
The
.BR strcasestr ()
function is a nonstandard extension.
.SH SEE ALSO
-.BR index (3),
.BR memchr (3),
.BR memmem (3),
-.BR rindex (3),
.BR strcasecmp (3),
.BR strchr (3),
.BR string (3),
diff --git a/man3/strtod.3 b/man3/strtod.3
index e2f6373e8..0afc8d359 100644
--- a/man3/strtod.3
+++ b/man3/strtod.3
@@ -15,7 +15,7 @@
.\" (michael@cantor.informatik.rwth-aachen.de)
.\" Added strof, strtold, aeb, 2001-06-07
.\"
-.TH strtod 3 2022-12-15 "Linux man-pages 6.02"
+.TH strtod 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strtod, strtof, strtold \- convert ASCII string to floating-point number
.SH LIBRARY
@@ -59,7 +59,7 @@ representation, respectively.
The expected form of the (initial portion of the) string is
optional leading white space as recognized by
.BR isspace (3),
-an optional plus (\(aq+\(aq) or minus sign (\(aq\-\(aq) and then either
+an optional plus (\[aq]+\[aq]) or minus sign (\[aq]\-\[aq]) and then either
(i) a decimal number, or (ii) a hexadecimal number,
or (iii) an infinity, or (iv) a NAN (not-a-number).
.PP
@@ -67,8 +67,8 @@ A
.I "decimal number"
consists of a nonempty sequence of decimal digits
possibly containing a radix character (decimal point, locale-dependent,
-usually \(aq.\(aq), optionally followed by a decimal exponent.
-A decimal exponent consists of an \(aqE\(aq or \(aqe\(aq, followed by an
+usually \[aq].\[aq]), optionally followed by a decimal exponent.
+A decimal exponent consists of an \[aq]E\[aq] or \[aq]e\[aq], followed by an
optional plus or minus sign, followed by a nonempty sequence of
decimal digits, and indicates multiplication by a power of 10.
.PP
@@ -78,7 +78,7 @@ consists of a "0x" or "0X" followed by a nonempty sequence of
hexadecimal digits possibly containing a radix character,
optionally followed by a binary exponent.
A binary exponent
-consists of a \(aqP\(aq or \(aqp\(aq, followed by an optional
+consists of a \[aq]P\[aq] or \[aq]p\[aq], followed by an optional
plus or minus sign, followed by a nonempty sequence of
decimal digits, and indicates multiplication by a power of 2.
At least one of radix character and binary exponent must be present.
@@ -158,9 +158,6 @@ T} Thread safety MT-Safe locale
.sp 1
.SH STANDARDS
POSIX.1-2001, POSIX.1-2008, C99.
-.PP
-.BR strtod ()
-was also described in C89.
.SH NOTES
Since
0 can legitimately be returned
diff --git a/man3/strtoimax.3 b/man3/strtoimax.3
index 4817e59d3..3f8580ee4 100644
--- a/man3/strtoimax.3
+++ b/man3/strtoimax.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH strtoimax 3 2022-12-15 "Linux man-pages 6.02"
+.TH strtoimax 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
strtoimax, strtoumax \- convert string to integer
.SH LIBRARY
diff --git a/man3/strtok.3 b/man3/strtok.3
index 47db904bf..03fee85a7 100644
--- a/man3/strtok.3
+++ b/man3/strtok.3
@@ -10,7 +10,7 @@
.\" 2005-11-17, mtk: Substantial parts rewritten
.\" 2013-05-19, mtk: added much further detail on the operation of strtok()
.\"
-.TH strtok 3 2022-12-15 "Linux man-pages 6.02"
+.TH strtok 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strtok, strtok_r \- extract tokens from strings
.SH LIBRARY
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
.BR strtok_r ():
.nf
_POSIX_C_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
@@ -88,7 +88,7 @@ to return NULL on the first call.)
.PP
The end of each token is found by scanning forward until either
the next delimiter byte is found or until the
-terminating null byte (\(aq\e0\(aq) is encountered.
+terminating null byte (\[aq]\e0\[aq]) is encountered.
If a delimiter byte is found, it is overwritten with
a null byte to terminate the current token, and
.BR strtok ()
@@ -174,7 +174,7 @@ T} Thread safety MT-Safe
.SH STANDARDS
.TP
.BR strtok ()
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.TP
.BR strtok_r ()
POSIX.1-2001, POSIX.1-2008.
@@ -189,13 +189,13 @@ that is being used to parse
.SH BUGS
Be cautious when using these functions.
If you do use them, note that:
-.IP \(bu 3
+.IP \[bu] 3
These functions modify their first argument.
-.IP \(bu
+.IP \[bu]
These functions cannot be used on constant strings.
-.IP \(bu
+.IP \[bu]
The identity of the delimiting byte is lost.
-.IP \(bu
+.IP \[bu]
The
.BR strtok ()
function uses a static buffer while parsing, so it's not thread safe.
@@ -216,7 +216,7 @@ An example of the output produced by this program is the following:
.PP
.in +4n
.EX
-.RB "$" " ./a.out \(aqa/bbb///cc;xxx:yyy:\(aq \(aq:;\(aq \(aq/\(aq"
+.RB "$" " ./a.out \[aq]a/bbb///cc;xxx:yyy:\[aq] \[aq]:;\[aq] \[aq]/\[aq]"
1: a/bbb///cc
\-\-> a
\-\-> bbb
@@ -272,9 +272,7 @@ Another example program using
can be found in
.BR getaddrinfo_a (3).
.SH SEE ALSO
-.BR index (3),
.BR memchr (3),
-.BR rindex (3),
.BR strchr (3),
.BR string (3),
.BR strpbrk (3),
diff --git a/man3/strtol.3 b/man3/strtol.3
index 257142237..42f181bfb 100644
--- a/man3/strtol.3
+++ b/man3/strtol.3
@@ -10,7 +10,7 @@
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:53:39 1993 by Rik Faith (faith@cs.unc.edu)
.\" Added correction due to nsd@bbc.com (Nick Duffek) - aeb, 950610
-.TH strtol 3 2022-12-15 "Linux man-pages 6.02"
+.TH strtol 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strtol, strtoll, strtoq \- convert a string to a long integer
.SH LIBRARY
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
.BR strtoll ():
.nf
_ISOC99_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
The
@@ -49,7 +49,7 @@ which must be between 2 and 36 inclusive, or be the special value 0.
The string may begin with an arbitrary amount of white space (as
determined by
.BR isspace (3))
-followed by a single optional \(aq+\(aq or \(aq\-\(aq sign.
+followed by a single optional \[aq]+\[aq] or \[aq]\-\[aq] sign.
If
.I base
is zero or 16, the string may then include a
@@ -57,16 +57,16 @@ is zero or 16, the string may then include a
zero
.I base
is taken as 10 (decimal) unless the next character
-is \(aq0\(aq, in which case it is taken as 8 (octal).
+is \[aq]0\[aq], in which case it is taken as 8 (octal).
.PP
The remainder of the string is converted to a
.I long
value
in the obvious manner, stopping at the first character which is not a
valid digit in the given base.
-(In bases above 10, the letter \(aqA\(aq in
-either uppercase or lowercase represents 10, \(aqB\(aq represents 11, and so
-forth, with \(aqZ\(aq representing 35.)
+(In bases above 10, the letter \[aq]A\[aq] in
+either uppercase or lowercase represents 10, \[aq]B\[aq] represents 11, and so
+forth, with \[aq]Z\[aq] representing 35.)
.PP
If
.I endptr
@@ -85,9 +85,9 @@ in
(and returns 0).
In particular, if
.I *nptr
-is not \(aq\e0\(aq but
+is not \[aq]\e0\[aq] but
.I **endptr
-is \(aq\e0\(aq on return, the entire string is valid.
+is \[aq]\e0\[aq] on return, the entire string is valid.
.PP
The
.BR strtoll ()
@@ -161,7 +161,7 @@ T} Thread safety MT-Safe locale
.sp 1
.SH STANDARDS
.BR strtol ():
-POSIX.1-2001, POSIX.1-2008, C89, C99 SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.PP
.BR strtoll ():
POSIX.1-2001, POSIX.1-2008, C99.
@@ -222,14 +222,14 @@ Some examples of the results produced by this program are the following:
.EX
.RB "$" " ./a.out 123"
strtol() returned 123
-.RB "$" " ./a.out \(aq 123\(aq"
+.RB "$" " ./a.out \[aq] 123\[aq]"
strtol() returned 123
.RB "$" " ./a.out 123abc"
strtol() returned 123
Further characters after number: "abc"
.RB "$" " ./a.out 123abc 55"
strtol: Invalid argument
-.RB "$" " ./a.out \(aq\(aq"
+.RB "$" " ./a.out \[aq]\[aq]"
No digits were found
.RB "$" " ./a.out 4000000000"
strtol: Numerical result out of range
@@ -278,7 +278,7 @@ main(int argc, char *argv[])
printf("strtol() returned %ld\en", val);
- if (*endptr != \(aq\e0\(aq) /* Not necessarily an error... */
+ if (*endptr != \[aq]\e0\[aq]) /* Not necessarily an error... */
printf("Further characters after number: \e"%s\e"\en", endptr);
exit(EXIT_SUCCESS);
diff --git a/man3/strtoul.3 b/man3/strtoul.3
index 1cbfe3349..3c47b67be 100644
--- a/man3/strtoul.3
+++ b/man3/strtoul.3
@@ -11,7 +11,7 @@
.\" Fixed typo, aeb, 950823
.\" 2002-02-22, joey, mihtjel: Added strtoull()
.\"
-.TH strtoul 3 2022-12-15 "Linux man-pages 6.02"
+.TH strtoul 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strtoul, strtoull, strtouq \- convert a string to an unsigned long integer
.SH LIBRARY
@@ -35,7 +35,7 @@ Feature Test Macro Requirements for glibc (see
.BR strtoull ():
.nf
_ISOC99_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
The
@@ -54,7 +54,7 @@ the special value 0.
The string may begin with an arbitrary amount of white space (as
determined by
.BR isspace (3))
-followed by a single optional \(aq+\(aq or \(aq\-\(aq
+followed by a single optional \[aq]+\[aq] or \[aq]\-\[aq]
sign.
If
.I base
@@ -63,16 +63,16 @@ is zero or 16, the string may then include a
zero
.I base
is taken as 10 (decimal) unless the next character
-is \(aq0\(aq, in which case it is taken as 8 (octal).
+is \[aq]0\[aq], in which case it is taken as 8 (octal).
.PP
The remainder of the string is converted to an
.I "unsigned long"
value in the obvious manner,
stopping at the first character which is not a
valid digit in the given base.
-(In bases above 10, the letter \(aqA\(aq in
-either uppercase or lowercase represents 10, \(aqB\(aq represents 11, and so
-forth, with \(aqZ\(aq representing 35.)
+(In bases above 10, the letter \[aq]A\[aq] in
+either uppercase or lowercase represents 10, \[aq]B\[aq] represents 11, and so
+forth, with \[aq]Z\[aq] representing 35.)
.PP
If
.I endptr
@@ -91,9 +91,9 @@ in
(and returns 0).
In particular, if
.I *nptr
-is not \(aq\e0\(aq but
+is not \[aq]\e0\[aq] but
.I **endptr
-is \(aq\e0\(aq on return, the entire string is valid.
+is \[aq]\e0\[aq] on return, the entire string is valid.
.PP
The
.BR strtoull ()
@@ -161,7 +161,7 @@ T} Thread safety MT-Safe locale
.sp 1
.SH STANDARDS
.BR strtoul ():
-POSIX.1-2001, POSIX.1-2008, C89, C99 SVr4.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4.
.PP
.BR strtoull ():
POSIX.1-2001, POSIX.1-2008, C99.
diff --git a/man3/strverscmp.3 b/man3/strverscmp.3
index fabfe52b3..39d7b20cf 100644
--- a/man3/strverscmp.3
+++ b/man3/strverscmp.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH strverscmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH strverscmp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
strverscmp \- compare two version strings
.SH LIBRARY
diff --git a/man3/strxfrm.3 b/man3/strxfrm.3
index ff0f015ea..4766001e4 100644
--- a/man3/strxfrm.3
+++ b/man3/strxfrm.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sun Jul 25 10:41:28 1993 by Rik Faith (faith@cs.unc.edu)
-.TH strxfrm 3 2022-12-15 "Linux man-pages 6.02"
+.TH strxfrm 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
strxfrm \- string transformation
.SH LIBRARY
@@ -52,7 +52,7 @@ function returns the number of bytes required to
store the transformed string in
.I dest
excluding the
-terminating null byte (\(aq\e0\(aq).
+terminating null byte (\[aq]\e0\[aq]).
If the value returned is
.I n
or more, the
@@ -77,9 +77,8 @@ T} Thread safety MT-Safe locale
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
.SH SEE ALSO
-.BR bcmp (3),
.BR memcmp (3),
.BR setlocale (3),
.BR strcasecmp (3),
diff --git a/man3/swab.3 b/man3/swab.3
index d2a46472d..85a487ac8 100644
--- a/man3/swab.3
+++ b/man3/swab.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Sat Jul 24 17:52:15 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2001-12-15, aeb
-.TH swab 3 2022-12-15 "Linux man-pages 6.02"
+.TH swab 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
swab \- swap adjacent bytes
.SH LIBRARY
diff --git a/man3/sysconf.3 b/man3/sysconf.3
index 27d3957e0..e6170aa82 100644
--- a/man3/sysconf.3
+++ b/man3/sysconf.3
@@ -5,7 +5,7 @@
.\"
.\" Modified Sat Jul 24 17:51:42 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Tue Aug 17 11:42:20 1999 by Ariel Scolnicov (ariels@compugen.co.il)
-.TH sysconf 3 2022-12-15 "Linux man-pages 6.02"
+.TH sysconf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sysconf \- get configuration information at run time
.SH LIBRARY
@@ -55,7 +55,7 @@ If it is defined to a value other than \-1 or 0, then the option is
supported.
Usually the value (such as 200112L) indicates the year and month
of the POSIX revision describing the option.
-Glibc uses the value 1
+glibc uses the value 1
to indicate support as long as the POSIX revision has not been published yet.
.\" and 999 to indicate support for options no longer present in the latest
.\" standard. (?)
@@ -311,7 +311,7 @@ See also
The return value of
.BR sysconf ()
is one of the following:
-.IP \(bu 3
+.IP \[bu] 3
On error, \-1 is returned and
.I errno
is set to indicate the error
@@ -320,7 +320,7 @@ is set to indicate the error
indicating that
.I name
is invalid).
-.IP \(bu
+.IP \[bu]
If
.I name
corresponds to a maximum or minimum limit, and that limit is indeterminate,
@@ -332,13 +332,13 @@ is not changed.
to zero before the call, and then check whether
.I errno
is nonzero when \-1 is returned.)
-.IP \(bu
+.IP \[bu]
If
.I name
corresponds to an option,
a positive value is returned if the option is supported,
and \-1 is returned if the option is not supported.
-.IP \(bu
+.IP \[bu]
Otherwise,
the current value of the option or limit is returned.
This value will not be more restrictive than
diff --git a/man3/syslog.3 b/man3/syslog.3
index 785d74e59..6552fb12e 100644
--- a/man3/syslog.3
+++ b/man3/syslog.3
@@ -15,7 +15,7 @@
.\" Modified 13 Dec 2001, Martin Schulze <joey@infodrom.org>
.\" Modified 3 Jan 2002, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH syslog 3 2022-12-15 "Linux man-pages 6.02"
+.TH syslog 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
closelog, openlog, syslog, vsyslog \- send messages to the system logger
.SH LIBRARY
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/system.3 b/man3/system.3
index da6073000..a3b8932a6 100644
--- a/man3/system.3
+++ b/man3/system.3
@@ -9,7 +9,7 @@
.\" Modified 14 May 2001, 23 Sep 2001 by aeb
.\" 2004-12-20, mtk
.\"
-.TH system 3 2022-12-15 "Linux man-pages 6.02"
+.TH system 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
system \- execute a shell command
.SH LIBRARY
@@ -62,23 +62,23 @@ returns a status indicating whether a shell is available on the system.
The return value of
.BR system ()
is one of the following:
-.IP \(bu 3
+.IP \[bu] 3
If
.I command
is NULL, then a nonzero value if a shell is available,
or 0 if no shell is available.
-.IP \(bu
+.IP \[bu]
If a child process could not be created,
or its status could not be retrieved,
the return value is \-1 and
.I errno
is set to indicate the error.
-.IP \(bu
+.IP \[bu]
If a shell could not be executed in the child process,
then the return value is as though the child shell terminated by calling
.BR _exit (2)
with the status 127.
-.IP \(bu
+.IP \[bu]
If all system calls succeed,
then the return value is the termination status of the child shell
used to execute
@@ -119,7 +119,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99.
+POSIX.1-2001, POSIX.1-2008, C99.
.SH NOTES
.BR system ()
provides simplicity and convenience:
@@ -241,7 +241,7 @@ Such risks are especially grave when using
from a privileged program.
.SH BUGS
.\" [BUG 211029](https://bugzilla.kernel.org/show_bug.cgi?id=211029)
-.\" [Glibc bug](https://sourceware.org/bugzilla/show_bug.cgi?id=27143)
+.\" [glibc bug](https://sourceware.org/bugzilla/show_bug.cgi?id=27143)
.\" [POSIX bug](https://www.austingroupbugs.net/view.php?id=1440)
If the command name starts with a hyphen,
.BR sh (1)
diff --git a/man3/sysv_signal.3 b/man3/sysv_signal.3
index d59851d1e..1928f108a 100644
--- a/man3/sysv_signal.3
+++ b/man3/sysv_signal.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sysv_signal 3 2022-12-15 "Linux man-pages 6.02"
+.TH sysv_signal 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sysv_signal \- signal handling with System V semantics
.SH LIBRARY
diff --git a/man3/tailq.3 b/man3/tailq.3
index 6587e0c0f..e534479a0 100644
--- a/man3/tailq.3
+++ b/man3/tailq.3
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
.\"
-.TH TAILQ 3 2022-10-30 "Linux man-pages 6.02"
+.TH TAILQ 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
TAILQ_CONCAT,
TAILQ_EMPTY,
diff --git a/man3/tan.3 b/man3/tan.3
index beb6df57f..a42c3de48 100644
--- a/man3/tan.3
+++ b/man3/tan.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH tan 3 2022-12-15 "Linux man-pages 6.02"
+.TH tan 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
tan, tanf, tanl \- tangent function
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the tangent of
@@ -129,7 +129,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH BUGS
Before glibc 2.10, the glibc implementation did not set
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=6782
diff --git a/man3/tanh.3 b/man3/tanh.3
index 153f6af90..2977e359a 100644
--- a/man3/tanh.3
+++ b/man3/tanh.3
@@ -13,7 +13,7 @@
.\" Modified 2002-07-27 by Walter Harms
.\" (walter.harms@informatik.uni-oldenburg.de)
.\"
-.TH tanh 3 2022-12-15 "Linux man-pages 6.02"
+.TH tanh 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
tanh, tanhf, tanhl \- hyperbolic tangent function
.SH LIBRARY
@@ -38,7 +38,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the hyperbolic tangent of
@@ -96,7 +96,7 @@ C99, POSIX.1-2001, POSIX.1-2008.
The variant returning
.I double
also conforms to
-SVr4, 4.3BSD, C89.
+SVr4, 4.3BSD.
.SH SEE ALSO
.BR acosh (3),
.BR asinh (3),
diff --git a/man3/tcgetpgrp.3 b/man3/tcgetpgrp.3
index 44b937e33..83bdaac34 100644
--- a/man3/tcgetpgrp.3
+++ b/man3/tcgetpgrp.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH tcgetpgrp 3 2022-12-15 "Linux man-pages 6.02"
+.TH tcgetpgrp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
tcgetpgrp, tcsetpgrp \- get and set terminal foreground process group
.SH LIBRARY
diff --git a/man3/tcgetsid.3 b/man3/tcgetsid.3
index 21b0009dc..8e78838b6 100644
--- a/man3/tcgetsid.3
+++ b/man3/tcgetsid.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH tcgetsid 3 2022-12-15 "Linux man-pages 6.02"
+.TH tcgetsid 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
tcgetsid \- get session ID
.SH LIBRARY
diff --git a/man3/telldir.3 b/man3/telldir.3
index eb00aacf0..16282f029 100644
--- a/man3/telldir.3
+++ b/man3/telldir.3
@@ -8,7 +8,7 @@
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\" 386BSD man pages
.\" Modified Sat Jul 24 17:48:42 1993 by Rik Faith (faith@cs.unc.edu)
-.TH telldir 3 2022-12-15 "Linux man-pages 6.02"
+.TH telldir 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
telldir \- return current location in directory stream
.SH LIBRARY
@@ -29,8 +29,8 @@ Feature Test Macro Requirements for glibc (see
.BR telldir ():
.nf
_XOPEN_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3/tempnam.3 b/man3/tempnam.3
index 15ea26e3d..b736285f6 100644
--- a/man3/tempnam.3
+++ b/man3/tempnam.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH tempnam 3 2022-12-15 "Linux man-pages 6.02"
+.TH tempnam 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
tempnam \- create a name for a temporary file
.SH LIBRARY
@@ -25,7 +25,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/termios.3 b/man3/termios.3
index f20305d4a..b6163c1b4 100644
--- a/man3/termios.3
+++ b/man3/termios.3
@@ -19,7 +19,7 @@
.\" Enhanced the discussion of "raw" mode for cfmakeraw().
.\" Document CMSPAR.
.\"
-.TH termios 3 2022-12-15 "Linux man-pages 6.02"
+.TH termios 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \-
@@ -61,7 +61,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
@@ -107,7 +107,7 @@ queues to be flushed, and if the terminal is the controlling
terminal of a foreground process group, it will cause a
\fBSIGINT\fP to be sent to this foreground process group.
When neither \fBIGNBRK\fP nor \fBBRKINT\fP are set, a BREAK
-reads as a null byte (\(aq\e0\(aq), except when \fBPARMRK\fP is set,
+reads as a null byte (\[aq]\e0\[aq]), except when \fBPARMRK\fP is set,
in which case it reads as the sequence \e377 \e0 \e0.
.TP
.B IGNPAR
@@ -197,7 +197,7 @@ Send fill characters for a delay, rather than using a timed delay.
.TP
.B OFDEL
Fill character is ASCII DEL (0177).
-If unset, fill character is ASCII NUL (\(aq\e0\(aq).
+If unset, fill character is ASCII NUL (\[aq]\e0\[aq]).
(Not implemented on Linux.)
.TP
.B NLDLY
@@ -405,11 +405,11 @@ If \fBICANON\fP is also set, echo the NL character even if ECHO is not set.
.B ECHOCTL
(not in POSIX) If \fBECHO\fP is also set,
terminal special characters other than
-TAB, NL, START, and STOP are echoed as \fB\(haX\fP,
+TAB, NL, START, and STOP are echoed as \fB\[ha]X\fP,
where X is the character with
ASCII code 0x40 greater than the special character.
For example, character
-0x08 (BS) is echoed as \fB\(haH\fP.
+0x08 (BS) is echoed as \fB\[ha]H\fP.
[requires
.B _BSD_SOURCE
or
@@ -702,14 +702,14 @@ By default,
is set.
.PP
In canonical mode:
-.IP \(bu 3
+.IP \[bu] 3
Input is made available line by line.
An input line is available when one of the line delimiters
is typed (NL, EOL, EOL2; or EOF at the start of line).
Except in the case of EOF, the line delimiter is included
in the buffer returned by
.BR read (2).
-.IP \(bu
+.IP \[bu]
Line editing is enabled (ERASE, KILL;
and if the
.B IEXTEN
@@ -722,7 +722,7 @@ requested fewer bytes than are available in the current line of input,
then only as many bytes as requested are read,
and the remaining characters will be available for a future
.BR read (2).
-.IP \(bu
+.IP \[bu]
The maximum line length is 4096 chars
(including the terminating newline character);
lines longer than 4096 chars are truncated.
@@ -786,11 +786,11 @@ the timer is restarted after each further byte is received.
.BR read (2)
returns when any of the following conditions is met:
.RS
-.IP \(bu 3
+.IP \[bu] 3
MIN bytes have been received.
-.IP \(bu
+.IP \[bu]
The interbyte timer expires.
-.IP \(bu
+.IP \[bu]
The number of bytes requested by
.BR read (2)
has been received.
@@ -836,11 +836,11 @@ The terminal attributes are set as follows:
.PP
.in +4n
.EX
-termios_p\->c_iflag &= \(ti(IGNBRK | BRKINT | PARMRK | ISTRIP
+termios_p\->c_iflag &= \[ti](IGNBRK | BRKINT | PARMRK | ISTRIP
| INLCR | IGNCR | ICRNL | IXON);
-termios_p\->c_oflag &= \(tiOPOST;
-termios_p\->c_lflag &= \(ti(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
-termios_p\->c_cflag &= \(ti(CSIZE | PARENB);
+termios_p\->c_oflag &= \[ti]OPOST;
+termios_p\->c_lflag &= \[ti](ECHO | ECHONL | ICANON | ISIG | IEXTEN);
+termios_p\->c_cflag &= \[ti](CSIZE | PARENB);
termios_p\->c_cflag |= CS8;
.EE
.in
diff --git a/man3/tgamma.3 b/man3/tgamma.3
index 483471b45..b13d88580 100644
--- a/man3/tgamma.3
+++ b/man3/tgamma.3
@@ -9,7 +9,7 @@
.\" Modified 2004-11-15, fixed error noted by Fabian Kreutz
.\" <kreutz@dbs.uni-hannover.de>
.\"
-.TH tgamma 3 2022-12-15 "Linux man-pages 6.02"
+.TH tgamma 3 2023-02-10 "Linux man-pages 6.03"
.SH NAME
tgamma, tgammaf, tgammal \- true gamma function
.SH LIBRARY
@@ -42,7 +42,7 @@ These functions calculate the Gamma function of
The Gamma function is defined by
.PP
.RS
-Gamma(x) = integral from 0 to infinity of t^(x\-1) e^\-t dt
+Gamma(x) = integral from 0 to infinity of t\[ha](x\-1) e\[ha]\-t dt
.RE
.PP
It is defined for every real number except for nonpositive integers.
diff --git a/man3/timegm.3 b/man3/timegm.3
index afd927c5e..b2e898c53 100644
--- a/man3/timegm.3
+++ b/man3/timegm.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH timegm 3 2022-12-15 "Linux man-pages 6.02"
+.TH timegm 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
timegm, timelocal \- inverses of gmtime and localtime
.SH LIBRARY
@@ -27,7 +27,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/timeradd.3 b/man3/timeradd.3
index 5a4924d45..b18ac440f 100644
--- a/man3/timeradd.3
+++ b/man3/timeradd.3
@@ -4,7 +4,7 @@
.\"
.\" 2007-07-31, mtk, Created
.\"
-.TH timeradd 3 2022-10-30 "Linux man-pages 6.02"
+.TH timeradd 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
timeradd, timersub, timercmp, timerclear, timerisset \- timeval operations
.SH LIBRARY
@@ -34,7 +34,7 @@ All functions shown above:
.nf
Since glibc 2.19:
_DEFAULT_SOURCE
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/tmpfile.3 b/man3/tmpfile.3
index 80003fce9..30493fa7c 100644
--- a/man3/tmpfile.3
+++ b/man3/tmpfile.3
@@ -9,7 +9,7 @@
.\" 386BSD man pages
.\" Modified Sat Jul 24 17:46:57 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2001-11-17, aeb
-.TH tmpfile 3 2022-12-15 "Linux man-pages 6.02"
+.TH tmpfile 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
tmpfile \- create a temporary file
.SH LIBRARY
@@ -78,7 +78,7 @@ T} Thread safety MT-Safe
.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD, SUSv2.
+POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD, SUSv2.
.SH NOTES
POSIX.1-2001 specifies:
an error message may be written to
@@ -89,7 +89,7 @@ cannot be opened.
The standard does not specify the directory that
.BR tmpfile ()
will use.
-Glibc will try the path prefix
+glibc will try the path prefix
.I P_tmpdir
defined
in
diff --git a/man3/tmpnam.3 b/man3/tmpnam.3
index ce4336f8e..5198e2e4f 100644
--- a/man3/tmpnam.3
+++ b/man3/tmpnam.3
@@ -5,7 +5,7 @@
.\"
.\" 2003-11-15, aeb, added tmpnam_r
.\"
-.TH tmpnam 3 2022-12-15 "Linux man-pages 6.02"
+.TH tmpnam 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
tmpnam, tmpnam_r \- create a name for a temporary file
.SH LIBRARY
@@ -107,7 +107,7 @@ T} Thread safety MT-Safe
.sp 1
.SH STANDARDS
.BR tmpnam ():
-SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
+SVr4, 4.3BSD, C99, POSIX.1-2001.
POSIX.1-2008 marks
.BR tmpnam ()
as obsolete.
diff --git a/man3/toascii.3 b/man3/toascii.3
index 84fa35264..7f3f765af 100644
--- a/man3/toascii.3
+++ b/man3/toascii.3
@@ -5,7 +5,7 @@
.\"
.\" Added BUGS section, aeb, 950919
.\"
-.TH toascii 3 2022-12-15 "Linux man-pages 6.02"
+.TH toascii 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
toascii \- convert character to ASCII
.SH LIBRARY
@@ -26,8 +26,8 @@ Feature Test Macro Requirements for glibc (see
.BR toascii ():
.nf
_XOPEN_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
.BR toascii ()
diff --git a/man3/toupper.3 b/man3/toupper.3
index fe90cca90..7fc48ed41 100644
--- a/man3/toupper.3
+++ b/man3/toupper.3
@@ -6,7 +6,7 @@
.\"
.\" Modified Sat Jul 24 17:45:39 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2000-02-13 by Nicolás Lichtmaier <nick@debian.org>
-.TH toupper 3 2022-12-15 "Linux man-pages 6.02"
+.TH toupper 3 2022-12-29 "Linux man-pages 6.03"
.SH NAME
toupper, tolower, toupper_l, tolower_l \- convert uppercase or lowercase
.SH LIBRARY
@@ -114,7 +114,7 @@ T} Thread safety MT-Safe
.SH STANDARDS
.BR toupper (),
.BR tolower ():
-C89, C99, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
+C99, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
.PP
.BR toupper_l (),
.BR tolower_l ():
diff --git a/man3/towctrans.3 b/man3/towctrans.3
index 26ee35e45..6ab80489f 100644
--- a/man3/towctrans.3
+++ b/man3/towctrans.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH towctrans 3 2022-12-15 "Linux man-pages 6.02"
+.TH towctrans 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
towctrans \- wide-character transliteration
.SH LIBRARY
diff --git a/man3/towlower.3 b/man3/towlower.3
index a9716b9f9..0e0da0680 100644
--- a/man3/towlower.3
+++ b/man3/towlower.3
@@ -10,7 +10,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH towlower 3 2022-12-15 "Linux man-pages 6.02"
+.TH towlower 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
towlower, towlower_l \- convert a wide character to lowercase
.SH LIBRARY
diff --git a/man3/towupper.3 b/man3/towupper.3
index 0832e3dbf..b7a308842 100644
--- a/man3/towupper.3
+++ b/man3/towupper.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH towupper 3 2022-12-15 "Linux man-pages 6.02"
+.TH towupper 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
towupper, towupper_l \- convert a wide character to uppercase
.SH LIBRARY
diff --git a/man3/trunc.3 b/man3/trunc.3
index b005d0544..66571890f 100644
--- a/man3/trunc.3
+++ b/man3/trunc.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH trunc 3 2022-12-15 "Linux man-pages 6.02"
+.TH trunc 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
trunc, truncf, truncl \- round to integer, toward zero
.SH LIBRARY
diff --git a/man3/tsearch.3 b/man3/tsearch.3
index 0190c84aa..9b72c998c 100644
--- a/man3/tsearch.3
+++ b/man3/tsearch.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH tsearch 3 2022-12-15 "Linux man-pages 6.02"
+.TH tsearch 3 2023-01-26 "Linux man-pages 6.03"
.SH NAME
tsearch, tfind, tdelete, twalk, twalk_r, tdestroy \- manage a binary search tree
.SH LIBRARY
@@ -309,16 +309,17 @@ action(const void *nodep, VISIT which, int depth)
int
main(void)
{
- int **val;
+ int *ptr;
+ int **val;
srand(time(NULL));
for (unsigned int i = 0; i < 12; i++) {
- int *ptr = xmalloc(sizeof(*ptr));
+ ptr = xmalloc(sizeof(*ptr));
*ptr = rand() & 0xff;
val = tsearch(ptr, &root, compare);
if (val == NULL)
exit(EXIT_FAILURE);
- else if (*val != ptr)
+ if (*val != ptr)
free(ptr);
}
twalk(root, action);
diff --git a/man3/ttyname.3 b/man3/ttyname.3
index bcc25c7da..1354ea530 100644
--- a/man3/ttyname.3
+++ b/man3/ttyname.3
@@ -6,7 +6,7 @@
.\" Modified 2001-12-13, Martin Schulze <joey@infodrom.org>
.\" Added ttyname_r, aeb, 2002-07-20
.\"
-.TH ttyname 3 2022-12-15 "Linux man-pages 6.02"
+.TH ttyname 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ttyname, ttyname_r \- return name of a terminal
.SH LIBRARY
diff --git a/man3/ttyslot.3 b/man3/ttyslot.3
index 471eccc8f..ffebf6e6d 100644
--- a/man3/ttyslot.3
+++ b/man3/ttyslot.3
@@ -6,7 +6,7 @@
.\" This replaces an earlier man page written by Walter Harms
.\" <walter.harms@informatik.uni-oldenburg.de>.
.\"
-.TH ttyslot 3 2022-12-15 "Linux man-pages 6.02"
+.TH ttyslot 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ttyslot \- find the slot of the current user's terminal in some file
.SH LIBRARY
@@ -30,7 +30,7 @@ Feature Test Macro Requirements for glibc (see
_DEFAULT_SOURCE
From glibc 2.20 to glibc 2.23:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
.fi
.SH DESCRIPTION
@@ -47,22 +47,22 @@ in UNIX\ V6, that was read by the
.BR init (1)
program to find out what to do with each terminal line.
Each line consisted of three characters.
-The first character was either \(aq0\(aq or \(aq1\(aq,
-where \(aq0\(aq meant "ignore".
-The second character denoted the terminal: \(aq8\(aq stood for "/dev/tty8".
+The first character was either \[aq]0\[aq] or \[aq]1\[aq],
+where \[aq]0\[aq] meant "ignore".
+The second character denoted the terminal: \[aq]8\[aq] stood for "/dev/tty8".
The third character was an argument to
.BR getty (8)
-indicating the sequence of line speeds to try (\(aq\-\(aq was: start trying
+indicating the sequence of line speeds to try (\[aq]\-\[aq] was: start trying
110 baud).
Thus a typical line was "18\-".
-A hang on some line was solved by changing the \(aq1\(aq to a \(aq0\(aq,
+A hang on some line was solved by changing the \[aq]1\[aq] to a \[aq]0\[aq],
signaling init, changing back again, and signaling init again.
.PP
In UNIX\ V7 the format was changed: here the second character
was the argument to
.BR getty (8)
-indicating the sequence of line speeds to try (\(aq0\(aq was: cycle through
-300-1200-150-110 baud; \(aq4\(aq was for the on-line console DECwriter)
+indicating the sequence of line speeds to try (\[aq]0\[aq] was: cycle through
+300-1200-150-110 baud; \[aq]4\[aq] was for the on-line console DECwriter)
while the rest of the line contained the name of the tty.
Thus a typical line was "14console".
.PP
diff --git a/man3/tzset.3 b/man3/tzset.3
index f39a8efa0..a2770e577 100644
--- a/man3/tzset.3
+++ b/man3/tzset.3
@@ -11,7 +11,7 @@
.\" Modified 2001-11-13, aeb
.\" Modified 2004-12-01 mtk and Martin Schulze <joey@infodrom.org>
.\"
-.TH tzset 3 2022-12-15 "Linux man-pages 6.02"
+.TH tzset 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
tzset, tzname, timezone, daylight \- initialize time conversion information
.SH LIBRARY
@@ -47,8 +47,8 @@ Feature Test Macro Requirements for glibc (see
.IR daylight :
.nf
_XOPEN_SOURCE
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.SH DESCRIPTION
The
@@ -169,7 +169,7 @@ be interpreted, then Coordinated Universal Time (UTC) is used.
If \fIfilespec\fP is given, it specifies another
.BR tzfile (5)-format
file to read the timezone information from.
-If \fIfilespec\fP does not begin with a \(aq/\(aq, the file specification is
+If \fIfilespec\fP does not begin with a \[aq]/\[aq], the file specification is
relative to the system timezone directory.
If the colon is omitted each
of the above \fBTZ\fP formats will be tried.
diff --git a/man3/ualarm.3 b/man3/ualarm.3
index 51474049f..981eb85ae 100644
--- a/man3/ualarm.3
+++ b/man3/ualarm.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ualarm 3 2022-12-15 "Linux man-pages 6.02"
+.TH ualarm 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ualarm \- schedule signal after given number of microseconds
.SH LIBRARY
@@ -25,8 +25,8 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
diff --git a/man3/ulimit.3 b/man3/ulimit.3
index 0f1a8a8a8..075672fde 100644
--- a/man3/ulimit.3
+++ b/man3/ulimit.3
@@ -5,7 +5,7 @@
.\"
.\" Moved to man3, aeb, 980612
.\"
-.TH ulimit 3 2022-12-15 "Linux man-pages 6.02"
+.TH ulimit 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ulimit \- get and set user limits
.SH LIBRARY
diff --git a/man3/undocumented.3 b/man3/undocumented.3
index 7b5ff8bc5..d3b8b6816 100644
--- a/man3/undocumented.3
+++ b/man3/undocumented.3
@@ -7,7 +7,7 @@
.\" 2004-10-31, aeb, changed maintainer address, updated list
.\" 2015-04-20, william@tuffbizz.com, updated list
.\"
-.TH undocumented 3 2022-10-30 "Linux man-pages 6.02"
+.TH undocumented 3 2022-10-30 "Linux man-pages 6.03"
.SH NAME
undocumented \- undocumented library functions
.SH SYNOPSIS
diff --git a/man3/ungetwc.3 b/man3/ungetwc.3
index f79477183..0f6b9781e 100644
--- a/man3/ungetwc.3
+++ b/man3/ungetwc.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH ungetwc 3 2022-12-15 "Linux man-pages 6.02"
+.TH ungetwc 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
ungetwc \- push back a wide character onto a FILE stream
.SH LIBRARY
diff --git a/man3/unlocked_stdio.3 b/man3/unlocked_stdio.3
index 74e22670a..148e01da7 100644
--- a/man3/unlocked_stdio.3
+++ b/man3/unlocked_stdio.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH UNLOCKED_STDIO 3 2022-12-15 "Linux man-pages 6.02"
+.TH unlocked_stdio 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
getc_unlocked, getchar_unlocked, putc_unlocked,
putchar_unlocked \- nonlocking stdio functions
@@ -67,9 +67,9 @@ Feature Test Macro Requirements for glibc (see
.BR putc_unlocked (),
.BR putchar_unlocked ():
.nf
- /* Glibc >= 2.24: */ _POSIX_C_SOURCE >= 199309L
- || /* Glibc <= 2.23: */ _POSIX_C_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ /* glibc >= 2.24: */ _POSIX_C_SOURCE >= 199309L
+ || /* glibc <= 2.23: */ _POSIX_C_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.PP
.BR clearerr_unlocked (),
@@ -82,8 +82,8 @@ Feature Test Macro Requirements for glibc (see
.BR fread_unlocked (),
.BR fwrite_unlocked ():
.nf
- /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.PP
.BR fgets_unlocked (),
diff --git a/man3/unlockpt.3 b/man3/unlockpt.3
index 99b16d14a..2d2dab185 100644
--- a/man3/unlockpt.3
+++ b/man3/unlockpt.3
@@ -3,7 +3,7 @@
.\" This page is in the public domain. - aeb
.\" %%%LICENSE_END
.\"
-.TH unlockpt 3 2022-12-15 "Linux man-pages 6.02"
+.TH unlockpt 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
unlockpt \- unlock a pseudoterminal master/slave pair
.SH LIBRARY
@@ -27,7 +27,7 @@ Feature Test Macro Requirements for glibc (see
Since glibc 2.24:
_XOPEN_SOURCE >= 500
.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
- Glibc 2.23 and earlier:
+ glibc 2.23 and earlier:
_XOPEN_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3/updwtmp.3 b/man3/updwtmp.3
index 18c14fe04..799412037 100644
--- a/man3/updwtmp.3
+++ b/man3/updwtmp.3
@@ -8,7 +8,7 @@
.\" Added -lutil remark, 030718
.\" 2008-07-02, mtk, document updwtmpx()
.\"
-.TH updwtmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH updwtmp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
updwtmp, logwtmp \- append an entry to the wtmp file
.SH LIBRARY
diff --git a/man3/uselocale.3 b/man3/uselocale.3
index 10809f3ec..59c3af52f 100644
--- a/man3/uselocale.3
+++ b/man3/uselocale.3
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH uselocale 3 2022-12-04 "Linux man-pages 6.02"
+.TH uselocale 3 2022-12-04 "Linux man-pages 6.03"
.SH NAME
uselocale \- set/get the locale for the calling thread
.SH LIBRARY
diff --git a/man3/usleep.3 b/man3/usleep.3
index 4c299bfd8..c8526556f 100644
--- a/man3/usleep.3
+++ b/man3/usleep.3
@@ -11,7 +11,7 @@
.\" Modified 2001-04-01 by aeb
.\" Modified 2003-07-23 by aeb
.\"
-.TH usleep 3 2022-12-15 "Linux man-pages 6.02"
+.TH usleep 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
usleep \- suspend execution for microsecond intervals
.SH LIBRARY
@@ -33,8 +33,8 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
- || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _BSD_SOURCE
+ || /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500
.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
diff --git a/man3/vsscanf.3 b/man3/vsscanf.3
index 9fd424bb2..8f5ebc15e 100644
--- a/man3/vsscanf.3
+++ b/man3/vsscanf.3
@@ -1 +1 @@
-.so man3/scanf.3
+.so man3/sscanf.3
diff --git a/man3/wcpcpy.3 b/man3/wcpcpy.3
index fbd871d6a..fd84bd0f9 100644
--- a/man3/wcpcpy.3
+++ b/man3/wcpcpy.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcpcpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcpcpy 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcpcpy \- copy a wide-character string, returning a pointer to its end
.SH LIBRARY
@@ -42,7 +42,7 @@ function is the wide-character equivalent of the
function.
It copies the wide-character string pointed to by
.IR src ,
-including the terminating null wide character (L\(aq\e0\(aq),
+including the terminating null wide character (L\[aq]\e0\[aq]),
to the array pointed to by
.IR dest .
.PP
diff --git a/man3/wcpncpy.3 b/man3/wcpncpy.3
index 077c81f23..bced38561 100644
--- a/man3/wcpncpy.3
+++ b/man3/wcpncpy.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcpncpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcpncpy 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcpncpy \- copy a fixed-size string of wide characters,
returning a pointer to its end
@@ -48,7 +48,7 @@ It copies at most
wide characters from the wide-character
string pointed to by
.IR src ,
-including the terminating null wide (L\(aq\e0\(aq),
+including the terminating null wide (L\[aq]\e0\[aq]),
to the array pointed to by
.IR dest .
Exactly
@@ -63,7 +63,7 @@ is smaller than
the remaining wide characters in the array pointed to
by
.I dest
-are filled with L\(aq\e0\(aq characters.
+are filled with L\[aq]\e0\[aq] characters.
If the length
.I wcslen(src)
is greater than or equal
@@ -72,7 +72,7 @@ to
the string pointed to by
.I dest
will
-not be L\(aq\e0\(aq terminated.
+not be L\[aq]\e0\[aq] terminated.
.PP
The strings may not overlap.
.PP
diff --git a/man3/wcrtomb.3 b/man3/wcrtomb.3
index 89d659b6e..02f1fa965 100644
--- a/man3/wcrtomb.3
+++ b/man3/wcrtomb.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcrtomb 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcrtomb 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcrtomb \- convert a wide character to a multibyte sequence
.SH LIBRARY
@@ -28,7 +28,7 @@ The main case for this function is when
is
not NULL and
.I wc
-is not a null wide character (L\(aq\e0\(aq).
+is not a null wide character (L\[aq]\e0\[aq]).
In this case, the
.BR wcrtomb ()
function
@@ -51,7 +51,7 @@ A different case is when
is not NULL,
but
.I wc
-is a null wide character (L\(aq\e0\(aq).
+is a null wide character (L\[aq]\e0\[aq]).
In this case, the
.BR wcrtomb ()
function stores at
@@ -61,7 +61,7 @@ the shift sequence needed to
bring
.I *ps
back to the initial state,
-followed by a \(aq\e0\(aq byte.
+followed by a \[aq]\e0\[aq] byte.
It updates the shift state
.I *ps
(i.e., brings
@@ -80,7 +80,7 @@ and the function effectively returns
.PP
.in +4n
.EX
-wcrtomb(buf, L\(aq\e0\(aq, ps)
+wcrtomb(buf, L\[aq]\e0\[aq], ps)
.EE
.in
.PP
diff --git a/man3/wcscasecmp.3 b/man3/wcscasecmp.3
index 6f92b8bb0..a73cd33bc 100644
--- a/man3/wcscasecmp.3
+++ b/man3/wcscasecmp.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcscasecmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcscasecmp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcscasecmp \- compare two wide-character strings, ignoring case
.SH LIBRARY
diff --git a/man3/wcscat.3 b/man3/wcscat.3
index e17a4e3de..55671a7b3 100644
--- a/man3/wcscat.3
+++ b/man3/wcscat.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcscat 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcscat 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcscat \- concatenate two wide-character strings
.SH LIBRARY
@@ -31,7 +31,7 @@ of the
function.
It copies the wide-character string pointed to by
.IR src ,
-including the terminating null wide character (L\(aq\e0\(aq),
+including the terminating null wide character (L\[aq]\e0\[aq]),
to the end of the wide-character string pointed to by
.IR dest .
.PP
diff --git a/man3/wcschr.3 b/man3/wcschr.3
index 3f3c0e095..dbd125346 100644
--- a/man3/wcschr.3
+++ b/man3/wcschr.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcschr 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcschr 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcschr \- search a wide character in a wide-character string
.SH LIBRARY
diff --git a/man3/wcscmp.3 b/man3/wcscmp.3
index 28732a52c..db087a69f 100644
--- a/man3/wcscmp.3
+++ b/man3/wcscmp.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcscmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcscmp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcscmp \- compare two wide-character strings
.SH LIBRARY
diff --git a/man3/wcscpy.3 b/man3/wcscpy.3
index f91b1b107..46ecced77 100644
--- a/man3/wcscpy.3
+++ b/man3/wcscpy.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcscpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcscpy 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcscpy \- copy a wide-character string
.SH LIBRARY
@@ -31,7 +31,7 @@ of the
function.
It copies the wide-character string pointed to by
.IR src ,
-including the terminating null wide character (L\(aq\e0\(aq),
+including the terminating null wide character (L\[aq]\e0\[aq]),
to the array pointed to by
.IR dest .
.PP
diff --git a/man3/wcscspn.3 b/man3/wcscspn.3
index 80d486ec0..84543bc30 100644
--- a/man3/wcscspn.3
+++ b/man3/wcscspn.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcscspn 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcscspn 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcscspn \- search a wide-character string for any of a set of wide characters
.SH LIBRARY
diff --git a/man3/wcsdup.3 b/man3/wcsdup.3
index ed4212b36..261965148 100644
--- a/man3/wcsdup.3
+++ b/man3/wcsdup.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcsdup 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsdup 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcsdup \- duplicate a wide-character string
.SH LIBRARY
diff --git a/man3/wcslen.3 b/man3/wcslen.3
index 41d8ce48c..e0f39df7f 100644
--- a/man3/wcslen.3
+++ b/man3/wcslen.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcslen 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcslen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcslen \- determine the length of a wide-character string
.SH LIBRARY
@@ -31,7 +31,7 @@ function.
It determines the length of the wide-character string pointed to
by
.IR s ,
-excluding the terminating null wide character (L\(aq\e0\(aq).
+excluding the terminating null wide character (L\[aq]\e0\[aq]).
.SH RETURN VALUE
The
.BR wcslen ()
diff --git a/man3/wcsncasecmp.3 b/man3/wcsncasecmp.3
index cd6ee97b4..d8eddbb6c 100644
--- a/man3/wcsncasecmp.3
+++ b/man3/wcsncasecmp.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcsncasecmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsncasecmp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcsncasecmp \- compare two fixed-size wide-character strings, ignoring case
.SH LIBRARY
diff --git a/man3/wcsncat.3 b/man3/wcsncat.3
index 81cb819ad..28561617f 100644
--- a/man3/wcsncat.3
+++ b/man3/wcsncat.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcsncat 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsncat 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcsncat \- concatenate two wide-character strings
.SH LIBRARY
@@ -37,7 +37,7 @@ string pointed to by
to the end of the wide-character string pointed
to by
.IR dest ,
-and adds a terminating null wide character (L\(aq\e0\(aq).
+and adds a terminating null wide character (L\[aq]\e0\[aq]).
.PP
The strings may not overlap.
.PP
diff --git a/man3/wcsncmp.3 b/man3/wcsncmp.3
index 7edb0ef5f..9f0f9ac31 100644
--- a/man3/wcsncmp.3
+++ b/man3/wcsncmp.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcsncmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsncmp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcsncmp \- compare two fixed-size wide-character strings
.SH LIBRARY
@@ -38,7 +38,7 @@ but at most
wide
characters from each string.
In each string, the comparison extends only up
-to the first occurrence of a null wide character (L\(aq\e0\(aq), if any.
+to the first occurrence of a null wide character (L\[aq]\e0\[aq]), if any.
.SH RETURN VALUE
The
.BR wcsncmp ()
diff --git a/man3/wcsncpy.3 b/man3/wcsncpy.3
index 7e8e9f161..83aebe010 100644
--- a/man3/wcsncpy.3
+++ b/man3/wcsncpy.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcsncpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsncpy 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcsncpy \- copy a fixed-size string of wide characters
.SH LIBRARY
@@ -34,7 +34,7 @@ It copies at most
wide characters from the wide-character
string pointed to by
.IR src ,
-including the terminating null wide character (L\(aq\e0\(aq),
+including the terminating null wide character (L\[aq]\e0\[aq]),
to the array pointed to by
.IR dest .
Exactly
diff --git a/man3/wcsnlen.3 b/man3/wcsnlen.3
index ca2afb64d..2a5a1b871 100644
--- a/man3/wcsnlen.3
+++ b/man3/wcsnlen.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcsnlen 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsnlen 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcsnlen \- determine the length of a fixed-size wide-character string
.SH LIBRARY
@@ -42,7 +42,7 @@ of the
function.
It returns the number of wide-characters in the string pointed to by
.IR s ,
-not including the terminating null wide character (L\(aq\e0\(aq),
+not including the terminating null wide character (L\[aq]\e0\[aq]),
but at most
.I maxlen
wide characters (note: this parameter is not a byte count).
diff --git a/man3/wcsnrtombs.3 b/man3/wcsnrtombs.3
index db6b28305..8c4194b04 100644
--- a/man3/wcsnrtombs.3
+++ b/man3/wcsnrtombs.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcsnrtombs 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsnrtombs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcsnrtombs \- convert a wide-character string to a multibyte string
.SH LIBRARY
@@ -79,7 +79,7 @@ number of bytes written and
.I *src
by one.
The conversion can stop for three reasons:
-.IP \(bu 3
+.IP \[bu] 3
A wide character has been encountered that can not be represented as a
multibyte sequence (according to the current locale).
In this case,
@@ -91,10 +91,10 @@ and
.I errno
is set to
.BR EILSEQ .
-.IP \(bu
+.IP \[bu]
.I nwc
wide characters have been
-converted without encountering a null wide character (L\(aq\e0\(aq),
+converted without encountering a null wide character (L\[aq]\e0\[aq]),
or the length limit forces a stop.
In this case,
.I *src
@@ -103,7 +103,7 @@ to the next wide character to be converted, and the number of bytes written
to
.I dest
is returned.
-.IP \(bu
+.IP \[bu]
The wide-character string has been completely converted, including the
terminating null wide character (which has the side effect of bringing back
.I *ps
@@ -113,7 +113,7 @@ In this case,
is set to NULL, and the number
of bytes written to
.IR dest ,
-excluding the terminating null byte (\(aq\e0\(aq), is
+excluding the terminating null byte (\[aq]\e0\[aq]), is
returned.
.PP
If
diff --git a/man3/wcspbrk.3 b/man3/wcspbrk.3
index 95d7ef91e..3012fdb34 100644
--- a/man3/wcspbrk.3
+++ b/man3/wcspbrk.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcspbrk 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcspbrk 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcspbrk \- search a wide-character string for any of a set of wide characters
.SH LIBRARY
diff --git a/man3/wcsrchr.3 b/man3/wcsrchr.3
index 3d96ad7ec..a7be62c3c 100644
--- a/man3/wcsrchr.3
+++ b/man3/wcsrchr.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcsrchr 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsrchr 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcsrchr \- search a wide character in a wide-character string
.SH LIBRARY
diff --git a/man3/wcsrtombs.3 b/man3/wcsrtombs.3
index 1cf084bae..8bf18f421 100644
--- a/man3/wcsrtombs.3
+++ b/man3/wcsrtombs.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcsrtombs 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsrtombs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcsrtombs \- convert a wide-character string to a multibyte string
.SH LIBRARY
@@ -52,7 +52,7 @@ number of bytes written and
.I *src
by one.
The conversion can stop for three reasons:
-.IP \(bu 3
+.IP \[bu] 3
A wide character has been encountered that can not be represented as a
multibyte sequence (according to the current locale).
In this case,
@@ -64,7 +64,7 @@ and
.I errno
is set to
.BR EILSEQ .
-.IP \(bu
+.IP \[bu]
The length limit forces a stop.
In this case,
.I *src
@@ -73,9 +73,9 @@ to the next wide character to be converted,
and the number of bytes written to
.I dest
is returned.
-.IP \(bu
+.IP \[bu]
The wide-character string has been completely converted, including the
-terminating null wide character (L\(aq\e0\(aq),
+terminating null wide character (L\[aq]\e0\[aq]),
which has the side effect of bringing back
.I *ps
to the initial state.
@@ -84,7 +84,7 @@ In this case,
is set to NULL, and the number
of bytes written to
.IR dest ,
-excluding the terminating null byte (\(aq\e0\(aq),
+excluding the terminating null byte (\[aq]\e0\[aq]),
is returned.
.PP
If
diff --git a/man3/wcsspn.3 b/man3/wcsspn.3
index 948495cbe..cd5c5a97d 100644
--- a/man3/wcsspn.3
+++ b/man3/wcsspn.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcsspn 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsspn 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcsspn \- get length of a prefix wide-character substring
.SH LIBRARY
diff --git a/man3/wcsstr.3 b/man3/wcsstr.3
index 57fc48b38..4bb4b4149 100644
--- a/man3/wcsstr.3
+++ b/man3/wcsstr.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcsstr 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcsstr 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcsstr \- locate a substring in a wide-character string
.SH LIBRARY
@@ -29,7 +29,7 @@ function is the wide-character equivalent of the
function.
It searches for the first occurrence of the wide-character string
.I needle
-(without its terminating null wide character (L\(aq\e0\(aq))
+(without its terminating null wide character (L\[aq]\e0\[aq]))
as a substring in the wide-character string
.IR haystack .
.SH RETURN VALUE
diff --git a/man3/wcstoimax.3 b/man3/wcstoimax.3
index 77bc78614..d81e06e93 100644
--- a/man3/wcstoimax.3
+++ b/man3/wcstoimax.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH wcstoimax 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcstoimax 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcstoimax, wcstoumax \- convert wide-character string to integer
.SH LIBRARY
diff --git a/man3/wcstok.3 b/man3/wcstok.3
index fcc63a595..ca4a03f2d 100644
--- a/man3/wcstok.3
+++ b/man3/wcstok.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcstok 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcstok 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcstok \- split wide-character string into tokens
.SH LIBRARY
@@ -66,7 +66,7 @@ and returns a pointer to it, but before doing that, it zero-terminates the
token by replacing the next wide-character which occurs in
.I delim
with
-a null wide character (L\(aq\e0\(aq),
+a null wide character (L\[aq]\e0\[aq]),
and it updates
.I *ptr
so that subsequent calls will
diff --git a/man3/wcstombs.3 b/man3/wcstombs.3
index 72433feae..db0a03cce 100644
--- a/man3/wcstombs.3
+++ b/man3/wcstombs.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wcstombs 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcstombs 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcstombs \- convert a wide-character string to a multibyte string
.SH LIBRARY
@@ -41,24 +41,24 @@ The sequence of characters placed in
.I dest
begins in the initial shift state.
The conversion can stop for three reasons:
-.IP \(bu 3
+.IP \[bu] 3
A wide character has been encountered that can not be represented as a
multibyte sequence (according to the current locale).
In this case,
.I (size_t)\ \-1
is returned.
-.IP \(bu
+.IP \[bu]
The length limit forces a stop.
In this case, the number of bytes written to
.I dest
is returned, but the shift state at this point is lost.
-.IP \(bu
+.IP \[bu]
The wide-character string has been completely converted, including the
-terminating null wide character (L\(aq\e0\(aq).
+terminating null wide character (L\[aq]\e0\[aq]).
In this case, the conversion ends in the initial shift state.
The number of bytes written to
.IR dest ,
-excluding the terminating null byte (\(aq\e0\(aq), is returned.
+excluding the terminating null byte (\[aq]\e0\[aq]), is returned.
.PP
The programmer must ensure that there is room for at least
.I n
diff --git a/man3/wcswidth.3 b/man3/wcswidth.3
index 27e1e723c..690c558c9 100644
--- a/man3/wcswidth.3
+++ b/man3/wcswidth.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcswidth 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcswidth 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wcswidth \- determine columns needed for a fixed-size wide-character string
.SH LIBRARY
diff --git a/man3/wctob.3 b/man3/wctob.3
index c1c0de5b8..6b3adc5ac 100644
--- a/man3/wctob.3
+++ b/man3/wctob.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wctob 3 2022-12-15 "Linux man-pages 6.02"
+.TH wctob 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wctob \- try to represent a wide character as a single byte
.SH LIBRARY
diff --git a/man3/wctomb.3 b/man3/wctomb.3
index 9f8fc3082..f99e27f71 100644
--- a/man3/wctomb.3
+++ b/man3/wctomb.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wctomb 3 2022-12-15 "Linux man-pages 6.02"
+.TH wctomb 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wctomb \- convert a wide character to a multibyte sequence
.SH LIBRARY
diff --git a/man3/wctrans.3 b/man3/wctrans.3
index 11d0a262b..201db671e 100644
--- a/man3/wctrans.3
+++ b/man3/wctrans.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wctrans 3 2022-12-15 "Linux man-pages 6.02"
+.TH wctrans 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wctrans \- wide-character translation mapping
.SH LIBRARY
diff --git a/man3/wctype.3 b/man3/wctype.3
index 1eab4a80b..cee254730 100644
--- a/man3/wctype.3
+++ b/man3/wctype.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wctype 3 2022-12-15 "Linux man-pages 6.02"
+.TH wctype 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wctype \- wide-character classification
.SH LIBRARY
diff --git a/man3/wcwidth.3 b/man3/wcwidth.3
index 73b708fee..3114dfefc 100644
--- a/man3/wcwidth.3
+++ b/man3/wcwidth.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wcwidth 3 2022-12-15 "Linux man-pages 6.02"
+.TH wcwidth 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wcwidth \- determine columns needed for a wide character
.SH LIBRARY
@@ -33,7 +33,7 @@ is a printable wide character, the value
is at least 0.
If
.I c
-is null wide character (L\(aq\e0\(aq), the value is 0.
+is null wide character (L\[aq]\e0\[aq]), the value is 0.
Otherwise, \-1 is returned.
.SH RETURN VALUE
The
diff --git a/man3/wmemchr.3 b/man3/wmemchr.3
index f3f96fbe3..b687761e3 100644
--- a/man3/wmemchr.3
+++ b/man3/wmemchr.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wmemchr 3 2022-12-15 "Linux man-pages 6.02"
+.TH wmemchr 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wmemchr \- search a wide character in a wide-character array
.SH LIBRARY
diff --git a/man3/wmemcmp.3 b/man3/wmemcmp.3
index 48da3ceee..42d82c50d 100644
--- a/man3/wmemcmp.3
+++ b/man3/wmemcmp.3
@@ -8,7 +8,7 @@
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH wmemcmp 3 2022-12-15 "Linux man-pages 6.02"
+.TH wmemcmp 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wmemcmp \- compare two arrays of wide-characters
.SH LIBRARY
diff --git a/man3/wmemcpy.3 b/man3/wmemcpy.3
index 880c6004b..2d70a3a39 100644
--- a/man3/wmemcpy.3
+++ b/man3/wmemcpy.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wmemcpy 3 2022-12-15 "Linux man-pages 6.02"
+.TH wmemcpy 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wmemcpy \- copy an array of wide-characters
.SH LIBRARY
diff --git a/man3/wmemmove.3 b/man3/wmemmove.3
index 9148728ca..29acf2a3e 100644
--- a/man3/wmemmove.3
+++ b/man3/wmemmove.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wmemmove 3 2022-12-15 "Linux man-pages 6.02"
+.TH wmemmove 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wmemmove \- copy an array of wide-characters
.SH LIBRARY
diff --git a/man3/wmemset.3 b/man3/wmemset.3
index 4cddea149..d04297528 100644
--- a/man3/wmemset.3
+++ b/man3/wmemset.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wmemset 3 2022-12-15 "Linux man-pages 6.02"
+.TH wmemset 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
wmemset \- fill an array of wide-characters with a constant wide character
.SH LIBRARY
diff --git a/man3/wordexp.3 b/man3/wordexp.3
index 86c573502..b89963d8d 100644
--- a/man3/wordexp.3
+++ b/man3/wordexp.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH wordexp 3 2022-12-15 "Linux man-pages 6.02"
+.TH wordexp 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wordexp, wordfree \- perform word expansion like a posix-shell
.SH LIBRARY
@@ -88,7 +88,7 @@ then it is unspecified whether that word and all following words
are ignored, or the # is treated as a non-comment character.
.SS The expansion
The expansion done consists of the following stages:
-tilde expansion (replacing \(tiuser by user's home directory),
+tilde expansion (replacing \[ti]user by user's home directory),
variable substitution (replacing $FOO by the value of the environment
variable FOO), command substitution (replacing $(command) or \`command\`
by the output of command), arithmetic expansion, field splitting,
diff --git a/man3/wprintf.3 b/man3/wprintf.3
index ce48f93ed..fb4edd519 100644
--- a/man3/wprintf.3
+++ b/man3/wprintf.3
@@ -9,7 +9,7 @@
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
-.TH wprintf 3 2022-12-15 "Linux man-pages 6.02"
+.TH wprintf 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf \- formatted
wide-character output conversion
@@ -109,15 +109,15 @@ the
functions except for the
following differences:
.TP
-.B \(bu
+.B \[bu]
The
.I format
string is a wide-character string.
.TP
-.B \(bu
+.B \[bu]
The output consists of wide characters, not bytes.
.TP
-.B \(bu
+.B \[bu]
.BR swprintf ()
and
.BR vswprintf ()
@@ -170,7 +170,7 @@ wide characters (each by a call to the
function with a conversion state starting in the initial state before
the first byte).
The resulting wide characters are written up to
-(but not including) the terminating null wide character (L\(aq\e0\(aq).
+(but not including) the terminating null wide character (L\[aq]\e0\[aq]).
If a precision is
specified, no more wide characters than the number specified are written.
Note that the precision determines the number of
@@ -179,7 +179,7 @@ written, not the number of
.I bytes
or
.IR "screen positions" .
-The array must contain a terminating null byte (\(aq\e0\(aq),
+The array must contain a terminating null byte (\[aq]\e0\[aq]),
unless a precision is given
and it is so small that the number of converted wide characters reaches it
before the end of the array is reached.
diff --git a/man3/xcrypt.3 b/man3/xcrypt.3
index eff3d2d1c..74310f286 100644
--- a/man3/xcrypt.3
+++ b/man3/xcrypt.3
@@ -9,7 +9,7 @@
.\" 3. xencrypt() a hexstring
.\" to bad to be true :(
.\"
-.TH XCRYPT 3 2022-12-15 "Linux man-pages 6.02"
+.TH XCRYPT 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
xencrypt, xdecrypt, passwd2des \- RFS password encryption
.SH LIBRARY
diff --git a/man3/xdr.3 b/man3/xdr.3
index 0e8f9fc0f..56602bd4b 100644
--- a/man3/xdr.3
+++ b/man3/xdr.3
@@ -9,7 +9,7 @@
.\"
.\" 2007-12-30, mtk, Convert function prototypes to modern C syntax
.\"
-.TH xdr 3 2022-12-15 "Linux man-pages 6.02"
+.TH xdr 3 2022-12-15 "Linux man-pages 6.03"
.SH NAME
xdr \- library routines for external data representation
.SH LIBRARY
diff --git a/man3/y0.3 b/man3/y0.3
index 25e2d0091..355c94900 100644
--- a/man3/y0.3
+++ b/man3/y0.3
@@ -14,7 +14,7 @@
.\" Modified 2004-11-12 as per suggestion by Fabian Kreutz/AEB
.\" 2008-07-24, mtk, created this page, based on material from j0.3.
.\"
-.TH y0 3 2022-12-15 "Linux man-pages 6.02"
+.TH y0 3 2023-02-05 "Linux man-pages 6.03"
.SH NAME
y0, y0f, y0l, y1, y1f, y1l, yn, ynf, ynl \-
Bessel functions of the second kind
@@ -49,7 +49,7 @@ Feature Test Macro Requirements for glibc (see
.nf
_XOPEN_SOURCE
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.PP
.BR y0f (),
@@ -62,7 +62,7 @@ Feature Test Macro Requirements for glibc (see
_XOPEN_SOURCE >= 600
|| (_ISOC99_SOURCE && _XOPEN_SOURCE)
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
.fi
.SH DESCRIPTION
The
diff --git a/man3const/EOF.3const b/man3const/EOF.3const
index 6208ff327..f61a0090a 100644
--- a/man3const/EOF.3const
+++ b/man3const/EOF.3const
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH EOF 3const 2022-10-18 "Linux man-pages 6.02"
+.TH EOF 3const 2023-02-05 "Linux man-pages 6.03"
.SH NAME
EOF \- end of file or error indicator
.SH LIBRARY
@@ -13,7 +13,7 @@ Standard C library
.nf
.B #include <stdio.h>
.PP
-.B "#define EOF /* ... */"
+.BR "#define EOF " "/* ... */"
.fi
.SH DESCRIPTION
.B EOF
diff --git a/man3const/EXIT_SUCCESS.3const b/man3const/EXIT_SUCCESS.3const
index a8cb0b79e..9d959f540 100644
--- a/man3const/EXIT_SUCCESS.3const
+++ b/man3const/EXIT_SUCCESS.3const
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH EXIT_SUCCESS 3const 2022-11-17 "Linux man-pages 6.02"
+.TH EXIT_SUCCESS 3const 2022-11-17 "Linux man-pages 6.03"
.SH NAME
EXIT_SUCCESS, EXIT_FAILURE \- termination status constants
.SH LIBRARY
diff --git a/man3const/NULL.3const b/man3const/NULL.3const
index e8e575aaa..275d37594 100644
--- a/man3const/NULL.3const
+++ b/man3const/NULL.3const
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH NULL 3const 2022-10-30 "Linux man-pages 6.02"
+.TH NULL 3const 2023-02-05 "Linux man-pages 6.03"
.SH NAME
NULL \- null pointer constant
.SH LIBRARY
@@ -58,7 +58,7 @@ which is an
.BR ascii (7)
character,
represented in C as
-.BR \(aq\e0\(aq .
+.BR \[aq]\e0\[aq] .
.SH BUGS
When it is necessary to set a pointer variable to a null pointer,
it is not enough to use
diff --git a/man3const/PA_CHAR.3const b/man3const/PA_CHAR.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_CHAR.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_DOUBLE.3const b/man3const/PA_DOUBLE.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_DOUBLE.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_FLAG_LONG.3const b/man3const/PA_FLAG_LONG.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_FLAG_LONG.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_FLAG_LONG_DOUBLE.3const b/man3const/PA_FLAG_LONG_DOUBLE.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_FLAG_LONG_DOUBLE.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_FLAG_LONG_LONG.3const b/man3const/PA_FLAG_LONG_LONG.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_FLAG_LONG_LONG.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_FLAG_PTR.3const b/man3const/PA_FLAG_PTR.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_FLAG_PTR.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_FLAG_SHORT.3const b/man3const/PA_FLAG_SHORT.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_FLAG_SHORT.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_FLOAT.3const b/man3const/PA_FLOAT.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_FLOAT.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_INT.3const b/man3const/PA_INT.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_INT.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_LAST.3const b/man3const/PA_LAST.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_LAST.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_POINTER.3const b/man3const/PA_POINTER.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_POINTER.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_STRING.3const b/man3const/PA_STRING.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_STRING.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_WCHAR.3const b/man3const/PA_WCHAR.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_WCHAR.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3const/PA_WSTRING.3const b/man3const/PA_WSTRING.3const
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3const/PA_WSTRING.3const
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3head/printf.h.3head b/man3head/printf.h.3head
new file mode 100644
index 000000000..934b222e5
--- /dev/null
+++ b/man3head/printf.h.3head
@@ -0,0 +1,581 @@
+.\" Copyright (C) 2022 Alejandro Colomar <alx.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH printf.h 3head 2022-09-18 "Linux man-pages 6.03"
+.SH NAME
+printf.h,
+\%register_printf_specifier,
+\%register_printf_modifier,
+\%register_printf_type,
+\%printf_function,
+\%printf_arginfo_size_function,
+\%printf_va_arg_function,
+\%printf_info,
+\%PA_INT,
+\%PA_CHAR,
+\%PA_WCHAR,
+\%PA_STRING,
+\%PA_WSTRING,
+\%PA_POINTER,
+\%PA_FLOAT,
+\%PA_DOUBLE,
+\%PA_LAST,
+\%PA_FLAG_LONG_LONG,
+\%PA_FLAG_LONG_DOUBLE,
+\%PA_FLAG_LONG,
+\%PA_FLAG_SHORT,
+\%PA_FLAG_PTR
+\- define custom behavior for printf-like functions
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <printf.h>
+.PP
+.BI "int register_printf_specifier(int " spec ", printf_function " func ,
+.BI " printf_arginfo_size_function " arginfo );
+.BI "int register_printf_modifier(const wchar_t *" str );
+.BI "int register_printf_type(printf_va_arg_function " fct );
+.fi
+.SS Callbacks
+.nf
+.BI "typedef int printf_function(FILE *" stream ", const struct printf_info *" info ,
+.BI " const void *const " args []);
+.BI "typedef int printf_arginfo_size_function(const struct printf_info *" info ,
+.BI " size_t " n ", int " argtypes [ n "], int " size [ n ]);
+.BI "typedef void printf_va_arg_function(void *" mem ", va_list *" ap );
+.fi
+.SS Types
+.EX
+.B struct printf_info {
+.BR " int prec; " "// Precision"
+.BR " int width; " "// Width"
+.BR " wchar_t spec; " "// Format letter"
+.BR " unsigned int is_long_double:1;" "// " L " or " ll " flag"
+.BR " unsigned int is_short:1; " "// " h " flag"
+.BR " unsigned int is_long:1; " "// " l " flag"
+.BR " unsigned int alt:1; " "// " # " flag"
+.BR " unsigned int space:1; " "// Space flag"
+.BR " unsigned int left:1; " "// " - " flag"
+.BR " unsigned int showsign:1; " "// " + " flag"
+.BR " unsigned int group:1; " "// " \[aq] " flag"
+.BR " unsigned int extra:1; " "// For special use"
+.BR " unsigned int is_char:1; " "// " hh " flag"
+.BR " unsigned int wide:1; " "// True for wide character streams"
+.BR " unsigned int i18n:1; " "// " I " flag"
+.BR " unsigned int is_binary128:1; " "/* Floating-point argument is"
+.BR " " " ABI-compatible with"
+.BR " " " IEC 60559 binary128 */"
+.BR " unsigned short user; " "// Bits for user-installed modifiers"
+.BR " wchar_t pad; " "// Padding character"
+.B };
+.EE
+.SS Constants
+.EX
+.BR "#define PA_FLAG_LONG_LONG " "/* ... */"
+.BR "#define PA_FLAG_LONG_DOUBLE " "/* ... */"
+.BR "#define PA_FLAG_LONG " "/* ... */"
+.BR "#define PA_FLAG_SHORT " "/* ... */"
+.BR "#define PA_FLAG_PTR " "/* ... */"
+.EE
+.SH DESCRIPTION
+These functions serve to extend and/or modify the behavior of the
+.BR printf (3)
+family of functions.
+.SS register_printf_specifier()
+This function registers a custom conversion specifier for the
+.BR printf (3)
+family of functions.
+.TP
+.I spec
+The character which will be used as a conversion specifier in the format string.
+.TP
+.I func
+Callback function that will be executed by the
+.BR printf (3)
+family of functions
+to format the input arguments into the output
+.IR stream .
+.RS
+.TP
+.I stream
+Output stream where the formatted output should be printed.
+This stream transparently represents the output,
+even in the case of functions that write to a string.
+.TP
+.I info
+Structure that holds context information,
+including the modifiers specified in the format string.
+This holds the same contents as in
+.IR arginfo .
+.TP
+.I args
+Array of pointers to the arguments to the
+.BR printf (3)\c
+-like function.
+.RE
+.TP
+.I arginfo
+Callback function that will be executed by the
+.BR printf (3)
+family of functions
+to know how many arguments should be parsed for the custom specifier
+and also their types.
+.RS
+.TP
+.I info
+Structure that holds context information,
+including the modifiers specified in the format string.
+This holds the same contents as in
+.IR func .
+.TP
+.I n
+Number of arguments remaining to be parsed.
+.TP
+.I argtypes
+This array should be set to
+define the type of each of the arguments that will be parsed.
+Each element in the array represents one of the arguments to be parsed,
+in the same order that they are passed to the
+.BR printf (3)\c
+-like function.
+Each element should be set to a base type
+.RB ( PA_ *)
+from the enum above,
+or a custom one,
+and optionally ORed with an appropriate length modifier
+.RB ( PA_FLAG_ *).
+.RS
+.PP
+The type is determined by using one of the following constants:
+.TP
+.B PA_INT
+.IR int .
+.TP
+.B PA_CHAR
+.IR int ,
+cast to
+.IR char .
+.TP
+.B PA_WCHAR wchar_t
+.TP
+.B PA_STRING
+.I "const char\~*" ,
+a \(aq\e0\(aq-terminated string.
+.TP
+.B PA_WSTRING
+.I "const wchar_t\~*" ,
+a wide character L\(aq\e0\(aq-terminated string.
+.TP
+.B PA_POINTER
+.IR void\~* .
+.TP
+.B PA_FLOAT
+.IR float .
+.TP
+.B PA_DOUBLE
+.IR double .
+.TP
+.B PA_LAST
+TODO.
+.RE
+.TP
+.I size
+For user-defined types,
+the size of the type (in bytes) should also be specified through this array.
+Otherwise, leave it unused.
+.RE
+.PP
+.I arginfo
+is called before
+.IR func ,
+and prepares some information needed to call
+.IR func .
+.SS register_printf_modifier()
+TODO
+.SS register_printf_type()
+TODO
+.SH RETURN VALUE
+.BR \%register_printf_specifier (),
+.BR \%register_printf_modifier (),
+and
+.BR \%register_printf_type ()
+return zero on success, or \-1 on error.
+.SS Callbacks
+The callback of type
+.I printf_function
+should return the number of characters written,
+or \-1 on error.
+.PP
+The callback of type
+.I \%printf_arginfo_size_function
+should return the number of arguments to be parsed by this specifier.
+It also passes information about the type of those arguments
+to the caller through
+.IR argtypes .
+On error, it should return \-1.
+.SH ERRORS
+.TP
+.B EINVAL
+The specifier was not a valid character.
+.SH VERSIONS
+.BR \%register_printf_function (3)
+is an older function similar to
+.BR \%register_printf_specifier (),
+and is now deprecated.
+That function can't handle user-defined types.
+.PP
+.BR \%register_printf_specifier ()
+superseeds
+.BR \%register_printf_function (3).
+.SH STANDARDS
+These nonstandard functions are present in glibc.
+.SH EXAMPLES
+The following example program registers the 'b' and 'B' specifiers
+to print integers in binary format,
+mirroring rules for other unsigned conversion specifiers like 'x' and 'u'.
+This can be used to print in binary prior to C23.
+.PP
+.\" SRC BEGIN (register_printf_specifier.c)
+.EX
+/* This code is in the public domain */
+
+#include <err.h>
+#include <limits.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/param.h>
+
+#include <printf.h>
+
+#define GROUP_SEP \[aq]\e\[aq]\[aq]
+
+struct Printf_Pad {
+ char ch;
+ size_t len;
+};
+
+static int b_printf(FILE *stream, const struct printf_info *info,
+ const void *const args[]);
+static int b_arginf_sz(const struct printf_info *info,
+ size_t n, int argtypes[n], int size[n]);
+
+static uintmax_t b_value(const struct printf_info *info,
+ const void *arg);
+static size_t b_bin_repr(char bin[UINTMAX_WIDTH],
+ const struct printf_info *info, const void *arg);
+static size_t b_bin_len(const struct printf_info *info,
+ ptrdiff_t min_len);
+static size_t b_pad_len(const struct printf_info *info,
+ ptrdiff_t bin_len);
+static ssize_t b_print_prefix(FILE *stream,
+ const struct printf_info *info);
+static ssize_t b_pad_zeros(FILE *stream, const struct printf_info *info,
+ ptrdiff_t min_len);
+static ssize_t b_print_number(FILE *stream,
+ const struct printf_info *info,
+ const char bin[UINTMAX_WIDTH],
+ size_t min_len, size_t bin_len);
+static char pad_ch(const struct printf_info *info);
+static ssize_t pad_spaces(FILE *stream, size_t pad_len);
+
+int
+main(void)
+{
+ if (register_printf_specifier(\[aq]b\[aq], b_printf, b_arginf_sz) == -1)
+ err(EXIT_FAILURE, "register_printf_specifier(\[aq]b\[aq], ...)");
+ if (register_printf_specifier(\[aq]B\[aq], b_printf, b_arginf_sz) == -1)
+ err(EXIT_FAILURE, "register_printf_specifier(\[aq]B\[aq], ...)");
+
+ printf("....----....----....----....----\en");
+ printf("%llb;\en", 0x5Ellu);
+ printf("%lB;\en", 0x5Elu);
+ printf("%b;\en", 0x5Eu);
+ printf("%hB;\en", 0x5Eu);
+ printf("%hhb;\en", 0x5Eu);
+ printf("%jb;\en", (uintmax_t)0x5E);
+ printf("%zb;\en", (size_t)0x5E);
+ printf("....----....----....----....----\en");
+ printf("%#b;\en", 0x5Eu);
+ printf("%#B;\en", 0x5Eu);
+ printf("....----....----....----....----\en");
+ printf("%10b;\en", 0x5Eu);
+ printf("%010b;\en", 0x5Eu);
+ printf("%.10b;\en", 0x5Eu);
+ printf("....----....----....----....----\en");
+ printf("%\-10B;\en", 0x5Eu);
+ printf("....----....----....----....----\en");
+ printf("%\[aq]B;\en", 0x5Eu);
+ printf("....----....----....----....----\en");
+ printf("....----....----....----....----\en");
+ printf("%#16.12b;\en", 0xAB);
+ printf("%\-#\[aq]20.12b;\en", 0xAB);
+ printf("%#\[aq]020B;\en", 0xAB);
+ printf("....----....----....----....----\en");
+ printf("%#020B;\en", 0xAB);
+ printf("%\[aq]020B;\en", 0xAB);
+ printf("%020B;\en", 0xAB);
+ printf("....----....----....----....----\en");
+ printf("%#021B;\en", 0xAB);
+ printf("%\[aq]021B;\en", 0xAB);
+ printf("%021B;\en", 0xAB);
+ printf("....----....----....----....----\en");
+ printf("%#022B;\en", 0xAB);
+ printf("%\[aq]022B;\en", 0xAB);
+ printf("%022B;\en", 0xAB);
+ printf("....----....----....----....----\en");
+ printf("%#023B;\en", 0xAB);
+ printf("%\[aq]023B;\en", 0xAB);
+ printf("%023B;\en", 0xAB);
+ printf("....----....----....----....----\en");
+ printf("%\-#\[aq]19.11b;\en", 0xAB);
+ printf("%#\[aq]019B;\en", 0xAB);
+ printf("%#019B;\en", 0xAB);
+ printf("....----....----....----....----\en");
+ printf("%\[aq]019B;\en", 0xAB);
+ printf("%019B;\en", 0xAB);
+ printf("%#016b;\en", 0xAB);
+ printf("....----....----....----....----\en");
+
+ return 0;
+}
+
+static int
+b_printf(FILE *stream, const struct printf_info *info,
+ const void *const args[])
+{
+ char bin[UINTMAX_WIDTH];
+ size_t min_len, bin_len;
+ ssize_t len, tmp;
+ struct Printf_Pad pad = {0};
+
+ len = 0;
+
+ min_len = b_bin_repr(bin, info, args[0]);
+ bin_len = b_bin_len(info, min_len);
+
+ pad.ch = pad_ch(info);
+ if (pad.ch == \[aq] \[aq])
+ pad.len = b_pad_len(info, bin_len);
+
+ /* Padding with \[aq] \[aq] (right aligned) */
+ if ((pad.ch == \[aq] \[aq]) && !info->left) {
+ tmp = pad_spaces(stream, pad.len);
+ if (tmp == EOF)
+ return EOF;
+ len += tmp;
+ }
+
+ /* "0b"/"0B" prefix */
+ if (info->alt) {
+ tmp = b_print_prefix(stream, info);
+ if (tmp == EOF)
+ return EOF;
+ len += tmp;
+ }
+
+ /* Padding with \[aq]0\[aq] */
+ if (pad.ch == \[aq]0\[aq]) {
+ tmp = b_pad_zeros(stream, info, min_len);
+ if (tmp == EOF)
+ return EOF;
+ len += tmp;
+ }
+
+ /* Print number (including leading 0s to fill precision) */
+ tmp = b_print_number(stream, info, bin, min_len, bin_len);
+ if (tmp == EOF)
+ return EOF;
+ len += tmp;
+
+ /* Padding with \[aq] \[aq] (left aligned) */
+ if (info\->left) {
+ tmp = pad_spaces(stream, pad.len);
+ if (tmp == EOF)
+ return EOF;
+ len += tmp;
+ }
+
+ return len;
+}
+
+static int
+b_arginf_sz(const struct printf_info *info, size_t n, int argtypes[n],
+ [[maybe_unused]] int size[n])
+{
+ if (n < 1)
+ return -1;
+
+ if (info\->is_long_double)
+ argtypes[0] = PA_INT | PA_FLAG_LONG_LONG;
+ else if (info\->is_long)
+ argtypes[0] = PA_INT | PA_FLAG_LONG;
+ else
+ argtypes[0] = PA_INT;
+
+ return 1;
+}
+
+static uintmax_t
+b_value(const struct printf_info *info, const void *arg)
+{
+ if (info\->is_long_double)
+ return *(const unsigned long long *)arg;
+ if (info\->is_long)
+ return *(const unsigned long *)arg;
+
+ /* short and char are both promoted to int */
+ return *(const unsigned int *)arg;
+}
+
+static size_t
+b_bin_repr(char bin[UINTMAX_WIDTH],
+ const struct printf_info *info, const void *arg)
+{
+ size_t min_len;
+ uintmax_t val;
+
+ val = b_value(info, arg);
+
+ bin[0] = \[aq]0\[aq];
+ for (min_len = 0; val; min_len++) {
+ bin[min_len] = \[aq]0\[aq] + (val % 2);
+ val >>= 1;
+ }
+
+ return MAX(min_len, 1);
+}
+
+static size_t
+b_bin_len(const struct printf_info *info, ptrdiff_t min_len)
+{
+ return MAX(info\->prec, min_len);
+}
+
+static size_t
+b_pad_len(const struct printf_info *info, ptrdiff_t bin_len)
+{
+ ptrdiff_t pad_len;
+
+ pad_len = info\->width \- bin_len;
+ if (info\->alt)
+ pad_len \-= 2;
+ if (info\->group)
+ pad_len \-= (bin_len \- 1) / 4;
+
+ return MAX(pad_len, 0);
+}
+
+static ssize_t
+b_print_prefix(FILE *stream, const struct printf_info *info)
+{
+ ssize_t len;
+
+ len = 0;
+ if (fputc(\[aq]0\[aq], stream) == EOF)
+ return EOF;
+ len++;
+ if (fputc(info\->spec, stream) == EOF)
+ return EOF;
+ len++;
+
+ return len;
+}
+
+static ssize_t
+b_pad_zeros(FILE *stream, const struct printf_info *info,
+ ptrdiff_t min_len)
+{
+ ssize_t len;
+ ptrdiff_t tmp;
+
+ len = 0;
+ tmp = info\->width \- (info\->alt * 2);
+ if (info\->group)
+ tmp \-= tmp / 5 \- !(tmp % 5);
+ for (ptrdiff_t i = tmp \- 1; i > min_len \- 1; i\-\-) {
+ if (fputc(\[aq]0\[aq], stream) == EOF)
+ return EOF;
+ len++;
+
+ if (!info\->group || (i % 4))
+ continue;
+ if (fputc(GROUP_SEP, stream) == EOF)
+ return EOF;
+ len++;
+ }
+
+ return len;
+}
+
+static ssize_t
+b_print_number(FILE *stream, const struct printf_info *info,
+ const char bin[UINTMAX_WIDTH],
+ size_t min_len, size_t bin_len)
+{
+ ssize_t len;
+
+ len = 0;
+
+ /* Print leading zeros to fill precision */
+ for (size_t i = bin_len \- 1; i > min_len \- 1; i\-\-) {
+ if (fputc(\[aq]0\[aq], stream) == EOF)
+ return EOF;
+ len++;
+
+ if (!info\->group || (i % 4))
+ continue;
+ if (fputc(GROUP_SEP, stream) == EOF)
+ return EOF;
+ len++;
+ }
+
+ /* Print number */
+ for (size_t i = min_len \- 1; i < min_len; i\-\-) {
+ if (fputc(bin[i], stream) == EOF)
+ return EOF;
+ len++;
+
+ if (!info\->group || (i % 4) || !i)
+ continue;
+ if (fputc(GROUP_SEP, stream) == EOF)
+ return EOF;
+ len++;
+ }
+
+ return len;
+}
+
+static char
+pad_ch(const struct printf_info *info)
+{
+ if ((info\->prec != \-1) || (info\->pad == \[aq] \[aq]) || info\->left)
+ return \[aq] \[aq];
+ return \[aq]0\[aq];
+}
+
+static ssize_t
+pad_spaces(FILE *stream, size_t pad_len)
+{
+ ssize_t len;
+
+ len = 0;
+ for (size_t i = pad_len - 1; i < pad_len; i\-\-) {
+ if (fputc(\[aq] \[aq], stream) == EOF)
+ return EOF;
+ len++;
+ }
+
+ return len;
+}
+.EE
+.\" SRC END
+.SH SEE ALSO
+.BR asprintf (3),
+.BR printf (3),
+.BR wprintf (3)
diff --git a/man3head/sysexits.h.3head b/man3head/sysexits.h.3head
index a923196c7..58529d2df 100644
--- a/man3head/sysexits.h.3head
+++ b/man3head/sysexits.h.3head
@@ -8,7 +8,7 @@
.\"
.\" Rewritten for the Linux man-pages by Alejandro Colomar
.\"
-.TH sysexits.h 3head 2022-12-15 "Linux man-pages 6.02"
+.TH sysexits.h 3head 2022-12-15 "Linux man-pages 6.03"
.SH NAME
sysexits.h \- exit codes for programs
.SH LIBRARY
diff --git a/man3type/FILE.3type b/man3type/FILE.3type
index 499a77ec8..d7e0ac21e 100644
--- a/man3type/FILE.3type
+++ b/man3type/FILE.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH FILE 3type 2022-10-30 "Linux man-pages 6.02"
+.TH FILE 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
FILE \- input/output stream
.SH LIBRARY
diff --git a/man3type/aiocb.3type b/man3type/aiocb.3type
index 898d8920a..4b20b18e5 100644
--- a/man3type/aiocb.3type
+++ b/man3type/aiocb.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH aiocb 3type 2022-10-30 "Linux man-pages 6.02"
+.TH aiocb 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
aiocb \- asynchronous I/O control block
.SH LIBRARY
diff --git a/man3type/blkcnt_t.3type b/man3type/blkcnt_t.3type
index d93c7d199..ee7910f7d 100644
--- a/man3type/blkcnt_t.3type
+++ b/man3type/blkcnt_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH blkcnt_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH blkcnt_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
blkcnt_t \- file block counts
.SH LIBRARY
diff --git a/man3type/blksize_t.3type b/man3type/blksize_t.3type
index ec786044a..b7d9da3c7 100644
--- a/man3type/blksize_t.3type
+++ b/man3type/blksize_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH blksize_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH blksize_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
blksize_t \- file block sizes
.SH LIBRARY
diff --git a/man3type/cc_t.3type b/man3type/cc_t.3type
index f66937be9..aab111656 100644
--- a/man3type/cc_t.3type
+++ b/man3type/cc_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH cc_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH cc_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
cc_t, speed_t, tcflag_t \- terminal special characters, baud rates, modes
.SH LIBRARY
diff --git a/man3type/clock_t.3type b/man3type/clock_t.3type
index cbee4ede7..5ea990d09 100644
--- a/man3type/clock_t.3type
+++ b/man3type/clock_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH clock_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH clock_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
clock_t \- system time
.SH LIBRARY
diff --git a/man3type/clockid_t.3type b/man3type/clockid_t.3type
index 2ec720006..b77484937 100644
--- a/man3type/clockid_t.3type
+++ b/man3type/clockid_t.3type
@@ -1,4 +1,4 @@
-.TH clockid_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH clockid_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
clockid_t \- clock ID for the clock and timer functions
.SH LIBRARY
diff --git a/man3type/dev_t.3type b/man3type/dev_t.3type
index b37e0c550..74f479207 100644
--- a/man3type/dev_t.3type
+++ b/man3type/dev_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH dev_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH dev_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
dev_t \- device ID
.SH LIBRARY
diff --git a/man3type/div_t.3type b/man3type/div_t.3type
index 89da0e63c..b85aa45fa 100644
--- a/man3type/div_t.3type
+++ b/man3type/div_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH div_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH div_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
div_t, ldiv_t, lldiv_t, imaxdiv_t \-
quotient and remainder of an integer division
diff --git a/man3type/double_t.3type b/man3type/double_t.3type
index 537b087d2..f46ad9769 100644
--- a/man3type/double_t.3type
+++ b/man3type/double_t.3type
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH double_t 3type 2022-12-15 "Linux man-pages 6.02"
+.TH double_t 3type 2022-12-15 "Linux man-pages 6.03"
.SH NAME
float_t, double_t \- most efficient floating types
.SH LIBRARY
diff --git a/man3type/epoll_event.3type b/man3type/epoll_event.3type
index 36c0c1df5..017d2228f 100644
--- a/man3type/epoll_event.3type
+++ b/man3type/epoll_event.3type
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH epoll_event 3type 2022-10-30 "Linux man-pages 6.02"
+.TH epoll_event 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
epoll_event, epoll_data, epoll_data_t
\- epoll event
diff --git a/man3type/fenv_t.3type b/man3type/fenv_t.3type
index 025ba0c59..c83a69354 100644
--- a/man3type/fenv_t.3type
+++ b/man3type/fenv_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH fenv_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH fenv_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
fenv_t, fexcept_t \- floating-point environment
.SH LIBRARY
diff --git a/man3type/id_t.3type b/man3type/id_t.3type
index 0a96155c1..27e411252 100644
--- a/man3type/id_t.3type
+++ b/man3type/id_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH id_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH id_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pid_t, uid_t, gid_t, id_t \- process/user/group identifier
.SH LIBRARY
diff --git a/man3type/intN_t.3type b/man3type/intN_t.3type
index 1ae2a1cc3..5b3e8f428 100644
--- a/man3type/intN_t.3type
+++ b/man3type/intN_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH intN_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH intN_t 3type 2023-01-31 "Linux man-pages 6.03"
.SH NAME
intN_t, int8_t, int16_t, int32_t, int64_t,
uintN_t, uint8_t, uint16_t, uint32_t, uint64_t
@@ -98,7 +98,7 @@ are only required in implementations that provide integer types with width 64;
and all other types of this form are optional.
.PP
The macros
-.RB [ U ] INT \fIN\fP _WIDTH W
+.RB [ U ] INT \fIN\fP _WIDTH
expand to the width in bits of these types
.RI ( N ).
.PP
diff --git a/man3type/intmax_t.3type b/man3type/intmax_t.3type
index c4c884946..91a91b375 100644
--- a/man3type/intmax_t.3type
+++ b/man3type/intmax_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH intmax_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH intmax_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
intmax_t, uintmax_t \- greatest-width basic integer types
.SH LIBRARY
diff --git a/man3type/intptr_t.3type b/man3type/intptr_t.3type
index aeda41e34..b7e8ead84 100644
--- a/man3type/intptr_t.3type
+++ b/man3type/intptr_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH intptr_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH intptr_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
intptr_t, uintptr_t \- integer types wide enough to hold pointers
.SH LIBRARY
diff --git a/man3type/iovec.3type b/man3type/iovec.3type
index 08cc53b82..79a8f5b6b 100644
--- a/man3type/iovec.3type
+++ b/man3type/iovec.3type
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH iovec 3type 2022-10-30 "Linux man-pages 6.02"
+.TH iovec 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
iovec \- Vector I/O data structure
.SH LIBRARY
diff --git a/man3type/itimerspec.3type b/man3type/itimerspec.3type
index 5efe22bb1..8335b7adb 100644
--- a/man3type/itimerspec.3type
+++ b/man3type/itimerspec.3type
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH itimerspec 3type 2022-10-30 "Linux man-pages 6.02"
+.TH itimerspec 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
timespec \- interval for a timer with nanosecond precision
.SH LIBRARY
diff --git a/man3type/lconv.3type b/man3type/lconv.3type
index 38352abf2..4572ee7b4 100644
--- a/man3type/lconv.3type
+++ b/man3type/lconv.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH lconv 3type 2022-10-30 "Linux man-pages 6.02"
+.TH lconv 3type 2023-02-05 "Linux man-pages 6.03"
.SH NAME
lconv \- numeric formatting information
.SH LIBRARY
@@ -14,16 +14,16 @@ Standard C library
.EX
.B #include <locale.h>
.PP
-.BR "struct lconv {" " /* Values in the \(dqC\(dq locale: */"
-.BR " char *decimal_point;" " /* \(dq.\(dq */"
-.BR " char *thousands_sep;" " /* \(dq\(dq */"
-.BR " char *grouping;" " /* \(dq\(dq */"
-.BR " char *mon_decimal_point;" " /* \(dq\(dq */"
-.BR " char *mon_thousands_sep;" " /* \(dq\(dq */"
-.BR " char *mon_grouping;" " /* \(dq\(dq */"
-.BR " char *positive_sign;" " /* \(dq\(dq */"
-.BR " char *negative_sign;" " /* \(dq\(dq */"
-.BR " char *currency_symbol;" " /* \(dq\(dq */"
+.BR "struct lconv {" " /* Values in the \[dq]C\[dq] locale: */"
+.BR " char *decimal_point;" " /* \[dq].\[dq] */"
+.BR " char *thousands_sep;" " /* \[dq]\[dq] */"
+.BR " char *grouping;" " /* \[dq]\[dq] */"
+.BR " char *mon_decimal_point;" " /* \[dq]\[dq] */"
+.BR " char *mon_thousands_sep;" " /* \[dq]\[dq] */"
+.BR " char *mon_grouping;" " /* \[dq]\[dq] */"
+.BR " char *positive_sign;" " /* \[dq]\[dq] */"
+.BR " char *negative_sign;" " /* \[dq]\[dq] */"
+.BR " char *currency_symbol;" " /* \[dq]\[dq] */"
.BR " char frac_digits;" " /* CHAR_MAX */"
.BR " char p_cs_precedes;" " /* CHAR_MAX */"
.BR " char n_cs_precedes;" " /* CHAR_MAX */"
@@ -31,7 +31,7 @@ Standard C library
.BR " char n_sep_by_space;" " /* CHAR_MAX */"
.BR " char p_sign_posn;" " /* CHAR_MAX */"
.BR " char n_sign_posn;" " /* CHAR_MAX */"
-.BR " char *int_curr_symbol;" " /* \(dq\(dq */"
+.BR " char *int_curr_symbol;" " /* \[dq]\[dq] */"
.BR " char int_frac_digits;" " /* CHAR_MAX */"
.BR " char int_p_cs_precedes;" " /* CHAR_MAX */"
.BR " char int_n_cs_precedes;" " /* CHAR_MAX */"
diff --git a/man3type/mode_t.3type b/man3type/mode_t.3type
index 9e3f496a0..4419f2373 100644
--- a/man3type/mode_t.3type
+++ b/man3type/mode_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH mode_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH mode_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
mode_t \- file attributes
.SH LIBRARY
diff --git a/man3type/off_t.3type b/man3type/off_t.3type
index 421940be3..5f693ff33 100644
--- a/man3type/off_t.3type
+++ b/man3type/off_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH off_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH off_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
off_t, off64_t, loff_t \- file sizes
.SH LIBRARY
diff --git a/man3type/printf_arginfo_size_function.3type b/man3type/printf_arginfo_size_function.3type
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3type/printf_arginfo_size_function.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/printf_function.3type b/man3type/printf_function.3type
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3type/printf_function.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/printf_info.3type b/man3type/printf_info.3type
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3type/printf_info.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/printf_va_arg_function.3type b/man3type/printf_va_arg_function.3type
new file mode 100644
index 000000000..ad10bad38
--- /dev/null
+++ b/man3type/printf_va_arg_function.3type
@@ -0,0 +1 @@
+.so man3head/printf.h.3head
diff --git a/man3type/ptrdiff_t.3type b/man3type/ptrdiff_t.3type
index 674bf3a6c..94f672e67 100644
--- a/man3type/ptrdiff_t.3type
+++ b/man3type/ptrdiff_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ptrdiff_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH ptrdiff_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ptrdiff_t \- count of elements or array index
.SH LIBRARY
diff --git a/man3type/regex_t.3type b/man3type/regex_t.3type
index 2b278fb61..f71a80913 100644
--- a/man3type/regex_t.3type
+++ b/man3type/regex_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH regex_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH regex_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
regex_t, regmatch_t, regoff_t
\- regular expression matching
diff --git a/man3type/size_t.3type b/man3type/size_t.3type
index 7bd14d237..d15a948ef 100644
--- a/man3type/size_t.3type
+++ b/man3type/size_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH size_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH size_t 3type 2023-02-05 "Linux man-pages 6.03"
.SH NAME
size_t, ssize_t \- count of bytes
.SH LIBRARY
@@ -58,7 +58,7 @@ for printing
values.
.TP
.I ssize_t
-Glibc and most other implementations provide a length modifier for
+glibc and most other implementations provide a length modifier for
.I ssize_t
for the
.BR printf (3)
@@ -79,7 +79,7 @@ Although
works for
.I ssize_t
on most implementations,
-portable POSIX programs should avoid using it\(emfor example,
+portable POSIX programs should avoid using it\[em]for example,
by converting the value to
.I intmax_t
and using its length modifier
diff --git a/man3type/sockaddr.3type b/man3type/sockaddr.3type
index 1b3a917f6..9cee8cc9f 100644
--- a/man3type/sockaddr.3type
+++ b/man3type/sockaddr.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH sockaddr 3type 2022-10-30 "Linux man-pages 6.02"
+.TH sockaddr 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sockaddr, sockaddr_storage, sockaddr_in, sockaddr_in6, sockaddr_un, socklen_t,
in_addr, in6_addr, in_addr_t, in_port_t,
diff --git a/man3type/stat.3type b/man3type/stat.3type
index b703cae76..09caa2696 100644
--- a/man3type/stat.3type
+++ b/man3type/stat.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH stat 3type 2022-12-04 "Linux man-pages 6.02"
+.TH stat 3type 2023-02-05 "Linux man-pages 6.03"
.SH NAME
stat \- file status
.SH LIBRARY
@@ -51,7 +51,7 @@ Feature Test Macro Requirements for glibc (see
.nf
Since glibc 2.12:
_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700
- Glibc 2.19 and earlier:
+ glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
@@ -119,10 +119,10 @@ For further information on the above fields, see
.SH VERSIONS
Old kernels and old standards did not support nanosecond timestamp fields.
Instead, there were three timestamp
-.RI fields\(em st_atime ,
+.RI fields\[em] st_atime ,
.IR st_mtime ,
and
-.IR st_ctime \(emtyped
+.IR st_ctime \[em]typed
as
.I time_t
that recorded timestamps with one-second precision.
diff --git a/man3type/time_t.3type b/man3type/time_t.3type
index 611f3c3e0..4951fd1cb 100644
--- a/man3type/time_t.3type
+++ b/man3type/time_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH time_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH time_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
time_t, suseconds_t, useconds_t \- integer time
.SH LIBRARY
diff --git a/man3type/timer_t.3type b/man3type/timer_t.3type
index 77a004cf3..695db0548 100644
--- a/man3type/timer_t.3type
+++ b/man3type/timer_t.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH timer_t 3type 2022-10-30 "Linux man-pages 6.02"
+.TH timer_t 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
timer_t \- timer ID
.SH LIBRARY
diff --git a/man3type/timespec.3type b/man3type/timespec.3type
index 4fe6a3fb6..e08dde3cc 100644
--- a/man3type/timespec.3type
+++ b/man3type/timespec.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH timespec 3type 2022-10-30 "Linux man-pages 6.02"
+.TH timespec 3type 2023-02-05 "Linux man-pages 6.03"
.SH NAME
timespec \- time in seconds and nanoseconds
.SH LIBRARY
@@ -15,15 +15,30 @@ Standard C library
.B #include <time.h>
.PP
.B struct timespec {
-.BR " time_t tv_sec;" " /* Seconds */"
-.BR " long tv_usec;" " /* Nanoseconds [" 0 ", " 999999999 "] */"
+.BR " time_t tv_sec;" " /* Seconds */"
+.RB " /* ... */" " tv_nsec;" \
+" /* Nanoseconds [" 0 ", " 999\[aq]999\[aq]999 "] */"
.B };
.EE
.SH DESCRIPTION
Describes times in seconds and nanoseconds.
+.PP
+.I tv_nsec
+is of an implementation-defined signed type capable of holding the specified range.
+Under glibc, this is usually
+.IR long ,
+and
+.I long long
+on X32.
+It can be safely down-cast to any concrete 32-bit integer type for processing.
.SH STANDARDS
C11 and later;
POSIX.1-2001 and later.
+.SH VERSIONS
+Prior to C23,
+.I tv_nsec
+was
+.IR long .
.SH NOTES
The following headers also provide this type:
.IR <aio.h> ,
@@ -33,37 +48,6 @@ The following headers also provide this type:
.IR <sys/select.h> ,
and
.IR <sys/stat.h> .
-.SH BUGS
-Under glibc,
-.I tv_nsec
-is the
-.I syscall
-long,
-though this affects only fringe architectures like X32,
-which is ILP32, but uses the LP64 AMD64 syscall ABI.
-In reality, the field ends up being defined as:
-.PP
-.in +4n
-.EX
-#if __x86_64__ && __ILP32__ /* == x32 */
- long long tv_nsec;
-#else
- long tv_nsec;
-#endif
-.EE
-.in
-.PP
-This is a long-standing and long-enshrined glibc bug
-.UR https://sourceware.org/bugzilla/show_bug.cgi?id=16437
-.I #16437
-.UE ,
-and an incompatible extension to the standards;
-however, as even a 32-bit
-.I long
-can hold the entire
-.I tv_nsec
-range,
-it's always safe to forcibly down-cast it to the standard type.
.SH SEE ALSO
.BR clock_gettime (2),
.BR clock_nanosleep (2),
diff --git a/man3type/timeval.3type b/man3type/timeval.3type
index 171a98ce4..47920d24b 100644
--- a/man3type/timeval.3type
+++ b/man3type/timeval.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH timeval 3type 2022-10-30 "Linux man-pages 6.02"
+.TH timeval 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
timeval \- time in seconds and microseconds
.SH LIBRARY
diff --git a/man3type/tm.3type b/man3type/tm.3type
index 685a31b28..4ceeec862 100644
--- a/man3type/tm.3type
+++ b/man3type/tm.3type
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH tm 3type 2022-10-30 "Linux man-pages 6.02"
+.TH tm 3type 2023-02-05 "Linux man-pages 6.03"
.SH NAME
tm \- broken-down time
.SH LIBRARY
@@ -43,7 +43,7 @@ Feature Test Macro Requirements for glibc (see
.\" Guarded with __USE_MISC:
Since glibc 2.20:
_DEFAULT_SOURCE
- Glibc 2.20 and earlier:
+ glibc 2.20 and earlier:
_BSD_SOURCE
.fi
.SH DESCRIPTION
diff --git a/man3type/va_list.3type b/man3type/va_list.3type
index 43a2148ca..5cef09e7e 100644
--- a/man3type/va_list.3type
+++ b/man3type/va_list.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH va_list 3type 2022-10-30 "Linux man-pages 6.02"
+.TH va_list 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
va_list \- variable argument list
.SH LIBRARY
diff --git a/man3type/void.3type b/man3type/void.3type
index 4d8b228a6..c4c28f5eb 100644
--- a/man3type/void.3type
+++ b/man3type/void.3type
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH void 3type 2022-10-30 "Linux man-pages 6.02"
+.TH void 3type 2022-10-30 "Linux man-pages 6.03"
.SH NAME
void \- abstract type
.SH SYNOPSIS
diff --git a/man4/cciss.4 b/man4/cciss.4
index 4a44b1d86..164959a31 100644
--- a/man4/cciss.4
+++ b/man4/cciss.4
@@ -6,7 +6,7 @@
.\"
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
-.TH cciss 4 2022-12-15 "Linux man-pages 6.02"
+.TH cciss 4 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cciss \- HP Smart Array block driver
.SH SYNOPSIS
diff --git a/man4/console_codes.4 b/man4/console_codes.4
index d89abe306..0d256a588 100644
--- a/man4/console_codes.4
+++ b/man4/console_codes.4
@@ -15,7 +15,7 @@
.\"
.\" 2006-05-27, Several corrections - Thomas E. Dickey
.\"
-.TH console_codes 4 2022-12-15 "Linux man-pages 6.02"
+.TH console_codes 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
console_codes \- Linux console escape and control sequences
.SH DESCRIPTION
@@ -75,7 +75,7 @@ according to the mapping table) it has one of the 14 codes
1b (ESC), 7f (DEL).
One can set a "display control characters" mode (see below),
and allow 07, 09, 0b, 18, 1a, 7f to be displayed as glyphs.
-On the other hand, in UTF-8 mode all codes 00\(en1f are regarded
+On the other hand, in UTF-8 mode all codes 00\[en]1f are regarded
as control characters, regardless of any "display control characters"
mode.
.PP
@@ -88,40 +88,40 @@ The recognized control characters are BEL, BS, HT, LF, VT, FF,
CR, SO, SI, CAN, SUB, ESC, DEL, CSI.
They do what one would expect:
.TP
-BEL (0x07, \fB\(haG\fP)
+BEL (0x07, \fB\[ha]G\fP)
beeps;
.TP
-BS (0x08, \fB\(haH\fP)
+BS (0x08, \fB\[ha]H\fP)
backspaces one column
(but not past the beginning of the line);
.TP
-HT (0x09, \fB\(haI\fP)
+HT (0x09, \fB\[ha]I\fP)
goes to the next tab stop or to the end of the line
if there is no earlier tab stop;
.TP
-LF (0x0A, \fB\(haJ\fP)
+LF (0x0A, \fB\[ha]J\fP)
.TQ
-VT (0x0B, \fB\(haK\fP)
+VT (0x0B, \fB\[ha]K\fP)
.TQ
-FF (0x0C, \fB\(haL\fP)
+FF (0x0C, \fB\[ha]L\fP)
all give a linefeed,
and if LF/NL (new-line mode) is set also a carriage return;
.TP
-CR (0x0D, \fB\(haM\fP)
+CR (0x0D, \fB\[ha]M\fP)
gives a carriage return;
.TP
-SO (0x0E, \fB\(haN\fP)
+SO (0x0E, \fB\[ha]N\fP)
activates the G1 character set;
.TP
-SI (0x0F, \fB\(haO\fP)
+SI (0x0F, \fB\[ha]O\fP)
activates the G0 character set;
.TP
-CAN (0x18, \fB\(haX\fP)
+CAN (0x18, \fB\[ha]X\fP)
.TQ
-SUB (0x1A, \fB\(haZ\fP)
+SUB (0x1A, \fB\[ha]Z\fP)
abort escape sequences;
.TP
-ESC (0x1B, \fB\(ha[\fP)
+ESC (0x1B, \fB\[ha][\fP)
starts an escape sequence;
.TP
DEL (0x7F)
@@ -185,8 +185,8 @@ T}
ESC ] R Reset palette.
ESC ] P T{
Set palette, with parameter given in 7 hexadecimal digits \fInrrggbb\fP after
-the final P. Here \fIn\fP is the color (0\(en15), and \fIrrggbb\fP indicates
-the red/green/blue values (0\(en255).
+the final P. Here \fIn\fP is the color (0\[en]15), and \fIrrggbb\fP indicates
+the red/green/blue values (0\[en]255).
T}
.TE
.ad
@@ -438,8 +438,8 @@ where \fIx,y\fP is the cursor location.
.\"
These are not described in ECMA-48.
We list the Set Mode sequences;
-the Reset Mode sequences are obtained by replacing the final \(aqh\(aq
-by \(aql\(aq.
+the Reset Mode sequences are obtained by replacing the final \[aq]h\[aq]
+by \[aq]l\[aq].
.TP
ESC [ ? 1 h
DECCKM (default off): When set, the cursor keys send an ESC O prefix,
@@ -470,14 +470,14 @@ DECARM (default on): Set keyboard autorepeat on.
.TP
ESC [ ? 9 h
X10 Mouse Reporting (default off): Set reporting mode to 1 (or reset to
-0)\(emsee below.
+0)\[em]see below.
.TP
ESC [ ? 25 h
DECTECM (default on): Make cursor visible.
.TP
ESC [ ? 1000 h
X11 Mouse Reporting (default off): Set reporting mode to 2 (or reset
-to 0)\(emsee below.
+to 0)\[em]see below.
.\"
.PP
.B Linux Console Private CSI Sequences
@@ -487,7 +487,7 @@ The following sequences are neither ECMA-48 nor native VT102.
They are native to the Linux console driver.
Colors are in SGR parameters:
0 = black, 1 = red, 2 = green, 3 = brown, 4 = blue, 5 = magenta, 6 =
-cyan, 7 = white; 8\(en15 = bright versions of 0\(en7.
+cyan, 7 = white; 8\[en]15 = bright versions of 0\[en]7.
.TS
l lx.
ESC [ 1 ; \fIn\fP ] T{
@@ -536,8 +536,8 @@ b) VT100 graphics \-> PC, c) PC \-> PC, d) user-defined.
There are two character sets, called G0 and G1, and one of them
is the current character set.
(Initially G0.)
-Typing \fB\(haN\fP causes G1 to become current,
-\fB\(haO\fP causes G0 to become current.
+Typing \fB\[ha]N\fP causes G1 to become current,
+\fB\[ha]O\fP causes G0 to become current.
.PP
These variables G0 and G1 point at a translation table, and can be
changed by the user.
@@ -549,11 +549,11 @@ point at translation table a), b), c), and d), respectively.
.PP
The sequence ESC c causes a terminal reset, which is what you want if the
screen is all garbled.
-The oft-advised "echo \(haV\(haO" will make only G0 current,
+The oft-advised "echo \[ha]V\[ha]O" will make only G0 current,
but there is no guarantee that G0 points at table a).
In some distributions there is a program
.BR reset (1)
-that just does "echo \(ha[c".
+that just does "echo \[ha][c".
If your terminfo entry for the console is correct
(and has an entry rs1=\eEc), then "tput reset" will also work.
.PP
@@ -580,7 +580,7 @@ daemon.
The mouse tracking escape sequences generated by
\fBxterm\fP(1) encode numeric parameters in a single character as
\fIvalue\fP+040.
-For example, \(aq!\(aq is 1.
+For example, \[aq]!\[aq] is 1.
The screen coordinate system is 1-based.
.PP
The X10 compatibility mode sends an escape sequence on button press
@@ -625,10 +625,10 @@ was ignored;
ENQ (0x05)
triggered an answerback message;
.TP
-DC1 (0x11, \fB\(haQ\fP, XON)
+DC1 (0x11, \fB\[ha]Q\fP, XON)
resumed transmission;
.TP
-DC3 (0x13, \fB\(haS\fP, XOFF)
+DC3 (0x13, \fB\[ha]S\fP, XOFF)
caused VT100 to ignore (and stop transmitting)
all codes except XOFF and XON.
.PP
@@ -655,7 +655,7 @@ ESC P DCS T{
Device control string (ended by ESC \e)
T}
ESC X SOS Start of string.
-ESC \(ha PM Privacy message (ended by ESC \e)
+ESC \[ha] PM Privacy message (ended by ESC \e)
ESC \e ST String terminator
ESC * ... Designate G2 character set
ESC + ... Designate G3 character set
@@ -667,7 +667,7 @@ The program
ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \e,
ESC Z (it answers ESC [ ? 1 ; 2 c, "I am a VT100 with
advanced video option")
-and ESC \(ha ... ESC \e with the same meanings as indicated above.
+and ESC \[ha] ... ESC \e with the same meanings as indicated above.
It accepts ESC (, ESC ), ESC *, ESC + followed by 0, A, B for
the DEC special character and line drawing set, UK, and US-ASCII,
respectively.
@@ -717,7 +717,7 @@ ESC n LS2 Invoke the G2 character set.
ESC o LS3 Invoke the G3 character set.
ESC | LS3R Invoke the G3 character set as GR.
ESC } LS2R Invoke the G2 character set as GR.
-ESC \(ti LS1R Invoke the G1 character set as GR.
+ESC \[ti] LS1R Invoke the G1 character set as GR.
.TE
.PP
It also recognizes ESC % and provides a more complete UTF-8
diff --git a/man4/cpuid.4 b/man4/cpuid.4
index e10c2dc4d..a4dcbb6f3 100644
--- a/man4/cpuid.4
+++ b/man4/cpuid.4
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH cpuid 4 2022-10-30 "Linux man-pages 6.02"
+.TH cpuid 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
cpuid \- x86 CPUID access device
.SH DESCRIPTION
diff --git a/man4/dsp56k.4 b/man4/dsp56k.4
index 4baba2a9f..f3f012a38 100644
--- a/man4/dsp56k.4
+++ b/man4/dsp56k.4
@@ -4,7 +4,7 @@
.\"
.\" Modified, Thu Jan 27 19:16:19 CET 2000, lars@nocrew.org
.\"
-.TH dsp56k 4 2022-12-04 "Linux man-pages 6.02"
+.TH dsp56k 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dsp56k \- DSP56001 interface device
.SH SYNOPSIS
@@ -70,7 +70,7 @@ Allowed values are in the range 1 to 4,
and is the number of bytes that will be received at a time from the
DSP56001.
These data quantities will either truncated, or padded with
-a null byte (\(aq\e0\(aq) to fit the native 24-bit data format of the DSP56001.
+a null byte (\[aq]\e0\[aq]) to fit the native 24-bit data format of the DSP56001.
.TP
.B DSP56K_HOST_FLAGS
read and write the host flags.
diff --git a/man4/fd.4 b/man4/fd.4
index c9e33a156..126ea7e3a 100644
--- a/man4/fd.4
+++ b/man4/fd.4
@@ -6,7 +6,7 @@
.\"
.\" Modified, Sun Feb 26 15:00:02 1995, faith@cs.unc.edu
.\"
-.TH fd 4 2022-12-15 "Linux man-pages 6.02"
+.TH fd 4 2022-12-15 "Linux man-pages 6.03"
.SH NAME
fd \- floppy disk device
.SH CONFIGURATION
diff --git a/man4/full.4 b/man4/full.4
index 85fc82f05..14c3b3c14 100644
--- a/man4/full.4
+++ b/man4/full.4
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" correction, aeb, 970825
-.TH full 4 2022-10-30 "Linux man-pages 6.02"
+.TH full 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
full \- always full device
.SH CONFIGURATION
diff --git a/man4/fuse.4 b/man4/fuse.4
index 2cf22630c..a23dd1de0 100644
--- a/man4/fuse.4
+++ b/man4/fuse.4
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH fuse 4 2022-10-30 "Linux man-pages 6.02"
+.TH fuse 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fuse \- Filesystem in Userspace (FUSE) device
.SH SYNOPSIS
@@ -471,11 +471,11 @@ operations on the provided filesystem's files and directories to fail with
.BR EIO .
Among the possible incorrect uses are:
.RS
-.IP \(bu 3
+.IP \[bu] 3
changing
.I mode & S_IFMT
for an inode that has previously been reported to the kernel; or
-.IP \(bu
+.IP \[bu]
giving replies to the kernel that are shorter than what the kernel expected.
.RE
.TP
diff --git a/man4/hd.4 b/man4/hd.4
index 5c8858dc4..e13f866cb 100644
--- a/man4/hd.4
+++ b/man4/hd.4
@@ -7,7 +7,7 @@
.\" Modified Mon Oct 21 21:38:51 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" (and some more by aeb)
.\"
-.TH hd 4 2022-10-30 "Linux man-pages 6.02"
+.TH hd 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
hd \- MFM/IDE hard disk devices
.SH DESCRIPTION
@@ -41,7 +41,7 @@ The first form,
Partition numbers are assigned in the order the partitions
are discovered, and only nonempty, nonextended partitions
get a number.
-However, partition numbers 1\(en4 are given to the
+However, partition numbers 1\[en]4 are given to the
four partitions described in the MBR (the "primary" partitions),
regardless of whether they are unused or extended.
Thus, the first logical partition will be
diff --git a/man4/hpsa.4 b/man4/hpsa.4
index 103c09df9..95c821bcc 100644
--- a/man4/hpsa.4
+++ b/man4/hpsa.4
@@ -5,7 +5,7 @@
.\"
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
-.TH hpsa 4 2022-10-30 "Linux man-pages 6.02"
+.TH hpsa 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
hpsa \- HP Smart Array SCSI driver
.SH SYNOPSIS
diff --git a/man4/initrd.4 b/man4/initrd.4
index 7afd823ee..74f8a87fe 100644
--- a/man4/initrd.4
+++ b/man4/initrd.4
@@ -12,7 +12,7 @@
.\" phone: (302)654-5478
.\"
.\" $Id: initrd.4,v 0.9 1997/11/07 05:05:32 kallal Exp kallal $
-.TH initrd 4 2022-10-30 "Linux man-pages 6.02"
+.TH initrd 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
initrd \- boot loader initialized RAM disk
.SH CONFIGURATION
@@ -419,7 +419,7 @@ from the CD-ROM.
.\"
.\"
.SH NOTES
-.IP \(bu 3
+.IP \[bu] 3
With the current kernel, any filesystems that remain mounted when
.I /dev/ram0
is moved from
@@ -430,7 +430,7 @@ continue to be accessible.
However, the
.I /proc/mounts
entries are not updated.
-.IP \(bu
+.IP \[bu]
With the current kernel, if directory
.I /initrd
does not exist, then
@@ -447,7 +447,7 @@ is
fully unmounted, then
.I /dev/ram0
will remain in memory.
-.IP \(bu
+.IP \[bu]
Users of
.I /dev/initrd
should not depend on the behavior given in the above notes.
diff --git a/man4/intro.4 b/man4/intro.4
index f53c0a9da..06afcba7d 100644
--- a/man4/intro.4
+++ b/man4/intro.4
@@ -4,13 +4,13 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sat Jul 24 16:57:14 1993 by Rik Faith (faith@cs.unc.edu)
-.TH intro 4 2022-10-30 "Linux man-pages 6.02"
+.TH intro 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to special files
.SH DESCRIPTION
Section 4 of the manual describes special files (devices).
.SH FILES
-/dev/* \(em device files
+/dev/* \[em] device files
.SH NOTES
.SS Authors and copyright conditions
Look at the header of the manual page source for the author(s) and copyright
diff --git a/man4/lirc.4 b/man4/lirc.4
index 8d1fab4ba..3a5576176 100644
--- a/man4/lirc.4
+++ b/man4/lirc.4
@@ -2,7 +2,7 @@
.\" Copyright (c) 2018, Sean Young <sean@mess.org>
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH lirc 4 2022-12-04 "Linux man-pages 6.02"
+.TH lirc 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
lirc \- lirc devices
.SH DESCRIPTION
@@ -259,10 +259,10 @@ is 0) timeout packages in
.BR LIRC_MODE_MODE2 .
The behavior of this operation has varied across kernel versions:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Since Linux 5.17:
timeout packages are always enabled and this ioctl is a no-op.
-.IP \(bu
+.IP \[bu]
Since Linux 4.16:
timeout packages are enabled by default.
Each time the
@@ -271,7 +271,7 @@ device is opened, the
.B LIRC_SET_REC_TIMEOUT
operation can be used to disable (and, if desired, to later re-enable)
the timeout on the file descriptor.
-.IP \(bu
+.IP \[bu]
In Linux 4.15 and earlier:
timeout packages are disabled by default, and enabling them (via
.BR LIRC_SET_REC_TIMEOUT )
diff --git a/man4/loop.4 b/man4/loop.4
index 495be01a0..6e2e3c56e 100644
--- a/man4/loop.4
+++ b/man4/loop.4
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH loop 4 2022-10-30 "Linux man-pages 6.02"
+.TH loop 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
loop, loop-control \- loop devices
.SH SYNOPSIS
@@ -199,16 +199,16 @@ can do,
.B LOOP_CONFIGURE
can also be used to do the following:
.RS
-.IP \(bu 3
+.IP \[bu] 3
set the correct block size immediately by setting
.IR loop_config.block_size ;
-.IP \(bu
+.IP \[bu]
explicitly request direct I/O mode by setting
.B LO_FLAGS_DIRECT_IO
in
.IR loop_config.info.lo_flags ;
and
-.IP \(bu
+.IP \[bu]
explicitly request read-only mode by setting
.B LO_FLAGS_READ_ONLY
in
diff --git a/man4/lp.4 b/man4/lp.4
index 898b377b0..64bc10014 100644
--- a/man4/lp.4
+++ b/man4/lp.4
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified, Sun Feb 26 15:02:58 1995, faith@cs.unc.edu
-.TH lp 4 2022-12-15 "Linux man-pages 6.02"
+.TH lp 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
lp \- line printer devices
.SH SYNOPSIS
@@ -13,8 +13,8 @@ lp \- line printer devices
.B #include <linux/lp.h>
.fi
.SH CONFIGURATION
-\fBlp\fP[0\(en2] are character devices for the parallel line printers;
-they have major number 6 and minor number 0\(en2.
+\fBlp\fP[0\[en]2] are character devices for the parallel line printers;
+they have major number 6 and minor number 0\[en]2.
The minor numbers
correspond to the printer port base addresses 0x03bc, 0x0378, and 0x0278.
Usually they have mode 220 and are owned by user
diff --git a/man4/mem.4 b/man4/mem.4
index 6f70dff90..fb4aa05b6 100644
--- a/man4/mem.4
+++ b/man4/mem.4
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sat Jul 24 16:59:10 1993 by Rik Faith (faith@cs.unc.edu)
-.TH mem 4 2022-10-30 "Linux man-pages 6.02"
+.TH mem 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
mem, kmem, port \- system memory, kernel memory and system ports
.SH DESCRIPTION
diff --git a/man4/mouse.4 b/man4/mouse.4
index 313b7f05b..d2989c88c 100644
--- a/man4/mouse.4
+++ b/man4/mouse.4
@@ -3,7 +3,7 @@
.\" Updates Nov 1998, Andries Brouwer
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH mouse 4 2022-12-15 "Linux man-pages 6.02"
+.TH mouse 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mouse \- serial mouse interface
.SH CONFIGURATION
@@ -29,9 +29,9 @@ This is the specification, in fact 9 V suffices with most mice.
.PP
The mouse driver can recognize a mouse by dropping RTS to low and raising
it again.
-About 14 ms later the mouse will send 0x4D (\(aqM\(aq) on the data line.
+About 14 ms later the mouse will send 0x4D (\[aq]M\[aq]) on the data line.
After a further 63 ms, a Microsoft-compatible 3-button mouse will send
-0x33 (\(aq3\(aq).
+0x33 (\[aq]3\[aq]).
.PP
The relative mouse movement is sent as
.I dx
diff --git a/man4/msr.4 b/man4/msr.4
index 49b04a310..3f1218028 100644
--- a/man4/msr.4
+++ b/man4/msr.4
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH msr 4 2022-10-30 "Linux man-pages 6.02"
+.TH msr 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
msr \- x86 CPU MSR access device
.SH DESCRIPTION
diff --git a/man4/null.4 b/man4/null.4
index 7bc3548f3..a08c7ff04 100644
--- a/man4/null.4
+++ b/man4/null.4
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sat Jul 24 17:00:12 1993 by Rik Faith (faith@cs.unc.edu)
-.TH null 4 2022-10-30 "Linux man-pages 6.02"
+.TH null 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
null, zero \- data sink
.SH DESCRIPTION
@@ -20,7 +20,7 @@ always return end of file (i.e.,
.BR read (2)
returns 0), whereas reads from
.I /dev/zero
-always return bytes containing zero (\(aq\e0\(aq characters).
+always return bytes containing zero (\[aq]\e0\[aq] characters).
.PP
These devices are typically created by:
.PP
diff --git a/man4/pts.4 b/man4/pts.4
index cf59c0d65..963884b9a 100644
--- a/man4/pts.4
+++ b/man4/pts.4
@@ -5,7 +5,7 @@
.\" Redistribute and revise at will.
.\" %%%LICENSE_END
.\"
-.TH pts 4 2022-10-30 "Linux man-pages 6.02"
+.TH pts 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ptmx, pts \- pseudoterminal master and slave
.SH DESCRIPTION
diff --git a/man4/ram.4 b/man4/ram.4
index 18b1a15a3..8bde755df 100644
--- a/man4/ram.4
+++ b/man4/ram.4
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sat Jul 24 17:01:11 1993 by Rik Faith (faith@cs.unc.edu)
-.TH ram 4 2022-10-30 "Linux man-pages 6.02"
+.TH ram 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ram \- ram disk device
.SH DESCRIPTION
diff --git a/man4/random.4 b/man4/random.4
index be84a7a6b..48664a66e 100644
--- a/man4/random.4
+++ b/man4/random.4
@@ -9,7 +9,7 @@
.\" 2008-06-20, George Spelvin <linux@horizon.com>,
.\" Matt Mackall <mpm@selenic.com>
.\"
-.TH random 4 2022-12-04 "Linux man-pages 6.02"
+.TH random 4 2022-12-04 "Linux man-pages 6.03"
.SH NAME
random, urandom \- kernel random number source devices
.SH SYNOPSIS
diff --git a/man4/rtc.4 b/man4/rtc.4
index 6d6ba4bae..8f4d085b9 100644
--- a/man4/rtc.4
+++ b/man4/rtc.4
@@ -8,7 +8,7 @@
.\" 2006-02-08 Various additions by mtk
.\" 2006-11-26 cleanup, cover the generic rtc framework; David Brownell
.\"
-.TH rtc 4 2022-10-30 "Linux man-pages 6.02"
+.TH rtc 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rtc \- real-time clock
.SH SYNOPSIS
@@ -66,12 +66,12 @@ requests listed below.
.PP
Besides tracking the date and time, many RTCs can also generate
interrupts
-.IP \(bu 3
+.IP \[bu] 3
on every clock update (i.e., once per second);
-.IP \(bu
+.IP \[bu]
at periodic intervals with a frequency that can be set to
any power-of-2 multiple in the range 2 Hz to 8192 Hz;
-.IP \(bu
+.IP \[bu]
on reaching a previously specified alarm time.
.PP
Each of those interrupt sources can be enabled or disabled separately.
diff --git a/man4/sd.4 b/man4/sd.4
index ac3462a6f..0a80ec595 100644
--- a/man4/sd.4
+++ b/man4/sd.4
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sd 4 2022-10-30 "Linux man-pages 6.02"
+.TH sd 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sd \- driver for SCSI disk drives
.SH SYNOPSIS
@@ -31,12 +31,12 @@ where
is the number of the physical drive in order of detection, and
.I partition_number
is as follows:
-.IP \(bu 3
+.IP \[bu] 3
partition 0 is the whole drive
-.IP \(bu
-partitions 1\(en4 are the DOS "primary" partitions
-.IP \(bu
-partitions 5\(en8 are the DOS "extended" (or "logical") partitions
+.IP \[bu]
+partitions 1\[en]4 are the DOS "primary" partitions
+.IP \[bu]
+partitions 5\[en]8 are the DOS "extended" (or "logical") partitions
.PP
For example,
.I /dev/sda
diff --git a/man4/sk98lin.4 b/man4/sk98lin.4
index 088d49571..3b09c86cb 100644
--- a/man4/sk98lin.4
+++ b/man4/sk98lin.4
@@ -6,7 +6,7 @@
.\"
.\" This manpage can be viewed using `groff -Tascii -man sk98lin.4 | less`
.\"
-.TH sk98lin 4 2022-12-15 "Linux man-pages 6.02"
+.TH sk98lin 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sk98lin \- Marvell/SysKonnect Gigabit Ethernet driver v6.21
.SH SYNOPSIS
@@ -154,13 +154,13 @@ which can be found on the Internet:
.PP
.IR VLAN \c
:
-.UR http://www.candelatech.com\:/\(tigreear\:/vlan.html
+.UR http://www.candelatech.com\:/\[ti]greear\:/vlan.html
.UE
.br
.I Link
.IR Aggregation \c
:
-.UR http://www.st.rim.or.jp\:/\(tiyumo
+.UR http://www.st.rim.or.jp\:/\[ti]yumo
.UE
.PP
Note that Marvell/SysKonnect does not offer any support for these
@@ -453,15 +453,15 @@ depending on the load of the system.
If the driver detects that the system load is too high,
the driver tries to shield the system against too much network
load by enabling interrupt moderation.
-If\(emat a later time\(emthe CPU utilization decreases
+If\[em]at a later time\[em]the CPU utilization decreases
again (or if the network load is negligible), the interrupt
moderation will automatically be disabled.
.IP
Interrupt moderation should be used when the driver has to
handle one or more interfaces with a high network load,
-which\(emas a consequence\(emleads also to a high CPU utilization.
+which\[em]as a consequence\[em]leads also to a high CPU utilization.
When moderation is applied in such high network load situations,
-CPU load might be reduced by 20\(en30% on slow computers.
+CPU load might be reduced by 20\[en]30% on slow computers.
.IP
Note that the drawback of using interrupt moderation is an increase of
the round-trip-time (RTT), due to the queuing and serving of
@@ -573,9 +573,9 @@ It denotes also common problems and provides the solution to them.
.SH BUGS
Report any bugs to linux@syskonnect.de
.\" .SH AUTHORS
-.\" Ralph Roesler \(em rroesler@syskonnect.de
+.\" Ralph Roesler \[em] rroesler@syskonnect.de
.\" .br
-.\" Mirko Lindner \(em mlindner@syskonnect.de
+.\" Mirko Lindner \[em] mlindner@syskonnect.de
.SH SEE ALSO
.BR ifconfig (8),
.BR insmod (8),
diff --git a/man4/smartpqi.4 b/man4/smartpqi.4
index c55980fb6..dca9d62e2 100644
--- a/man4/smartpqi.4
+++ b/man4/smartpqi.4
@@ -5,7 +5,7 @@
.\" Written by Kevin Barnett <kevin.barnett@microsemi.com>
.\"
.\" SPDX-License-Identifier: GPL-2.0-only
-.TH smartpqi 4 2022-12-15 "Linux man-pages 6.02"
+.TH smartpqi 4 2022-12-15 "Linux man-pages 6.03"
.SH NAME
smartpqi \- Microsemi Smart Family SCSI driver
.SH SYNOPSIS
diff --git a/man4/st.4 b/man4/st.4
index eeedf0e18..d17041a78 100644
--- a/man4/st.4
+++ b/man4/st.4
@@ -2,7 +2,7 @@
.\" Copyright 1999-2005 Kai Mäkisara (Kai.Makisara@kolumbus.fi)
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH st 4 2022-12-04 "Linux man-pages 6.02"
+.TH st 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
st \- SCSI tape device
.SH SYNOPSIS
@@ -19,7 +19,7 @@ The
.B st
driver provides the interface to a variety of SCSI tape devices.
Currently, the driver takes control of all detected devices of type
-\(lqsequential-access\(rq.
+\[lq]sequential-access\[rq].
The
.B st
driver uses major device number 9.
@@ -33,12 +33,12 @@ concatenated to the five lowermost bits to form the tape number.
The minor numbers can be grouped into
two sets of four numbers: the principal (auto-rewind) minor device numbers,
.IR n ,
-and the \(lqno-rewind\(rq device numbers,
+and the \[lq]no-rewind\[rq] device numbers,
.RI ( n " + 128)."
Devices opened using the principal device number will be sent a
.B REWIND
command when they are closed.
-Devices opened using the \(lqno-rewind\(rq device number will not.
+Devices opened using the \[lq]no-rewind\[rq] device number will not.
(Note that using an auto-rewind device for positioning the tape with,
for instance, mt does not lead to the desired result: the tape is
rewound after the mt command and the next command starts from the
@@ -217,7 +217,7 @@ driver are passed to the
driver.
The definitions below are from
.IR /usr/include/linux/mtio.h :
-.SS MTIOCTOP \(em perform a tape operation
+.SS MTIOCTOP \[em] perform a tape operation
This request takes an argument of type
.IR "(struct mtop\ *)" .
Not all drives support all operations.
@@ -332,7 +332,7 @@ is enabled for the drive (see
below).
.TP
.B MTNOP
-No op\(emflushes the driver's buffer as a side effect.
+No op\[em]flushes the driver's buffer as a side effect.
Should be used before reading status with
.BR MTIOCGET .
.TP
@@ -656,18 +656,18 @@ If the value is zero, the cleaning
bit is always zero.
If the value is one, the TapeAlert data defined
in the SCSI-3 standard is used (not yet implemented).
-Values 2\(en17 are
+Values 2\[en]17 are
reserved.
If the lowest eight bits are >= 18, bits from the extended
sense data are used.
-The bits 9\(en16 specify a mask to select the bits
-to look at and the bits 17\(en23 specify the bit pattern to look for.
+The bits 9\[en]16 specify a mask to select the bits
+to look at and the bits 17\[en]23 specify the bit pattern to look for.
If the bit pattern is zero, one or more bits under the mask indicate
the cleaning request.
If the pattern is nonzero, the pattern must match
the masked sense data byte.
.RE
-.SS MTIOCGET \(em get status
+.SS MTIOCGET \[em] get status
This request takes an argument of type
.IR "(struct mtget\ *)" .
.PP
@@ -755,7 +755,7 @@ found the drive with a tape in place and ready for operation.
\fBGMT_D_1600\fP(\fIx\fP)
.TQ
\fBGMT_D_800\fP(\fIx\fP)
-This \(lqgeneric\(rq status information reports the current
+This \[lq]generic\[rq] status information reports the current
density setting for 9-track \(12" tape drives only.
.TP
\fBGMT_DR_OPEN\fP(\fIx\fP)
@@ -799,7 +799,7 @@ This value is set to \-1 when the block number is unknown (e.g., after
.BR MTBSS ,
or
.BR MTSEEK ).
-.SS MTIOCPOS \(em get tape position
+.SS MTIOCPOS \[em] get tape position
This request takes an argument of type
.I "(struct mtpos\ *)"
and reports the drive's notion of the current tape block number,
@@ -886,7 +886,7 @@ the nonrewind SCSI tape devices
.\" Several other
.\" people have also contributed to the driver.
.SH NOTES
-.IP \(bu 3
+.IP \[bu] 3
When exchanging data between systems, both systems have to agree on
the physical tape block size.
The parameters of a drive after startup
@@ -906,26 +906,26 @@ exchanging data with a foreign system.
The drawback of
this is that a fairly large tape block size has to be used to get
acceptable data transfer rates on the SCSI bus.
-.IP \(bu
+.IP \[bu]
Many programs (e.g.,
.BR tar (1))
allow the user to specify the blocking
factor on the command line.
Note that this determines the physical block
size on tape only in variable-block mode.
-.IP \(bu
+.IP \[bu]
In order to use SCSI tape drives, the basic SCSI driver,
a SCSI-adapter driver and the SCSI tape driver must be either
configured into the kernel or loaded as modules.
If the SCSI-tape
driver is not present, the drive is recognized but the tape support
described in this page is not available.
-.IP \(bu
+.IP \[bu]
The driver writes error messages to the console/log.
The SENSE
codes written into some messages are automatically translated to text
if verbose SCSI messages are enabled in kernel configuration.
-.IP \(bu
+.IP \[bu]
The driver's internal buffering allows good throughput in fixed-block
mode also with small
.BR read (2)
diff --git a/man4/tty.4 b/man4/tty.4
index f9b814432..048ae5d91 100644
--- a/man4/tty.4
+++ b/man4/tty.4
@@ -6,7 +6,7 @@
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2003-04-07 by Michael Kerrisk
.\"
-.TH tty 4 2022-10-30 "Linux man-pages 6.02"
+.TH tty 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
tty \- controlling terminal
.SH DESCRIPTION
diff --git a/man4/ttyS.4 b/man4/ttyS.4
index 44596ce6b..f933cff9d 100644
--- a/man4/ttyS.4
+++ b/man4/ttyS.4
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sat Jul 24 17:03:24 1993 by Rik Faith (faith@cs.unc.edu)
-.TH ttyS 4 2022-10-30 "Linux man-pages 6.02"
+.TH ttyS 4 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ttyS \- serial terminal lines
.SH DESCRIPTION
diff --git a/man4/vcs.4 b/man4/vcs.4
index d1cb73ef1..5007fdc09 100644
--- a/man4/vcs.4
+++ b/man4/vcs.4
@@ -7,7 +7,7 @@
.\" 2007-12-17, Samuel Thibault <samuel.thibault@ens-lyon.org>:
.\" document the VT_GETHIFONTMASK ioctl
.\" "
-.TH vcs 4 2022-12-04 "Linux man-pages 6.02"
+.TH vcs 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
vcs, vcsa \- virtual console memory
.SH DESCRIPTION
@@ -42,7 +42,7 @@ the 9th bit position can be fetched by applying the
.BR ioctl (2)
.B VT_GETHIFONTMASK
operation
-(available in Linux kernels 2.6.18 and above)
+(available since Linux 2.6.18)
on
.IR /dev/tty[1\-63] ;
the value is returned in the
@@ -157,9 +157,9 @@ main(void)
ch = s & 0xff;
if (s & mask)
ch |= 0x100;
- attrib = ((s & \(timask) >> 8);
+ attrib = ((s & \[ti]mask) >> 8);
printf("ch=%#03x attrib=%#02x\en", ch, attrib);
- s \(ha= 0x1000;
+ s \[ha]= 0x1000;
(void) lseek(fd, \-2, SEEK_CUR);
(void) write(fd, &s, 2);
exit(EXIT_SUCCESS);
diff --git a/man4/veth.4 b/man4/veth.4
index 16adf6174..ffbd1581e 100644
--- a/man4/veth.4
+++ b/man4/veth.4
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\"
-.TH veth 4 2022-10-30 "Linux man-pages 6.02"
+.TH veth 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
veth \- Virtual Ethernet Device
.SH DESCRIPTION
@@ -74,7 +74,7 @@ network interface, using commands something like:
# \fBethtool \-S ve_A\fP # Discover interface index of peer
NIC statistics:
peer_ifindex: 16
-# \fBip link | grep \(aq\(ha16:\(aq\fP # Look up interface
+# \fBip link | grep \[aq]\[ha]16:\[aq]\fP # Look up interface
16: ve_B@ve_A: <BROADCAST,MULTICAST,M\-DOWN> mtu 1500 qdisc ...
.EE
.in
diff --git a/man4/wavelan.4 b/man4/wavelan.4
index bd148292e..60193b4ab 100644
--- a/man4/wavelan.4
+++ b/man4/wavelan.4
@@ -8,7 +8,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH wavelan 4 2022-12-04 "Linux man-pages 6.02"
+.TH wavelan 4 2023-02-05 "Linux man-pages 6.03"
.SH NAME
wavelan \- AT&T GIS WaveLAN ISA device driver
.SH SYNOPSIS
@@ -125,9 +125,9 @@ Some of the mentioned features are optional.
You may enable or disable
them by changing flags in the driver header and recompile.
.\" .SH AUTHOR
-.\" Bruce Janson \(em bruce@cs.usyd.edu.au
+.\" Bruce Janson \[em] bruce@cs.usyd.edu.au
.\" .br
-.\" Jean Tourrilhes \(em jt@hplb.hpl.hp.com
+.\" Jean Tourrilhes \[em] jt@hplb.hpl.hp.com
.\" .br
.\" (and others; see source code for details)
.\"
diff --git a/man5/acct.5 b/man5/acct.5
index 2ba10c362..341ff9414 100644
--- a/man5/acct.5
+++ b/man5/acct.5
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH acct 5 2022-12-04 "Linux man-pages 6.02"
+.TH acct 5 2022-12-04 "Linux man-pages 6.03"
.SH NAME
acct \- process accounting file
.SH SYNOPSIS
diff --git a/man5/charmap.5 b/man5/charmap.5
index d1fed10fc..192d12d2e 100644
--- a/man5/charmap.5
+++ b/man5/charmap.5
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH charmap 5 2022-10-30 "Linux man-pages 6.02"
+.TH charmap 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
charmap \- character set description file
.SH DESCRIPTION
diff --git a/man5/core.5 b/man5/core.5
index fd60bb959..cb8149b9d 100644
--- a/man5/core.5
+++ b/man5/core.5
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH core 5 2022-12-12 "Linux man-pages 6.02"
+.TH core 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
core \- core dump file
.SH DESCRIPTION
@@ -26,7 +26,7 @@ for details.
.PP
There are various circumstances in which a core dump file is
not produced:
-.IP \(bu 3
+.IP \[bu] 3
The process does not have permission to write the core file.
(By default, the core file is called
.I core
@@ -43,18 +43,18 @@ or if a file with the same name exists and
is not writable
or is not a regular file
(e.g., it is a directory or a symbolic link).
-.IP \(bu
+.IP \[bu]
A (writable, regular) file with the same name as would be used for the
core dump already exists, but there is more than one hard link to that
file.
-.IP \(bu
+.IP \[bu]
The filesystem where the core dump file would be created is full;
or has run out of inodes; or is mounted read-only;
or the user has reached their quota for the filesystem.
-.IP \(bu
+.IP \[bu]
The directory in which the core dump file is to be created does
not exist.
-.IP \(bu
+.IP \[bu]
The
.B RLIMIT_CORE
(core file size) or
@@ -70,14 +70,14 @@ in
However,
.B RLIMIT_CORE
will be ignored if the system is configured to pipe core dumps to a program.
-.IP \(bu
+.IP \[bu]
The binary being executed by the process does not have read
permission enabled.
(This is a security measure to
ensure that an executable whose contents are not readable
-does not produce a\(empossibly readable\(emcore dump containing
+does not produce a\[em]possibly readable\[em]core dump containing
an image of the executable.)
-.IP \(bu
+.IP \[bu]
The process is executing a set-user-ID (set-group-ID) program
that is owned by a user (group) other than the real user (group)
ID of the process,
@@ -92,7 +92,7 @@ operation, and the description of the
.\" and PR_SET_DUMPABLE to this page?
file in
.BR proc (5).)
-.IP \(bu
+.IP \[bu]
.I /proc/sys/kernel/core_pattern
is empty and
.I /proc/sys/kernel/core_uses_pid
@@ -109,7 +109,7 @@ and such files are hidden unless one uses the
.BR ls (1)
.I \-a
option.
-.IP \(bu
+.IP \[bu]
(Since Linux 3.7)
.\" commit 046d662f481830e652ac34cd112249adde16452a
The kernel was configured without the
@@ -151,7 +151,7 @@ Core file size soft resource limit of crashing process (since Linux 2.6.24).
.TP
%d
.\" Added in git commit 12a2b4b2241e318b4f6df31228e4272d2c2968a1
-Dump mode\(emsame as value returned by
+Dump mode\[em]same as value returned by
.BR prctl (2)
.B PR_GET_DUMPABLE
(since Linux 3.7).
@@ -171,7 +171,7 @@ in
.TP
%E
Pathname of executable,
-with slashes (\(aq/\(aq) replaced by exclamation marks (\(aq!\(aq)
+with slashes (\[aq]/\[aq]) replaced by exclamation marks (\[aq]!\[aq])
(since Linux 3.0).
.TP
%g
@@ -217,7 +217,7 @@ core filename, as is the combination of a % followed by any
character other than those listed above.
All other characters in the template become a literal
part of the core filename.
-The template may include \(aq/\(aq characters, which are interpreted
+The template may include \[aq]/\[aq] characters, which are interpreted
as delimiters for directory names.
The maximum size of the resulting core filename is 128 bytes (64 bytes
before Linux 2.6.19).
@@ -256,7 +256,7 @@ Since Linux 3.6,
if
.I /proc/sys/fs/suid_dumpable
is set to 2 ("suidsafe"), the pattern must be either an absolute pathname
-(starting with a leading \(aq/\(aq character) or a pipe, as defined below.
+(starting with a leading \[aq]/\[aq] character) or a pipe, as defined below.
.SS Piping core dumps to a program
Since Linux 2.6.19, Linux supports an alternate syntax for the
.I /proc/sys/kernel/core_pattern
@@ -287,33 +287,33 @@ the executable name.
Instead of being written to a file, the core dump is given as
standard input to the program.
Note the following points:
-.IP \(bu 3
+.IP \[bu] 3
The program must be specified using an absolute pathname (or a
pathname relative to the root directory, \fI/\fP),
and must immediately follow the '|' character.
-.IP \(bu
+.IP \[bu]
The command-line arguments can include any of
the % specifiers listed above.
For example, to pass the PID of the process that is being dumped, specify
.I %p
in an argument.
-.IP \(bu
+.IP \[bu]
The process created to run the program runs as user and group
.IR root .
-.IP \(bu
+.IP \[bu]
Running as
.I root
does not confer any exceptional security bypasses.
Namely, LSMs (e.g., SELinux) are still active and may prevent the handler
from accessing details about the crashed process via
.IR /proc/ pid.
-.IP \(bu
+.IP \[bu]
The program pathname is interpreted with respect to the initial mount namespace
as it is always executed there.
It is not affected by the settings
(e.g., root directory, mount namespace, current working directory)
of the crashing process.
-.IP \(bu
+.IP \[bu]
The process runs in the initial namespaces
(PID, mount, user, and so on)
and not in the namespaces of the crashing process.
@@ -322,7 +322,7 @@ One can utilize specifiers such as
to find the right
.IR /proc/ pid
directory and probe/enter the crashing process's namespaces if needed.
-.IP \(bu
+.IP \[bu]
The process starts with its current working directory
as the root directory.
If desired, it is possible change to the working directory of
@@ -330,11 +330,11 @@ the dumping process by employing the value provided by the
.I %P
specifier to change to the location of the dumping process via
.IR /proc/ pid /cwd .
-.IP \(bu
+.IP \[bu]
Command-line arguments can be supplied to the
program (since Linux 2.6.24),
delimited by white space (up to a total line length of 128 bytes).
-.IP \(bu
+.IP \[bu]
The
.B RLIMIT_CORE
limit is not enforced for core dumps that are piped to a program
@@ -599,12 +599,12 @@ The following shell session demonstrates the use of this program
.RB "$" " cc \-o core_pattern_pipe_test core_pattern_pipe_test.c"
.RB "$" " su"
Password:
-.RB "#" " echo \(dq|$PWD/core_pattern_pipe_test %p \
-UID=%u GID=%g sig=%s\(dq > \e"
+.RB "#" " echo \[dq]|$PWD/core_pattern_pipe_test %p \
+UID=%u GID=%g sig=%s\[dq] > \e"
.B " /proc/sys/kernel/core_pattern"
.RB "#" " exit"
.RB "$" " sleep 100"
-.BR "\(ha\e" " # type control\-backslash"
+.BR "\[ha]\e" " # type control\-backslash"
Quit (core dumped)
.RB "$" " cat core.info"
argc=5
diff --git a/man5/dir_colors.5 b/man5/dir_colors.5
index 75537d5d4..5fe75c15d 100644
--- a/man5/dir_colors.5
+++ b/man5/dir_colors.5
@@ -10,7 +10,7 @@
.\"
.\" Modified Sat Dec 22 22:25:33 2001 by Martin Schulze <joey@infodrom.org>
.\"
-.TH dir_colors 5 2022-12-15 "Linux man-pages 6.02"
+.TH dir_colors 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
dir_colors \- configuration file for dircolors(1)
.SH DESCRIPTION
@@ -229,7 +229,7 @@ ends in .\fIextension\fR.
Note that the period is included in the
extension, which makes it impossible to specify an extension not
starting with a period, such as
-.B \(ti
+.B \[ti]
for
.B emacs
backup files.
@@ -350,7 +350,7 @@ can, however, be specified, which would have the same effect.
To specify control- or blank characters in the color sequences or
filename extensions, either C-style \e-escaped notation or
.BR stty \-style
-\(ha-notation can be used.
+\[ha]-notation can be used.
The C-style notation
includes the following characters:
.RS
@@ -369,7 +369,7 @@ lb l.
\ex\fInnn Any character (hexadecimal notation)
\e_ Space
\e\e Backslash (\e)
-\e\(ha Caret (\(ha)
+\e\[ha] Caret (\[ha])
\e# Hash mark (#)
.TE
.RE
@@ -382,7 +382,7 @@ hash mark as the first character.
.I /etc/DIR_COLORS
System-wide configuration file.
.TP
-.I \(ti/.dir_colors
+.I \[ti]/.dir_colors
Per-user configuration file.
.PP
This page describes the
diff --git a/man5/elf.5 b/man5/elf.5
index c6e902140..b96322341 100644
--- a/man5/elf.5
+++ b/man5/elf.5
@@ -32,7 +32,7 @@
.\" 2007-10-11, Mike Frysinger <vapier@gentoo.org>, various fixes
.\" 2007-12-08, mtk, Converted from mdoc to man macros
.\"
-.TH ELF 5 2022-10-29 "Linux man-pages 6.02"
+.TH ELF 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
elf \- format of Executable and Linking Format (ELF) files
.SH SYNOPSIS
@@ -187,19 +187,19 @@ It must be filled with
The second byte of the magic number.
It must be filled with
.BR ELFMAG1 .
-(1: \(aqE\(aq)
+(1: \[aq]E\[aq])
.TP
.B EI_MAG2
The third byte of the magic number.
It must be filled with
.BR ELFMAG2 .
-(2: \(aqL\(aq)
+(2: \[aq]L\[aq])
.TP
.B EI_MAG3
The fourth byte of the magic number.
It must be filled with
.BR ELFMAG3 .
-(3: \(aqF\(aq)
+(3: \[aq]F\[aq])
.TP
.B EI_CLASS
The fifth byte identifies the architecture for this binary:
@@ -1435,7 +1435,7 @@ and section names.
One references a string as an index into the string
table section.
The first byte, which is index zero, is defined to hold
-a null byte (\(aq\e0\(aq).
+a null byte (\[aq]\e0\[aq]).
Similarly, a string table's last byte is defined to
hold a null byte, ensuring null termination for all strings.
.PP
diff --git a/man5/filesystems.5 b/man5/filesystems.5
index 350ec61bd..502c0f2d8 100644
--- a/man5/filesystems.5
+++ b/man5/filesystems.5
@@ -4,7 +4,7 @@
.\"
.\" 2007-12-14 mtk Added Reiserfs, XFS, JFS.
.\"
-.TH filesystems 5 2022-12-05 "Linux man-pages 6.02"
+.TH filesystems 5 2022-12-05 "Linux man-pages 6.03"
.nh
.SH NAME
filesystems \- Linux filesystem types: ext, ext2, ext3, ext4, hpfs, iso9660,
diff --git a/man5/ftpusers.5 b/man5/ftpusers.5
index 76270e484..e328003fe 100644
--- a/man5/ftpusers.5
+++ b/man5/ftpusers.5
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ftpusers 5 2022-10-30 "Linux man-pages 6.02"
+.TH ftpusers 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
ftpusers \- list of users that may not log in via the FTP daemon
.SH DESCRIPTION
diff --git a/man5/gai.conf.5 b/man5/gai.conf.5
index 05bb464b8..d39014f20 100644
--- a/man5/gai.conf.5
+++ b/man5/gai.conf.5
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-only
.\"
-.TH gai.conf 5 2022-12-04 "Linux man-pages 6.02"
+.TH gai.conf 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
gai.conf \- getaddrinfo(3) configuration file
.SH DESCRIPTION
@@ -23,7 +23,7 @@ file.
.PP
Each line in the configuration file consists of a keyword and its parameters.
White spaces in any place are ignored.
-Lines starting with \(aq#\(aq are comments and are ignored.
+Lines starting with \[aq]#\[aq] are comments and are ignored.
.PP
The keywords currently recognized are:
.TP
diff --git a/man5/group.5 b/man5/group.5
index c5b7079b8..e2eefddb7 100644
--- a/man5/group.5
+++ b/man5/group.5
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sat Jul 24 17:06:03 1993 by Rik Faith (faith@cs.unc.edu)
-.TH group 5 2022-10-30 "Linux man-pages 6.02"
+.TH group 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
group \- user group file
.SH DESCRIPTION
diff --git a/man5/host.conf.5 b/man5/host.conf.5
index 6c5131604..21aa80924 100644
--- a/man5/host.conf.5
+++ b/man5/host.conf.5
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" 2003-08-23 Martin Schulze <joey@infodrom.org> Updated according to glibc 2.3.2
-.TH host.conf 5 2022-10-30 "Linux man-pages 6.02"
+.TH host.conf 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
host.conf \- resolver configuration file
.SH DESCRIPTION
@@ -18,8 +18,8 @@ The following keywords are recognized:
.I trim
This keyword may be listed more than once.
Each time it should be
-followed by a list of domains, separated by colons (\(aq:\(aq), semicolons
-(\(aq;\(aq) or commas (\(aq,\(aq), with the leading dot.
+followed by a list of domains, separated by colons (\[aq]:\[aq]), semicolons
+(\[aq];\[aq]) or commas (\[aq],\[aq]), with the leading dot.
When set, the
resolver library will automatically trim the given domain name from the
end of any hostname resolved via DNS.
@@ -83,13 +83,13 @@ Overrides the
command.
.TP
.B RESOLV_ADD_TRIM_DOMAINS
-A list of domains, separated by colons (\(aq:\(aq), semicolons (\(aq;\(aq), or
-commas (\(aq,\(aq), with the leading dot, which will be added to the list of
+A list of domains, separated by colons (\[aq]:\[aq]), semicolons (\[aq];\[aq]), or
+commas (\[aq],\[aq]), with the leading dot, which will be added to the list of
domains that should be trimmed.
.TP
.B RESOLV_OVERRIDE_TRIM_DOMAINS
-A list of domains, separated by colons (\(aq:\(aq), semicolons (\(aq;\(aq), or
-commas (\(aq,\(aq), with the leading dot, which will replace the list of
+A list of domains, separated by colons (\[aq]:\[aq]), semicolons (\[aq];\[aq]), or
+commas (\[aq],\[aq]), with the leading dot, which will replace the list of
domains that should be trimmed.
Overrides the
.I trim
diff --git a/man5/hosts.5 b/man5/hosts.5
index 2f2be55f5..519102820 100644
--- a/man5/hosts.5
+++ b/man5/hosts.5
@@ -5,7 +5,7 @@
.\" Minor polishing, aeb
.\" Modified, 2002-06-16, Mike Coleman
.\"
-.TH hosts 5 2022-10-30 "Linux man-pages 6.02"
+.TH hosts 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
hosts \- static table lookup for hostnames
.SH SYNOPSIS
diff --git a/man5/hosts.equiv.5 b/man5/hosts.equiv.5
index 8464a75b2..2048cafd1 100644
--- a/man5/hosts.equiv.5
+++ b/man5/hosts.equiv.5
@@ -1,7 +1,7 @@
.\" Copyright (c) 1995 Peter Tobias <tobias@et-inf.fho-emden.de>
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
-.TH hosts.equiv 5 2022-10-30 "Linux man-pages 6.02"
+.TH hosts.equiv 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
hosts.equiv \- list of hosts and users that are granted "trusted"
.B r
@@ -84,7 +84,7 @@ the particular service
Below are some example
.I /etc/host.equiv
or
-.I \(ti/.rhosts
+.I \[ti]/.rhosts
files.
.PP
Allow any user to log in from any host:
diff --git a/man5/intro.5 b/man5/intro.5
index bb2d993e5..dc8351258 100644
--- a/man5/intro.5
+++ b/man5/intro.5
@@ -5,7 +5,7 @@
.\"
.\" Modified Sat Jul 24 17:06:52 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Jan 14 00:34:09 1996 by Andries Brouwer (aeb@cwi.nl)
-.TH intro 5 2022-10-30 "Linux man-pages 6.02"
+.TH intro 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to file formats and filesystems
.SH DESCRIPTION
diff --git a/man5/issue.5 b/man5/issue.5
index a4b949f96..113ee942a 100644
--- a/man5/issue.5
+++ b/man5/issue.5
@@ -5,7 +5,7 @@
.\"
.\" Modified Sun Jul 25 11:06:22 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH issue 5 2022-10-30 "Linux man-pages 6.02"
+.TH issue 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
issue \- prelogin message and identification file
.SH DESCRIPTION
diff --git a/man5/locale.5 b/man5/locale.5
index d17ad00b8..7af9acafe 100644
--- a/man5/locale.5
+++ b/man5/locale.5
@@ -7,7 +7,7 @@
.\" 2008-06-17 Petr Baudis <pasky@suse.cz>
.\" LC_TIME: Describe first_weekday and first_workday
.\"
-.TH locale 5 2022-12-04 "Linux man-pages 6.02"
+.TH locale 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
locale \- describes a locale definition file
.SH DESCRIPTION
@@ -58,32 +58,32 @@ provided locale definition file should be used as a reference to follow
common glibc conventions.
.SS Locale category sections
The following category sections are defined by POSIX:
-.IP \(bu 3
+.IP \[bu] 3
.B LC_CTYPE
-.IP \(bu
+.IP \[bu]
.B LC_COLLATE
-.IP \(bu
+.IP \[bu]
.B LC_MESSAGES
-.IP \(bu
+.IP \[bu]
.B LC_MONETARY
-.IP \(bu
+.IP \[bu]
.B LC_NUMERIC
-.IP \(bu
+.IP \[bu]
.B LC_TIME
.PP
In addition, since glibc 2.2,
the GNU C library supports the following nonstandard categories:
-.IP \(bu 3
+.IP \[bu] 3
.B LC_ADDRESS
-.IP \(bu
+.IP \[bu]
.B LC_IDENTIFICATION
-.IP \(bu
+.IP \[bu]
.B LC_MEASUREMENT
-.IP \(bu
+.IP \[bu]
.B LC_NAME
-.IP \(bu
+.IP \[bu]
.B LC_PAPER
-.IP \(bu
+.IP \[bu]
.B LC_TELEPHONE
.PP
See
@@ -160,8 +160,8 @@ State, province, or prefecture.
%c
Country, as taken from data record.
.PP
-Each field descriptor may have an \(aqR\(aq after
-the \(aq%\(aq to specify that the
+Each field descriptor may have an \[aq]R\[aq] after
+the \[aq]%\[aq] to specify that the
information is taken from a Romanized version string of the
entity.
.RE
@@ -1262,7 +1262,7 @@ and
states at
https://sourceware.org/glibc/wiki/Locales
the following:
-.IP \(bu 3
+.IP \[bu] 3
The value of the second
.I week
list item specifies the base of the
@@ -1270,14 +1270,14 @@ list item specifies the base of the
and
.I day
lists.
-.IP \(bu
+.IP \[bu]
.I first_weekday
specifies the offset of the first day-of-week in the
.I abday
and
.I day
lists.
-.IP \(bu
+.IP \[bu]
For compatibility reasons, all glibc locales should set the value of the
second
.I week
diff --git a/man5/motd.5 b/man5/motd.5
index 19c71f875..b8dac6b58 100644
--- a/man5/motd.5
+++ b/man5/motd.5
@@ -5,7 +5,7 @@
.\"
.\" Modified Sat Jul 24 17:08:16 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
-.TH motd 5 2022-10-30 "Linux man-pages 6.02"
+.TH motd 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
motd \- message of the day
.SH DESCRIPTION
diff --git a/man5/networks.5 b/man5/networks.5
index 06805241f..9b78308e4 100644
--- a/man5/networks.5
+++ b/man5/networks.5
@@ -4,7 +4,7 @@
.\"
.\" 2008-09-04, mtk, taken from Debian downstream, with a few light edits
.\"
-.TH networks 5 2022-10-30 "Linux man-pages 6.02"
+.TH networks 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
networks \- network name information
.SH DESCRIPTION
diff --git a/man5/nologin.5 b/man5/nologin.5
index 5af811e8e..4d18acb9e 100644
--- a/man5/nologin.5
+++ b/man5/nologin.5
@@ -5,7 +5,7 @@
.\"
.\" Modified Sun Jul 25 11:06:34 1993 by Rik Faith (faith@cs.unc.edu)
.\" Corrected Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr@thyrsus.com)
-.TH nologin 5 2022-10-30 "Linux man-pages 6.02"
+.TH nologin 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
nologin \- prevent unprivileged users from logging into the system
.SH DESCRIPTION
diff --git a/man5/nscd.conf.5 b/man5/nscd.conf.5
index cb21cf951..00852e2f0 100644
--- a/man5/nscd.conf.5
+++ b/man5/nscd.conf.5
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH nscd.conf 5 2022-10-30 "Linux man-pages 6.02"
+.TH nscd.conf 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nscd.conf \- name service cache daemon configuration file
.SH DESCRIPTION
@@ -17,7 +17,7 @@ Each line specifies either an attribute and a value, or an
attribute, service, and a value.
Fields are separated either by SPACE
or TAB characters.
-A \(aq#\(aq (number sign) indicates the beginning of a
+A \[aq]#\[aq] (number sign) indicates the beginning of a
comment; following characters, up to the end of the line,
are not interpreted by nscd.
.PP
@@ -299,25 +299,25 @@ the value of the
attribute.
.PP
Please consider the following advice carefully:
-.IP \(bu 3
+.IP \[bu] 3
If your application will make a second request for the same name,
after more than 1 TTL but before
.B reload\-count
TTLs,
and is sensitive to the latency of a cache miss,
then reloading may be a good idea for you.
-.IP \(bu
+.IP \[bu]
If your name service is configured to return very short TTLs,
and your applications only make requests rarely under normal circumstances,
then reloading may result in additional load on your backing name service
without any benefit to applications,
which is probably a bad idea for you.
-.IP \(bu
+.IP \[bu]
If your name service capacity is limited,
reloading may have the surprising effect of
increasing load on your name service instead of reducing it,
and may be a bad idea for you.
-.IP \(bu
+.IP \[bu]
Setting
.B reload\-count
to
diff --git a/man5/nss.5 b/man5/nss.5
index b90888e12..33bdeed5c 100644
--- a/man5/nss.5
+++ b/man5/nss.5
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-only
.\"
-.TH nss 5 2022-10-30 "Linux man-pages 6.02"
+.TH nss 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nss \- Name Service Switch configuration file
.SH DESCRIPTION
@@ -33,7 +33,7 @@ file contains a number of variable assignments.
Each variable controls the behavior of one or more
NSS modules.
White spaces are ignored.
-Lines beginning with \(aq#\(aq
+Lines beginning with \[aq]#\[aq]
are treated as comments.
.PP
The variables currently recognized are:
diff --git a/man5/nsswitch.conf.5 b/man5/nsswitch.conf.5
index 0d6c72106..940cefd23 100644
--- a/man5/nsswitch.conf.5
+++ b/man5/nsswitch.conf.5
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH NSSWITCH.CONF 5 2022-11-05 "Linux man-pages 6.02"
+.TH nsswitch.conf 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nsswitch.conf \- Name Service Switch configuration file
.SH DESCRIPTION
@@ -122,11 +122,11 @@ services: nis [NOTFOUND=return] files
.PP
The first column is the database name.
The remaining columns specify:
-.IP \(bu 3
+.IP \[bu] 3
One or more service specifications, for example, "files", "db", or "nis".
The order of the services on the line determines the order in which
those services will be queried, in turn, until a result is found.
-.IP \(bu
+.IP \[bu]
Optional actions to perform if a particular result is obtained
from the preceding service, for example, "[NOTFOUND=return]".
.PP
diff --git a/man5/passwd.5 b/man5/passwd.5
index a93dad472..8e47f1fb4 100644
--- a/man5/passwd.5
+++ b/man5/passwd.5
@@ -8,7 +8,7 @@
.\" Modified Sun Jun 18 01:53:57 1995 by Andries Brouwer (aeb@cwi.nl)
.\" Modified Mon Jan 5 20:24:40 MET 1998 by Michael Haardt
.\" (michael@cantor.informatik.rwth-aachen.de)
-.TH PASSWD 5 2022-12-04 "Linux man-pages 6.02"
+.TH passwd 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
passwd \- password file
.SH DESCRIPTION
@@ -27,7 +27,7 @@ hardware was too slow to crack a well-chosen password, and moreover the
basic assumption used to be that of a friendly user-community.
These days many people run some version of the shadow password suite, where
.I /etc/passwd
-has an \(aqx\(aq character in the password field,
+has an \[aq]x\[aq] character in the password field,
and the encrypted passwords are in
.IR /etc/shadow ,
which is readable by the superuser only.
@@ -39,9 +39,9 @@ or in
is an empty string, login is allowed without even asking for a password.
Note that this functionality may be intentionally disabled in applications,
or configurable (for example using the
-.RB \(dq nullok \(dq
+.RB \[dq] nullok \[dq]
or
-.RB \(dq nonull \(dq
+.RB \[dq] nonull \[dq]
arguments to
.BR pam_unix (8)).
.PP
@@ -78,10 +78,10 @@ It should not contain capital letters.
.TP
.I password
This is either the encrypted user password,
-an asterisk (*), or the letter \(aqx\(aq.
+an asterisk (*), or the letter \[aq]x\[aq].
(See
.BR pwconv (8)
-for an explanation of \(aqx\(aq.)
+for an explanation of \[aq]x\[aq].)
.TP
.I UID
The privileged
diff --git a/man5/proc.5 b/man5/proc.5
index 50a9b3fe1..dce1eaa5d 100644
--- a/man5/proc.5
+++ b/man5/proc.5
@@ -34,7 +34,7 @@
.\" to see what information could be imported from that file
.\" into this file.
.\"
-.TH PROC 5 2022-12-15 "Linux man-pages 6.02"
+.TH proc 5 2023-02-10 "Linux man-pages 6.03"
.SH NAME
proc \- process information pseudo-filesystem
.SH DESCRIPTION
@@ -245,12 +245,12 @@ things work as expected for the container "root" user.
.IP
The process's "dumpable" attribute may change for the following reasons:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The attribute was explicitly set via the
.BR prctl (2)
.B PR_SET_DUMPABLE
operation.
-.IP \(bu
+.IP \[bu]
The attribute was reset to the value in the file
.I /proc/sys/fs/suid_dumpable
(described below), for the reasons described in
@@ -498,7 +498,7 @@ unless the process is a zombie.
In the latter case, there is nothing in this file:
that is, a read on this file will return 0 characters.
The command-line arguments appear in this file as a set of
-strings separated by null bytes (\(aq\e0\(aq),
+strings separated by null bytes (\[aq]\e0\[aq]),
with a further null byte after the last string.
.IP
If, after an
@@ -521,7 +521,7 @@ Think of this file as the command line that the process wants you to see.
.\" commit 4614a696bd1c3a9af3a08f0e5874830a85b889d4
This file exposes the process's
.I comm
-value\(emthat is, the command name associated with the process.
+value\[em]that is, the command name associated with the process.
Different threads in the same process may have different
.I comm
values, accessible via
@@ -591,13 +591,13 @@ check; see
This file contains the initial environment that was set
when the currently executing program was started via
.BR execve (2).
-The entries are separated by null bytes (\(aq\e0\(aq),
+The entries are separated by null bytes (\[aq]\e0\[aq]),
and there may be a null byte at the end.
Thus, to print out the environment of process 1, you would do:
.IP
.in +4n
.EX
-.RB "$" " cat /proc/1/environ | tr \(aq\e000\(aq \(aq\en\(aq"
+.RB "$" " cat /proc/1/environ | tr \[aq]\e000\[aq] \[aq]\en\[aq]"
.EE
.in
.IP
@@ -634,7 +634,7 @@ to run another copy of the same executable that is being run by
process
.IR pid .
If the pathname has been unlinked, the symbolic link will contain the
-string \(aq(deleted)\(aq appended to the original pathname.
+string \[aq](deleted)\[aq] appended to the original pathname.
.\" The following was still true as at kernel 2.6.13
In a multithreaded process, the contents of this symbolic link
are not available if the main thread has already terminated
@@ -1148,14 +1148,14 @@ Similar caveats apply here as with
.IR rchar .
.TP
.IR syscr ": read syscalls"
-Attempt to count the number of read I/O operations\(emthat is,
+Attempt to count the number of read I/O operations\[em]that is,
system calls such as
.BR read (2)
and
.BR pread (2).
.TP
.IR syscw ": write syscalls"
-Attempt to count the number of write I/O operations\(emthat is,
+Attempt to count the number of write I/O operations\[em]that is,
system calls such as
.BR write (2)
and
@@ -1372,6 +1372,20 @@ See
.TP
.I [heap]
The process's heap.
+.TP
+.IR [anon: name ] " (since Linux 5.17)"
+.\" Commit 9a10064f5625d5572c3626c1516e0bebc6c9fe9b
+A named private anonymous mapping.
+Set with
+.BR prctl (2)
+.BR PR_SET_VMA_ANON_NAME .
+.TP
+.IR [anon_shmem: name ] " (since Linux 6.2)"
+.\" Commit d09e8ca6cb93bb4b97517a18fbbf7eccb0e9ff43
+A named shared anonymous mapping.
+Set with
+.BR prctl (2)
+.BR PR_SET_VMA_ANON_NAME .
.in
.RE
.IP
@@ -1639,7 +1653,7 @@ with increases (+) or decreases (\-) for factors including:
.\" See mm/oom_kill.c::oom_badness() after Linux 2.6.36
.\" commit a63d83f427fbce97a6cea0db2e64b0eb8435cd10
.RS
-.IP \(bu 3
+.IP \[bu] 3
whether the process is privileged (\-).
.\" More precisely, if it has CAP_SYS_ADMIN or (pre 2.6.36) CAP_SYS_RESOURCE
.RE
@@ -1647,16 +1661,16 @@ whether the process is privileged (\-).
Before Linux 2.6.36
the following factors were also used in the calculation of oom_score:
.RS
-.IP \(bu 3
+.IP \[bu] 3
whether the process creates a lot of children using
.BR fork (2)
(+);
-.IP \(bu
+.IP \[bu]
whether the process has been running a long time,
or has used a lot of CPU time (\-);
-.IP \(bu
+.IP \[bu]
whether the process has a low nice value (i.e., > 0) (+); and
-.IP \(bu
+.IP \[bu]
whether the process is making direct hardware access (\-).
.\" More precisely, if it has CAP_SYS_RAWIO
.RE
@@ -1760,7 +1774,7 @@ If set, the page is in swap space
61 (since Linux 3.5)
The page is a file-mapped page or a shared anonymous page.
.TP
-60\(en58 (since Linux 3.11)
+60\[en]58 (since Linux 3.11)
Zero
.\" Not quite true; see commit 541c237c0923f567c9c4cabb8a81635baadc713f
.TP
@@ -1778,17 +1792,17 @@ PTE is soft-dirty
(see the kernel source file
.IR Documentation/admin\-guide/mm/soft\-dirty.rst ).
.TP
-54\(en0
+54\[en]0
If the page is present in RAM (bit 63), then these bits
provide the page frame number, which can be used to index
.I /proc/kpageflags
and
.IR /proc/kpagecount .
If the page is present in swap (bit 62),
-then bits 4\(en0 give the swap type, and bits 54\(en5 encode the swap offset.
+then bits 4\[en]0 give the swap type, and bits 54\[en]5 encode the swap offset.
.RE
.IP
-Before Linux 3.11, bits 60\(en55 were
+Before Linux 3.11, bits 60\[en]55 were
used to encode the base-2 log of the page size.
.IP
To employ
@@ -1840,7 +1854,7 @@ and in that shell we create some new mounts:
.IP
.in +4n
.EX
-$ \fBPS1=\(aqsh1# \(aq unshare \-Urnm\fP
+$ \fBPS1=\[aq]sh1# \[aq] unshare \-Urnm\fP
sh1# \fBmount \-t tmpfs tmpfs /etc\fP # Mount empty tmpfs at /etc
sh1# \fBmount \-\-bind /usr /dev\fP # Mount /usr at /dev
sh1# \fBecho $$\fP
@@ -1854,7 +1868,7 @@ the initial and new namespaces:
.IP
.in +4n
.EX
-$ \fBPS1=\(aqsh2# \(aq sudo sh\fP
+$ \fBPS1=\[aq]sh2# \[aq] sudo sh\fP
sh2# \fBls /etc | wc \-l\fP # In initial NS
309
sh2# \fBls /proc/27123/root/etc | wc \-l\fP # /etc in other NS
@@ -3059,7 +3073,7 @@ The size in bytes of a certain order is given by the formula:
.IP
.in +4n
.EX
-(2^order)\ *\ PAGE_SIZE
+(2\[ha]order)\ *\ PAGE_SIZE
.EE
.in
.IP
@@ -3246,7 +3260,7 @@ driver driver version
geometry physical and logical geometry
identify in hexadecimal
media media type
-model manufacturer\(aqs model number
+model manufacturer\[aq]s model number
settings drive settings
smart_thresholds IDE disk management thresholds (in hex)
smart_values IDE disk management values (in hex)
@@ -3403,7 +3417,7 @@ file is present only if the
.B CONFIG_PROC_PAGE_MONITOR
kernel configuration option is enabled.
.TP
-.IR /proc/ksyms " (Linux 1.1.23\(en2.5.47)"
+.IR /proc/ksyms " (Linux 1.1.23\[en]2.5.47)"
See
.IR /proc/kallsyms .
.TP
@@ -3613,7 +3627,7 @@ It is more eligible to be reclaimed for other purposes.
.IR HighTotal " %lu"
(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
Total amount of highmem.
-Highmem is all memory above \(ti860 MB of physical memory.
+Highmem is all memory above \[ti]860 MB of physical memory.
Highmem areas are for use by user-space programs,
or for the page cache.
The kernel must use tricks to access
@@ -4215,7 +4229,7 @@ The command
.IP
.in +4n
.EX
-echo \(aqscsi add\-single\-device 1 0 5 0\(aq > /proc/scsi/scsi
+echo \[aq]scsi add\-single\-device 1 0 5 0\[aq] > /proc/scsi/scsi
.EE
.in
.IP
@@ -4302,16 +4316,16 @@ pseudo-file.
This value is not reliable, for the following reasons:
.\" See kernel commit 9c240d757658a3ae9968dd309e674c61f07c7f48
.RS
-.IP \(bu 3
+.IP \[bu] 3
The CPU will not wait for I/O to complete;
iowait is the time that a task is waiting for I/O to complete.
When a CPU goes into idle state for outstanding task I/O,
another task will be scheduled on this CPU.
-.IP \(bu
+.IP \[bu]
On a multi-core CPU,
the task waiting for I/O to complete is not running on any CPU,
so the iowait of each CPU is difficult to calculate.
-.IP \(bu
+.IP \[bu]
The value in this field may
.I decrease
in certain conditions.
@@ -4400,13 +4414,13 @@ the \fI/proc\fP filesystem, and the (deprecated)
.BR sysctl (2)
system call.
.IP
-String values may be terminated by either \(aq\e0\(aq or \(aq\en\(aq.
+String values may be terminated by either \[aq]\e0\[aq] or \[aq]\en\[aq].
.IP
Integer and long values may be written either in decimal or in
hexadecimal notation (e.g., 0x3FFF).
When writing multiple integer or long values, these may be separated
by any of the following whitespace characters:
-\(aq\ \(aq, \(aq\et\(aq, or \(aq\en\(aq.
+\[aq]\ \[aq], \[aq]\et\[aq], or \[aq]\en\[aq].
Using other separators leads to the error
.BR EINVAL .
.TP
@@ -4470,19 +4484,19 @@ The file contains six numbers,
.I want_pages
(pages requested by system) and two dummy values.
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I nr_dentry
is the number of allocated dentries (dcache entries).
This field is unused in Linux 2.2.
-.IP \(bu
+.IP \[bu]
.I nr_unused
is the number of unused dentries.
-.IP \(bu
+.IP \[bu]
.I age_limit
.\" looks like this is unused in Linux 2.2 to Linux 2.6
is the age in seconds after which dcache entries
can be reclaimed when memory is short.
-.IP \(bu
+.IP \[bu]
.I want_pages
.\" looks like this is unused in Linux 2.2 to Linux 2.6
is nonzero when the kernel has called shrink_dcache_pages() and the
@@ -4568,7 +4582,7 @@ and the "free file handles" value is always zero.
.TP
.IR /proc/sys/fs/inode\-max " (only present until Linux 2.2)"
This file contains the maximum number of in-memory inodes.
-This value should be 3\(en4 times larger
+This value should be 3\[en]4 times larger
than the value in
.IR file\-max ,
since \fIstdin\fP, \fIstdout\fP
@@ -4711,28 +4725,28 @@ When the value in this file is 1,
a hard link can be created to a target file
only if one of the following conditions is true:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The calling process has the
.B CAP_FOWNER
capability in its user namespace
and the file UID has a mapping in the namespace.
-.IP \(bu
+.IP \[bu]
The filesystem UID of the process creating the link matches
the owner (UID) of the target file
(as described in
.BR credentials (7),
a process's filesystem UID is normally the same as its effective UID).
-.IP \(bu
+.IP \[bu]
All of the following conditions are true:
.RS 4
-.IP \(bu 3
+.IP \[bu] 3
the target is a regular file;
-.IP \(bu
+.IP \[bu]
the target file does not have its set-user-ID mode bit enabled;
-.IP \(bu
+.IP \[bu]
the target file does not have both its set-group-ID and
group-executable mode bits enabled; and
-.IP \(bu
+.IP \[bu]
the caller has permission to read and write the target file
(either via the file's permissions mask or because it has
suitable capabilities).
@@ -4787,15 +4801,15 @@ no restrictions are placed on following symbolic links
When the value in this file is 1, symbolic links are followed only
in the following circumstances:
.RS
-.IP \(bu 3
+.IP \[bu] 3
the filesystem UID of the process following the link matches
the owner (UID) of the symbolic link
(as described in
.BR credentials (7),
a process's filesystem UID is normally the same as its effective UID);
-.IP \(bu
+.IP \[bu]
the link is not in a sticky world-writable directory; or
-.IP \(bu
+.IP \[bu]
the symbolic link and its parent directory have the same owner (UID)
.RE
.IP
@@ -5005,8 +5019,8 @@ that is:
.IP
.in +4n
.EX
-.RB "#" " echo \(aqdarkstar\(aq > /proc/sys/kernel/hostname"
-.RB "#" " echo \(aqmydomain\(aq > /proc/sys/kernel/domainname"
+.RB "#" " echo \[aq]darkstar\[aq] > /proc/sys/kernel/hostname"
+.RB "#" " echo \[aq]mydomain\[aq] > /proc/sys/kernel/domainname"
.EE
.in
.IP
@@ -5014,8 +5028,8 @@ has the same effect as
.IP
.in +4n
.EX
-.RB "#" " hostname \(aqdarkstar\(aq"
-.RB "#" " domainname \(aqmydomain\(aq"
+.RB "#" " hostname \[aq]darkstar\[aq]"
+.RB "#" " domainname \[aq]mydomain\[aq]"
.EE
.in
.IP
@@ -5181,7 +5195,7 @@ On 32-bit platforms, 32768 is the maximum value for
.IR pid_max .
On 64-bit systems,
.I pid_max
-can be set to any value up to 2^22
+can be set to any value up to 2\[ha]22
.RB ( PID_MAX_LIMIT ,
approximately 4 million).
.\" Prior to Linux 2.6.10, pid_max could also be raised above 32768 on 32-bit
@@ -5876,18 +5890,18 @@ CommitLimit = (total_RAM \- total_huge_TLB) *
.IP
where:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I total_RAM
is the total amount of RAM on the system;
-.IP \(bu
+.IP \[bu]
.I total_huge_TLB
is the amount of memory set aside for huge pages;
-.IP \(bu
+.IP \[bu]
.I overcommit_ratio
is the value in
.IR /proc/sys/vm/overcommit_ratio ;
and
-.IP \(bu
+.IP \[bu]
.I total_swap
is the amount of swap space.
.RE
@@ -6130,7 +6144,7 @@ The output columns are:
.RS
.IP [1] 5
a count of the number of events,
-optionally (since Linux 2.6.23) followed by the letter \(aqD\(aq
+optionally (since Linux 2.6.23) followed by the letter \[aq]D\[aq]
.\" commit c5c061b8f9726bc2c25e19dec227933a13d1e6b7 deferrable timers
if this is a deferrable timer;
.IP [2]
@@ -6875,13 +6889,13 @@ This is useful for analyzing virtual memory behavior.
.SH NOTES
Many files contain strings (e.g., the environment and command line)
that are in the internal format,
-with subfields terminated by null bytes (\(aq\e0\(aq).
+with subfields terminated by null bytes (\[aq]\e0\[aq]).
When inspecting such files, you may find that the results are more readable
if you use a command of the following form to display them:
.PP
.in +4n
.EX
-.RB "$" " cat \fIfile\fP | tr \(aq\e000\(aq \(aq\en\(aq"
+.RB "$" " cat \fIfile\fP | tr \[aq]\e000\[aq] \[aq]\en\[aq]"
.EE
.in
.PP
diff --git a/man5/protocols.5 b/man5/protocols.5
index 8fca70e8b..bdb5ae504 100644
--- a/man5/protocols.5
+++ b/man5/protocols.5
@@ -7,7 +7,7 @@
.\" 2002-09-22 Seth W. Klein <sk@sethwklein.net>
.\" * protocol numbers are now assigned by the IANA
.\"
-.TH protocols 5 2022-10-30 "Linux man-pages 6.02"
+.TH protocols 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
protocols \- protocols definition file
.SH DESCRIPTION
diff --git a/man5/repertoiremap.5 b/man5/repertoiremap.5
index d3e0dbfd6..de0775fe4 100644
--- a/man5/repertoiremap.5
+++ b/man5/repertoiremap.5
@@ -1,6 +1,6 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH repertoiremap 5 2022-10-30 "Linux man-pages 6.02"
+.TH repertoiremap 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
repertoiremap \- map symbolic character names to Unicode code points
.SH DESCRIPTION
diff --git a/man5/resolv.conf.5 b/man5/resolv.conf.5
index f894c8747..3acb50642 100644
--- a/man5/resolv.conf.5
+++ b/man5/resolv.conf.5
@@ -20,7 +20,7 @@
.\"
.\" Added ndots remark by Bernhard R. Link - debian bug #182886
.\"
-.TH resolv.conf 5 2022-12-04 "Linux man-pages 6.02"
+.TH resolv.conf 5 2023-02-05 "Linux man-pages 6.03"
.UC 4
.SH NAME
resolv.conf \- resolver configuration file
@@ -70,8 +70,8 @@ By default, the search list contains one entry, the local domain name.
It is determined from the local hostname returned by
.BR gethostname (2);
the local domain name is taken to be everything after the first
-\(aq.\(aq.
-Finally, if the hostname does not contain a \(aq.\(aq, the
+\[aq].\[aq].
+Finally, if the hostname does not contain a \[aq].\[aq], the
root domain is assumed as the local domain name.
.IP
This may be changed by listing the desired domain search path
diff --git a/man5/rpc.5 b/man5/rpc.5
index a58593ac9..a9dacf428 100644
--- a/man5/rpc.5
+++ b/man5/rpc.5
@@ -5,7 +5,7 @@
.\" %%%LICENSE_END
.\"
.\" @(#)rpc.5 2.2 88/08/03 4.0 RPCSRC; from 1.4 87/11/27 SMI;
-.TH rpc 5 2022-10-30 "Linux man-pages 6.02"
+.TH rpc 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rpc \- RPC program number data base
.SH SYNOPSIS
@@ -20,18 +20,18 @@ can be used in place of RPC program numbers.
Each line has the following information:
.PP
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
name of server for the RPC program
-.IP \(bu
+.IP \[bu]
RPC program number
-.IP \(bu
+.IP \[bu]
aliases
.PD
.PP
Items are separated by any number of blanks and/or
tab characters.
-A \(aq#\(aq indicates the beginning of a comment; characters from
-the \(aq#\(aq to the end of the line are not interpreted by routines
+A \[aq]#\[aq] indicates the beginning of a comment; characters from
+the \[aq]#\[aq] to the end of the line are not interpreted by routines
which search the file.
.PP
Here is an example of the
diff --git a/man5/securetty.5 b/man5/securetty.5
index 3c667b792..d583010fb 100644
--- a/man5/securetty.5
+++ b/man5/securetty.5
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sun Jul 25 11:06:27 1993 by Rik Faith (faith@cs.unc.edu)
-.TH securetty 5 2022-10-30 "Linux man-pages 6.02"
+.TH securetty 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
securetty \- list of terminals on which root is allowed to login
.SH DESCRIPTION
diff --git a/man5/services.5 b/man5/services.5
index cbad9c70a..0bd69b859 100644
--- a/man5/services.5
+++ b/man5/services.5
@@ -11,7 +11,7 @@
.\" Thu Jan 11 12:14:41 1996 Austin Donnelly <and1000@cam.ac.uk>
.\" * Merged two services(5) manpages
.\"
-.TH services 5 2022-10-30 "Linux man-pages 6.02"
+.TH services 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
services \- Internet network services list
.SH DESCRIPTION
diff --git a/man5/shells.5 b/man5/shells.5
index 67cd170c6..36a236060 100644
--- a/man5/shells.5
+++ b/man5/shells.5
@@ -6,7 +6,7 @@
.\" Modified Sat Jul 24 17:11:07 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Nov 21 10:49:38 1993 by Michael Haardt
.\" Modified Sun Feb 26 15:09:15 1995 by Rik Faith (faith@cs.unc.edu)
-.TH shells 5 2022-10-30 "Linux man-pages 6.02"
+.TH shells 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
shells \- pathnames of valid login shells
.SH DESCRIPTION
diff --git a/man5/slabinfo.5 b/man5/slabinfo.5
index 7aa79c718..476fdb26c 100644
--- a/man5/slabinfo.5
+++ b/man5/slabinfo.5
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH slabinfo 5 2022-12-04 "Linux man-pages 6.02"
+.TH slabinfo 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
slabinfo \- kernel slab allocator statistics
.SH SYNOPSIS
@@ -39,11 +39,11 @@ The next line lists the names of the columns in the remaining lines.
Each of the remaining lines displays information about a specified cache.
Following the cache name,
the output shown in each line shows three components for each cache:
-.IP \(bu 3
+.IP \[bu] 3
statistics
-.IP \(bu
+.IP \[bu]
tunables
-.IP \(bu
+.IP \[bu]
slabdata
.PP
The statistics are as follows:
@@ -77,7 +77,7 @@ lines of the following form to
.PP
.in +4n
.EX
-# \fBecho \(aqname limit batchcount sharedfactor\(aq > /proc/slabinfo\fP
+# \fBecho \[aq]name limit batchcount sharedfactor\[aq] > /proc/slabinfo\fP
.EE
.in
.PP
diff --git a/man5/sysfs.5 b/man5/sysfs.5
index 419110006..12ed1f359 100644
--- a/man5/sysfs.5
+++ b/man5/sysfs.5
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sysfs 5 2022-10-30 "Linux man-pages 6.02"
+.TH sysfs 5 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sysfs \- a filesystem for exporting kernel objects
.SH DESCRIPTION
diff --git a/man5/termcap.5 b/man5/termcap.5
index 749b4edd6..8e62ac407 100644
--- a/man5/termcap.5
+++ b/man5/termcap.5
@@ -9,7 +9,7 @@
.\" If mistakes in the capabilities are found, please send a bug report to:
.\" michael@moria.de
.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr@thyrsus.com)
-.TH termcap 5 2022-12-04 "Linux man-pages 6.02"
+.TH termcap 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
termcap \- terminal capability database
.SH DESCRIPTION
@@ -33,11 +33,11 @@ The termcap database is indexed on the
.B TERM
environment variable.
.PP
-Termcap entries must be defined on a single logical line, with \(aq\e\(aq
+Termcap entries must be defined on a single logical line, with \[aq]\e\[aq]
used to suppress the newline.
-Fields are separated by \(aq:\(aq.
+Fields are separated by \[aq]:\[aq].
The first field of each entry starts at the left-hand margin,
-and contains a list of names for the terminal, separated by \(aq|\(aq.
+and contains a list of names for the terminal, separated by \[aq]|\[aq].
.PP
The first subfield may (in BSD termcap entries from 4.3BSD and
earlier) contain a short name consisting of two characters.
@@ -98,7 +98,7 @@ NR ti does not reverse te
nx No padding, must use XON/XOFF
os Terminal can overstrike
ul Terminal underlines although it can not overstrike
-xb Beehive glitch, f1 sends ESCAPE, f2 sends \fB\(haC\fP
+xb Beehive glitch, f1 sends ESCAPE, f2 sends \fB\[ha]C\fP
xn Newline/wraparound glitch
xo Terminal uses xon/xoff protocol
xs Text typed over standout text will be displayed in standout
@@ -190,7 +190,7 @@ AL Insert %1 lines
ac Pairs of block graphic characters to map alternate character set
ae End alternative character set
as Start alternative character set for block graphic characters
-bc Backspace, if not \fB\(haH\fP
+bc Backspace, if not \fB\[ha]H\fP
bl Audio bell
bt Move to previous tab stop
cb Clear from beginning of line to cursor
@@ -356,15 +356,15 @@ ve Normal cursor visible
vi Cursor invisible
vs Standout cursor
wi Set window from line %1 to %2 and column %3 to %4
-XF XOFF character if not \fB\(haS\fP
+XF XOFF character if not \fB\[ha]S\fP
.fi
.PP
There are several ways of defining the control codes for string capabilities:
.PP
Every normal character represents itself,
-except \(aq\(ha\(aq, \(aq\e\(aq, and \(aq%\(aq.
+except \[aq]\[ha]\[aq], \[aq]\e\[aq], and \[aq]%\[aq].
.PP
-A \fB\(hax\fP means Control-x.
+A \fB\[ha]x\fP means Control-x.
Control-A equals 1 decimal.
.PP
\ex means a special code.
@@ -402,9 +402,9 @@ d
Do ASCII output of this parameter with a field with of 3
.TP
%
-Print a \(aq%\(aq
+Print a \[aq]%\[aq]
.PP
-If you use binary output, then you should avoid the null character (\(aq\e0\(aq)
+If you use binary output, then you should avoid the null character (\[aq]\e0\[aq])
because it terminates the string.
You should reset tabulator expansion
if a tabulator can be the binary output of a parameter.
@@ -434,7 +434,7 @@ The following names are available:
\&. down arrow (v)
0 full square (#)
I lantern (#)
-- upper arrow (\(ha)
+- upper arrow (\[ha])
\&' rhombus (+)
a chess board (:)
f degree (')
@@ -453,7 +453,7 @@ u right tee (+)
v bottom tee (+)
w normal tee (+)
x vertical line (|)
-\(ti paragraph (???)
+\[ti] paragraph (???)
.fi
.PP
The values in parentheses are suggested defaults which are used by the
diff --git a/man5/tmpfs.5 b/man5/tmpfs.5
index 38163a05c..64439a1a1 100644
--- a/man5/tmpfs.5
+++ b/man5/tmpfs.5
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH tmpfs 5 2022-11-22 "Linux man-pages 6.02"
+.TH tmpfs 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
tmpfs \- a virtual memory filesystem
.SH DESCRIPTION
@@ -27,13 +27,13 @@ $ sudo mount \-t tmpfs \-o size=10M tmpfs /mnt/mytmpfs
A
.B tmpfs
filesystem has the following properties:
-.IP \(bu 3
+.IP \[bu] 3
The filesystem can employ swap space when physical memory pressure
demands it.
-.IP \(bu
+.IP \[bu]
The filesystem consumes only as much physical memory and swap space
as is required to store the current contents of the filesystem.
-.IP \(bu
+.IP \[bu]
During a remount operation
.RI ( "mount\ \-o\ remount" ),
the filesystem size can be changed
diff --git a/man5/ttytype.5 b/man5/ttytype.5
index 4ce4fd287..375e810c2 100644
--- a/man5/ttytype.5
+++ b/man5/ttytype.5
@@ -7,7 +7,7 @@
.\" Modified Thu Oct 19 21:25:21 MET 1995 by Martin Schulze <joey@infodrom.north.de>
.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond
.\" <esr@thyrsus.com>xk
-.TH ttytype 5 2022-12-04 "Linux man-pages 6.02"
+.TH ttytype 5 2023-01-22 "Linux man-pages 6.03"
.SH NAME
ttytype \- terminal device to default terminal type mapping
.SH DESCRIPTION
@@ -21,7 +21,8 @@ terminal type names
with tty lines.
Each line consists of a terminal type, followed by
whitespace, followed by a tty name (a device name without the
-.IR /dev/ prefix).
+.I /dev/
+prefix).
.PP
This association is used by the program
.BR tset (1)
diff --git a/man5/tzfile.5 b/man5/tzfile.5
index 7d9f73652..aa2170479 100644
--- a/man5/tzfile.5
+++ b/man5/tzfile.5
@@ -7,10 +7,10 @@
.SH NAME
tzfile \- timezone information
.SH DESCRIPTION
-.ie '\(lq'' .ds lq \&"\"
-.el .ds lq \(lq\"
-.ie '\(rq'' .ds rq \&"\"
-.el .ds rq \(rq\"
+.ie '\[lq]'' .ds lq \&"\"
+.el .ds lq \[lq]\"
+.ie '\[rq]'' .ds rq \&"\"
+.el .ds rq \[rq]\"
.de q
\\$3\*(lq\\$1\*(rq\\$2
..
diff --git a/man5/utmp.5 b/man5/utmp.5
index eb2b1b579..f79e33e6a 100644
--- a/man5/utmp.5
+++ b/man5/utmp.5
@@ -8,7 +8,7 @@
.\" Modified 1996-07-20 by Michael Haardt
.\" Modified 1997-07-02 by Nicolás Lichtmaier <nick@debian.org>
.\" Modified 2004-10-31 by aeb, following Gwenole Beauchesne
-.TH utmp 5 2022-12-16 "Linux man-pages 6.02"
+.TH utmp 5 2023-02-05 "Linux man-pages 6.03"
.SH NAME
utmp, wtmp \- login records
.SH SYNOPSIS
@@ -117,7 +117,7 @@ This structure gives the name of the special file associated with the
user's terminal, the user's login name, and the time of login in the form
of
.BR time (2).
-String fields are terminated by a null byte (\(aq\e0\(aq)
+String fields are terminated by a null byte (\[aq]\e0\[aq])
if they are shorter than the size
of the field.
.PP
@@ -196,7 +196,7 @@ The \fIwtmp\fP file records all logins and logouts.
Its format is exactly like \fIutmp\fP except that a null username
indicates a logout
on the associated terminal.
-Furthermore, the terminal name \fB\(ti\fP
+Furthermore, the terminal name \fB\[ti]\fP
with username \fBshutdown\fP or \fBreboot\fP indicates a system
shutdown or reboot and the pair of terminal names \fB|\fP/\fB}\fP
logs the old/new system time when
diff --git a/man6/intro.6 b/man6/intro.6
index e0963ff29..b7cc3e444 100644
--- a/man6/intro.6
+++ b/man6/intro.6
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified Sat Jul 24 17:19:57 1993 by Rik Faith (faith@cs.unc.edu)
-.TH intro 6 2022-10-30 "Linux man-pages 6.02"
+.TH intro 6 2022-10-30 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to games
.SH DESCRIPTION
diff --git a/man7/address_families.7 b/man7/address_families.7
index 836b0b5b1..71f09d59b 100644
--- a/man7/address_families.7
+++ b/man7/address_families.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH address_families 7 2022-10-30 "Linux man-pages 6.02"
+.TH address_families 7 2023-01-22 "Linux man-pages 6.03"
.SH NAME
address_families \- socket address families (domains)
.SH SYNOPSIS
@@ -25,7 +25,7 @@ These families are defined in
The formats currently understood by the Linux kernel include:
.TP
.BR AF_UNIX ", " AF_LOCAL
-Local communication
+Local communication.
For further information, see
.BR unix (7).
.TP
@@ -87,7 +87,7 @@ For further information, see
.BR ipv6 (7).
.TP
.B AF_ROSE
-RATS (Radio Amateur Telecommunications Society)
+RATS (Radio Amateur Telecommunications Society).
Open Systems environment (ROSE) AX.25 packet layer protocol.
For further information, see the resources listed for
.BR AF_NETROM .
@@ -119,7 +119,7 @@ RFC 2367
for details.
.TP
.B AF_NETLINK
-Kernel user interface device
+Kernel user interface device.
For further information, see
.BR netlink (7).
.TP
@@ -171,7 +171,7 @@ RDS over RDMA has no relation to
.B AF_SMC
or
.BR AF_XDP .
-For further information see
+For further information, see
.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7
.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7
.BR rds (7),
@@ -185,7 +185,7 @@ in the Linux kernel source tree.
Socket interface over IrDA
(moved to staging in Linux 4.14, removed in Linux 4.17).
.\" irda-utils: https://sourceforge.net/p/irda/code/HEAD/tree/tags/IRDAUTILS_0_9_18/irda-utils/man/irda.7.gz?format=raw
-For further information see
+For further information, see
.BR irda (7).
.TP
.B AF_PPPOX
diff --git a/man7/aio.7 b/man7/aio.7
index a6292862f..8b7308232 100644
--- a/man7/aio.7
+++ b/man7/aio.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH AIO 7 2022-12-04 "Linux man-pages 6.02"
+.TH AIO 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
aio \- POSIX asynchronous I/O overview
.SH DESCRIPTION
@@ -76,7 +76,7 @@ struct aiocb {
/* Various implementation\-internal fields not shown */
};
-/* Operation codes for \(aqaio_lio_opcode\(aq: */
+/* Operation codes for \[aq]aio_lio_opcode\[aq]: */
enum { LIO_READ, LIO_WRITE, LIO_NOP };
.EE
diff --git a/man7/armscii-8.7 b/man7/armscii-8.7
index 670a785d0..e159adbe5 100644
--- a/man7/armscii-8.7
+++ b/man7/armscii-8.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ARMSCII-8 7 2022-12-15 "Linux man-pages 6.02"
+.TH ARMSCII-8 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
armscii-8 \- Armenian character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/arp.7 b/man7/arp.7
index 6608d4fa9..cf9055e9c 100644
--- a/man7/arp.7
+++ b/man7/arp.7
@@ -10,7 +10,7 @@
.\" Modified June 1999 Andi Kleen
.\" $Id: arp.7,v 1.10 2000/04/27 19:31:38 ak Exp $
.\"
-.TH arp 7 2022-12-15 "Linux man-pages 6.02"
+.TH arp 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
arp \- Linux ARP kernel module.
.SH DESCRIPTION
diff --git a/man7/ascii.7 b/man7/ascii.7
index 23fad5414..40b0ae754 100644
--- a/man7/ascii.7
+++ b/man7/ascii.7
@@ -13,7 +13,7 @@
.\" Modified 1999-08-08 by Michael Haardt (michael@moria.de)
.\" Modified 2004-04-01 by aeb
.\"
-.TH ascii 7 2022-12-15 "Linux man-pages 6.02"
+.TH ascii 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ascii \- ASCII character set encoded in octal, decimal,
and hexadecimal
@@ -25,7 +25,7 @@ The international counterpart of ASCII is known as ISO 646-IRV.
.PP
The following table contains the 128 ASCII characters.
.PP
-C program \f(CW\(aq\eX\(aq\fP escapes are noted.
+C program \f(CW\[aq]\eX\[aq]\fP escapes are noted.
.if t \{\
.ft CW
\}
@@ -33,20 +33,20 @@ C program \f(CW\(aq\eX\(aq\fP escapes are noted.
l l l l | l l l l.
Oct Dec Hex Char Oct Dec Hex Char
_
-000 0 00 NUL \(aq\e0\(aq (null character) 100 64 40 @
+000 0 00 NUL \[aq]\e0\[aq] (null character) 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
-007 7 07 BEL \(aq\ea\(aq (bell) 107 71 47 G
-010 8 08 BS \(aq\eb\(aq (backspace) 110 72 48 H
-011 9 09 HT \(aq\et\(aq (horizontal tab) 111 73 49 I
-012 10 0A LF \(aq\en\(aq (new line) 112 74 4A J
-013 11 0B VT \(aq\ev\(aq (vertical tab) 113 75 4B K
-014 12 0C FF \(aq\ef\(aq (form feed) 114 76 4C L
-015 13 0D CR \(aq\er\(aq (carriage ret) 115 77 4D M
+007 7 07 BEL \[aq]\ea\[aq] (bell) 107 71 47 G
+010 8 08 BS \[aq]\eb\[aq] (backspace) 110 72 48 H
+011 9 09 HT \[aq]\et\[aq] (horizontal tab) 111 73 49 I
+012 10 0A LF \[aq]\en\[aq] (new line) 112 74 4A J
+013 11 0B VT \[aq]\ev\[aq] (vertical tab) 113 75 4B K
+014 12 0C FF \[aq]\ef\[aq] (form feed) 114 76 4C L
+015 13 0D CR \[aq]\er\[aq] (carriage ret) 115 77 4D M
016 14 0E SO (shift out) 116 78 4E N
017 15 0F SI (shift in) 117 79 4F O
020 16 10 DLE (data link escape) 120 80 50 P
@@ -61,9 +61,9 @@ _
031 25 19 EM (end of medium) 131 89 59 Y
032 26 1A SUB (substitute) 132 90 5A Z
033 27 1B ESC (escape) 133 91 5B [
-034 28 1C FS (file separator) 134 92 5C \e \(aq\e\e\(aq
+034 28 1C FS (file separator) 134 92 5C \e \[aq]\e\e\[aq]
035 29 1D GS (group separator) 135 93 5D ]
-036 30 1E RS (record separator) 136 94 5E \(ha
+036 30 1E RS (record separator) 136 94 5E \[ha]
037 31 1F US (unit separator) 137 95 5F \&_
040 32 20 SPACE 140 96 60 \`
041 33 21 ! 141 97 61 a
@@ -72,7 +72,7 @@ _
044 36 24 $ 144 100 64 d
045 37 25 % 145 101 65 e
046 38 26 & 146 102 66 f
-047 39 27 \(aq 147 103 67 g
+047 39 27 \[aq] 147 103 67 g
050 40 28 ( 150 104 68 h
051 41 29 ) 151 105 69 i
052 42 2A * 152 106 6A j
@@ -95,7 +95,7 @@ _
073 59 3B ; 173 123 7B {
074 60 3C < 174 124 7C |
075 61 3D = 175 125 7D }
-076 62 3E > 176 126 7E \(ti
+076 62 3E > 176 126 7E \[ti]
077 63 3F ? 177 127 7F DEL
.TE
.if t \{\
@@ -116,17 +116,17 @@ For convenience, below are more compact tables in hex and decimal.
1: ! 1 A Q a q 1: ) 3 = G Q [ e o y
2: " 2 B R b r 2: * 4 > H R \e f p z
3: # 3 C S c s 3: ! + 5 ? I S ] g q {
-4: $ 4 D T d t 4: " , 6 @ J T \(ha h r |
+4: $ 4 D T d t 4: " , 6 @ J T \[ha] h r |
5: % 5 E U e u 5: # \- 7 A K U _ i s }
-6: & 6 F V f v 6: $ . 8 B L V \` j t \(ti
-7: \(aq 7 G W g w 7: % / 9 C M W a k u DEL
+6: & 6 F V f v 6: $ . 8 B L V \` j t \[ti]
+7: \[aq] 7 G W g w 7: % / 9 C M W a k u DEL
8: ( 8 H X h x 8: & 0 : D N X b l v
-9: ) 9 I Y i y 9: \(aq 1 ; E O Y c m w
+9: ) 9 I Y i y 9: \[aq] 1 ; E O Y c m w
A: * : J Z j z
B: + ; K [ k {
C: , < L \e l |
D: \- = M ] m }
-E: . > N \(ha n \(ti
+E: . > N \[ha] n \[ti]
F: / ? O _ o DEL
.if t \{\
.in
diff --git a/man7/attributes.7 b/man7/attributes.7
index 81fe497e8..512963ca4 100644
--- a/man7/attributes.7
+++ b/man7/attributes.7
@@ -2,7 +2,7 @@
.\" Written by Alexandre Oliva <aoliva@redhat.com>
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH attributes 7 2022-10-30 "Linux man-pages 6.02"
+.TH attributes 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
attributes \- POSIX safety concepts
.SH DESCRIPTION
diff --git a/man7/boot.7 b/man7/boot.7
index 727601ed0..9f782fff9 100644
--- a/man7/boot.7
+++ b/man7/boot.7
@@ -10,7 +10,7 @@
.\"
.\" Modified 2004-11-03 patch from Martin Schulze <joey@infodrom.org>
.\"
-.TH boot 7 2022-10-30 "Linux man-pages 6.02"
+.TH boot 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
boot \- System bootup process based on UNIX System V Release 4
.SH DESCRIPTION
@@ -176,9 +176,9 @@ A primary script (usually \fI/etc/rc\fR) is called from
.BR inittab (5);
this primary script calls each service's script via a link in the
relevant sequencing directory.
-Each link whose name begins with \(aqS\(aq is called with
+Each link whose name begins with \[aq]S\[aq] is called with
the argument "start" (thereby starting the service).
-Each link whose name begins with \(aqK\(aq is called with
+Each link whose name begins with \[aq]K\[aq] is called with
the argument "stop" (thereby stopping the service).
.PP
To define the starting or stopping order within the same run-level,
diff --git a/man7/bootparam.7 b/man7/bootparam.7
index c22b89ae5..85de1315e 100644
--- a/man7/bootparam.7
+++ b/man7/bootparam.7
@@ -6,7 +6,7 @@
.\" (dated v1.0.1, 15/08/95).
.\" Major update, aeb, 970114.
.\"
-.TH bootparam 7 2022-10-30 "Linux man-pages 6.02"
+.TH bootparam 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
bootparam \- introduction to boot time parameters of the Linux kernel
.SH DESCRIPTION
@@ -119,7 +119,7 @@ A symbolic specification has the form
.IR /dev/XXYN ,
where XX designates
the device type (e.g., 'hd' for ST-506 compatible hard disk, with Y in
-\&'a'\(en'd'; 'sd' for SCSI compatible disk, with Y in 'a'\(en'e'),
+\&'a'\[en]'d'; 'sd' for SCSI compatible disk, with Y in 'a'\[en]'e'),
Y the driver letter or
number, and N the number (in decimal) of the partition on this device.
.IP
@@ -299,7 +299,7 @@ will clear the counters.
.SS Boot arguments for ramdisk use
(Only if the kernel was compiled with
.BR CONFIG_BLK_DEV_RAM .)
-In general it is a bad idea to use a ramdisk under Linux\(emthe
+In general it is a bad idea to use a ramdisk under Linux\[em]the
system will use available memory more efficiently itself.
But while booting,
it is often useful to load the floppy contents into a
@@ -468,7 +468,7 @@ for older kernels) in the Linux kernel source.
.B "IDE Disk/CD-ROM Driver Parameters"
The IDE driver accepts a number of parameters, which range from disk
geometry specifications, to support for broken controller chips.
-Drive-specific options are specified by using 'hdX=' with X in 'a'\(en'h'.
+Drive-specific options are specified by using 'hdX=' with X in 'a'\[en]'h'.
.IP
Non-drive-specific options are specified with the prefix 'hd='.
Note that using a drive-specific prefix for a non-drive-specific option
diff --git a/man7/bpf-helpers.7 b/man7/bpf-helpers.7
index bb491bf3b..14523f025 100644
--- a/man7/bpf-helpers.7
+++ b/man7/bpf-helpers.7
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH BPF-HELPERS 7 2022-09-09 "" ""
-.SH NAME
-BPF-HELPERS \- list of eBPF helper functions
.
.nr rst2man-indent-level 0
.
@@ -30,13 +27,16 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "BPF-HELPERS" 7 "2022-09-26" "Linux v6.1"
+.SH NAME
+BPF-HELPERS \- list of eBPF helper functions
.\" Copyright (C) All BPF authors and contributors from 2014 to present.
.
.\" See git log include/uapi/linux/bpf.h in kernel tree for details.
.
.\"
.
-.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.
.\"
.
@@ -53,8 +53,8 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
The extended Berkeley Packet Filter (eBPF) subsystem consists in programs
written in a pseudo\-assembly language, then attached to one of the several
kernel hooks and run in reaction of specific events. This framework differs
-from the older, "classic" BPF (or "cBPF") in several aspects, one of them being
-the ability to call special functions (or "helpers") from within a program.
+from the older, \[dq]classic\[dq] BPF (or \[dq]cBPF\[dq]) in several aspects, one of them being
+the ability to call special functions (or \[dq]helpers\[dq]) from within a program.
These functions are restricted to a white\-list of helpers defined in the
kernel.
.sp
@@ -154,7 +154,7 @@ Current \fIktime\fP\&.
.INDENT 7.0
.TP
.B Description
-This helper is a "printk()\-like" facility for debugging. It
+This helper is a \[dq]printk()\-like\[dq] facility for debugging. It
prints a message defined by format \fIfmt\fP (of size \fIfmt_size\fP)
to file \fI/sys/kernel/debug/tracing/trace\fP from DebugFS, if
available. It can take up to three additional \fBu64\fP
@@ -184,26 +184,26 @@ In the above:
.INDENT 7.0
.INDENT 3.5
.INDENT 0.0
-.IP \(bu 2
+.IP \[bu] 2
\fBtelnet\fP is the name of the current task.
-.IP \(bu 2
+.IP \[bu] 2
\fB470\fP is the PID of the current task.
-.IP \(bu 2
+.IP \[bu] 2
\fB001\fP is the CPU number on which the task is
running.
-.IP \(bu 2
+.IP \[bu] 2
In \fB\&.N..\fP, each character refers to a set of
options (whether irqs are enabled, scheduling
options, whether hard/softirqs are running, level of
preempt_disabled respectively). \fBN\fP means that
\fBTIF_NEED_RESCHED\fP and \fBPREEMPT_NEED_RESCHED\fP
are set.
-.IP \(bu 2
+.IP \[bu] 2
\fB419421.045894\fP is a timestamp.
-.IP \(bu 2
+.IP \[bu] 2
\fB0x00000001\fP is a fake value used by BPF for the
instruction pointer register.
-.IP \(bu 2
+.IP \[bu] 2
\fB<formatted msg>\fP is the message formatted with
\fIfmt\fP\&.
.UNINDENT
@@ -221,7 +221,7 @@ encounters an unknown specifier.
Also, note that \fBbpf_trace_printk\fP() is slow, and should
only be used for debugging purposes. For this reason, a notice
block (spanning several lines) is printed to kernel logs and
-states that the helper should not be used "for production use"
+states that the helper should not be used \[dq]for production use\[dq]
the first time this helper is used (or more precisely, when
\fBtrace_printk\fP() buffers are allocated). For passing values
to user space, perf events should be preferred.
@@ -349,7 +349,7 @@ direct packet access.
.INDENT 7.0
.TP
.B Description
-This special helper is used to trigger a "tail call", or in
+This special helper is used to trigger a \[dq]tail call\[dq], or in
other words, to jump into another eBPF program. The same stack
frame is used (but values on stack and in registers for the
caller are not accessible to the callee). This mechanism allows
@@ -471,7 +471,7 @@ only hold data for one version of cgroups at a time).
.sp
This helper is only available is the kernel was compiled with
the \fBCONFIG_CGROUP_NET_CLASSID\fP configuration option set to
-"\fBy\fP" or to "\fBm\fP".
+\[dq]\fBy\fP\[dq] or to \[dq]\fBm\fP\[dq].
.TP
.B Return
The classid, or 0 for the default unconfigured classid.
@@ -528,14 +528,14 @@ The \fBstruct bpf_tunnel_key\fP is an object that generalizes the
principal parameters used by various tunneling protocols into a
single struct. This way, it can be used to easily make a
decision based on the contents of the encapsulation header,
-"summarized" in this struct. In particular, it holds the IP
+\[dq]summarized\[dq] in this struct. In particular, it holds the IP
address of the remote end (IPv4 or IPv6, depending on the case)
in \fIkey\fP\fB\->remote_ipv4\fP or \fIkey\fP\fB\->remote_ipv6\fP\&. Also,
this struct exposes the \fIkey\fP\fB\->tunnel_id\fP, which is
generally mapped to a VNI (Virtual Network Identifier), making
it programmable together with the \fBbpf_skb_set_tunnel_key\fP() helper.
.sp
-Let\(aqs imagine that the following code is part of a program
+Let\[aq]s imagine that the following code is part of a program
attached to the TC ingress interface, on one end of a GRE
tunnel, and is supposed to filter out all messages coming from
remote ends with IPv4 address other than 10.0.0.1:
@@ -561,9 +561,9 @@ return TC_ACT_OK; // accept packet
.UNINDENT
.sp
This interface can also be used with all encapsulation devices
-that can operate in "collect metadata" mode: instead of having
-one network device per specific configuration, the "collect
-metadata" mode only requires a single device where the
+that can operate in \[dq]collect metadata\[dq] mode: instead of having
+one network device per specific configuration, the \[dq]collect
+metadata\[dq] mode only requires a single device where the
configuration can be extracted from this helper.
.sp
This can be used together with various tunnels such as VXLan,
@@ -752,11 +752,11 @@ and can be used with programs attached to TC or XDP as well,
where it allows for passing data to user space listeners. Data
can be:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
Only custom structs,
-.IP \(bu 2
+.IP \[bu] 2
Only the packet payload, or
-.IP \(bu 2
+.IP \[bu] 2
A combination of both.
.UNINDENT
.TP
@@ -774,7 +774,7 @@ the packet associated to \fIskb\fP, into the buffer pointed by
\fIto\fP\&.
.sp
Since Linux 4.7, usage of this helper has mostly been replaced
-by "direct packet access", enabling packet data to be
+by \[dq]direct packet access\[dq], enabling packet data to be
manipulated with \fIskb\fP\fB\->data\fP and \fIskb\fP\fB\->data_end\fP
pointing respectively to the first byte of packet data and to
the byte after the last byte of packet data. However, it
@@ -854,13 +854,13 @@ to the helper).
.sp
This is flexible enough to be used in several ways:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
With \fIfrom_size\fP == 0, \fIto_size\fP > 0 and \fIseed\fP set to
checksum, it can be used when pushing new data.
-.IP \(bu 2
+.IP \[bu] 2
With \fIfrom_size\fP > 0, \fIto_size\fP == 0 and \fIseed\fP set to
checksum, it can be used when removing data from a packet.
-.IP \(bu 2
+.IP \[bu] 2
With \fIfrom_size\fP > 0, \fIto_size\fP > 0 and \fIseed\fP set to 0, it
can be used to compute a diff. Note that \fIfrom_size\fP and
\fIto_size\fP do not need to be equal.
@@ -885,7 +885,7 @@ Retrieve tunnel options metadata for the packet associated to
of \fIsize\fP\&.
.sp
This helper can be used with encapsulation devices that can
-operate in "collect metadata" mode (please refer to the related
+operate in \[dq]collect metadata\[dq] mode (please refer to the related
note in the description of \fBbpf_skb_get_tunnel_key\fP() for
more details). A particular example where this can be used is
in combination with the Geneve encapsulation protocol, where it
@@ -987,11 +987,11 @@ Check whether \fIskb\fP is a descendant of the cgroup2 held by
.B Return
The return value depends on the result of the test, and can be:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
0, if the \fIskb\fP failed the cgroup2 descendant test.
-.IP \(bu 2
+.IP \[bu] 2
1, if the \fIskb\fP succeeded the cgroup2 descendant test.
-.IP \(bu 2
+.IP \[bu] 2
A negative error code, if an error occurred.
.UNINDENT
.UNINDENT
@@ -1060,11 +1060,11 @@ subset of the cgroup2 hierarchy. The cgroup2 to test is held by
.B Return
The return value depends on the result of the test, and can be:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
1, if current task belongs to the cgroup2.
-.IP \(bu 2
+.IP \[bu] 2
0, if current task does not belong to the cgroup2.
-.IP \(bu 2
+.IP \[bu] 2
A negative error code, if an error occurred.
.UNINDENT
.UNINDENT
@@ -1104,7 +1104,8 @@ direct packet access.
Pull in non\-linear data in case the \fIskb\fP is non\-linear and not
all of \fIlen\fP are part of the linear section. Make \fIlen\fP bytes
from \fIskb\fP readable and writable. If a zero value is passed for
-\fIlen\fP, then the whole length of the \fIskb\fP is pulled.
+\fIlen\fP, then all bytes in the linear part of \fIskb\fP will be made
+readable and writable.
.sp
This helper is only needed for reading and writing with direct
packet access.
@@ -1331,9 +1332,9 @@ The option value of length \fIoptlen\fP is pointed by \fIoptval\fP\&.
.sp
\fIbpf_socket\fP should be one of the following:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBstruct bpf_sock_ops\fP for \fBBPF_PROG_TYPE_SOCK_OPS\fP\&.
-.IP \(bu 2
+.IP \[bu] 2
\fBstruct bpf_sock_addr\fP for \fBBPF_CGROUP_INET4_CONNECT\fP
and \fBBPF_CGROUP_INET6_CONNECT\fP\&.
.UNINDENT
@@ -1341,20 +1342,20 @@ and \fBBPF_CGROUP_INET6_CONNECT\fP\&.
This helper actually implements a subset of \fBsetsockopt()\fP\&.
It supports the following \fIlevel\fPs:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBSOL_SOCKET\fP, which supports the following \fIoptname\fPs:
\fBSO_RCVBUF\fP, \fBSO_SNDBUF\fP, \fBSO_MAX_PACING_RATE\fP,
\fBSO_PRIORITY\fP, \fBSO_RCVLOWAT\fP, \fBSO_MARK\fP,
\fBSO_BINDTODEVICE\fP, \fBSO_KEEPALIVE\fP\&.
-.IP \(bu 2
+.IP \[bu] 2
\fBIPPROTO_TCP\fP, which supports the following \fIoptname\fPs:
\fBTCP_CONGESTION\fP, \fBTCP_BPF_IW\fP,
\fBTCP_BPF_SNDCWND_CLAMP\fP, \fBTCP_SAVE_SYN\fP,
\fBTCP_KEEPIDLE\fP, \fBTCP_KEEPINTVL\fP, \fBTCP_KEEPCNT\fP,
\fBTCP_SYNCNT\fP, \fBTCP_USER_TIMEOUT\fP, \fBTCP_NOTSENT_LOWAT\fP\&.
-.IP \(bu 2
+.IP \[bu] 2
\fBIPPROTO_IP\fP, which supports \fIoptname\fP \fBIP_TOS\fP\&.
-.IP \(bu 2
+.IP \[bu] 2
\fBIPPROTO_IPV6\fP, which supports \fIoptname\fP \fBIPV6_TCLASS\fP\&.
.UNINDENT
.TP
@@ -1373,40 +1374,42 @@ By default, the helper will reset any offloaded checksum
indicator of the skb to CHECKSUM_NONE. This can be avoided
by the following flag:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_F_ADJ_ROOM_NO_CSUM_RESET\fP: Do not reset offloaded
checksum data of the skb to CHECKSUM_NONE.
.UNINDENT
.sp
There are two supported modes at this time:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_ADJ_ROOM_MAC\fP: Adjust room at the mac layer
-(room space is added or removed below the layer 2 header).
-.IP \(bu 2
+(room space is added or removed between the layer 2 and
+layer 3 headers).
+.IP \[bu] 2
\fBBPF_ADJ_ROOM_NET\fP: Adjust room at the network layer
-(room space is added or removed below the layer 3 header).
+(room space is added or removed between the layer 3 and
+layer 4 headers).
.UNINDENT
.sp
The following flags are supported at this time:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_F_ADJ_ROOM_FIXED_GSO\fP: Do not adjust gso_size.
Adjusting mss in this way is not allowed for datagrams.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_F_ADJ_ROOM_ENCAP_L3_IPV4\fP,
\fBBPF_F_ADJ_ROOM_ENCAP_L3_IPV6\fP:
Any new space is reserved to hold a tunnel header.
Configure skb offsets and other fields accordingly.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_F_ADJ_ROOM_ENCAP_L4_GRE\fP,
\fBBPF_F_ADJ_ROOM_ENCAP_L4_UDP\fP:
Use with ENCAP_L3 flags to further specify the tunnel type.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_F_ADJ_ROOM_ENCAP_L2\fP(\fIlen\fP):
Use with ENCAP_L3/L4 flags to further specify the tunnel
type; \fIlen\fP is the length of the inner MAC header.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_F_ADJ_ROOM_ENCAP_L2_ETH\fP:
Use with BPF_F_ADJ_ROOM_ENCAP_L2 flag to further specify the
L2 type as Ethernet.
@@ -1444,7 +1447,7 @@ interfaces in the map, with BPF_F_EXCLUDE_INGRESS the ingress
interface will be excluded when do broadcasting.
.sp
See also \fBbpf_redirect\fP(), which only supports redirecting
-to an ifindex, but doesn\(aqt require a map to do so.
+to an ifindex, but doesn\[aq]t require a map to do so.
.TP
.B Return
\fBXDP_REDIRECT\fP on success, or the value of the two lower bits
@@ -1613,9 +1616,9 @@ The retrieved value is stored in the structure pointed by
.sp
\fIbpf_socket\fP should be one of the following:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBstruct bpf_sock_ops\fP for \fBBPF_PROG_TYPE_SOCK_OPS\fP\&.
-.IP \(bu 2
+.IP \[bu] 2
\fBstruct bpf_sock_addr\fP for \fBBPF_CGROUP_INET4_CONNECT\fP
and \fBBPF_CGROUP_INET6_CONNECT\fP\&.
.UNINDENT
@@ -1623,12 +1626,12 @@ and \fBBPF_CGROUP_INET6_CONNECT\fP\&.
This helper actually implements a subset of \fBgetsockopt()\fP\&.
It supports the following \fIlevel\fPs:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBIPPROTO_TCP\fP, which supports \fIoptname\fP
\fBTCP_CONGESTION\fP\&.
-.IP \(bu 2
+.IP \[bu] 2
\fBIPPROTO_IP\fP, which supports \fIoptname\fP \fBIP_TOS\fP\&.
-.IP \(bu 2
+.IP \[bu] 2
\fBIPPROTO_IPV6\fP, which supports \fIoptname\fP \fBIPV6_TCLASS\fP\&.
.UNINDENT
.TP
@@ -1685,13 +1688,13 @@ supported in the current kernel.
.sp
\fIargval\fP is a flag array which can combine these flags:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_SOCK_OPS_RTO_CB_FLAG\fP (retransmission time out)
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_SOCK_OPS_RETRANS_CB_FLAG\fP (retransmission)
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_SOCK_OPS_STATE_CB_FLAG\fP (TCP state change)
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_SOCK_OPS_RTT_CB_FLAG\fP (every RTT)
.UNINDENT
.sp
@@ -1707,15 +1710,15 @@ callback:
Here are some examples of where one could call such eBPF
program:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
When RTO fires.
-.IP \(bu 2
+.IP \[bu] 2
When a packet is retransmitted.
-.IP \(bu 2
+.IP \[bu] 2
When the connection terminates.
-.IP \(bu 2
+.IP \[bu] 2
When a packet is sent.
-.IP \(bu 2
+.IP \[bu] 2
When a packet is received.
.UNINDENT
.TP
@@ -1753,11 +1756,11 @@ the next \fIbytes\fP (number of bytes) of message \fImsg\fP\&.
.sp
For example, this helper can be used in the following cases:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
A single \fBsendmsg\fP() or \fBsendfile\fP() system call
contains multiple logical messages that the eBPF program is
supposed to read and for which it should apply a verdict.
-.IP \(bu 2
+.IP \[bu] 2
An eBPF program only cares to read the first \fIbytes\fP of a
\fImsg\fP\&. If the message has a large payload, then setting up
and calling the eBPF program repeatedly for all bytes, even
@@ -1853,7 +1856,7 @@ single IP address on a host that has multiple IP configured.
.sp
This helper works for IPv4 and IPv6, TCP and UDP sockets. The
domain (\fIaddr\fP\fB\->sa_family\fP) must be \fBAF_INET\fP (or
-\fBAF_INET6\fP). It\(aqs advised to pass zero port (\fBsin_port\fP
+\fBAF_INET6\fP). It\[aq]s advised to pass zero port (\fBsin_port\fP
or \fBsin6_port\fP) which triggers IP_BIND_ADDRESS_NO_PORT\-like
behavior and lets the kernel efficiently pick up an unused
port as long as 4\-tuple is unique. Passing non\-zero port might
@@ -1886,7 +1889,7 @@ direct packet access.
.TP
.B Description
Retrieve the XFRM state (IP transform framework, see also
-\fBip\-xfrm(8)\fP) at \fIindex\fP in XFRM "security path" for \fIskb\fP\&.
+\fBip\-xfrm(8)\fP) at \fIindex\fP in XFRM \[dq]security path\[dq] for \fIskb\fP\&.
.sp
The retrieved value is stored in the \fBstruct bpf_xfrm_state\fP
pointed by \fIxfrm_state\fP and of length \fIsize\fP\&.
@@ -1921,8 +1924,18 @@ the following flags:
Collect a user space stack instead of a kernel stack.
.TP
.B \fBBPF_F_USER_BUILD_ID\fP
-Collect buildid+offset instead of ips for user stack,
-only valid if \fBBPF_F_USER_STACK\fP is also specified.
+Collect (build_id, file_offset) instead of ips for user
+stack, only valid if \fBBPF_F_USER_STACK\fP is also
+specified.
+.sp
+\fIfile_offset\fP is an offset relative to the beginning
+of the executable or shared object file backing the vma
+which the \fIip\fP falls in. It is \fInot\fP an offset relative
+to that object\[aq]s base address. Accordingly, it must be
+adjusted by adding (sh_addr \- sh_offset), where
+sh_{addr,offset} correspond to the executable section
+containing \fIfile_offset\fP in the object, for comparisons
+to symbols\[aq] st_value to be valid.
.UNINDENT
.sp
\fBbpf_get_stack\fP() can collect up to
@@ -1960,16 +1973,16 @@ base offset to start from. \fIstart_header\fP can be one of:
.INDENT 7.0
.TP
.B \fBBPF_HDR_START_MAC\fP
-Base offset to load data from is \fIskb\fP\(aqs mac header.
+Base offset to load data from is \fIskb\fP\[aq]s mac header.
.TP
.B \fBBPF_HDR_START_NET\fP
-Base offset to load data from is \fIskb\fP\(aqs network header.
+Base offset to load data from is \fIskb\fP\[aq]s network header.
.UNINDENT
.sp
-In general, "direct packet access" is the preferred method to
+In general, \[dq]direct packet access\[dq] is the preferred method to
access packet data, however, this helper is in particular useful
in socket filters where \fIskb\fP\fB\->data\fP does not always point
-to the start of the mac header and where "direct packet access"
+to the start of the mac header and where \[dq]direct packet access\[dq]
is not available.
.TP
.B Return
@@ -2009,11 +2022,11 @@ ingress).
.TP
.B Return
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
< 0 if any input argument is invalid
-.IP \(bu 2
+.IP \[bu] 2
0 on success (packet is forwarded, nexthop neighbor exists)
-.IP \(bu 2
+.IP \[bu] 2
> 0 one of \fBBPF_FIB_LKUP_RET_\fP codes explaining why the
packet is not forwarded or needs assist from full stack
.UNINDENT
@@ -2224,7 +2237,7 @@ the program.
.sp
This helper is only available is the kernel was compiled with
the \fBCONFIG_BPF_LIRC_MODE2\fP configuration option set to
-"\fBy\fP".
+\[dq]\fBy\fP\[dq].
.TP
.B Return
0
@@ -2254,7 +2267,7 @@ The \fIprotocol\fP is the decoded protocol number (see
.sp
This helper is only available is the kernel was compiled with
the \fBCONFIG_BPF_LIRC_MODE2\fP configuration option set to
-"\fBy\fP".
+\[dq]\fBy\fP\[dq].
.TP
.B Return
0
@@ -2533,7 +2546,7 @@ the program.
.sp
This helper is only available is the kernel was compiled with
the \fBCONFIG_BPF_LIRC_MODE2\fP configuration option set to
-"\fBy\fP".
+\[dq]\fBy\fP\[dq].
.TP
.B Return
0
@@ -2552,55 +2565,55 @@ spinlock can (and must) later be released with a call to
Spinlocks in BPF programs come with a number of restrictions
and constraints:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBbpf_spin_lock\fP objects are only allowed inside maps of
types \fBBPF_MAP_TYPE_HASH\fP and \fBBPF_MAP_TYPE_ARRAY\fP (this
list could be extended in the future).
-.IP \(bu 2
+.IP \[bu] 2
BTF description of the map is mandatory.
-.IP \(bu 2
+.IP \[bu] 2
The BPF program can take ONE lock at a time, since taking two
or more could cause dead locks.
-.IP \(bu 2
+.IP \[bu] 2
Only one \fBstruct bpf_spin_lock\fP is allowed per map element.
-.IP \(bu 2
+.IP \[bu] 2
When the lock is taken, calls (either BPF to BPF or helpers)
are not allowed.
-.IP \(bu 2
+.IP \[bu] 2
The \fBBPF_LD_ABS\fP and \fBBPF_LD_IND\fP instructions are not
allowed inside a spinlock\-ed region.
-.IP \(bu 2
+.IP \[bu] 2
The BPF program MUST call \fBbpf_spin_unlock\fP() to release
the lock, on all execution paths, before it returns.
-.IP \(bu 2
+.IP \[bu] 2
The BPF program can access \fBstruct bpf_spin_lock\fP only via
the \fBbpf_spin_lock\fP() and \fBbpf_spin_unlock\fP()
helpers. Loading or storing data into the \fBstruct
bpf_spin_lock\fP \fIlock\fP\fB;\fP field of a map is not allowed.
-.IP \(bu 2
+.IP \[bu] 2
To use the \fBbpf_spin_lock\fP() helper, the BTF description
of the map value must be a struct and have \fBstruct
bpf_spin_lock\fP \fIanyname\fP\fB;\fP field at the top level.
Nested lock inside another struct is not allowed.
-.IP \(bu 2
+.IP \[bu] 2
The \fBstruct bpf_spin_lock\fP \fIlock\fP field in a map value must
be aligned on a multiple of 4 bytes in that value.
-.IP \(bu 2
+.IP \[bu] 2
Syscall with command \fBBPF_MAP_LOOKUP_ELEM\fP does not copy
the \fBbpf_spin_lock\fP field to user space.
-.IP \(bu 2
+.IP \[bu] 2
Syscall with command \fBBPF_MAP_UPDATE_ELEM\fP, or update from
a BPF program, do not update the \fBbpf_spin_lock\fP field.
-.IP \(bu 2
+.IP \[bu] 2
\fBbpf_spin_lock\fP cannot be on the stack or inside a
networking packet (it can only be inside of a map values).
-.IP \(bu 2
+.IP \[bu] 2
\fBbpf_spin_lock\fP is available to root only.
-.IP \(bu 2
+.IP \[bu] 2
Tracing programs and socket filter programs cannot use
\fBbpf_spin_lock\fP() due to insufficient preemption checks
(but this may change in the future).
-.IP \(bu 2
+.IP \[bu] 2
\fBbpf_spin_lock\fP is not allowed in inner maps of map\-in\-map.
.UNINDENT
.TP
@@ -2701,10 +2714,11 @@ the listening socket in \fIsk\fP\&.
.sp
\fIiph\fP points to the start of the IPv4 or IPv6 header, while
\fIiph_len\fP contains \fBsizeof\fP(\fBstruct iphdr\fP) or
-\fBsizeof\fP(\fBstruct ip6hdr\fP).
+\fBsizeof\fP(\fBstruct ipv6hdr\fP).
.sp
\fIth\fP points to the start of the TCP header, while \fIth_len\fP
-contains \fBsizeof\fP(\fBstruct tcphdr\fP).
+contains the length of the TCP header (at least
+\fBsizeof\fP(\fBstruct tcphdr\fP)).
.TP
.B Return
0 if \fIiph\fP and \fIth\fP are a valid SYN cookie ACK, or a negative
@@ -2718,16 +2732,16 @@ error otherwise.
Get name of sysctl in /proc/sys/ and copy it into provided by
program buffer \fIbuf\fP of size \fIbuf_len\fP\&.
.sp
-The buffer is always NUL terminated, unless it\(aqs zero\-sized.
+The buffer is always NUL terminated, unless it\[aq]s zero\-sized.
.sp
-If \fIflags\fP is zero, full name (e.g. "net/ipv4/tcp_mem") is
+If \fIflags\fP is zero, full name (e.g. \[dq]net/ipv4/tcp_mem\[dq]) is
copied. Use \fBBPF_F_SYSCTL_BASE_NAME\fP flag to copy base name
-only (e.g. "tcp_mem").
+only (e.g. \[dq]tcp_mem\[dq]).
.TP
.B Return
Number of character copied (not including the trailing NUL).
.sp
-\fB\-E2BIG\fP if the buffer wasn\(aqt big enough (\fIbuf\fP will contain
+\fB\-E2BIG\fP if the buffer wasn\[aq]t big enough (\fIbuf\fP will contain
truncated name in this case).
.UNINDENT
.TP
@@ -2742,12 +2756,12 @@ by program buffer \fIbuf\fP of size \fIbuf_len\fP\&.
The whole value is copied, no matter what file position user
space issued e.g. sys_read at.
.sp
-The buffer is always NUL terminated, unless it\(aqs zero\-sized.
+The buffer is always NUL terminated, unless it\[aq]s zero\-sized.
.TP
.B Return
Number of character copied (not including the trailing NUL).
.sp
-\fB\-E2BIG\fP if the buffer wasn\(aqt big enough (\fIbuf\fP will contain
+\fB\-E2BIG\fP if the buffer wasn\[aq]t big enough (\fIbuf\fP will contain
truncated name in this case).
.sp
\fB\-EINVAL\fP if current value was unavailable, e.g. because
@@ -2764,12 +2778,12 @@ provided by program buffer \fIbuf\fP of size \fIbuf_len\fP\&.
.sp
User space may write new value at file position > 0.
.sp
-The buffer is always NUL terminated, unless it\(aqs zero\-sized.
+The buffer is always NUL terminated, unless it\[aq]s zero\-sized.
.TP
.B Return
Number of character copied (not including the trailing NUL).
.sp
-\fB\-E2BIG\fP if the buffer wasn\(aqt big enough (\fIbuf\fP will contain
+\fB\-E2BIG\fP if the buffer wasn\[aq]t big enough (\fIbuf\fP will contain
truncated name in this case).
.sp
\fB\-EINVAL\fP if sysctl is being read.
@@ -2806,7 +2820,7 @@ and save the result in \fIres\fP\&.
.sp
The string may begin with an arbitrary amount of white space
(as determined by \fBisspace\fP(3)) followed by a single
-optional \(aq\fB\-\fP\(aq sign.
+optional \[aq]\fB\-\fP\[aq] sign.
.sp
Five least significant bits of \fIflags\fP encode base, other bits
are currently unused.
@@ -2866,7 +2880,7 @@ be a \fBBPF_MAP_TYPE_SK_STORAGE\fP also.
.sp
Underneath, the value is stored locally at \fIsk\fP instead of
the \fImap\fP\&. The \fImap\fP is used as the bpf\-local\-storage
-"type". The bpf\-local\-storage "type" (i.e. the \fImap\fP) is
+\[dq]type\[dq]. The bpf\-local\-storage \[dq]type\[dq] (i.e. the \fImap\fP) is
searched against all bpf\-local\-storages residing at \fIsk\fP\&.
.sp
\fIsk\fP is a kernel \fBstruct sock\fP pointer for LSM program.
@@ -2904,7 +2918,7 @@ Delete a bpf\-local\-storage from a \fIsk\fP\&.
.TP
.B Description
Send signal \fIsig\fP to the process of the current task.
-The signal may be delivered to any of this process\(aqs threads.
+The signal may be delivered to any of this process\[aq]s threads.
.TP
.B Return
0 on success or successfully queued.
@@ -2927,10 +2941,11 @@ IP/TCP headers, \fIiph\fP and \fIth\fP, on the listening socket in \fIsk\fP\&.
.sp
\fIiph\fP points to the start of the IPv4 or IPv6 header, while
\fIiph_len\fP contains \fBsizeof\fP(\fBstruct iphdr\fP) or
-\fBsizeof\fP(\fBstruct ip6hdr\fP).
+\fBsizeof\fP(\fBstruct ipv6hdr\fP).
.sp
\fIth\fP points to the start of the TCP header, while \fIth_len\fP
-contains the length of the TCP header.
+contains the length of the TCP header with options (at least
+\fBsizeof\fP(\fBstruct tcphdr\fP)).
.TP
.B Return
On success, lower 32 bits hold the generated SYN cookie in
@@ -3018,7 +3033,7 @@ get its length at runtime. See the following snippet:
.sp
.nf
.ft C
-SEC("kprobe/sys_open")
+SEC(\[dq]kprobe/sys_open\[dq])
void bpf_sys_open(struct pt_regs *ctx)
{
char buf[PATHLEN]; // PATHLEN is defined to 256
@@ -3135,7 +3150,7 @@ Returns 0 on success, values for \fIpid\fP and \fItgid\fP as seen from the curre
.B Return
0 on success, or one of the following in case of failure:
.sp
-\fB\-EINVAL\fP if dev and inum supplied don\(aqt match dev_t and inode number
+\fB\-EINVAL\fP if dev and inum supplied don\[aq]t match dev_t and inode number
with nsfs of current task, or if dev conversion to dev_t lost high bits.
.sp
\fB\-ENOENT\fP if pidns does not exists for the current task.
@@ -3266,11 +3281,11 @@ selection.
.sp
\fIflags\fP argument can combination of following values:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_SK_LOOKUP_F_REPLACE\fP to override the previous
socket selection, potentially done by a BPF program
that ran before us.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_SK_LOOKUP_F_NO_REUSEPORT\fP to skip
load\-balancing within reuseport group for the socket
being selected.
@@ -3281,20 +3296,20 @@ On success \fIctx\->sk\fP will point to the selected socket.
.B Return
0 on success, or a negative errno in case of failure.
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fB\-EAFNOSUPPORT\fP if socket family (\fIsk\->family\fP) is
not compatible with packet family (\fIctx\->family\fP).
-.IP \(bu 2
+.IP \[bu] 2
\fB\-EEXIST\fP if socket has been already selected,
potentially by another program, and
\fBBPF_SK_LOOKUP_F_REPLACE\fP flag was not specified.
-.IP \(bu 2
+.IP \[bu] 2
\fB\-EINVAL\fP if unsupported flags were specified.
-.IP \(bu 2
+.IP \[bu] 2
\fB\-EPROTOTYPE\fP if socket L4 protocol
-(\fIsk\->protocol\fP) doesn\(aqt match packet protocol
+(\fIsk\->protocol\fP) doesn\[aq]t match packet protocol
(\fIctx\->protocol\fP).
-.IP \(bu 2
+.IP \[bu] 2
\fB\-ESOCKTNOSUPPORT\fP if socket is not in allowed
state (TCP listening or UDP unconnected).
.UNINDENT
@@ -3444,7 +3459,7 @@ of new data availability is sent unconditionally.
If \fB0\fP is specified in \fIflags\fP, an adaptive notification
of new data availability is sent.
.sp
-See \(aqbpf_ringbuf_output()\(aq for the definition of adaptive notification.
+See \[aq]bpf_ringbuf_output()\[aq] for the definition of adaptive notification.
.TP
.B Return
Nothing. Always succeeds.
@@ -3462,7 +3477,7 @@ of new data availability is sent unconditionally.
If \fB0\fP is specified in \fIflags\fP, an adaptive notification
of new data availability is sent.
.sp
-See \(aqbpf_ringbuf_output()\(aq for the definition of adaptive notification.
+See \[aq]bpf_ringbuf_output()\[aq] for the definition of adaptive notification.
.TP
.B Return
Nothing. Always succeeds.
@@ -3475,13 +3490,13 @@ Nothing. Always succeeds.
Query various characteristics of provided ring buffer. What
exactly is queries is determined by \fIflags\fP:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_RB_AVAIL_DATA\fP: Amount of data not yet consumed.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_RB_RING_SIZE\fP: The size of ring buffer.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_RB_CONS_POS\fP: Consumer position (can wrap around).
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_RB_PROD_POS\fP: Producer(s) position (can wrap around).
.UNINDENT
.sp
@@ -3514,16 +3529,16 @@ stack instead of just egressing at tc.
.sp
There are three supported level settings at this time:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_CSUM_LEVEL_INC\fP: Increases skb\->csum_level for skbs
with CHECKSUM_UNNECESSARY.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_CSUM_LEVEL_DEC\fP: Decreases skb\->csum_level for skbs
with CHECKSUM_UNNECESSARY.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_CSUM_LEVEL_RESET\fP: Resets skb\->csum_level to 0 and
sets CHECKSUM_NONE to force checksum validation by the stack.
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_CSUM_LEVEL_QUERY\fP: No\-op, returns the current
skb\->csum_level.
.UNINDENT
@@ -3647,12 +3662,12 @@ kind that it wants to search.
.sp
If the searching kind is an experimental kind
(i.e. 253 or 254 according to RFC6994). It also
-needs to specify the "magic" which is either
+needs to specify the \[dq]magic\[dq] which is either
2 bytes or 4 bytes. It then also needs to
specify the size of the magic by using
-the 2nd byte which is "kind\-length" of a TCP
-header option and the "kind\-length" also
-includes the first 2 bytes "kind" and "kind\-length"
+the 2nd byte which is \[dq]kind\-length\[dq] of a TCP
+header option and the \[dq]kind\-length\[dq] also
+includes the first 2 bytes \[dq]kind\[dq] and \[dq]kind\-length\[dq]
itself as a normal TCP header option also does.
.sp
For example, to search experimental kind 254 with
@@ -3671,7 +3686,7 @@ of a header option.
.sp
Supported flags:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_LOAD_HDR_OPT_TCP_SYN\fP to search from the
saved_syn packet or the just\-received syn packet.
.UNINDENT
@@ -3728,7 +3743,7 @@ Nothing has been written
.sp
\fB\-EEXIST\fP if the option already exists.
.sp
-\fB\-EFAULT\fP on failrue to parse the existing header options.
+\fB\-EFAULT\fP on failure to parse the existing header options.
.sp
\fB\-EPERM\fP if the helper cannot be used under the current
\fIskops\fP\fB\->op\fP\&.
@@ -3774,7 +3789,7 @@ be a \fBBPF_MAP_TYPE_INODE_STORAGE\fP\&.
.sp
Underneath, the value is stored locally at \fIinode\fP instead of
the \fImap\fP\&. The \fImap\fP is used as the bpf\-local\-storage
-"type". The bpf\-local\-storage "type" (i.e. the \fImap\fP) is
+\[dq]type\[dq]. The bpf\-local\-storage \[dq]type\[dq] (i.e. the \fImap\fP) is
searched against all bpf_local_storage residing at \fIinode\fP\&.
.sp
An optional \fIflags\fP (\fBBPF_LOCAL_STORAGE_GET_F_CREATE\fP) can be
@@ -3891,7 +3906,7 @@ Use BTF to write to seq_write a string representation of
.B Description
See \fBbpf_get_cgroup_classid\fP() for the main description.
This helper differs from \fBbpf_get_cgroup_classid\fP() in that
-the cgroup v1 net_cls class is retrieved only from the \fIskb\fP\(aqs
+the cgroup v1 net_cls class is retrieved only from the \fIskb\fP\[aq]s
associated socket instead of the current process.
.TP
.B Return
@@ -3908,7 +3923,7 @@ is somewhat similar to \fBbpf_redirect\fP(), except that it
populates L2 addresses as well, meaning, internally, the helper
relies on the neighbor lookup for the L2 address of the nexthop.
.sp
-The helper will perform a FIB lookup based on the skb\(aqs
+The helper will perform a FIB lookup based on the skb\[aq]s
networking header to get the address of the next hop, unless
this is supplied by the caller in the \fIparams\fP argument. The
\fIplen\fP argument indicates the len of \fIparams\fP and should be set
@@ -3929,7 +3944,7 @@ The helper returns \fBTC_ACT_REDIRECT\fP on success or
.B Description
Take a pointer to a percpu ksym, \fIpercpu_ptr\fP, and return a
pointer to the percpu kernel variable on \fIcpu\fP\&. A ksym is an
-extern variable decorated with \(aq__ksym\(aq. For ksym, there is a
+extern variable decorated with \[aq]__ksym\[aq]. For ksym, there is a
global var (either static or global) defined of the same name
in the kernel. The ksym is percpu if the global var is percpu.
The returned pointer points to the global percpu var on \fIcpu\fP\&.
@@ -3950,7 +3965,7 @@ NULL, if \fIcpu\fP is invalid.
.B Description
Take a pointer to a percpu ksym, \fIpercpu_ptr\fP, and return a
pointer to the percpu kernel variable on this cpu. See the
-description of \(aqksym\(aq in \fBbpf_per_cpu_ptr\fP().
+description of \[aq]ksym\[aq] in \fBbpf_per_cpu_ptr\fP().
.sp
bpf_this_cpu_ptr() has the same semantic as this_cpu_ptr() in
the kernel. Different from \fBbpf_per_cpu_ptr\fP(), it would
@@ -3966,9 +3981,9 @@ A pointer pointing to the kernel percpu variable on this cpu.
.B Description
Redirect the packet to another net device of index \fIifindex\fP\&.
This helper is somewhat similar to \fBbpf_redirect\fP(), except
-that the redirection happens to the \fIifindex\fP\(aq peer device and
+that the redirection happens to the \fIifindex\fP\[aq] peer device and
the netns switch takes place from ingress to ingress without
-going through the CPU\(aqs backlog queue.
+going through the CPU\[aq]s backlog queue.
.sp
The \fIflags\fP argument is reserved and must be 0. The helper is
currently only supported for tc BPF program types at the ingress
@@ -3990,12 +4005,12 @@ Logically, it could be thought of as getting the value from
a \fImap\fP with \fItask\fP as the \fBkey\fP\&. From this
perspective, the usage is not much different from
\fBbpf_map_lookup_elem\fP(\fImap\fP, \fB&\fP\fItask\fP) except this
-helper enforces the key must be an task_struct and the map must also
+helper enforces the key must be a task_struct and the map must also
be a \fBBPF_MAP_TYPE_TASK_STORAGE\fP\&.
.sp
Underneath, the value is stored locally at \fItask\fP instead of
the \fImap\fP\&. The \fImap\fP is used as the bpf\-local\-storage
-"type". The bpf\-local\-storage "type" (i.e. the \fImap\fP) is
+\[dq]type\[dq]. The bpf\-local\-storage \[dq]type\[dq] (i.e. the \fImap\fP) is
searched against all bpf_local_storage residing at \fItask\fP\&.
.sp
An optional \fIflags\fP (\fBBPF_LOCAL_STORAGE_GET_F_CREATE\fP) can be
@@ -4028,7 +4043,7 @@ Delete a bpf_local_storage from a \fItask\fP\&.
.INDENT 7.0
.TP
.B Description
-Return a BTF pointer to the "current" task.
+Return a BTF pointer to the \[dq]current\[dq] task.
This pointer can also be used in helpers that accept an
\fIARG_PTR_TO_BTF_ID\fP of type \fItask_struct\fP\&.
.TP
@@ -4068,7 +4083,7 @@ Current \fIktime\fP\&.
.INDENT 7.0
.TP
.B Description
-Returns the stored IMA hash of the \fIinode\fP (if it\(aqs avaialable).
+Returns the stored IMA hash of the \fIinode\fP (if it\[aq]s available).
If the hash is larger than \fIsize\fP, then only \fIsize\fP
bytes will be copied to \fIdst\fP
.TP
@@ -4100,15 +4115,15 @@ with helpers that adjust/change the packet size.
.sp
The argument \fIlen_diff\fP can be used for querying with a planned
size change. This allows to check MTU prior to changing packet
-ctx. Providing an \fIlen_diff\fP adjustment that is larger than the
+ctx. Providing a \fIlen_diff\fP adjustment that is larger than the
actual packet size (resulting in negative packet size) will in
-principle not exceed the MTU, why it is not considered a
-failure. Other BPF\-helpers are needed for performing the
-planned size change, why the responsability for catch a negative
-packet size belong in those helpers.
+principle not exceed the MTU, which is why it is not considered
+a failure. Other BPF helpers are needed for performing the
+planned size change; therefore the responsibility for catching
+a negative packet size belongs in those helpers.
.sp
Specifying \fIifindex\fP zero means the MTU check is performed
-against the current net device. This is practical if this isn\(aqt
+against the current net device. This is practical if this isn\[aq]t
used prior to redirect.
.sp
On input \fImtu_len\fP must be a valid pointer, else verifier will
@@ -4151,9 +4166,9 @@ MTU value in your BPF\-code.
.TP
.B Return
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
0 on success, and populate MTU value in \fImtu_len\fP pointer.
-.IP \(bu 2
+.IP \[bu] 2
< 0 if any input argument is invalid (\fImtu_len\fP not updated)
.UNINDENT
.sp
@@ -4161,9 +4176,9 @@ MTU violations return positive values, but also populate MTU
value in \fImtu_len\fP pointer, as this can be needed for
implementing PMTU handing:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_MTU_CHK_RET_FRAG_NEEDED\fP
-.IP \(bu 2
+.IP \[bu] 2
\fBBPF_MTU_CHK_RET_SEGS_TOOBIG\fP
.UNINDENT
.UNINDENT
@@ -4245,7 +4260,7 @@ A syscall result.
.INDENT 7.0
.TP
.B Description
-Find BTF type with given name and kind in vmlinux BTF or in module\(aqs BTFs.
+Find BTF type with given name and kind in vmlinux BTF or in module\[aq]s BTFs.
.TP
.B Return
Returns btf_id and btf_obj_fd in lower and upper 32 bits.
@@ -4276,7 +4291,7 @@ the same \fImap\fP\&.
0 on success.
\fB\-EBUSY\fP if \fItimer\fP is already initialized.
\fB\-EINVAL\fP if invalid \fIflags\fP are passed.
-\fB\-EPERM\fP if \fItimer\fP is in a map that doesn\(aqt have any user references.
+\fB\-EPERM\fP if \fItimer\fP is in a map that doesn\[aq]t have any user references.
The user space should either hold a file descriptor to a map with timers
or pin such map in bpffs. When map is unpinned or file descriptor is
closed all timers in the map will be cancelled and freed.
@@ -4291,7 +4306,7 @@ Configure the timer to call \fIcallback_fn\fP static function.
.B Return
0 on success.
\fB\-EINVAL\fP if \fItimer\fP was not initialized with bpf_timer_init() earlier.
-\fB\-EPERM\fP if \fItimer\fP is in a map that doesn\(aqt have any user references.
+\fB\-EPERM\fP if \fItimer\fP is in a map that doesn\[aq]t have any user references.
The user space should either hold a file descriptor to a map with timers
or pin such map in bpffs. When map is unpinned or file descriptor is
closed all timers in the map will be cancelled and freed.
@@ -4309,9 +4324,9 @@ Since struct bpf_timer is a field inside map element the map
owns the timer. The bpf_timer_set_callback() will increment refcnt
of BPF program to make sure that callback_fn code stays valid.
When user space reference to a map reaches zero all timers
-in a map are cancelled and corresponding program\(aqs refcnts are
+in a map are cancelled and corresponding program\[aq]s refcnts are
decremented. This is done to make sure that Ctrl\-C of a user
-process doesn\(aqt leave any timers running. If map is pinned in
+process doesn\[aq]t leave any timers running. If map is pinned in
bpffs the callback_fn can re\-arm itself indefinitely.
bpf_map_update/delete_elem() helpers and user space sys_bpf commands
cancel and free the timer in the given map element.
@@ -4348,6 +4363,7 @@ Get address of the traced function (for tracing and kprobe programs).
.TP
.B Return
Address of the traced function.
+0 for kprobes placed within the function (not at the entry).
.UNINDENT
.TP
.B \fBu64 bpf_get_attach_cookie(void *\fP\fIctx\fP\fB)\fP
@@ -4362,11 +4378,11 @@ Expects BPF program context \fIctx\fP as a first argument.
.TP
.B Supported for the following program types:
.INDENT 7.0
-.IP \(bu 2
+.IP \[bu] 2
kprobe/uprobe;
-.IP \(bu 2
+.IP \[bu] 2
tracepoint;
-.IP \(bu 2
+.IP \[bu] 2
perf_event.
.UNINDENT
.UNINDENT
@@ -4506,7 +4522,7 @@ The number of loops performed, \fB\-EINVAL\fP for invalid \fBflags\fP,
.INDENT 7.0
.TP
.B Description
-Do strncmp() between \fBs1\fP and \fBs2\fP\&. \fBs1\fP doesn\(aqt need
+Do strncmp() between \fBs1\fP and \fBs2\fP\&. \fBs1\fP doesn\[aq]t need
to be null\-terminated and \fBs1_sz\fP is the maximum storage
size of \fBs1\fP\&. \fBs2\fP must be a read\-only string.
.TP
@@ -4520,12 +4536,12 @@ less than, to match, or be greater than \fBs2\fP\&.
.INDENT 7.0
.TP
.B Description
-Get \fBn\fP\-th argument (zero based) of the traced function (for tracing programs)
+Get \fBn\fP\-th argument register (zero based) of the traced function (for tracing programs)
returned in \fBvalue\fP\&.
.TP
.B Return
0 on success.
-\fB\-EINVAL\fP if n >= arguments count of traced function.
+\fB\-EINVAL\fP if n >= argument register count of traced function.
.UNINDENT
.TP
.B \fBlong bpf_get_func_ret(void *\fP\fIctx\fP\fB, u64 *\fP\fIvalue\fP\fB)\fP
@@ -4544,31 +4560,46 @@ in \fBvalue\fP\&.
.INDENT 7.0
.TP
.B Description
-Get number of arguments of the traced function (for tracing programs).
+Get number of registers of the traced function (for tracing programs) where
+function arguments are stored in these registers.
.TP
.B Return
-The number of arguments of the traced function.
+The number of argument registers of the traced function.
.UNINDENT
.TP
.B \fBint bpf_get_retval(void)\fP
.INDENT 7.0
.TP
.B Description
-Get the syscall\(aqs return value that will be returned to userspace.
+Get the BPF program\[aq]s return value that will be returned to the upper layers.
.sp
-This helper is currently supported by cgroup programs only.
+This helper is currently supported by cgroup programs and only by the hooks
+where BPF program\[aq]s return value is returned to the userspace via errno.
.TP
.B Return
-The syscall\(aqs return value.
+The BPF program\[aq]s return value.
.UNINDENT
.TP
.B \fBint bpf_set_retval(int\fP \fIretval\fP\fB)\fP
.INDENT 7.0
.TP
.B Description
-Set the syscall\(aqs return value that will be returned to userspace.
+Set the BPF program\[aq]s return value that will be returned to the upper layers.
+.sp
+This helper is currently supported by cgroup programs and only by the hooks
+where BPF program\[aq]s return value is returned to the userspace via errno.
+.sp
+Note that there is the following corner case where the program exports an error
+via bpf_set_retval but signals success via \[aq]return 1\[aq]:
+.INDENT 7.0
+.INDENT 3.5
+bpf_set_retval(\-EPERM);
+return 1;
+.UNINDENT
+.UNINDENT
.sp
-This helper is currently supported by cgroup programs only.
+In this case, the BPF program\[aq]s return value will use helper\[aq]s \-EPERM. This
+still holds true for cgroup/bind{4,6} which supports extra \[aq]return 3\[aq] success case.
.TP
.B Return
0 on success, or a negative error in case of failure.
@@ -4612,7 +4643,7 @@ associated to \fIxdp_md\fP, at \fIoffset\fP\&.
.INDENT 7.0
.TP
.B Description
-Read \fIsize\fP bytes from user space address \fIuser_ptr\fP in \fItsk\fP\(aqs
+Read \fIsize\fP bytes from user space address \fIuser_ptr\fP in \fItsk\fP\[aq]s
address space, and stores the data in \fIdst\fP\&. \fIflags\fP is not
used yet and is provided for future extensibility. This helper
can only be used by sleepable programs.
@@ -4669,15 +4700,301 @@ The \fBhash_algo\fP is returned on success,
\fB\-EOPNOTSUP\fP if the hash calculation failed or \fB\-EINVAL\fP if
invalid arguments are passed.
.UNINDENT
+.TP
+.B \fBvoid *bpf_kptr_xchg(void *\fP\fImap_value\fP\fB, void *\fP\fIptr\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Exchange kptr at pointer \fImap_value\fP with \fIptr\fP, and return the
+old value. \fIptr\fP can be NULL, otherwise it must be a referenced
+pointer which will be released when this helper is called.
+.TP
+.B Return
+The old value of kptr (which can be NULL). The returned pointer
+if not NULL, is a reference which must be released using its
+corresponding release function, or moved into a BPF map before
+program exit.
+.UNINDENT
+.TP
+.B \fBvoid *bpf_map_lookup_percpu_elem(struct bpf_map *\fP\fImap\fP\fB, const void *\fP\fIkey\fP\fB, u32\fP \fIcpu\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Perform a lookup in \fIpercpu map\fP for an entry associated to
+\fIkey\fP on \fIcpu\fP\&.
+.TP
+.B Return
+Map value associated to \fIkey\fP on \fIcpu\fP, or \fBNULL\fP if no entry
+was found or \fIcpu\fP is invalid.
+.UNINDENT
+.TP
+.B \fBstruct mptcp_sock *bpf_skc_to_mptcp_sock(void *\fP\fIsk\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Dynamically cast a \fIsk\fP pointer to a \fImptcp_sock\fP pointer.
+.TP
+.B Return
+\fIsk\fP if casting is valid, or \fBNULL\fP otherwise.
+.UNINDENT
+.TP
+.B \fBlong bpf_dynptr_from_mem(void *\fP\fIdata\fP\fB, u32\fP \fIsize\fP\fB, u64\fP \fIflags\fP\fB, struct bpf_dynptr *\fP\fIptr\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Get a dynptr to local memory \fIdata\fP\&.
+.sp
+\fIdata\fP must be a ptr to a map value.
+The maximum \fIsize\fP supported is DYNPTR_MAX_SIZE.
+\fIflags\fP is currently unused.
+.TP
+.B Return
+0 on success, \-E2BIG if the size exceeds DYNPTR_MAX_SIZE,
+\-EINVAL if flags is not 0.
+.UNINDENT
+.TP
+.B \fBlong bpf_ringbuf_reserve_dynptr(void *\fP\fIringbuf\fP\fB, u32\fP \fIsize\fP\fB, u64\fP \fIflags\fP\fB, struct bpf_dynptr *\fP\fIptr\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Reserve \fIsize\fP bytes of payload in a ring buffer \fIringbuf\fP
+through the dynptr interface. \fIflags\fP must be 0.
+.sp
+Please note that a corresponding bpf_ringbuf_submit_dynptr or
+bpf_ringbuf_discard_dynptr must be called on \fIptr\fP, even if the
+reservation fails. This is enforced by the verifier.
+.TP
+.B Return
+0 on success, or a negative error in case of failure.
+.UNINDENT
+.TP
+.B \fBvoid bpf_ringbuf_submit_dynptr(struct bpf_dynptr *\fP\fIptr\fP\fB, u64\fP \fIflags\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Submit reserved ring buffer sample, pointed to by \fIdata\fP,
+through the dynptr interface. This is a no\-op if the dynptr is
+invalid/null.
+.sp
+For more information on \fIflags\fP, please see
+\[aq]bpf_ringbuf_submit\[aq].
+.TP
+.B Return
+Nothing. Always succeeds.
+.UNINDENT
+.TP
+.B \fBvoid bpf_ringbuf_discard_dynptr(struct bpf_dynptr *\fP\fIptr\fP\fB, u64\fP \fIflags\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Discard reserved ring buffer sample through the dynptr
+interface. This is a no\-op if the dynptr is invalid/null.
+.sp
+For more information on \fIflags\fP, please see
+\[aq]bpf_ringbuf_discard\[aq].
+.TP
+.B Return
+Nothing. Always succeeds.
+.UNINDENT
+.TP
+.B \fBlong bpf_dynptr_read(void *\fP\fIdst\fP\fB, u32\fP \fIlen\fP\fB, struct bpf_dynptr *\fP\fIsrc\fP\fB, u32\fP \fIoffset\fP\fB, u64\fP \fIflags\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Read \fIlen\fP bytes from \fIsrc\fP into \fIdst\fP, starting from \fIoffset\fP
+into \fIsrc\fP\&.
+\fIflags\fP is currently unused.
+.TP
+.B Return
+0 on success, \-E2BIG if \fIoffset\fP + \fIlen\fP exceeds the length
+of \fIsrc\fP\[aq]s data, \-EINVAL if \fIsrc\fP is an invalid dynptr or if
+\fIflags\fP is not 0.
+.UNINDENT
+.TP
+.B \fBlong bpf_dynptr_write(struct bpf_dynptr *\fP\fIdst\fP\fB, u32\fP \fIoffset\fP\fB, void *\fP\fIsrc\fP\fB, u32\fP \fIlen\fP\fB, u64\fP \fIflags\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Write \fIlen\fP bytes from \fIsrc\fP into \fIdst\fP, starting from \fIoffset\fP
+into \fIdst\fP\&.
+\fIflags\fP is currently unused.
+.TP
+.B Return
+0 on success, \-E2BIG if \fIoffset\fP + \fIlen\fP exceeds the length
+of \fIdst\fP\[aq]s data, \-EINVAL if \fIdst\fP is an invalid dynptr or if \fIdst\fP
+is a read\-only dynptr or if \fIflags\fP is not 0.
+.UNINDENT
+.TP
+.B \fBvoid *bpf_dynptr_data(struct bpf_dynptr *\fP\fIptr\fP\fB, u32\fP \fIoffset\fP\fB, u32\fP \fIlen\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Get a pointer to the underlying dynptr data.
+.sp
+\fIlen\fP must be a statically known value. The returned data slice
+is invalidated whenever the dynptr is invalidated.
+.TP
+.B Return
+Pointer to the underlying dynptr data, NULL if the dynptr is
+read\-only, if the dynptr is invalid, or if the offset and length
+is out of bounds.
+.UNINDENT
+.TP
+.B \fBs64 bpf_tcp_raw_gen_syncookie_ipv4(struct iphdr *\fP\fIiph\fP\fB, struct tcphdr *\fP\fIth\fP\fB, u32\fP \fIth_len\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Try to issue a SYN cookie for the packet with corresponding
+IPv4/TCP headers, \fIiph\fP and \fIth\fP, without depending on a
+listening socket.
+.sp
+\fIiph\fP points to the IPv4 header.
+.sp
+\fIth\fP points to the start of the TCP header, while \fIth_len\fP
+contains the length of the TCP header (at least
+\fBsizeof\fP(\fBstruct tcphdr\fP)).
+.TP
+.B Return
+On success, lower 32 bits hold the generated SYN cookie in
+followed by 16 bits which hold the MSS value for that cookie,
+and the top 16 bits are unused.
+.sp
+On failure, the returned value is one of the following:
+.sp
+\fB\-EINVAL\fP if \fIth_len\fP is invalid.
+.UNINDENT
+.TP
+.B \fBs64 bpf_tcp_raw_gen_syncookie_ipv6(struct ipv6hdr *\fP\fIiph\fP\fB, struct tcphdr *\fP\fIth\fP\fB, u32\fP \fIth_len\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Try to issue a SYN cookie for the packet with corresponding
+IPv6/TCP headers, \fIiph\fP and \fIth\fP, without depending on a
+listening socket.
+.sp
+\fIiph\fP points to the IPv6 header.
+.sp
+\fIth\fP points to the start of the TCP header, while \fIth_len\fP
+contains the length of the TCP header (at least
+\fBsizeof\fP(\fBstruct tcphdr\fP)).
+.TP
+.B Return
+On success, lower 32 bits hold the generated SYN cookie in
+followed by 16 bits which hold the MSS value for that cookie,
+and the top 16 bits are unused.
+.sp
+On failure, the returned value is one of the following:
+.sp
+\fB\-EINVAL\fP if \fIth_len\fP is invalid.
+.sp
+\fB\-EPROTONOSUPPORT\fP if CONFIG_IPV6 is not builtin.
+.UNINDENT
+.TP
+.B \fBlong bpf_tcp_raw_check_syncookie_ipv4(struct iphdr *\fP\fIiph\fP\fB, struct tcphdr *\fP\fIth\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Check whether \fIiph\fP and \fIth\fP contain a valid SYN cookie ACK
+without depending on a listening socket.
+.sp
+\fIiph\fP points to the IPv4 header.
+.sp
+\fIth\fP points to the TCP header.
+.TP
+.B Return
+0 if \fIiph\fP and \fIth\fP are a valid SYN cookie ACK.
+.sp
+On failure, the returned value is one of the following:
+.sp
+\fB\-EACCES\fP if the SYN cookie is not valid.
+.UNINDENT
+.TP
+.B \fBlong bpf_tcp_raw_check_syncookie_ipv6(struct ipv6hdr *\fP\fIiph\fP\fB, struct tcphdr *\fP\fIth\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Check whether \fIiph\fP and \fIth\fP contain a valid SYN cookie ACK
+without depending on a listening socket.
+.sp
+\fIiph\fP points to the IPv6 header.
+.sp
+\fIth\fP points to the TCP header.
+.TP
+.B Return
+0 if \fIiph\fP and \fIth\fP are a valid SYN cookie ACK.
+.sp
+On failure, the returned value is one of the following:
+.sp
+\fB\-EACCES\fP if the SYN cookie is not valid.
+.sp
+\fB\-EPROTONOSUPPORT\fP if CONFIG_IPV6 is not builtin.
+.UNINDENT
+.TP
+.B \fBu64 bpf_ktime_get_tai_ns(void)\fP
+.INDENT 7.0
+.TP
+.B Description
+A nonsettable system\-wide clock derived from wall\-clock time but
+ignoring leap seconds. This clock does not experience
+discontinuities and backwards jumps caused by NTP inserting leap
+seconds as CLOCK_REALTIME does.
+.sp
+See: \fBclock_gettime\fP(\fBCLOCK_TAI\fP)
+.TP
+.B Return
+Current \fIktime\fP\&.
+.UNINDENT
+.TP
+.B \fBlong bpf_user_ringbuf_drain(struct bpf_map *\fP\fImap\fP\fB, void *\fP\fIcallback_fn\fP\fB, void *\fP\fIctx\fP\fB, u64\fP \fIflags\fP\fB)\fP
+.INDENT 7.0
+.TP
+.B Description
+Drain samples from the specified user ring buffer, and invoke
+the provided callback for each such sample:
+.sp
+long (*callback_fn)(struct bpf_dynptr *dynptr, void *ctx);
+.sp
+If \fBcallback_fn\fP returns 0, the helper will continue to try
+and drain the next sample, up to a maximum of
+BPF_MAX_USER_RINGBUF_SAMPLES samples. If the return value is 1,
+the helper will skip the rest of the samples and return. Other
+return values are not used now, and will be rejected by the
+verifier.
+.TP
+.B Return
+The number of drained samples if no error was encountered while
+draining samples, or 0 if no samples were present in the ring
+buffer. If a user\-space producer was epoll\-waiting on this map,
+and at least one sample was drained, they will receive an event
+notification notifying them of available space in the ring
+buffer. If the BPF_RB_NO_WAKEUP flag is passed to this
+function, no wakeup notification will be sent. If the
+BPF_RB_FORCE_WAKEUP flag is passed, a wakeup notification will
+be sent even if no sample was drained.
+.sp
+On failure, the returned value is one of the following:
+.sp
+\fB\-EBUSY\fP if the ring buffer is contended, and another calling
+context was concurrently draining the ring buffer.
+.sp
+\fB\-EINVAL\fP if user\-space is not properly tracking the ring
+buffer due to the producer position not being aligned to 8
+bytes, a sample not being aligned to 8 bytes, or the producer
+position not matching the advertised length of a sample.
+.sp
+\fB\-E2BIG\fP if user\-space has tried to publish a sample which is
+larger than the size of the ring buffer, or which cannot fit
+within a struct bpf_dynptr.
+.UNINDENT
.UNINDENT
.SH EXAMPLES
.sp
Example usage for most of the eBPF helpers listed in this manual page are
available within the Linux kernel sources, at the following locations:
.INDENT 0.0
-.IP \(bu 2
+.IP \[bu] 2
\fIsamples/bpf/\fP
-.IP \(bu 2
+.IP \[bu] 2
\fItools/testing/selftests/bpf/\fP
.UNINDENT
.SH LICENSE
@@ -4685,7 +5002,7 @@ available within the Linux kernel sources, at the following locations:
eBPF programs can have an associated license, passed along with the bytecode
instructions to the kernel when the programs are loaded. The format for that
string is identical to the one in use for kernel modules (Dual licenses, such
-as "Dual BSD/GPL", may be used). Some helper functions are only accessible to
+as \[dq]Dual BSD/GPL\[dq], may be used). Some helper functions are only accessible to
programs that are compatible with the GNU Privacy License (GPL).
.sp
In order to use such helpers, the eBPF program must be loaded with the correct
@@ -4697,7 +5014,7 @@ similar to the following:
.sp
.nf
.ft C
-char ____license[] __attribute__((section("license"), used)) = "GPL";
+char ____license[] __attribute__((section(\[dq]license\[dq]), used)) = \[dq]GPL\[dq];
.ft P
.fi
.UNINDENT
@@ -4713,23 +5030,23 @@ check by yourself what helper functions exist in your kernel, or what types of
programs they can support, here are some files among the kernel tree that you
may be interested in:
.INDENT 0.0
-.IP \(bu 2
+.IP \[bu] 2
\fIinclude/uapi/linux/bpf.h\fP is the main BPF header. It contains the full list
of all helper functions, as well as many other BPF definitions including most
of the flags, structs or constants used by the helpers.
-.IP \(bu 2
+.IP \[bu] 2
\fInet/core/filter.c\fP contains the definition of most network\-related helper
functions, and the list of program types from which they can be used.
-.IP \(bu 2
+.IP \[bu] 2
\fIkernel/trace/bpf_trace.c\fP is the equivalent for most tracing program\-related
helpers.
-.IP \(bu 2
+.IP \[bu] 2
\fIkernel/bpf/verifier.c\fP contains the functions used to check that valid types
of eBPF maps are used with a given helper function.
-.IP \(bu 2
+.IP \[bu] 2
\fIkernel/bpf/\fP directory contains other files in which additional helpers are
defined (for cgroups, sockmaps, etc.).
-.IP \(bu 2
+.IP \[bu] 2
The bpftool utility can be used to probe the availability of helper functions
on the system (as well as supported program and map types, and a number of
other parameters). To do so, run \fBbpftool feature probe\fP (see
diff --git a/man7/capabilities.7 b/man7/capabilities.7
index 53949bab2..ff2907876 100644
--- a/man7/capabilities.7
+++ b/man7/capabilities.7
@@ -25,7 +25,7 @@
.\" other capabilities where the permitted or inheritable bit is set.
.\" 2011-09-07, mtk/Serge hallyn: Add CAP_SYSLOG
.\"
-.TH CAPABILITIES 7 2022-12-04 "Linux man-pages 6.02"
+.TH Capabilities 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
capabilities \- overview of Linux capabilities
.SH DESCRIPTION
@@ -85,12 +85,12 @@ capability.
.\" commit 124ea650d3072b005457faed69909221c2905a1f
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Update
.I /proc/sys/kernel/ns_last_pid
(see
.BR pid_namespaces (7));
-.IP \(bu
+.IP \[bu]
employ the
.I set_tid
feature of
@@ -98,7 +98,7 @@ feature of
.\" FIXME There is also some use case relating to
.\" prctl_set_mm_exe_file(); in the 5.9 sources, see
.\" prctl_set_mm_map().
-.IP \(bu
+.IP \[bu]
read the contents of the symbolic links in
.IR /proc/ pid /map_files
for other processes.
@@ -121,13 +121,13 @@ Bypass file read, write, and execute permission checks.
.B CAP_DAC_READ_SEARCH
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Bypass file read permission checks and
directory read and execute permission checks;
-.IP \(bu
+.IP \[bu]
invoke
.BR open_by_handle_at (2);
-.IP \(bu
+.IP \[bu]
use the
.BR linkat (2)
.B AT_EMPTY_PATH
@@ -138,7 +138,7 @@ flag to create a link to a file referred to by a file descriptor.
.B CAP_FOWNER
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Bypass permission checks on operations that normally
require the filesystem UID of the process to match the UID of
the file (e.g.,
@@ -148,19 +148,19 @@ excluding those operations covered by
.B CAP_DAC_OVERRIDE
and
.BR CAP_DAC_READ_SEARCH ;
-.IP \(bu
+.IP \[bu]
set inode flags (see
.BR ioctl_iflags (2))
on arbitrary files;
-.IP \(bu
+.IP \[bu]
set Access Control Lists (ACLs) on arbitrary files;
-.IP \(bu
+.IP \[bu]
ignore directory sticky bit on file deletion;
-.IP \(bu
+.IP \[bu]
modify
.I user
extended attributes on sticky directory owned by any user;
-.IP \(bu
+.IP \[bu]
specify
.B O_NOATIME
for arbitrary files in
@@ -173,10 +173,10 @@ and
.B CAP_FSETID
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Don't clear set-user-ID and set-group-ID mode
bits when a file is modified;
-.IP \(bu
+.IP \[bu]
set the set-group-ID bit for a file whose GID does not match
the filesystem or any of the supplementary GIDs of the calling process.
.RE
@@ -187,13 +187,13 @@ the filesystem or any of the supplementary GIDs of the calling process.
.\" in other places; they probably should be replaced with something else.
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Lock memory
.RB ( mlock (2),
.BR mlockall (2),
.BR mmap (2),
.BR shmctl (2));
-.IP \(bu
+.IP \[bu]
Allocate memory using huge pages
.RB ( memfd_create (2),
.BR mmap (2),
@@ -245,23 +245,23 @@ Create special files using
Perform various network-related operations:
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
interface configuration;
-.IP \(bu
+.IP \[bu]
administration of IP firewall, masquerading, and accounting;
-.IP \(bu
+.IP \[bu]
modify routing tables;
-.IP \(bu
+.IP \[bu]
bind to any address for transparent proxying;
-.IP \(bu
+.IP \[bu]
set type-of-service (TOS);
-.IP \(bu
+.IP \[bu]
clear driver statistics;
-.IP \(bu
+.IP \[bu]
set promiscuous mode;
-.IP \(bu
+.IP \[bu]
enabling multicasting;
-.IP \(bu
+.IP \[bu]
use
.BR setsockopt (2)
to set the following socket options:
@@ -287,9 +287,9 @@ Bind a socket to Internet domain privileged ports
.B CAP_NET_RAW
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Use RAW and PACKET sockets;
-.IP \(bu
+.IP \[bu]
bind to any address for transparent proxying.
.RE
.PD
@@ -298,11 +298,11 @@ bind to any address for transparent proxying.
.BR CAP_PERFMON " (since Linux 5.8)"
Employ various performance-monitoring mechanisms, including:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
call
.BR perf_event_open (2);
-.IP \(bu
+.IP \[bu]
employ various BPF operations that have performance implications.
.RE
.PD
@@ -317,11 +317,11 @@ See also the kernel source file
.B CAP_SETGID
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
Make arbitrary manipulations of process GIDs and supplementary GID list;
-.IP \(bu
+.IP \[bu]
forge GID when passing socket credentials via UNIX domain sockets;
-.IP \(bu
+.IP \[bu]
write a group ID mapping in a user namespace (see
.BR user_namespaces (7)).
.PD
@@ -360,15 +360,15 @@ has entirely different semantics for such kernels.)
.B CAP_SETUID
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
Make arbitrary manipulations of process UIDs
.RB ( setuid (2),
.BR setreuid (2),
.BR setresuid (2),
.BR setfsuid (2));
-.IP \(bu
+.IP \[bu]
forge UID when passing socket credentials via UNIX domain sockets;
-.IP \(bu
+.IP \[bu]
write a user ID mapping in a user namespace (see
.BR user_namespaces (7)).
.PD
@@ -383,7 +383,7 @@ below.
.IP
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Perform a range of system administration operations including:
.BR quotactl (2),
.BR mount (2),
@@ -394,53 +394,53 @@ Perform a range of system administration operations including:
.BR sethostname (2),
and
.BR setdomainname (2);
-.IP \(bu
+.IP \[bu]
perform privileged
.BR syslog (2)
operations (since Linux 2.6.37,
.B CAP_SYSLOG
should be used to permit such operations);
-.IP \(bu
+.IP \[bu]
perform
.B VM86_REQUEST_IRQ
.BR vm86 (2)
command;
-.IP \(bu
+.IP \[bu]
access the same checkpoint/restore functionality that is governed by
.B CAP_CHECKPOINT_RESTORE
(but the latter, weaker capability is preferred for accessing
that functionality).
-.IP \(bu
+.IP \[bu]
perform the same BPF operations as are governed by
.B CAP_BPF
(but the latter, weaker capability is preferred for accessing
that functionality).
-.IP \(bu
+.IP \[bu]
employ the same performance monitoring mechanisms as are governed by
.B CAP_PERFMON
(but the latter, weaker capability is preferred for accessing
that functionality).
-.IP \(bu
+.IP \[bu]
perform
.B IPC_SET
and
.B IPC_RMID
operations on arbitrary System V IPC objects;
-.IP \(bu
+.IP \[bu]
override
.B RLIMIT_NPROC
resource limit;
-.IP \(bu
+.IP \[bu]
perform operations on
.I trusted
and
.I security
extended attributes (see
.BR xattr (7));
-.IP \(bu
+.IP \[bu]
use
.BR lookup_dcookie (2);
-.IP \(bu
+.IP \[bu]
use
.BR ioprio_set (2)
to assign
@@ -448,9 +448,9 @@ to assign
and (before Linux 2.6.25)
.B IOPRIO_CLASS_IDLE
I/O scheduling classes;
-.IP \(bu
+.IP \[bu]
forge PID when passing socket credentials via UNIX domain sockets;
-.IP \(bu
+.IP \[bu]
exceed
.IR /proc/sys/fs/file\-max ,
the system-wide limit on the number of open files,
@@ -459,7 +459,7 @@ in system calls that open files (e.g.,
.BR execve (2),
.BR open (2),
.BR pipe (2));
-.IP \(bu
+.IP \[bu]
employ
.B CLONE_*
flags that create new namespaces with
@@ -468,11 +468,11 @@ and
.BR unshare (2)
(but, since Linux 3.8,
creating user namespaces does not require any capability);
-.IP \(bu
+.IP \[bu]
access privileged
.I perf
event information;
-.IP \(bu
+.IP \[bu]
call
.BR setns (2)
(requires
@@ -480,73 +480,73 @@ call
in the
.I target
namespace);
-.IP \(bu
+.IP \[bu]
call
.BR fanotify_init (2);
-.IP \(bu
+.IP \[bu]
perform privileged
.B KEYCTL_CHOWN
and
.B KEYCTL_SETPERM
.BR keyctl (2)
operations;
-.IP \(bu
+.IP \[bu]
perform
.BR madvise (2)
.B MADV_HWPOISON
operation;
-.IP \(bu
+.IP \[bu]
employ the
.B TIOCSTI
.BR ioctl (2)
to insert characters into the input queue of a terminal other than
the caller's controlling terminal;
-.IP \(bu
+.IP \[bu]
employ the obsolete
.BR nfsservctl (2)
system call;
-.IP \(bu
+.IP \[bu]
employ the obsolete
.BR bdflush (2)
system call;
-.IP \(bu
+.IP \[bu]
perform various privileged block-device
.BR ioctl (2)
operations;
-.IP \(bu
+.IP \[bu]
perform various privileged filesystem
.BR ioctl (2)
operations;
-.IP \(bu
+.IP \[bu]
perform privileged
.BR ioctl (2)
operations on the
.I /dev/random
device (see
.BR random (4));
-.IP \(bu
+.IP \[bu]
install a
.BR seccomp (2)
filter without first having to set the
.I no_new_privs
thread attribute;
-.IP \(bu
+.IP \[bu]
modify allow/deny rules for device control groups;
-.IP \(bu
+.IP \[bu]
employ the
.BR ptrace (2)
.B PTRACE_SECCOMP_GET_FILTER
operation to dump tracee's seccomp filters;
-.IP \(bu
+.IP \[bu]
employ the
.BR ptrace (2)
.B PTRACE_SETOPTIONS
operation to suspend the tracee's seccomp protections (i.e., the
.B PTRACE_O_SUSPEND_SECCOMP
flag);
-.IP \(bu
+.IP \[bu]
perform administrative operations on many device drivers;
-.IP \(bu
+.IP \[bu]
modify autogroup nice values by writing to
.IR /proc/ pid /autogroup
(see
@@ -563,10 +563,10 @@ and
.B CAP_SYS_CHROOT
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
Use
.BR chroot (2);
-.IP \(bu
+.IP \[bu]
change mount namespaces using
.BR setns (2).
.PD
@@ -575,13 +575,13 @@ change mount namespaces using
.B CAP_SYS_MODULE
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
Load and unload kernel modules
(see
.BR init_module (2)
and
.BR delete_module (2));
-.IP \(bu
+.IP \[bu]
before Linux 2.6.25:
drop capabilities from the system-wide capability bounding set.
.PD
@@ -590,24 +590,24 @@ drop capabilities from the system-wide capability bounding set.
.B CAP_SYS_NICE
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Lower the process nice value
.RB ( nice (2),
.BR setpriority (2))
and change the nice value for arbitrary processes;
-.IP \(bu
+.IP \[bu]
set real-time scheduling policies for calling process,
and set scheduling policies and priorities for arbitrary processes
.RB ( sched_setscheduler (2),
.BR sched_setparam (2),
.BR sched_setattr (2));
-.IP \(bu
+.IP \[bu]
set CPU affinity for arbitrary processes
.RB ( sched_setaffinity (2));
-.IP \(bu
+.IP \[bu]
set I/O scheduling class and priority for arbitrary processes
.RB ( ioprio_set (2));
-.IP \(bu
+.IP \[bu]
apply
.BR migrate_pages (2)
to arbitrary processes and allow processes
@@ -618,11 +618,11 @@ to be migrated to arbitrary nodes;
.\" capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
.\"
.\" Document this.
-.IP \(bu
+.IP \[bu]
apply
.BR move_pages (2)
to arbitrary processes;
-.IP \(bu
+.IP \[bu]
use the
.B MPOL_MF_MOVE_ALL
flag with
@@ -639,19 +639,19 @@ Use
.B CAP_SYS_PTRACE
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Trace arbitrary processes using
.BR ptrace (2);
-.IP \(bu
+.IP \[bu]
apply
.BR get_robust_list (2)
to arbitrary processes;
-.IP \(bu
+.IP \[bu]
transfer data to or from the memory of arbitrary processes using
.BR process_vm_readv (2)
and
.BR process_vm_writev (2);
-.IP \(bu
+.IP \[bu]
inspect processes using
.BR kcmp (2).
.RE
@@ -660,45 +660,45 @@ inspect processes using
.B CAP_SYS_RAWIO
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Perform I/O port operations
.RB ( iopl (2)
and
.BR ioperm (2));
-.IP \(bu
+.IP \[bu]
access
.IR /proc/kcore ;
-.IP \(bu
+.IP \[bu]
employ the
.B FIBMAP
.BR ioctl (2)
operation;
-.IP \(bu
+.IP \[bu]
open devices for accessing x86 model-specific registers (MSRs, see
.BR msr (4));
-.IP \(bu
+.IP \[bu]
update
.IR /proc/sys/vm/mmap_min_addr ;
-.IP \(bu
+.IP \[bu]
create memory mappings at addresses below the value specified by
.IR /proc/sys/vm/mmap_min_addr ;
-.IP \(bu
+.IP \[bu]
map files in
.IR /proc/bus/pci ;
-.IP \(bu
+.IP \[bu]
open
.I /dev/mem
and
.IR /dev/kmem ;
-.IP \(bu
+.IP \[bu]
perform various SCSI device commands;
-.IP \(bu
+.IP \[bu]
perform certain operations on
.BR hpsa (4)
and
.BR cciss (4)
devices;
-.IP \(bu
+.IP \[bu]
perform a range of device-specific operations on other devices.
.RE
.PD
@@ -706,28 +706,28 @@ perform a range of device-specific operations on other devices.
.B CAP_SYS_RESOURCE
.PD 0
.RS
-.IP \(bu 3
+.IP \[bu] 3
Use reserved space on ext2 filesystems;
-.IP \(bu
+.IP \[bu]
make
.BR ioctl (2)
calls controlling ext3 journaling;
-.IP \(bu
+.IP \[bu]
override disk quota limits;
-.IP \(bu
+.IP \[bu]
increase resource limits (see
.BR setrlimit (2));
-.IP \(bu
+.IP \[bu]
override
.B RLIMIT_NPROC
resource limit;
-.IP \(bu
+.IP \[bu]
override maximum number of consoles on console allocation;
-.IP \(bu
+.IP \[bu]
override maximum number of keymaps;
-.IP \(bu
+.IP \[bu]
allow more than 64hz interrupts from the real-time clock;
-.IP \(bu
+.IP \[bu]
raise
.I msg_qbytes
limit for a System V message queue above the limit in
@@ -736,26 +736,26 @@ limit for a System V message queue above the limit in
.BR msgop (2)
and
.BR msgctl (2));
-.IP \(bu
+.IP \[bu]
allow the
.B RLIMIT_NOFILE
resource limit on the number of "in-flight" file descriptors
to be bypassed when passing file descriptors to another process
via a UNIX domain socket (see
.BR unix (7));
-.IP \(bu
+.IP \[bu]
override the
.I /proc/sys/fs/pipe\-size\-max
limit when setting the capacity of a pipe using the
.B F_SETPIPE_SZ
.BR fcntl (2)
command;
-.IP \(bu
+.IP \[bu]
use
.B F_SETPIPE_SZ
to increase the capacity of a pipe above the limit specified by
.IR /proc/sys/fs/pipe\-max\-size ;
-.IP \(bu
+.IP \[bu]
override
.IR /proc/sys/fs/mqueue/queues_max ,
.IR /proc/sys/fs/mqueue/msg_max ,
@@ -763,12 +763,12 @@ and
.I /proc/sys/fs/mqueue/msgsize_max
limits when creating POSIX message queues (see
.BR mq_overview (7));
-.IP \(bu
+.IP \[bu]
employ the
.BR prctl (2)
.B PR_SET_MM
operation;
-.IP \(bu
+.IP \[bu]
set
.IR /proc/ pid /oom_score_adj
to a value lower than the value last set by a process with
@@ -793,14 +793,14 @@ operations on virtual terminals.
.BR CAP_SYSLOG " (since Linux 2.6.37)"
.RS
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
Perform privileged
.BR syslog (2)
operations.
See
.BR syslog (2)
for information on which operations require privilege.
-.IP \(bu
+.IP \[bu]
View kernel addresses exposed via
.I /proc
and other interfaces when
@@ -822,14 +822,14 @@ timers).
.\"
.SS Past and current implementation
A full implementation of capabilities requires that:
-.IP \(bu 3
+.IP \[bu] 3
For all privileged operations,
the kernel must check whether the thread has the required
capability in its effective set.
-.IP \(bu
+.IP \[bu]
The kernel must provide system calls allowing a thread's capability sets to
be changed and retrieved.
-.IP \(bu
+.IP \[bu]
The filesystem must support attaching capabilities to an executable file,
so that a process gains those capabilities when the file is executed.
.PP
@@ -839,12 +839,12 @@ since Linux 2.6.24, all three requirements are met.
.SS Notes to kernel developers
When adding a new kernel feature that should be governed by a capability,
consider the following points.
-.IP \(bu 3
+.IP \[bu] 3
The goal of capabilities is divide the power of superuser into pieces,
such that if a program that has one or more capabilities is compromised,
its power to do damage to the system would be less than the same program
running with root privilege.
-.IP \(bu
+.IP \[bu]
You have the choice of either creating a new capability for your new feature,
or associating the feature with one of the existing capabilities.
In order to keep the set of capabilities to a manageable size,
@@ -852,7 +852,7 @@ the latter option is preferable,
unless there are compelling reasons to take the former option.
(There is also a technical limit:
the size of capability sets is currently limited to 64 bits.)
-.IP \(bu
+.IP \[bu]
To determine which existing capability might best be associated
with your new feature, review the list of capabilities above in order
to find a "silo" into which your new feature best fits.
@@ -860,7 +860,7 @@ One approach to take is to determine if there are other features
requiring capabilities that will always be used along with the new feature.
If the new feature is useless without these other features,
you should use the same capability as the other features.
-.IP \(bu
+.IP \[bu]
.I Don't
choose
.B CAP_SYS_ADMIN
@@ -878,7 +878,7 @@ The only new features that should be associated with
are ones that
.I closely
match existing uses in that silo.
-.IP \(bu
+.IP \[bu]
If you have determined that it really is necessary to create
a new capability for your feature,
don't make or name it as a "single-use" capability.
@@ -1102,11 +1102,11 @@ extended attribute is automatically created as (or converted to)
a version 3
.RB ( VFS_CAP_REVISION_3 )
attribute if both of the following are true:
-.IP \(bu 3
+.IP \[bu] 3
The thread writing the attribute resides in a noninitial user namespace.
(More precisely: the thread resides in a user namespace other
than the one from which the underlying filesystem was mounted.)
-.IP \(bu
+.IP \[bu]
The thread has the
.B CAP_SETFCAP
capability over the file inode,
@@ -1209,13 +1209,13 @@ denotes a file capability set
.PP
Note the following details relating to the above capability
transformation rules:
-.IP \(bu 3
+.IP \[bu] 3
The ambient capability set is present only since Linux 4.3.
When determining the transformation of the ambient set during
.BR execve (2),
a privileged file is one that has capabilities or
has the set-user-ID or set-group-ID bit set.
-.IP \(bu
+.IP \[bu]
Prior to Linux 2.6.25,
the bounding set was a system-wide attribute shared by all threads.
That system-wide value was employed to calculate the new permitted set during
@@ -1290,9 +1290,9 @@ a process with UID 0 (root) executes a program and
when a set-user-ID-root program is executed.
.PP
After having performed any changes to the process effective ID that
-were triggered by the set-user-ID mode bit of the binary\(eme.g.,
+were triggered by the set-user-ID mode bit of the binary\[em]e.g.,
switching the effective user ID to 0 (root) because
-a set-user-ID-root program was executed\(emthe
+a set-user-ID-root program was executed\[em]the
kernel calculates the file capability sets as follows:
.IP (1) 5
If the real or effective user ID of the process is 0 (root),
@@ -1370,7 +1370,7 @@ The capability bounding set is a security mechanism that can be used
to limit the capabilities that can be gained during an
.BR execve (2).
The bounding set is used in the following ways:
-.IP \(bu 3
+.IP \[bu] 3
During an
.BR execve (2),
the capability bounding set is ANDed with the file permitted
@@ -1378,7 +1378,7 @@ capability set, and the result of this operation is assigned to the
thread's permitted capability set.
The capability bounding set thus places a limit on the permitted
capabilities that may be granted by an executable file.
-.IP \(bu
+.IP \[bu]
(Since Linux 2.6.25)
The capability bounding set acts as a limiting superset for
the capabilities that a thread can add to its inheritable set using
@@ -1491,19 +1491,19 @@ and filesystem user IDs (using
.BR setuid (2),
.BR setresuid (2),
or similar):
-.IP \(bu 3
+.IP \[bu] 3
If one or more of the real, effective, or saved set user IDs
was previously 0, and as a result of the UID changes all of these IDs
have a nonzero value,
then all capabilities are cleared from the permitted, effective, and ambient
capability sets.
-.IP \(bu
+.IP \[bu]
If the effective user ID is changed from 0 to nonzero,
then all capabilities are cleared from the effective set.
-.IP \(bu
+.IP \[bu]
If the effective user ID is changed from nonzero to 0,
then the permitted set is copied to the effective set.
-.IP \(bu
+.IP \[bu]
If the filesystem user ID is changed from 0 to nonzero (see
.BR setfsuid (2)),
then the following capabilities are cleared from the effective set:
@@ -1544,21 +1544,21 @@ both provided in the
package,
is preferred for this purpose.
The following rules govern changes to the thread capability sets:
-.IP \(bu 3
+.IP \[bu] 3
If the caller does not have the
.B CAP_SETPCAP
capability,
the new inheritable set must be a subset of the combination
of the existing inheritable and permitted sets.
-.IP \(bu
+.IP \[bu]
(Since Linux 2.6.25)
The new inheritable set must be a subset of the combination of the
existing inheritable set and the capability bounding set.
-.IP \(bu
+.IP \[bu]
The new permitted set must be a subset of the existing permitted set
(i.e., it is not possible to acquire permitted capabilities
that the thread does not currently have).
-.IP \(bu
+.IP \[bu]
The new effective set must be a subset of the new permitted set.
.SS The securebits flags: establishing a capabilities-only environment
.\" For some background:
@@ -1824,14 +1824,14 @@ However, this is only theoretically possible,
since no thread ever has
.B CAP_SETPCAP
in either of these cases:
-.IP \(bu 3
+.IP \[bu] 3
In the pre-2.6.25 implementation the system-wide capability bounding set,
.IR /proc/sys/kernel/cap\-bound ,
always masks out the
.B CAP_SETPCAP
capability, and this can not be changed
without modifying the kernel source and rebuilding the kernel.
-.IP \(bu
+.IP \[bu]
If file capabilities are disabled (i.e., the kernel
.B CONFIG_SECURITY_FILE_CAPABILITIES
option is disabled), then
diff --git a/man7/cgroup_namespaces.7 b/man7/cgroup_namespaces.7
index 8d38b463d..8ac9888eb 100644
--- a/man7/cgroup_namespaces.7
+++ b/man7/cgroup_namespaces.7
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH cgroup_namespaces 7 2022-10-30 "Linux man-pages 6.02"
+.TH cgroup_namespaces 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cgroup_namespaces \- overview of Linux cgroup namespaces
.SH DESCRIPTION
@@ -121,7 +121,7 @@ freezer cgroup,
and the root directory of the freezer cgroup hierarchy
in the new cgroup namespace is also
.IR /sub .
-Thus, the new shell's cgroup membership is displayed as \(aq/\(aq.)
+Thus, the new shell's cgroup membership is displayed as \[aq]/\[aq].)
.PP
However, when we look in
.I /proc/self/mountinfo
@@ -140,7 +140,7 @@ should show the
directory in the cgroup filesystem which forms the root of this mount.
Since by the definition of cgroup namespaces, the process's current
freezer cgroup directory became its root freezer cgroup directory,
-we should see \(aq/\(aq in this field.
+we should see \[aq]/\[aq] in this field.
The problem here is that we are seeing a mount entry for the cgroup
filesystem corresponding to the initial cgroup namespace
(whose cgroup filesystem is indeed rooted at the parent directory of
@@ -151,7 +151,7 @@ new cgroup namespace), after which we see the expected results:
.PP
.in +4n
.EX
-sh2# \fBmount \-\-make\-rslave /\fP # Don\(aqt propagate mount events
+sh2# \fBmount \-\-make\-rslave /\fP # Don\[aq]t propagate mount events
# to other namespaces
sh2# \fBumount /sys/fs/cgroup/freezer\fP
sh2# \fBmount \-t cgroup \-o freezer freezer /sys/fs/cgroup/freezer\fP
@@ -168,13 +168,13 @@ Use of cgroup namespaces requires a kernel that is configured with the
option.
.PP
The virtualization provided by cgroup namespaces serves a number of purposes:
-.IP \(bu 3
+.IP \[bu] 3
It prevents information leaks whereby cgroup directory paths outside of
a container would otherwise be visible to processes in the container.
Such leakages could, for example,
reveal information about the container framework
to containerized applications.
-.IP \(bu
+.IP \[bu]
It eases tasks such as container migration.
The virtualization provided by cgroup namespaces
allows containers to be isolated from knowledge of
@@ -184,17 +184,17 @@ Without such isolation, the full cgroup pathnames (displayed in
would need to be replicated on the target system when migrating a container;
those pathnames would also need to be unique,
so that they don't conflict with other pathnames on the target system.
-.IP \(bu
+.IP \[bu]
It allows better confinement of containerized processes,
because it is possible to mount the container's cgroup filesystems such that
the container processes can't gain access to ancestor cgroup directories.
Consider, for example, the following scenario:
.RS
-.IP \(bu 3
+.IP \[bu] 3
We have a cgroup directory,
.IR /cg/1 ,
that is owned by user ID 9000.
-.IP \(bu
+.IP \[bu]
We have a process,
.IR X ,
also owned by user ID 9000,
diff --git a/man7/cgroups.7 b/man7/cgroups.7
index 1620c73de..497b411cd 100644
--- a/man7/cgroups.7
+++ b/man7/cgroups.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH cgroups 7 2022-10-30 "Linux man-pages 6.02"
+.TH cgroups 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cgroups \- Linux control groups
.SH DESCRIPTION
@@ -559,20 +559,20 @@ under both the v1 and the v2 hierarchies.
.PP
The new behaviors in cgroups v2 are summarized here,
and in some cases elaborated in the following subsections.
-.IP \(bu 3
+.IP \[bu] 3
Cgroups v2 provides a unified hierarchy against
which all controllers are mounted.
-.IP \(bu
+.IP \[bu]
"Internal" processes are not permitted.
With the exception of the root cgroup, processes may reside
only in leaf nodes (cgroups that do not themselves contain child cgroups).
The details are somewhat more subtle than this, and are described below.
-.IP \(bu
+.IP \[bu]
Active cgroups must be specified via the files
.I cgroup.controllers
and
.IR cgroup.subtree_control .
-.IP \(bu
+.IP \[bu]
The
.I tasks
file has been removed.
@@ -581,7 +581,7 @@ In addition, the
file that is employed by the
.I cpuset
controller has been removed.
-.IP \(bu
+.IP \[bu]
An improved mechanism for notification of empty cgroups is provided by the
.I cgroup.events
file.
@@ -770,7 +770,7 @@ or '\-' (to disable a controller), as in the following example:
.IP
.in +4n
.EX
-echo \(aq+pids \-memory\(aq > x/y/cgroup.subtree_control
+echo \[aq]+pids \-memory\[aq] > x/y/cgroup.subtree_control
.EE
.in
.IP
@@ -840,7 +840,7 @@ other children.
The "no internal processes" rule is in fact more subtle than stated above.
More precisely, the rule is that a (nonroot) cgroup can't both
(1) have member processes, and
-(2) distribute resources into child cgroups\(emthat is, have a nonempty
+(2) distribute resources into child cgroups\[em]that is, have a nonempty
.I cgroup.subtree_control
file.
Thus, it
@@ -920,14 +920,14 @@ The cgroups v2 release-notification mechanism
offers the following advantages over the cgroups v1
.I release_agent
mechanism:
-.IP \(bu 3
+.IP \[bu] 3
It allows for cheaper notification,
since a single process can monitor multiple
.I cgroup.events
files (using the techniques described earlier).
By contrast, the cgroups v1 mechanism requires the expense of creating
a process for each notification.
-.IP \(bu
+.IP \[bu]
Notification for different cgroup subhierarchies can be delegated
to different processes.
By contrast, the cgroups v1 mechanism allows only one release agent
@@ -1114,7 +1114,7 @@ The effect of this mount option is to cause cgroup namespaces
to automatically become delegation boundaries.
More specifically,
the following restrictions apply for processes inside the cgroup namespace:
-.IP \(bu 3
+.IP \[bu] 3
Writes to controller interface files in the root directory of the namespace
will fail with the error
.BR EPERM .
@@ -1124,7 +1124,7 @@ files in the root directory of the cgroup namespace such as
and
.IR cgroup.subtree_control ,
and can create subhierarchy underneath the root directory.
-.IP \(bu
+.IP \[bu]
Attempts to migrate processes across the namespace boundary are denied
(with the error
.BR ENOENT ).
@@ -1151,7 +1151,7 @@ Even if a cgroup namespace was employed,
because both hierarchies are owned by the unprivileged user
.IR cecilia ,
the following illegitimate actions could be performed:
-.IP \(bu 3
+.IP \[bu] 3
A process in the inferior hierarchy could change the
resource controller settings in the root directory of that hierarchy.
(These resource controller settings are intended to allow control to
@@ -1159,7 +1159,7 @@ be exercised from the
.I parent
cgroup;
a process inside the child cgroup should not be allowed to modify them.)
-.IP \(bu
+.IP \[bu]
A process inside the inferior hierarchy could move processes
into and out of the inferior hierarchy if the cgroups in the
superior hierarchy were somehow visible.
@@ -1208,11 +1208,11 @@ A nonprivileged process (i.e., the delegatee) can write the PID of
a "target" process into a
.I cgroup.procs
file only if all of the following are true:
-.IP \(bu 3
+.IP \[bu] 3
The writer has write permission on the
.I cgroup.procs
file in the destination cgroup.
-.IP \(bu
+.IP \[bu]
The writer has write permission on the
.I cgroup.procs
file in the nearest common ancestor of the source and destination cgroups.
@@ -1222,12 +1222,12 @@ This requirement is not enforced for cgroups v1 hierarchies,
with the consequence that containment in v1 is less strict than in v2.
(For example, in cgroups v1 the user that owns two distinct
delegated subhierarchies can move a process between the hierarchies.)
-.IP \(bu
+.IP \[bu]
If the cgroup v2 filesystem was mounted with the
.I nsdelegate
option, the writer must be able to see the source and destination cgroups
from its cgroup namespace.
-.IP \(bu
+.IP \[bu]
In cgroups v1:
the effective UID of the writer (i.e., the delegatee) matches the
real user ID or the saved set-user-ID of the target process.
@@ -1248,10 +1248,10 @@ instead, the delegater must place the first process
.SH CGROUPS VERSION 2 THREAD MODE
Among the restrictions imposed by cgroups v2 that were not present
in cgroups v1 are the following:
-.IP \(bu 3
+.IP \[bu] 3
.IR "No thread-granularity control" :
all of the threads of a process must be in the same cgroup.
-.IP \(bu
+.IP \[bu]
.IR "No internal processes" :
a cgroup can't both have member processes and
exercise controllers on child cgroups.
@@ -1278,17 +1278,17 @@ To accommodate such use cases, Linux 4.14 added
for cgroups v2.
.PP
Thread mode allows the following:
-.IP \(bu 3
+.IP \[bu] 3
The creation of
.I threaded subtrees
in which the threads of a process may
be spread across cgroups inside the tree.
(A threaded subtree may contain multiple multithreaded processes.)
-.IP \(bu
+.IP \[bu]
The concept of
.IR "threaded controllers" ,
which can distribute resources across the cgroups in a threaded subtree.
-.IP \(bu
+.IP \[bu]
A relaxation of the "no internal processes rule",
so that, within a threaded subtree,
a cgroup can both contain member threads and
@@ -1343,7 +1343,7 @@ possible future extensions to the thread mode model
.SS Threaded versus domain controllers
With the addition of threads mode,
cgroups v2 now distinguishes two types of resource controllers:
-.IP \(bu 3
+.IP \[bu] 3
.I Threaded
.\" In the kernel source, look for ".threaded[ \t]*= true" in
.\" initializations of struct cgroup_subsys
@@ -1356,7 +1356,7 @@ As at Linux 4.19, the following controllers are threaded:
.IR perf_event ,
and
.IR pids .
-.IP \(bu
+.IP \[bu]
.I Domain
controllers: these controllers support only process granularity
for resource control.
@@ -1378,19 +1378,19 @@ that currently has the type
.IR domain .
This has the following effects:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The type of the cgroup
.I y/z
becomes
.IR threaded .
-.IP \(bu
+.IP \[bu]
The type of the parent cgroup,
.IR y ,
becomes
.IR "domain threaded" .
The parent cgroup is the root of a threaded subtree
(also known as the "threaded root").
-.IP \(bu
+.IP \[bu]
All other cgroups under
.I y
that were not already of type
@@ -1434,12 +1434,12 @@ we (1.1) enable one or more threaded controllers and
(These two steps can be done in either order.)
This has the following consequences:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The type of
.I z
becomes
.IR "domain threaded" .
-.IP \(bu
+.IP \[bu]
All of the descendant cgroups of
.I x
that were not already of type
@@ -1498,17 +1498,17 @@ As with writing to
some containment rules apply when writing to the
.I cgroup.threads
file:
-.IP \(bu 3
+.IP \[bu] 3
The writer must have write permission on the
cgroup.threads
file in the destination cgroup.
-.IP \(bu
+.IP \[bu]
The writer must have write permission on the
.I cgroup.procs
file in the common ancestor of the source and destination cgroups.
(In some cases,
the common ancestor may be the source or destination cgroup itself.)
-.IP \(bu
+.IP \[bu]
The source and destination cgroups must be in the same threaded subtree.
(Outside a threaded subtree, an attempt to move a thread by writing
its thread ID to the
@@ -1551,7 +1551,7 @@ and exercise controllers on child cgroups.
A number of rules apply when writing to the
.I cgroup.type
file:
-.IP \(bu 3
+.IP \[bu] 3
Only the string
.I """threaded"""
may be written.
@@ -1559,30 +1559,30 @@ In other words, the only explicit transition that is possible is to convert a
.I domain
cgroup to type
.IR threaded .
-.IP \(bu
+.IP \[bu]
The effect of writing
.I """threaded"""
depends on the current value in
.IR cgroup.type ,
as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I domain
or
.IR "domain threaded" :
start the creation of a threaded subtree
(whose root is the parent of this cgroup) via
the first of the pathways described above;
-.IP \(bu
+.IP \[bu]
.IR "domain\ invalid" :
convert this cgroup (which is inside a threaded subtree) to a usable (i.e.,
.IR threaded )
state;
-.IP \(bu
+.IP \[bu]
.IR threaded :
no effect (a "no-op").
.RE
-.IP \(bu
+.IP \[bu]
We can't write to a
.I cgroup.type
file if the parent's type is
@@ -1594,13 +1594,13 @@ state in a top-down manner.
There are also some constraints that must be satisfied
in order to create a threaded subtree rooted at the cgroup
.IR x :
-.IP \(bu 3
+.IP \[bu] 3
There can be no member processes in the descendant cgroups of
.IR x .
(The cgroup
.I x
can itself have member processes.)
-.IP \(bu
+.IP \[bu]
No domain controllers may be enabled in
.IR x 's
.I cgroup.subtree_control
@@ -1618,11 +1618,11 @@ According to the pathways described above,
the type of a cgroup can change to
.I domain threaded
in either of the following cases:
-.IP \(bu 3
+.IP \[bu] 3
The string
.I """threaded"""
is written to a child cgroup.
-.IP \(bu
+.IP \[bu]
A threaded controller is enabled inside the cgroup and
a process is made a member of the cgroup.
.PP
@@ -1632,7 +1632,7 @@ cgroup,
.IR x ,
can revert to the type
.I domain
-if the above conditions no longer hold true\(emthat is, if all
+if the above conditions no longer hold true\[em]that is, if all
.I threaded
child cgroups of
.I x
@@ -1647,14 +1647,14 @@ cgroup
.I x
reverts to the type
.IR domain :
-.IP \(bu 3
+.IP \[bu] 3
All
.I domain invalid
descendants of
.I x
that are not in lower-level threaded subtrees revert to the type
.IR domain .
-.IP \(bu
+.IP \[bu]
The root cgroups in any lower-level threaded subtrees revert to the type
.IR "domain threaded" .
.\"
@@ -1670,10 +1670,10 @@ If the string
is written to the
.I cgroup.type
file of one of the children of the root cgroup, then
-.IP \(bu 3
+.IP \[bu] 3
The type of that cgroup becomes
.IR threaded .
-.IP \(bu
+.IP \[bu]
The type of any descendants of that cgroup that
are not part of lower-level threaded subtrees changes to
.IR "domain invalid" .
@@ -1780,11 +1780,11 @@ If multiple cgroups v1 controllers are bound to the same hierarchy,
then each will show the same hierarchy ID in this field.
The value in this field will be 0 if:
.RS
-.IP \(bu 3
+.IP \[bu] 3
the controller is not mounted on a cgroups v1 hierarchy;
-.IP \(bu
+.IP \[bu]
the controller is bound to the cgroups v2 single unified hierarchy; or
-.IP \(bu
+.IP \[bu]
the controller is disabled (see below).
.RE
.IP [3]
diff --git a/man7/charsets.7 b/man7/charsets.7
index d864a40c5..b8d7a3972 100644
--- a/man7/charsets.7
+++ b/man7/charsets.7
@@ -8,7 +8,7 @@
.\"
.\" Changes also by David Starner <dstarner98@aasaa.ofe.org>.
.\"
-.TH charsets 7 2022-10-30 "Linux man-pages 6.02"
+.TH charsets 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
charsets \- character set standards and internationalization
.SH DESCRIPTION
@@ -43,10 +43,10 @@ still renders properly on modern UTF-8 using systems.
.SS ISO 8859
ISO 8859 is a series of 15 8-bit character sets, all of which have ASCII
in their low (7-bit) half, invisible control characters in positions
-128 to 159, and 96 fixed-width graphics in positions 160\(en255.
+128 to 159, and 96 fixed-width graphics in positions 160\[en]255.
.PP
Of these, the most important is ISO 8859-1
-("Latin Alphabet No .1" / Latin-1).
+("Latin Alphabet No. 1" / Latin-1).
It was widely adopted and supported by different systems,
and is gradually being replaced with Unicode.
The ISO 8859-1 characters are also the first 256 characters of Unicode.
@@ -58,10 +58,10 @@ that modify keyboard bindings and the EGA graphics
table and employ the "user mapping" font table in the console
driver.
.PP
-Here are brief descriptions of each set:
+Here are brief descriptions of each character set:
.TP
8859-1 (Latin-1)
-Latin-1 covers many West European languages such as Albanian, Basque,
+Latin-1 covers many European languages such as Albanian, Basque,
Danish, English, Faroese, Galician, Icelandic, Irish, Italian,
Norwegian, Portuguese, Spanish, and Swedish.
The lack of the ligatures
@@ -118,7 +118,7 @@ Supports the Thai alphabet and is nearly identical to the TIS-620
standard.
.TP
8859-12
-This set does not exist.
+This character set does not exist.
.TP
8859-13 (Latin-7)
Supports the Baltic Rim languages; in particular, it includes Latvian
@@ -134,8 +134,8 @@ common symbols with the Euro sign and French and Finnish letters that
were missing in Latin-1.
.TP
8859-16 (Latin-10)
-This set covers many Southeast European languages, and most
-importantly supports Romanian more completely than Latin-2.
+This character set covers many Southeast European languages,
+and most importantly supports Romanian more completely than Latin-2.
.SS KOI8-R / KOI8-U
KOI8-R is a non-ISO character set popular in Russia before Unicode.
The lower half is ASCII;
@@ -163,7 +163,7 @@ Chinese.
(Big5 is both a character set and an encoding.)
It is a superset of ASCII.
Non-ASCII characters are expressed in two bytes.
-Bytes 0xa1\(en0xfe are used as leading bytes for two-byte characters.
+Bytes 0xa1\[en]0xfe are used as leading bytes for two-byte characters.
Big5 and its extension were widely used in Taiwan and Hong Kong.
It is not ISO 2022 compliant.
.\" Thanks to Tomohiro KUBOTA for the following sections about
@@ -173,7 +173,7 @@ JIS X 0208 is a Japanese national standard character set.
Though there are some more Japanese national standard character sets (like
JIS X 0201, JIS X 0212, and JIS X 0213), this is the most important one.
Characters are mapped into a 94x94 two-byte matrix,
-whose each byte is in the range 0x21\(en0x7e.
+whose each byte is in the range 0x21\[en]0x7e.
Note that JIS X 0208 is a character set, not an encoding.
This means that JIS X 0208
itself is not used for expressing text data.
@@ -210,12 +210,12 @@ character set for codes with high bit one (initially G1).
Each graphic character set has 94 or 96 characters, and is
essentially a 7-bit character set.
It uses codes either
-040\(en0177 (041\(en0176) or 0240\(en0377 (0241\(en0376).
-G0 always has size 94 and uses codes 041\(en0176.
+040\[en]0177 (041\[en]0176) or 0240\[en]0377 (0241\[en]0376).
+G0 always has size 94 and uses codes 041\[en]0176.
.PP
Switching between character sets is done using the shift functions
-\fB\(haN\fP (SO or LS1), \fB\(haO\fP (SI or LS0), ESC n (LS2), ESC o (LS3),
-ESC N (SS2), ESC O (SS3), ESC \(ti (LS1R), ESC } (LS2R), ESC | (LS3R).
+\fB\[ha]N\fP (SO or LS1), \fB\[ha]O\fP (SI or LS0), ESC n (LS2), ESC o (LS3),
+ESC N (SS2), ESC O (SS3), ESC \[ti] (LS1R), ESC } (LS2R), ESC | (LS3R).
The function LS\fIn\fP makes character set G\fIn\fP the current one
for codes with high bit zero.
The function LS\fIn\fPR makes character set G\fIn\fP the current one
@@ -251,14 +251,14 @@ recent version selected by ESC & @ ESC $ B.
ISO 4873 stipulates a narrower use of character sets, where G0
is fixed (always ASCII), so that G1, G2, and G3
can be invoked only for codes with the high order bit set.
-In particular, \fB\(haN\fP and \fB\(haO\fP are not used anymore, ESC ( xx
+In particular, \fB\[ha]N\fP and \fB\[ha]O\fP are not used anymore, ESC ( xx
can be used only with xx=B, and ESC ) xx, ESC * xx, ESC + xx
are equivalent to ESC \- xx, ESC . xx, ESC / xx, respectively.
.SS TIS-620
TIS-620 is a Thai national standard character set and a superset
of ASCII.
In the same fashion as the ISO 8859 series, Thai characters are mapped into
-0xa1\(en0xfe.
+0xa1\[en]0xfe.
.SS Unicode
Unicode (ISO 10646) is a standard which aims to unambiguously represent
every character in every human language.
@@ -310,9 +310,9 @@ byte is the head of a code.
Note that the only way ASCII bytes occur
in a UTF-8 stream, is as themselves.
In particular, there are no
-embedded NULs (\(aq\e0\(aq) or \(aq/\(aqs that form part of some larger code.
+embedded NULs (\[aq]\e0\[aq]) or \[aq]/\[aq]s that form part of some larger code.
.PP
-Since ASCII, and, in particular, NUL and \(aq/\(aq, are unchanged, the
+Since ASCII, and, in particular, NUL and \[aq]/\[aq], are unchanged, the
kernel does not notice that UTF-8 is being used.
It does not care at
all what the bytes it is handling stand for.
diff --git a/man7/complex.7 b/man7/complex.7
index cd183f3ee..b21d91a15 100644
--- a/man7/complex.7
+++ b/man7/complex.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH complex 7 2022-10-30 "Linux man-pages 6.02"
+.TH complex 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
complex \- basics of complex mathematics
.SH SYNOPSIS
diff --git a/man7/cp1251.7 b/man7/cp1251.7
index d85cb977c..d16757391 100644
--- a/man7/cp1251.7
+++ b/man7/cp1251.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH cp1251 7 2022-12-15 "Linux man-pages 6.02"
+.TH cp1251 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cp1251 \- CP\ 1251 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/cp1252.7 b/man7/cp1252.7
index be3096d9a..063d7b5ee 100644
--- a/man7/cp1252.7
+++ b/man7/cp1252.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH cp1252 7 2022-12-15 "Linux man-pages 6.02"
+.TH cp1252 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
cp1252 \- CP\ 1252 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/cpuset.7 b/man7/cpuset.7
index 75380a722..fa2cb6239 100644
--- a/man7/cpuset.7
+++ b/man7/cpuset.7
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-only
.\"
-.TH cpuset 7 2022-12-04 "Linux man-pages 6.02"
+.TH cpuset 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
cpuset \- confine processes to processor and memory node subsets
.SH DESCRIPTION
@@ -519,20 +519,20 @@ always return zero, as represented by the ASCII string "0\en".
See the \fBWARNINGS\fR section, below.
.PP
A per-cpuset, running average is employed for the following reasons:
-.IP \(bu 3
+.IP \[bu] 3
Because this meter is per-cpuset rather than per-process or per virtual
memory region, the system load imposed by a batch scheduler monitoring
this metric is sharply reduced on large systems, because a scan of
the tasklist can be avoided on each set of queries.
-.IP \(bu
+.IP \[bu]
Because this meter is a running average rather than an accumulating
counter, a batch scheduler can detect memory pressure with a
single read, instead of having to read and accumulate results
for a period of time.
-.IP \(bu
+.IP \[bu]
Because this meter is per-cpuset rather than per-process,
-the batch scheduler can obtain the key information\(emmemory
-pressure in a cpuset\(emwith a single read, rather than having to
+the batch scheduler can obtain the key information\[em]memory
+pressure in a cpuset\[em]with a single read, rather than having to
query and accumulate results over all the (dynamically changing)
set of processes in the cpuset.
.PP
@@ -629,11 +629,11 @@ Cpuset-specified memory spreading behaves similarly to what is known
.PP
Cpuset-specified memory spreading can provide substantial performance
improvements for jobs that:
-.IP \(bu 3
+.IP \[bu] 3
need to place thread-local data on
memory nodes close to the CPUs which are running the threads that most
frequently access that data; but also
-.IP \(bu
+.IP \[bu]
need to access large filesystem data sets that must to be spread
across the several nodes in the job's cpuset in order to fit.
.PP
@@ -705,11 +705,11 @@ marked isolated using the kernel boot time "isolcpus=" argument.
.PP
This default load balancing across all CPUs is not well suited to
the following two situations:
-.IP \(bu 3
+.IP \[bu] 3
On large systems, load balancing across many CPUs is expensive.
If the system is managed using cpusets to place independent jobs
on separate sets of CPUs, full load balancing is unnecessary.
-.IP \(bu
+.IP \[bu]
Systems supporting real-time on some CPUs need to minimize
system overhead on those CPUs, including avoiding process load
balancing if that is not needed.
@@ -911,22 +911,22 @@ Examples of the \fBList Format\fR:
.\" ================== RULES ==================
.SH RULES
The following rules apply to each cpuset:
-.IP \(bu 3
+.IP \[bu] 3
Its CPUs and memory nodes must be a (possibly equal)
subset of its parent's.
-.IP \(bu
+.IP \[bu]
It can be marked
.I cpu_exclusive
only if its parent is.
-.IP \(bu
+.IP \[bu]
It can be marked
.I mem_exclusive
only if its parent is.
-.IP \(bu
+.IP \[bu]
If it is
.IR cpu_exclusive ,
its CPUs may not overlap any sibling.
-.IP \(bu
+.IP \[bu]
If it is
.IR mem_exclusive ,
its memory nodes may not overlap any sibling.
@@ -1385,7 +1385,7 @@ and then attach the current shell to that cpuset.
.RB "$" " /bin/echo 1 > cpuset.mems"
.RB "$" " /bin/echo $$ > tasks"
# The current shell is now running in cpuset Charlie
-# The next line should display \(aq/Charlie\(aq
+# The next line should display \[aq]/Charlie\[aq]
.RB "$" " cat /proc/self/cpuset"
.EE
.in
@@ -1400,14 +1400,14 @@ perform the following steps.
.IP (1) 5
Let's say we want to move the job in cpuset
.I alpha
-(CPUs 4\(en7 and memory nodes 2\(en3) to a new cpuset
+(CPUs 4\[en]7 and memory nodes 2\[en]3) to a new cpuset
.I beta
-(CPUs 16\(en19 and memory nodes 8\(en9).
+(CPUs 16\[en]19 and memory nodes 8\[en]9).
.IP (2)
First create the new cpuset
.IR beta .
.IP (3)
-Then allow CPUs 16\(en19 and memory nodes 8\(en9 in
+Then allow CPUs 16\[en]19 and memory nodes 8\[en]9 in
.IR beta .
.IP (4)
Then enable
@@ -1439,8 +1439,8 @@ The above should move any processes in
.I alpha
to
.IR beta ,
-and any memory held by these processes on memory nodes 2\(en3 to memory
-nodes 8\(en9, respectively.
+and any memory held by these processes on memory nodes 2\[en]3 to memory
+nodes 8\[en]9, respectively.
.PP
Notice that the last step of the above sequence did not do:
.PP
diff --git a/man7/credentials.7 b/man7/credentials.7
index 71ade0967..bab8bd124 100644
--- a/man7/credentials.7
+++ b/man7/credentials.7
@@ -4,7 +4,7 @@
.\"
.\" 2007-06-13 Creation
.\"
-.TH credentials 7 2022-12-04 "Linux man-pages 6.02"
+.TH credentials 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
credentials \- process identifiers
.SH DESCRIPTION
@@ -154,13 +154,13 @@ and
.IR <sys/types.h> ).
.PP
On Linux, each process has the following user and group identifiers:
-.IP \(bu 3
+.IP \[bu] 3
Real user ID and real group ID.
These IDs determine who owns the process.
A process can obtain its real user (group) ID using
.BR getuid (2)
.RB ( getgid (2)).
-.IP \(bu
+.IP \[bu]
Effective user ID and effective group ID.
These IDs are used by the kernel to determine the permissions
that the process will have when accessing shared resources such
@@ -172,7 +172,7 @@ for this task.
A process can obtain its effective user (group) ID using
.BR geteuid (2)
.RB ( getegid (2)).
-.IP \(bu
+.IP \[bu]
Saved set-user-ID and saved set-group-ID.
These IDs are used in set-user-ID and set-group-ID programs to save
a copy of the corresponding effective IDs that were set when
@@ -194,7 +194,7 @@ or
A process can obtain its saved set-user-ID (set-group-ID) using
.BR getresuid (2)
.RB ( getresgid (2)).
-.IP \(bu
+.IP \[bu]
Filesystem user ID and filesystem group ID (Linux-specific).
These IDs, in conjunction with the supplementary group IDs described
below, are used to determine permissions for accessing files; see
@@ -211,7 +211,7 @@ by calling
.BR setfsuid (2)
and
.BR setfsgid (2).
-.IP \(bu
+.IP \[bu]
Supplementary group IDs.
This is a set of additional group IDs that are used for permission
checks when accessing files and other shared resources.
@@ -241,10 +241,10 @@ the effective and saved set IDs may be changed, as described in
.PP
Aside from the purposes noted above,
a process's user IDs are also employed in a number of other contexts:
-.IP \(bu 3
+.IP \[bu] 3
when determining the permissions for sending signals (see
.BR kill (2));
-.IP \(bu
+.IP \[bu]
when determining the permissions for setting
process-scheduling parameters (nice value, real time
scheduling policy and priority, CPU affinity, I/O priority) using
@@ -255,10 +255,10 @@ scheduling policy and priority, CPU affinity, I/O priority) using
.BR sched_setattr (2),
and
.BR ioprio_set (2);
-.IP \(bu
+.IP \[bu]
when checking resource limits (see
.BR getrlimit (2));
-.IP \(bu
+.IP \[bu]
when checking the limit on the number of inotify instances
that the process may create (see
.BR inotify (7)).
diff --git a/man7/ddp.7 b/man7/ddp.7
index 5cb1e817c..97bb15d99 100644
--- a/man7/ddp.7
+++ b/man7/ddp.7
@@ -9,7 +9,7 @@
.\"
.\" $Id: ddp.7,v 1.3 1999/05/13 11:33:22 freitag Exp $
.\"
-.TH ddp 7 2022-10-30 "Linux man-pages 6.02"
+.TH ddp 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ddp \- Linux AppleTalk protocol implementation
.SH SYNOPSIS
@@ -103,7 +103,7 @@ contains the host network in network byte order.
The value of
.B AT_ANYNET
is a
-wildcard and also implies \(lqthis network.\(rq
+wildcard and also implies \[lq]this network.\[rq]
The
.I node
member of
@@ -112,7 +112,7 @@ contains the host node number.
The value of
.B AT_ANYNODE
is a
-wildcard and also implies \(lqthis node.\(rq The value of
+wildcard and also implies \[lq]this node.\[rq] The value of
.B ATADDR_BCAST
is a link
local broadcast address.
diff --git a/man7/environ.7 b/man7/environ.7
index fa87e0844..2c9a8a94f 100644
--- a/man7/environ.7
+++ b/man7/environ.7
@@ -12,7 +12,7 @@
.\" Modified Wed Jan 24 06:37:24 2001 by Eric S. Raymond (esr@thyrsus.com)
.\" Modified Thu Dec 13 23:53:27 2001 by Martin Schulze <joey@infodrom.org>
.\"
-.TH ENVIRON 7 2022-10-29 "Linux man-pages 6.02"
+.TH environ 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
environ \- user environment
.SH SYNOPSIS
@@ -39,7 +39,7 @@ have the form "\fIname\fP\fB=\fP\fIvalue\fP".
The name is case-sensitive and may not contain
the character "\fB=\fP".
The value can be anything that can be represented as a string.
-The name and the value may not contain an embedded null byte (\(aq\e0\(aq),
+The name and the value may not contain an embedded null byte (\[aq]\e0\[aq]),
since this is assumed to terminate the string.
.PP
Environment variables may be placed in the shell's environment by the
@@ -193,12 +193,12 @@ command shall be valid.
.\" .TP
.\" .B BROWSER
.\" The user's preferred utility to browse URLs. Sequence of colon-separated
-.\" browser commands. See http://www.catb.org/\(tiesr/BROWSER/ .
+.\" browser commands. See http://www.catb.org/\[ti]esr/BROWSER/ .
.PP
Note that the behavior of many programs and library routines is
influenced by the presence or value of certain environment variables.
Examples include the following:
-.IP \(bu 3
+.IP \[bu] 3
The variables
.BR LANG ", " LANGUAGE ", " NLSPATH ", " LOCPATH ,
.BR LC_ALL ", " LC_MESSAGES ,
@@ -207,37 +207,37 @@ and so on influence locale handling; see
.BR gettext (3),
and
.BR locale (7).
-.IP \(bu
+.IP \[bu]
.B TMPDIR
influences the path prefix of names created by
.BR tempnam (3)
and other routines, and the temporary directory used by
.BR sort (1)
and other programs.
-.IP \(bu
+.IP \[bu]
.BR LD_LIBRARY_PATH ", " LD_PRELOAD ,
and other
.B LD_*
variables influence the behavior of the dynamic loader/linker.
See also
.BR ld.so (8).
-.IP \(bu
+.IP \[bu]
.B POSIXLY_CORRECT
makes certain programs and library routines follow
the prescriptions of POSIX.
-.IP \(bu
+.IP \[bu]
The behavior of
.BR malloc (3)
is influenced by
.B MALLOC_*
variables.
-.IP \(bu
+.IP \[bu]
The variable
.B HOSTALIASES
gives the name of a file containing aliases
to be used with
.BR gethostbyname (3).
-.IP \(bu
+.IP \[bu]
.BR TZ " and " TZDIR
give timezone information used by
.BR tzset (3)
@@ -248,14 +248,14 @@ and through that by functions like
.BR strftime (3).
See also
.BR tzselect (8).
-.IP \(bu
+.IP \[bu]
.B TERMCAP
gives information on how to address a given terminal
(or gives the name of a file containing such information).
-.IP \(bu
+.IP \[bu]
.BR COLUMNS " and " LINES
tell applications about the window size, possibly overriding the actual size.
-.IP \(bu
+.IP \[bu]
.BR PRINTER " or " LPDEST
may specify the desired printer to use.
See
diff --git a/man7/epoll.7 b/man7/epoll.7
index 8d475637f..bc101b799 100644
--- a/man7/epoll.7
+++ b/man7/epoll.7
@@ -4,7 +4,7 @@
.\"
.\" Davide Libenzi <davidel@xmailserver.org>
.\"
-.TH epoll 7 2022-12-04 "Linux man-pages 6.02"
+.TH epoll 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
epoll \- I/O event notification facility
.SH SYNOPSIS
@@ -29,14 +29,14 @@ API is the
.IR instance ,
an in-kernel data structure which, from a user-space perspective,
can be considered as a container for two lists:
-.IP \(bu 3
+.IP \[bu] 3
The
.I interest
list (sometimes also called the
.B epoll
set): the set of file descriptors that the process has registered
an interest in monitoring.
-.IP \(bu
+.IP \[bu]
The
.I ready
list: the set of file descriptors that are "ready" for I/O.
@@ -50,7 +50,7 @@ The following system calls are provided to
create and manage an
.B epoll
instance:
-.IP \(bu 3
+.IP \[bu] 3
.BR epoll_create (2)
creates a new
.B epoll
@@ -59,13 +59,13 @@ instance and returns a file descriptor referring to that instance.
.BR epoll_create1 (2)
extends the functionality of
.BR epoll_create (2).)
-.IP \(bu
+.IP \[bu]
Interest in particular file descriptors is then registered via
.BR epoll_ctl (2),
which adds items to the interest list of the
.B epoll
instance.
-.IP \(bu
+.IP \[bu]
.BR epoll_wait (2)
waits for I/O events,
blocking the calling thread if no events are currently available.
@@ -291,7 +291,7 @@ from where it stopped before.
struct epoll_event ev, events[MAX_EVENTS];
int listen_sock, conn_sock, nfds, epollfd;
-/* Code to set up listening socket, \(aqlisten_sock\(aq,
+/* Code to set up listening socket, \[aq]listen_sock\[aq],
(socket(), bind(), listen()) omitted. */
epollfd = epoll_create1(0);
@@ -355,7 +355,7 @@ calling
with
.BR EPOLL_CTL_MOD .
.SS Questions and answers
-.IP \(bu 3
+.IP \[bu] 3
What is the key used to distinguish the file descriptors registered in an
interest list?
.IP
@@ -363,7 +363,7 @@ The key is the combination of the file descriptor number and
the open file description
(also known as an "open file handle",
the kernel's internal representation of an open file).
-.IP \(bu
+.IP \[bu]
What happens if you register the same file descriptor on an
.B epoll
instance twice?
@@ -397,7 +397,7 @@ This can be a useful technique for filtering events,
if the duplicate file descriptors are registered with different
.I events
masks.
-.IP \(bu
+.IP \[bu]
Can two
.B epoll
instances wait for the same file descriptor?
@@ -407,7 +407,7 @@ file descriptors?
.IP
Yes, and events would be reported to both.
However, careful programming may be needed to do this correctly.
-.IP \(bu
+.IP \[bu]
Is the
.B epoll
file descriptor itself poll/epoll/selectable?
@@ -417,7 +417,7 @@ If an
.B epoll
file descriptor has events waiting, then it will
indicate as being readable.
-.IP \(bu
+.IP \[bu]
What happens if one attempts to put an
.B epoll
file descriptor into its own file descriptor set?
@@ -431,14 +431,14 @@ However, you can add an
file descriptor inside another
.B epoll
file descriptor set.
-.IP \(bu
+.IP \[bu]
Can I send an
.B epoll
file descriptor over a UNIX domain socket to another process?
.IP
Yes, but it does not make sense to do this, since the receiving process
would not have copies of the file descriptors in the interest list.
-.IP \(bu
+.IP \[bu]
Will closing a file descriptor cause it to be removed from all
.B epoll
interest lists?
@@ -477,13 +477,13 @@ behind the scenes by library functions that used
.BR dup (2)
or
.BR fork (2)).
-.IP \(bu
+.IP \[bu]
If more than one event occurs between
.BR epoll_wait (2)
calls, are they combined or reported separately?
.IP
They will be combined.
-.IP \(bu
+.IP \[bu]
Does an operation on a file descriptor affect the
already collected but not yet reported events?
.IP
@@ -491,7 +491,7 @@ You can do two operations on an existing file descriptor.
Remove would be meaningless for
this case.
Modify will reread available I/O.
-.IP \(bu
+.IP \[bu]
Do I need to continuously read/write a file descriptor
until
.B EAGAIN
@@ -530,7 +530,7 @@ The same is true when writing using
(Avoid this latter technique if you cannot guarantee that
the monitored file descriptor always refers to a stream-oriented file.)
.SS Possible pitfalls and ways to avoid them
-.IP \(bu 3
+.IP \[bu] 3
.B Starvation (edge-triggered)
.IP
If there is a large amount of I/O space,
@@ -546,7 +546,7 @@ remember which files need to be processed but still round robin amongst
all the ready files.
This also supports ignoring subsequent events you
receive for file descriptors that are already ready.
-.IP \(bu
+.IP \[bu]
.B If using an event cache...
.IP
If you use an event cache or store all the file descriptors returned from
diff --git a/man7/fanotify.7 b/man7/fanotify.7
index 95feb1cb2..d60c42b65 100644
--- a/man7/fanotify.7
+++ b/man7/fanotify.7
@@ -2,7 +2,7 @@
.\" and Copyright (C) 2014, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.TH fanotify 7 2022-12-04 "Linux man-pages 6.02"
+.TH fanotify 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fanotify \- monitoring filesystem events
.SH DESCRIPTION
@@ -968,7 +968,7 @@ events.
.PP
As of Linux 3.17,
the following bugs exist:
-.IP \(bu 3
+.IP \[bu] 3
On Linux, a filesystem object may be accessible through multiple paths,
for example, a part of a filesystem may be remounted using the
.I \-\-bind
@@ -977,7 +977,7 @@ option of
A listener that marked a mount will be notified only of events that were
triggered for a filesystem object using the same mount.
Any other event will pass unnoticed.
-.IP \(bu
+.IP \[bu]
.\" FIXME . A patch was proposed.
When an event is generated,
no check is made to see whether the user ID of the
@@ -986,7 +986,7 @@ before passing a file descriptor for that file.
This poses a security risk, when the
.B CAP_SYS_ADMIN
capability is set for programs executed by unprivileged users.
-.IP \(bu
+.IP \[bu]
If a call to
.BR read (2)
processes multiple events from the fanotify queue and an error occurs,
@@ -1047,7 +1047,7 @@ Listening for events stopped.
#include <sys/fanotify.h>
#include <unistd.h>
-/* Read all available fanotify events from the file descriptor \(aqfd\(aq. */
+/* Read all available fanotify events from the file descriptor \[aq]fd\[aq]. */
static void
handle_events(int fd)
@@ -1127,7 +1127,7 @@ handle_events(int fd)
exit(EXIT_FAILURE);
}
- path[path_len] = \(aq\e0\(aq;
+ path[path_len] = \[aq]\e0\[aq];
printf("File %s\en", path);
/* Close the file descriptor of the event. */
@@ -1209,7 +1209,7 @@ main(int argc, char *argv[])
/* Console input is available: empty stdin and quit. */
- while (read(STDIN_FILENO, &buf, 1) > 0 && buf != \(aq\en\(aq)
+ while (read(STDIN_FILENO, &buf, 1) > 0 && buf != \[aq]\en\[aq])
continue;
break;
}
@@ -1236,8 +1236,8 @@ a command-line argument
and waits until an event of type
.B FAN_CREATE
has occurred.
-The event mask indicates which type of filesystem object\(emeither
-a file or a directory\(emwas created.
+The event mask indicates which type of filesystem object\[em]either
+a file or a directory\[em]was created.
Once all events have been read from the buffer and processed accordingly,
the program simply terminates.
.PP
@@ -1261,7 +1261,7 @@ been processed.
Listening for events.
FAN_CREATE (file created):
Directory /home/user has been modified.
- Entry \(aqtestfile.txt\(aq is not a subdirectory.
+ Entry \[aq]testfile.txt\[aq] is not a subdirectory.
All events processed successfully. Program exiting.
$ \fBtouch /home/user/testfile.txt\fP # In another terminal
@@ -1284,7 +1284,7 @@ flag set and with the created directory name.
Listening for events.
FAN_CREATE | FAN_ONDIR (subdirectory created):
Directory /home/user has been modified.
- Entry \(aqtestdir\(aq is a subdirectory.
+ Entry \[aq]testdir\[aq] is a subdirectory.
All events processed successfully. Program exiting.
$ \fBmkdir \-p /home/user/testdir\fP # In another terminal
@@ -1392,7 +1392,7 @@ main(int argc, char *argv[])
/* metadata\->fd is set to FAN_NOFD when the group identifies
objects by file handles. To obtain a file descriptor for
the file object corresponding to an event you can use the
- struct file_handle that\(aqs provided within the
+ struct file_handle that\[aq]s provided within the
fanotify_event_info_fid in conjunction with the
open_by_handle_at(2) system call. A check for ESTALE is
done to accommodate for the situation where the file handle
@@ -1421,8 +1421,8 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- path[path_len] = \(aq\e0\(aq;
- printf("\etDirectory \(aq%s\(aq has been modified.\en", path);
+ path[path_len] = \[aq]\e0\[aq];
+ printf("\etDirectory \[aq]%s\[aq] has been modified.\en", path);
if (file_name) {
ret = fstatat(event_fd, file_name, &sb, 0);
@@ -1431,11 +1431,11 @@ main(int argc, char *argv[])
perror("fstatat");
exit(EXIT_FAILURE);
}
- printf("\etEntry \(aq%s\(aq does not exist.\en", file_name);
+ printf("\etEntry \[aq]%s\[aq] does not exist.\en", file_name);
} else if ((sb.st_mode & S_IFMT) == S_IFDIR) {
- printf("\etEntry \(aq%s\(aq is a subdirectory.\en", file_name);
+ printf("\etEntry \[aq]%s\[aq] is a subdirectory.\en", file_name);
} else {
- printf("\etEntry \(aq%s\(aq is not a subdirectory.\en",
+ printf("\etEntry \[aq]%s\[aq] is not a subdirectory.\en",
file_name);
}
}
diff --git a/man7/feature_test_macros.7 b/man7/feature_test_macros.7
index 15ec43cdd..fa76bbeab 100644
--- a/man7/feature_test_macros.7
+++ b/man7/feature_test_macros.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH feature_test_macros 7 2022-12-04 "Linux man-pages 6.02"
+.TH feature_test_macros 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
feature_test_macros \- feature test macros
.SH DESCRIPTION
@@ -129,7 +129,7 @@ in glibc 2.\fIx\fP,
> 0.
.PP
First, though, a summary of a few details for the impatient:
-.IP \(bu 3
+.IP \[bu] 3
The macros that you most likely need to use in modern source code are
.B _POSIX_C_SOURCE
(for definitions from various versions of POSIX.1),
@@ -139,13 +139,13 @@ The macros that you most likely need to use in modern source code are
(for GNU and/or Linux specific stuff), and
.B _DEFAULT_SOURCE
(to get definitions that would normally be provided by default).
-.IP \(bu
+.IP \[bu]
Certain macros are defined with default values.
Thus, although one or more macros may be indicated as being
required in the SYNOPSIS of a man page,
it may not be necessary to define them explicitly.
Full details of the defaults are given later in this man page.
-.IP \(bu
+.IP \[bu]
Defining
.B _XOPEN_SOURCE
with a value of 600 or greater produces the same effects as defining
@@ -167,7 +167,7 @@ it is implicit that the following has the same effect:
_XOPEN_SOURCE >= 600
.EE
.in
-.IP \(bu
+.IP \[bu]
Defining
.B _XOPEN_SOURCE
with a value of 700 or greater produces the same effects as defining
@@ -193,7 +193,7 @@ _XOPEN_SOURCE >= 700
.\" a description of them with the details in later glibc versions
.\" would make for a complicated description.
.PP
-Glibc understands the following feature test macros:
+glibc understands the following feature test macros:
.TP
.B __STRICT_ANSI__
ISO Standard C.
@@ -208,20 +208,20 @@ flag.
.B _POSIX_C_SOURCE
Defining this macro causes header files to expose definitions as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The value 1 exposes definitions conforming to POSIX.1-1990 and
ISO C (1990).
-.IP \(bu
+.IP \[bu]
The value 2 or greater additionally exposes
definitions for POSIX.2-1992.
-.IP \(bu
+.IP \[bu]
The value 199309L or greater additionally exposes
definitions for POSIX.1b (real-time extensions).
.\" 199506L functionality is available only since glibc 2.1
-.IP \(bu
+.IP \[bu]
The value 199506L or greater additionally exposes
definitions for POSIX.1c (threads).
-.IP \(bu
+.IP \[bu]
(Since glibc 2.3.3)
The value 200112L or greater additionally exposes definitions corresponding
to the POSIX.1-2001 base specification (excluding the XSI extension).
@@ -229,7 +229,7 @@ This value also causes C95 (since glibc 2.12) and
C99 (since glibc 2.10) features to be exposed
(in other words, the equivalent of defining
.BR _ISOC99_SOURCE ).
-.IP \(bu
+.IP \[bu]
(Since glibc 2.10)
The value 200809L or greater additionally exposes definitions corresponding
to the POSIX.1-2008 base specification (excluding the XSI extension).
@@ -247,17 +247,17 @@ feature test macro requirements in the man pages.
.B _XOPEN_SOURCE
Defining this macro causes header files to expose definitions as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Defining with any value exposes
definitions conforming to POSIX.1, POSIX.2, and XPG4.
-.IP \(bu
+.IP \[bu]
The value 500 or greater additionally exposes
definitions for SUSv2 (UNIX 98).
-.IP \(bu
+.IP \[bu]
(Since glibc 2.2) The value 600 or greater additionally exposes
definitions for SUSv3 (UNIX 03; i.e., the POSIX.1-2001 base specification
plus the XSI extension) and C99 definitions.
-.IP \(bu
+.IP \[bu]
(Since glibc 2.10) The value 700 or greater additionally exposes
definitions for SUSv4 (i.e., the POSIX.1-2008 base specification
plus the XSI extension).
@@ -276,10 +276,10 @@ nor
is explicitly defined, then
the following macros are implicitly defined:
.RS
-.IP \(bu 3
+.IP \[bu] 3
.B _POSIX_SOURCE
is defined with the value 1.
-.IP \(bu
+.IP \[bu]
.B _POSIX_C_SOURCE
is defined, according to the value of
.BR _XOPEN_SOURCE :
@@ -712,41 +712,41 @@ and either
is not defined or
.B _XOPEN_SOURCE
is defined with a value of 500 or more, then
-.IP \(bu 3
+.IP \[bu] 3
.B _POSIX_SOURCE
is defined with the value 1; and
-.IP \(bu
+.IP \[bu]
.B _POSIX_C_SOURCE
is defined with one of the following values:
.RS 3
-.IP \(bu 3
+.IP \[bu] 3
2,
if
.B _XOPEN_SOURCE
is defined with a value less than 500;
-.IP \(bu
+.IP \[bu]
199506L,
if
.B _XOPEN_SOURCE
is defined with a value greater than or equal to 500 and less than 600;
or
-.IP \(bu
+.IP \[bu]
(since glibc 2.4) 200112L,
if
.B _XOPEN_SOURCE
is defined with a value greater than or equal to 600 and less than 700.
-.IP \(bu
+.IP \[bu]
(Since glibc 2.10)
200809L,
if
.B _XOPEN_SOURCE
is defined with a value greater than or equal to 700.
-.IP \(bu
+.IP \[bu]
Older versions of glibc do not know about the values
200112L and 200809L for
.BR _POSIX_C_SOURCE ,
and the setting of this macro will depend on the glibc version.
-.IP \(bu
+.IP \[bu]
If
.B _XOPEN_SOURCE
is undefined, then the setting of
diff --git a/man7/fifo.7 b/man7/fifo.7
index fb25609cb..ae0bfea82 100644
--- a/man7/fifo.7
+++ b/man7/fifo.7
@@ -9,7 +9,7 @@
.\"
.\" 990620 - page created - aeb@cwi.nl
.\"
-.TH fifo 7 2022-10-30 "Linux man-pages 6.02"
+.TH fifo 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
fifo \- first-in first-out special file, named pipe
.SH DESCRIPTION
@@ -63,7 +63,7 @@ FIFO special files can be created by
.BR mkfifo (3),
and are indicated by
.I ls\~\-l
-with the file type \(aqp\(aq.
+with the file type \[aq]p\[aq].
.SH SEE ALSO
.BR mkfifo (1),
.BR open (2),
diff --git a/man7/futex.7 b/man7/futex.7
index 28e8a6cfa..8dda8e4b6 100644
--- a/man7/futex.7
+++ b/man7/futex.7
@@ -6,7 +6,7 @@
.\"
.\" SPDX-License-Identifier: MIT
.\"
-.TH futex 7 2022-10-30 "Linux man-pages 6.02"
+.TH futex 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
futex \- fast user-space locking
.SH SYNOPSIS
diff --git a/man7/glob.7 b/man7/glob.7
index eebaae5ad..80e306508 100644
--- a/man7/glob.7
+++ b/man7/glob.7
@@ -4,7 +4,7 @@
.\"
.\" 2003-08-24 fix for / by John Kristoff + joey
.\"
-.TH glob 7 2022-10-30 "Linux man-pages 6.02"
+.TH glob 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
glob \- globbing pathnames
.SH DESCRIPTION
@@ -20,64 +20,64 @@ that will perform this function for a user program.
The rules are as follows (POSIX.2, 3.13).
.SS Wildcard matching
A string is a wildcard pattern if it contains one of the
-characters \(aq?\(aq, \(aq*\(aq, or \(aq[\(aq.
+characters \[aq]?\[aq], \[aq]*\[aq], or \[aq][\[aq].
Globbing is the operation
that expands a wildcard pattern into the list of pathnames
matching the pattern.
Matching is defined by:
.PP
-A \(aq?\(aq (not between brackets) matches any single character.
+A \[aq]?\[aq] (not between brackets) matches any single character.
.PP
-A \(aq*\(aq (not between brackets) matches any string,
+A \[aq]*\[aq] (not between brackets) matches any string,
including the empty string.
.PP
.B "Character classes"
.PP
An expression "\fI[...]\fP" where the first character after the
-leading \(aq[\(aq is not an \(aq!\(aq matches a single character,
+leading \[aq][\[aq] is not an \[aq]!\[aq] matches a single character,
namely any of the characters enclosed by the brackets.
The string enclosed by the brackets cannot be empty;
-therefore \(aq]\(aq can be allowed between the brackets, provided
+therefore \[aq]]\[aq] can be allowed between the brackets, provided
that it is the first character.
(Thus, "\fI[][!]\fP" matches the
-three characters \(aq[\(aq, \(aq]\(aq, and \(aq!\(aq.)
+three characters \[aq][\[aq], \[aq]]\[aq], and \[aq]!\[aq].)
.PP
.B Ranges
.PP
There is one special convention:
-two characters separated by \(aq\-\(aq denote a range.
+two characters separated by \[aq]\-\[aq] denote a range.
(Thus, "\fI[A\-Fa\-f0\-9]\fP"
is equivalent to "\fI[ABCDEFabcdef0123456789]\fP".)
-One may include \(aq\-\(aq in its literal meaning by making it the
+One may include \[aq]\-\[aq] in its literal meaning by making it the
first or last character between the brackets.
-(Thus, "\fI[]\-]\fP" matches just the two characters \(aq]\(aq and \(aq\-\(aq,
+(Thus, "\fI[]\-]\fP" matches just the two characters \[aq]]\[aq] and \[aq]\-\[aq],
and "\fI[\-\-0]\fP" matches the
-three characters \(aq\-\(aq, \(aq.\(aq, \(aq0\(aq, since \(aq/\(aq
+three characters \[aq]\-\[aq], \[aq].\[aq], \[aq]0\[aq], since \[aq]/\[aq]
cannot be matched.)
.PP
.B Complementation
.PP
An expression "\fI[!...]\fP" matches a single character, namely
any character that is not matched by the expression obtained
-by removing the first \(aq!\(aq from it.
+by removing the first \[aq]!\[aq] from it.
(Thus, "\fI[!]a\-]\fP" matches any
-single character except \(aq]\(aq, \(aqa\(aq, and \(aq\-\(aq.)
+single character except \[aq]]\[aq], \[aq]a\[aq], and \[aq]\-\[aq].)
.PP
-One can remove the special meaning of \(aq?\(aq, \(aq*\(aq, and \(aq[\(aq by
+One can remove the special meaning of \[aq]?\[aq], \[aq]*\[aq], and \[aq][\[aq] by
preceding them by a backslash, or, in case this is part of
a shell command line, enclosing them in quotes.
Between brackets these characters stand for themselves.
Thus, "\fI[[?*\e]\fP" matches the
-four characters \(aq[\(aq, \(aq?\(aq, \(aq*\(aq, and \(aq\e\(aq.
+four characters \[aq][\[aq], \[aq]?\[aq], \[aq]*\[aq], and \[aq]\e\[aq].
.SS Pathnames
Globbing is applied on each of the components of a pathname
separately.
-A \(aq/\(aq in a pathname cannot be matched by a \(aq?\(aq or \(aq*\(aq
+A \[aq]/\[aq] in a pathname cannot be matched by a \[aq]?\[aq] or \[aq]*\[aq]
wildcard, or by a range like "\fI[.\-0]\fP".
-A range containing an explicit \(aq/\(aq character is syntactically incorrect.
+A range containing an explicit \[aq]/\[aq] character is syntactically incorrect.
(POSIX requires that syntactically incorrect patterns are left unchanged.)
.PP
-If a filename starts with a \(aq.\(aq,
+If a filename starts with a \[aq].\[aq],
this character must be matched explicitly.
(Thus, \fIrm\ *\fP will not remove .profile, and \fItar\ c\ *\fP will not
archive all your files; \fItar\ c\ .\fP is better.)
@@ -113,7 +113,7 @@ For example, where old scripts have
.PP
.in +4n
.EX
-rm \`find . \-name "*\(ti"\`
+rm \`find . \-name "*\[ti]"\`
.EE
.in
.PP
@@ -121,7 +121,7 @@ new scripts require
.PP
.in +4n
.EX
-rm \-f nosuchfile \`find . \-name "*\(ti"\`
+rm \-f nosuchfile \`find . \-name "*\[ti]"\`
.EE
.in
.PP
@@ -134,12 +134,12 @@ Note that wildcard patterns are not regular expressions,
although they are a bit similar.
First of all, they match
filenames, rather than text, and secondly, the conventions
-are not the same: for example, in a regular expression \(aq*\(aq means zero or
+are not the same: for example, in a regular expression \[aq]*\[aq] means zero or
more copies of the preceding thing.
.PP
Now that regular expressions have bracket expressions where
-the negation is indicated by a \(aq\(ha\(aq, POSIX has declared the
-effect of a wildcard pattern "\fI[\(ha...]\fP" to be undefined.
+the negation is indicated by a \[aq]\[ha]\[aq], POSIX has declared the
+effect of a wildcard pattern "\fI[\[ha]...]\fP" to be undefined.
.SS Character classes and internationalization
Of course ranges were originally meant to be ASCII ranges,
so that "\fI[\ \-%]\fP" stands for "\fI[\ !"#$%]\fP" and "\fI[a\-z]\fP" stands
@@ -174,7 +174,7 @@ category in the current locale.
.fi
.PP
so that one can say "\fI[[:lower:]]\fP" instead of "\fI[a\-z]\fP", and have
-things work in Denmark, too, where there are three letters past \(aqz\(aq
+things work in Denmark, too, where there are three letters past \[aq]z\[aq]
in the alphabet.
These character classes are defined by the
.B LC_CTYPE
diff --git a/man7/hier.7 b/man7/hier.7
index 313222fb7..9ea463dff 100644
--- a/man7/hier.7
+++ b/man7/hier.7
@@ -8,7 +8,7 @@
.\" Modified Mon Feb 6 16:41:00 1999 by Nicolás Lichtmaier <nick@debian.org>
.\" Modified Tue Feb 8 16:46:45 2000 by Chris Pepper <pepper@tgg.com>
.\" Modified Fri Sep 7 20:32:45 2001 by Tammy Fox <tfox@redhat.com>
-.TH hier 7 2022-10-30 "Linux man-pages 6.02"
+.TH hier 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
hier \- description of the filesystem hierarchy
.SH DESCRIPTION
diff --git a/man7/hostname.7 b/man7/hostname.7
index 3ece3475a..947068276 100644
--- a/man7/hostname.7
+++ b/man7/hostname.7
@@ -8,7 +8,7 @@
.\"
.\" 2008-06-11, mtk, Taken from FreeBSD 6.2 and modified for Linux.
.\"
-.TH hostname 7 2022-10-30 "Linux man-pages 6.02"
+.TH hostname 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
hostname \- hostname resolution description
.SH DESCRIPTION
diff --git a/man7/icmp.7 b/man7/icmp.7
index c06612034..5a4e84665 100644
--- a/man7/icmp.7
+++ b/man7/icmp.7
@@ -10,7 +10,7 @@
.\"
.\" $Id: icmp.7,v 1.6 2000/08/14 08:03:45 ak Exp $
.\"
-.TH icmp 7 2022-12-15 "Linux man-pages 6.02"
+.TH icmp 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
icmp \- Linux IPv4 ICMP kernel module.
.SH DESCRIPTION
diff --git a/man7/inode.7 b/man7/inode.7
index f8cb65dd0..307c62d8c 100644
--- a/man7/inode.7
+++ b/man7/inode.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH inode 7 2022-12-15 "Linux man-pages 6.02"
+.TH inode 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
inode \- file inode information
.SH DESCRIPTION
@@ -487,7 +487,7 @@ while various files under
.I /sys
report a size of 4096 bytes, even though the file content is smaller.
For such files, one should simply try to read as many bytes as possible
-(and append \(aq\e0\(aq to the returned buffer
+(and append \[aq]\e0\[aq] to the returned buffer
if it is to be interpreted as a string).
.SH SEE ALSO
.BR stat (1),
diff --git a/man7/inotify.7 b/man7/inotify.7
index cf7c54e76..1f555a438 100644
--- a/man7/inotify.7
+++ b/man7/inotify.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH inotify 7 2022-12-04 "Linux man-pages 6.02"
+.TH inotify 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
inotify \- monitoring filesystem events
.SH DESCRIPTION
@@ -16,7 +16,7 @@ When a directory is monitored, inotify will return events
for the directory itself, and for files inside the directory.
.PP
The following system calls are used with this API:
-.IP \(bu 3
+.IP \[bu] 3
.BR inotify_init (2)
creates an inotify instance and returns a file descriptor
referring to the inotify instance.
@@ -27,7 +27,7 @@ is like
but has a
.I flags
argument that provides access to some extra functionality.
-.IP \(bu
+.IP \[bu]
.BR inotify_add_watch (2)
manipulates the "watch list" associated with an inotify instance.
Each item ("watch") in the watch list specifies the pathname of
@@ -40,16 +40,16 @@ Each watch has a unique "watch descriptor", an integer
returned by
.BR inotify_add_watch (2)
when the watch is created.
-.IP \(bu
+.IP \[bu]
When events occur for monitored files and directories,
those events are made available to the application as structured data that
can be read from the inotify file descriptor using
.BR read (2)
(see below).
-.IP \(bu
+.IP \[bu]
.BR inotify_rm_watch (2)
removes an item from an inotify watch list.
-.IP \(bu
+.IP \[bu]
When all file descriptors referring to an inotify
instance have been closed (using
.BR close (2)),
@@ -90,7 +90,7 @@ struct inotify_event {
.\" FIXME . The type of the 'wd' field should probably be "int32_t".
.\" I submitted a patch to fix this. See the LKML thread
.\" "[patch] Fix type errors in inotify interfaces", 18 Nov 2008
-.\" Glibc bug filed: http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040
+.\" glibc bug filed: http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040
uint32_t mask; /* Mask describing event */
uint32_t cookie; /* Unique cookie associating related
events (for rename(2)) */
@@ -126,7 +126,7 @@ field is present only when an event is returned
for a file inside a watched directory;
it identifies the filename within the watched directory.
This filename is null-terminated,
-and may include further null bytes (\(aq\e0\(aq) to align subsequent reads to a
+and may include further null bytes (\[aq]\e0\[aq]) to align subsequent reads to a
suitable address boundary.
.PP
The
@@ -185,7 +185,7 @@ File was accessed (e.g.,
.BR execve (2)).
.TP
.BR IN_ATTRIB " (*)"
-Metadata changed\(emfor example, permissions (e.g.,
+Metadata changed\[em]for example, permissions (e.g.,
.BR chmod (2)),
timestamps (e.g.,
.BR utimensat (2)),
@@ -259,10 +259,10 @@ an event can be generated for activity on any link to the file
(in the same or a different directory).
.PP
When monitoring a directory:
-.IP \(bu 3
+.IP \[bu] 3
the events marked above with an asterisk (*) can occur both
for the directory itself and for objects inside the directory; and
-.IP \(bu
+.IP \[bu]
the events marked with a plus sign (+) occur only for objects
inside the directory (not for the directory itself).
.PP
@@ -908,7 +908,7 @@ Listening for events stopped.
#include <unistd.h>
#include <string.h>
-/* Read all available inotify events from the file descriptor \(aqfd\(aq.
+/* Read all available inotify events from the file descriptor \[aq]fd\[aq].
wd is the table of watch descriptors for the directories in argv.
argc is the length of wd and argv.
argv is the list of watched directories.
@@ -1027,7 +1027,7 @@ main(int argc, char* argv[])
wd[i] = inotify_add_watch(fd, argv[i],
IN_OPEN | IN_CLOSE);
if (wd[i] == \-1) {
- fprintf(stderr, "Cannot watch \(aq%s\(aq: %s\en",
+ fprintf(stderr, "Cannot watch \[aq]%s\[aq]: %s\en",
argv[i], strerror(errno));
exit(EXIT_FAILURE);
}
@@ -1061,7 +1061,7 @@ main(int argc, char* argv[])
/* Console input is available. Empty stdin and quit. */
- while (read(STDIN_FILENO, &buf, 1) > 0 && buf != \(aq\en\(aq)
+ while (read(STDIN_FILENO, &buf, 1) > 0 && buf != \[aq]\en\[aq])
continue;
break;
}
diff --git a/man7/intro.7 b/man7/intro.7
index 35b526a30..19a3eb4cb 100644
--- a/man7/intro.7
+++ b/man7/intro.7
@@ -6,7 +6,7 @@
.\"
.\" Modified by Thomas Koenig (ig25@rz.uni-karlsruhe.de) 24 Apr 1993
.\" Modified Sat Jul 24 17:28:08 1993 by Rik Faith (faith@cs.unc.edu)
-.TH intro 7 2022-10-30 "Linux man-pages 6.02"
+.TH intro 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to overview and miscellany section
.SH DESCRIPTION
diff --git a/man7/ip.7 b/man7/ip.7
index 04d49a2ee..4ab4dec7d 100644
--- a/man7/ip.7
+++ b/man7/ip.7
@@ -40,7 +40,7 @@
.\" commit 76e21053b5bf33a07c76f99d27a74238310e3c71
.\" Author: Erich E. Hoover <ehoover@mines.edu>
.\"
-.TH ip 7 2022-12-15 "Linux man-pages 6.02"
+.TH ip 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ip \- Linux IPv4 protocol implementation
.SH SYNOPSIS
@@ -90,24 +90,24 @@ is the IP protocol in the IP header to be received or sent.
Valid values for
.I protocol
include:
-.IP \(bu 3
+.IP \[bu] 3
0 and
.B IPPROTO_TCP
for
.BR tcp (7)
stream sockets;
-.IP \(bu
+.IP \[bu]
0 and
.B IPPROTO_UDP
for
.BR udp (7)
datagram sockets;
-.IP \(bu
+.IP \[bu]
.B IPPROTO_SCTP
for
.BR sctp (7)
stream sockets; and
-.IP \(bu
+.IP \[bu]
.B IPPROTO_UDPLITE
for
.BR udplite (7)
@@ -399,7 +399,7 @@ structure similar to
.BR IP_ADD_MEMBERSHIP .
.TP
.BR IP_DROP_SOURCE_MEMBERSHIP " (since Linux 2.4.22 / 2.5.68)"
-Leave a source-specific group\(emthat is, stop receiving data from
+Leave a source-specific group\[em]that is, stop receiving data from
a given multicast group that come from a given source.
If the application has subscribed to multiple sources within
the same group, data from the remaining sources will still be delivered.
@@ -1143,21 +1143,21 @@ IP forwarding can be also set on a per-interface basis.
.IR ip_local_port_range " (since Linux 2.2)"
.\" Precisely: since Linux 2.1.68
This file contains two integers that define the default local port range
-allocated to sockets that are not explicitly bound to a port number\(emthat
+allocated to sockets that are not explicitly bound to a port number\[em]that
is, the range used for
.IR "ephemeral ports" .
An ephemeral port is allocated to a socket in the following circumstances:
.RS
-.IP \(bu 3
+.IP \[bu] 3
the port number in a socket address is specified as 0 when calling
.BR bind (2);
-.IP \(bu
+.IP \[bu]
.BR listen (2)
is called on a stream socket that was not previously bound;
-.IP \(bu
+.IP \[bu]
.BR connect (2)
was called on a socket that was not previously bound;
-.IP \(bu
+.IP \[bu]
.BR sendto (2)
is called on a datagram socket that was not previously bound.
.RE
@@ -1416,7 +1416,7 @@ in
.I msg_name
by
.BR recvmsg (2)
-does not work in some 2.2 kernels.
+does not work in some Linux 2.2 kernels.
.\" .SH AUTHORS
.\" This man page was written by Andi Kleen.
.SH SEE ALSO
diff --git a/man7/ipc_namespaces.7 b/man7/ipc_namespaces.7
index dd2d33da6..8d54f36ab 100644
--- a/man7/ipc_namespaces.7
+++ b/man7/ipc_namespaces.7
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH ipc_namespaces 7 2022-10-30 "Linux man-pages 6.02"
+.TH ipc_namespaces 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ipc_namespaces \- overview of Linux IPC namespaces
.SH DESCRIPTION
@@ -28,10 +28,10 @@ but are not visible to processes in other IPC namespaces.
The following
.I /proc
interfaces are distinct in each IPC namespace:
-.IP \(bu 3
+.IP \[bu] 3
The POSIX message queue interfaces in
.IR /proc/sys/fs/mqueue .
-.IP \(bu
+.IP \[bu]
The System V IPC interfaces in
.IR /proc/sys/kernel ,
namely:
@@ -44,7 +44,7 @@ namely:
.IR shmmni ,
and
.IR shm_rmid_forced .
-.IP \(bu
+.IP \[bu]
The System V IPC interfaces in
.IR /proc/sysvipc .
.PP
diff --git a/man7/ipv6.7 b/man7/ipv6.7
index 155550078..29688e84f 100644
--- a/man7/ipv6.7
+++ b/man7/ipv6.7
@@ -83,7 +83,7 @@
.\" commit c4062dfc425e94290ac427a98d6b4721dd2bc91f
.\" Author: Erich E. Hoover <ehoover@mines.edu>
.\"
-.TH ipv6 7 2022-12-04 "Linux man-pages 6.02"
+.TH ipv6 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ipv6 \- Linux IPv6 protocol implementation
.SH SYNOPSIS
@@ -182,7 +182,7 @@ anycast to address the nearest member of a group of hosts
address an IPv4 host, and other reserved address types.
.PP
The address notation for IPv6 is a group of 8 4-digit hexadecimal
-numbers, separated with a \(aq:\(aq.
+numbers, separated with a \[aq]:\[aq].
\&"::" stands for a string of 0 bits.
Special addresses are ::1 for loopback and ::FFFF:<IPv4 address>
for IPv4-mapped-on-IPv6.
diff --git a/man7/iso_8859-1.7 b/man7/iso_8859-1.7
index 469b5a0f7..cc3a1e781 100644
--- a/man7/iso_8859-1.7
+++ b/man7/iso_8859-1.7
@@ -5,7 +5,7 @@
.\"
.\" Slightly rearranged, aeb, 950713
.\" Updated, dpo, 990531
-.TH ISO_8859-1 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-1 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-1 \- ISO 8859-1 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-10.7 b/man7/iso_8859-10.7
index e03358991..15cdf2042 100644
--- a/man7/iso_8859-10.7
+++ b/man7/iso_8859-10.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-10 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-10 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-10 \- ISO 8859-10 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-11.7 b/man7/iso_8859-11.7
index de6d6f58c..9ab5a741e 100644
--- a/man7/iso_8859-11.7
+++ b/man7/iso_8859-11.7
@@ -5,7 +5,7 @@
.\"
.\"Thanomsub Noppaburana <donga.nb@gmail.com> made valuable suggestions.
.\"
-.TH ISO_8859-11 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-11 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-11 \- ISO 8859-11 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-13.7 b/man7/iso_8859-13.7
index 3740b377a..14d928860 100644
--- a/man7/iso_8859-13.7
+++ b/man7/iso_8859-13.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-13 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-13 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-13 \- ISO 8859-13 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-14.7 b/man7/iso_8859-14.7
index 53ca61e5a..79abf3283 100644
--- a/man7/iso_8859-14.7
+++ b/man7/iso_8859-14.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-14 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-14 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-14 \- ISO 8859-14 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-15.7 b/man7/iso_8859-15.7
index b00f9b486..24227aeb8 100644
--- a/man7/iso_8859-15.7
+++ b/man7/iso_8859-15.7
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-15 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-15 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-15 \- ISO 8859-15 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-16.7 b/man7/iso_8859-16.7
index c929422ab..91870226c 100644
--- a/man7/iso_8859-16.7
+++ b/man7/iso_8859-16.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-16 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-16 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-16 \- ISO 8859-16 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-2.7 b/man7/iso_8859-2.7
index a3554ee67..822f4e80e 100644
--- a/man7/iso_8859-2.7
+++ b/man7/iso_8859-2.7
@@ -6,7 +6,7 @@
.\"
.\" Slightly rearranged, aeb, 950713
.\" Updated, dpo, 990531
-.TH ISO_8859-2 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-2 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-2 \- ISO 8859-2 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-3.7 b/man7/iso_8859-3.7
index 8d47dda24..14512a604 100644
--- a/man7/iso_8859-3.7
+++ b/man7/iso_8859-3.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-3 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-3 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-3 \- ISO 8859-3 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-4.7 b/man7/iso_8859-4.7
index f548afe8d..291f65222 100644
--- a/man7/iso_8859-4.7
+++ b/man7/iso_8859-4.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-4 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-4 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-4 \- ISO 8859-4 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-5.7 b/man7/iso_8859-5.7
index bbee71e39..aca56d2e9 100644
--- a/man7/iso_8859-5.7
+++ b/man7/iso_8859-5.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-5 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-5 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-5 \- ISO 8859-5 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-6.7 b/man7/iso_8859-6.7
index 39434ba19..b24eb421c 100644
--- a/man7/iso_8859-6.7
+++ b/man7/iso_8859-6.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-6 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-6 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-6 \- ISO 8859-6 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-7.7 b/man7/iso_8859-7.7
index 2f0db7707..6ba25ff87 100644
--- a/man7/iso_8859-7.7
+++ b/man7/iso_8859-7.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-7 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-7 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-7 \- ISO 8859-7 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-8.7 b/man7/iso_8859-8.7
index c018d843e..9de5d6e67 100644
--- a/man7/iso_8859-8.7
+++ b/man7/iso_8859-8.7
@@ -5,7 +5,7 @@
.\"
.\" Eli Zaretskii <eliz@gnu.org> made valuable suggestions
.\"
-.TH ISO_8859-8 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-8 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-8 \- ISO 8859-8 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/iso_8859-9.7 b/man7/iso_8859-9.7
index 9dbc2831e..e7f1eb147 100644
--- a/man7/iso_8859-9.7
+++ b/man7/iso_8859-9.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH ISO_8859-9 7 2022-12-15 "Linux man-pages 6.02"
+.TH ISO_8859-9 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
iso_8859-9 \- ISO 8859-9 character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/kernel_lockdown.7 b/man7/kernel_lockdown.7
index 9a2823c92..9b7c50076 100644
--- a/man7/kernel_lockdown.7
+++ b/man7/kernel_lockdown.7
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH kernel_lockdown 7 2022-10-30 "Linux man-pages 6.02"
+.TH kernel_lockdown 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
kernel_lockdown \- kernel image access prevention feature
.SH DESCRIPTION
@@ -50,44 +50,44 @@ kprobes
.PP
and the ability to directly configure and control devices, so as to prevent
the use of a device to access or modify a kernel image:
-.IP \(bu 3
+.IP \[bu] 3
The use of module parameters that directly specify hardware parameters to
drivers through the kernel command line or when loading a module.
-.IP \(bu
+.IP \[bu]
The use of direct PCI BAR access.
-.IP \(bu
+.IP \[bu]
The use of the ioperm and iopl instructions on x86.
-.IP \(bu
+.IP \[bu]
The use of the KD*IO console ioctls.
-.IP \(bu
+.IP \[bu]
The use of the TIOCSSERIAL serial ioctl.
-.IP \(bu
+.IP \[bu]
The alteration of MSR registers on x86.
-.IP \(bu
+.IP \[bu]
The replacement of the PCMCIA CIS.
-.IP \(bu
+.IP \[bu]
The overriding of ACPI tables.
-.IP \(bu
+.IP \[bu]
The use of ACPI error injection.
-.IP \(bu
+.IP \[bu]
The specification of the ACPI RDSP address.
-.IP \(bu
+.IP \[bu]
The use of ACPI custom methods.
.PP
Certain facilities are restricted:
-.IP \(bu 3
+.IP \[bu] 3
Only validly signed modules may be loaded (waived if the module file being
loaded is vouched for by IMA appraisal).
-.IP \(bu
+.IP \[bu]
Only validly signed binaries may be kexec'd (waived if the binary image file
to be executed is vouched for by IMA appraisal).
-.IP \(bu
+.IP \[bu]
Unencrypted hibernation/suspend to swap are disallowed as the kernel image is
saved to a medium that can then be accessed.
-.IP \(bu
+.IP \[bu]
Use of debugfs is not permitted as this allows a whole range of actions
including direct configuration of, access to and driving of hardware.
-.IP \(bu
+.IP \[bu]
IMA requires the addition of the "secure_boot" rules to the policy,
whether or not they are specified on the command line,
for both the built-in and custom policies in secure boot lockdown mode.
diff --git a/man7/keyrings.7 b/man7/keyrings.7
index 7cfd196cd..b09aa1984 100644
--- a/man7/keyrings.7
+++ b/man7/keyrings.7
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH keyrings 7 2022-12-04 "Linux man-pages 6.02"
+.TH keyrings 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
keyrings \- in-kernel key management and retention facility
.SH DESCRIPTION
@@ -68,7 +68,7 @@ Much as files do,
each key has an owning user ID, an owning group ID, and a security label.
Each key also has a set of permissions,
though there are more than for a normal UNIX file,
-and there is an additional category\(empossessor\(embeyond the usual user,
+and there is an additional category\[em]possessor\[em]beyond the usual user,
group, and other (see
.IR Possession ,
below).
@@ -109,7 +109,7 @@ The main purpose of a keyring is to prevent other keys from
being garbage collected because nothing refers to them.
.IP
Keyrings with descriptions (names)
-that begin with a period (\(aq.\(aq) are reserved to the implementation.
+that begin with a period (\[aq].\[aq]) are reserved to the implementation.
.TP
.I """user"""
This is a general-purpose key type.
@@ -171,7 +171,7 @@ but they aren't discussed here
because they aren't intended for normal user-space use.
.PP
Key type names
-that begin with a period (\(aq.\(aq) are reserved to the implementation.
+that begin with a period (\[aq].\[aq]) are reserved to the implementation.
.\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.SS Keyrings
As previously mentioned, keyrings are a special type of key that contain
@@ -353,13 +353,13 @@ thus making the user keyring and anything it contains possessed by default.
.\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.SS Access rights
Each key has the following security-related attributes:
-.IP \(bu 3
+.IP \[bu] 3
The owning user ID
-.IP \(bu
+.IP \[bu]
The ID of a group that is permitted to access the key
-.IP \(bu
+.IP \[bu]
A security label
-.IP \(bu
+.IP \[bu]
A permissions mask
.PP
The permissions mask contains four sets of rights.
diff --git a/man7/koi8-r.7 b/man7/koi8-r.7
index d20a0a1f7..f5188d66e 100644
--- a/man7/koi8-r.7
+++ b/man7/koi8-r.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH KOI8-R 7 2022-12-15 "Linux man-pages 6.02"
+.TH KOI8-R 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
koi8-r \- Russian character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/koi8-u.7 b/man7/koi8-u.7
index 4cac8d5a3..d02bba862 100644
--- a/man7/koi8-u.7
+++ b/man7/koi8-u.7
@@ -5,7 +5,7 @@
.\"
.\" 2009-01-15, mtk, Some edits
.\"
-.TH KOI8-U 7 2022-12-15 "Linux man-pages 6.02"
+.TH KOI8-U 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
koi8-u \- Ukrainian character set encoded in octal, decimal,
and hexadecimal
diff --git a/man7/landlock.7 b/man7/landlock.7
index 1f658412a..1f886af28 100644
--- a/man7/landlock.7
+++ b/man7/landlock.7
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH Landlock 7 2022-10-30 "Linux man-pages 6.02"
+.TH Landlock 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
Landlock \- unprivileged access-control
.SH DESCRIPTION
@@ -23,13 +23,13 @@ A Landlock security policy is a set of access rights
tied to a file hierarchy.
Such policy can be configured and enforced by processes for themselves
using three system calls:
-.IP \(bu 2
+.IP \[bu] 2
.BR landlock_create_ruleset (2)
creates a new ruleset;
-.IP \(bu
+.IP \[bu]
.BR landlock_add_rule (2)
adds a new rule to a ruleset;
-.IP \(bu
+.IP \[bu]
.BR landlock_restrict_self (2)
enforces a ruleset on the calling thread.
.PP
@@ -196,7 +196,8 @@ to enable Landlock.
If the command line parameter is not specified,
the initialization falls back to the value of the deprecated
.I security=
-command line parameter and further to the value of CONFIG_LSM.
+command line parameter and further to the value of
+.BR CONFIG_LSM .
We can check that Landlock is enabled by looking for
.I landlock: Up and running.
in kernel logs.
@@ -220,7 +221,7 @@ We first need to create the ruleset that will contain our rules.
For this example,
the ruleset will contain rules that only allow read actions,
but write actions will be denied.
-The ruleset then needs to handle both of these kind of actions.
+The ruleset then needs to handle both of these kinds of actions.
See below for the description of filesystem actions.
.PP
.in +4n
diff --git a/man7/libc.7 b/man7/libc.7
index 8cdf38e7d..a09912ac5 100644
--- a/man7/libc.7
+++ b/man7/libc.7
@@ -3,19 +3,22 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH LIBC 7 2022-10-09 "Linux man-pages 6.02"
+.TH libc 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
libc \- overview of standard C libraries on Linux
.SH DESCRIPTION
-The term "libc" is commonly used as a shorthand for
-the "standard C library",
+The term \[lq]libc\[rq] is commonly used as a shorthand for
+the \[lq]standard C library\[rq]
a library of standard functions that can be used by all C programs
(and sometimes by programs in other languages).
-Because of some history (see below), use of the term "libc"
+Because of some history
+(see below),
+use of the term \[lq]libc\[rq]
to refer to the standard C library is somewhat ambiguous on Linux.
.SS glibc
-By far the most widely used C library on Linux is the GNU C Library
+By far the most widely used C library on Linux is the
.UR http://www.gnu.org\:/software\:/libc/
+GNU C Library
.UE ,
often referred to as
.IR glibc .
@@ -24,26 +27,31 @@ major Linux distributions.
It is also the C library whose details are documented
in the relevant pages of the
.I man-pages
-project (primarily in Section 3 of the manual).
+project
+(primarily in Section 3 of the manual).
Documentation of glibc is also available in the glibc manual,
available via the command
.IR "info libc" .
Release 1.0 of glibc was made in September 1992.
(There were earlier 0.x releases.)
-The next major release of glibc was 2.0, at the beginning of 1997.
+The next major release of glibc was 2.0,
+at the beginning of 1997.
.PP
The pathname
.I /lib/libc.so.6
-(or something similar) is normally a symbolic link that
+(or something similar)
+is normally a symbolic link that
points to the location of the glibc library,
and executing this pathname will cause glibc to display
various information about the version installed on your system.
.SS Linux libc
-In the early to mid 1990s, there was for a while
+In the early to mid 1990s,
+there was for a while
.IR "Linux libc" ,
a fork of glibc 1.x created by Linux developers who felt that glibc
development at the time was not sufficing for the needs of Linux.
-Often, this library was referred to (ambiguously) as just "libc".
+Often,
+this library was referred to (ambiguously) as just \[lq]libc\[rq].
Linux libc released major versions 2, 3, 4, and 5,
as well as many minor versions of those releases.
Linux libc4 was the last version to use the a.out binary format,
@@ -54,8 +62,10 @@ this version used the shared library soname
For a while,
Linux libc was the standard C library in many Linux distributions.
.PP
-However, notwithstanding the original motivations of the Linux libc effort,
-by the time glibc 2.0 was released (in 1997),
+However,
+notwithstanding the original motivations of the Linux libc effort,
+by the time glibc 2.0 was released
+(in 1997),
it was clearly superior to Linux libc,
and all major Linux distributions that had been using Linux libc
soon switched back to glibc.
@@ -66,9 +76,11 @@ glibc 2.0 and later used the shared library soname
Since the switch from Linux libc to glibc 2.0 occurred long ago,
.I man-pages
no longer takes care to document Linux libc details.
-Nevertheless, the history is visible in vestiges of information
+Nevertheless,
+the history is visible in vestiges of information
about Linux libc that remain in a few manual pages,
-in particular, references to
+in particular,
+references to
.I libc4
and
.IR libc5 .
@@ -79,19 +91,20 @@ both in terms of features and memory footprint,
and often intended for building small binaries,
perhaps targeted at development for embedded Linux systems.
Among such libraries are
-.UR http://www.uclibc.org/
+.UR http://www\:.uclibc\:.org/
.I uClibc
.UE ,
-.UR http://www.fefe.de/dietlibc/
+.UR http://www\:.fefe\:.de/\:dietlibc/
.I dietlibc
.UE ,
and
-.UR http://www.musl\-libc.org/
+.UR http://www\:.musl\-libc\:.org/
.I "musl libc"
.UE .
Details of these libraries are covered by the
.I man-pages
-project, where they are known.
+project,
+where they are known.
.SH SEE ALSO
.BR syscalls (2),
.BR getauxval (3),
diff --git a/man7/locale.7 b/man7/locale.7
index 4eaa7ad01..c097a812c 100644
--- a/man7/locale.7
+++ b/man7/locale.7
@@ -8,7 +8,7 @@
.\" <jochen.hein@delphi.central.de>
.\" Modified Thu Apr 25 00:43:19 2002 by Bruno Haible <bruno@clisp.org>
.\"
-.TH locale 7 2022-12-04 "Linux man-pages 6.02"
+.TH locale 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
locale \- description of multilanguage support
.SH SYNOPSIS
@@ -163,7 +163,7 @@ elements, which return strings such as "Herr" and "Frau"
.TP
.B LC_NUMERIC
This category determines the formatting rules used for nonmonetary
-numeric values\(emfor example,
+numeric values\[em]for example,
the thousands separator and the radix character
(a period in most English-speaking countries,
but a comma in many other regions).
@@ -217,7 +217,7 @@ All of the above.
If the second argument to
.BR setlocale (3)
is an empty string,
-.IR \(dq\(dq ,
+.IR \[dq]\[dq] ,
for the default locale, it is determined using the following steps:
.IP (1) 5
If there is a non-null environment variable
@@ -263,7 +263,7 @@ struct lconv {
char *int_curr_symbol; /* First three chars are a currency
symbol from ISO 4217. Fourth char
is the separator. Fifth char
- is \(aq\e0\(aq. */
+ is \[aq]\e0\[aq]. */
char *currency_symbol; /* Local currency symbol */
char *mon_decimal_point; /* Radix character */
char *mon_thousands_sep; /* Like \fIthousands_sep\fP above */
@@ -321,7 +321,7 @@ and
and thus affects all unprivileged localized programs:
.TP
.B LOCPATH
-A list of pathnames, separated by colons (\(aq:\(aq),
+A list of pathnames, separated by colons (\[aq]:\[aq]),
that should be used to find locale data.
If this variable is set,
only the individual compiled locale data files from
diff --git a/man7/mailaddr.7 b/man7/mailaddr.7
index 05250c3e2..220fbda26 100644
--- a/man7/mailaddr.7
+++ b/man7/mailaddr.7
@@ -24,7 +24,7 @@
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\" %%%LICENSE_END
.\"
-.TH mailaddr 7 2022-10-30 "Linux man-pages 6.02"
+.TH mailaddr 7 2023-02-05 "Linux man-pages 6.03"
.UC 5
.SH NAME
mailaddr \- mail addressing description
@@ -122,7 +122,7 @@ The "postmaster" address is not case sensitive.
.SH FILES
.I /etc/aliases
.br
-.I \(ti/.forward
+.I \[ti]/.forward
.SH SEE ALSO
.BR mail (1),
.BR aliases (5),
diff --git a/man7/man-pages.7 b/man7/man-pages.7
index 1650d6080..82afefb8b 100644
--- a/man7/man-pages.7
+++ b/man7/man-pages.7
@@ -8,7 +8,7 @@
.\" 2007-05-30 created by mtk, using text from old man.7 plus
.\" rewrites and additional text.
.\"
-.TH man-pages 7 2022-12-15 "Linux man-pages 6.02"
+.TH man-pages 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
man-pages \- conventions for writing Linux man pages
.SH SYNOPSIS
@@ -386,13 +386,13 @@ If the call is Linux-specific, note this.
.IP
If this section consists of just a list of standards
(which it commonly does),
-terminate the list with a period (\(aq.\(aq).
+terminate the list with a period (\[aq].\[aq]).
.TP
.B NOTES
Miscellaneous notes.
.IP
For Section 2 and 3 man pages you may find it useful to include
-subsections (\fBSS\fP) named \fILinux Notes\fP and \fIGlibc Notes\fP.
+subsections (\fBSS\fP) named \fILinux Notes\fP and \fIglibc Notes\fP.
.IP
In Section 2, use the heading
.I "C library/kernel differences"
@@ -463,8 +463,8 @@ Hyphenation of individual page names can be prevented
by preceding words with the string "\e%".
.IP
Given the distributed, autonomous nature of FOSS projects
-and their documentation, it is sometimes necessary\(emand in many cases
-desirable\(emthat the SEE ALSO section includes references to
+and their documentation, it is sometimes necessary\[em]and in many cases
+desirable\[em]that the SEE ALSO section includes references to
manual pages provided by other projects.
.SH FORMATTING AND WORDING CONVENTIONS
The following subsections note some details for preferred formatting and
@@ -483,11 +483,11 @@ be separated by blank lines.
However, blank lines (achieved using
.IR .PP )
may be added in the following cases:
-.IP \(bu 3
+.IP \[bu] 3
to separate long lists of function prototypes into related groups
(see for example
.BR list (3));
-.IP \(bu
+.IP \[bu]
in other cases that may improve readability.
.PP
In the SYNOPSIS, a long function prototype may need to be
@@ -534,7 +534,7 @@ As an example:
The preferred wording to describe how
.I errno
is set is
-.RI \(dq errno
+.RI \[dq] errno
is set to indicate the error"
or similar.
.\" Before man-pages 5.11, many different wordings were used, which
@@ -543,19 +543,19 @@ This wording is consistent with the wording used in both POSIX.1 and FreeBSD.
.SS ATTRIBUTES
.\" See man-pages commit c466875ecd64ed3d3cd3e578406851b7dfb397bf
Note the following:
-.IP \(bu 3
+.IP \[bu] 3
Wrap the table in this section in a
.IR ".ad\ l" / .ad
pair to disable text filling and a
.IR .nh / .hy
pair to disable hyphenation.
-.IP \(bu
+.IP \[bu]
Ensure that the table occupies the full page width through the use of an
.I lbx
description for one of the columns
(usually the first column,
though in some cases the last column if it contains a lot of text).
-.IP \(bu
+.IP \[bu]
Make free use of
.IR T{ / T}
macro pairs to allow table cells to be broken over multiple lines
@@ -666,7 +666,7 @@ These represent a set of (normally) exclusive alternatives.
.TP
Bullet lists
Elements are preceded by bullet symbols
-.RB ( \e(bu ).
+.RB ( \e[bu] ).
Anything that doesn't fit elsewhere is
usually covered by this type of list.
.TP
@@ -722,7 +722,7 @@ If the command is short, then it can be included inline in the text,
in italic format, for example,
.IR "man 7 man-pages" .
In this case, it may be worth using nonbreaking spaces
-(\e\(ti) at suitable places in the command.
+(\e[ti]) at suitable places in the command.
Command options should be written in italics (e.g.,
.IR \-l ).
.PP
@@ -761,7 +761,7 @@ create properly hyperlinked pages.)
.PP
Control characters should be written in bold face,
with no quotes; for example,
-.BR \(haX .
+.BR \[ha]X .
.SS Spelling
Starting with release 2.59,
.I man-pages
@@ -771,11 +771,11 @@ please write all new pages and patches according to these conventions.
.PP
Aside from the well-known spelling differences,
there are a few other subtleties to watch for:
-.IP \(bu 3
+.IP \[bu] 3
American English tends to use the forms "backward", "upward", "toward",
and so on
rather than the British forms "backwards", "upwards", "towards", and so on.
-.IP \(bu
+.IP \[bu]
Opinions are divided on "acknowledgement" vs "acknowledgment".
The latter is predominant, but not universal usage in American English.
POSIX and the BSD license use the former spelling.
@@ -882,6 +882,7 @@ superblock T{
super block,
super-block
T}
+symbolic link symlink
timestamp time stamp
timezone time zone
uppercase upper case, upper-case
@@ -953,7 +954,7 @@ On the other hand,
is the
.IR "null byte" ,
a byte with the value 0, represented in C via the character constant
-.IR \(aq\e0\(aq .
+.IR \[aq]\e0\[aq] .
.PP
The preferred term for the pointer is "null pointer" or simply "NULL";
avoid writing "NULL pointer".
@@ -992,8 +993,8 @@ parenthetical asides (e.g., like this one).
Always include periods in such abbreviations, as shown here.
In addition, "e.g." and "i.e." should always be followed by a comma.
.SS Em-dashes
-The way to write an em-dash\(emthe glyph that appears
-at either end of this subphrase\(emin *roff is with the macro "\e(em".
+The way to write an em-dash\[em]the glyph that appears
+at either end of this subphrase\[em]in *roff is with the macro "\e[em]".
(On an ASCII terminal, an em-dash typically renders as two hyphens,
but in other typographical contexts it renders as a long dash.)
Em-dashes should be written
@@ -1076,20 +1077,20 @@ This guideline applies also to code examples.
.PP
The use of real minus signs serves the following purposes:
.\" https://lore.kernel.org/linux-man/20210121061158.5ul7226fgbrmodbt@localhost.localdomain/
-.IP \(bu 3
+.IP \[bu] 3
To provide better renderings on various targets other than
ASCII terminals,
notably in PDF and on Unicode/UTF\-8-capable terminals.
-.IP \(bu
+.IP \[bu]
To generate glyphs that when copied from rendered pages will
produce real minus signs when pasted into a terminal.
.PP
To produce unslanted single quotes that render well in ASCII, UTF-8, and PDF,
-use "\e(aq" ("apostrophe quote"); for example
+use "\e[aq]" ("apostrophe quote"); for example
.PP
.in +4n
.EX
-\e(aqC\e(aq
+\e[aq]C\e[aq]
.EE
.in
.PP
@@ -1098,13 +1099,13 @@ where
is the quoted character.
This guideline applies also to character constants used in code examples.
.PP
-Where a proper caret (\(ha) that renders well in both a terminal and PDF
-is required, use "\\(ha".
+Where a proper caret (\[ha]) that renders well in both a terminal and PDF
+is required, use "\\[ha]".
This is especially necessary in code samples,
to get a nicely rendered caret when rendering to PDF.
.PP
-Using a naked "\(ti" character results in a poor rendering in PDF.
-Instead use "\\(ti".
+Using a naked "\[ti]" character results in a poor rendering in PDF.
+Instead use "\\[ti]".
This is especially necessary in code samples,
to get a nicely rendered tilde when rendering to PDF.
.\"
@@ -1112,22 +1113,22 @@ to get a nicely rendered tilde when rendering to PDF.
Manual pages may include example programs demonstrating how to
use a system call or library function.
However, note the following:
-.IP \(bu 3
+.IP \[bu] 3
Example programs should be written in C.
-.IP \(bu
+.IP \[bu]
An example program is necessary and useful only if it demonstrates
something beyond what can easily be provided in a textual
description of the interface.
An example program that does nothing
other than call an interface usually serves little purpose.
-.IP \(bu
+.IP \[bu]
Example programs should ideally be short
(e.g., a good example can often be provided in less than 100 lines of code),
though in some cases longer programs may be necessary
to properly illustrate the use of an API.
-.IP \(bu
+.IP \[bu]
Expressive code is appreciated.
-.IP \(bu
+.IP \[bu]
Comments should included where helpful.
Complete sentences in free-standing comments should be
terminated by a period.
@@ -1135,18 +1136,18 @@ Periods should generally be omitted in "tag" comments
(i.e., comments that are placed on the same line of code);
such comments are in any case typically brief phrases
rather than complete sentences.
-.IP \(bu
+.IP \[bu]
Example programs should do error checking after system calls and
library function calls.
-.IP \(bu
+.IP \[bu]
Example programs should be complete, and compile without
warnings when compiled with \fIcc\ \-Wall\fP.
-.IP \(bu
+.IP \[bu]
Where possible and appropriate, example programs should allow
experimentation, by varying their behavior based on inputs
(ideally from command-line arguments, or alternatively, via
input read by the program).
-.IP \(bu
+.IP \[bu]
Example programs should be laid out according to Kernighan and
Ritchie style, with 4-space indents.
(Avoid the use of TAB characters in source code!)
@@ -1158,7 +1159,7 @@ something close to the preferred style:
indent \-npro \-kr \-i4 \-ts4 \-sob \-l72 \-ss \-nut \-psl prog.c
.EE
.in
-.IP \(bu
+.IP \[bu]
For consistency, all example programs should terminate using either of:
.IP
.in +4n
@@ -1177,7 +1178,7 @@ exit(1);
return n;
.EE
.in
-.IP \(bu
+.IP \[bu]
If there is extensive explanatory text before the
program source code, mark off the source code
with a subsection heading
@@ -1194,11 +1195,11 @@ Always do this if the explanatory text includes a shell session log.
.PP
If you include a shell session log demonstrating the use of a program
or other system feature:
-.IP \(bu 3
+.IP \[bu] 3
Place the session log above the source code listing.
-.IP \(bu
+.IP \[bu]
Indent the session log by four spaces.
-.IP \(bu
+.IP \[bu]
Boldface the user input text,
to distinguish it from output produced by the system.
.PP
diff --git a/man7/man.7 b/man7/man.7
index 550de69ac..dc7284ee6 100644
--- a/man7/man.7
+++ b/man7/man.7
@@ -11,7 +11,7 @@
.\" Modified Tue Jul 27 20:12:02 2004 by Colin Watson <cjwatson@debian.org>
.\" 2007-05-30, mtk: various rewrites and moved much text to new man-pages.7.
.\"
-.TH man 7 2022-10-30 "Linux man-pages 6.02"
+.TH man 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
man \- macros to format man pages
.SH SYNOPSIS
@@ -355,8 +355,8 @@ When you need to include the backslash character as normal text,
use \ee.
Other sequences you may use, where x or xx are any characters and N
is any digit, include:
-.BR \e\(aq ,
-.BR \e\(ga ,
+.BR \e\[aq] ,
+.BR \e\[ga] ,
.BR \e- ,
.BR \e. ,
.BR \e" ,
@@ -393,7 +393,7 @@ and
macros instead).
The condition test
.RB ( if,ie )
-should only have \(aqt\(aq or \(aqn\(aq as the condition.
+should only have \[aq]t\[aq] or \[aq]n\[aq] as the condition.
Only translations
.RB ( tr )
that can be ignored should be used.
@@ -431,14 +431,14 @@ to ensure that tools can automatically find the URLs.
.PP
Tools processing these files should open the file and examine the first
nonwhitespace character.
-A period (.) or single quote (\(aq) at the beginning
+A period (.) or single quote (\[aq]) at the beginning
of a line indicates a troff-based file (such as man or mdoc).
A left angle bracket (<) indicates an SGML/XML-based
file (such as HTML or Docbook).
Anything else suggests simple ASCII
text (e.g., a "catman" result).
.PP
-Many man pages begin with \fB\(aq\e"\fP followed by a
+Many man pages begin with \fB\[aq]\e"\fP followed by a
space and a list of characters,
indicating how the page is to be preprocessed.
For portability's sake to non-troff translators we recommend
@@ -483,15 +483,15 @@ The Sun macro
.B TX
is not implemented.
.\" .SH AUTHORS
-.\" .IP \(em 3m
+.\" .IP \[em] 3m
.\" James Clark (jjc@jclark.com) wrote the implementation of the macro package.
-.\" .IP \(em
+.\" .IP \[em]
.\" Rickard E. Faith (faith@cs.unc.edu) wrote the initial version of
.\" this manual page.
-.\" .IP \(em
+.\" .IP \[em]
.\" Jens Schweikhardt (schweikh@noc.fdn.de) wrote the Linux Man-Page Mini-HOWTO
.\" (which influenced this manual page).
-.\" .IP \(em
+.\" .IP \[em]
.\" David A. Wheeler (dwheeler@ida.org) heavily modified this
.\" manual page, such as adding detailed information on sections and macros.
.SH SEE ALSO
diff --git a/man7/math_error.7 b/man7/math_error.7
index 448550e4a..feafbbcb6 100644
--- a/man7/math_error.7
+++ b/man7/math_error.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH math_error 7 2022-12-04 "Linux man-pages 6.02"
+.TH math_error 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
math_error \- detecting errors from mathematical functions
.SH SYNOPSIS
diff --git a/man7/mount_namespaces.7 b/man7/mount_namespaces.7
index ae1701896..d9394f8d8 100644
--- a/man7/mount_namespaces.7
+++ b/man7/mount_namespaces.7
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH mount_namespaces 7 2022-12-15 "Linux man-pages 6.02"
+.TH mount_namespaces 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
mount_namespaces \- overview of Linux mount namespaces
.SH DESCRIPTION
@@ -38,12 +38,12 @@ with the
flag.
When a new mount namespace is created,
its mount list is initialized as follows:
-.IP \(bu 3
+.IP \[bu] 3
If the namespace is created using
.BR clone (2),
the mount list of the child's namespace is a copy
of the mount list in the parent process's mount namespace.
-.IP \(bu
+.IP \[bu]
If the namespace is created using
.BR unshare (2),
the mount list of the new namespace is a copy of
@@ -251,7 +251,7 @@ and then view the mounts in
.EX
sh1# \fBmount \-\-make\-shared /mntS\fP
sh1# \fBmount \-\-make\-private /mntP\fP
-sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
77 61 8:17 / /mntS rw,relatime shared:1
83 61 8:15 / /mntP rw,relatime
.EE
@@ -276,7 +276,7 @@ which is mounted as private:
.PP
.in +4n
.EX
-sh1# \fBcat /proc/self/mountinfo | awk \(aq$1 == 61\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh1# \fBcat /proc/self/mountinfo | awk \[aq]$1 == 61\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
61 0 8:2 / / rw,relatime
.EE
.in
@@ -287,8 +287,8 @@ and inspect the mounts:
.PP
.in +4n
.EX
-$ \fBPS1=\(aqsh2# \(aq sudo unshare \-m \-\-propagation unchanged sh\fP
-sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+$ \fBPS1=\[aq]sh2# \[aq] sudo unshare \-m \-\-propagation unchanged sh\fP
+sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
222 145 8:17 / /mntS rw,relatime shared:1
225 145 8:15 / /mntP rw,relatime
.EE
@@ -318,7 +318,7 @@ sh2# \fBmkdir /mntS/a\fP
sh2# \fBmount /dev/sdb6 /mntS/a\fP
sh2# \fBmkdir /mntP/b\fP
sh2# \fBmount /dev/sdb7 /mntP/b\fP
-sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
222 145 8:17 / /mntS rw,relatime shared:1
225 145 8:15 / /mntP rw,relatime
178 222 8:22 / /mntS/a rw,relatime shared:2
@@ -342,7 +342,7 @@ did not propagate:
.PP
.in +4n
.EX
-sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
77 61 8:17 / /mntS rw,relatime shared:1
83 61 8:15 / /mntP rw,relatime
179 77 8:22 / /mntS/a rw,relatime shared:2
@@ -373,7 +373,7 @@ two mounts as shared in the initial mount namespace:
.EX
sh1# \fBmount \-\-make\-shared /mntX\fP
sh1# \fBmount \-\-make\-shared /mntY\fP
-sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
132 83 8:23 / /mntX rw,relatime shared:1
133 83 8:22 / /mntY rw,relatime shared:2
.EE
@@ -385,7 +385,7 @@ we create a new mount namespace and inspect the mounts:
.in +4n
.EX
sh2# \fBunshare \-m \-\-propagation unchanged sh\fP
-sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime shared:2
.EE
@@ -396,7 +396,7 @@ In the new mount namespace, we then mark one of the mounts as a slave:
.in +4n
.EX
sh2# \fBmount \-\-make\-slave /mntY\fP
-sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime master:2
.EE
@@ -431,7 +431,7 @@ was created as a private mount:
.PP
.in +4n
.EX
-sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime master:2
173 168 8:3 / /mntX/a rw,relatime shared:3
@@ -450,7 +450,7 @@ was not propagated:
.PP
.in +4n
.EX
-sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
132 83 8:23 / /mntX rw,relatime shared:1
133 83 8:22 / /mntY rw,relatime shared:2
174 132 8:3 / /mntX/a rw,relatime shared:3
@@ -465,7 +465,7 @@ in the first shell:
.EX
sh1# \fBmkdir /mntY/c\fP
sh1# \fBmount /dev/sda1 /mntY/c\fP
-sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh1# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
132 83 8:23 / /mntX rw,relatime shared:1
133 83 8:22 / /mntY rw,relatime shared:2
174 132 8:3 / /mntX/a rw,relatime shared:3
@@ -480,7 +480,7 @@ and that the new mount is itself a slave mount (to peer group 4):
.PP
.in +4n
.EX
-sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+sh2# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
168 167 8:23 / /mntX rw,relatime shared:1
169 167 8:22 / /mntY rw,relatime master:2
173 168 8:3 / /mntX/a rw,relatime shared:3
@@ -499,7 +499,7 @@ Suppose we have a system with the following mounts:
.PP
.in +4n
.EX
-# \fBmount | awk \(aq{print $1, $2, $3}\(aq\fP
+# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -513,7 +513,7 @@ We do this for the first user, and inspect the mounts:
.in +4n
.EX
# \fBmount \-\-rbind / /home/cecilia/\fP
-# \fBmount | awk \(aq{print $1, $2, $3}\(aq\fP
+# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -529,7 +529,7 @@ we start to see the explosion problem:
.in +4n
.EX
# \fBmount \-\-rbind / /home/henry\fP
-# \fBmount | awk \(aq{print $1, $2, $3}\(aq\fP
+# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -560,7 +560,7 @@ it becomes obvious that the explosion is exponential in nature:
.in +4n
.EX
# \fBmount \-\-rbind / /home/otto\fP
-# \fBmount | awk \(aq{print $1, $2, $3}\(aq\fP
+# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -630,7 +630,7 @@ under each user's directory:
.PP
.in +4n
.EX
-# \fBmount | awk \(aq{print $1, $2, $3}\(aq\fP
+# \fBmount | awk \[aq]{print $1, $2, $3}\[aq]\fP
/dev/sda1 on /
/dev/sdb6 on /mntX
/dev/sdb7 on /mntY
@@ -867,7 +867,7 @@ mount is a shared mount in a new peer group (with no peers):
.EX
# \fBmount \-\-make\-private /mnt\fP # Isolate from any previous peer group
# \fBmount \-\-make\-shared /mnt\fP
-# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
+# \fBcat /proc/self/mountinfo | grep \[aq]/mnt\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
.EE
@@ -882,7 +882,7 @@ onto
.EX
# \fBmkdir \-p /tmp/etc\fP
# \fBmount \-\-bind /mnt/etc /tmp/etc\fP
-# \fBcat /proc/self/mountinfo | egrep \(aq/mnt|/tmp/\(aq | sed \(aqs/ \- .*//\(aq\fP
+# \fBcat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
267 40 8:2 /etc /tmp/etc ... shared:102
@@ -903,7 +903,7 @@ so that it can propagate events to the next slave in the chain:
.EX
# \fBmount \-\-make\-slave /tmp/etc\fP
# \fBmount \-\-make\-shared /tmp/etc\fP
-# \fBcat /proc/self/mountinfo | egrep \(aq/mnt|/tmp/\(aq | sed \(aqs/ \- .*//\(aq\fP
+# \fBcat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
267 40 8:2 /etc /tmp/etc ... shared:105 master:102
@@ -925,7 +925,7 @@ a slave of
# \fBmkdir \-p /mnt/tmp/etc\fP
# \fBmount \-\-bind /tmp/etc /mnt/tmp/etc\fP
# \fBmount \-\-make\-slave /mnt/tmp/etc\fP
-# \fBcat /proc/self/mountinfo | egrep \(aq/mnt|/tmp/\(aq | sed \(aqs/ \- .*//\(aq\fP
+# \fBcat /proc/self/mountinfo | egrep \[aq]/mnt|/tmp/\[aq] | sed \[aq]s/ \- .*//\[aq]\fP
239 61 8:2 / /mnt ... shared:102
248 239 0:4 / /mnt/proc ... shared:5
267 40 8:2 /etc /tmp/etc ... shared:105 master:102
@@ -958,7 +958,7 @@ we see the following:
.PP
.in +4n
.EX
-# \fBcat /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
+# \fBcat /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
239 61 8:2 / / ... shared:102
248 239 0:4 / /proc ... shared:5
273 239 8:2 /etc /tmp/etc ... master:105 propagate_from:102
@@ -1129,7 +1129,7 @@ in the following step:
\fBstrace \-o /tmp/log \e\fP
\fBumount /mnt/dir\fP
umount: /etc/shadow: not mounted.
-# \fBgrep \(aq^umount\(aq /tmp/log\fP
+# \fBgrep \[aq]\[ha]umount\[aq] /tmp/log\fP
umount2("/etc/shadow", 0) = \-1 EINVAL (Invalid argument)
.EE
.in
@@ -1151,9 +1151,9 @@ less privileged mount namespace:
.IP
.in +4n
.EX
-# \fBecho \(aqaaaaa\(aq > /tmp/a\fP # File to mount onto /etc/shadow
+# \fBecho \[aq]aaaaa\[aq] > /tmp/a\fP # File to mount onto /etc/shadow
# \fBunshare \-\-user \-\-map\-root\-user \-\-mount \e\fP
- \fBsh \-c \(aqmount \-\-bind /tmp/a /etc/shadow; cat /etc/shadow\(aq\fP
+ \fBsh \-c \[aq]mount \-\-bind /tmp/a /etc/shadow; cat /etc/shadow\[aq]\fP
aaaaa
# \fBumount /etc/shadow\fP
.EE
@@ -1183,7 +1183,7 @@ and a small hierarchy of mounts underneath that mount.
.IP
.in +4n
.EX
-$ \fBPS1=\(aqns1# \(aq sudo unshare \-\-user \-\-map\-root\-user \e\fP
+$ \fBPS1=\[aq]ns1# \[aq] sudo unshare \-\-user \-\-map\-root\-user \e\fP
\fB\-\-mount \-\-propagation private bash\fP
ns1# \fBecho $$\fP # We need the PID of this shell later
778501
@@ -1192,7 +1192,7 @@ ns1# \fBmkdir /mnt/x\fP
ns1# \fBmount \-\-make\-private \-t tmpfs none /mnt/x\fP
ns1# \fBmkdir /mnt/x/y\fP
ns1# \fBmount \-\-make\-private \-t tmpfs none /mnt/x/y\fP
-ns1# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
+ns1# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
986 83 8:5 /mnt /mnt rw,relatime shared:344
989 986 0:56 / /mnt/x rw,relatime
990 989 0:57 / /mnt/x/y rw,relatime
@@ -1207,9 +1207,9 @@ check the state of the propagated mounts rooted at
.IP
.in +4n
.EX
-ns1# \fBPS1=\(aqns2# \(aq unshare \-\-user \-\-map\-root\-user \e\fP
+ns1# \fBPS1=\[aq]ns2# \[aq] unshare \-\-user \-\-map\-root\-user \e\fP
\fB\-\-mount \-\-propagation unchanged bash\fP
-ns2# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
+ns2# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
1239 1204 8:5 /mnt /mnt rw,relatime master:344
1240 1239 0:56 / /mnt/x rw,relatime
1241 1240 0:57 / /mnt/x/y rw,relatime
@@ -1233,9 +1233,9 @@ at the location
.IP
.in +4n
.EX
-$ \fBPS1=\(aqns3# \(aq sudo nsenter \-t 778501 \-\-user \-\-mount\fP
+$ \fBPS1=\[aq]ns3# \[aq] sudo nsenter \-t 778501 \-\-user \-\-mount\fP
ns3# \fBmount \-\-rbind \-\-make\-private /mnt/x /mnt/ppp\fP
-ns3# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
+ns3# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
986 83 8:5 /mnt /mnt rw,relatime shared:344
989 986 0:56 / /mnt/x rw,relatime
990 989 0:57 / /mnt/x/y rw,relatime
@@ -1254,7 +1254,7 @@ as can be verified by executing the following command in that shell session:
.IP
.in +4n
.EX
-ns2# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
+ns2# \fBgrep /mnt /proc/self/mountinfo | sed \[aq]s/ \- .*//\[aq]\fP
1239 1204 8:5 /mnt /mnt rw,relatime master:344
1240 1239 0:56 / /mnt/x rw,relatime
1241 1240 0:57 / /mnt/x/y rw,relatime
@@ -1277,7 +1277,7 @@ as shown by the following commands:
.EX
ns2# \fBumount /mnt/ppp/y\fP
umount: /mnt/ppp/y: not mounted.
-ns2# \fBumount \-l /mnt/ppp | sed \(aqs/ \- .*//\(aq\fP # Succeeds...
+ns2# \fBumount \-l /mnt/ppp | sed \[aq]s/ \- .*//\[aq]\fP # Succeeds...
ns2# \fBgrep /mnt /proc/self/mountinfo\fP
1239 1204 8:5 /mnt /mnt rw,relatime master:344
1240 1239 0:56 / /mnt/x rw,relatime
diff --git a/man7/mq_overview.7 b/man7/mq_overview.7
index 3d349d372..337e37a0b 100644
--- a/man7/mq_overview.7
+++ b/man7/mq_overview.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH mq_overview 7 2022-12-15 "Linux man-pages 6.02"
+.TH mq_overview 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
mq_overview \- overview of POSIX message queues
.SH DESCRIPTION
@@ -99,7 +99,7 @@ mq_unlink(3) mq_unlink(2)
.RE
.SS Versions
POSIX message queues have been supported since Linux 2.6.6.
-Glibc support has been provided since glibc 2.3.4.
+glibc support has been provided since glibc 2.3.4.
.SS Kernel configuration
Support for POSIX message queues is configurable via the
.B CONFIG_POSIX_MQUEUE
@@ -169,13 +169,13 @@ The definition of
.B HARD_MSGMAX
has changed across kernel versions:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Up to Linux 2.6.32:
.I 131072\~/\~sizeof(void\~*)
-.IP \(bu
+.IP \[bu]
Linux 2.6.33 to Linux 3.4:
.I (32768\~*\~sizeof(void\~*) / 4)
-.IP \(bu
+.IP \[bu]
Since Linux 3.5:
.\" commit 5b5c4d1a1440e94994c73dddbad7be0676cd8b9a
65,536
@@ -223,12 +223,12 @@ The upper limit for
.I msgsize_max
has varied across kernel versions:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Before Linux 2.6.28, the upper limit is
.BR INT_MAX .
-.IP \(bu
+.IP \[bu]
From Linux 2.6.28 to Linux 3.4, the limit is 1,048,576.
-.IP \(bu
+.IP \[bu]
Since Linux 3.5, the limit is 16,777,216
.RB ( HARD_MSGSIZEMAX ).
.RE
diff --git a/man7/namespaces.7 b/man7/namespaces.7
index b965b9756..4973da4e0 100644
--- a/man7/namespaces.7
+++ b/man7/namespaces.7
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH namespaces 7 2022-12-15 "Linux man-pages 6.02"
+.TH namespaces 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
namespaces \- overview of Linux namespaces
.SH DESCRIPTION
@@ -138,7 +138,7 @@ supports being manipulated by
.PP
.in +4n
.EX
-$ \fBls \-l /proc/$$/ns | awk \(aq{print $1, $9, $10, $11}\(aq\fP
+$ \fBls \-l /proc/$$/ns | awk \[aq]{print $1, $9, $10, $11}\[aq]\fP
total 0
lrwxrwxrwx. cgroup \-> cgroup:[4026531835]
lrwxrwxrwx. ipc \-> ipc:[4026531839]
@@ -270,7 +270,7 @@ check; see
.\"
.\" ==================== The /proc/sys/user directory ====================
.\"
-.SS The /proc/sys/user directory
+.SS The \fI/proc/sys/user\fP directory
The files in the
.I /proc/sys/user
directory (which is present since Linux 4.9) expose limits
@@ -311,48 +311,48 @@ The value in this file defines a per-user limit on the number of
uts namespaces that may be created in the user namespace.
.PP
Note the following details about these files:
-.IP \(bu 3
+.IP \[bu] 3
The values in these files are modifiable by privileged processes.
-.IP \(bu
+.IP \[bu]
The values exposed by these files are the limits for the user namespace
in which the opening process resides.
-.IP \(bu
+.IP \[bu]
The limits are per-user.
Each user in the same user namespace
can create namespaces up to the defined limit.
-.IP \(bu
+.IP \[bu]
The limits apply to all users, including UID 0.
-.IP \(bu
+.IP \[bu]
These limits apply in addition to any other per-namespace
limits (such as those for PID and user namespaces) that may be enforced.
-.IP \(bu
+.IP \[bu]
Upon encountering these limits,
.BR clone (2)
and
.BR unshare (2)
fail with the error
.BR ENOSPC .
-.IP \(bu
+.IP \[bu]
For the initial user namespace,
the default value in each of these files is half the limit on the number
of threads that may be created
.RI ( /proc/sys/kernel/threads\-max ).
In all descendant user namespaces, the default value in each file is
.BR MAXINT .
-.IP \(bu
+.IP \[bu]
When a namespace is created, the object is also accounted
against ancestor namespaces.
More precisely:
.RS
-.IP \(bu 3
+.IP \[bu] 3
Each user namespace has a creator UID.
-.IP \(bu
+.IP \[bu]
When a namespace is created,
it is accounted against the creator UIDs in each of the
ancestor user namespaces,
and the kernel ensures that the corresponding namespace limit
for the creator UID in the ancestor namespace is not exceeded.
-.IP \(bu
+.IP \[bu]
The aforementioned point ensures that creating a new user namespace
cannot be used as a means to escape the limits in force
in the current user namespace.
@@ -365,32 +365,32 @@ the namespace terminates or leaves the namespace.
However, there are a number of other factors that may pin
a namespace into existence even though it has no member processes.
These factors include the following:
-.IP \(bu 3
+.IP \[bu] 3
An open file descriptor or a bind mount exists for the corresponding
.IR /proc/ pid /ns/*
file.
-.IP \(bu
+.IP \[bu]
The namespace is hierarchical (i.e., a PID or user namespace),
and has a child namespace.
-.IP \(bu
+.IP \[bu]
It is a user namespace that owns one or more nonuser namespaces.
-.IP \(bu
+.IP \[bu]
It is a PID namespace,
and there is a process that refers to the namespace via a
.IR /proc/ pid /ns/pid_for_children
symbolic link.
-.IP \(bu
+.IP \[bu]
It is a time namespace,
and there is a process that refers to the namespace via a
.IR /proc/ pid /ns/time_for_children
symbolic link.
-.IP \(bu
+.IP \[bu]
It is an IPC namespace, and a corresponding mount of an
.I mqueue
filesystem (see
.BR mq_overview (7))
refers to this namespace.
-.IP \(bu
+.IP \[bu]
It is a PID namespace, and a corresponding mount of a
.BR proc (5)
filesystem refers to this namespace.
diff --git a/man7/netdevice.7 b/man7/netdevice.7
index 9005fb415..32cb8d769 100644
--- a/man7/netdevice.7
+++ b/man7/netdevice.7
@@ -15,7 +15,7 @@
.\" Modified, 2011-11-02, <bidulock@openss7.org>, added many basic
.\" but missing ioctls, such as SIOCGIFADDR.
.\"
-.TH netdevice 7 2022-12-15 "Linux man-pages 6.02"
+.TH netdevice 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
netdevice \- low-level access to Linux network devices
.SH SYNOPSIS
diff --git a/man7/netlink.7 b/man7/netlink.7
index 95d847e3d..90c0100f6 100644
--- a/man7/netlink.7
+++ b/man7/netlink.7
@@ -6,7 +6,7 @@
.\" Based on the original comments from Alexey Kuznetsov
.\" Modified 2005-12-27 by Hasso Tepper <hasso@estpak.ee>
.\" $Id: netlink.7,v 1.8 2000/06/22 13:23:00 ak Exp $
-.TH netlink 7 2022-12-15 "Linux man-pages 6.02"
+.TH netlink 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
netlink \- communication between kernel and user space (AF_NETLINK)
.SH SYNOPSIS
@@ -614,7 +614,7 @@ for (nh = (struct nlmsghdr *) buf; NLMSG_OK (nh, len);
information about libnetlink
.UE
.PP
-.UR http://www.infradead.org\:/\(titgr\:/libnl/
+.UR http://www.infradead.org\:/\[ti]tgr\:/libnl/
information about libnl
.UE
.PP
diff --git a/man7/network_namespaces.7 b/man7/network_namespaces.7
index ebb8298dc..c50cc99f2 100644
--- a/man7/network_namespaces.7
+++ b/man7/network_namespaces.7
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH network_namespaces 7 2022-12-04 "Linux man-pages 6.02"
+.TH network_namespaces 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
network_namespaces \- overview of Linux network namespaces
.SH DESCRIPTION
diff --git a/man7/nptl.7 b/man7/nptl.7
index 87f82c979..227f4ce1e 100644
--- a/man7/nptl.7
+++ b/man7/nptl.7
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH nptl 7 2022-10-30 "Linux man-pages 6.02"
+.TH nptl 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
nptl \- Native POSIX Threads Library
.SH DESCRIPTION
@@ -26,10 +26,10 @@ which might interfere with the operation of the NPTL implementation,
various glibc library functions and system call wrapper functions
attempt to hide these signals from applications,
as follows:
-.IP \(bu 3
+.IP \[bu] 3
.B SIGRTMIN
is defined with the value 34 (rather than 32).
-.IP \(bu
+.IP \[bu]
The
.BR sigwaitinfo (2),
.BR sigtimedwait (2),
@@ -37,13 +37,13 @@ and
.BR sigwait (3)
interfaces silently ignore requests to wait for these two signals
if they are specified in the signal set argument of these calls.
-.IP \(bu
+.IP \[bu]
The
.BR sigprocmask (2)
and
.BR pthread_sigmask (3)
interfaces silently ignore attempts to block these two signals.
-.IP \(bu
+.IP \[bu]
The
.BR sigaction (2),
.BR pthread_kill (3),
@@ -52,7 +52,7 @@ and
interfaces fail with the error
.B EINVAL
(indicating an invalid signal number) if these signals are specified.
-.IP \(bu
+.IP \[bu]
.BR sigfillset (3)
does not include these two signals when it creates a full signal set.
.\"
diff --git a/man7/numa.7 b/man7/numa.7
index aae4b7e0e..36e2a2b3d 100644
--- a/man7/numa.7
+++ b/man7/numa.7
@@ -6,7 +6,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH numa 7 2022-10-30 "Linux man-pages 6.02"
+.TH numa 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
numa \- overview of Non-Uniform Memory Architecture
.SH DESCRIPTION
@@ -37,7 +37,7 @@ This file displays information about a process's
NUMA memory policy and allocation.
.PP
Each line contains information about a memory range used by the process,
-displaying\(emamong other information\(emthe effective memory policy for
+displaying\[em]among other information\[em]the effective memory policy for
that memory range and on which nodes the pages have been allocated.
.PP
.I numa_maps
diff --git a/man7/operator.7 b/man7/operator.7
index 321dc7fac..d65e4ae9d 100644
--- a/man7/operator.7
+++ b/man7/operator.7
@@ -14,7 +14,7 @@
.\"
.\" 2007-12-08, mtk, Converted from mdoc to man macros
.\"
-.TH operator 7 2022-12-15 "Linux man-pages 6.02"
+.TH operator 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
operator \- C operator precedence and order of evaluation
.SH DESCRIPTION
@@ -25,7 +25,7 @@ lb lb lb
l l l.
Operator Associativity Notes
[] () . \-> ++ \-\- left to right [1]
-++ \-\- & * + \- \(ti ! sizeof right to left [2]
+++ \-\- & * + \- \[ti] ! sizeof right to left [2]
(type) right to left
* / % left to right
+ \- left to right
@@ -33,12 +33,12 @@ Operator Associativity Notes
< > <= >= left to right
== != left to right
& left to right
-\(ha left to right
+\[ha] left to right
| left to right
&& left to right
|| left to right
?: right to left
-= *= /= %= += \-= <<= >>= &= \(ha= |= right to left
+= *= /= %= += \-= <<= >>= &= \[ha]= |= right to left
, left to right
.TE
.PP
diff --git a/man7/packet.7 b/man7/packet.7
index 2bcf68464..54ef329dc 100644
--- a/man7/packet.7
+++ b/man7/packet.7
@@ -9,7 +9,7 @@
.\"
.\" $Id: packet.7,v 1.13 2000/08/14 08:03:45 ak Exp $
.\"
-.TH packet 7 2022-10-30 "Linux man-pages 6.02"
+.TH packet 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
packet \- packet interface on device level
.SH SYNOPSIS
@@ -297,7 +297,7 @@ The group is deleted when the last socket is closed.
Fanout supports multiple algorithms to spread traffic between sockets,
as follows:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The default mode,
.BR PACKET_FANOUT_HASH ,
sends packets from the same flow to the same socket to maintain
@@ -305,21 +305,21 @@ per-flow ordering.
For each packet, it chooses a socket by taking the packet flow hash
modulo the number of sockets in the group, where a flow hash is a hash
over network-layer address and optional transport-layer port fields.
-.IP \(bu
+.IP \[bu]
The load-balance mode
.B PACKET_FANOUT_LB
implements a round-robin algorithm.
-.IP \(bu
+.IP \[bu]
.B PACKET_FANOUT_CPU
selects the socket based on the CPU that the packet arrived on.
-.IP \(bu
+.IP \[bu]
.B PACKET_FANOUT_ROLLOVER
processes all data on a single socket, moving to the next when one
becomes backlogged.
-.IP \(bu
+.IP \[bu]
.B PACKET_FANOUT_RND
selects the socket using a pseudo-random number generator.
-.IP \(bu
+.IP \[bu]
.B PACKET_FANOUT_QM
.\" commit 2d36097d26b5991d71a2cf4a20c1a158f0f1bfcd
(available since Linux 3.14)
@@ -492,9 +492,9 @@ By default, packets sent through packet sockets pass through the kernel's
qdisc (traffic control) layer, which is fine for the vast majority of use
cases.
For traffic generator appliances using packet sockets
-that intend to brute-force flood the network\(emfor example,
+that intend to brute-force flood the network\[em]for example,
to test devices under load in a similar
-fashion to pktgen\(emthis layer can be bypassed by setting
+fashion to pktgen\[em]this layer can be bypassed by setting
this integer option to 1.
A side effect is that packet buffering in the qdisc layer is avoided,
which will lead to increased drops when network
@@ -652,7 +652,7 @@ which is 16 bytes and describes the system limit for a network interface name.
This means the names of network devices longer than 14 bytes
will be truncated to fit into
.IR spkt_device .
-All these lengths include the terminating null byte (\(aq\e0\(aq)).
+All these lengths include the terminating null byte (\[aq]\e0\[aq])).
.PP
Issues from this with old code typically show up with
very long interface names used by the
diff --git a/man7/path_resolution.7 b/man7/path_resolution.7
index d707ed1a6..cbe982a1a 100644
--- a/man7/path_resolution.7
+++ b/man7/path_resolution.7
@@ -2,14 +2,14 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH path_resolution 7 2022-12-04 "Linux man-pages 6.02"
+.TH path_resolution 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
path_resolution \- how a pathname is resolved to a file
.SH DESCRIPTION
Some UNIX/Linux system calls have as parameter one or more filenames.
A filename (or pathname) is resolved as follows.
.SS Step 1: start of the resolution process
-If the pathname starts with the \(aq/\(aq character, the starting lookup
+If the pathname starts with the \[aq]/\[aq] character, the starting lookup
directory is the root directory of the calling process.
A process inherits its root directory from its parent.
Usually this will be the root directory of the file hierarchy.
@@ -22,16 +22,16 @@ with the
flag set.
.PP
A process may get an entirely private mount namespace in case
-it\(emor one of its ancestors\(emwas started by an invocation of the
+it\[em]or one of its ancestors\[em]was started by an invocation of the
.BR clone (2)
system call that had the
.B CLONE_NEWNS
flag set.
-This handles the \(aq/\(aq part of the pathname.
+This handles the \[aq]/\[aq] part of the pathname.
.PP
-If the pathname does not start with the \(aq/\(aq character, the starting
+If the pathname does not start with the \[aq]/\[aq] character, the starting
lookup directory of the resolution process is the current working directory of
-the process \(em or in the case of
+the process \[em] or in the case of
.BR openat (2)-style
system calls, the
.I dfd
@@ -45,12 +45,12 @@ be changed by use of the
.BR chdir (2)
system call.
.PP
-Pathnames starting with a \(aq/\(aq character are called absolute pathnames.
-Pathnames not starting with a \(aq/\(aq are called relative pathnames.
+Pathnames starting with a \[aq]/\[aq] character are called absolute pathnames.
+Pathnames not starting with a \[aq]/\[aq] are called relative pathnames.
.SS Step 2: walk along the path
Set the current lookup directory to the starting lookup directory.
Now, for each nonfinal component of the pathname, where a component
-is a substring delimited by \(aq/\(aq characters, this component is looked up
+is a substring delimited by \[aq]/\[aq] characters, this component is looked up
in the current lookup directory.
.PP
If the process does not have search permission on
@@ -73,8 +73,9 @@ If the component is found and is a directory, we set the
current lookup directory to that directory, and go to the
next component.
.PP
-If the component is found and is a symbolic link (symlink), we first
-resolve this symbolic link (with the current lookup directory
+If the component is found and is a symbolic link,
+we first resolve this symbolic link
+(with the current lookup directory
as starting lookup directory).
Upon error, that error is returned.
If the result is not a directory, an
@@ -124,9 +125,9 @@ The lookup of the final component of the pathname goes just like
that of all other components, as described in the previous step,
with two differences: (i) the final component need not be a
directory (at least as far as the path resolution process is
-concerned\(emit may have to be a directory, or a nondirectory, because of
+concerned\[em]it may have to be a directory, or a nondirectory, because of
the requirements of the specific system call), and (ii) it
-is not necessarily an error if the component is not found\(emmaybe
+is not necessarily an error if the component is not found\[em]maybe
we are just creating it.
The details on the treatment
of the final entry are described in the manual pages of the specific
@@ -158,21 +159,22 @@ with the
.B RESOLVE_NO_XDEV
flag set (though note that this also restricts bind mount traversal).
.SS Trailing slashes
-If a pathname ends in a \(aq/\(aq, that forces resolution of the preceding
+If a pathname ends in a \[aq]/\[aq], that forces resolution of the preceding
component as in Step 2:
the component preceding the slash either exists and resolves to a directory
or it names a directory that is to be created
immediately after the pathname is resolved.
-Otherwise, a trailing \(aq/\(aq is ignored.
-.SS Final symlink
+Otherwise, a trailing \[aq]/\[aq] is ignored.
+.SS Final symbolic link
If the last component of a pathname is a symbolic link, then it
depends on the system call whether the file referred to will be
the symbolic link or the result of path resolution on its contents.
For example, the system call
.BR lstat (2)
-will operate on the symlink, while
+will operate on the symbolic link,
+while
.BR stat (2)
-operates on the file pointed to by the symlink.
+operates on the file pointed to by the symbolic link.
.SS Length limit
There is a maximum length for pathnames.
If the pathname (or some
diff --git a/man7/persistent-keyring.7 b/man7/persistent-keyring.7
index e8cde0378..181cdfe83 100644
--- a/man7/persistent-keyring.7
+++ b/man7/persistent-keyring.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH persistent-keyring 7 2022-10-30 "Linux man-pages 6.02"
+.TH persistent-keyring 7 2023-02-08 "Linux man-pages 6.03"
.SH NAME
persistent-keyring \- per-user persistent keyring
.SH DESCRIPTION
@@ -33,7 +33,7 @@ operation, it will be automatically created.
Each time the
.BR keyctl_get_persistent (3)
operation is performed,
-the persistent key's expiration timer is reset to the value in:
+the persistent keyring's expiration timer is reset to the value in:
.PP
.in +4n
.EX
@@ -44,7 +44,7 @@ the persistent key's expiration timer is reset to the value in:
Should the timeout be reached,
the persistent keyring will be removed and
everything it pins can then be garbage collected.
-The key will then be re-created on a subsequent call to
+The keyring will then be re-created on a subsequent call to
.BR keyctl_get_persistent (3).
.PP
The persistent keyring is not directly searched by
diff --git a/man7/pid_namespaces.7 b/man7/pid_namespaces.7
index f84f09aa1..c5a03b064 100644
--- a/man7/pid_namespaces.7
+++ b/man7/pid_namespaces.7
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH pid_namespaces 7 2022-10-30 "Linux man-pages 6.02"
+.TH pid_namespaces 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pid_namespaces \- overview of Linux PID namespaces
.SH DESCRIPTION
@@ -82,8 +82,8 @@ and prevents other members of the PID namespace from
accidentally killing the "init" process.
.PP
Likewise, a process in an ancestor namespace
-can\(emsubject to the usual permission checks described in
-.BR kill (2)\(emsend
+can\[em]subject to the usual permission checks described in
+.BR kill (2)\[em]send
signals to the "init" process of a child PID namespace only
if the "init" process has established a handler for that signal.
(Within the handler, the
diff --git a/man7/pipe.7 b/man7/pipe.7
index 1e6d3f0a8..d5db27696 100644
--- a/man7/pipe.7
+++ b/man7/pipe.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pipe 7 2022-12-04 "Linux man-pages 6.02"
+.TH pipe 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pipe \- overview of pipes and FIFOs
.SH DESCRIPTION
diff --git a/man7/pkeys.7 b/man7/pkeys.7
index 6b372c24c..15ca2654b 100644
--- a/man7/pkeys.7
+++ b/man7/pkeys.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pkeys 7 2022-10-30 "Linux man-pages 6.02"
+.TH pkeys 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
pkeys \- overview of Memory Protection Keys
.SH DESCRIPTION
diff --git a/man7/posixoptions.7 b/man7/posixoptions.7
index 381b4c07d..d485e30d3 100644
--- a/man7/posixoptions.7
+++ b/man7/posixoptions.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH posixoptions 7 2022-10-30 "Linux man-pages 6.02"
+.TH posixoptions 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
posixoptions \- optional parts of the POSIX standard
.SH DESCRIPTION
diff --git a/man7/process-keyring.7 b/man7/process-keyring.7
index b142408c7..dfb3b21c6 100644
--- a/man7/process-keyring.7
+++ b/man7/process-keyring.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH process-keyring 7 2022-10-30 "Linux man-pages 6.02"
+.TH process-keyring 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
process-keyring \- per-process shared keyring
.SH DESCRIPTION
diff --git a/man7/pthreads.7 b/man7/pthreads.7
index bdb3e883f..b2e76d09c 100644
--- a/man7/pthreads.7
+++ b/man7/pthreads.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH PTHREADS 7 2022-12-04 "Linux man-pages 6.02"
+.TH pthreads 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
pthreads \- POSIX threads
.SH DESCRIPTION
@@ -15,44 +15,44 @@ but each thread has its own stack (automatic variables).
.PP
POSIX.1 also requires that threads share a range of other attributes
(i.e., these attributes are process-wide rather than per-thread):
-.IP \(bu 3
+.IP \[bu] 3
process ID
-.IP \(bu
+.IP \[bu]
parent process ID
-.IP \(bu
+.IP \[bu]
process group ID and session ID
-.IP \(bu
+.IP \[bu]
controlling terminal
-.IP \(bu
+.IP \[bu]
user and group IDs
-.IP \(bu
+.IP \[bu]
open file descriptors
-.IP \(bu
+.IP \[bu]
record locks (see
.BR fcntl (2))
-.IP \(bu
+.IP \[bu]
signal dispositions
-.IP \(bu
+.IP \[bu]
file mode creation mask
.RB ( umask (2))
-.IP \(bu
+.IP \[bu]
current directory
.RB ( chdir (2))
and
root directory
.RB ( chroot (2))
-.IP \(bu
+.IP \[bu]
interval timers
.RB ( setitimer (2))
and POSIX timers
.RB ( timer_create (2))
-.IP \(bu
+.IP \[bu]
nice value
.RB ( setpriority (2))
-.IP \(bu
+.IP \[bu]
resource limits
.RB ( setrlimit (2))
-.IP \(bu
+.IP \[bu]
measurements of the consumption of CPU time
.RB ( times (2))
and resources
@@ -60,29 +60,29 @@ and resources
.PP
As well as the stack, POSIX.1 specifies that various other
attributes are distinct for each thread, including:
-.IP \(bu 3
+.IP \[bu] 3
thread ID (the
.I pthread_t
data type)
-.IP \(bu
+.IP \[bu]
signal mask
.RB ( pthread_sigmask (3))
-.IP \(bu
+.IP \[bu]
the
.I errno
variable
-.IP \(bu
+.IP \[bu]
alternate signal stack
.RB ( sigaltstack (2))
-.IP \(bu
+.IP \[bu]
real-time scheduling policy and priority
.RB ( sched (7))
.PP
The following Linux-specific features are also per-thread:
-.IP \(bu 3
+.IP \[bu] 3
capabilities (see
.BR capabilities (7))
-.IP \(bu
+.IP \[bu]
CPU affinity
.RB ( sched_setaffinity (2))
.SS Pthreads function return values
@@ -681,14 +681,14 @@ thread joining, and so on) are implemented using the Linux
system call.
.SS LinuxThreads
The notable features of this implementation are the following:
-.IP \(bu 3
+.IP \[bu] 3
In addition to the main (initial) thread,
and the threads that the program creates using
.BR pthread_create (3),
the implementation creates a "manager" thread.
This thread handles thread creation and termination.
(Problems can result if this thread is inadvertently killed.)
-.IP \(bu
+.IP \[bu]
Signals are used internally by the implementation.
On Linux 2.2 and later, the first three real-time signals are used
(see also
@@ -700,7 +700,7 @@ and
are used.
Applications must avoid the use of whichever set of signals is
employed by the implementation.
-.IP \(bu
+.IP \[bu]
Threads do not share process IDs.
(In effect, LinuxThreads threads are implemented as processes which share
more information than usual, but which do not share a common process ID.)
@@ -710,11 +710,11 @@ are visible as separate processes using
.PP
The LinuxThreads implementation deviates from the POSIX.1
specification in a number of ways, including the following:
-.IP \(bu 3
+.IP \[bu] 3
Calls to
.BR getpid (2)
return a different value in each thread.
-.IP \(bu
+.IP \[bu]
Calls to
.BR getppid (2)
in threads other than the main thread return the process ID of the
@@ -723,7 +723,7 @@ manager thread; instead
in these threads should return the same value as
.BR getppid (2)
in the main thread.
-.IP \(bu
+.IP \[bu]
When one thread creates a new child process using
.BR fork (2),
any thread should be able to
@@ -733,39 +733,39 @@ However, the implementation allows only the thread that
created the child to
.BR wait (2)
on it.
-.IP \(bu
+.IP \[bu]
When a thread calls
.BR execve (2),
all other threads are terminated (as required by POSIX.1).
However, the resulting process has the same PID as the thread that called
.BR execve (2):
it should have the same PID as the main thread.
-.IP \(bu
+.IP \[bu]
Threads do not share user and group IDs.
This can cause complications with set-user-ID programs and
can cause failures in Pthreads functions if an application
changes its credentials using
.BR seteuid (2)
or similar.
-.IP \(bu
+.IP \[bu]
Threads do not share a common session ID and process group ID.
-.IP \(bu
+.IP \[bu]
Threads do not share record locks created using
.BR fcntl (2).
-.IP \(bu
+.IP \[bu]
The information returned by
.BR times (2)
and
.BR getrusage (2)
is per-thread rather than process-wide.
-.IP \(bu
+.IP \[bu]
Threads do not share semaphore undo values (see
.BR semop (2)).
-.IP \(bu
+.IP \[bu]
Threads do not share interval timers.
-.IP \(bu
+.IP \[bu]
Threads do not share a common nice value.
-.IP \(bu
+.IP \[bu]
POSIX.1 distinguishes the notions of signals that are directed
to the process as a whole and signals that are directed to individual
threads.
@@ -775,7 +775,7 @@ for example) should be handled by a single,
arbitrarily selected thread within the process.
LinuxThreads does not support the notion of process-directed signals:
signals may be sent only to specific threads.
-.IP \(bu
+.IP \[bu]
Threads have distinct alternate signal stack settings.
However, a new thread's alternate signal stack settings
are copied from the thread that created it, so that
@@ -797,7 +797,7 @@ See
for further details.
.PP
NPTL still has at least one nonconformance with POSIX.1:
-.IP \(bu 3
+.IP \[bu] 3
Threads do not share a common nice value.
.\" FIXME . bug report filed for NPTL nice nonconformance
.\" http://bugzilla.kernel.org/show_bug.cgi?id=6258
@@ -806,26 +806,26 @@ Threads do not share a common nice value.
.\" Monitor this to see if it makes it into mainline.
.PP
Some NPTL nonconformances occur only with older kernels:
-.IP \(bu 3
+.IP \[bu] 3
The information returned by
.BR times (2)
and
.BR getrusage (2)
is per-thread rather than process-wide (fixed in Linux 2.6.9).
-.IP \(bu
+.IP \[bu]
Threads do not share resource limits (fixed in Linux 2.6.10).
-.IP \(bu
+.IP \[bu]
Threads do not share interval timers (fixed in Linux 2.6.12).
-.IP \(bu
+.IP \[bu]
Only the main thread is permitted to start a new session using
.BR setsid (2)
(fixed in Linux 2.6.16).
-.IP \(bu
+.IP \[bu]
Only the main thread is permitted to make the process into a
process group leader using
.BR setpgid (2)
(fixed in Linux 2.6.16).
-.IP \(bu
+.IP \[bu]
Threads have distinct alternate signal stack settings.
However, a new thread's alternate signal stack settings
are copied from the thread that created it, so that
@@ -833,7 +833,7 @@ the threads initially share an alternate signal stack
(fixed in Linux 2.6.16).
.PP
Note the following further points about the NPTL implementation:
-.IP \(bu 3
+.IP \[bu] 3
If the stack size soft resource limit (see the description of
.B RLIMIT_STACK
in
@@ -865,8 +865,8 @@ be sufficient to determine the default threading implementation:
.PP
.in +4n
.EX
-bash$ $( ldd /bin/ls | grep libc.so | awk \(aq{print $3}\(aq ) | \e
- egrep \-i \(aqthreads|nptl\(aq
+bash$ $( ldd /bin/ls | grep libc.so | awk \[aq]{print $3}\[aq] ) | \e
+ egrep \-i \[aq]threads|nptl\[aq]
Native POSIX Threads Library by Ulrich Drepper et al
.EE
.in
@@ -889,7 +889,7 @@ For example:
.in +4n
.EX
bash$ $( LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls | grep libc.so | \e
- awk \(aq{print $3}\(aq ) | egrep \-i \(aqthreads|nptl\(aq
+ awk \[aq]{print $3}\[aq] ) | egrep \-i \[aq]threads|nptl\[aq]
linuxthreads\-0.10 by Xavier Leroy
.EE
.in
diff --git a/man7/pty.7 b/man7/pty.7
index edbdb2a7a..73baec2b4 100644
--- a/man7/pty.7
+++ b/man7/pty.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH pty 7 2022-12-04 "Linux man-pages 6.02"
+.TH pty 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
pty \- pseudoterminal interfaces
.SH DESCRIPTION
diff --git a/man7/queue.7 b/man7/queue.7
index adee72801..3f84b59a1 100644
--- a/man7/queue.7
+++ b/man7/queue.7
@@ -5,7 +5,7 @@
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
.\"
-.TH queue 7 2022-10-30 "Linux man-pages 6.02"
+.TH queue 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
queue \- implementations of linked lists and queues
.SH DESCRIPTION
@@ -30,13 +30,13 @@ CIRCLEQ
doubly linked circular queues
.PP
All structures support the following functionality:
-.IP \(bu 3
+.IP \[bu] 3
Insertion of a new entry at the head of the list.
-.IP \(bu
+.IP \[bu]
Insertion of a new entry after any element in the list.
-.IP \(bu
+.IP \[bu]
O(1) removal of an entry from the head of the list.
-.IP \(bu
+.IP \[bu]
Forward traversal through the list.
.\".IP *
.\" Swapping the contents of two lists.
@@ -51,21 +51,21 @@ Singly linked lists are ideal for applications with
large datasets and few or no removals,
or for implementing a LIFO queue.
Singly linked lists add the following functionality:
-.IP \(bu 3
+.IP \[bu] 3
O(n) removal of any entry in the list.
.SS Singly linked tail queues (STAILQ)
Singly linked tail queues add the following functionality:
-.IP \(bu 3
+.IP \[bu] 3
Entries can be added at the end of a list.
-.IP \(bu
+.IP \[bu]
O(n) removal of any entry in the list.
-.IP \(bu
+.IP \[bu]
They may be concatenated.
.PP
However:
-.IP \(bu 3
+.IP \[bu] 3
All list insertions must specify the head of the list.
-.IP \(bu
+.IP \[bu]
Each head entry requires two pointers rather than one.
.PP
Singly linked tail queues are ideal for applications with
@@ -74,45 +74,45 @@ or for implementing a FIFO queue.
.SS Doubly linked data structures
All doubly linked types of data structures (lists and tail queues)
additionally allow:
-.IP \(bu 3
+.IP \[bu] 3
Insertion of a new entry before any element in the list.
-.IP \(bu
+.IP \[bu]
O(1) removal of any entry in the list.
.PP
However:
-.IP \(bu 3
+.IP \[bu] 3
Each element requires two pointers rather than one.
.SS Doubly linked lists (LIST)
Linked lists are the simplest of the doubly linked data structures.
They add the following functionality over the above:
-.IP \(bu 3
+.IP \[bu] 3
They may be traversed backwards.
.PP
However:
-.IP \(bu 3
+.IP \[bu] 3
To traverse backwards, an entry to begin the traversal and the list in
which it is contained must be specified.
.SS Doubly linked tail queues (TAILQ)
Tail queues add the following functionality:
-.IP \(bu 3
+.IP \[bu] 3
Entries can be added at the end of a list.
-.IP \(bu
+.IP \[bu]
They may be traversed backwards, from tail to head.
-.IP \(bu
+.IP \[bu]
They may be concatenated.
.PP
However:
-.IP \(bu 3
+.IP \[bu] 3
All list insertions and removals must specify the head of the list.
-.IP \(bu
+.IP \[bu]
Each head entry requires two pointers rather than one.
.SS Doubly linked circular queues (CIRCLEQ)
Circular queues add the following functionality over the above:
-.IP \(bu 3
+.IP \[bu] 3
The first and last entries are connected.
.PP
However:
-.IP \(bu 3
+.IP \[bu] 3
The termination condition for traversal is more complex.
.SH STANDARDS
Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008.
@@ -125,7 +125,7 @@ They are identical, but for historical reasons
they were named differently on different BSDs.
STAILQ originated on FreeBSD, and SIMPLEQ originated on NetBSD.
For compatibility reasons, some systems provide both sets of macros.
-Glibc provides both STAILQ and SIMPLEQ,
+glibc provides both STAILQ and SIMPLEQ,
which are identical except for a missing SIMPLEQ equivalent to
.BR STAILQ_CONCAT ().
.SH SEE ALSO
diff --git a/man7/random.7 b/man7/random.7
index 1180e6e0a..2e0698b85 100644
--- a/man7/random.7
+++ b/man7/random.7
@@ -9,7 +9,7 @@
.\" The following web page is quite informative:
.\" http://www.2uo.de/myths-about-urandom/
.\"
-.TH random 7 2022-12-15 "Linux man-pages 6.02"
+.TH random 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
random \- overview of interfaces for obtaining randomness
.SH DESCRIPTION
@@ -19,7 +19,7 @@ a cryptographically secure pseudorandom number generator (CSPRNG).
It is designed for security, rather than speed.
.PP
The following interfaces provide access to output from the kernel CSPRNG:
-.IP \(bu 3
+.IP \[bu] 3
The
.I /dev/urandom
and
@@ -28,7 +28,7 @@ devices, both described in
.BR random (4).
These devices have been present on Linux since early times,
and are also available on many other systems.
-.IP \(bu
+.IP \[bu]
The Linux-specific
.BR getrandom (2)
system call, available since Linux 3.17.
@@ -191,7 +191,7 @@ The amount of seed material required to generate a cryptographic key
equals the effective key size of the key.
For example, a 3072-bit RSA
or Diffie-Hellman private key has an effective key size of 128 bits
-(it requires about 2^128 operations to break) so a key generator
+(it requires about 2\[ha]128 operations to break) so a key generator
needs only 128 bits (16 bytes) of seed material from
.IR /dev/random .
.PP
diff --git a/man7/raw.7 b/man7/raw.7
index 9f3c3bf9c..f010808e1 100644
--- a/man7/raw.7
+++ b/man7/raw.7
@@ -10,7 +10,7 @@
.\"
.\" $Id: raw.7,v 1.6 1999/06/05 10:32:08 freitag Exp $
.\"
-.TH raw 7 2022-12-15 "Linux man-pages 6.02"
+.TH raw 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
raw \- Linux IPv4 raw sockets
.SH SYNOPSIS
diff --git a/man7/regex.7 b/man7/regex.7
index 028ff314a..124e2fbc4 100644
--- a/man7/regex.7
+++ b/man7/regex.7
@@ -35,7 +35,7 @@
.\"
.ie t .ds dg \(dg
.el .ds dg (!)
-.TH regex 7 2022-12-15 "Linux man-pages 6.02"
+.TH regex 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
regex \- POSIX.2 regular expressions
.SH DESCRIPTION
@@ -54,7 +54,7 @@ POSIX.2 leaves some aspects of RE syntax and semantics open;
may not be fully portable to other POSIX.2 implementations.
.PP
A (modern) RE is one\*(dg or more nonempty\*(dg \fIbranches\fR,
-separated by \(aq|\(aq.
+separated by \[aq]|\[aq].
It matches anything that matches one of the branches.
.PP
A branch is one\*(dg or more \fIpieces\fR, concatenated.
@@ -62,18 +62,18 @@ It matches a match for the first, followed by a match for the second,
and so on.
.PP
A piece is an \fIatom\fR possibly followed
-by a single\*(dg \(aq*\(aq, \(aq+\(aq, \(aq?\(aq, or \fIbound\fR.
-An atom followed by \(aq*\(aq
+by a single\*(dg \[aq]*\[aq], \[aq]+\[aq], \[aq]?\[aq], or \fIbound\fR.
+An atom followed by \[aq]*\[aq]
matches a sequence of 0 or more matches of the atom.
-An atom followed by \(aq+\(aq
+An atom followed by \[aq]+\[aq]
matches a sequence of 1 or more matches of the atom.
-An atom followed by \(aq?\(aq
+An atom followed by \[aq]?\[aq]
matches a sequence of 0 or 1 matches of the atom.
.PP
-A \fIbound\fR is \(aq{\(aq followed by an unsigned decimal integer,
-possibly followed by \(aq,\(aq
+A \fIbound\fR is \[aq]{\[aq] followed by an unsigned decimal integer,
+possibly followed by \[aq],\[aq]
possibly followed by another unsigned decimal integer,
-always followed by \(aq}\(aq.
+always followed by \[aq]}\[aq].
The integers must lie between 0 and
.B RE_DUP_MAX
(255\*(dg) inclusive,
@@ -91,26 +91,26 @@ a sequence of \fIi\fR through \fIj\fR (inclusive) matches of the atom.
An atom is a regular expression enclosed in "\fI()\fP"
(matching a match for the regular expression),
an empty set of "\fI()\fP" (matching the null string)\*(dg,
-a \fIbracket expression\fR (see below), \(aq.\(aq
-(matching any single character), \(aq\(ha\(aq (matching the null string at the
-beginning of a line), \(aq$\(aq (matching the null string at the
-end of a line), a \(aq\e\(aq followed by one of the characters
-"\fI\(ha.[$()|*+?{\e\fP"
+a \fIbracket expression\fR (see below), \[aq].\[aq]
+(matching any single character), \[aq]\[ha]\[aq] (matching the null string at the
+beginning of a line), \[aq]$\[aq] (matching the null string at the
+end of a line), a \[aq]\e\[aq] followed by one of the characters
+"\fI\[ha].[$()|*+?{\e\fP"
(matching that character taken as an ordinary character),
-a \(aq\e\(aq followed by any other character\*(dg
+a \[aq]\e\[aq] followed by any other character\*(dg
(matching that character taken as an ordinary character,
-as if the \(aq\e\(aq had not been present\*(dg),
+as if the \[aq]\e\[aq] had not been present\*(dg),
or a single character with no other significance (matching that character).
-A \(aq{\(aq followed by a character other than a digit is an ordinary
+A \[aq]{\[aq] followed by a character other than a digit is an ordinary
character, not the beginning of a bound\*(dg.
-It is illegal to end an RE with \(aq\e\(aq.
+It is illegal to end an RE with \[aq]\e\[aq].
.PP
A \fIbracket expression\fR is a list of characters enclosed in "\fI[]\fP".
It normally matches any single character from the list (but see below).
-If the list begins with \(aq\(ha\(aq,
+If the list begins with \[aq]\[ha]\[aq],
it matches any single character
(but see below) \fInot\fR from the rest of the list.
-If two characters in the list are separated by \(aq\-\(aq, this is shorthand
+If two characters in the list are separated by \[aq]\-\[aq], this is shorthand
for the full \fIrange\fR of characters between those two (inclusive) in the
collating sequence,
for example, "\fI[0\-9]\fP" in ASCII matches any decimal digit.
@@ -119,15 +119,15 @@ endpoint, for example, "\fIa\-c\-e\fP".
Ranges are very collating-sequence-dependent,
and portable programs should avoid relying on them.
.PP
-To include a literal \(aq]\(aq in the list, make it the first character
-(following a possible \(aq\(ha\(aq).
-To include a literal \(aq\-\(aq, make it the first or last character,
+To include a literal \[aq]]\[aq] in the list, make it the first character
+(following a possible \[aq]\[ha]\[aq]).
+To include a literal \[aq]\-\[aq], make it the first or last character,
or the second endpoint of a range.
-To use a literal \(aq\-\(aq as the first endpoint of a range,
+To use a literal \[aq]\-\[aq] as the first endpoint of a range,
enclose it in "\fI[.\fP" and "\fI.]\fP"
to make it a collating element (see below).
-With the exception of these and some combinations using \(aq[\(aq (see next
-paragraphs), all other special characters, including \(aq\e\(aq, lose their
+With the exception of these and some combinations using \[aq][\[aq] (see next
+paragraphs), all other special characters, including \[aq]\e\[aq], lose their
special significance within a bracket expression.
.PP
Within a bracket expression, a collating element (a character,
@@ -224,10 +224,10 @@ alphabet.
When an alphabetic that exists in multiple cases appears as an
ordinary character outside a bracket expression, it is effectively
transformed into a bracket expression containing both cases,
-for example, \(aqx\(aq becomes "\fI[xX]\fP".
+for example, \[aq]x\[aq] becomes "\fI[xX]\fP".
When it appears inside a bracket expression, all case counterparts
of it are added to the bracket expression, so that, for example, "\fI[x]\fP"
-becomes "\fI[xX]\fP" and "\fI[\(hax]\fP" becomes "\fI[\(haxX]\fP".
+becomes "\fI[xX]\fP" and "\fI[\[ha]x]\fP" becomes "\fI[\[ha]xX]\fP".
.PP
No particular limit is imposed on the length of REs\*(dg.
Programs intended to be portable should not employ REs longer
@@ -236,23 +236,23 @@ as an implementation can refuse to accept such REs and remain
POSIX-compliant.
.PP
Obsolete ("basic") regular expressions differ in several respects.
-\(aq|\(aq, \(aq+\(aq, and \(aq?\(aq are
+\[aq]|\[aq], \[aq]+\[aq], and \[aq]?\[aq] are
ordinary characters and there is no equivalent
for their functionality.
The delimiters for bounds are "\fI\e{\fP" and "\fI\e}\fP",
-with \(aq{\(aq and \(aq}\(aq by themselves ordinary characters.
+with \[aq]{\[aq] and \[aq]}\[aq] by themselves ordinary characters.
The parentheses for nested subexpressions are "\fI\e(\fP" and "\fI\e)\fP",
-with \(aq(\(aq and \(aq)\(aq by themselves ordinary characters.
-\(aq\(ha\(aq is an ordinary character except at the beginning of the
+with \[aq](\[aq] and \[aq])\[aq] by themselves ordinary characters.
+\[aq]\[ha]\[aq] is an ordinary character except at the beginning of the
RE or\*(dg the beginning of a parenthesized subexpression,
-\(aq$\(aq is an ordinary character except at the end of the
+\[aq]$\[aq] is an ordinary character except at the end of the
RE or\*(dg the end of a parenthesized subexpression,
-and \(aq*\(aq is an ordinary character if it appears at the beginning of the
+and \[aq]*\[aq] is an ordinary character if it appears at the beginning of the
RE or the beginning of a parenthesized subexpression
-(after a possible leading \(aq\(ha\(aq).
+(after a possible leading \[aq]\[ha]\[aq]).
.PP
Finally, there is one new type of atom, a \fIback reference\fR:
-\(aq\e\(aq followed by a nonzero decimal digit \fId\fR
+\[aq]\e\[aq] followed by a nonzero decimal digit \fId\fR
matches the same sequence of characters
matched by the \fId\fRth parenthesized subexpression
(numbering subexpressions by the positions of their opening parentheses,
@@ -261,8 +261,8 @@ so that, for example, "\fI\e([bc]\e)\e1\fP" matches "bb" or "cc" but not "bc".
.SH BUGS
Having two kinds of REs is a botch.
.PP
-The current POSIX.2 spec says that \(aq)\(aq is an ordinary character in
-the absence of an unmatched \(aq(\(aq;
+The current POSIX.2 spec says that \[aq])\[aq] is an ordinary character in
+the absence of an unmatched \[aq](\[aq];
this was an unintentional result of a wording error,
and change is likely.
Avoid relying on it.
diff --git a/man7/rtld-audit.7 b/man7/rtld-audit.7
index da70b51d7..f0bf1c256 100644
--- a/man7/rtld-audit.7
+++ b/man7/rtld-audit.7
@@ -5,7 +5,7 @@
.\"
.\" 2009-01-12, mtk, Created
.\"
-.TH RTLD-AUDIT 7 2022-10-29 "Linux man-pages 6.02"
+.TH RTLD-AUDIT 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
rtld-audit \- auditing API for the dynamic linker
.SH SYNOPSIS
@@ -464,11 +464,11 @@ in the chapter
.SH NOTES
Note the following differences from the Solaris dynamic linker
auditing API:
-.IP \(bu 3
+.IP \[bu] 3
The Solaris
.BR la_objfilter ()
interface is not supported by the GNU implementation.
-.IP \(bu
+.IP \[bu]
The Solaris
.BR la_symbind32 ()
and
@@ -476,7 +476,7 @@ and
functions do not provide a
.I symname
argument.
-.IP \(bu
+.IP \[bu]
The Solaris
.BR la_pltexit ()
function does not provide
diff --git a/man7/rtnetlink.7 b/man7/rtnetlink.7
index ed347ee98..5d58948b1 100644
--- a/man7/rtnetlink.7
+++ b/man7/rtnetlink.7
@@ -12,7 +12,7 @@
.\" help from Matthew Wilcox.
.\" $Id: rtnetlink.7,v 1.8 2000/01/22 01:55:04 freitag Exp $
.\"
-.TH rtnetlink 7 2022-12-15 "Linux man-pages 6.02"
+.TH rtnetlink 7 2022-12-15 "Linux man-pages 6.03"
.SH NAME
rtnetlink \- Linux routing socket
.SH SYNOPSIS
diff --git a/man7/sched.7 b/man7/sched.7
index 6137bea5e..f5249e9be 100644
--- a/man7/sched.7
+++ b/man7/sched.7
@@ -10,7 +10,7 @@
.\"
.\" Worth looking at: http://rt.wiki.kernel.org/index.php
.\"
-.TH sched 7 2022-12-04 "Linux man-pages 6.02"
+.TH sched 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
sched \- overview of CPU scheduling
.SH DESCRIPTION
@@ -137,15 +137,15 @@ it will always immediately preempt any currently running
algorithm without time slicing.
For threads scheduled under the
\fBSCHED_FIFO\fP policy, the following rules apply:
-.IP \(bu 3
+.IP \[bu] 3
A running \fBSCHED_FIFO\fP thread that has been preempted by another thread of
higher priority will stay at the head of the list for its priority and
will resume execution as soon as all threads of higher priority are
blocked again.
-.IP \(bu
+.IP \[bu]
When a blocked \fBSCHED_FIFO\fP thread becomes runnable, it
will be inserted at the end of the list for its priority.
-.IP \(bu
+.IP \[bu]
If a call to
.BR sched_setscheduler (2),
.BR sched_setparam (2),
@@ -180,7 +180,7 @@ should result in the thread being placed at the end of
the list for its priority.
.\" In Linux 2.2.x and Linux 2.4.x, the thread is placed at the front of the queue
.\" In Linux 2.0.x, the Right Thing happened: the thread went to the back -- MTK
-.IP \(bu
+.IP \[bu]
A thread calling
.BR sched_yield (2)
will be put at the end of the list.
@@ -318,7 +318,7 @@ sched_runtime <= sched_deadline <= sched_period
In addition, under the current implementation,
all of the parameter values must be at least 1024
(i.e., just over one microsecond,
-which is the resolution of the implementation), and less than 2^63.
+which is the resolution of the implementation), and less than 2\[ha]63.
If any of these checks fails,
.BR sched_setattr (2)
fails with the error
@@ -492,7 +492,7 @@ When this flag is set, children created by
.BR fork (2)
do not inherit privileged scheduling policies.
The reset-on-fork flag can be set by either:
-.IP \(bu 3
+.IP \[bu] 3
ORing the
.B SCHED_RESET_ON_FORK
flag into the
@@ -501,7 +501,7 @@ argument when calling
.BR sched_setscheduler (2)
(since Linux 2.6.32);
or
-.IP \(bu
+.IP \[bu]
specifying the
.B SCHED_FLAG_RESET_ON_FORK
flag in
@@ -524,7 +524,7 @@ by creating multiple child processes.
.PP
More precisely, if the reset-on-fork flag is set,
the following rules apply for subsequently created children:
-.IP \(bu 3
+.IP \[bu] 3
If the calling thread has a scheduling policy of
.B SCHED_FIFO
or
@@ -532,7 +532,7 @@ or
the policy is reset to
.B SCHED_OTHER
in child processes.
-.IP \(bu
+.IP \[bu]
If the calling process has a negative nice value,
the nice value is reset to zero in child processes.
.PP
@@ -571,7 +571,7 @@ and
.B SCHED_FIFO
policies.
The rules for changing scheduling policy and priority are as follows:
-.IP \(bu 3
+.IP \[bu] 3
If an unprivileged thread has a nonzero
.B RLIMIT_RTPRIO
soft limit, then it can change its scheduling policy and priority,
@@ -579,17 +579,17 @@ subject to the restriction that the priority cannot be set to a
value higher than the maximum of its current priority and its
.B RLIMIT_RTPRIO
soft limit.
-.IP \(bu
+.IP \[bu]
If the
.B RLIMIT_RTPRIO
soft limit is 0, then the only permitted changes are to lower the priority,
or to switch to a non-real-time policy.
-.IP \(bu
+.IP \[bu]
Subject to the same rules,
another unprivileged thread can also make these changes,
as long as the effective user ID of the thread making the change
matches the real or effective user ID of the target thread.
-.IP \(bu
+.IP \[bu]
Special rules apply for the
.B SCHED_IDLE
policy.
@@ -832,11 +832,11 @@ Task groups have a hierarchical relationship,
rooted under the initial task group on the system,
known as the "root task group".
Task groups are formed in the following circumstances:
-.IP \(bu 3
+.IP \[bu] 3
All of the threads in a CPU cgroup form a task group.
The parent of this task group is the task group of the
corresponding parent cgroup.
-.IP \(bu
+.IP \[bu]
If autogrouping is enabled,
then all of the threads that are (implicitly) placed in an autogroup
(i.e., the same session, as created by
@@ -844,14 +844,14 @@ then all of the threads that are (implicitly) placed in an autogroup
form a task group.
Each new autogroup is thus a separate task group.
The root task group is the parent of all such autogroups.
-.IP \(bu
+.IP \[bu]
If autogrouping is enabled, then the root task group consists of
all processes in the root CPU cgroup that were not
otherwise implicitly placed into a new autogroup.
-.IP \(bu
+.IP \[bu]
If autogrouping is disabled, then the root task group consists of
all processes in the root CPU cgroup.
-.IP \(bu
+.IP \[bu]
If group scheduling was disabled (i.e., the kernel was configured without
.BR CONFIG_FAIR_GROUP_SCHED ),
then all of the processes on the system are notionally placed
@@ -985,8 +985,8 @@ was not possible up to Linux 2.6.17.
by Bill O.\& Gallmeister, O'Reilly & Associates, Inc., ISBN 1-56592-074-0.
.PP
The Linux kernel source files
-.IR Documentation/scheduler/sched\-deadline.txt ,
-.IR Documentation/scheduler/sched\-rt\-group.txt ,
-.IR Documentation/scheduler/sched\-design\-CFS.txt ,
+.IR \%Documentation/\:scheduler/\:sched\-deadline\:.txt ,
+.IR \%Documentation/\:scheduler/\:sched\-rt\-group\:.txt ,
+.IR \%Documentation/\:scheduler/\:sched\-design\-CFS\:.txt ,
and
-.I Documentation/scheduler/sched\-nice\-design.txt
+.I \%Documentation/\:scheduler/\:sched\-nice\-design\:.txt
diff --git a/man7/sem_overview.7 b/man7/sem_overview.7
index e76f7c73c..0700b3d21 100644
--- a/man7/sem_overview.7
+++ b/man7/sem_overview.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_overview 7 2022-12-04 "Linux man-pages 6.02"
+.TH sem_overview 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
sem_overview \- overview of POSIX semaphores
.SH DESCRIPTION
diff --git a/man7/session-keyring.7 b/man7/session-keyring.7
index fcb7aad47..2f1d932c6 100644
--- a/man7/session-keyring.7
+++ b/man7/session-keyring.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH session-keyring 7 2022-10-30 "Linux man-pages 6.02"
+.TH session-keyring 7 2023-01-22 "Linux man-pages 6.03"
.SH NAME
session-keyring \- session shared process keyring
.SH DESCRIPTION
@@ -102,6 +102,7 @@ keyctl new_session
.BR keyctl_join_session_keyring (3),
.BR keyctl_session_to_parent (3),
.BR keyrings (7),
+.BR PAM (7),
.BR persistent\-keyring (7),
.BR process\-keyring (7),
.BR thread\-keyring (7),
diff --git a/man7/shm_overview.7 b/man7/shm_overview.7
index 41393ed20..8432100cb 100644
--- a/man7/shm_overview.7
+++ b/man7/shm_overview.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH shm_overview 7 2022-12-04 "Linux man-pages 6.02"
+.TH shm_overview 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
shm_overview \- overview of POSIX shared memory
.SH DESCRIPTION
diff --git a/man7/sigevent.7 b/man7/sigevent.7
index 938af2082..a5232a52e 100644
--- a/man7/sigevent.7
+++ b/man7/sigevent.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sigevent 7 2022-10-30 "Linux man-pages 6.02"
+.TH sigevent 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sigevent \- structure for notification from asynchronous routines
.SH SYNOPSIS
diff --git a/man7/signal-safety.7 b/man7/signal-safety.7
index dbef05fa8..8e030b52e 100644
--- a/man7/signal-safety.7
+++ b/man7/signal-safety.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH signal-safety 7 2022-12-15 "Linux man-pages 6.02"
+.TH signal-safety 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
signal-safety \- async-signal-safe functions
.SH DESCRIPTION
@@ -274,14 +274,14 @@ T}
.TE
.PP
Notes:
-.IP \(bu 3
+.IP \[bu] 3
POSIX.1-2001 and POSIX.1-2001 TC2 required the functions
.BR fpathconf (3),
.BR pathconf (3),
and
.BR sysconf (3)
to be async-signal-safe, but this requirement was removed in POSIX.1-2008.
-.IP \(bu
+.IP \[bu]
If a signal handler interrupts the execution of an unsafe function,
and the handler terminates via a call to
.BR longjmp (3)
@@ -289,7 +289,7 @@ or
.BR siglongjmp (3)
and the program subsequently calls an unsafe function,
then the behavior of the program is undefined.
-.IP \(bu
+.IP \[bu]
POSIX.1-2001 TC1 clarified
that if an application calls
.BR fork (2)
@@ -302,7 +302,7 @@ is likely to remove
.BR fork (2)
from the list of async-signal-safe functions.
.\"
-.IP \(bu
+.IP \[bu]
Asynchronous signal handlers that call functions which are cancelation
points and nest over regions of deferred cancelation may trigger
cancelation whose behavior is as if asynchronous cancelation had
@@ -318,7 +318,7 @@ on entry and restores its value before returning.
.SS Deviations in the GNU C library
The following known deviations from the standard occur in
the GNU C library:
-.IP \(bu 3
+.IP \[bu] 3
Before glibc 2.24,
.BR execl (3)
and
@@ -328,7 +328,7 @@ employed
internally and were consequently not async-signal-safe.
.\" https://sourceware.org/bugzilla/show_bug.cgi?id=19534
This was fixed in glibc 2.24.
-.IP \(bu
+.IP \[bu]
.\" FIXME . https://sourceware.org/bugzilla/show_bug.cgi?id=13172
The glibc implementation of
.BR aio_suspend (3)
diff --git a/man7/signal.7 b/man7/signal.7
index ebad92a3c..9b56acfcf 100644
--- a/man7/signal.7
+++ b/man7/signal.7
@@ -23,7 +23,7 @@
.\" Added section on stop/cont signals interrupting syscalls.
.\" 2008-10-05, mtk: various additions
.\"
-.TH signal 7 2022-12-15 "Linux man-pages 6.02"
+.TH signal 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
signal \- overview of signals
.SH DESCRIPTION
@@ -136,7 +136,7 @@ to block execution until the signal is delivered,
at which point the kernel returns information about the
signal to the caller.
There are two general ways to do this:
-.IP \(bu 3
+.IP \[bu] 3
.BR sigwaitinfo (2),
.BR sigtimedwait (2),
and
@@ -144,7 +144,7 @@ and
suspend execution until one of the signals in a specified
set is delivered.
Each of these calls returns information about the delivered signal.
-.IP \(bu
+.IP \[bu]
.BR signalfd (2)
returns a file descriptor that can be used to read information
about signals that are delivered to the caller.
@@ -264,16 +264,16 @@ Various pieces of signal-related context are saved
into a special frame that is created on the stack.
The saved information includes:
.RS
-.IP \(bu 3
+.IP \[bu] 3
the program counter register
(i.e., the address of the next instruction in the main program that
should be executed when the signal handler returns);
-.IP \(bu
+.IP \[bu]
architecture-specific register state required for resuming the
interrupted program;
-.IP \(bu
+.IP \[bu]
the thread's current signal mask;
-.IP \(bu
+.IP \[bu]
the thread's alternate signal stack settings.
.RE
.IP
@@ -512,7 +512,7 @@ SIGUNUSED 31 \- \- 31
.TE
.PP
Note the following:
-.IP \(bu 3
+.IP \[bu] 3
Where defined,
.B SIGUNUSED
is synonymous with
@@ -520,7 +520,7 @@ is synonymous with
Since glibc 2.26,
.B SIGUNUSED
is no longer defined on any architecture.
-.IP \(bu
+.IP \[bu]
Signal 29 is
.BR SIGINFO / SIGPWR
(synonyms for the same value) on Alpha but
@@ -569,11 +569,11 @@ The default action for an unhandled real-time signal is to terminate the
receiving process.
.PP
Real-time signals are distinguished by the following:
-.IP \(bu 3
+.IP \[bu] 3
Multiple instances of real-time signals can be queued.
By contrast, if multiple instances of a standard signal are delivered
while that signal is currently blocked, then only one instance is queued.
-.IP \(bu
+.IP \[bu]
If the signal is sent using
.BR sigqueue (3),
an accompanying value (either an integer or a pointer) can be sent
@@ -593,7 +593,7 @@ and
.I si_uid
fields of this structure can be used to obtain the PID
and real user ID of the process sending the signal.
-.IP \(bu
+.IP \[bu]
Real-time signals are delivered in a guaranteed order.
Multiple real-time signals of the same type are delivered in the order
they were sent.
@@ -653,9 +653,9 @@ Linux 2.0 and earlier Linux 2.2 and later
.SS Interruption of system calls and library functions by signal handlers
If a signal handler is invoked while a system call or library
function call is blocked, then either:
-.IP \(bu 3
+.IP \[bu] 3
the call is automatically restarted after the signal handler returns; or
-.IP \(bu
+.IP \[bu]
the call fails with the error
.BR EINTR .
.PP
@@ -675,7 +675,7 @@ flag was used; otherwise the call fails with the error
.BR EINTR :
.\" The following system calls use ERESTARTSYS,
.\" so that they are restartable
-.IP \(bu 3
+.IP \[bu] 3
.BR read (2),
.BR readv (2),
.BR write (2),
@@ -691,18 +691,18 @@ then the call will return a success status
(normally, the number of bytes transferred).
Note that a (local) disk is not a slow device according to this definition;
I/O operations on disk devices are not interrupted by signals.
-.IP \(bu
+.IP \[bu]
.BR open (2),
if it can block (e.g., when opening a FIFO; see
.BR fifo (7)).
-.IP \(bu
+.IP \[bu]
.BR wait (2),
.BR wait3 (2),
.BR wait4 (2),
.BR waitid (2),
and
.BR waitpid (2).
-.IP \(bu
+.IP \[bu]
Socket interfaces:
.\" If a timeout (setsockopt()) is in effect on the socket, then these
.\" system calls switch to using EINTR. Consequently, they and are not
@@ -720,7 +720,7 @@ and
.BR sendmsg (2),
.\" FIXME What about sendmmsg()?
unless a timeout has been set on the socket (see below).
-.IP \(bu
+.IP \[bu]
File locking interfaces:
.BR flock (2)
and
@@ -730,30 +730,30 @@ and
.B F_OFD_SETLKW
operations of
.BR fcntl (2)
-.IP \(bu
+.IP \[bu]
POSIX message queue interfaces:
.BR mq_receive (3),
.BR mq_timedreceive (3),
.BR mq_send (3),
and
.BR mq_timedsend (3).
-.IP \(bu
+.IP \[bu]
.BR futex (2)
.B FUTEX_WAIT
(since Linux 2.6.22;
.\" commit 72c1bbf308c75a136803d2d76d0e18258be14c7a
beforehand, always failed with
.BR EINTR ).
-.IP \(bu
+.IP \[bu]
.BR getrandom (2).
-.IP \(bu
+.IP \[bu]
.BR pthread_mutex_lock (3),
.BR pthread_cond_wait (3),
and related APIs.
-.IP \(bu
+.IP \[bu]
.BR futex (2)
.BR FUTEX_WAIT_BITSET .
-.IP \(bu
+.IP \[bu]
POSIX semaphore interfaces:
.BR sem_wait (3)
and
@@ -762,7 +762,7 @@ and
.\" as a consequence of the 2.6.22 changes in the futex() implementation
beforehand, always failed with
.BR EINTR ).
-.IP \(bu
+.IP \[bu]
.BR read (2)
from an
.BR inotify (7)
@@ -781,7 +781,7 @@ they always fail with the error
when interrupted by a signal handler:
.\" These are the system calls that give EINTR or ERESTARTNOHAND
.\" on interruption by a signal handler.
-.IP \(bu 3
+.IP \[bu] 3
"Input" socket interfaces, when a timeout
.RB ( SO_RCVTIMEO )
has been set on the socket using
@@ -795,7 +795,7 @@ has been set on the socket using
argument),
and
.BR recvmsg (2).
-.IP \(bu
+.IP \[bu]
"Output" socket interfaces, when a timeout
.RB ( SO_RCVTIMEO )
has been set on the socket using
@@ -806,14 +806,14 @@ has been set on the socket using
and
.BR sendmsg (2).
.\" FIXME What about sendmmsg()?
-.IP \(bu
+.IP \[bu]
Interfaces used to wait for signals:
.BR pause (2),
.BR sigsuspend (2),
.BR sigtimedwait (2),
and
.BR sigwaitinfo (2).
-.IP \(bu
+.IP \[bu]
File descriptor multiplexing interfaces:
.BR epoll_wait (2),
.BR epoll_pwait (2),
@@ -822,7 +822,7 @@ File descriptor multiplexing interfaces:
.BR select (2),
and
.BR pselect (2).
-.IP \(bu
+.IP \[bu]
System V IPC interfaces:
.\" On some other systems, SA_RESTART does restart these system calls
.BR msgrcv (2),
@@ -830,13 +830,13 @@ System V IPC interfaces:
.BR semop (2),
and
.BR semtimedop (2).
-.IP \(bu
+.IP \[bu]
Sleep interfaces:
.BR clock_nanosleep (2),
.BR nanosleep (2),
and
.BR usleep (3).
-.IP \(bu
+.IP \[bu]
.BR io_getevents (2).
.PP
The
@@ -863,7 +863,7 @@ This behavior is not sanctioned by POSIX.1, and doesn't occur
on other systems.
.PP
The Linux interfaces that display this behavior are:
-.IP \(bu 3
+.IP \[bu] 3
"Input" socket interfaces, when a timeout
.RB ( SO_RCVTIMEO )
has been set on the socket using
@@ -877,7 +877,7 @@ has been set on the socket using
argument),
and
.BR recvmsg (2).
-.IP \(bu
+.IP \[bu]
"Output" socket interfaces, when a timeout
.RB ( SO_RCVTIMEO )
has been set on the socket using
@@ -891,33 +891,33 @@ and
if a send timeout
.RB ( SO_SNDTIMEO )
has been set.
-.IP \(bu
+.IP \[bu]
.BR epoll_wait (2),
.BR epoll_pwait (2).
-.IP \(bu
+.IP \[bu]
.BR semop (2),
.BR semtimedop (2).
-.IP \(bu
+.IP \[bu]
.BR sigtimedwait (2),
.BR sigwaitinfo (2).
-.IP \(bu
+.IP \[bu]
Linux 3.7 and earlier:
.BR read (2)
from an
.BR inotify (7)
file descriptor
.\" commit 1ca39ab9d21ac93f94b9e3eb364ea9a5cf2aba06
-.IP \(bu
+.IP \[bu]
Linux 2.6.21 and earlier:
.BR futex (2)
.BR FUTEX_WAIT ,
.BR sem_timedwait (3),
.BR sem_wait (3).
-.IP \(bu
+.IP \[bu]
Linux 2.6.8 and earlier:
.BR msgrcv (2),
.BR msgsnd (2).
-.IP \(bu
+.IP \[bu]
Linux 2.4 and earlier:
.BR nanosleep (2).
.SH STANDARDS
diff --git a/man7/sock_diag.7 b/man7/sock_diag.7
index 60528db16..a279e787a 100644
--- a/man7/sock_diag.7
+++ b/man7/sock_diag.7
@@ -2,7 +2,7 @@
.\" Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
-.TH sock_diag 7 2022-10-30 "Linux man-pages 6.02"
+.TH sock_diag 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
sock_diag \- obtaining information about sockets
.SH SYNOPSIS
@@ -706,7 +706,7 @@ print_diag(const struct unix_diag_msg *diag, unsigned int len)
if (path_len > sizeof(path) \- 1)
path_len = sizeof(path) \- 1;
memcpy(path, RTA_DATA(attr), path_len);
- path[path_len] = \(aq\e0\(aq;
+ path[path_len] = \[aq]\e0\[aq];
}
break;
@@ -726,7 +726,7 @@ print_diag(const struct unix_diag_msg *diag, unsigned int len)
printf(", name=%s%s", *path ? "" : "@",
*path ? path : path + 1);
- putchar(\(aq\en\(aq);
+ putchar(\[aq]\en\[aq]);
return 0;
}
diff --git a/man7/socket.7 b/man7/socket.7
index 9b8579ffb..b5d70cf26 100644
--- a/man7/socket.7
+++ b/man7/socket.7
@@ -52,7 +52,7 @@
.\" commit ea02f9411d9faa3553ed09ce0ec9f00ceae9885e
.\" Author: Michal Sekletar <msekleta@redhat.com>
.\"
-.TH socket 7 2022-12-15 "Linux man-pages 6.02"
+.TH socket 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
socket \- Linux socket interface
.SH SYNOPSIS
@@ -83,7 +83,7 @@ for more information on families and types.
.SS Socket-layer functions
These functions are used by the user process to send or receive packets
and to do other socket operations.
-For more information see their respective manual pages.
+For more information, see their respective manual pages.
.PP
.BR socket (2)
creates a socket,
@@ -400,7 +400,7 @@ UDP support for this feature is available since Linux 4.5;
TCP support is available since Linux 4.6.
.TP
.B SO_BINDTODEVICE
-Bind this socket to a particular device like \(lqeth0\(rq,
+Bind this socket to a particular device like \[lq]eth0\[rq],
as specified in the passed interface name.
If the
name is an empty string or the option length is zero, the socket device
@@ -635,14 +635,14 @@ flag is set during receiving.
Enable or disable the receiving of the
.B SCM_CREDENTIALS
control message.
-For more information see
+For more information, see
.BR unix (7).
.TP
.B SO_PASSSEC
Enable or disable the receiving of the
.B SCM_SECURITY
control message.
-For more information see
+For more information, see
.BR unix (7).
.TP
.BR SO_PEEK_OFF " (since Linux 3.4)"
diff --git a/man7/spufs.7 b/man7/spufs.7
index c93013ad0..7710acccb 100644
--- a/man7/spufs.7
+++ b/man7/spufs.7
@@ -10,7 +10,7 @@
.\" 2007-07-10, quite a lot of polishing by mtk
.\" 2007-09-28, updates for newer kernels by Jeremy Kerr <jk@ozlabs.org>
.\"
-.TH spufs 7 2022-11-22 "Linux man-pages 6.02"
+.TH spufs 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
spufs \- SPU filesystem
.SH DESCRIPTION
@@ -291,7 +291,7 @@ whenever space is available for writing.
.TP
.IR /mbox_stat ", " /ibox_stat ", " /wbox_stat
These are read-only files that contain the length of the current
-queue of each mailbox\(emthat is, how many words can be read from
+queue of each mailbox\[em]that is, how many words can be read from
.IR mbox " or " ibox
or how many words can be written to
.I wbox
diff --git a/man7/standards.7 b/man7/standards.7
index 5d0ef4bb2..e6684bcd3 100644
--- a/man7/standards.7
+++ b/man7/standards.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH standards 7 2022-10-30 "Linux man-pages 6.02"
+.TH standards 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
standards \- C and UNIX Standards
.SH DESCRIPTION
diff --git a/man7/string_copying.7 b/man7/string_copying.7
index 345b4b363..62365897e 100644
--- a/man7/string_copying.7
+++ b/man7/string_copying.7
@@ -2,12 +2,12 @@
.\"
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
-.TH string_copy 7 2022-12-20 "Linux man-pages 6.02"
+.TH string_copying 7 2023-02-05 "Linux man-pages 6.03"
.\" ----- NAME :: -----------------------------------------------------/
.SH NAME
stpcpy,
strcpy, strcat,
-stpecpy, stpecpyx,
+stpecpy,
strlcpy, strlcat,
stpncpy,
strncpy,
@@ -30,10 +30,7 @@ ustpcpy, ustr2stp
// Chain-copy a string with truncation.
.BI "char *stpecpy(char *" dst ", char " end "[0], const char *restrict " src );
.PP
-// Chain-copy a string with truncation and SIGSEGV on UB.
-.BI "char *stpecpyx(char *" dst ", char " end "[0], const char *restrict " src );
-.PP
-// Copy/catenate a string with truncation and SIGSEGV on UB.
+// Copy/catenate a string with truncation.
.BI "size_t strlcpy(char " dst "[restrict ." sz "], \
const char *restrict " src ,
.BI " size_t " sz );
@@ -218,28 +215,17 @@ it makes sense to truncate.
Remember to check the return value of such function calls.
.PP
Functions that truncate:
-.IP \(bu 3
+.IP \[bu] 3
.BR stpecpy (3)
is the most efficient string copy function that performs truncation.
It only requires to check for truncation once after all chained calls.
-.IP \(bu
-.BR stpecpyx (3)
-is a variant of
-.BR stpecpy (3)
-that consumes the entire source string,
-to catch bugs in the program
-by forcing a segmentation fault (as
-.BR strlcpy (3bsd)
-and
-.BR strlcat (3bsd)
-do).
-.IP \(bu
+.IP \[bu]
.BR strlcpy (3bsd)
and
.BR strlcat (3bsd)
are designed to crash if the input string is invalid
(doesn't contain a terminating null byte).
-.IP \(bu
+.IP \[bu]
.BR stpncpy (3)
and
.BR strncpy (3)
@@ -267,7 +253,7 @@ or
.PP
To copy from an unterminated string within a fixed-width buffer
into a character sequence,
-ingoring any trailing null bytes in the source fixed-width buffer,
+ignoring any trailing null bytes in the source fixed-width buffer,
you should use
.BR zustr2ustp (3).
.\" ----- DESCRIPTION :: Measured character sequences -----------------/
@@ -327,16 +313,15 @@ also require that
.I dst
holds a string before the call.
List of functions:
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
.BR stpcpy (3)
-.IP \(bu
+.IP \[bu]
.BR strcpy "(3), \c"
.BR strcat (3)
-.IP \(bu
-.BR stpecpy "(3), \c"
-.BR stpecpyx (3)
-.IP \(bu
+.IP \[bu]
+.BR stpecpy (3)
+.IP \[bu]
.BR strlcpy "(3bsd), \c"
.BR strlcat (3bsd)
.PD
@@ -346,10 +331,10 @@ but create a character sequence as output.
These functions have confusing names,
and have a long history of misuse.
List of functions:
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
.BR stpncpy (3)
-.IP \(bu
+.IP \[bu]
.BR strncpy (3)
.PD
.PP
@@ -362,22 +347,22 @@ holds a string before the call.
.BR strncat (3)
has an even more misleading name than the functions above.
List of functions:
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
.BR zustr2stp (3)
-.IP \(bu
+.IP \[bu]
.BR strncat (3)
-.IP \(bu
+.IP \[bu]
.BR ustr2stp (3)
.PD
.PP
Other functions operate on an input character sequence
to create an output character sequence.
List of functions:
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
.BR ustpcpy (3)
-.IP \(bu
+.IP \[bu]
.BR zustr2stp (3)
.PD
.\" ----- DESCRIPTION :: Functions :: ---------------------------------/
@@ -399,27 +384,19 @@ The return value is useless.
.IP
.BR stpcpy (3)
is a faster alternative to these functions.
-.\" ----- DESCRIPTION :: Functions :: stpecpy(3), stpecpyx(3) ---------/
+.\" ----- DESCRIPTION :: Functions :: stpecpy(3) ----------------------/
.TP
.BR stpecpy (3)
-.TQ
-.BR stpecpyx (3)
-These functions copy the input string into a destination string.
+This function copies the input string into a destination string.
If the destination buffer,
limited by a pointer to its end,
isn't large enough to hold the copy,
the resulting string is truncated
(but it is guaranteed to be null-terminated).
-They return a pointer suitable for chaining.
+It returns a pointer suitable for chaining.
Truncation needs to be detected only once after the last chained call.
-.BR stpecpyx (3)
-has identical semantics to
-.BR stpecpy (3),
-except that it forces a SIGSEGV if the
-.I src
-pointer is not a string.
.IP
-These functions are not provided by any library;
+This function is not provided by any library;
See EXAMPLES for a reference implementation.
.\" ----- DESCRIPTION :: Functions :: strlcpy(3bsd), strlcat(3bsd) ----/
.TP
@@ -437,8 +414,8 @@ These functions force a SIGSEGV if the
.I src
pointer is not a string.
.IP
-.BR stpecpyx (3)
-is a faster alternative to these functions.
+.BR stpecpy (3)
+is a simpler alternative to these functions.
.\" ----- DESCRIPTION :: Functions :: stpncpy(3) ----------------------/
.TP
.BR stpncpy (3)
@@ -529,23 +506,22 @@ It returns a pointer suitable for chaining.
.SH RETURN VALUE
The following functions return
a pointer to the terminating null byte in the destination string.
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
.BR stpcpy (3)
-.IP \(bu
+.IP \[bu]
.BR ustr2stp (3)
-.IP \(bu
+.IP \[bu]
.BR zustr2stp (3)
.PD
.PP
-The following functions return
+The following function returns
a pointer to the terminating null byte in the destination string,
except when truncation occurs;
if truncation occurs,
-they return a pointer to the end of the destination buffer.
-.IP \(bu 3
-.BR stpecpy (3),
-.BR stpecpyx (3)
+it returns a pointer to the end of the destination buffer.
+.IP \[bu] 3
+.BR stpecpy (3)
.PP
The following function returns
a pointer to one after the last character
@@ -553,23 +529,23 @@ in the destination character sequence;
if truncation occurs,
that pointer is equivalent to
a pointer to the end of the destination buffer.
-.IP \(bu 3
+.IP \[bu] 3
.BR stpncpy (3)
.PP
The following functions return
a pointer to one after the last character
in the destination character sequence.
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
.BR zustr2ustp (3)
-.IP \(bu
+.IP \[bu]
.BR ustpcpy (3)
.PD
.PP
The following functions return
the length of the total string that they tried to create
(as if truncation didn't occur).
-.IP \(bu 3
+.IP \[bu] 3
.BR strlcpy (3bsd),
.BR strlcat (3bsd)
.PP
@@ -577,13 +553,13 @@ The following functions return the
.I dst
pointer,
which is useless.
-.IP \(bu 3
+.IP \[bu] 3
.PD 0
.BR strcpy (3),
.BR strcat (3)
-.IP \(bu
+.IP \[bu]
.BR strncpy (3)
-.IP \(bu
+.IP \[bu]
.BR strncat (3)
.PD
.\" ----- NOTES :: strscpy(9) -----------------------------------------/
@@ -648,11 +624,9 @@ strcat(buf, "!");
len = strlen(buf);
puts(buf);
.EE
-.\" ----- EXAMPLES :: stpecpy(3), stpecpyx(3) -------------------------/
+.\" ----- EXAMPLES :: stpecpy(3) --------------------------------------/
.TP
.BR stpecpy (3)
-.TQ
-.BR stpecpyx (3)
.EX
end = buf + sizeof(buf);
p = buf;
@@ -738,7 +712,7 @@ puts(buf);
.TP
.BR strncat (3)
.EX
-buf[0] = \(aq\e0\(aq; // There's no 'cpy' function to this 'cat'.
+buf[0] = \[aq]\e0\[aq]; // There's no 'cpy' function to this 'cat'.
strncat(buf, "Hello ", 6);
strncat(buf, "world", 42); // Padding null bytes ignored.
strncat(buf, "!", 1);
@@ -781,28 +755,21 @@ char *
{
char *p;
+ if (src[strlen(src)] != \[aq]\e0\[aq])
+ raise(SIGSEGV);
+
if (dst == end)
return end;
- p = memccpy(dst, src, \(aq\e0\(aq, end \- dst);
+ p = memccpy(dst, src, \[aq]\e0\[aq], end \- dst);
if (p != NULL)
return p \- 1;
/* truncation detected */
- end[\-1] = \(aq\e0\(aq;
+ end[\-1] = \[aq]\e0\[aq];
return end;
}
-.\" ----- EXAMPLES :: Implementations :: stpecpy(3) -------------------/
-char *
-.IR stpecpyx "(char *dst, char end[0], const char *restrict src)"
-{
- if (src[strlen(src)] != \(aq\e0\(aq)
- raise(SIGSEGV);
-
- return stpecpy(dst, end, src);
-}
-
.\" ----- EXAMPLES :: Implementations :: zustr2ustp(3) ----------------/
char *
.IR zustr2ustp "(char *restrict dst, const char *restrict src, size_t sz)"
@@ -817,7 +784,7 @@ char *
char *p;
p = zustr2ustp(dst, src, sz);
- *p = \(aq\e0\(aq;
+ *p = \[aq]\e0\[aq];
return p;
}
@@ -836,7 +803,7 @@ char *
char *p;
p = ustpcpy(dst, src, len);
- *p = \(aq\e0\(aq;
+ *p = \[aq]\e0\[aq];
return p;
}
diff --git a/man7/suffixes.7 b/man7/suffixes.7
index 1d629eacc..096e9e602 100644
--- a/man7/suffixes.7
+++ b/man7/suffixes.7
@@ -14,7 +14,7 @@
.\" Modified Thu Nov 16 23:28:25 2000 by David A. Wheeler
.\" <dwheeler@dwheeler.com>
.\"
-.TH SUFFIXES 7 2022-12-20 "Linux man-pages 6.02"
+.TH SUFFIXES 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
suffixes \- list of file suffixes
.SH DESCRIPTION
@@ -248,7 +248,7 @@ Suffix File type
\&.z File compressed using \fBpack\fP(1) (or an old \fBgzip\fP(1))
\&.zip \fBzip\fP(1) archive
\&.zoo \fBzoo\fP(1) archive
-\&\(ti Emacs or \fBpatch\fP(1) backup file
+\&\[ti] Emacs or \fBpatch\fP(1) backup file
\&rc startup (`run control') file, e.g., \fI.newsrc\fP
.TE
.SH STANDARDS
diff --git a/man7/symlink.7 b/man7/symlink.7
index 4d916751c..bc2c00b9c 100644
--- a/man7/symlink.7
+++ b/man7/symlink.7
@@ -10,7 +10,7 @@
.\" 2008-06-11, mtk, Taken from FreeBSD 6.2 and heavily edited for
.\" specific Linux details, improved readability, and man-pages style.
.\"
-.TH symlink 7 2022-10-30 "Linux man-pages 6.02"
+.TH symlink 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
symlink \- symbolic link handling
.SH DESCRIPTION
@@ -168,12 +168,12 @@ exceeded.)
.PP
There are three separate areas that need to be discussed.
They are as follows:
-.IP \(bu 3
+.IP \[bu] 3
Symbolic links used as filename arguments for system calls.
-.IP \(bu
+.IP \[bu]
Symbolic links specified as command-line arguments to utilities that
are not traversing a file tree.
-.IP \(bu
+.IP \[bu]
Symbolic links encountered by utilities that are traversing a file tree
(either specified on the command line or encountered as part of the
file hierarchy walk).
@@ -297,11 +297,11 @@ which performs a tree traversal, is not.
(The latter is described in the third area, below.)
.PP
If it is explicitly intended that the command operate on the symbolic
-link instead of following the symbolic link\(emfor example, it is desired that
+link instead of following the symbolic link\[em]for example, it is desired that
.I "chown slink"
change the ownership of the file that
.I slink
-is, whether it is a symbolic link or not\(emthen the
+is, whether it is a symbolic link or not\[em]then the
.I \-h
option should be used.
In the above example,
@@ -315,7 +315,7 @@ would change the ownership of
itself.
.PP
There are some exceptions to this rule:
-.IP \(bu 3
+.IP \[bu] 3
The
.BR mv (1)
and
@@ -325,13 +325,13 @@ but respectively attempt to rename and delete them.
(Note, if the symbolic link references a file via a relative path,
moving it to another directory may very well cause it to stop working,
since the path may no longer be correct.)
-.IP \(bu
+.IP \[bu]
The
.BR ls (1)
command is also an exception to this rule.
For compatibility with historic systems (when
.BR ls (1)
-is not doing a tree walk\(emthat is,
+is not doing a tree walk\[em]that is,
.I \-R
option is not specified),
the
@@ -355,7 +355,7 @@ and
.I \-L
options affect its behavior even though it is not doing a walk of
a file tree.)
-.IP \(bu
+.IP \[bu]
The
.BR file (1)
command is also an exception to this rule.
@@ -415,7 +415,7 @@ walk (where symbolic links that refer to directories are followed).
.PP
Certain conventions are (should be) followed as consistently as
possible by commands that perform file tree walks:
-.IP \(bu 3
+.IP \[bu] 3
A command can be made to follow
any symbolic links named on the command line,
regardless of the type of file they reference, by specifying the
@@ -444,7 +444,7 @@ flag causes symbolic links specified on the command line to be
dereferenced for the purposes of both the action to be performed
and the tree walk, and it is as if the user had specified the
name of the file to which the symbolic link pointed.
-.IP \(bu
+.IP \[bu]
A command can be made to
follow any symbolic links named on the command line,
as well as any symbolic links encountered during the traversal,
@@ -473,7 +473,7 @@ In addition, if any symbolic links are encountered in any file tree that
.B chown
traverses, they will be treated in the same fashion as
.IR slink .
-.IP \(bu
+.IP \[bu]
A command can be made to
provide the default behavior by specifying the
.I \-P
@@ -504,7 +504,7 @@ The
and
.BR rm (1)
commands have exceptions to these rules:
-.IP \(bu 3
+.IP \[bu] 3
The
.BR rm (1)
command operates on the symbolic link, and not the file it references,
@@ -517,7 +517,7 @@ command does not support the
or
.I \-P
options.
-.IP \(bu
+.IP \[bu]
To maintain compatibility with historic systems,
the
.BR ls (1)
diff --git a/man7/system_data_types.7 b/man7/system_data_types.7
index 34d0796bd..ff75bd90a 100644
--- a/man7/system_data_types.7
+++ b/man7/system_data_types.7
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH system_data_types 7 2022-10-30 "Linux man-pages 6.02"
+.TH system_data_types 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
system_data_types \- overview of system data types
.SH DESCRIPTION
@@ -295,15 +295,15 @@ main (void)
exit(EXIT_FAILURE);
}
- /* Copy the value to the suseconds_t variable \(aqus\(aq. */
+ /* Copy the value to the suseconds_t variable \[aq]us\[aq]. */
us = tmp;
- /* Even though suseconds_t can hold the value \-1, this isn\(aqt
+ /* Even though suseconds_t can hold the value \-1, this isn\[aq]t
a sensible number of microseconds. */
if (us < 0) {
- fprintf(stderr, "Scanned value shouldn\(aqt be negative!\en");
+ fprintf(stderr, "Scanned value shouldn\[aq]t be negative!\en");
exit(EXIT_FAILURE);
}
diff --git a/man7/sysvipc.7 b/man7/sysvipc.7
index eefe43529..4ebfa6617 100644
--- a/man7/sysvipc.7
+++ b/man7/sysvipc.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sysvipc 7 2022-10-30 "Linux man-pages 6.02"
+.TH sysvipc 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
sysvipc \- System V interprocess communication mechanisms
.SH DESCRIPTION
diff --git a/man7/tcp.7 b/man7/tcp.7
index 4695341ba..53f8953d8 100644
--- a/man7/tcp.7
+++ b/man7/tcp.7
@@ -93,7 +93,7 @@
.\" commit cd8ae85299d54155702a56811b2e035e63064d3d
.\" Author: Eric Dumazet <edumazet@google.com>
.\"
-.TH tcp 7 2022-12-04 "Linux man-pages 6.02"
+.TH tcp 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
tcp \- TCP protocol
.SH SYNOPSIS
@@ -300,11 +300,11 @@ Enabling this option can harm the clients of your server.
.IR tcp_adv_win_scale " (integer; default: 2; since Linux 2.4)"
.\" Since Linux 2.4.0-test7
Count buffering overhead as
-.IR "bytes/2^tcp_adv_win_scale" ,
+.IR "bytes/2\[ha]tcp_adv_win_scale" ,
if
.I tcp_adv_win_scale
is greater than 0; or
-.IR "bytes\-bytes/2^(\-tcp_adv_win_scale)" ,
+.IR "bytes\-bytes/2\[ha](\-tcp_adv_win_scale)" ,
if
.I tcp_adv_win_scale
is less than or equal to zero.
@@ -368,7 +368,7 @@ but not loaded.
This variable defines how many
bytes of the TCP window are reserved for buffering overhead.
.IP
-A maximum of (\fIwindow/2^tcp_app_win\fP, mss) bytes in the window
+A maximum of (\fIwindow/2\[ha]tcp_app_win\fP, mss) bytes in the window
are reserved for the application buffer.
A value of 0 implies that no amount is reserved.
.\"
@@ -619,7 +619,7 @@ the orphaned connection is reset and a warning is printed.
This limit exists only to prevent simple denial-of-service attacks.
Lowering this limit is not recommended.
Network conditions might require you to increase the number of
-orphans allowed, but note that each orphan can eat up to \(ti64\ kB
+orphans allowed, but note that each orphan can eat up to \[ti]64\ kB
of unswappable memory.
The default initial value is set equal to the kernel parameter NR_FILE.
This initial default is adjusted depending on the memory in the system.
@@ -1498,7 +1498,7 @@ level
socket option.
When this option is enabled, all incoming
errors are immediately passed to the user program.
-Use this option with care \(em it makes TCP less tolerant to routing
+Use this option with care \[em] it makes TCP less tolerant to routing
changes and other normal network conditions.
.SH ERRORS
.TP
diff --git a/man7/termio.7 b/man7/termio.7
index 6ba5e679f..13d9036fe 100644
--- a/man7/termio.7
+++ b/man7/termio.7
@@ -4,7 +4,7 @@
.\"
.\" 28 Dec 2006 - Initial Creation
.\"
-.TH termio 7 2022-10-30 "Linux man-pages 6.02"
+.TH termio 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
termio \- System V terminal driver interface
.SH DESCRIPTION
diff --git a/man7/thread-keyring.7 b/man7/thread-keyring.7
index 809d8ab16..2374893da 100644
--- a/man7/thread-keyring.7
+++ b/man7/thread-keyring.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH thread-keyring 7 2022-10-30 "Linux man-pages 6.02"
+.TH thread-keyring 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
thread-keyring \- per-thread keyring
.SH DESCRIPTION
diff --git a/man7/time.7 b/man7/time.7
index 0348c3d37..e3afa9c9c 100644
--- a/man7/time.7
+++ b/man7/time.7
@@ -5,7 +5,7 @@
.\" 2008-06-24, mtk: added some details about where jiffies come into
.\" play; added section on high-resolution timers.
.\"
-.TH time 7 2022-12-04 "Linux man-pages 6.02"
+.TH time 7 2023-01-22 "Linux man-pages 6.03"
.SH NAME
time \- overview of time and timers
.SH DESCRIPTION
@@ -63,16 +63,18 @@ The value of
.I HZ
varies across kernel versions and hardware platforms.
On i386 the situation is as follows:
-on kernels up to and including 2.4.x, HZ was 100,
+on kernels up to and including Linux 2.4.x,
+HZ was 100,
giving a jiffy value of 0.01 seconds;
-starting with 2.6.0, HZ was raised to 1000, giving a jiffy of
-0.001 seconds.
+starting with Linux 2.6.0,
+HZ was raised to 1000,
+giving a jiffy of 0.001 seconds.
Since Linux 2.6.13, the HZ value is a kernel
configuration parameter and can be 100, 250 (the default) or 1000,
yielding a jiffies value of, respectively, 0.01, 0.004, or 0.001 seconds.
Since Linux 2.6.20, a further frequency is available:
-300, a number that divides evenly for the common video
-frame rates (PAL, 25 Hz; NTSC, 30 Hz).
+300, a number that divides evenly for the common video frame rates
+(PAL, 25 Hz; NTSC, 30 Hz).
.PP
The
.BR times (2)
diff --git a/man7/time_namespaces.7 b/man7/time_namespaces.7
index def5c6ff1..253a5a5fe 100644
--- a/man7/time_namespaces.7
+++ b/man7/time_namespaces.7
@@ -3,20 +3,20 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH time_namespaces 7 2022-12-04 "Linux man-pages 6.02"
+.TH time_namespaces 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
time_namespaces \- overview of Linux time namespaces
.SH DESCRIPTION
Time namespaces virtualize the values of two system clocks:
-.IP \(bu 3
+.IP \[bu] 3
.B CLOCK_MONOTONIC
(and likewise
.B CLOCK_MONOTONIC_COARSE
and
.BR CLOCK_MONOTONIC_RAW ),
-a nonsettable clock that represents monotonic time since\(emas
-described by POSIX\(em"some unspecified point in the past".
-.IP \(bu
+a nonsettable clock that represents monotonic time since\[em]as
+described by POSIX\[em]"some unspecified point in the past".
+.IP \[bu]
.B CLOCK_BOOTTIME
(and likewise
.BR CLOCK_BOOTTIME_ALARM ),
@@ -147,11 +147,11 @@ An
value is out of range.
In particular;
.RS
-.IP \(bu 3
+.IP \[bu] 3
.I offset-secs
can't be set to a value which would make the current
time on the corresponding clock inside the namespace a negative value; and
-.IP \(bu
+.IP \[bu]
.I offset-secs
can't be set to a value such that the time on the corresponding clock
inside the namespace would exceed half of the value of the kernel constant
diff --git a/man7/udp.7 b/man7/udp.7
index 1d2724419..b3963ee56 100644
--- a/man7/udp.7
+++ b/man7/udp.7
@@ -9,7 +9,7 @@
.\"
.\" $Id: udp.7,v 1.7 2000/01/22 01:55:05 freitag Exp $
.\"
-.TH udp 7 2022-12-04 "Linux man-pages 6.02"
+.TH udp 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
udp \- User Datagram Protocol for IPv4
.SH SYNOPSIS
diff --git a/man7/udplite.7 b/man7/udplite.7
index a1bd6ba88..6157b7f12 100644
--- a/man7/udplite.7
+++ b/man7/udplite.7
@@ -4,7 +4,7 @@
.\"
.\" $Id: udplite.7,v 1.12 2008/07/23 15:22:22 gerrit Exp gerrit $
.\"
-.TH udplite 7 2022-10-30 "Linux man-pages 6.02"
+.TH udplite 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
udplite \- Lightweight User Datagram Protocol
.SH SYNOPSIS
@@ -33,7 +33,7 @@ If this option is not set, the only difference from UDP is
in using a different IP protocol identifier (IANA number 136).
.PP
The UDP-Lite implementation is a full extension of
-.BR udp (7)\(emthat
+.BR udp (7)\[em]that
is, it shares the same API and API behavior, and in addition
offers two socket options to control the checksum coverage.
.SS Address format
@@ -64,15 +64,15 @@ The following two options are specific to UDP-Lite.
.B UDPLITE_SEND_CSCOV
This option sets the sender checksum coverage and takes an
.I int
-as argument, with a checksum coverage value in the range 0..2^16-1.
+as argument, with a checksum coverage value in the range 0..2\[ha]16-1.
.IP
A value of 0 means that the entire datagram is always covered.
Values from 1\-7 are illegal (RFC\ 3828, 3.1) and are rounded up to
the minimum coverage of 8.
.IP
With regard to IPv6 jumbograms (RFC\ 2675), the UDP-Litev6 checksum
-coverage is limited to the first 2^16-1 octets, as per RFC\ 3828, 3.5.
-Higher values are therefore silently truncated to 2^16-1.
+coverage is limited to the first 2\[ha]16-1 octets, as per RFC\ 3828, 3.5.
+Higher values are therefore silently truncated to 2\[ha]16-1.
If in doubt, the current coverage value can always be queried using
.BR getsockopt (2).
.TP
diff --git a/man7/unicode.7 b/man7/unicode.7
index 62ee352e6..905e1e87f 100644
--- a/man7/unicode.7
+++ b/man7/unicode.7
@@ -7,7 +7,7 @@
.\" 2001-05-11 Markus Kuhn <mgk25@cl.cam.ac.uk>
.\" Update
.\"
-.TH unicode 7 2022-10-30 "Linux man-pages 6.02"
+.TH unicode 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
unicode \- universal character set
.SH DESCRIPTION
@@ -169,7 +169,7 @@ can be used to transform the internal
characters and strings into the system character encoding and back
and
.BR wcwidth (3)
-tells how many positions (0\(en2) the cursor is advanced by the
+tells how many positions (0\[en]2) the cursor is advanced by the
output of a character.
.SS Private Use Areas (PUA)
In the Basic Multilingual Plane,
@@ -195,9 +195,9 @@ Two other planes are reserved for private usage, plane 15
and plane 16 (Supplementary Private Use Area-B, range
0x100000 to 0x10fffd).
.SS Literature
-.IP \(bu 3
-Information technology \(em Universal Multiple-Octet Coded Character
-Set (UCS) \(em Part 1: Architecture and Basic Multilingual Plane.
+.IP \[bu] 3
+Information technology \[em] Universal Multiple-Octet Coded Character
+Set (UCS) \[em] Part 1: Architecture and Basic Multilingual Plane.
International Standard ISO/IEC 10646-1, International Organization
for Standardization, Geneva, 2000.
.IP
@@ -205,11 +205,11 @@ This is the official specification of UCS.
Available from
.UR http://www.iso.ch/
.UE .
-.IP \(bu
+.IP \[bu]
The Unicode Standard, Version 3.0.
The Unicode Consortium, Addison-Wesley,
Reading, MA, 2000, ISBN 0-201-61633-5.
-.IP \(bu
+.IP \[bu]
S.\& Harbison, G.\& Steele. C: A Reference Manual. Fourth edition,
Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
.IP
@@ -219,19 +219,19 @@ edition covers the 1994 Amendment 1 to the ISO C90 standard, which
adds a large number of new C library functions for handling wide and
multibyte character encodings, but it does not yet cover ISO C99,
which improved wide and multibyte character support even further.
-.IP \(bu
+.IP \[bu]
Unicode Technical Reports.
.RS
.UR http://www.unicode.org\:/reports/
.UE
.RE
-.IP \(bu
+.IP \[bu]
Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
.RS
-.UR http://www.cl.cam.ac.uk\:/\(timgk25\:/unicode.html
+.UR http://www.cl.cam.ac.uk\:/\[ti]mgk25\:/unicode.html
.UE
.RE
-.IP \(bu
+.IP \[bu]
Bruno Haible: Unicode HOWTO.
.RS
.UR http://www.tldp.org\:/HOWTO\:/Unicode\-HOWTO.html
diff --git a/man7/units.7 b/man7/units.7
index a58db8652..e90a28b03 100644
--- a/man7/units.7
+++ b/man7/units.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH units 7 2022-12-15 "Linux man-pages 6.02"
+.TH units 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
units \- decimal and binary prefixes
.SH DESCRIPTION
@@ -15,41 +15,39 @@ Below the standard prefixes.
.TS
l l l.
Prefix Name Value
-y yocto 10^\-24 = 0.000000000000000000000001
-z zepto 10^\-21 = 0.000000000000000000001
-a atto 10^\-18 = 0.000000000000000001
-f femto 10^\-15 = 0.000000000000001
-p pico 10^\-12 = 0.000000000001
-n nano 10^\-9 = 0.000000001
-\(mc micro 10^\-6 = 0.000001
-m milli 10^\-3 = 0.001
-c centi 10^\-2 = 0.01
-d deci 10^\-1 = 0.1
-da deka 10^ 1 = 10
-h hecto 10^ 2 = 100
-k kilo 10^ 3 = 1000
-M mega 10^ 6 = 1000000
-G giga 10^ 9 = 1000000000
-T tera 10^12 = 1000000000000
-P peta 10^15 = 1000000000000000
-E exa 10^18 = 1000000000000000000
-Z zetta 10^21 = 1000000000000000000000
-Y yotta 10^24 = 1000000000000000000000000
+q quecto 10\[ha]\-30 = 0.000000000000000000000000000001
+r ronto 10\[ha]\-27 = 0.000000000000000000000000001
+y yocto 10\[ha]\-24 = 0.000000000000000000000001
+z zepto 10\[ha]\-21 = 0.000000000000000000001
+a atto 10\[ha]\-18 = 0.000000000000000001
+f femto 10\[ha]\-15 = 0.000000000000001
+p pico 10\[ha]\-12 = 0.000000000001
+n nano 10\[ha]\-9 = 0.000000001
+\[mc] micro 10\[ha]\-6 = 0.000001
+m milli 10\[ha]\-3 = 0.001
+c centi 10\[ha]\-2 = 0.01
+d deci 10\[ha]\-1 = 0.1
+da deka 10\[ha] 1 = 10
+h hecto 10\[ha] 2 = 100
+k kilo 10\[ha] 3 = 1000
+M mega 10\[ha] 6 = 1000000
+G giga 10\[ha] 9 = 1000000000
+T tera 10\[ha]12 = 1000000000000
+P peta 10\[ha]15 = 1000000000000000
+E exa 10\[ha]18 = 1000000000000000000
+Z zetta 10\[ha]21 = 1000000000000000000000
+Y yotta 10\[ha]24 = 1000000000000000000000000
+R ronna 10\[ha]27 = 1000000000000000000000000000
+Q quetta 10\[ha]30 = 1000000000000000000000000000000
.TE
.RE
.PP
The symbol for micro is the Greek letter mu, often written u
in an ASCII context where this Greek letter is not available.
-See also
-.PP
-.RS
-.UR http://physics.nist.gov\:/cuu\:/Units\:/prefixes.html
-.UE
-.RE
.SS Binary prefixes
The binary prefixes resemble the decimal ones,
-but have an additional \(aqi\(aq
-(and "Ki" starts with a capital \(aqK\(aq).
+but have an additional \[aq]i\[aq]
+(and "Ki" starts with a capital \[aq]K\[aq]).
The names are formed by taking the
first syllable of the names of the decimal prefix with roughly the same
size, followed by "bi" for "binary".
@@ -57,19 +55,16 @@ size, followed by "bi" for "binary".
.TS
l l l.
Prefix Name Value
-Ki kibi 2^10 = 1024
-Mi mebi 2^20 = 1048576
-Gi gibi 2^30 = 1073741824
-Ti tebi 2^40 = 1099511627776
-Pi pebi 2^50 = 1125899906842624
-Ei exbi 2^60 = 1152921504606846976
+Ki kibi 2\[ha]10 = 1024
+Mi mebi 2\[ha]20 = 1048576
+Gi gibi 2\[ha]30 = 1073741824
+Ti tebi 2\[ha]40 = 1099511627776
+Pi pebi 2\[ha]50 = 1125899906842624
+Ei exbi 2\[ha]60 = 1152921504606846976
+Zi zebi 2\[ha]70 = 1180591620717411303424
+Yi yobi 2\[ha]80 = 1208925819614629174706176
.TE
.RE
-.PP
-See also
-.PP
-.UR http://physics.nist.gov\:/cuu\:/Units\:/binary.html
-.UE
.SS Discussion
Before these binary prefixes were introduced, it was fairly
common to use k=1000 and K=1024, just like b=bit, B=byte.
@@ -108,6 +103,6 @@ hda: 120064896 sectors (61473 MB) w/2048KiB Cache
.PP
the MB are megabytes and the KiB are kibibytes.
.SH SEE ALSO
-.UR https://www.bipm.org/documents/20126/41483022/SI-Brochure-9.pdf
+.UR https://www.bipm.org/\:documents/\:20126/\:41483022/\:SI\-Brochure\-9.pdf
The International System of Units
.UE .
diff --git a/man7/unix.7 b/man7/unix.7
index 1c3eabcff..2b41465da 100644
--- a/man7/unix.7
+++ b/man7/unix.7
@@ -17,7 +17,7 @@
.\" address that can appear in the sockaddr_un structure: pathname,
.\" unnamed, and abstract.
.\"
-.TH UNIX 7 2022-12-04 "Linux man-pages 6.02"
+.TH UNIX 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
unix \- sockets for local interprocess communication
.SH SYNOPSIS
@@ -146,7 +146,7 @@ abstract
an abstract socket address is distinguished (from a pathname socket)
by the fact that
.I sun_path[0]
-is a null byte (\(aq\e0\(aq).
+is a null byte (\[aq]\e0\[aq]).
The socket's address in this namespace is given by the additional
bytes in
.I sun_path
@@ -166,15 +166,15 @@ bytes of
.SS Pathname sockets
When binding a socket to a pathname, a few rules should be observed
for maximum portability and ease of coding:
-.IP \(bu 3
+.IP \[bu] 3
The pathname in
.I sun_path
should be null-terminated.
-.IP \(bu
+.IP \[bu]
The length of the pathname, including the terminating null byte,
should not exceed the size of
.IR sun_path .
-.IP \(bu
+.IP \[bu]
The
.I addrlen
argument that describes the enclosing
@@ -416,9 +416,9 @@ then the socket is autobound to an abstract address.
The address consists of a null byte
followed by 5 bytes in the character set
.IR [0\-9a\-f] .
-Thus, there is a limit of 2^20 autobind addresses.
+Thus, there is a limit of 2\[ha]20 autobind addresses.
(From Linux 2.1.15, when the autobind feature was added,
-8 bytes were used, and the limit was thus 2^32 autobind addresses.
+8 bytes were used, and the limit was thus 2\[ha]32 autobind addresses.
The change to 5 bytes came in Linux 2.3.15.)
.SS Sockets API
The following paragraphs describe domain-specific details and
diff --git a/man7/uri.7 b/man7/uri.7
index 2db5ba91d..b85a2f9a8 100644
--- a/man7/uri.7
+++ b/man7/uri.7
@@ -25,7 +25,7 @@
.\" Modified Fri Aug 21 23:00:00 1999 by David A. Wheeler (dwheeler@dwheeler.com)
.\" Modified Tue Mar 14 2000 by David A. Wheeler (dwheeler@dwheeler.com)
.\"
-.TH uri 7 2022-10-30 "Linux man-pages 6.02"
+.TH uri 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
uri, url, urn \- uniform resource identifier (URI), including a URL or URN
.SH SYNOPSIS
@@ -83,8 +83,8 @@ Note that descendants of MS-DOS (e.g., Microsoft Windows) replace
devicename colons with the vertical bar ("|") in URIs, so "C:" becomes "C|".
.PP
A fragment identifier, if included, refers to a particular named portion
-(fragment) of a resource; text after a \(aq#\(aq identifies the fragment.
-A URI beginning with \(aq#\(aq refers to that fragment in the current resource.
+(fragment) of a resource; text after a \[aq]#\[aq] identifies the fragment.
+A URI beginning with \[aq]#\[aq] refers to that fragment in the current resource.
.SS Usage
There are many different URI schemes, each with specific
additional rules and meanings, but they are intentionally made to be
@@ -405,7 +405,7 @@ extensions
a comma-separated list of type=value
pairs, where the =value portion may be omitted for options not
requiring it.
-An extension prefixed with a \(aq!\(aq is critical
+An extension prefixed with a \[aq]!\[aq] is critical
(must be supported to be valid), otherwise it is noncritical (optional).
.PP
LDAP queries are easiest to explain by example.
@@ -493,7 +493,7 @@ limited set of punctuation marks and symbols:
.IP
.in +4n
.EX
-\- _ . ! \(ti * ' ( )
+\- _ . ! \[ti] * ' ( )
.EE
.in
.PP
@@ -515,7 +515,7 @@ A URI is always shown in its "escaped" form.
Unreserved characters can be escaped without changing the semantics
of the URI, but this should not be done unless the URI is being used
in a context that does not allow the unescaped character to appear.
-For example, "%7e" is sometimes used instead of "\(ti" in an HTTP URL
+For example, "%7e" is sometimes used instead of "\[ti]" in an HTTP URL
path, but the two are equivalent for an HTTP URL.
.PP
For URIs which must handle characters outside the US ASCII character set,
@@ -523,8 +523,8 @@ the HTML 4.01 specification (section B.2) and
IETF RFC\~3986 (last paragraph of section 2.5)
recommend the following approach:
.IP (1) 5
-translate the character sequences into UTF-8 (IETF RFC\~3629)\(emsee
-.BR utf\-8 (7)\(emand
+translate the character sequences into UTF-8 (IETF RFC\~3629)\[em]see
+.BR utf\-8 (7)\[em]and
then
.IP (2)
use the URI escaping mechanism, that is,
diff --git a/man7/user-keyring.7 b/man7/user-keyring.7
index 12db5d0ba..795db01f1 100644
--- a/man7/user-keyring.7
+++ b/man7/user-keyring.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH user-keyring 7 2022-10-30 "Linux man-pages 6.02"
+.TH user-keyring 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
user-keyring \- per-user keyring
.SH DESCRIPTION
@@ -60,9 +60,9 @@ excepting that the keyring is destroyed when the UID record is destroyed when
the last process pinning it exits.
.PP
If it is necessary for a key associated with a user to exist beyond the UID
-record being garbage collected\(emfor example, for use by a
+record being garbage collected\[em]for example, for use by a
.BR cron (8)
-script\(emthen the
+script\[em]then the
.BR persistent\-keyring (7)
should be used instead.
.PP
diff --git a/man7/user-session-keyring.7 b/man7/user-session-keyring.7
index 0986b4d06..6450f4b6b 100644
--- a/man7/user-session-keyring.7
+++ b/man7/user-session-keyring.7
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH user-session-keyring 7 2022-10-30 "Linux man-pages 6.02"
+.TH user-session-keyring 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
user-session-keyring \- per-user default session keyring
.SH DESCRIPTION
@@ -66,8 +66,8 @@ If a user session keyring does not exist when it is accessed,
it will be created.
.PP
Rather than relying on the user session keyring,
-it is strongly recommended\(emespecially if the process
-is running as root\(emthat a
+it is strongly recommended\[em]especially if the process
+is running as root\[em]that a
.BR session\-keyring (7)
be set explicitly, for example by
.BR pam_keyinit (8).
diff --git a/man7/user_namespaces.7 b/man7/user_namespaces.7
index e0e2e30dd..cd16bc053 100644
--- a/man7/user_namespaces.7
+++ b/man7/user_namespaces.7
@@ -4,7 +4,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH user_namespaces 7 2022-12-04 "Linux man-pages 6.02"
+.TH user_namespaces 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
user_namespaces \- overview of Linux user namespaces
.SH DESCRIPTION
@@ -35,8 +35,8 @@ but is unprivileged for operations outside the namespace.
.\"
.SS Nested namespaces, namespace membership
User namespaces can be nested;
-that is, each user namespace\(emexcept the initial ("root")
-namespace\(emhas a parent user namespace,
+that is, each user namespace\[em]except the initial ("root")
+namespace\[em]has a parent user namespace,
and can have zero or more child user namespaces.
The parent user namespace is the user namespace
of the process that creates the user namespace via a call to
@@ -157,7 +157,7 @@ its original user namespace.
.PP
The rules for determining whether or not a process has a capability
in a particular user namespace are as follows:
-.IP \(bu 3
+.IP \[bu] 3
A process has a capability inside a user namespace
if it is a member of that namespace and
it has the capability in its effective capability set.
@@ -173,11 +173,11 @@ or
.BR setns (2),
as already described.
.\" In the 3.8 sources, see security/commoncap.c::cap_capable():
-.IP \(bu
+.IP \[bu]
If a process has a capability in a user namespace,
then it has that capability in all child (and further removed descendant)
namespaces as well.
-.IP \(bu
+.IP \[bu]
.\" * The owner of the user namespace in the parent of the
.\" * user namespace has all caps.
When a user namespace is created, the kernel records the effective
@@ -234,29 +234,29 @@ and mount the following types of filesystems:
.PP
.RS 4
.PD 0
-.IP \(bu 3
+.IP \[bu] 3
.I /proc
(since Linux 3.8)
-.IP \(bu
+.IP \[bu]
.I /sys
(since Linux 3.8)
-.IP \(bu
+.IP \[bu]
.I devpts
(since Linux 3.9)
-.IP \(bu
+.IP \[bu]
.BR tmpfs (5)
(since Linux 3.9)
-.IP \(bu
+.IP \[bu]
.I ramfs
(since Linux 3.9)
-.IP \(bu
+.IP \[bu]
.I mqueue
(since Linux 3.9)
-.IP \(bu
+.IP \[bu]
.I bpf
.\" commit b2197755b2633e164a439682fb05a9b5ea48f706
(since Linux 4.4)
-.IP \(bu
+.IP \[bu]
.I overlayfs
.\" commit 92dbc9dedccb9759c7f9f2f0ae6242396376988f
.\" commit 4cb2c00c43b3fe88b32f29df4f76da1b92c33224
@@ -431,11 +431,11 @@ that created this user namespace.
The length of the range of user IDs that is mapped between the two
user namespaces.
.PP
-System calls that return user IDs (group IDs)\(emfor example,
+System calls that return user IDs (group IDs)\[em]for example,
.BR getuid (2),
.BR getgid (2),
and the credential fields in the structure returned by
-.BR stat (2)\(emreturn
+.BR stat (2)\[em]return
the user ID (group ID) mapped into the caller's user namespace.
.PP
When a process accesses a file, its user and group IDs
@@ -499,12 +499,12 @@ The lines written to
.I uid_map
.RI ( gid_map )
must conform to the following validity rules:
-.IP \(bu 3
+.IP \[bu] 3
The three fields must be valid numbers,
and the last field must be greater than 0.
-.IP \(bu
+.IP \[bu]
Lines are terminated by newline characters.
-.IP \(bu
+.IP \[bu]
There is a limit on the number of lines in the file.
In Linux 4.14 and earlier, this limit was (arbitrarily)
.\" 5*12-byte records could fit in a 64B cache line
@@ -519,7 +519,7 @@ and the write must be performed at the start of the file (i.e.,
and
.BR pwrite (2)
can't be used to write to nonzero offsets in the file).
-.IP \(bu
+.IP \[bu]
The range of user IDs (group IDs)
specified in each line cannot overlap with the ranges
in any other lines.
@@ -532,7 +532,7 @@ which prevented some otherwise valid maps from being created.
Linux 3.9 and later
.\" commit 0bd14b4fd72afd5df41e9fd59f356740f22fceba
fix this limitation, allowing any valid set of nonoverlapping maps.
-.IP \(bu
+.IP \[bu]
At least one line must be written to the file.
.PP
Writes that violate the above rules fail with the error
@@ -542,21 +542,21 @@ In order for a process to write to the
.IR /proc/ pid /uid_map
.RI ( /proc/ pid /gid_map )
file, all of the following permission requirements must be met:
-.IP \(bu 3
+.IP \[bu] 3
The writing process must have the
.B CAP_SETUID
.RB ( CAP_SETGID )
capability in the user namespace of the process
.IR pid .
-.IP \(bu
+.IP \[bu]
The writing process must either be in the user namespace of the process
.I pid
or be in the parent user namespace of the process
.IR pid .
-.IP \(bu
+.IP \[bu]
The mapped user IDs (group IDs) must in turn have a mapping
in the parent user namespace.
-.IP \(bu
+.IP \[bu]
If updating
.IR /proc/ pid /uid_map
to create a mapping that maps UID 0 in the parent namespace,
@@ -598,7 +598,7 @@ capability, it could create a binary with namespaced file capabilities
that would then be effective in the parent user namespace
(because the root user IDs are the same in the two namespaces).
.RE
-.IP \(bu
+.IP \[bu]
One of the following two cases applies:
.RS
.IP (a) 5
@@ -610,7 +610,7 @@ capability in the
.I parent
user namespace.
.RS
-.IP \(bu 3
+.IP \[bu] 3
No further restrictions apply:
the process can make mappings to arbitrary user IDs (group IDs)
in the parent user namespace.
@@ -619,7 +619,7 @@ in the parent user namespace.
.I Or
otherwise all of the following restrictions apply:
.RS
-.IP \(bu 3
+.IP \[bu] 3
The data written to
.I uid_map
.RI ( gid_map )
@@ -627,16 +627,16 @@ must consist of a single line that maps
the writing process's effective user ID
(group ID) in the parent user namespace to a user ID (group ID)
in the user namespace.
-.IP \(bu
+.IP \[bu]
The writing process must have the same effective user ID as the process
that created the user namespace.
-.IP \(bu
+.IP \[bu]
In the case of
.IR gid_map ,
use of the
.BR setgroups (2)
system call must first be denied by writing
-.RI \(dq deny \(dq
+.RI \[dq] deny \[dq]
to the
.IR /proc/ pid /setgroups
file (see below) before writing to
@@ -675,12 +675,12 @@ to fail with the error
The permission rules for writing to the
.IR /proc/ pid /projid_map
file are as follows:
-.IP \(bu 3
+.IP \[bu] 3
The writing process must either be in the user namespace of the process
.I pid
or be in the parent user namespace of the process
.IR pid .
-.IP \(bu
+.IP \[bu]
The mapped project IDs must in turn have a mapping
in the parent user namespace.
.PP
@@ -720,11 +720,11 @@ and
.BR setgroups (2).
.PP
Writing
-.RI \(dq deny \(dq
+.RI \[dq] deny \[dq]
to the
-.I /proc/ pid /setgroups
+.IR /proc/ pid /setgroups
file before writing to
-.I /proc/ pid /gid_map
+.IR /proc/ pid /gid_map
.\" Things changed in Linux 3.19
.\" commit 9cc46516ddf497ea16e8d7cb986ae03a0f6b92f8
.\" commit 66d2f338ee4c449396b6f99f5e75cd18eb6df272
@@ -732,14 +732,14 @@ file before writing to
will permanently disable
.BR setgroups (2)
in a user namespace and allow writing to
-.I /proc/ pid /gid_map
+.IR /proc/ pid /gid_map
without having the
.B CAP_SETGID
capability in the parent user namespace.
.\"
.\" ============================================================
.\"
-.SS The /proc/ pid /setgroups file
+.SS The /proc/\fIpid\fP/setgroups file
.\"
.\" commit 9cc46516ddf497ea16e8d7cb986ae03a0f6b92f8
.\" commit 66d2f338ee4c449396b6f99f5e75cd18eb6df272
@@ -749,13 +749,13 @@ capability in the parent user namespace.
The
.IR /proc/ pid /setgroups
file displays the string
-.RI \(dq allow \(dq
+.RI \[dq] allow \[dq]
if processes in the user namespace that contains the process
.I pid
are permitted to employ the
.BR setgroups (2)
system call; it displays
-.RI \(dq deny \(dq
+.RI \[dq] deny \[dq]
if
.BR setgroups (2)
is not permitted in that user namespace.
@@ -770,16 +770,16 @@ has not yet been set.
A privileged process (one with the
.B CAP_SYS_ADMIN
capability in the namespace) may write either of the strings
-.RI \(dq allow \(dq
+.RI \[dq] allow \[dq]
or
-.RI \(dq deny \(dq
+.RI \[dq] deny \[dq]
to this file
.I before
writing a group ID mapping
for this user namespace to the file
.IR /proc/ pid /gid_map .
Writing the string
-.RI \(dq deny \(dq
+.RI \[dq] deny \[dq]
prevents any process in the user namespace from employing
.BR setgroups (2).
.PP
@@ -803,7 +803,7 @@ being disallowed to
being allowed.
.PP
The default value of this file in the initial user namespace is
-.RI \(dq allow \(dq.
+.RI \[dq] allow \[dq].
.PP
Once
.IR /proc/ pid /gid_map
@@ -814,7 +814,7 @@ in the user namespace),
it is no longer possible to disallow
.BR setgroups (2)
by writing
-.RI \(dq deny \(dq
+.RI \[dq] deny \[dq]
to
.IR /proc/ pid /setgroups
(the write fails with the error
@@ -827,11 +827,11 @@ setting from its parent.
If the
.I setgroups
file has the value
-.RI \(dq deny \(dq,
+.RI \[dq] deny \[dq],
then the
.BR setgroups (2)
system call can't subsequently be reenabled (by writing
-.RI \(dq allow \(dq
+.RI \[dq] allow \[dq]
to the file) in this user namespace.
(Attempts to do so fail with the error
.BR EPERM .)
@@ -839,7 +839,7 @@ This restriction also propagates down to all child user namespaces of
this user namespace.
.PP
The
-.I /proc/ pid /setgroups
+.IR /proc/ pid /setgroups
file was added in Linux 3.19,
but was backported to many earlier stable kernel series,
because it addresses a security issue.
@@ -965,9 +965,9 @@ Within a user namespace,
these capabilities allow a process to bypass the rules
if the process has the relevant capability over the file,
meaning that:
-.IP \(bu 3
+.IP \[bu] 3
the process has the relevant effective capability in its user namespace; and
-.IP \(bu
+.IP \[bu]
the file's user ID and group ID both have valid mappings
in the user namespace.
.PP
@@ -1087,7 +1087,7 @@ and group ID
.PP
.in +4n
.EX
-$ \fB./userns_child_exec \-p \-m \-U \-M \(aq0 1000 1\(aq \-G \(aq0 1000 1\(aq bash\fP
+$ \fB./userns_child_exec \-p \-m \-U \-M \[aq]0 1000 1\[aq] \-G \[aq]0 1000 1\[aq] bash\fP
.EE
.in
.PP
@@ -1122,10 +1122,10 @@ and a full set of permitted and effective capabilities:
.PP
.in +4n
.EX
-bash$ \fBcat /proc/$$/status | egrep \(aq\(ha[UG]id\(aq\fP
+bash$ \fBcat /proc/$$/status | egrep \[aq]\[ha][UG]id\[aq]\fP
Uid: 0 0 0 0
Gid: 0 0 0 0
-bash$ \fBcat /proc/$$/status | egrep \(aq\(haCap(Prm|Inh|Eff)\(aq\fP
+bash$ \fBcat /proc/$$/status | egrep \[aq]\[ha]Cap(Prm|Inh|Eff)\[aq]\fP
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
@@ -1180,8 +1180,8 @@ usage(char *pname)
fpe("\-U New user namespace\en");
fpe("\-M uid_map Specify UID map for user namespace\en");
fpe("\-G gid_map Specify GID map for user namespace\en");
- fpe("\-z Map user\(aqs UID and GID to 0 in user namespace\en");
- fpe(" (equivalent to: \-M \(aq0 <uid> 1\(aq \-G \(aq0 <gid> 1\(aq)\en");
+ fpe("\-z Map user\[aq]s UID and GID to 0 in user namespace\en");
+ fpe(" (equivalent to: \-M \[aq]0 <uid> 1\[aq] \-G \[aq]0 <gid> 1\[aq])\en");
fpe("\-v Display verbose messages\en");
fpe("\en");
fpe("If \-z, \-M, or \-G is specified, \-U is required.\en");
@@ -1199,8 +1199,8 @@ usage(char *pname)
exit(EXIT_FAILURE);
}
-/* Update the mapping file \(aqmap_file\(aq, with the value provided in
- \(aqmapping\(aq, a string that defines a UID or GID mapping. A UID or
+/* Update the mapping file \[aq]map_file\[aq], with the value provided in
+ \[aq]mapping\[aq], a string that defines a UID or GID mapping. A UID or
GID mapping consists of one or more newline\-delimited records
of the form:
@@ -1215,14 +1215,14 @@ static void
update_map(char *mapping, char *map_file)
{
int fd;
- size_t map_len; /* Length of \(aqmapping\(aq */
+ size_t map_len; /* Length of \[aq]mapping\[aq] */
/* Replace commas in mapping string with newlines. */
map_len = strlen(mapping);
for (size_t j = 0; j < map_len; j++)
- if (mapping[j] == \(aq,\(aq)
- mapping[j] = \(aq\en\(aq;
+ if (mapping[j] == \[aq],\[aq])
+ mapping[j] = \[aq]\en\[aq];
fd = open(map_file, O_RDWR);
if (fd == \-1) {
@@ -1241,10 +1241,10 @@ update_map(char *mapping, char *map_file)
}
/* Linux 3.19 made a change in the handling of setgroups(2) and the
- \(aqgid_map\(aq file to address a security issue. The issue allowed
+ \[aq]gid_map\[aq] file to address a security issue. The issue allowed
*unprivileged* users to employ user namespaces in order to drop groups.
The upshot of the 3.19 changes is that in order to update the
- \(aqgid_maps\(aq file, use of the setgroups() system call in this
+ \[aq]gid_maps\[aq] file, use of the setgroups() system call in this
user namespace must first be disabled by writing "deny" to one of
the /proc/PID/setgroups files for this namespace. That is the
purpose of the following function. */
@@ -1261,11 +1261,11 @@ proc_setgroups_write(pid_t child_pid, char *str)
fd = open(setgroups_path, O_RDWR);
if (fd == \-1) {
- /* We may be on a system that doesn\(aqt support
- /proc/PID/setgroups. In that case, the file won\(aqt exist,
- and the system won\(aqt impose the restrictions that Linux 3.19
- added. That\(aqs fine: we don\(aqt need to do anything in order
- to permit \(aqgid_map\(aq to be updated.
+ /* We may be on a system that doesn\[aq]t support
+ /proc/PID/setgroups. In that case, the file won\[aq]t exist,
+ and the system won\[aq]t impose the restrictions that Linux 3.19
+ added. That\[aq]s fine: we don\[aq]t need to do anything in order
+ to permit \[aq]gid_map\[aq] to be updated.
However, if the error from open() was something other than
the ENOENT error that is expected for that case, let the
@@ -1315,7 +1315,7 @@ childFunc(void *arg)
#define STACK_SIZE (1024 * 1024)
-static char child_stack[STACK_SIZE]; /* Space for child\(aqs stack */
+static char child_stack[STACK_SIZE]; /* Space for child\[aq]s stack */
int
main(int argc, char *argv[])
@@ -1328,11 +1328,11 @@ main(int argc, char *argv[])
char map_buf[MAP_BUF_SIZE];
char map_path[PATH_MAX];
- /* Parse command\-line options. The initial \(aq+\(aq character in
+ /* Parse command\-line options. The initial \[aq]+\[aq] character in
the final getopt() argument prevents GNU\-style permutation
- of command\-line options. That\(aqs useful, since sometimes
- the \(aqcommand\(aq to be executed by this program itself
- has command\-line options. We don\(aqt want getopt() to treat
+ of command\-line options. That\[aq]s useful, since sometimes
+ the \[aq]command\[aq] to be executed by this program itself
+ has command\-line options. We don\[aq]t want getopt() to treat
those as options to this program. */
flags = 0;
@@ -1342,16 +1342,16 @@ main(int argc, char *argv[])
map_zero = 0;
while ((opt = getopt(argc, argv, "+imnpuUM:G:zv")) != \-1) {
switch (opt) {
- case \(aqi\(aq: flags |= CLONE_NEWIPC; break;
- case \(aqm\(aq: flags |= CLONE_NEWNS; break;
- case \(aqn\(aq: flags |= CLONE_NEWNET; break;
- case \(aqp\(aq: flags |= CLONE_NEWPID; break;
- case \(aqu\(aq: flags |= CLONE_NEWUTS; break;
- case \(aqv\(aq: verbose = 1; break;
- case \(aqz\(aq: map_zero = 1; break;
- case \(aqM\(aq: uid_map = optarg; break;
- case \(aqG\(aq: gid_map = optarg; break;
- case \(aqU\(aq: flags |= CLONE_NEWUSER; break;
+ case \[aq]i\[aq]: flags |= CLONE_NEWIPC; break;
+ case \[aq]m\[aq]: flags |= CLONE_NEWNS; break;
+ case \[aq]n\[aq]: flags |= CLONE_NEWNET; break;
+ case \[aq]p\[aq]: flags |= CLONE_NEWPID; break;
+ case \[aq]u\[aq]: flags |= CLONE_NEWUTS; break;
+ case \[aq]v\[aq]: verbose = 1; break;
+ case \[aq]z\[aq]: map_zero = 1; break;
+ case \[aq]M\[aq]: uid_map = optarg; break;
+ case \[aq]G\[aq]: gid_map = optarg; break;
+ case \[aq]U\[aq]: flags |= CLONE_NEWUSER; break;
default: usage(argv[0]);
}
}
@@ -1369,11 +1369,11 @@ main(int argc, char *argv[])
ensure that the parent sets the UID and GID maps before the child
calls execve(). This ensures that the child maintains its
capabilities during the execve() in the common case where we
- want to map the child\(aqs effective user ID to 0 in the new user
+ want to map the child\[aq]s effective user ID to 0 in the new user
namespace. Without this synchronization, the child would lose
its capabilities if it performed an execve() with nonzero
user IDs (see the capabilities(7) man page for details of the
- transformation of a process\(aqs capabilities during execve()). */
+ transformation of a process\[aq]s capabilities during execve()). */
if (pipe(args.pipe_fd) == \-1)
err(EXIT_FAILURE, "pipe");
diff --git a/man7/utf-8.7 b/man7/utf-8.7
index dde3b9793..dad953791 100644
--- a/man7/utf-8.7
+++ b/man7/utf-8.7
@@ -7,7 +7,7 @@
.\" 2001-05-11 Markus Kuhn <mgk25@cl.cam.ac.uk>
.\" Update
.\"
-.TH UTF-8 7 2022-10-09 "Linux man-pages 6.02"
+.TH UTF-8 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
UTF-8 \- an ASCII compatible multibyte Unicode encoding
.SH DESCRIPTION
@@ -15,8 +15,8 @@ The Unicode 3.0 character set occupies a 16-bit code space.
The most obvious
Unicode encoding (known as UCS-2)
consists of a sequence of 16-bit words.
-Such strings can contain\(emas part of many 16-bit characters\(embytes
-such as \(aq\e0\(aq or \(aq/\(aq, which have a
+Such strings can contain\[em]as part of many 16-bit characters\[em]bytes
+such as \[aq]\e0\[aq] or \[aq]/\[aq], which have a
special meaning in filenames and other C library function arguments.
In addition, the majority of UNIX tools expect ASCII files and can't
read 16-bit words as characters without major modifications.
@@ -25,7 +25,7 @@ UCS-2 is not a suitable external encoding of Unicode
in filenames, text files, environment variables, and so on.
The ISO 10646 Universal Character Set (UCS),
a superset of Unicode, occupies an even larger code
-space\(em31\ bits\(emand the obvious
+space\[em]31\ bits\[em]and the obvious
UCS-4 encoding for it (a sequence of 32-bit words) has the same problems.
.PP
The UTF-8 encoding of Unicode and UCS
@@ -49,13 +49,13 @@ UTF-8 .
All UCS characters greater than 0x7f are encoded as a multibyte sequence
consisting only of bytes in the range 0x80 to 0xfd, so no ASCII
byte can appear as part of another character and there are no
-problems with, for example, \(aq\e0\(aq or \(aq/\(aq.
+problems with, for example, \[aq]\e0\[aq] or \[aq]/\[aq].
.TP
*
The lexicographic sorting order of UCS-4 strings is preserved.
.TP
*
-All possible 2^31 UCS codes can be encoded using UTF-8.
+All possible 2\[ha]31 UCS codes can be encoded using UTF-8.
.TP
*
The bytes 0xc0, 0xc1, 0xfe, and 0xff are never used in the UTF-8 encoding.
@@ -118,7 +118,7 @@ binary representation, most significant bit first (big-endian).
Only the shortest possible multibyte sequence
which can represent the code number of the character can be used.
.PP
-The UCS code values 0xd800\(en0xdfff (UTF-16 surrogates) as well as 0xfffe and
+The UCS code values 0xd800\[en]0xdfff (UTF-16 surrogates) as well as 0xfffe and
0xffff (UCS noncharacters) should not appear in conforming UTF-8 streams.
According to RFC 3629 no point above U+10FFFF should be used,
which limits characters to four bytes.
diff --git a/man7/uts_namespaces.7 b/man7/uts_namespaces.7
index 951308cbc..0bd278836 100644
--- a/man7/uts_namespaces.7
+++ b/man7/uts_namespaces.7
@@ -3,7 +3,7 @@
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
-.TH uts_namespaces 7 2022-12-04 "Linux man-pages 6.02"
+.TH uts_namespaces 7 2022-12-04 "Linux man-pages 6.03"
.SH NAME
uts_namespaces \- overview of Linux UTS namespaces
.SH DESCRIPTION
diff --git a/man7/vdso.7 b/man7/vdso.7
index 89d5e0dc1..0e5f67f60 100644
--- a/man7/vdso.7
+++ b/man7/vdso.7
@@ -11,7 +11,7 @@
.\" http://www.linuxjournal.com/content/creating-vdso-colonels-other-chicken
.\" http://www.trilithium.com/johan/2005/08/linux-gate/
.\"
-.TH VDSO 7 2022-12-15 "Linux man-pages 6.02"
+.TH vDSO 7 2023-02-10 "Linux man-pages 6.03"
.SH NAME
vdso \- overview of the virtual ELF dynamic shared object
.SH SYNOPSIS
@@ -69,9 +69,9 @@ One frequently used system call is
This system call is called both directly by user-space applications
as well as indirectly by
the C library.
-Think timestamps or timing loops or polling\(emall of these
+Think timestamps or timing loops or polling\[em]all of these
frequently need to know what time it is right now.
-This information is also not secret\(emany application in any
+This information is also not secret\[em]any application in any
privilege mode (root or any unprivileged user) will get the same answer.
Thus the kernel arranges for the information required to answer
this question to be placed in memory the process can access.
@@ -137,7 +137,7 @@ You will frequently find it under the architecture-specific directory:
.PP
.in +4n
.EX
-find arch/$ARCH/ \-name \(aq*vdso*.so*\(aq \-o \-name \(aq*gate*.so*\(aq
+find arch/$ARCH/ \-name \[aq]*vdso*.so*\[aq] \-o \-name \[aq]*gate*.so*\[aq]
.EE
.in
.\"
@@ -213,7 +213,7 @@ __vdso_clock_gettime LINUX_2.6 (exported since Linux 4.1)
\}
.PP
.\" See linux/arch/arm/kernel/entry-armv.S
-.\" See linux/Documentation/arm/kernel_user_helpers.txt
+.\" See linux/Documentation/arm/kernel_user_helpers.rst
Additionally, the ARM port has a code page full of utility functions.
Since it's just a raw page of code, there is no ELF information for doing
symbol lookups or versioning.
@@ -222,7 +222,7 @@ It does provide support for different versions though.
For information on this code page,
it's best to refer to the kernel documentation
as it's extremely detailed and covers everything you need to know:
-.IR Documentation/arm/kernel_user_helpers.txt .
+.IR Documentation/arm/kernel_user_helpers.rst .
.SS aarch64 functions
.\" See linux/arch/arm64/kernel/vdso/vdso.lds.S
The table below lists the symbols exported by the vDSO.
@@ -252,7 +252,7 @@ a fixed location in memory.
User-space applications then call directly into that region.
There is no provision for backward compatibility
beyond sniffing raw opcodes,
-but as this is an embedded CPU, it can get away with things\(emsome of the
+but as this is an embedded CPU, it can get away with things\[em]some of the
object formats it runs aren't even ELF based (they're bFLT/FLAT).
.PP
For information on this code page,
@@ -278,7 +278,7 @@ __kernel_clock_gettime LINUX_2.6 (exported since Linux 4.4)
\}
.SS ia64 (Itanium) functions
.\" See linux/arch/ia64/kernel/gate.lds.S
-.\" Also linux/arch/ia64/kernel/fsys.S and linux/Documentation/ia64/fsys.txt
+.\" Also linux/arch/ia64/kernel/fsys.S and linux/Documentation/ia64/fsys.rst
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
@@ -328,7 +328,7 @@ set_tid_address
\}
.SS parisc (hppa) functions
.\" See linux/arch/parisc/kernel/syscall.S
-.\" See linux/Documentation/parisc/registers
+.\" See linux/Documentation/parisc/registers.rst
The parisc port has a code page with utility functions
called a gateway page.
Rather than use the normal ELF auxiliary vector approach,
@@ -459,12 +459,12 @@ The table below lists the symbols exported by the vDSO.
l l.
symbol version
_
-__kernel_rt_sigreturn LINUX_4.15
-__kernel_gettimeofday LINUX_4.15
-__kernel_clock_gettime LINUX_4.15
-__kernel_clock_getres LINUX_4.15
-__kernel_getcpu LINUX_4.15
-__kernel_flush_icache LINUX_4.15
+__vdso_rt_sigreturn LINUX_4.15
+__vdso_gettimeofday LINUX_4.15
+__vdso_clock_gettime LINUX_4.15
+__vdso_clock_getres LINUX_4.15
+__vdso_getcpu LINUX_4.15
+__vdso_flush_icache LINUX_4.15
.TE
.if t \{\
.in
@@ -588,7 +588,7 @@ __vdso_time LINUX_2.6
.ft P
\}
.SS History
-The vDSO was originally just a single function\(emthe vsyscall.
+The vDSO was originally just a single function\[em]the vsyscall.
In older kernels, you might see that name
in a process's memory map rather than "vdso".
Over time, people realized that this mechanism
@@ -604,9 +604,9 @@ The documents, examples, and source code in the Linux source code tree:
.in +4n
.EX
Documentation/ABI/stable/vdso
-Documentation/ia64/fsys.txt
+Documentation/ia64/fsys.rst
Documentation/vDSO/* (includes examples of using the vDSO)
-find arch/ \-iname \(aq*vdso*\(aq \-o \-iname \(aq*gate*\(aq
+find arch/ \-iname \[aq]*vdso*\[aq] \-o \-iname \[aq]*gate*\[aq]
.EE
.in
diff --git a/man7/vsock.7 b/man7/vsock.7
index dcf54dc3d..3028d0cda 100644
--- a/man7/vsock.7
+++ b/man7/vsock.7
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH vsock 7 2022-10-30 "Linux man-pages 6.02"
+.TH vsock 7 2022-10-30 "Linux man-pages 6.03"
.SH NAME
vsock \- Linux VSOCK address family
.SH SYNOPSIS
diff --git a/man7/x25.7 b/man7/x25.7
index 39e0d066f..09a8ef8fb 100644
--- a/man7/x25.7
+++ b/man7/x25.7
@@ -9,7 +9,7 @@
.\"
.\" $Id: x25.7,v 1.4 1999/05/18 10:35:12 freitag Exp $
.\"
-.TH x25 7 2022-10-30 "Linux man-pages 6.02"
+.TH x25 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
x25 \- ITU-T X.25 / ISO-8208 protocol interface
.SH SYNOPSIS
@@ -29,7 +29,7 @@ X25 sockets can also be used for communication
without an intermediate X.25 network (X.25 DTE-DTE mode) as described
in ISO-8208.
.PP
-Message boundaries are preserved \(em a
+Message boundaries are preserved \[em] a
.BR read (2)
from a socket will
retrieve the same chunk of data as output with the corresponding
@@ -69,7 +69,7 @@ to be interpreted as a null-terminated string.
.I sx25_addr.x25_addr[]
consists of up to 15 (not counting the terminating null byte) ASCII
characters forming the X.121 address.
-Only the decimal digit characters from \(aq0\(aq to \(aq9\(aq are allowed.
+Only the decimal digit characters from \[aq]0\[aq] to \[aq]9\[aq] are allowed.
.SS Socket options
The following X.25-specific socket options can be set by using
.BR setsockopt (2)
@@ -121,7 +121,7 @@ if a reset occurred, data might be lost without notice.
.BR socket (7)
.PP
Jonathan Simon Naylor:
-\(lqThe Re-Analysis and Re-Implementation of X.25.\(rq
+\[lq]The Re-Analysis and Re-Implementation of X.25.\[rq]
The URL is
.UR ftp://ftp.pspt.fi\:/pub\:/ham\:/linux\:/ax25\:/x25doc.tgz
.UE .
diff --git a/man7/xattr.7 b/man7/xattr.7
index e9579d02d..98e84d900 100644
--- a/man7/xattr.7
+++ b/man7/xattr.7
@@ -6,7 +6,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH xattr 7 2022-10-30 "Linux man-pages 6.02"
+.TH xattr 7 2023-02-05 "Linux man-pages 6.03"
.SH NAME
xattr \- Extended attributes
.SH DESCRIPTION
@@ -21,7 +21,7 @@ associated with all inodes in the system (i.e., the
.BR stat (2)
data).
They are often used to provide additional functionality
-to a filesystem\(emfor example, additional security features such as
+to a filesystem\[em]for example, additional security features such as
Access Control Lists (ACLs) may be implemented using extended attributes.
.PP
Users with search access to a file or directory may use
diff --git a/man8/iconvconfig.8 b/man8/iconvconfig.8
index 7f7512497..ef9b7815e 100644
--- a/man8/iconvconfig.8
+++ b/man8/iconvconfig.8
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
-.TH iconvconfig 8 2022-10-30 "Linux man-pages 6.02"
+.TH iconvconfig 8 2022-10-30 "Linux man-pages 6.03"
.SH NAME
iconvconfig \- create iconv module configuration cache
.SH SYNOPSIS
diff --git a/man8/intro.8 b/man8/intro.8
index 4fe161856..5c1ebdda5 100644
--- a/man8/intro.8
+++ b/man8/intro.8
@@ -7,7 +7,7 @@
.\" Modified Sat Jul 24 17:35:48 1993 by Rik Faith (faith@cs.unc.edu)
.\" 2007-10-23 mtk: minor rewrites, and added paragraph on exit status
.\"
-.TH intro 8 2022-10-30 "Linux man-pages 6.02"
+.TH intro 8 2022-10-30 "Linux man-pages 6.03"
.SH NAME
intro \- introduction to administration and privileged commands
.SH DESCRIPTION
diff --git a/man8/ld.so.8 b/man8/ld.so.8
index 25675f86d..4ff3c28e4 100644
--- a/man8/ld.so.8
+++ b/man8/ld.so.8
@@ -4,7 +4,7 @@
.\" Various parts:
.\" Copyright (C) 2007-9, 2013, 2016 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
-.TH LD.SO 8 2022-12-04 "Linux man-pages 6.02"
+.TH ld.so 8 2023-02-05 "Linux man-pages 6.03"
.SH NAME
ld.so, ld\-linux.so \- dynamic linker/loader
.SH SYNOPSIS
@@ -102,13 +102,13 @@ linker option, this step is skipped.
.\"
.SS Dynamic string tokens
In several places, the dynamic linker expands dynamic string tokens:
-.IP \(bu 3
+.IP \[bu] 3
In the environment variables
.BR LD_LIBRARY_PATH ,
.BR LD_PRELOAD ,
and
.BR LD_AUDIT ,
-.IP \(bu
+.IP \[bu]
inside the values of the dynamic section tags
.BR DT_NEEDED ,
.BR DT_RPATH ,
@@ -117,7 +117,7 @@ inside the values of the dynamic section tags
and
.B DT_DEPAUDIT
of ELF binaries,
-.IP \(bu
+.IP \[bu]
in the arguments to the
.B ld.so
command line options
@@ -126,7 +126,7 @@ command line options
and
.B \-\-preload
(see below), and
-.IP \(bu
+.IP \[bu]
in the filename arguments to the
.BR dlopen (3)
and
@@ -144,7 +144,7 @@ could be compiled with
.IP
.in +4n
.EX
-gcc \-Wl,\-rpath,\(aq$ORIGIN/../lib\(aq
+gcc \-Wl,\-rpath,\[aq]$ORIGIN/../lib\[aq]
.EE
.in
.IP
@@ -296,15 +296,15 @@ entry in the auxiliary vector (see
.BR getauxval (3))
has a nonzero value.
This entry may have a nonzero value for various reasons, including:
-.IP \(bu 3
+.IP \[bu] 3
The process's real and effective user IDs differ,
or the real and effective group IDs differ.
This typically occurs as a result of executing
a set-user-ID or set-group-ID program.
-.IP \(bu
+.IP \[bu]
A process with a non-root user ID executed a binary that
conferred capabilities to the process.
-.IP \(bu
+.IP \[bu]
A nonzero value may have been set by a Linux Security Module.
.\"
.SS Environment variables
@@ -388,7 +388,7 @@ subdirectory below the directory containing the program to be executed:
.IP
.in +4n
.EX
-$ \fBLD_LIBRARY_PATH=\(aq$ORIGIN/$LIB\(aq prog\fP
+$ \fBLD_LIBRARY_PATH=\[aq]$ORIGIN/$LIB\[aq] prog\fP
.EE
.in
.IP
@@ -474,9 +474,9 @@ and there is no support for escaping the separator.
is ignored in secure-execution mode.
.IP
The dynamic linker will notify the audit
-shared objects at so-called auditing checkpoints\(emfor example,
+shared objects at so-called auditing checkpoints\[em]for example,
loading a new shared object, resolving a symbol,
-or calling a symbol from another shared object\(emby
+or calling a symbol from another shared object\[em]by
calling an appropriate function within the audit shared object.
For details, see
.BR rtld\-audit (7).
diff --git a/man8/ldconfig.8 b/man8/ldconfig.8
index 0c3b20d76..aec7492c1 100644
--- a/man8/ldconfig.8
+++ b/man8/ldconfig.8
@@ -5,26 +5,32 @@
.\"
.\" Modified, 6 May 2002, Michael Kerrisk, <mtk.manpages@gmail.com>
.\" Change listed order of /usr/lib and /lib
-.TH LDCONFIG 8 2022-10-09 "Linux man-pages 6.02"
+.TH ldconfig 8 2023-01-07 "Linux man-pages 6.03"
.SH NAME
ldconfig \- configure dynamic linker run-time bindings
.SH SYNOPSIS
-.BR /sbin/ldconfig " [" \-nNvXV "] [" \-f " \fIconf\fP] [" \-C " \fIcache\fP] [" \-r " \fIroot\fP]"
-.IR directory \...
-.PD 0
-.PP
-.PD
-.B /sbin/ldconfig
+.SY /sbin/ldconfig
+.\" TODO?: -c, --format, -i, --ignore-aux-cache, --print-cache,
+.\" --verbose, -V, --version, -?, --help, --usage
+.RB [ \-nNvVX ]
+.RB [ \-C\~\c
+.IR cache ]
+.RB [ \-f\~\c
+.IR conf ]
+.RB [ \-r\~\c
+.IR root ]
+.IR directory \~.\|.\|.
+.YS
+.SY /sbin/ldconfig
.B \-l
.RB [ \-v ]
-.IR library \...
-.PD 0
-.PP
-.PD
-.B /sbin/ldconfig
+.IR library \~.\|.\|.
+.YS
+.SY /sbin/ldconfig
.B \-p
+.YS
.SH DESCRIPTION
-.B ldconfig
+.B \%ldconfig
creates the necessary links and cache to the most recent shared
libraries found in the directories specified on the command line,
in the file
@@ -32,66 +38,44 @@ in the file
and in the trusted directories,
.I /lib
and
-.I /usr/lib
-(on some 64-bit architectures such as x86-64,
+.IR /usr/lib .
+On some 64-bit architectures such as x86-64,
.I /lib
and
.I /usr/lib
-are the trusted directories for 32-bit libraries, while
+are the trusted directories for 32-bit libraries,
+while
.I /lib64
and
.I /usr/lib64
-are used for 64-bit libraries).
+are used for 64-bit libraries.
.PP
The cache is used by the run-time linker,
.I ld.so
or
.IR ld\-linux.so .
-.B ldconfig
+.B \%ldconfig
checks the header and filenames of the libraries it encounters when
determining which versions should have their links updated.
-.PP
-.B ldconfig
-will attempt to deduce the type of ELF libraries (i.e., libc5 or libc6/glibc)
-based on what C libraries, if any, the library was linked against.
-.\" The following sentence looks suspect
-.\" (perhaps historical cruft) -- MTK, Jul 2005
-.\" Therefore, when making dynamic libraries,
-.\" it is wise to explicitly link against libc (use \-lc).
-.PP
-Some existing libraries do not contain enough information
-to allow the deduction of their type.
-Therefore, the
-.I /etc/ld.so.conf
-file format allows the specification of an expected type.
-This is used
-.I only
-for those ELF libraries which we can not work out.
-The format
-is "dirname=TYPE", where TYPE can be libc4, libc5, or libc6.
-(This syntax also works on the command line.)
-Spaces are
-.I not
-allowed.
-Also see the
-.B \-p
-option.
-.B ldconfig
+.\" Support for libc4 and libc5 dropped in
+.\" 8ee878592c4a642937152c8308b8faef86bcfc40 (2022-07-14) as "obsolete
+.\" for over twenty years".
+.B \%ldconfig
should normally be run by the superuser as it may require write
permission on some root owned directories and files.
.PP
-Note that
-.B ldconfig
-will only look at files that are named
+.B \%ldconfig
+will look only at files that are named
.I lib*.so*
(for regular shared objects) or
.I ld\-*.so*
(for the dynamic loader itself).
Other files will be ignored.
Also,
-.B ldconfig
-expects a certain pattern to how the symlinks are set up, like this
-example, where the middle file
+.B \%ldconfig
+expects a certain pattern to how the symbolic links are set up,
+like this example,
+where the middle file
.RB ( libfoo.so.1
here) is the SONAME for the library:
.PP
@@ -105,46 +89,53 @@ Failure to follow this pattern may result in compatibility issues
after an upgrade.
.SH OPTIONS
.TP
-.BR \-c " \fIfmt\fP, " \-\-format=\fIfmt\fP
+.BI \-c\~ fmt
+.TQ
+.BI \-\-format= fmt
(Since glibc 2.2)
-Cache format to use:
-.IR old ,
-.IR new ,
+.\" commit 45eca4d141c047950db48c69c8941163d0a61fcd
+Use cache format
+.IR fmt ,
+which is one of
+.BR old ,
+.BR new ,
or
-.IR compat .
-Since glibc 2.32, the default is
-.IR new .
+.BR \%compat .
+Since glibc 2.32,
+the default is
+.BR new .
.\" commit cad64f778aced84efdaa04ae64f8737b86f063ab
-Before that, it was
-.IR compat .
+Before that,
+it was
+.BR \%compat .
.TP
-.BI "\-C " cache
+.BI \-C\~ cache
Use
.I cache
instead of
.IR /etc/ld.so.cache .
.TP
-.BI "\-f " conf
+.BI \-f\~ conf
Use
.I conf
instead of
.IR /etc/ld.so.conf .
-.\" FIXME glibc 2.7 added -i
.TP
-.BR \-i ", " \-\-ignore\-aux\-cache
+.B \-i
+.TQ
+.B \-\-ignore\-aux\-cache
(Since glibc 2.7)
-.\" commit 27d9ffda17df4d2388687afd12897774fde39bcc
+.\" commit 27d9ffda17df4d2388687afd12897774fde39bcc
Ignore auxiliary cache file.
.TP
.B \-l
(Since glibc 2.2)
-Library mode.
-Manually link individual libraries.
-Intended for use by experts only.
+Interpret each operand as a libary name and configure its links.
+Intended for use only by experts.
.TP
.B \-n
-Process only the directories specified on the command line.
-Don't process the trusted directories,
+Process only the directories specified on the command line;
+don't process the trusted directories,
nor those specified in
.IR /etc/ld.so.conf .
Implies
@@ -154,31 +145,40 @@ Implies
Don't rebuild the cache.
Unless
.B \-X
-is also specified, links are still updated.
+is also specified,
+links are still updated.
.TP
-.BR \-p ", " \-\-print\-cache
+.B \-p
+.TQ
+.B \-\-print\-cache
Print the lists of directories and candidate libraries stored in
the current cache.
.TP
-.BI "\-r " root
+.BI \-r\~ root
Change to and use
.I root
as the root directory.
.TP
-.BR \-v ", " \-\-verbose
+.B \-v
+.TQ
+.B \-\-verbose
Verbose mode.
-Print current version number, the name of each directory as it
-is scanned, and any links that are created.
+Print current version number,
+the name of each directory as it is scanned,
+and any links that are created.
Overrides quiet mode.
.TP
-.BR \-V ", " \-\-version
+.B \-V
+.TQ
+.B \-\-version
Print program version.
.TP
.B \-X
Don't update links.
Unless
.B \-N
-is also specified, the cache is still rebuilt.
+is also specified,
+the cache is still rebuilt.
.SH FILES
.\" FIXME Since glibc-2.3.4, "include" directives are supported in ld.so.conf
.\"
@@ -186,14 +186,15 @@ is also specified, the cache is still rebuilt.
.PD 0
.TP
.I /lib/ld.so
-Run-time linker/loader.
+is the run-time linker/loader.
.TP
.I /etc/ld.so.conf
-File containing a list of directories, one per line,
+contains a list of directories,
+one per line,
in which to search for libraries.
.TP
.I /etc/ld.so.cache
-File containing an ordered list of libraries found in the directories
+contains an ordered list of libraries found in the directories
specified in
.IR /etc/ld.so.conf ,
as well as those found in the trusted directories.
diff --git a/man8/nscd.8 b/man8/nscd.8
index a1c46e610..5e68f8f52 100644
--- a/man8/nscd.8
+++ b/man8/nscd.8
@@ -6,7 +6,7 @@
.\" 2008-12-05 Petr Baudis <pasky@suse.cz>
.\" Rewrite the NOTES section to reflect modern reality
.\"
-.TH nscd 8 2022-10-30 "Linux man-pages 6.02"
+.TH nscd 8 2022-10-30 "Linux man-pages 6.03"
.SH NAME
nscd \- name service cache daemon
.SH DESCRIPTION
diff --git a/man8/sln.8 b/man8/sln.8
index 456817a9e..46eb2b167 100644
--- a/man8/sln.8
+++ b/man8/sln.8
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH SLN 8 2022-10-09 "Linux man-pages 6.02"
+.TH sln 8 2023-01-07 "Linux man-pages 6.03"
.SH NAME
sln \- create symbolic links
.SH SYNOPSIS
diff --git a/man8/tzselect.8 b/man8/tzselect.8
index 12a6a199f..1ba3f5d90 100644
--- a/man8/tzselect.8
+++ b/man8/tzselect.8
@@ -2,7 +2,7 @@
.\" This page is in the public domain
.\" %%%LICENSE_END
.\"
-.TH tzselect 8 2022-10-30 "Linux man-pages 6.02"
+.TH tzselect 8 2022-10-30 "Linux man-pages 6.03"
.SH NAME
tzselect \- select a timezone
.SH SYNOPSIS
diff --git a/man8/zdump.8 b/man8/zdump.8
index abbead6ef..27d8310ca 100644
--- a/man8/zdump.8
+++ b/man8/zdump.8
@@ -13,10 +13,10 @@ zdump \- timezone dumper
.I timezone
\&... ]
.SH DESCRIPTION
-.ie '\(lq'' .ds lq \&"\"
-.el .ds lq \(lq\"
-.ie '\(rq'' .ds rq \&"\"
-.el .ds rq \(rq\"
+.ie '\[lq]'' .ds lq \&"\"
+.el .ds lq \[lq]\"
+.ie '\[rq]'' .ds rq \&"\"
+.el .ds rq \[rq]\"
.de q
\\$3\*(lq\\$1\*(rq\\$2
..
diff --git a/man8/zic.8 b/man8/zic.8
index 79b06ae7c..99e28f50e 100644
--- a/man8/zic.8
+++ b/man8/zic.8
@@ -13,10 +13,10 @@ zic \- timezone compiler
.I filename
\&... ]
.SH DESCRIPTION
-.ie '\(lq'' .ds lq \&"\"
-.el .ds lq \(lq\"
-.ie '\(rq'' .ds rq \&"\"
-.el .ds rq \(rq\"
+.ie '\[lq]'' .ds lq \&"\"
+.el .ds lq \[lq]\"
+.ie '\[rq]'' .ds rq \&"\"
+.el .ds rq \[rq]\"
.de q
\\$3\*(lq\\$1\*(rq\\$2
..
@@ -293,7 +293,7 @@ nor
.q + .
To allow for future extensions,
an unquoted name should not contain characters from the set
-.q !$%&'()*,/:;<=>?@[\e]\(ha\`{|}\(ti .
+.q !$%&'()*,/:;<=>?@[\e]\[ha]\`{|}\[ti] .
.TP
.B FROM
Gives the first year in which the rule applies.
diff --git a/scripts/LinuxManBook/BuildLinuxMan.pl b/scripts/LinuxManBook/BuildLinuxMan.pl
new file mode 100644
index 000000000..7d9605734
--- /dev/null
+++ b/scripts/LinuxManBook/BuildLinuxMan.pl
@@ -0,0 +1,249 @@
+#!/usr/bin/perl -w
+#
+# BuildLinuxMan.pl : Build Linux manpages book
+# Deri James : 15 Dec 2022
+#
+# Params:-
+#
+# $1 = Directory holding the man pages
+#
+# (C) Copyright 2022, Deri James
+#
+# This program 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 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details
+# (http://www.gnu.org/licenses/gpl-2.0.html).
+#
+
+use strict;
+
+my $dir=shift || '.';
+my @aliases=`egrep -l '^\\.so' $dir/man*/*`;
+my %alias;
+my %target;
+my $inTS=0;
+my $inBlock=0;
+
+my %Sections=
+(
+ "1" => "General Commands Manual",
+ "2" => "System Calls Manual",
+ "2type" => "System Calls Manual (types)",
+ "3" => "Library Functions Manual",
+ "3const" => "Library Functions Manual (constants)",
+ "3head" => "Library Functions Manual (headers)",
+ "3type" => "Library Functions Manual (types)",
+ "4" => "Kernel Interfaces Manual",
+ "5" => "File Formats Manual",
+ "6" => "Games Manual",
+ "7" => "Miscellaneous Information Manual",
+ "8" => "System Manager's Manual",
+ "9" => "Kernel Developer's Manual",
+);
+
+my $Section='';
+
+LoadAlias();
+BuildBook();
+
+my $cmdstring="-Tpdf -k -pet -M. -F. -mandoc -manmark -dpaper=a4 -P-pa4 -rC1 -rCHECKSTYLE=3";
+
+system("groff -Tpdf -ms LMBfront.t -Z > LMBfront.Z");
+system("groff -z -dPDF.EXPORT=1 -dLABEL.REFS=1 T $cmdstring 2>&1 | LC_ALL=C grep '^\\. *ds' | groff -Tpdf $cmdstring - T -Z > LinuxManBook.Z");
+system("./gropdf -F. LMBfront.Z LinuxManBook.Z > LinuxManBook.pdf");
+unlink "LinuxManBook.Z","LMBfront.Z"; # If you want to clean up
+
+# Aliases are the man pages which .so another man page, so build a hash of them so
+# that when we are processing referenced man page we can add the target for the
+# bookmark.
+
+sub LoadAlias
+{
+ foreach my $fn (@aliases)
+ {
+ chomp($fn);
+ my (@pth)=split('/',$fn);
+ my $nm=pop(@pth);
+ my $bkmark="$1_$2" if $nm=~m/(.*)\.(\w+)/;
+
+ if (open(F,"<$fn"))
+ {
+ while (<F>)
+ {
+ next if m/^\.\\"/;
+
+ if (m/^.so\s+(man\w+\/(.+)\.(.+?))$/)
+ {
+ $alias{$bkmark}=["$2_$3",$2,$3];
+ push(@{$target{"$2_$3"}},$bkmark);
+ last;
+ }
+ else
+ {
+ print STDERR "Alias fail: $fn\n";
+ }
+ }
+
+ close(F);
+ }
+ else
+ {
+ print STDERR "Open fail: $fn\n";
+ }
+ }
+}
+
+sub BuildBook
+{
+ open(BK,">T");
+
+ foreach my $fn (sort sortman glob("$dir/man*/*"))
+ {
+ my ($nm,$sec,$srt)=GetNmSec($fn);
+
+ my $bkmark="$1_$2" if $nm=~m/(.*)\.(\w+)/;
+ my $title= "$1\\($2\\)";
+
+# If this is an alias, just add it to the outline panel.
+
+ if (exists($alias{$bkmark}))
+ {
+ print BK ".eo\n.device ps:exec [/Dest /$alias{$bkmark}->[0] /Title ($title) /Level 2 /OUT pdfmark\n.ec\n";
+ print BK ".if dPDF.EXPORT .tm .ds pdf:look($bkmark) $alias{$bkmark}->[1]($alias{$bkmark}->[2])\n";
+ next;
+ }
+
+ print BK ".\\\" >>>>>> $1($2) <<<<<<\n";
+
+ if (open(F,'<',$fn))
+ {
+ while (<F>)
+ {
+ if (m/^\.\\"/)
+ {
+ print BK $_;
+ next;
+ }
+
+ chomp;
+
+# This code is to determine whether we are within a tbl block and in a text block
+# T{ and T}. This is fudge code particularly for the syscalls(7) page.
+
+ $inTS=1 if m/\.TS/;
+ $inTS=0,$inBlock=0 if m/\.TE/;
+
+ s/\r$//; # In case edited under windows i.e. CR/LF
+ s/\s+$//;
+ next if !$_;
+# s/^\s+//;
+
+ if (m/^\.BR\s+([-\w\\.]+)\s+\((.+?)\)(.*)/)
+ {
+ my $bkmark="$1";
+ my $sec=$2;
+ my $after=$3;
+ my $dest=$bkmark;
+ $dest=~s/\\-/-/g;
+ $_=".MR \"$bkmark\" \"$sec\" \"$after\" \"$dest\"";
+ }
+
+ s/^\.BI \\fB/.BI /;
+ s/^\.BR\s+(\S+)\s*$/.B $1/;
+ s/^\.BI\s+(\S+)\s*$/.B $1/;
+ s/^\.IR\s+(\S+)\s*$/.I $1/;
+
+# Fiddling for syscalls(7) :-(
+
+ if ($inTS)
+ {
+ my @cols=split(/\t/,$_);
+
+ foreach my $c (@cols)
+ {
+ $inBlock+=()=$c=~m/T\{/g;
+ $inBlock-=()=$c=~m/T\}/g;
+
+ my $mtch=$c=~s/\s*\\fB([-\w.]+)\\fP\((\w+)\)/\n.MR $1 $2 \\c\n/g;
+ $c="T{\n${c}\nT}" if $mtch and !$inBlock;
+ }
+
+ $_=join("\t",@cols);
+ s/\n\n/\n/g;
+ }
+
+ if (m/^\.TH\s+([-\w\\.]+)\s+(\w+)/)
+ {
+
+ # if new section add top level bookmark
+
+ if ($sec ne $Section)
+ {
+ print BK ".nr PDFOUTLINE.FOLDLEVEL 1\n.fl\n";
+ print BK ".pdfbookmark 1 $Sections{$sec}\n";
+ print BK ".nr PDFOUTLINE.FOLDLEVEL 2\n";
+ $Section=$sec;
+ }
+
+ print BK "$_\n";
+
+# Add a level two bookmark. We don't set it in the TH macro since the name passed
+# may be different from the filename, i.e. file = unimplemented.2, TH = UNIMPLEMENTED 2
+
+ print BK ".pdfbookmark -T $bkmark 2 $1($2)\n";
+
+# If this page is referenced by an alias plant a destination label for the alias.
+
+ if (exists($target{$bkmark}))
+ {
+ foreach my $targ (@{$target{$bkmark}})
+ {
+ print BK ".pdf*href.set $targ\n";
+ }
+ }
+
+ next;
+ }
+
+ print BK "$_\n";
+
+ }
+
+ close(F);
+
+ }
+ }
+
+ close(BK);
+}
+
+sub GetNmSec
+{
+ my (@pth)=split('/',shift);
+ my $nm=pop(@pth);
+ my $sec=substr(pop(@pth),3);
+ my $srt=$nm;
+ $srt=~s/^_+//;
+ $srt="$sec/$srt";
+ return($nm,$sec,$srt);
+}
+
+sub sortman
+{
+# Sort - ignore case but frig it so that intro is the first entry.
+
+ my (undef,$s1,$c)=GetNmSec($a);
+ my (undef,$s2,$d)=GetNmSec($b);
+
+ my $cmp=$s1 cmp $s2;
+ return $cmp if $cmp;
+ return -1 if ($c=~m/\/intro/ and $d!~m/\/intro/);
+ return 1 if ($d=~m/\/intro/ and $c!~m/\/intro/);
+ return (lc($c) cmp lc($d));
+}
diff --git a/scripts/LinuxManBook/LMBfront.t b/scripts/LinuxManBook/LMBfront.t
new file mode 100644
index 000000000..705c6632f
--- /dev/null
+++ b/scripts/LinuxManBook/LMBfront.t
@@ -0,0 +1,38 @@
+.ig
+ front.t
+..
+.de Hl
+.br
+\l'\\n[.l]u-\\n[.i]u\&\\$1'
+.br
+..
+.ps 10
+.vs 12
+.nr PS 10
+.nr VS 12
+.nr SS_prefix 1v
+.nr do-page 0
+.Nh 0 0
+.\" .so utp.mac
+.\" .utp
+\Z@\D't 8p'@
+.Hl
+\D't 0'
+.sp .6i
+.DS R
+.ps 52
+\m[maroon]GNU/Linux\m[]
+.sp 18p
+.ps 16
+\f[BMB]THE MAN PAGES BOOK\fP
+.sp 30p
+.sp 1.4i
+.ps 12
+\f[HB]Maintainers:\fP
+.sp 2p
+.ps 10
+\f[HB]Alejandro Colomar <alx@kernel.org> 2020 - present (5.09 - HEAD)
+Michael Kerrisk <mtk.manpages@gmail.com> 2004 - 2021 (2.00 - 5.13)
+Andries Brouwer <aeb@cwi.nl> 1995 - 2004 (1.6 - 1.70)
+Rik Faith 1993 - 1995 \0(1.0 - 1.5)\fP
+.DE
diff --git a/scripts/LinuxManBook/an-ext.tmac b/scripts/LinuxManBook/an-ext.tmac
new file mode 100644
index 000000000..e2f5c48f9
--- /dev/null
+++ b/scripts/LinuxManBook/an-ext.tmac
@@ -0,0 +1,282 @@
+.\" groff extension macros for man(7) package
+.\"
+.\" Copyright (C) 2007-2022 Free Software Foundation, Inc.
+.\"
+.\" Written by Eric S. Raymond <esr@thyrsus.com>
+.\" Werner Lemberg <wl@gnu.org>
+.\" G. Branden Robinson <g.branden.robinson@gmail.com>
+.\"
+.\" You may freely use, modify and/or distribute this file.
+.\"
+.\" The code below provides extension macros for the 'man' macro
+.\" package. Care has been taken to make the code portable; groff
+.\" extensions are properly hidden so that all troff implementations can
+.\" use it without changes.
+.\"
+.\" With groff, this file is sourced by the 'man' macro package itself.
+.\" Man page authors who are concerned about portability might add the
+.\" used macros directly to the prologue of the man page(s).
+.
+.
+.\" Convention: Auxiliary macros and registers start with 'm' followed
+.\" by an uppercase letter or digit.
+.
+.
+.\" Protect against being sourced twice.
+.nr mZ +1
+.if \n(mZ>1 \
+. nx
+.
+.\" Define this to your implementation's constant-width typeface.
+.ds mC CW
+.
+.\" In AT&T troff, there was no register exposing the hyphenation mode,
+.\" and no way to save and restore it. Set this to a reasonable value
+.\" for your implementation and preference.
+.ie !\n(.g \
+. nr mJ 1
+.el \
+. do nr mJ \n[.hy]
+.
+.\" Check if we're using grohtml or grotty, and therefore support URIs.
+.nr mH 0
+.nr mY 0
+.nr mU 0
+.if \n(.g \{\
+. if '\*(.T'html' \
+. nr mH 1
+. if '\*(.T'ascii' \
+. nr mY 1
+. if '\*(.T'cp1047' \
+. nr mY 1
+. if '\*(.T'latin1' \
+. nr mY 1
+. if '\*(.T'utf8' \
+. nr mY 1
+. nr mU \n(mH+\n(mY
+.\}
+.
+.
+.\" groff has glyph entities for angle brackets.
+.ie \n(.g \{\
+. ds mL \(la\"
+. ds mR \(ra\"
+.\}
+.el \{\
+. ds mL <\"
+. ds mR >\"
+.\}
+.
+.nr mS 0
+.
+.
+.\" Declare start of command synopsis. Sets up hanging indentation.
+.de SY
+. ie !\\n(mS \{\
+. nh
+. nr mS 1
+. nr mA \\n(.j
+. ad l
+. nr mI \\n(.i
+. \}
+. el \{\
+. br
+. ns
+. \}
+.
+. nr mT \w'\fB\\$1\fP\ '
+. HP \\n(mTu
+. B "\\$1"
+..
+.
+.
+.\" End of command synopsis. Restores adjustment.
+.de YS
+. in \\n(mIu
+. ad \\n(mA
+. hy \\n(mJ
+. nr mS 0
+..
+.
+.\" Prepare link text for mail/web hyperlinks. `MT` and `UR` call this.
+.de mV
+. ds m1 \\$1\"
+. \" Save the indentation and line length. We want the diversion to
+. \" format as if it has an indentation of zero (that comes for free
+. \" when we switch environments), but we want the line length reduced
+. \" by the amount of indentation that obtains when we output it.
+. nr mK \\n(.l
+. nr mI \\n(.i
+. \" We can only hyperlink if we're not in a diversion.
+. nr mD 0
+. if '\\n(.z'' .nr mD 1
+. if \\n(mD&\\nU&\\n(mU \{\
+. \" Start diversion in a new environment.
+. do ev link-text-env
+. do di link-text-div
+. ll (\\n(mKu-\\n(mIu)
+. \}
+. rr mK
+..
+.
+.\" Start URL.
+.de UR
+. mV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.
+.
+.\" End URL.
+.de UE
+. ie \\n(mD&\\nU&\\n(mU \{\
+. br
+. di
+. ev
+.
+. \" Has there been at least one input line of hyperlinked text?
+. ie \\n(dn \{\
+. if \\n(mH \
+\X^html:<a href="\\*(m1">^\c
+. if \\n(mY \
+\X^tty: link \\*(m1^\c
+. \" Strip off the final newline of the diversion and emit it.
+. do chop link-text-div
+. do link-text-div
+\c
+. if \\n(mH \
+\X^html:</a>^\c
+. if \\n(mY \
+\X^tty: link^\c
+. \}
+. el \{\
+. if \\n(mH \
+\X^html:<a href="\\*(m1">\\*(m1</a>^\c
+. if \\n(mY \
+\X^tty: link \\*(m1^\\*(m1\X^tty: link^\c
+. \}
+\&\\$*\"
+. \}
+. el \{\
+. nh
+\\*(mL\\*(m1\\*(mR\\$1
+. do shift
+. ie \n(.g .if \\n(.$ \&\\$*\"
+. el .if \\n(.$>1 \&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9\"
+. hy \\n(mJ
+. \}
+. rr mD
+..
+.
+.
+.\" Start email address.
+.de MT
+. mV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.
+.
+.\" End email address.
+.de ME
+. ie \\n(mD&\\nU&\\n(mU \{\
+. br
+. di
+. ev
+.
+. \" Has there been at least one input line of hyperlinked text?
+. ie \\n(dn \{\
+. if \\n(mH \
+\X^html:<a href="mailto:\\*(m1">^\c
+. if \\n(mY \
+\X^tty: link mailto:\\*(m1^\c
+. \" Strip off the final newline of the diversion and emit it.
+. do chop link-text-div
+. do link-text-div
+\c
+. if \\n(mH \
+\X^html:</a>^\c
+. if \\n(mY \
+\X^tty: link^\c
+. \}
+. el \{\
+. if \\n(mH \
+\X^html:<a href="mailto:\\*(m1">\\*(m1</a>^\c
+. if \\n(mY \
+\X^tty: link mailto:\\*(m1^\\*(m1\X^tty: link^\c
+. \}
+\&\\$*\"
+. \}
+. el \{\
+. nh
+\\*(mL\\*(m1\\*(mR\\$1
+. do shift
+. ie \n(.g .if \\n(.$ \&\\$*\"
+. el .if \\n(.$>1 \&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9\"
+. hy \\n(mJ
+. \}
+. rr mD
+..
+.
+.
+.\" Set a man page cross reference.
+.\" .MR page-topic page-section [trailing-text]
+.if \n(.g .ig
+.de MR
+. nh
+. ie \\n(.$=1 \
+. I \\$1
+. el \
+. IR \\$1 (\\$2)\\$3
+. hy \\n(mJ
+..
+.
+.
+.\" Continuation line for .TP header.
+.de TQ
+. br
+. ns
+. TP \\$1\" no doublequotes around argument!
+..
+.
+.
+.\" Start example.
+.if \n(.g .ig
+.de EX
+. br
+. if !\\n(mX \{\
+. nr mF \\n(.f
+. nr mP \\n(PD
+. nr PD 1v
+. nf
+. ft \\*(mC
+. nr mX 1
+. \}
+..
+.
+.
+.\" End example.
+.if \n(.g .ig
+.de EE
+. br
+. if \\n(mX \{\
+. ft \\n(mF
+. nr PD \\n(mP
+. fi
+. nr mX 0
+. \}
+..
+.
+.
+.\" Start display.
+.de DS
+. \" XXX to be written
+..
+.
+.
+.\" End display.
+.de DE
+. \" XXX to be written
+..
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/scripts/LinuxManBook/an.tmac b/scripts/LinuxManBook/an.tmac
new file mode 100644
index 000000000..298fd8ac2
--- /dev/null
+++ b/scripts/LinuxManBook/an.tmac
@@ -0,0 +1,1427 @@
+.\" groff implementation of man(7) package
+.\"
+.\" Copyright (C) 1989-2022 Free Software Foundation, Inc.
+.\" Written by James Clark (jjc@jclark.com)
+.\" Enhanced by: Werner Lemberg <wl@gnu.org>
+.\" Larry Kollar <kollar@alltel.net>
+.\" G. Branden Robinson <g.branden.robinson@gmail.com>
+.\"
+.\" Thanks to Deri James for illustrating PDF bookmark features.
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff 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.
+.\"
+.\" groff 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
+.\" <http://www.gnu.org/licenses/>.
+.
+.
+.\" Put site additions in the file man.local, loaded near the end of
+.\" this file. To add things to TH, use '.am1 TH'.
+.
+.if !\n(.g \
+. ab groff man macros require groff extensions; aborting
+.
+.do if d TH .nx
+.
+.do nr *groff_an_tmac_C \n[.cp]
+.cp 0
+.
+.\" Package-internal names start with "an-" and are subject to change,
+.\" such as migration to "an*" (in progress).
+.
+.\" Define a string for use in diagnostic messages.
+.ds an an.tmac\"
+.
+.\" We use the .stringup request from groff 1.23, but nothing breaks if
+.\" it is undefined; the output is unchanged in appearance from earlier
+.\" releases.
+.if (\n[.x]\n[.y] < 118) \{\
+. ds an-msg \*[an]: groff man macros require groff 1.18 or later,\"
+. as an-msg " but found groff \n[.x].\n[.y]; aborting\"
+. ab \*[an-msg]
+.\}
+.
+.\" === Define macros. ===
+.\"
+.\" Macros that are part of the external interface (TH, SH, P, etc.) or
+.\" that are called by traps of any kind must be defined with `de1`
+.\" because they might be called from a context where compatibility mode
+.\" is enabled. For other macros, `de` suffices.
+.
+.de an-warn
+. tm \*[an]:\\n[.F]:\\n[.c]: warning: \\$*
+..
+.
+.de an-style-warn
+. if \\n[CHECKSTYLE] \
+. tm \*[an]:\\n[.F]:\\n[.c]: style: \\$*
+..
+.
+.de an-deprecation-warn
+. if (\\n[CHECKSTYLE] > 1) \
+. an-style-warn use of deprecated macro: .\\$0
+..
+.
+.de1 an-blank-line-trap
+. if (\\n[CHECKSTYLE] > 2) \
+. an-style-warn blank line in input
+. sp
+..
+.
+.de1 an-leading-space-trap
+. if (\\n[CHECKSTYLE] > 2) \
+. if \\n[.u] \
+. an-style-warn \\n[lsn] leading space(s) on input line
+. br
+. nop \h'\\n[lss]u'\c
+..
+.
+.\" Define alternate requests to handle continuous rendering.
+.\"
+.\" This .ne replacement avoids page breaks; instead, the page length is
+.\" increased to the necessary amount (this is needed for tables).
+.de an-ne
+. ie \\n[.$] .nr an-amount (v;\\$*)
+. el .nr an-amount 1v
+. if (\\n[an-amount] >= \\n[.t]) \
+. pl +(\\n[an-amount]u - \\n[.t]u + 1v)
+. rr an-amount
+..
+.
+.\" This .bp replacement for continuous rendering mode adjusts the page
+.\" length to the current position so that no empty lines are inserted.
+.de an-bp
+. pl \\n[nl]u
+..
+.
+.\" We need an end-of-input macro to flush any pending output line and
+.\" write the footer for the final man page rendered. We can also be
+.\" called by andoc when switching to an mdoc(7) page, irrespective of
+.\" continuous rendering mode.
+.de1 an-end
+. if !r an-TH-was-called .return
+. if \\n[cR] \{\
+. \" We might have a pending output line that is not yet broken, and
+. \" also be 1v from the bottom of the page. If we break (or flush)
+. \" the output line now, the page will get ejected afterward and
+. \" troff will exit because we're in an end-of-input macro--our
+. \" footer will never be output. So, if that is the case, further
+. \" extend the page length by 1v.
+. if ((\\n[.p] - \\n[nl]) <= \\n[.V]) .pl +1v
+. br
+. pl +1v
+. sp 1v
+. an-footer
+. \" If we're processing multiple documents and have started a new
+. \" one, draw a line between this footer and the next header.
+. if !'\\n[.F]'' \{\
+. pl +1v
+. nf
+. ti 0
+\D'l \\n[LL]u 0'
+. fi
+. \}
+. \}
+. rr an-TH-was-called
+. ch an-header
+. bp
+..
+.
+.\" Move macros into place for continuous rendering.
+.de an-set-up-continuous-rendering
+. rn ne an-real-ne
+. rn bp an-real-bp
+. rn an-ne ne
+. rn an-bp bp
+. em an-end
+..
+.
+.de an*reset-hyphenation-mode
+. ie \\n[HY] \{\
+. \" No page breaks occur in continuous rendering.
+. ie \\n[cR] \
+. nr an*hyphenation-mode \\n[\\*[locale]*hyphenation-mode-base]
+. el \
+. nr an*hyphenation-mode \\n[\\*[locale]*hyphenation-mode-trap]
+. \}
+. el \
+. nr an*hyphenation-mode 0
+. hy \\n[an*hyphenation-mode]
+..
+.
+.de an-reset-tab-stops
+. ta T .5i
+..
+.
+.de an-reset-paragraph-spacing
+. ie \\n[.$] .nr PD (v;\\$1)
+. el .nr PD (.4v >? \n[.V])
+..
+.
+.de an-reset-margin-and-inset-level
+. nr an-inset-level 1
+. nr an-margin \\n[IN]
+. nr an-saved-margin1 \\n[IN]
+. nr an-prevailing-indent \\n[IN]
+. nr an-saved-prevailing-indent1 \\n[IN]
+..
+.
+.\" Cause a page transition to a new man(7) document. Clear the page
+.\" header trap so it is not sprung with stale information. Update the
+.\" page number depending on the C (consecutive numbering) register.
+.de an-start-new-document
+. ch an-header
+. ie \\n[C] .bp (\\n[%] + 1) \" argument NOT redundant before page 1
+. el .bp 1
+..
+.
+.\" Localize manual section titles for English.
+.de an*localize-strings
+. ds an*section1 General Commands Manual\"
+. ds an*section2 System Calls Manual\"
+. ds an*section3 Library Functions Manual\"
+. ds an*section4 Kernel Interfaces Manual\"
+. ds an*section5 File Formats Manual\"
+. ds an*section6 Games Manual\"
+. ds an*section7 Miscellaneous Information Manual\"
+. ds an*section8 System Manager's Manual\"
+. ds an*section9 Kernel Developer's Manual\"
+..
+.\" Remove '\%' from string used as bookmark destination
+.de an*cln
+. ds \\$1
+. als an*cln:res \\$1
+. shift
+. ds an*cln:res \\$*\"
+. ds an*cln:char \\*[an*cln:res]
+. stringdown an*cln:res
+. substring an*cln:char 0 0
+. if '\\*[an*cln:char]'\%' .substring an*cln:res 1
+. rm an*cln:char
+..
+.
+.\" Write a bookmark/anchor/link target $2 at hierarchical depth $1.
+.de an*bookmark
+. if '\\*[.T]'pdf' \{\
+. ie (\\$1=2) .pdfbookmark -T "\\*[an*page-ref-bm-nm]" \\$1 \\$2
+. el .pdfbookmark \\$1 \\$2
+. \}
+..
+.
+.\" Begin man page.
+.\" .TH topic section[ extra1[ extra2[ extra3]]]
+.de1 TH
+. if ((\\n[.$] < 2) : (\\n[.$] > 5)) \
+. an-style-warn .\\$0 expects 2 to 5 arguments, got \\n[.$]
+.
+. blm an-blank-line-trap
+. lsm an-leading-space-trap
+.
+. \" If batch processing (rendering multiple) man page documents, we
+. \" must handle the end of a previous document.
+. if !\\n[an-is-first-page-of-document] \{\
+. ie \\n[cR] .an-end
+. el .an-start-new-document
+. nr an-is-first-page-of-document 1
+. \}
+.
+. nr an-TH-was-called 1 \" an-end can make certain assumptions.
+.
+. \" Set up rendering parameters. We do this in TH instead of only
+. \" once when initializing the package because when rendering multiple
+. \" pages, a previous page might have changed them.
+.
+. fam \\*[an*body-family]
+. ft R
+.
+. nr PS 10z \" default point size
+. nr PS-SS 10z
+. nr PS-SH 10.95z
+. nr VS 12p
+.
+. \" use sizes similar to LaTeX
+. if t \{\
+. ie (\\n[S] == 11) \{\
+. nr PS 10.95z
+. nr PS-SS 10.95z
+. nr PS-SH 12z
+. nr VS 13.6p
+. \}
+. el \{\
+. if (\\n[S] == 12) \{\
+. nr PS 12z
+. nr PS-SS 12z
+. nr PS-SH 14.4z
+. nr VS 14.5p
+. \}
+. \}
+. \}
+.
+. \" The previous document rendered in a batch may have been in a
+. \" different language. If this one is in English, (re-)init strings.
+. if '\\*[locale]'english' .an*localize-strings
+.
+. ps \\n[PS]u
+. vs \\n[VS]u
+. ad \\*[AD]
+. ll \\n[LL]u
+.
+. \" We've seen no tbl(1) tables yet in this document.
+. rr TW
+. nr an-was-tbl-failure-reported 0
+.
+. an*reset-hyphenation-mode
+. an-reset-tab-stops
+. an-reset-paragraph-spacing
+. an-reset-margin-and-inset-level
+.
+. nr an-tag-separation 1n
+. nr an-need-no-space-mode 0
+. nr an-need-break 0
+. nr an-is-in-diversion 0
+. nr an*is-in-example 0
+.
+. ds an*topic "\\$1\"
+. if \\n[CT] .stringup an*topic
+. ds an*section "\\$2\"
+. ie (\\n[.$] > 4) .ds an-extra3 "\\$5\"
+. el \{\
+. \" Simulate switch/case in roff.
+. ie '\\$2'1' .ds an-extra3 \\*[an*section1]\"
+. el \{.ie '\\$2'2' .ds an-extra3 \\*[an*section2]\"
+. el \{.ie '\\$2'2type' .ds an-extra3 \\*[an*section2type]\"
+. el \{.ie '\\$2'3' .ds an-extra3 \\*[an*section3]\"
+. el \{.ie '\\$2'3const' .ds an-extra3 \\*[an*section3const]\"
+. el \{.ie '\\$2'3head' .ds an-extra3 \\*[an*section3head]\"
+. el \{.ie '\\$2'3type' .ds an-extra3 \\*[an*section3type]\"
+. el \{.ie '\\$2'4' .ds an-extra3 \\*[an*section4]\"
+. el \{.ie '\\$2'5' .ds an-extra3 \\*[an*section5]\"
+. el \{.ie '\\$2'6' .ds an-extra3 \\*[an*section6]\"
+. el \{.ie '\\$2'7' .ds an-extra3 \\*[an*section7]\"
+. el \{.ie '\\$2'8' .ds an-extra3 \\*[an*section8]\"
+. el \{.ie '\\$2'9' .ds an-extra3 \\*[an*section9]\"
+. el .ds an-extra3 \" empty
+. \}\}\}\}\}\}\}\}\}\}\}\}
+. \}
+.
+. ds an-extra1 "\\$3\"
+. ie (\\n[.$] > 3) .ds an-extra2 "\\$4\"
+. el .ds an-extra2 \" empty; but .AT/.UC can override
+.
+. if '\\*[an-extra1]'' \{\
+. ds an-msg .\\$0 missing third argument; suggest document\"
+. as an-msg " modification date in ISO 8601 format (YYYY-MM-DD)\"
+. an-style-warn \\*[an-msg]
+. rm an-msg
+. \}
+.
+. if '\\*[an-extra2]'' \{\
+. ds an-msg .\\$0 missing fourth argument; suggest package/project\"
+. \" Yes, that's one double quote, then three, then two.
+. as an-msg " name and version (e.g., """groff 1.23.0"")\"
+. an-style-warn \\*[an-msg]
+. rm an-msg
+. \}
+.
+. if '\\$5\\*[an-extra3]'' \{\
+. ds an-msg .\\$0 missing fifth argument and second argument '\\$2'\"
+. as an-msg " not a recognized manual section; specify its title\"
+. an-style-warn \\*[an-msg]
+. rm an-msg
+. \}
+.
+. \" Initialize environment for headers and footers.
+. ev an*env-header-and-footer
+. ps \\n[PS]u
+. vs \\n[VS]u
+. lt \\n[LT]u
+. an*abbreviate-page-topic
+. \" If AT or UC is called, we will need to abbreviate again.
+. an*abbreviate-inner-footer
+. ev
+.
+. \" HTML gets the topic without any abbreviation, since it's metadata.
+. if \\n[an-is-output-html] \{\
+. DEVTAG-TL
+. nop \\*[an*topic]
+. DEVTAG-EO-TL
+. \}
+.
+. \" A bookmark is attached to the page header, but only on the first
+. \" page of the document.
+. nr an*was-TH-bookmark-emitted 0
+. an-header
+.
+. if !\\n[cR] \{\
+. wh 0 an-header
+. ie r FT .nr an-footer-location \\n[FT]
+. el .nr an-footer-location (-.5i)
+. wh (2u * \\n[an-footer-location]u) an-break-body-text
+. wh \\n[an-footer-location]u an-footer
+. \}
+. \}
+.
+. nr an-is-first-page-of-document 0
+..
+.
+.\" Support legacy AT&T and BSD Unix man pages.
+.
+.\" Designate an AT&T Unix man page.
+.\" .AT [system-id[ release-id]]
+.de1 AT
+\\*[an-deprecation-warn]\\
+. ds an-extra2 "7th Edition\"
+. if "\\$1"3" .ds an-extra2 "7th Edition\"
+. if "\\$1"4" .ds an-extra2 "System III\"
+. if "\\$1"5" \{\
+. ie "\\$2"" .ds an-extra2 "System V\"
+. el .ds an-extra2 "System V Release \\$2\"
+. \}
+. ev an*env-header-and-footer
+. an*abbreviate-inner-footer
+. ev
+..
+.
+.\" Designate a BSD Unix man page.
+.\" .UC [system-id]
+.de1 UC
+\\*[an-deprecation-warn]\\
+. ds an-extra2 "3rd Berkeley Distribution\"
+. if "\\$1"3" .ds an-extra2 "3rd Berkeley Distribution\"
+. if "\\$1"4" .ds an-extra2 "4th Berkeley Distribution\"
+. if "\\$1"5" .ds an-extra2 "4.2 Berkeley Distribution\"
+. if "\\$1"6" .ds an-extra2 "4.3 Berkeley Distribution\"
+. if "\\$1"7" .ds an-extra2 "4.4 Berkeley Distribution\"
+. ev an*env-header-and-footer
+. an*abbreviate-inner-footer
+. ev
+..
+.
+.\" Restore tab stops to defaults.
+.de1 DT
+\\*[an-deprecation-warn]\\
+. an-reset-tab-stops
+..
+.
+.\" Restore inter-paragraph spacing to default (or set it to argument).
+.\" .PD [distance]
+.de1 PD
+\\*[an-deprecation-warn]\\
+\\*[an-reset-paragraph-spacing]\\
+..
+.
+.\" Write the page header; can be redefined by man.local.
+.\"
+.\" In continuous rendering mode, we need to extend the page length to
+.\" accommodate the vertical size of our header (plus any spacing).
+.if d PT .ig
+.de1 PT
+. ie \\n[cR] .pl +1v
+. el .sp .5i
+. if !\\n[an*was-TH-bookmark-emitted] \{\
+.\" . an*bookmark 2 \E*[an*page-ref-string]
+. nr an*was-TH-bookmark-emitted 1
+. \}
+. tl '\\*[an-pageref]'\\*[an-extra3]'\\*[an-pageref]'
+. ie \\n[cR] \{\
+. pl +1v
+. sp 1v
+. \}
+. el .sp |1i
+..
+.
+.\" Write the page footer; can be redefined by man.local.
+.\"
+.\" In continuous rendering mode, we need to extend the page length to
+.\" accommodate the vertical size of our footer (plus any spacing).
+.if d BT .ig
+.de1 BT
+. if \\n[cR] .pl +1v
+. ie \\n[D] \{\
+. if o .tl '\\*[an*ifoot]'\\*[an-extra1]'\\*[an*ofoot]'
+. if e .tl '\\*[an*ofoot]'\\*[an-extra1]'\\*[an*ifoot]'
+. \}
+. el \
+. tl '\\*[an*ifoot]'\\*[an-extra1]'\\*[an*ofoot]'
+..
+.
+.\" Abbreviate the page topic if it's too long for the header. Leaves
+.\" string an-pageref defined for use in .PT and .an-footer. Also
+.\" leaves an*topic-abbv for possible use by .PT and .BT re-definers.
+.\" Call this only from within the header/footer environment.
+.de an*abbreviate-page-topic
+. ds an*topic-abbv \\*[an*topic]\" might not get abbreviated at all
+. ds an*topic-string \\*[an*topic]\"
+. ds an-ellipsis \|.\|.\|.\|\"
+. \" an*page-ref-string is left unmodified for internal use, such as
+. \" PDF bookmarks.
+. ds an*page-ref-string \\*[an*topic](\\*[an*section])\"
+. ds an-pageref \\*[an*topic-abbv](\\*[an*section])\"
+. an*cln an*page-ref-bm-nm \\*[an*topic]_\\*[an*section]\"
+. stringdown an*page-ref-bm-nm
+. nr an-header-width \\w'\\*[an-pageref]\\*[an-extra3]\\*[an-pageref]'
+. while (\\n[an-header-width] >= \\n[.lt]) \{\
+. \" The page topic is too long; trim some bits out of the middle.
+. length an*topic-length \\*[an*topic-string]
+. \" roff division rounds integers toward zero. Remove an additional
+. \" character on each side of the midpoint to account for the
+. \" ellipsis we add later.
+. nr an-mark1 (\\n[an*topic-length] / 2 - 2)
+. nr an-mark2 (\\n[an*topic-length] / 2 + 2)
+. ds an-prefix \\*[an*topic-string]\"
+. ds an-suffix \\*[an*topic-string]\"
+. \" Use extremum operators to ensure that the first and last
+. \" characters of the topic remain intact (in cases of pathological
+. \" shortening).
+. substring an-prefix 0 (\\n[an-mark1] >? 1)
+. substring an-suffix (\\n[an-mark2] <? \\n[an*topic-length] - 1) -1
+. ds an*topic-string \\*[an-prefix]\\*[an-suffix]\"
+. ds an*topic-abbv \\*[an-prefix]\\*[an-ellipsis]\\*[an-suffix]\"
+. \" Remeasure the formatted topic; give up if we made no progress.
+. length an*topic-new-length \\*[an*topic-string]
+. ie (\\n[an*topic-new-length] >= \\n[an*topic-length]) \
+. break
+. ds an-pageref \\*[an*topic-abbv](\\*[an*section])\"
+. nr an-header-width \
+ \\w'\\*[an-pageref]\\*[an-extra3]\\*[an-pageref]'
+. \}
+. ds an-pageref \\*[an-lic]\f[\\*[MF]]\\*[an*topic-abbv]\\*[an-ic]\
+\f[R](\\*[an*section])\"
+. rr an*topic-length-prev
+. rr an-mark1
+. rr an-mark2
+. rm an-prefix
+. rm an-suffix
+. rm an*topic-string
+. rr an*topic-length
+. rr an-header-width
+. rm an-ellipsis
+..
+.
+.\" Iterate through concatenation of arguments as a string. If a bare
+.\" backslash is found, make `an*string-contains-backslash` true. Our
+.\" caller should delete this register when done with it.
+.de an*scan-string-for-backslash
+. nr an*string-contains-backslash 0
+. nr an*index 0
+. length an*max-index \\$*
+. while (\\n[an*index] < \\n[an*max-index]) \{\
+. ds an*char \\$*
+. substring an*char \\n[an*index] \\n[an*index]
+. ec @
+. \" Use a weird delimiter to reduce lexical colorizer confusion.
+. if _@*[an*char]_\\_ .nr an*string-contains-backslash 1
+. ec
+. if \\n[an*string-contains-backslash] .break
+. nr an*index +1
+. \}
+. rm an*char
+. rr an*max-index
+. rr an*index
+..
+.
+.\" Abbreviate the `an-extra2` string (set by .TH) if it's too long for
+.\" the footer. The formatted width of the inner footer plus half that
+.\" of the center footer must be less than half the title width or we
+.\" must abbreviate. By default, `an-extra2` is placed as the inner
+.\" footer. We call its (potential) abbreviation `an*ifoot` here and
+.\" leave it defined for .BT use. (`an*ofoot` is not treated the same
+.\" way. `an-footer` regenerates it on every page because the page
+.\" number changes if present.) Shorten the inner footer if necessary
+.\" by trimming characters off the end, replacing them with an ellipsis.
+.de an*abbreviate-inner-footer
+. ds an*ifoot \\*[an-extra2]\"
+. nr an*half-title-width (\\n[.lt] / 2u)
+. nr an*half-cfoot-width (\w'\\*[an-extra1]' / 2u)
+. nr an*half-footer-width \
+ (\w'\\*[an*ifoot]' + \\n[an*half-cfoot-width])
+. if (\\n[an*half-footer-width] < \\n[an*half-title-width]) \{\
+. rr an*half-footer-width
+. rr an*half-cfoot-width
+. rr an*half-title-width
+. return
+. \}
+. an*scan-string-for-backslash \\*[an*ifoot]
+. if \\n[an*string-contains-backslash] \{\
+. an-warn not abbreviating fourth argument to 'TH' '\\*[an*ifoot]': \
+contains unsupported escape sequence
+. rr an*string-contains-backslash
+. rr an*half-footer-width
+. rr an*half-cfoot-width
+. rr an*half-title-width
+. return
+. \}
+. ds an*saved-ifoot \\*[an*ifoot]
+. ds an*ellipsis \|.\|.\|.\|\"
+. \" Remeasure with ellipsis added to inner footer so that henceforth,
+. \" the measured width strictly decreases.
+. nr an*half-footer-width \
+ (\w'\\*[an*ifoot]\\*[an*ellipsis]' + \\n[an*half-cfoot-width])
+. nr an*end-index (-2)
+. while (\\n[an*half-footer-width] >= \\n[an*half-title-width]) \{\
+. ds an*ifoot \\*[an*saved-ifoot]
+. substring an*ifoot 0 \\n[an*end-index]
+. \" Measure the string again and give up if we made no progress.
+. nr an*new-half-footer-width \
+ (\w'\\*[an*ifoot]\\*[an*ellipsis]' + \\n[an*half-cfoot-width])
+. ie (\\n[an*new-half-footer-width] >= \\n[an*half-footer-width]) \
+. break
+. nr an*half-footer-width \\n[an*new-half-footer-width]
+. nr an*end-index -1
+. \}
+. ds an*ifoot \\*[an*ifoot]\\*[an*ellipsis]\"
+. rr an*end-index
+. rr an*new-half-footer-width
+. rm an*ellipsis
+. rm an*saved-ifoot
+. rr an*string-contains-backslash
+. rr an*half-footer-width
+. rr an*half-cfoot-width
+. rr an*half-title-width
+..
+.
+.\" Prepare the header for a page of the document.
+.de1 an-header
+. if \\n[an-suppress-header-and-footer] .return
+. ev an*env-header-and-footer
+. PT
+. ev
+. ns
+..
+.
+.\" Schedule a page break when the next output line is written (not
+.\" called if continuously rendering).
+.de1 an-break-body-text
+' bp
+..
+.
+.\" Prepare the footer for a page of the document.
+.de1 an-footer
+. if \\n[an-suppress-header-and-footer] .return
+. ev an*env-header-and-footer
+. ie \\n[cR] \
+. ds an*ofoot "\\*[an-pageref]\"
+. el \{\
+. ds an*ofoot \\n[%]\"
+. if r X \{\
+. if (\\n[%] > \\n[X]) \{\
+. nr an-page-letter (\\n[%] - \\n[X])
+. ds an*ofoot \\n[X]\\n[an-page-letter]\"
+. \}
+. \}
+. \}
+. BT
+. rm an*ofoot
+. ev
+..
+.
+.\" Output the tag of a tagged paragraph, or of an indented paragraph
+.\" (IP) that has a tag. Whether we break depends on the tag width.
+.de an-write-paragraph-tag
+. br
+. di
+. ad \\*[AD]
+. nr an-is-in-diversion 0
+. ll
+. \" We must emit the diversion in a separate environment to ensure
+. \" that a possible margin character is printed correctly.
+. ev an-env-paragraph-tag
+. evc 0
+. mc
+. nf
+. in \\n[an-margin]u
+. \" Prevent page break between the tag and the rest of the paragraph.
+. ne (2v + 1u)
+. \" Does the tag fit within the paragraph indentation?
+. nr an-tag-fits \
+ (\\n[dl] + \\n[an-tag-separation] <= \\n[an-prevailing-indent])
+. if \\n[an-tag-fits] .DEVTAG-COL 1
+. an-div
+. if \\n[an-tag-fits] .sp -1v
+. ev
+. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
+. if \\n[an-tag-fits] .DEVTAG-COL 2
+. rr an-tag-fits
+..
+.
+.\" Handle macros that may take an "argument" on the next input line
+.\" producing written or drawn output: .SH, .SS, .B, .I, .SM, .SB--and
+.\" .TP, which does so mandatorily.
+.de1 an-input-trap
+. if \\n[an-devtag-needs-end-of-heading] .DEVTAG-EO-H
+. nr an-devtag-needs-end-of-heading 0
+. if \\n[an-devtag-needs-second-column] .DEVTAG-COL 2
+. nr an-devtag-needs-second-column 0
+. ft R
+. ps \\n[PS]u
+. vs \\n[VS]u
+. if \\n[an-need-break] \{\
+. br
+. nr an-need-break 0
+. \}
+. if \\n[an-need-no-space-mode] \{\
+. ns
+. nr an-need-no-space-mode 0
+. \}
+. if \\n[an-is-in-diversion] .an-write-paragraph-tag
+..
+.
+.\" Break a paragraph. Restore defaults, except for indentation.
+.de an-break-paragraph
+. ft R
+. ps \\n[PS]u
+. vs \\n[VS]u
+. sp \\n[PD]u
+. ns
+..
+.
+.\" Set arguments (or next input line producing written or drawn output
+.\" if none) as a section heading.
+.de1 SH
+. fam \\*[an*body-family]
+. an-break-paragraph
+. an-reset-margin-and-inset-level
+. fi
+. in \\n[an-margin]u
+. ti 0
+. nr an-devtag-needs-end-of-heading 1
+. DEVTAG-SH 1
+. it 1 an-input-trap
+. nr an-need-no-space-mode 1
+. nr an-need-break 1
+. ps \\n[PS-SH]u
+. ne (2v + 1u)
+. ft \\*[HF]
+. if \\n[an-remap-I-style-in-headings] .ftr I \\*[an-heading-family]BI
+. if \\n[.$] \{\
+. ds an-section-heading \\$*\"
+. if \\n[CS] .stringup an-section-heading
+. an*bookmark 3 \E*[an-section-heading]
+\&\\*[an-section-heading]
+. \}
+. if \\n[an-remap-I-style-in-headings] .ftr I I
+..
+.
+.\" Set arguments (or next input line producing written or drawn output
+.\" if none) as a subsection heading.
+.de1 SS
+. fam \\*[an*body-family]
+. an-break-paragraph
+. an-reset-margin-and-inset-level
+. fi
+. in \\n[IN]u
+. ti \\n[SN]u
+. nr an-devtag-needs-end-of-heading 1
+. DEVTAG-SH 2
+. it 1 an-input-trap
+. nr an-need-no-space-mode 1
+. nr an-need-break 1
+. ps \\n[PS-SS]u
+. ne (2v + 1u)
+. ft \\*[HF]
+. if \\n[an-remap-I-style-in-headings] .ftr I \\*[an-heading-family]BI
+. if \\n[.$] \{\
+. ds an*subsection-heading \\$*\"
+. an*bookmark 4 \E*[an*subsection-heading]
+. nop \&\\$*
+. \}
+. if \\n[an-remap-I-style-in-headings] .ftr I I
+..
+.
+.\" Set arguments (or next input line producing written or drawn output
+.\" if none) in bold style.
+.de1 B
+. it 1 an-input-trap
+. ft B
+. if \\n[.$] \&\\$*
+..
+.
+.\" Set arguments (or next input line producing written or drawn output
+.\" if none) in italic style.
+.de1 I
+. it 1 an-input-trap
+. ft I
+. if \\n[.$] \,\\$*\/
+..
+.
+.\" Set arguments (or next input line producing written or drawn output
+.\" if none) at smaller type size.
+.de1 SM
+. it 1 an-input-trap
+. ps -1
+. if \\n[.$] \&\\$*
+..
+.
+.\" Set arguments (or next input line producing written or drawn output
+.\" if none) in bold style at smaller
+.\" type size.
+.de1 SB
+. it 1 an-input-trap
+. ps -1
+. ft B
+. if \\n[.$] \&\\$*
+..
+.
+.\" Set an ordinary paragraph.
+.de1 P
+. an-break-paragraph
+. in \\n[an-margin]u
+. nr an-prevailing-indent \\n[IN]
+..
+.
+.\" Accommodate ms(7) paragraphing refugees.
+.als LP P
+.als PP P
+.
+.\" Set a tagged paragraph. The tag must be on the next input line
+.\" producing written or drawn output.
+.\" .TP [indent]
+.de1 TP
+. an-break-paragraph
+. if \\n[.$] .nr an-prevailing-indent (n;\\$1)
+. itc 1 an-input-trap
+. in 0
+. if !\\n[an-is-in-diversion] \{\
+. ll -\\n[an-margin]u
+. di an-div
+. na
+. \}
+. nr an-is-in-diversion 1
+..
+.
+.\" Set an indented paragraph.
+.\" .IP [marker[ indentation-amount]]
+.de1 IP
+. an-break-paragraph
+. ie !\\n[.$] \{\
+. ne (1v + 1u)
+. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
+. \}
+. el \{\
+. ie (\\n[.$] > 1) .TP "\\$2"
+. el .TP
+\&\\$1
+. \}
+..
+.
+.\" Set a paragraph with a hanging indentation.
+.\" .HP [indent]
+.de1 HP
+. if !\\n[mS] \\*[an-deprecation-warn]\c
+. an-break-paragraph
+. ne (1v + 1u)
+. if \\n[.$] .nr an-prevailing-indent (n;\\$1)
+. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
+. ti \\n[an-margin]u
+. DEVTAG-COL 1
+. nr an-devtag-needs-second-column 1
+..
+.
+.\" === Define alternating font macros. ===
+.\"
+.\" Implementation notes:
+.\"
+.\" We always emit a non-printing input break \& before the first
+.\" argument. This is necessary only when the calling man page is in
+.\" compatibility mode; it works around the surprising AT&T semantics of
+.\" \f escapes at the beginning of an input line. See "Implementation
+.\" differences" in groff_diff(7) or the groff Texinfo manual.
+.\"
+.\" The italic correction escapes can be visually confusing. We apply
+.\" the following rules, always on the same input line.
+.\" (1) Before any italic argument, emit a left italic correction \,
+.\" before switching to the italic style.
+.\" (2) After any italic argument, emit an italic correction \/
+.\" before switching to another style.
+.\" It is true that these macros cannot know what style is used in the
+.\" input stream before or after they are called. We can make
+.\" assumptions based on pragmatics. In most cases, the caller will not
+.\" precede a call to one of these macros with \c, or add it to the
+.\" final argument given to one of these calls; when \c is absent, what
+.\" is adjacent must be a word space or output line boundary, so italic
+.\" corrections don't matter. If \c _is_ used by the caller, we can
+.\" assume that the adjacent glyphs before an IB or IR call, or the
+.\" following ones after a BI or RI call, will not be italic (and thus
+.\" will benefit from the italic correction we provide); otherwise the
+.\" caller would simply have added the relevant characters to the
+.\" arguments of the macro call.
+.\"
+.
+.\" Set each argument in bold and italics, alternately.
+.de1 BI
+. if (\\n[.$] < 2) \
+. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$]
+. if \\n[.$] \{\
+. ds an-result \&\"
+. while (\\n[.$] >= 2) \{\
+. as an-result \f[B]\\$1\,\f[I]\\$2\/\"
+. shift 2
+. \}
+. if \\n[.$] .as an-result \f[B]\\$1\"
+\\*[an-result]
+. rm an-result
+. ft R
+. \}
+..
+.
+.\" Set each argument in bold and roman, alternately.
+.de1 BR
+. if (\\n[.$] < 2) \
+. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$]
+. if \\n[.$] \{\
+. ds an-result \&\"
+. while (\\n[.$] >= 2) \{\
+. as an-result \f[B]\\$1\f[R]\\$2\"
+. shift 2
+. \}
+. if \\n[.$] .as an-result \f[B]\\$1\"
+\\*[an-result]
+. rm an-result
+. ft R
+. \}
+..
+.
+.\" Set each argument in italics and bold, alternately.
+.de1 IB
+. if (\\n[.$] < 2) \
+. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$]
+. if \\n[.$] \{\
+. ds an-result \&\"
+. while (\\n[.$] >= 2) \{\
+. as an-result \,\f[I]\\$1\/\f[B]\\$2\"
+. shift 2
+. \}
+. if \\n[.$] .as an-result \,\f[I]\\$1\/\"
+\\*[an-result]
+. rm an-result
+. ft R
+. \}
+..
+.
+.\" Set each argument in italics and roman, alternately.
+.de1 IR
+. if (\\n[.$] < 2) \
+. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$]
+. if \\n[.$] \{\
+. ds an-result \&\"
+. while (\\n[.$] >= 2) \{\
+. as an-result \,\f[I]\\$1\/\f[R]\\$2\"
+. shift 2
+. \}
+. if \\n[.$] .as an-result \,\f[I]\\$1\/\"
+\\*[an-result]
+. rm an-result
+. ft R
+. \}
+..
+.
+.\" Set each argument in roman and bold, alternately.
+.de1 RB
+. if (\\n[.$] < 2) \
+. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$]
+. if \\n[.$] \{\
+. ds an-result \&\"
+. while (\\n[.$] >= 2) \{\
+. as an-result \f[R]\\$1\f[B]\\$2\"
+. shift 2
+. \}
+. if \\n[.$] .as an-result \f[R]\\$1\"
+\\*[an-result]
+. rm an-result
+. ft R
+. \}
+..
+.
+.\" Set each argument in roman and italics, alternately.
+.de1 RI
+. if (\\n[.$] < 2) \
+. an-style-warn .\\$0 expects at least 2 arguments, got \\n[.$]
+. if \\n[.$] \{\
+. ds an-result \&\"
+. while (\\n[.$] >= 2) \{\
+. as an-result \f[R]\\$1\,\f[I]\\$2\/\"
+. shift 2
+. \}
+. if \\n[.$] .as an-result \f[R]\\$1\"
+\\*[an-result]
+. rm an-result
+. ft R
+. \}
+..
+.
+.\" Start a relative inset level (by the amount given in the argument).
+.\" .RS [indent]
+.de1 RS
+. nr an-saved-margin\\n[an-inset-level] \\n[an-margin]
+. nr an-saved-prevailing-indent\\n[an-inset-level] \
+ \\n[an-prevailing-indent]
+. ie \\n[.$] .nr an-margin +(n;\\$1)
+. el .nr an-margin +\\n[an-prevailing-indent]
+. in \\n[an-margin]u
+. nr an-prevailing-indent \\n[IN]
+. nr an-inset-level +1
+..
+.
+.\" End relative inset level, backing up by one level (or to the level
+.\" given by the argument).
+.\" .RE [inset-level]
+.de1 RE
+. ie \\n[.$] .nr an-RE-requested-level \\$1
+. el .nr an-RE-requested-level (\\n[an-inset-level] - 1)
+. ie \\n[.$] \{\
+. if (\\n[an-RE-requested-level] = \\n[an-inset-level]) \
+. ds an-RE-problem already at level \\n[an-inset-level]\"
+. if (\\n[an-RE-requested-level] > \\n[an-inset-level]) \
+. ds an-RE-problem too large\"
+. if (\\n[an-RE-requested-level] < 1) \
+. ds an-RE-problem too small\"
+. if d an-RE-problem \
+. an-style-warn argument """\\$1""" to .\\$0 \\*[an-RE-problem]
+. rm an-RE-problem
+. \}
+. el .if !(\\n[an-RE-requested-level]) .an-style-warn unbalanced .\\$0
+. rr an-RE-requested-level
+. ie \\n[.$] .nr an-inset-level ((;\\$1) <? \\n[an-inset-level])
+. el .nr an-inset-level -1
+. nr an-inset-level (1 >? \\n[an-inset-level])
+. nr an-margin \\n[an-saved-margin\\n[an-inset-level]]
+. nr an-prevailing-indent \
+ \\n[an-saved-prevailing-indent\\n[an-inset-level]]
+. in \\n[an-margin]u
+..
+.
+.\" Deprecated: Style an option with an argument (mandatory if
+.\" specified) for a command synopsis.
+.\" .OP flag [option-parameter]
+.de1 OP
+\\*[an-deprecation-warn]\\
+. if ((\\n[.$] < 1) : (\\n[.$] > 2)) \
+. an-style-warn .\\$0 expects 1 or 2 arguments, got \\n[.$]
+. ie (\\n[.$] > 1) \
+. RI [\\f[B]\\$1\f[] \~\\$2 ]
+. el \
+. RB [ \\$1 ]
+..
+.
+.\" Begin an example (typically of source code or shell input).
+.de1 EX
+. br
+. if \\n[an*is-in-example] \{\
+. an-style-warn ignoring .\\$0 while already in example
+. return
+. \}
+. ds an*saved-family \\n[.fam]
+. nr an*saved-font \\n[.f]
+. nr an*saved-paragraph-distance \\n[PD]
+. nr PD 1v
+. nf
+. \" If using the DVI output device, we have no constant-width fonts of
+. \" bold weight and, relatedly, no constant-width family (because that
+. \" requires all four styles). Remap the bold styles to normal ones.
+. ie '\*[.T]'dvi' \{\
+. ftr R CW
+. ftr B CW
+. ftr I CWI
+. ftr BI CWI
+. \}
+. el .fam \\*[an*example-family]
+. ft R
+. nr an*is-in-example 1
+..
+.
+.\" End example.
+.de EE
+. br
+. if !\\n[an*is-in-example] \{\
+. an-style-warn ignoring .\\$0 while not in example
+. return
+. \}
+. \" Undo the remappings from `EX`.
+. ie '\*[.T]'dvi' \{\
+. ftr R
+. ftr B
+. ftr I
+. ftr BI
+. \}
+. fam \\*[an*saved-family]
+. ft \\n[an*saved-font]
+. nr PD \\n[an*saved-paragraph-distance]
+. fi
+. rr an*saved-paragraph-distance
+. rr an*saved-font
+. rm an*saved-family
+. nr an*is-in-example 0
+..
+.
+.\" Set a man page cross reference.
+.\" .MR page-topic page-section [trailing-text]
+.de1 MR
+. if ((\\n[.$] < 2) : (\\n[.$] > 3)) \
+. an-style-warn .\\$0 expects 2 or 3 arguments, got \\n[.$]
+. nh
+. if (\\n[U] & \\n[mU]) \{\
+. if \\n(mH \
+\X^html:<a href="man:\\$1(\\$2)">^\c
+. if \\n(mY \
+\X^tty: link man:\\$1(\\$2)^\c
+. \}
+\&\\*[an-lic]\f[\\*[MF]]\\$1\\*[an-ic]\f[R](\\$2)\c
+. if (\\n[U] & \\n[mU]) \{\
+. if \\n(mH \
+\X^html:</a>^\c
+. if \\n(mY \
+\X^tty: link^\c
+. \}
+\&\\$3
+. hy \\n[an*hyphenation-mode]
+..
+.
+.\" tbl(1) table support
+.
+.\" Start table.
+.de1 TS
+. \" If continuous rendering, tell tbl not to use keeps.
+. ie \\n[cR] .nr 3usekeeps 0
+. el .nr 3usekeeps 1
+. if \\n[an-is-output-html] \{\
+. nr an-TS-ll \\n[.l]
+. ll 1000n
+. \}
+. HTML-IMAGE
+..
+.
+.\" Start another table in the same region (ignored).
+.de1 T&
+..
+.
+.\" End table.
+.de1 TE
+. HTML-IMAGE-END
+. if \\n[an-is-output-html] .ll \\n[an-TS-ll]u
+. if !r TW .if !\\n[an-was-tbl-failure-reported] \{\
+. ds an-msg tbl preprocessor failed, or it or soelim was not run;\"
+. as an-msg " table(s) likely not rendered\"
+. as an-msg " (TE macro called with TW register undefined)\"
+. an-warn \\*[an-msg]
+. rm an-msg
+. nr an-was-tbl-failure-reported 1
+. \}
+..
+.
+.\" eqn(1) equation support
+.
+.\" Start equation.
+.de1 EQ
+. if \\n[an-is-output-html] \{\
+. nr an-EQ-ll \\n[.l]
+. ll 1000n
+. \}
+. HTML-IMAGE
+..
+.
+.\" End equation.
+.de1 EN
+. HTML-IMAGE-END
+. if \\n[an-is-output-html] .ll \\n[an-EQ-ll]u
+..
+.
+.\" Define R "string". Some ms(7) veterans confusedly use '.R' in man
+.\" pages to try to switch to the roman font style. Attempt to catch
+.\" this misuse by checking for arguments and warning about it.
+.de1 R
+\c
+. ie \\n[.$] \{\
+. ds an-msg 'R' is a string (producing the registered sign),\"
+. as an-msg " not a macro\"
+. an-warn \\*[an-msg]
+. rm an-msg
+. nop \\$*
+. \}
+. el \{\
+. ie c\[rg] .nop \[rg]\c
+. el .nop (Reg.)\c
+. \}
+..
+.
+.\" === Define strings. ===
+.\"
+.\" These strings must work in compatibility mode also.
+.
+.ds S \s'\\n(PSu'\"
+.ie c\[tm] .ds Tm \(tm\"
+.el .ds Tm (TM)\"
+.ie c\[lq] .ds lq \(lq\"
+.el .ds lq ""\"
+.ie c\[rq] .ds rq \(rq\"
+.el .ds rq ""\"
+.
+.\" === Define/remap characters. ===
+.
+.\" For UTF-8, map the minus sign to the hyphen-minus to facilitate
+.\" copy and paste of code examples, file names, and URLs embedding it.
+.if '\*[.T]'utf8' \
+. char \- \N'45'
+.
+.\" === Initialize. ===
+.
+.mso devtag.tmac
+.nr an-devtag-needs-end-of-heading 0
+.nr an-devtag-needs-second-column 0
+.
+.nr an-is-first-page-of-document 1
+.
+.nr an-is-output-html 0
+.if '\*[.T]'html' .nr an-is-output-html 1
+.
+.ds an*body-family T \" Times
+.ds an*example-family C \" Courier
+.
+.\" Map monospaced fonts to standard styles for groff's nroff devices.
+.if n \{\
+. ftr CR R
+. ftr CI I
+. ftr CB B
+. ftr CBI BI
+.\}
+.
+.\" Load man macro extensions.
+.mso an-ext.tmac
+.
+.\" Load site modifications.
+.msoquiet man.local
+.
+.\" Set each rendering parameter only if its -[dr] option or man.local
+.\" did not.
+.
+.if '\*[.T]'pdf' \{\
+. \" FIXME: The following registers are documented only in pdf.tmac.
+. if !r PDFOUTLINE.FOLDLEVEL .nr PDFOUTLINE.FOLDLEVEL 1
+. if !r PDFHREF.VIEW.LEADING .nr PDFHREF.VIEW.LEADING 10p
+.\}
+.
+.\" continuous rendering (one long page)
+.if !r cR \{\
+. ie n .nr cR 1
+. el .nr cR 0
+.\}
+.
+.\" consecutive page numbering across multiple documents
+.\"
+.\" We must use consecutive page numbers when using PostScript to
+.\" generate HTML images; we must not reset the page number at the
+.\" beginning of each document (the 'ps4html' register is automatically
+.\" added to the command line by the pre-HTML preprocessor).
+.ie !r C \
+. nr C 0
+.el \
+. if !\n[C] \
+. if \n[an-is-output-html] \{\
+. tm \*[an]: consecutive page numbering required for HTML output
+. nr C 1
+. \}
+.if \n[an-is-output-html] \
+. nr C 1
+.if r ps4html \
+. nr C 1
+.
+.\" diagnostics desired for man page style problems
+.if !r CHECKSTYLE \
+. nr CHECKSTYLE 0
+.
+.\" full capitalization of section headings
+.if !r CS \
+. nr CS 0
+.
+.\" full capitalization of page topic
+.if !r CT \
+. nr CT 0
+.
+.\" double-sided layout
+.ie !r D \
+. nr D 0
+.el \
+. if \n[D] \
+. if \n[an-is-output-html] \{\
+. tm \*[an]: ignoring double-sided layout in HTML output
+. nr D 0
+. \}
+.
+.\" footer distance
+.\"
+.\" Unlike most of these parameters, we do not set a default for FT; the
+.\" TH macro places page location traps only if not continuously
+.\" rendering.
+.if r FT \{\
+. \" Validate it. Continuous rendering ignores FT. Measuring a footer
+. \" distance from the page top isn't done. A footer distance of over
+. \" half the page length is unlikely. A footer distance of less than
+. \" one line height is too.
+. ie \n[cR] \
+. ds an-msg footer distance when continuously rendering\"
+. el \{\
+. ie (\n[FT] : (\n[FT] = 0)) \
+. ds an-msg non-negative footer distance: \n[FT]u\"
+. el \{\
+. ie (-(\n[FT]) > (\n[.p] / 2)) \
+. ds an-msg implausibly large footer distance: \n[FT]u\"
+. el \
+. if ((v;\n[FT]) < 1v) \
+. ds an-msg implausibly small footer distance: \n[FT]u\"
+. \}
+. \}
+. if d an-msg \{\
+. tm \*[an]: ignoring \*[an-msg]
+. rr FT
+. rm an-msg
+. \}
+.\}
+.
+.\" hyphenation enablement
+.if !r HY \
+. nr HY 1
+.
+.\" standard indentation
+.if !r IN \{\
+. \" We select an integer indentation value in nroff mode because this
+. \" value is used additively for multiple purposes; rounding of
+. \" accumulating fractions would produce inconsistent results.
+. ie t .nr IN 7.2n
+. el .nr IN 7n
+.\}
+.
+.\" line length
+.if !r LL \{\
+. \" If in troff mode, respect device default.
+. ie t .nr LL \n[.l]
+. \" Otherwise, override nroff mode default of 65n.
+. el .nr LL 78n
+.\}
+.
+.\" title (header, footer) length
+.if !r LT \
+. nr LT \n[LL]u
+.
+.\" starting page number
+.\"
+.\" Unlike most of these parameters, we do not set a default for P;
+.\" troff supplies a default starting page number (1). When rendering
+.\" for the HTML output device, page numbers are concealed and used for
+.\" internal purposes like image embedding. Page numbers are not
+.\" rendered at all in continuous rendering mode.
+.if r P \{\
+. if \n[an-is-output-html] \
+. if !(\n[P] = 1) \
+. ds an-msg in HTML output\"
+. if \n[cR] \
+. ds an-msg when continuously rendering
+.\}
+.if d an-msg \{\
+. tm \*[an]: ignoring starting page number \*[an-msg]
+. rr P
+. rm an-msg
+.\}
+.
+.if !r ps4html \
+. if r P \
+. pn 0\n[P]
+.
+.\" point size
+.if !r S \{\
+. nr S 10
+. if '\*[.T]'X75-12' \
+. nr S 12
+. if '\*[.T]'X100-12' \
+. nr S 12
+.\}
+.
+.\" subsection indentation
+.if !r SN \
+. nr SN 3n
+.
+.\" URI enablement
+.if !r U \
+. nr U 1
+.
+.\" page number after which to apply letter suffixes
+.\"
+.\" Unlike most of these parameters, we do not set a default for X; only
+.\" the macro an-footer uses it. Page numbers are not rendered at all
+.\" in continuous rendering mode.
+.if r X \{\
+. af an-page-letter a
+. if \n[an-is-output-html] \
+. ds an-msg in HTML output\"
+. if \n[cR] \
+. ds an-msg when continuously rendering
+.\}
+.if d an-msg \{\
+. tm \*[an]: ignoring page number suffix \*[an-msg]
+. rr X
+. rm an-msg
+.\}
+.
+.\" adjustment mode
+.if !d AD \
+. ds AD b\"
+.
+.\" (sub)section heading font
+.if !d HF \
+. ds HF B\"
+.
+.\" If HF is a bold style, use bold italics for italics in headings.
+.ds an-heading-style \*[HF]\"
+.substring an-heading-style -1 -1
+.ds an-heading-family \" empty
+.length an-HF-length \*[HF]
+.if (\n[an-HF-length] > 1) \{\
+. as an-heading-family \*[HF]\"
+. substring an-heading-family 0 -2
+.\}
+.if '\*[an-heading-style]'B' \
+. if F \*[an-heading-family]BI \
+. nr an-remap-I-style-in-headings 1
+.rr an-HF-length
+.rm an-heading-style
+.
+.\" man page topic font
+.if !d MF \
+. ds MF I\"
+.
+.\" Define italic correction strings. Initially, they are empty. If MF
+.\" is an oblique style, append the corrections.
+.ds an-lic \" left italic correction
+.ds an-ic \" italic correction
+.ds an*topic-style \*[MF]\"
+.substring an*topic-style -1 -1
+.if '\*[an*topic-style]'I' \{\
+. as an-lic \,\"
+. as an-ic \/\"
+.\}
+.rm an*topic-style
+.
+.if \n[cR] \
+. an-set-up-continuous-rendering
+.
+.\" If rendering HTML, suppress headers and footers.
+.nr an-suppress-header-and-footer 0
+.if \n[an-is-output-html] .nr an-suppress-header-and-footer 1
+.if r ps4html .nr an-suppress-header-and-footer 1
+.
+.cp \n[*groff_an_tmac_C]
+.do rr *groff_an_tmac_C
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/scripts/LinuxManBook/andoc.tmac b/scripts/LinuxManBook/andoc.tmac
new file mode 100644
index 000000000..8a3d61dc5
--- /dev/null
+++ b/scripts/LinuxManBook/andoc.tmac
@@ -0,0 +1,114 @@
+.\" andoc.tmac
+.\"
+.\" Load either an.tmac or doc.tmac. Multiple man pages can be handled.
+.\"
+.\"
+.\" Copyright (C) 1991-2020 Free Software Foundation, Inc.
+.\" Written by Werner Lemberg (wl@gnu.org),
+.\" based on a patch from Tadziu Hoffmann.
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff 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.
+.\"
+.\" groff 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
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.
+.if !\n(.g \
+. ab andoc.tmac: macros require groff extensions; aborting
+.
+.do nr *groff_andoc_tmac_C \n[.cp]
+.cp 0
+.
+.als andoc-em em
+.als andoc-bp bp
+.als andoc-ne ne
+.
+.
+.\" We must not use '.de1' for 'reload-doc' or 'reload-man'! 'doc.tmac'
+.\" unconditionally switches compatibility mode off, but '.de1' would
+.\" ignore this, restoring the mode that was active before. Similarly,
+.\" we have to switch back to the original compatibility mode for man
+.\" documents in case there is a mix of mdoc and man input files.
+.\"
+.\" Due to a bug in GNU troff it necessary to have a no-op line between
+.\" '.do' and '\*'.
+.
+.
+.de reload-doc
+. \" Flush any partially collected output line and write page footer in
+. \" continuous rendering mode.
+. do if d an-end \
+. do an-end
+.
+. \" Remove traps planted by an.tmac.
+. do ch an-header
+. do ch an-break-body-text
+. do ch an-footer
+.
+. do als em andoc-em
+. do als bp andoc-bp
+. do als ne andoc-ne
+. do blm \" no blank line trap
+. do lsm \" no leading space trap
+. em \" no end-of-input trap
+.
+. do rm Dd \" force reinitialization of doc.tmac
+. do mso doc.tmac
+.
+. do als TH reload-man
+.
+\\*(Dd\\
+..
+.
+.de reload-man
+. \" Flush any partially collected output line and write page footer in
+. \" continuous rendering mode.
+. do if d doc-end-macro \
+. do doc-end-macro
+.
+. \" Remove traps planted by mdoc/doc-{n,dit}roff.
+. do ch doc-header
+. do ch doc-footer
+.
+. do als em andoc-em
+. do als bp andoc-bp
+. do als ne andoc-ne
+. do blm \" no blank line trap
+. em \" no end-of-input trap
+.
+. do rm TH \" force reinitialization of an.tmac
+. do mso an.tmac
+.
+. do als Dd reload-doc
+.
+\\*(TH\\
+..
+.
+.als TH reload-man
+.als Dd reload-doc
+.
+.\" dummy equation macros -- eqnrc is read before .TH or .Dd is parsed
+.de EQ
+..
+.de EN
+..
+.
+.cp \n[*groff_andoc_tmac_C]
+.do rr *groff_andoc_tmac_C
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/scripts/LinuxManBook/anmark.tmac b/scripts/LinuxManBook/anmark.tmac
new file mode 100644
index 000000000..a1cba93ce
--- /dev/null
+++ b/scripts/LinuxManBook/anmark.tmac
@@ -0,0 +1,22 @@
+.nr PDFOUTLINE.FOLDLEVEL 1
+.defcolor pdf:href.colour rgb 0.00 0.25 0.75
+.pdfinfo /Title "The Linux Manpage Book"
+.special S TINOR
+.de EnD
+..
+.am reload-man
+.de MR EnD
+. nh
+. ds an*title \\\\$4
+. if '\\\\*[an*title]'' .ds an*title \\\\$1
+. an*cln an*par "\\\\*[an*title]_\\\\$2\"
+. ie \\\\n(.$=1 \
+. I \\\\$1
+. el \{\
+. ie d pdf:look(\\\\*[an*par]) .pdfhref L -D \\\\*[an*par] -A "\\\\$3" -- \fI\\\\$1\fP(\\\\$2)
+. el .IR \\\\$1 (\\\\$2)\\\\$3
+. \}
+. hy \\\\n(mJ
+.EnD
+..
+.
diff --git a/scripts/LinuxManBook/devpdf/TINOR b/scripts/LinuxManBook/devpdf/TINOR
new file mode 100644
index 000000000..94d2fb443
--- /dev/null
+++ b/scripts/LinuxManBook/devpdf/TINOR
@@ -0,0 +1,3518 @@
+# This file has been generated with GNU afmtodit (groff) version 1.22.4
+#
+# FullName Tinos
+# Version 1.23
+# FamilyName Tinos
+
+name TINOR
+internalname Tinos
+spacewidth 250
+
+kernpairs
+u0020 u03A5_0308 -37
+u0020 *U -37
+u0020 *T -18
+u0020 *L -55
+u0020 *D -55
+u0020 *A -55
+u0020 u0391_0301 -55
+u0020 Y -37
+u0020 W -18
+u0020 V -18
+u0020 T -18
+u0020 A -55
+1 1 -37
+A ' -110
+A cq -110
+A y -91
+A w -91
+A v -74
+A Y -91
+A W -80
+A V -128
+A T -110
+A u0020 -55
+F A -74
+F . -80
+F , -80
+L ' -91
+L cq -91
+L y -55
+L Y -100
+L W -74
+L V -91
+L T -91
+L u0020 -37
+P A -91
+P . -110
+P , -110
+P u0020 -37
+R y -40
+R Y -55
+R W -55
+R V -80
+R T -60
+T y -69
+T w -69
+T u -35
+T s -69
+T r -35
+T o -69
+T i -35
+T e -69
+T c -69
+T a -69
+T O -18
+T A -80
+T ; -55
+T : -49
+T . -74
+T - -91
+T hy -91
+T , -74
+T u0020 -18
+V y -110
+V u -60
+V r -60
+V o -128
+V i -60
+V e -110
+V a -110
+V A -128
+V ; -74
+V : -74
+V . -128
+V - -91
+V hy -91
+V , -128
+V u0020 -18
+W y -60
+W u -40
+W r -40
+W o -80
+W i -40
+W e -80
+W a -80
+W A -110
+W ; -37
+W : -37
+W . -91
+W - -55
+W hy -55
+W , -91
+W u0020 -18
+Y v -100
+Y u -110
+Y q -110
+Y p -91
+Y o -100
+Y i -55
+Y e -100
+Y a -100
+Y A -110
+Y ; -91
+Y : -91
+Y . -128
+Y - -110
+Y hy -110
+Y , -128
+Y u0020 -37
+f ' 55
+f cq 55
+f f -18
+r ' 37
+r cq 37
+r g -18
+r . -55
+r - -20
+r hy -20
+r , -40
+v . -64
+v , -64
+w . -64
+w , -64
+y . -64
+y , -64
+u0020 u03A5_0308 -37
+u0020 *U -37
+u0020 *T -18
+u0020 *L -55
+u0020 *D -55
+u0020 *A -55
+u0020 u0391_0301 -55
+u0020 Y -37
+u0020 W -18
+u0020 V -18
+u0020 T -18
+u0020 A -55
+u0391_0301 *x -68
+u0391_0301 *n -74
+u0391_0301 *g -68
+u0391_0301 u03A5_0308 -151
+u0391_0301 *U -151
+u0391_0301 *T -109
+u0391_0301 *O -41
+u0391_0301 *F -41
+u0391_0301 *H -41
+u0391_0301 u0020 -55
+u039F_0301 u03A5_0308 -49
+u039F_0301 *U -49
+u039F_0301 *L -47
+u039F_0301 *D -24
+u039F_0301 *A -47
+u03A5_0301 u03BF_0301 -100
+u03A5_0301 u03B9_0308 -55
+u03A5_0301 *o -100
+u03A5_0301 *m -79
+u03A5_0301 mc -79
+u03A5_0301 *k -79
+u03A5_0301 *i -55
+u03A5_0301 *y -55
+u03A5_0301 u03B9_0301 -55
+u03A5_0301 u03B7_0301 -55
+u03A5_0301 u03B1_0301 -100
+u03A5_0301 *W -88
+u03A5_0301 *O -88
+u03A5_0301 *L -164
+u03A5_0301 *D -125
+u03A5_0301 *A -164
+u03A5_0301 *f -100
+u03A5_0301 *s -111
+u03A5_0301 *d -83
+u03A5_0301 *a -100
+u03A5_0301 *F -113
+u03A5_0301 *H -88
+u03A9_0301 *U -49
+*A *x -68
+*A *n -74
+*A *g -68
+*A u03A5_0308 -151
+*A *U -151
+*A *T -109
+*A *O -41
+*A *F -41
+*A *H -41
+*A ' -109
+*A cq -109
+*A u0020 -55
+*G *i -35
+*G *L -154
+*G *D -118
+*G *A -154
+*G u03B9_0308_0301 37
+*G . -120
+*G , -120
+*D u03A5_0308 -92
+*D *U -92
+*D *T -68
+*D *O -18
+*D u0020 -55
+*H u03A5_0308 -49
+*H *U -49
+*H *L -47
+*H *D -24
+*H *A -47
+*K u03C9_0301 -37
+*K *w -37
+*K *c -37
+*K *h -37
+*K *z -37
+*K u03B1_0301 -37
+*K *T -43
+*K *O -68
+*K *f -37
+*K *s -37
+*K *d -37
+*K *a -37
+*K *F -68
+*K *H -68
+*L u03A5_0308 -151
+*L *U -151
+*L *T -109
+*L *O -41
+*L *H -41
+*L u0020 -25
+*O u03A5_0308 -49
+*O *U -49
+*O *L -47
+*O *D -24
+*O *A -47
+*R *L -90
+*R *D -78
+*R *A -90
+*R . -109
+*R , -109
+*S *t -18
+*T u03C5_0301 -37
+*T u03BF_0301 -68
+*T u03C5_0308 -37
+*T *q -37
+*T *x -35
+*T *o -68
+*T *n -35
+*T *m -37
+*T mc -37
+*T *i -35
+*T *y -37
+*T *g -49
+*T u03B5_0301 -68
+*T u03B1_0301 -68
+*T *W -18
+*T *O -18
+*T *L -107
+*T *D -83
+*T *A -80
+*T u03B9_0308_0301 37
+*T *f -68
+*T *s -68
+*T *e -68
+*T *d -68
+*T *a -68
+*T *F -18
+*T *H -18
+*T ; -48
+*T : -48
+*T . -74
+*T - -90
+*T hy -90
+*T , -74
+*T u0020 -18
+*U u03BF_0301 -100
+*U u03B9_0308 -55
+*U *o -100
+*U *m -79
+*U mc -79
+*U *k -79
+*U *i -55
+*U *y -55
+*U *g -101
+*U u03B9_0301 -55
+*U u03B7_0301 -55
+*U u03B1_0301 -100
+*U *W -88
+*U *O -88
+*U *L -164
+*U *D -125
+*U *A -164
+*U *f -100
+*U *s -111
+*U *d -83
+*U *a -100
+*U *F -113
+*U *H -88
+*U ; -90
+*U : -90
+*U . -124
+*U - -109
+*U hy -109
+*U , -127
+*U u0020 -37
+*F u03A5_0308 -75
+*F *U -75
+*F *A -47
+*X u03C9_0301 -32
+*X *w -32
+*Q u03C9_0301 -63
+*Q u03BF_0301 -63
+*Q *w -63
+*Q *o -63
+*Q *h -18
+*Q u03B1_0301 -63
+*Q *f -63
+*Q *s -63
+*Q *d -63
+*Q *a -63
+*W u03A5_0308 -49
+*W *U -49
+u03A5_0308 u03BF_0301 -100
+u03A5_0308 u03B9_0308 -55
+u03A5_0308 *o -100
+u03A5_0308 *m -79
+u03A5_0308 mc -79
+u03A5_0308 *k -79
+u03A5_0308 *i -55
+u03A5_0308 *y -55
+u03A5_0308 u03B9_0301 -55
+u03A5_0308 u03B7_0301 -55
+u03A5_0308 u03B1_0301 -100
+u03A5_0308 *W -88
+u03A5_0308 *O -88
+u03A5_0308 *L -164
+u03A5_0308 *D -125
+u03A5_0308 *A -164
+u03A5_0308 *f -100
+u03A5_0308 *s -111
+u03A5_0308 *d -83
+u03A5_0308 *a -100
+u03A5_0308 *F -88
+u03A5_0308 *H -88
+u03A5_0308 u0020 -37
+*g *e -17
+*z u03C9_0301 -36
+*z u03BF_0301 -36
+*z *w -36
+*z *o -37
+*z *n -36
+*z *k -28
+*z *i -59
+*z *h -36
+*z *y -39
+*z *g -36
+*z u03B7_0301 -39
+*z u03B1_0301 -36
+*z *f -36
+*z *t -73
+*z *s -36
+*z *d -36
+*z *a -36
+*k u03C9_0301 -8
+*k u03BF_0301 -21
+*k *w -8
+*k ts -21
+*k *o -21
+*k *c -21
+*k u03B1_0301 -8
+*k *f -8
+*k *s -21
+*k *d -21
+*k *a -8
+*l u03C5_0301 -18
+*l u03C5_0308 -18
+*l *u -18
+*l *n -19
+*l *k -8
+*l *i -12
+*l *y -8
+*l u03C5_0308_0301 -18
+*l u03B7_0301 -8
+*c u03BF_0301 -37
+*c ts -37
+*c *o -37
+*c *c -37
+*c *z -37
+*c u03B1_0301 -37
+*c *f -37
+*c *s -37
+*c *d -37
+*c *a -37
+*x u03C9_0301 -21
+*x u03BF_0301 -21
+*x *w -21
+*x ts -21
+*x *o -21
+*x u03B1_0301 -21
+*x *f -21
+*x *s -21
+*x *d -21
+*x *a -21
+u0413_0301 em -24
+u0413_0301 Fc -24
+u0413_0301 Fo -62
+u0413_0301 . -138
+u0413_0301 , -138
+u0409 ' -49
+u0409 cq -49
+u040A ' -49
+u040A cq -49
+u0410 u0444 -38
+u0410 u0443 -49
+u0410 u0442 -49
+u0410 u0441 -24
+u0410 u043E -50
+u0410 u0435 -24
+u0410 u0431 -50
+u0410 u0430 -13
+u0410 u042D -24
+u0410 u0427 -151
+u0410 u0424 -62
+u0410 u0423 -87
+u0410 u0422 -87
+u0410 u0421 -49
+u0410 u041E -49
+u0410 u0417 -24
+u0410 ' -87
+u0410 cq -87
+u0411 u0443 -24
+u0411 u043B -13
+u0411 u0434 -24
+u0411 u042F -33
+u0411 u042A -38
+u0411 u0427 -49
+u0411 u0425 -24
+u0411 u0424 -15
+u0411 u0423 -35
+u0411 u0422 -13
+u0411 u0421 -6
+u0411 u041E -6
+u0411 u041B -24
+u0411 u0416 -24
+u0411 u0414 -38
+u0411 u0410 -13
+u0412 u0447 -24
+u0412 u0445 -13
+u0412 u0443 -13
+u0412 u0434 -24
+u0412 u042F -49
+u0412 u042A -53
+u0412 u0427 -49
+u0412 u0425 -24
+u0412 u0423 -81
+u0412 u0422 -13
+u0412 u041B -38
+u0412 u0416 -24
+u0412 u0414 -38
+u0412 u0410 -62
+u0413 u044F -75
+u0413 u044E -49
+u0413 u044C -62
+u0413 u044B -62
+u0413 u0443 -38
+u0413 u0440 -62
+u0413 u043E -87
+u0413 u043D -38
+u0413 u043C -38
+u0413 u043B -75
+u0413 u0438 -38
+u0413 u0435 -76
+u0413 u0434 -75
+u0413 u0432 -38
+u0413 u0430 -24
+u0413 u042F -75
+u0413 u0421 -13
+u0413 u041E -24
+u0413 u041C -13
+u0413 u041B -75
+u0413 u0417 24
+u0413 u0414 -87
+u0413 u0410 -108
+u0413 em -24
+u0413 Fc -24
+u0413 Fo -62
+u0413 . -112
+u0413 , -112
+u0414 u0437 24
+u0414 u0435 12
+u0414 u042D 24
+u0414 u0423 12
+u0414 u0417 24
+u0415 u041B -13
+u0415 u0417 12
+u0416 u0443 -48
+u0416 u043E -50
+u0416 u0435 -50
+u0416 u0431 -49
+u0416 u0430 -24
+u0416 u042A -9
+u0416 u0423 -14
+u0416 u0422 -17
+u0416 u0421 -24
+u0416 u041E -24
+u0416 u0417 -24
+u0417 u043B -13
+u0417 u0434 -24
+u0417 u042F -38
+u0417 u0427 -38
+u0417 u0423 -24
+u0417 u041B -43
+u0417 u0416 -13
+u0417 u0414 -61
+u041A u044D -13
+u041A u0443 -75
+u041A u0442 -38
+u041A u0441 -24
+u041A u043E -49
+u041A u0437 -13
+u041A u0435 -38
+u041A u0430 -13
+u041A u042D 12
+u041A u0427 -13
+u041A u0424 -43
+u041A u0423 -20
+u041A u0421 -24
+u041A u041E -24
+u041B u0443 -24
+u041B u043E -24
+u041B u0435 -6
+u041B u0431 -13
+u041B u0424 -13
+u041C u0447 -38
+u041C u0443 -24
+u041C u043E -24
+u041C u0435 -13
+u041C u0424 -13
+u041E u0434 -13
+u041E u042F -71
+u041E u0427 -24
+u041E u0425 -78
+u041E u0424 12
+u041E u0423 -56
+u041E u0421 12
+u041E u041B -49
+u041E u0416 -24
+u041E u0414 -49
+u041E u0410 -49
+u0420 u044F -38
+u0420 u044D 24
+u0420 u043E -24
+u0420 u0435 -13
+u0420 u0434 -38
+u0420 u042F -62
+u0420 u0425 -70
+u0420 u0424 -17
+u0420 u0423 -24
+u0420 u0422 12
+u0420 u0421 12
+u0420 u041E 12
+u0420 u041B -75
+u0420 u0417 12
+u0420 u0416 -35
+u0420 u0414 -75
+u0420 u0410 -127
+u0420 Fc 24
+u0420 ; 37
+u0420 : 37
+u0420 . -125
+u0420 , -125
+u0421 u044D 12
+u0421 u0447 -13
+u0421 u0443 -24
+u0421 u0442 -13
+u0421 u0441 12
+u0421 u0435 12
+u0421 u0431 12
+u0421 u042A -13
+u0421 u0427 -24
+u0421 u0425 -25
+u0421 u0423 -13
+u0421 u041B -24
+u0421 u0414 -49
+u0421 u0410 -49
+u0422 u044F -38
+u0422 u044E -49
+u0422 u044C -62
+u0422 u044B -49
+u0422 u0449 -38
+u0422 u0445 -49
+u0422 u0443 -49
+u0422 u0441 -38
+u0422 u0440 -38
+u0422 u043F -38
+u0422 u043E -75
+u0422 u043C -24
+u0422 u043B -49
+u0422 u043A -24
+u0422 u0438 -24
+u0422 u0435 -38
+u0422 u0432 -49
+u0422 u0430 -24
+u0422 u042F -38
+u0422 u0424 -21
+u0422 u041E -13
+u0422 u041C -13
+u0422 u041B -49
+u0422 u0414 -62
+u0422 u0410 -49
+u0422 Fc -25
+u0422 Fo -49
+u0422 . -100
+u0422 , -100
+u0423 u044F -112
+u0423 u044E -87
+u0423 u0449 -87
+u0423 u0448 -87
+u0423 u0446 -87
+u0423 u0445 -100
+u0423 u0441 -120
+u0423 u0440 -87
+u0423 u043F -87
+u0423 u043E -112
+u0423 u043D -87
+u0423 u043C -87
+u0423 u043B -112
+u0423 u043A -87
+u0423 u0438_0306 -49
+u0423 u0438 -87
+u0423 u0437 -87
+u0423 u0436 -87
+u0423 u0435 -120
+u0423 u0434 -140
+u0423 u0433 -87
+u0423 u0432 -112
+u0423 u0431 -62
+u0423 u042F -112
+u0423 u042D -13
+u0423 u0424 -74
+u0423 u041E -49
+u0423 u041B -112
+u0423 u0417 -13
+u0423 u0414 -101
+u0423 u0410 -190
+u0423 em -24
+u0423 Fc -62
+u0423 Fo -87
+u0423 ; -38
+u0423 : -38
+u0423 . -163
+u0423 , -163
+u0424 u043B -49
+u0424 u042F -87
+u0424 u0427 -62
+u0424 u0423 -76
+u0424 u0422 -24
+u0424 u041E 12
+u0424 u041B -75
+u0424 u0414 -87
+u0424 u0410 -62
+u0425 u0443 -87
+u0425 u043E -62
+u0425 u042D -13
+u0425 u0424 -87
+u0425 u0421 -38
+u0425 u041E -50
+u0425 u0417 -24
+u0426 u043E -13
+u0426 u041E -13
+u0429 u0443 12
+u042A u042F -60
+u042A ' -62
+u042A cq -62
+u042C u042F -53
+u042C u042D -13
+u042C u0427 -111
+u042C u0425 -71
+u042C u0422 -75
+u042C u0421 -24
+u042C u041E -24
+u042C u041C -40
+u042C u041B -40
+u042C u0417 -38
+u042C u0416 -62
+u042C u0414 -73
+u042C u0410 -42
+u042C ' -62
+u042C cq -62
+u042D u043B -13
+u042D u0434 -24
+u042D u042F -54
+u042D u0425 -50
+u042D u0424 4
+u042D u041E 12
+u042D u041B -62
+u042D u0417 12
+u042D u0416 -24
+u042D u0414 -83
+u042E u043B -13
+u042E u0436 12
+u042E u0434 -24
+u042E u0427 -38
+u042E u0425 -90
+u042E u0422 -24
+u042E u041E 12
+u042E u041B -49
+u042E u0416 -69
+u042E u0414 -75
+u042E u0410 -38
+u0430 u0447 -40
+u0430 u0443 -50
+u0430 u0442 -25
+u0430 u043F -13
+u0430 u043B 8
+u0431 u044F -24
+u0431 u044A -24
+u0431 u0447 -38
+u0431 u0445 -38
+u0431 u0443 -38
+u0431 u043C -9
+u0431 u043B -24
+u0431 u0436 -24
+u0431 u0435 -13
+u0431 u0434 -24
+u0432 u044F -13
+u0432 u044A -24
+u0432 u0447 -38
+u0432 u0444 -13
+u0432 u0443 -34
+u0432 u0442 -24
+u0432 u0441 -5
+u0432 u043E -6
+u0432 u043C -17
+u0432 u043B -13
+u0432 u0436 -28
+u0432 u0435 -5
+u0432 u0434 -24
+u0432 u0431 -13
+u0432 u0430 -13
+u0433 u044F -24
+u0433 u043E -24
+u0433 u043C -13
+u0433 u043B -50
+u0433 u0435 -13
+u0433 u0434 -49
+u0433 . -112
+u0433 , -112
+u0434 u044D 24
+u0434 u0437 12
+u0435 u0447 -24
+u0435 u0445 -13
+u0435 u0444 12
+u0435 u0443 -24
+u0435 u0441 24
+u0435 u0437 12
+u0435 u0434 -13
+u0435 u0430 12
+u0435 e 12
+u0436 u044A -13
+u0436 u0447 -24
+u0436 u0441 -18
+u0436 u043E -24
+u0436 u0437 12
+u0436 u0435 -13
+u0436 u0431 -13
+u0437 u044A -17
+u0437 u0447 -20
+u0437 u0444 -6
+u0437 u0443 -20
+u0437 u043E -5
+u0437 u043C -14
+u0437 u0437 12
+u0437 u0436 -18
+u0437 u0434 -18
+u043A u044D -13
+u043A u0447 -39
+u043A u0444 -24
+u043A u0443 -14
+u043A u0442 -13
+u043A u0441 -24
+u043A u043E -50
+u043A u0437 -13
+u043A u0435 -24
+u043A u0431 -24
+u043A u0430 -15
+u043A Fo -25
+u043C u044D 12
+u043C u0430 -6
+u043E u044F -19
+u043E u044D 12
+u043E u0447 -25
+u043E u0445 -24
+u043E u0443 -38
+u043E u0442 -13
+u043E u0441 24
+u043E u043C -19
+u043E u043B -13
+u043E u0436 -24
+u043E u0435 12
+u043E u0434 -28
+u0440 u044D 24
+u0440 u0447 -24
+u0440 u0443 -13
+u0440 u0442 -13
+u0440 u043C -15
+u0440 u043B -13
+u0440 u0437 12
+u0440 u0434 -13
+u0441 u044D 12
+u0441 u0447 -20
+u0441 u0445 -13
+u0441 u0444 12
+u0441 u0443 -13
+u0441 u0437 24
+u0441 u0435 12
+u0441 u0431 12
+u0441 u0430 12
+u0442 u044F -13
+u0442 u044D 24
+u0442 u0443 -13
+u0442 u0441 12
+u0442 u0440 12
+u0442 u043E -13
+u0442 u043B -24
+u0442 u0437 12
+u0442 u0436 12
+u0442 u0434 -13
+u0442 u0430 12
+u0442 . -75
+u0442 , -75
+u0443 u044F -24
+u0443 u0444 -24
+u0443 u043E -24
+u0443 u043C -13
+u0443 u043B -43
+u0443 u0436 -13
+u0443 u0435 -13
+u0443 u0434 -62
+u0443 u0431 -13
+u0443 u0430 -13
+u0443 Fc 24
+u0443 ; -13
+u0443 : -13
+u0443 . -100
+u0443 , -100
+u0444 u044F -13
+u0444 u0447 -26
+u0444 u0444 -5
+u0444 u0443 -24
+u0444 u043B -24
+u0444 u0434 -24
+u0445 u044D -13
+u0445 u044A -38
+u0445 u0447 -49
+u0445 u0444 -38
+u0445 u0443 -38
+u0445 u0442 -24
+u0445 u0441 -28
+u0445 u043E -38
+u0445 u0437 -13
+u0445 u0435 -24
+u0445 u0431 -38
+u0445 u0430 -13
+u0446 u0437 12
+u044C u0447 -76
+u044C u0442 -38
+u044D u044F -13
+u044D u0445 -39
+u044D u0444 -5
+u044D u043C -8
+u044D u043B -18
+u044D u0436 -37
+u044D u0434 -51
+u044E u0447 -38
+u044E u0445 -39
+u044E u0444 -5
+u044E u0442 -13
+u044E u043C -13
+u044E u043B -24
+u044E u0436 -24
+u044E u0434 -50
+u0443_0306 Fc 12
+u0443_0306 . -100
+u0443_0306 , -100
+u0490 em -24
+u0490 Fc -38
+u0490 Fo -87
+u0490 ; -24
+u0490 : -24
+u0490 . -99
+u0490 , -99
+` ` -74
+` oq -74
+oq ` -74
+oq oq -74
+' ' -74
+' cq -74
+cq ' -74
+cq cq -74
+' t -18
+cq t -18
+' s -55
+cq s -55
+' u0020 -74
+cq u0020 -74
+bq u042A -100
+bq u0427 -187
+bq u0422 -100
+bq u040B -100
+bq u0402 -100
+Bq u042A -100
+Bq u0427 -187
+Bq u0422 -100
+Bq u040B -100
+Bq u0402 -100
+
+charset
+space 250 0 32 space
+! 333,655,15 2 33 exclam
+" 408,655 2 34 quotedbl
+dq "
+# 500,655 2 35 numbersign
+sh "
+$ 500,725,77 2 36 dollar
+Do "
+% 833,666,14 2 37 percent
+& 777,666,10 2 38 ampersand
+aq 180,655 2 39 quotesingle
+( 333,694,213 3 40 parenleft
+) 333,694,213 3 41 parenright
+* 500,655 2 42 asterisk
++ 563,565 2 43 plus
+, 250,104,154 0 44 comma
+- 333,273 0 45 hyphen
+hy "
+. 250,105,15 0 46 period
+/ 277,660,10,1 2 47 slash
+sl "
+0 500,666,10 2 48 zero
+1 500,661 2 49 one
+2 500,663 2 50 two
+3 500,663,10 2 51 three
+4 500,659 2 52 four
+5 500,655,10 2 53 five
+6 500,663,10 2 54 six
+7 500,655 2 55 seven
+8 500,666,10 2 56 eight
+9 500,663,10 2 57 nine
+: 277,470,15 0 58 colon
+; 277,470,154 0 59 semicolon
+< 563,574 2 60 less
+= 563,458 0 61 equal
+> 563,574 2 62 greater
+? 443,663,15 2 63 question
+@ 920,667,190 2 64 at
+at "
+A 722,661 2 65 A
+B 666,655,3 2 66 B
+C 666,663,10 2 67 C
+D 722,655,2 2 68 D
+E 610,655 2 69 E
+F 556,655 2 70 F
+G 722,663,10 2 71 G
+H 722,655 2 72 H
+I 333,655 2 73 I
+J 389,655,10 2 74 J
+K 722,655 2 75 K
+L 610,655 2 76 L
+M 889,655 2 77 M
+N 722,655 2 78 N
+O 722,663,10 2 79 O
+P 556,655 2 80 P
+Q 722,663,163 2 81 Q
+R 666,655 2 82 R
+S 556,663,10 2 83 S
+T 610,655 2 84 T
+U 722,655,10 2 85 U
+V 722,655,16 2 86 V
+W 943,655,16 2 87 W
+X 722,655 2 88 X
+Y 722,655 2 89 Y
+Z 610,655 2 90 Z
+[ 333,694,134 2 91 bracketleft
+lB "
+\ 277,660,10,1 2 92 backslash
+rs "
+] 333,694,134 2 93 bracketright
+rB "
+ha 469,655 2 94 asciicircum
+_ 500,0,129,8,8 0 95 underscore
+ga 333,696 2 96 grave
+a 443,470,10 0 97 a
+b 500,694,10 2 98 b
+c 443,472,10 0 99 c
+d 500,694,10 2 100 d
+e 443,472,10 0 101 e
+f 333,705,0,1 2 102 f
+g 500,514,216 1 103 g
+h 500,694 2 104 h
+i 277,663 2 105 i
+j 277,663,213,0,29 3 106 j
+k 500,694 2 107 k
+l 277,694 2 108 l
+m 777,472 0 109 m
+n 500,472 0 110 n
+o 500,472,10 0 111 o
+p 500,472,213 1 112 p
+q 500,481,213 1 113 q
+r 333,472 0 114 r
+s 389,472,10 0 115 s
+t 277,563,10 2 116 t
+u 500,459,10 0 117 u
+v 500,459,10 0 118 v
+w 722,459,10 0 119 w
+x 500,459 0 120 x
+y 500,459,216 1 121 y
+z 443,459 0 122 z
+{ 479,694,134 2 123 braceleft
+lC "
+| 200,694,216 3 124 bar
+ba "
+} 479,694,134 2 125 braceright
+rC "
+ti 541,414 0 126 asciitilde
+space 250 0 160 space
+r! 333,470,201 0 161 exclamdown
+ct 500,655 2 162 cent
+Po 500,663 2 163 sterling
+Cs 500,535 0 164 currency
+Ye 500,655 2 165 yen
+bb 200,694,216 3 166 brokenbar
+sc 500,679,125 2 167 section
+ad 333,632 2 168 dieresis
+co 759,666,10 2 169 copyright
+Of 275,666 2 170 ordfeminine
+Fo 500,417 0 171 guillemotleft
+tno 563,357 0 172 logicalnot
+- 333,273 0 173 hyphen
+hy "
+rg 759,666,10 2 174 registered
+a- 500,755,0,9,9 2 175 uni00AF
+de 399,666 2 176 degree
+t+- 548,565 2 177 plusminus
+S2 299,660 2 178 uni00B2
+S3 299,660 2 179 uni00B3
+aa 333,696 2 180 acute
+mc 576,459,213 1 181 uni00B5
+ps 453,655,126 2 182 paragraph
+pc 333,391 0 183 uni00B7
+ac 333,9,213 1 184 cedilla
+S1 299,658 2 185 uni00B9
+Om 310,666 2 186 ordmasculine
+Fc 500,417 0 187 guillemotright
+14 750,658 2 188 onequarter
+12 750,658 2 189 onehalf
+34 750,660 2 190 threequarters
+r? 443,470,208 0 191 questiondown
+`A 722,859 2 192 Agrave
+'A 722,859 2 193 Aacute
+^A 722,859 2 194 Acircumflex
+~A 722,837 2 195 Atilde
+:A 722,811 2 196 Adieresis
+oA 722,820 2 197 Aring
+AE 889,655 2 198 AE
+,C 666,663,213 3 199 Ccedilla
+`E 610,859 2 200 Egrave
+'E 610,859 2 201 Eacute
+^E 610,859 2 202 Ecircumflex
+:E 610,811 2 203 Edieresis
+`I 333,859 2 204 Igrave
+'I 333,859 2 205 Iacute
+^I 333,859 2 206 Icircumflex
+:I 333,811 2 207 Idieresis
+-D 722,655,2 2 208 Eth
+~N 722,837 2 209 Ntilde
+`O 722,859,10 2 210 Ograve
+'O 722,859,10 2 211 Oacute
+^O 722,859,10 2 212 Ocircumflex
+~O 722,837,10 2 213 Otilde
+:O 722,811,10 2 214 Odieresis
+tmu 563,537 0 215 multiply
+/O 722,680,27 2 216 Oslash
+`U 722,859,10 2 217 Ugrave
+'U 722,859,10 2 218 Uacute
+^U 722,859,10 2 219 Ucircumflex
+:U 722,811,10 2 220 Udieresis
+'Y 722,859 2 221 Yacute
+TP 556,655 2 222 Thorn
+ss 500,705,10 2 223 germandbls
+`a 443,696,10 2 224 agrave
+'a 443,696,10 2 225 aacute
+^a 443,696,10 2 226 acircumflex
+~a 443,674,10 2 227 atilde
+:a 443,632,10 2 228 adieresis
+oa 443,725,10 2 229 aring
+ae 666,472,10 0 230 ae
+,c 443,472,213 1 231 ccedilla
+`e 443,696,10 2 232 egrave
+'e 443,696,10 2 233 eacute
+^e 443,696,10 2 234 ecircumflex
+:e 443,632,10 2 235 edieresis
+`i 277,696 2 236 igrave
+'i 277,696 2 237 iacute
+^i 277,696,0,20,20 2 238 icircumflex
+:i 277,632,0,0,3 2 239 idieresis
+Sd 500,706,10 2 240 eth
+~n 500,674 2 241 ntilde
+`o 500,696,10 2 242 ograve
+'o 500,696,10 2 243 oacute
+^o 500,696,10 2 244 ocircumflex
+~o 500,674,10 2 245 otilde
+:o 500,632,10 2 246 odieresis
+tdi 548,566 2 247 divide
+/o 500,500,42 0 248 oslash
+`u 500,696,10 2 249 ugrave
+'u 500,696,10 2 250 uacute
+^u 500,696,10 2 251 ucircumflex
+:u 500,632,10 2 252 udieresis
+'y 500,696,216 3 253 yacute
+Tp 500,694,213 3 254 thorn
+:y 500,632,216 3 255 ydieresis
+u006B_0331 500,694,117 2 256 uni1E35
+u0438_0308 535,632 2 257 uni04E5
+u0047_0302 722,859,10 2 258 Gcircumflex
+u0475_030F 588,696,10 2 259 uni0477
+--- 333,685,0,13,14 2 260 cyrillicbreve
+u02E6_02E9_02E7 542,688 2 261 uni02E602E902E7
+u05E7_05BC 535,587,190 2 262 qofdagesh
+u05B4 0,0,170,40,40 0 263 hiriq
+u04F7 410,459,194 0 264 uni04F7
+u03C9_0314_0301 658,696,10 2 265 uni1F65
+u02E7_02E5_02E9 542,688 2 266 uni02E702E502E9
+u03B1_0313_0300_0345 523,696,217 3 267 uni1F82
+u0263 500,459,217 1 268 uni0263
+u004F_031B 722,715,10,33 2 269 Ohorn
+u02D4 333,251 0 270 uni02D4
+u0262 453,472,10 0 271 uni0262
+u03B1_0314_0300_0345 523,696,217 3 272 uni1F83
+u004E_0307 722,826 2 273 uni1E44
+*b 508,705,213 3 274 beta
+u1DB4 215,691,0,3,2 2 275 uni1DB4
+u0285 436,472,217 1 276 uni0285
+--- 0,674,0,326 2 277 tilde.alt6
+u02E7_02E7_02E8 542,688 2 278 uni02E702E702E8
+fc 333,417 0 279 guilsinglright
+u02E9_02E7_02E5 542,688 2 280 uni02E902E702E5
+u059B 0,0,188,74,105 0 281 uni059B
+--- 0,438,0,116,117 0 282 one.alt
+u0365 0,675,0,72,72 2 283 uni0365
+u05E8 491,589,6 2 284 resh
+u0417 500,663,10 2 285 uni0417
+--- 0,0,152,0,399 0 286 dotbelow.alt5
+u256B 708,911,304,6,5 3 287 uni256B
+u0052_0323_0304 666,774,166 2 288 uni1E5C
+--- 488,587 2 289 yodyod
+u0188 443,595,10,101 2 290 uni0188
+u0045_030F 610,859 2 291 uni0204
+u0069_0304 277,611,0,16,14 2 292 imacron
+u01B7 539,655,217 3 293 uni01B7
+u1D36 246,668 2 294 uni1D36
+uA71D 333,892 2 295 uniA71D
+u0483 0,681,0,163,165 2 296 uni0483
+u221F 979,598 2 297 orthogonal
+*k 503,459 0 298 kappa
+u0482 333,694,10 2 299 uni0482
+u0465 677,472,10 0 300 uni0465
+u027C 333,472,213 1 301 uni027C
+u02B1 321,697 2 302 uni02B1
+u03C9_0342_0345 658,674,217 3 303 uni1FF7
+u02E2 212,558 0 304 uni02E2
+u1D7D 500,472,213 1 305 uni1D7D
+18 750,658,5 2 306 oneeighth
+u0317 0,0,216,101,100 1 307 uni0317
+u0041_0306_0301 722,888 2 308 uni1EAE
+u2077 299,655 2 309 sevensuperior
+u03B9_0301 269,706,10 2 310 uni1F77
+u02FC 333,0,217 1 311 uni02FC
+u0041_030F 722,859 2 312 uni0200
+u03C1_0314 499,696,213 3 313 uni1FE5
+u02E3 289,550 0 314 uni02E3
+u0061_0306_0301 443,725,10 2 315 uni1EAF
+u03E5 520,705 2 316 uni03E5
+u1D1D 504,456,15 0 317 uni1D1D
+u1D01 645,459 0 318 uni1D01
+u01A6 556,655,110,120 2 319 uni01A6
+*u 495,471,10 0 320 upsilon
+u03C5_0306_0314_0301 495,892,10 2 321 uni03C5030603140301
+u005A_0323 610,655,166 2 322 uni1E92
+u03F7 556,655 2 323 uni03F7
+u25CF 604,498 0 324 uni25CF
+u02D0 277,459 0 325 uni02D0
+u004D_0307 889,826 2 326 uni1E40
+u018A 814,655,2 2 327 uni018A
+u021C 562,663,217 3 328 uni021C
+u02E6_02E8_02E9 542,688 2 329 uni02E602E802E9
+u2006 166,0 0 330 uni2006
+u25E6 354,433 0 331 openbullet
+u1DB0 321,550 0 332 uni1DB0
+u007A_0323 443,459,166 0 333 uni1E93
+u0294 443,709 2 334 uni0294
+u0066_0307 333,844,0,1 2 335 uni1E1F
+u0056_0323 722,655,166 2 336 uni1E7E
+u05E0_05BC 325,589 2 337 nundagesh
+u0397_0301 808,656,0,0,36 2 338 Etatonos
+u1DAD 488,550 0 339 uni1DAD
+u02E7_02E9 382,688 2 340 uni02E702E9
+u25AC 1000,301 0 341 filledrect
+u0048_0308 722,795 2 342 uni1E26
+u0053_0307 556,826,10 2 343 uni1E60
+u0045_0307 610,826 2 344 uni0116
+u03C9_0314_0342_0345 658,818,217 3 345 uni1FA7
+*y 522,472,213 1 346 eta
+--- 230,554 0 347 geresh
+u03A9_0301 743,663,0,0,30 2 348 Omegatonos
+u050B 787,459,10 0 349 uni050B
+u03B7_0301 522,706,213 3 350 etatonos
+u2310 563,357 0 351 revlogicalnot
+u03A5_0314 859,656 2 352 uni1F59
+u02AC 514,655,7 2 353 uni02AC
+u03B9_0313 269,696,10 2 354 uni1F30
+u1DC5 0,725,0,154,154 2 355 uni1DC5
+*Y 722,655 2 356 Eta
+u0059_0300 722,859 2 357 Ygrave
+u0055_0323 722,655,166 2 358 uni1EE4
+uF00D 0,895,208,21,113 2 359 uniF00D
+u02E6_02E6_02E9 542,688 2 360 uni02E602E602E9
+u0359 0,0,217,103,102 1 361 uni0359
+u03B1_0342 523,674,10 2 362 uni1FB6
+u0330 0,0,189,159,159 0 363 uni0330
+u0434 508,459,194 0 364 uni0434
+u01F6 949,655,10 2 365 uni01F6
+u1D58 327,550 0 366 uni1D58
+--- 277,470,15 0 367 sofpasuq
+u0046_0307 556,826 2 368 uni1E1E
+u0076_0323 500,459,166 0 369 uni1E7F
+u03B9_0304_0314_0300 269,840,10,18,21 2 370 uni03B9030403140300
+u0445 500,459 0 371 uni0445
+--- 0,439,0,134,135 0 372 zero.alt
+u004F_031B_0303 722,837,10,33 2 373 uni1EE0
+u0334 0,399,0,159,159 0 374 uni0334
+u0430 443,470,10 0 375 uni0430
+u0459 727,459,10 0 376 uni0459
+u0062_0307 500,694,10 2 377 uni1E03
+u02E5_02E9_02E5 542,688 2 378 uni02E502E902E5
+u0042_0307 666,826,3 2 379 uni1E02
+u1D25 538,472,10 0 380 uni1D25
+u0072_030C 333,696 2 381 rcaron
+u025F 333,459,217,0,60 1 382 uni025F
+u0399_0301 411,656,0,0,36 2 383 Iotatonos
+u1D91 500,705,213,74 3 384 uni1D91
+u04A7 789,459,217 1 385 uni04A7
+u0049_030C 333,859 2 386 uni01CF
+u05EA 609,587,10 2 387 tav
+u0345 0,0,217,63,62 1 388 uni0345
+u006F_0328 500,472,197 0 389 uni01EB
+u0045_0323_0302 610,859,166 2 390 uni1EC6
+u0061_030C 443,696,10 2 391 uni01CE
+u0290 443,459,217,103 1 392 uni0290
+u03BF_0314_0301 500,696,10 2 393 uni1F45
+u1D5A 488,550 0 394 uni1D5A
+u004F_0302_0300 722,888,10 2 395 uni1ED2
+--- 0,0 0 396 null
+u0243 666,655,3 2 397 uni0243
+*Z 610,655 2 398 Zeta
+u006F_0302_0300 500,725,10 2 399 uni1ED3
+u0242 397,472 0 400 uni0242
+u0053_0301_0307 556,891,10 2 401 uni1E64
+u04B6 649,655,213 3 402 uni04B6
+u025E 442,472,10 0 403 uni025E
+u03B9_0313_0301 269,696,10,2 2 404 uni1F34
+--- 0,896,0,0,458 2 405 hookabove.alt3
+u05E6_05BC 523,589 2 406 tsadidagesh
+u1D0F 500,472,10 0 407 uni1D0F
+u004E_032D 722,655,217 3 408 uni1E4A
+u0180 500,694,10,0,3 2 409 uni0180
+u023B 666,724,62 2 410 uni023B
+u2557 708,427,304,0,5 1 411 uni2557
+u1DBA 293,556,0,4,3 0 412 uni1DBA
+u0061_0323 443,470,166 0 413 uni1EA1
+rn 333,792,0,30,30 2 414 uni203E
+u0069_0309 277,675 2 415 uni1EC9
+u202D 0,689,134,117,117 2 416 uni202D
+u0078_0307 500,663 2 417 uni1E8B
+u02BE 333,725 2 418 uni02BE
+u0456 277,663 2 419 uni0456
+u2C75 659,655 2 420 uni2C75
+u0055_0306 722,847,10 2 421 Ubreve
+--- 600,821,188,0,6 2 422 aleflamedhatafsegol
+u02BF 333,725 2 423 uni02BF
+u201B 333,666 2 424 quotereversed
+u04B9 502,459 0 425 uni04B9
+u0049_0311 333,847 2 426 uni020A
+*X 722,655 2 427 Chi
+u049B 485,459,194,2 0 428 uni049B
+u1D6C 500,694,10,0,42 2 429 uni1D6C
+u1D0E 535,459 0 430 uni1D0E
+u0138 500,459 0 431 kgreenlandic
+u026D 277,694,213,37 3 432 uni026D
+u1D87 500,472,217 1 433 uni1D87
+== 563,501 0 434 equivalence
+u02E5_02E7_02E7 542,688 2 435 uni02E502E702E7
+u0391_0314_0301_0345 791,671,217 3 436 uni1F8D
+u1D13 541,440 0 437 uni1D13
+u1DB8 325,550 0 438 uni1DB8
+u004E_0331 722,655,117 2 439 uni1E48
+u03C5_0313_0342 495,818,10 2 440 uni1F56
+u0065_0306 443,684,10 2 441 ebreve
+u1D12 537,437 0 442 uni1D12
+u02E8_02E5 382,688 2 443 uni02E802E5
+u2C67 722,655,194 2 444 uni2C67
+u0045_0306 610,847 2 445 Ebreve
+u0068_0327 500,694,213 3 446 uni1E29
+u20A5 777,578,131 2 447 uni20A5
+/L 610,655 2 448 Lslash
+u0055_0308_0304 722,892,10 2 449 uni01D5
+u048D 470,694 2 450 uni048D
+u02E5_02E5_02E6 542,688 2 451 uni02E502E502E6
+u0049_030F 333,859,0,0,25 2 452 uni0208
+u0184 574,655 2 453 uni0184
+u0397_0314_0300_0345 1015,666,217 3 454 uni1F9B
+u0356 0,0,217,166,166 1 455 uni0356
+u02E9_02E6_02E9 542,688 2 456 uni02E902E602E9
+u02E8_02E6_02E7 542,688 2 457 uni02E802E602E7
+u1D73 333,472,0,0,36 0 458 uni1D73
+u0391_0304 722,774 2 459 uni1FB9
+u03C5_0306_0314_0300 495,892,10 2 460 uni03C5030603140300
+u02ED 333,663 2 461 uni02ED
+u006E_0300 500,696 2 462 uni01F9
+u1D72 333,472,0,0,41 0 463 uni1D72
+--- 467,821,15,0,6 2 464 lamedwide
+u05DF 254,588,202 2 465 finalnun
+u1D9E 287,698 2 466 uni1D9E
+u029A 442,472,10 0 467 uni029A
+u1D50 488,558 0 468 uni1D50
+u1D39 540,668 2 469 uni1D39
+u2117 759,666,10 2 470 uni2117
+u040B 741,655 2 471 uni040B
+u0338 0,694,10,163,149 2 472 uni0338
+u0397_0345 722,655,217 3 473 uni1FCC
+u266A 500,563 2 474 musicalnote
+u0251 522,472,10 0 475 uni0251
+u1DA3 321,550 0 476 uni1DA3
+u0041_0328 722,661,197 2 477 Aogonek
+ah 333,696 2 478 caron
+u25BA 989,584,14 2 479 triagrt
+u0399_0313 470,656 2 480 uni1F38
+u042C 574,655 2 481 uni042C
+u05DC_05B9 467,821,15,0,73 2 482 lamedholam
+u02E8_02E8_02E7 542,688 2 483 uni02E802E802E7
+u02E9_02E8_02E9 542,688 2 484 uni02E902E802E9
+u2009 200,0 0 485 uni2009
+u0072_0327 333,472,213 1 486 uni0157
+u1DA2 266,558 0 487 uni1DA2
+tm 979,655 2 488 trademark
+u014A 701,660,10 2 489 Eng
+u0055_0303 722,837,10 2 490 Utilde
+u03B9_0304_0314_0301 269,840,10,18,21 2 491 uni03B9030403140301
+--- 0,0,152,0,326 0 492 dotbelow.alt12
+u0055_031B_0300 775,859,10 2 493 uni1EEA
+u0053_0323_0307 556,826,166 2 494 uni1E68
+u043A 485,459,0,2 0 495 uni043A
+u2015 1000,258,0,7,7 0 496 uni2015
+u01A9 582,655 2 497 uni01A9
+u01C1 280,694 2 498 uni01C1
+u04D9_0308 443,632,10 2 499 uni04DB
+u006F_0306 500,684,10 2 500 obreve
+--- 0,439,0,126,138 0 501 six.alt
+u1D9F 241,558 0 502 uni1D9F
+u014B 494,472,213 1 503 eng
+u05E2 565,589 2 504 ayin
+u024D 333,472 0 505 uni024D
+u0061_0304 443,611,10 2 506 amacron
+u032C 0,0,217,159,159 1 507 uni032C
+u0391_0314_0300 791,671 2 508 uni1F0B
+u0075_031B_0323 541,569,166,28 2 509 uni1EF1
+u006F_031B_0300 528,696,10,12 2 510 uni1EDD
+u05E1 568,587,9 2 511 samekh
+u033A 0,0,216,181,182 1 512 uni033A
+u05A7 0,0,188,77,78 0 513 uni05A7
+u0074_032D 277,563,217,43 3 514 uni1E71
+u0045_0303 610,837 2 515 uni1EBC
+u03DB 419,512,177 0 516 uni03DB
+u02E9_02E9_02E7 542,688 2 517 uni02E902E902E7
+u02E8_02E9_02E9 542,688 2 518 uni02E802E902E9
+u0298 722,663,10 2 519 uni0298
+u1D4C 241,558 0 520 uni1D4C
+u0064_0323 500,694,166 2 521 uni1E0D
+u0061_0307 443,663,10 2 522 uni0227
+u0399_0301 481,656 2 523 uni1FDB
+OE 889,659,3 2 524 OE
+u0399_0313_0300 626,666 2 525 uni1F3A
+a. 333,663 2 526 dotaccent
+--- 0,435,0,139,129 0 527 seven.alt
+u0067_0307 500,663,216 3 528 uni0121
+u0064_0327 500,694,249 3 529 uni1E11
+--- 518,588,192 2 530 finalpedagesh
+u1D54 288,558 0 531 uni1D54
+u030B 0,696,0,171,171 2 532 uni030B
+u0195 770,694,10 2 533 uni0195
+u0397_0313_0301 1015,666 2 534 uni1F2C
+u05D9 262,587 2 535 yod
+u02E6_02E7_02E5 542,688 2 536 uni02E602E702E5
+u0438 535,459 0 537 uni0438
+u05DA 491,589,195 2 538 finalkaf
+u0054_0307 610,826 2 539 uni1E6A
+u0055_031B_0301 775,859,10 2 540 uni1EE8
+u04CC 502,459,194 0 541 uni04CC
+u0413 578,655 2 542 uni0413
+lq 443,667 2 543 quotedblleft
+u04B8 649,655 2 544 uni04B8
+u1FFE_0301 333,696 2 545 uni1FDE
+u03DF 451,694 2 546 uni03DF
+u0412 666,655,3 2 547 uni0412
+u036C 0,561,0,91,92 0 548 uni036C
+u2078 299,660 2 549 eightsuperior
+u030E 0,696,0,84,84 2 550 uni030E
+58 750,655,5 2 551 fiveeighths
+u0391_0300 722,661 2 552 uni1FBA
+u0070_0301 500,696,213 3 553 uni1E55
+u02E5_02E7_02E9 542,688 2 554 uni02E502E702E9
+u0391_0314_0342 791,801 2 555 uni1F0F
+u255D 708,911,0,0,5 2 556 uni255D
+u02E5_02E5_02E8 542,688 2 557 uni02E502E502E8
+u1D8D 500,459,217 1 558 uni1D8D
+u0443_030B 500,696,216 3 559 uni04F3
+u0053_0301 556,859,10 2 560 Sacute
+u051D 722,459,10 0 561 uni051D
+u004C_032D 610,655,217 3 562 uni1E3C
+u030F 0,696,0,180,162 2 563 uni030F
+u0267 500,705,213 3 564 uni0267
+u0049_0309 333,853 2 565 uni1EC8
+--- 0,696,0,258 2 566 grave.alt2
+u042D_0308 660,811,10 2 567 uni04EC
+u03B1_0314_0342_0345 523,818,217 3 568 uni1F87
+u0391_0313_0342 791,801 2 569 uni1F0E
+u0501 500,694,10 2 570 uni0501
+u0423_030B 708,859,10 2 571 uni04F2
+u03A9_0313_0301 929,666 2 572 uni1F6C
+u1FFE_0342 333,818 2 573 uni1FDF
+u0473 500,472,10 0 574 uni0473
+--- 0,674,0,326 2 575 tilde.alt5
+u0472 722,663,10 2 576 uni0472
+u0048_032E 722,655,206 2 577 uni1E2A
+u028C 500,469 0 578 uni028C
+u03DE 575,655 2 579 uni03DE
+--- 0,674,0,326 2 580 tilde.alt8
+u03F3 277,663,213,0,29 3 581 uni03F3
+u03EC 699,719,10 2 582 uni03EC
+u2C6D 723,663,10 2 583 uni2C6D
+u0043_030C 666,859,10 2 584 Ccaron
+u040F 722,655,213 3 585 uni040F
+u04BA 649,655 2 586 uni04BA
+--- 643,661 2 587 UNI2206
+u0069_030F 277,696,0,2,63 2 588 uni0209
+u03C5_0304_0314_0300 495,840,10 2 589 uni03C5030403140300
+u03F2 443,471,10 0 590 uni03F2
+u0074_0308 277,721,10 2 591 uni1E97
+--- 0,674,0,326 2 592 tilde.alt7
+u004E_0300 722,895 2 593 uni01F8
+u03B5_0313_0300 419,696,10 2 594 uni1F12
+u1D56 311,558 0 595 uni1D56
+u0075_030F 500,696,10 2 596 uni0215
+DI 510,598,13 2 597 diamond
+pc 250,391 0 598 periodcentered
+u0391_0306 722,847 2 599 uni1FB8
+u05E7 535,587,190 2 600 qof
+--- 480,588,13 2 601 daletwide
+u0417_0308 500,811,10 2 602 uni04DE
+u02E9_02E6_02E7 542,688 2 603 uni02E902E602E7
+u03B5_0314_0300 419,696,10 2 604 uni1F13
+u02E8_02E6_02E9 542,688 2 605 uni02E802E602E9
+u0079_0300 500,696,216 3 606 ygrave
+fo 333,417 0 607 guilsinglleft
+--- 277,459 0 608 bari.dotless
+u0061_0307_0304 443,731,10 2 609 uni01E1
+u0313 0,727,0,55,55 2 610 uni0313
+u03B5_0300 419,706,10 2 611 uni1F72
+u02E9_02E5 382,688 2 612 uni02E902E5
+u0437_0308 395,632,10 2 613 uni04DF
+u1DB9 290,558 0 614 uni1DB9
+u03B5_0301 419,706,10 2 615 uni1F73
+u0049_0323 333,655,166 2 616 uni1ECA
+u02E7 382,709 2 617 uni02E7
+u1D9B 313,556 0 618 uni1D9B
+u0275 500,472,10 0 619 uni0275
+u046C 1208,661 2 620 uni046C
+u006E_0331 500,472,117 0 621 uni1E49
+u0312 0,727,0,55,55 2 622 uni0312
+--- 0,0,152,0,511 0 623 dotbelow.alt4
+u01B3 780,663 2 624 uni01B3
+u0048_0327 722,655,213 3 625 uni1E28
+u0423_0306 708,848,10 2 626 uni040E
+u03C9_0300_0345 658,706,217 3 627 uni1FF2
+u0487 0,685,0,276,295 2 628 uni0487
+u02F5 333,246,0,31,32 0 629 uni02F5
+u0047_0306 722,847,10 2 630 Gbreve
+u03A1_0314 693,656 2 631 uni1FEC
+u25AA 354,436 0 632 uni25AA
+u01B2 722,665,10 2 633 uni01B2
+u03C9_0345 658,469,217 1 634 uni1FF3
+--- 0,655,0,220,220 2 635 cyrillic_otmark
+--- 0,725,0,149,234 2 636 circumflexgrave
+u03B9_0306_0314_0301 269,892,10,4,8 2 637 uni03B9030603140301
+u02E8_02E8_02E9 542,688 2 638 uni02E802E802E9
+u02E9_02E8_02E7 542,688 2 639 uni02E902E802E7
+ci 604,521 0 640 circle
+u2008 250,0 0 641 uni2008
+u2561 708,911,304,0,5 3 642 uni2561
+u0399_0314 470,656 2 643 uni1F39
+u03C5_0313 495,696,10 2 644 uni1F50
+u01A8 389,472,10 0 645 uni01A8
+u0591 0,0,188,93,92 0 646 uni0591
+--- 0,674,0,326 2 647 tilde.alt4
+u0397_0313_0342_0345 1015,801,217 3 648 uni1F9E
+u05E4_05BC 523,587 2 649 pedagesh
+u05EA_05BC 609,587,10 2 650 tavdagesh
+u0073_0323_0307 389,663,166 2 651 uni1E69
+u044C 456,459 0 652 uni044C
+u0397_0314_0342_0345 1015,801,217 3 653 uni1F9F
+u2302 600,563 2 654 house
+u02CD 333,0,132 0 655 uni02CD
+u017F 277,705,0,38 2 656 longs
+u0126 722,655 2 657 Hbar
+u03C9_0313_0300_0345 658,696,217 3 658 uni1FA2
+u0053_0327 556,663,213 3 659 Scedilla
+u0339 0,0,217,50,50 1 660 uni0339
+u0350 0,701,0,60,61 2 661 uni0350
+--- 0,696,0,276 2 662 acute.alt3
+u0454 429,472,10 0 663 uni0454
+u1D38 371,668 2 664 uni1D38
+u02A5 853,694,70 2 665 uni02A5
+u03C9_0314_0300_0345 658,696,217 3 666 uni1FA3
+u05AD 0,0,188,161 0 667 uni05AD
+u039F_0313_0301 898,666,10 2 668 uni1F4C
+--- 488,675 2 669 kafrafe
+u0079_0307 500,663,216 3 670 uni1E8F
+u200A 83,0 0 671 uni200A
+u049E 666,655,0,5 2 672 uni049E
+u0186 666,663,10 2 673 uni0186
+u05E0 325,589 2 674 nun
+u0354 0,0,217,60,61 1 675 uni0354
+u0435_0300 443,696,10 2 676 uni0450
+uFE23 0,727,0,378 2 677 uniFE23
+u2518 708,911,0,0,5 2 678 uni2518
+u206D 0,693,134,118,118 2 679 uni206D
+u0438_0306 535,685 2 680 uni0439
+u0049_0307 333,826 2 681 Idotaccent
+u0247 443,632,169 2 682 uni0247
+u1D0B 539,459 0 683 uni1D0B
+u0075_031B_0301 541,696,10,28 2 684 uni1EE9
+u006F_0302_0303 500,743,10 2 685 uni1ED7
+u023F 389,472,217 1 686 uni023F
+u01AA 343,700,217,35 3 687 uni01AA
+uFE22 0,727,0,0,377 2 688 uniFE22
+ho 333,8,197 0 689 ogonek
+u04A3 535,459,194 0 690 uni04A3
+u2026 1000,105,15 0 691 ellipsis
+u1D2C 421,671,0,2,1 2 692 uni1D2C
+u023E 610,701,32 2 693 uni023E
+u03C5_0313_0301 495,696,10 2 694 uni1F54
+u04A2 722,655,194 2 695 uni04A2
+u02BB 333,667 2 696 uni02BB
+u0059_0307 722,826 2 697 uni1E8E
+u006F_0303_0304 500,732,10 2 698 uni022D
+u0299 472,459 0 699 uni0299
+u02E8_02E9_02E7 542,688 2 700 uni02E802E902E7
+u1D3A 462,668 2 701 uni1D3A
+u0062_0331 500,694,117 2 702 uni1E07
+pd 494,722,14 2 703 partialdiff
+u034C 0,768,0,159,159 2 704 uni034C
+u004C_030C 610,655 2 705 Lcaron
+u049F 485,694,0,2 2 706 uni049F
+u03B1_0301_0345 523,706,217 3 707 uni1FB4
+u0436 690,459,0,6,4 0 708 uni0436
+u02E8_02E7_02E5 542,688 2 709 uni02E802E702E5
+u2090 273,194,95 0 710 uni2090
+u0513 499,459,213 1 711 uni0513
+u0055_0309 722,853,10 2 712 uni1EE6
+u02E7_02E6 382,688 2 713 uni02E702E6
+u01CB 1000,663,213 3 714 uni01CB
+u1D83 596,514,216,11 1 715 uni1D83
+u0430_0306 443,685,10 2 716 uni04D1
+u04FD 500,459,217 1 717 uni04FD
+u0512 678,655,217 3 718 uni0512
+u0049_0303 333,837 2 719 Itilde
+u1D82 333,705,217,1 3 720 uni1D82
+u1D65 293,188,95,5,3 0 721 uni1D65
+u0292_030C 443,696,217 3 722 uni01EF
+u05E9 708,588 2 723 shin
+u0047_0301 722,859,10 2 724 uni01F4
+u047D 791,762,10 2 725 uni047D
+u205E 277,678,15 2 726 uni205E
+u0045_0302_0300 610,888 2 727 uni1EC0
+u05D7 591,589,13 2 728 het
+u00D8_0301 722,859,27 2 729 Oslashacute
+u0189 722,655,2 2 730 uni0189
+u03B9_0308 269,632,10,0,8 2 731 iotadieresis
+u025B 419,472,10 0 732 uni025B
+u0296 443,694,10 2 733 uni0296
+u041D 722,655 2 734 uni041D
+u02E6_02E9_02E9 542,688 2 735 uni02E602E902E9
+u0415_0308 610,813 2 736 uni0401
+u0048_0323 722,655,166 2 737 uni1E24
+u2552 708,427,304,6 1 738 uni2552
+ab 333,684 2 739 breve
+u01B7_030C 539,859,217 3 740 uni01EE
+--- 0,696,0,258 2 741 grave.alt3
+u2553 708,339,304,6 1 742 uni2553
+IJ 708,655,10 2 743 IJ
+u04B0 722,655 2 744 uni04B0
+u02E7_02E5_02E7 542,688 2 745 uni02E702E502E7
+u050F 601,459,10 0 746 uni050F
+u0075_0308_0300 500,806,10 2 747 uni01DC
+u031D 0,0,217,79,79 1 748 uni031D
+u03C5_0304_0314_0301 495,840,10 2 749 uni03C5030403140301
+u1D77 500,472,258 1 750 uni1D77
+u05BA 0,711,0,40,40 2 751 uni05BA
+u02E5_02E6_02E5 542,688 2 752 uni02E502E602E5
+u0110 722,655,2 2 753 uni0110
+u0073_0302 389,696,10 2 754 scircumflex
+u0047_0304 722,774,10 2 755 uni1E20
+u0053_030C_0307 556,881,10 2 756 uni1E66
+u03C9_0301 658,706,10 2 757 uni1F7D
+u0065_0330 443,472,189 0 758 uni1E1B
+uA717 0,891,0,97,97 2 759 uniA717
+u01BD 443,459,10 0 760 uni01BD
+u02E6_02E8_02E7 542,688 2 761 uni02E602E802E7
+u00B4 333,706 2 762 uni1FFD
+u03B9_0304 269,611,10,18,21 2 763 uni1FD1
+u04B4 796,655,213 3 764 uni04B4
+u03B9_0313_0342 269,818,10,24,24 2 765 uni1F36
+u03B1_0306 523,684,10 2 766 uni1FB0
+u0336 0,360,0,251,251 0 767 uni0336
+u2094 256,195,95 0 768 uni2094
+u02E7_02E7_02E6 542,688 2 769 uni02E702E702E6
+u2C63 556,655 2 770 uni2C63
++h 495,694,10,1 2 771 uni03D1
+u03FD 666,663,10 2 772 uni03FD
+u0075_0304_0308 500,745,10 2 773 uni1E7B
+*T 610,655 2 774 Tau
+%0 1000,666,15 2 775 perthousand
+*K 722,655 2 776 Kappa
+u006A_030C 277,696,213,15,29 3 777 uni01F0
+u2C62 610,655 2 778 uni2C62
+^ 333,696 2 779 circumflex
+a^ "
+u1D17 500,231,10 0 780 uni1D17
+u037D 443,472,10 0 781 uni037D
+<= 548,574 2 782 lessequal
+u03B1_0314 523,696,10 2 783 uni1F01
+u050E 695,655,10 2 784 uni050E
+u0395_0314_0301 904,666 2 785 uni1F1D
+u0055_030B 722,859,10 2 786 uni0170
+f/ 166,655,0,177,177 2 787 fraction
+u0045_0302_0303 610,906 2 788 uni1EC4
+u212E 600,536,17 0 789 estimated
+--- 0,0,152,0,433 0 790 dotbelow.alt3
+u02C3 563,574 2 791 uni02C3
+u1D30 429,668 2 792 uni1D30
+u1D59 305,553 0 793 uni1D59
+u02C2 563,576 2 794 uni02C2
+u0425 722,655 2 795 uni0425
+u0358 0,670,0,209 2 796 uni0358
+u03B9_0306_0314_0300 269,892,10,4,17 2 797 uni03B9030603140300
+u02E6_02E6_02E7 542,688 2 798 uni02E602E602E7
+u2514 708,911,0,6 2 799 uni2514
+u0491 351,582 2 800 uni0491
+u1DA7 164,550 0 801 uni1DA7
+u02E5_02E8_02E5 542,688 2 802 uni02E502E802E5
+u006C_0301 277,878 2 803 lacute
+u03A9_0314_0301_0345 929,666,217 3 804 uni1FAD
+u0045_0311 610,847 2 805 uni0206
+ij 552,663,213 3 806 ij
+--- 0,439,0,136,136 0 807 eight.alt
+u045A 723,459 0 808 uni045A
+u2113 479,666,10 2 809 uni2113
+u0384 333,706 2 810 tonos
+u0049_0306 333,847 2 811 Ibreve
+u05E6 523,589 2 812 tsadi
+u20B1 556,655 2 813 uni20B1
+--- 0,696,0,276 2 814 acute.alt2
+u0061_0302_0303 443,743,10 2 815 uni1EAB
+u02D6 333,250 0 816 uni02D6
+u05D9_05BC 262,587,0,0,16 2 817 yoddagesh
+u006F_0307_0304 500,731,10 2 818 uni0231
+u02E6_02E5 382,688 2 819 uni02E602E5
+u1DB6 327,550 0 820 uni1DB6
+u006B_0327 500,694,213 3 821 uni0137
+u2002 500,0 0 822 uni2000
+u0303 0,674,0,326 2 823 tildecomb
+u004E_0323 722,655,166 2 824 uni1E46
+u035A 0,0,217,179,179 1 825 uni035A
+u0063_0302 443,696,10 2 826 ccircumflex
+u04AD 437,459,194 0 827 uni04AD
+u03C5_0301 495,706,10 2 828 upsilontonos
+u2321 604,834,300 3 829 integralbt
+u01A4 649,655 2 830 uni01A4
+u250C 708,339,304,6 1 831 uni250C
+u005A_0301 610,859 2 832 Zacute
+u059E 0,813,0,161,161 2 833 uni059E
+u03B7_0314_0345 522,696,217 3 834 uni1F91
+*Q 737,655 2 835 Psi
+u0223 500,696,10 2 836 uni0223
+u03B7_0314_0301 522,696,213 3 837 uni1F25
+u019C 816,655,13 2 838 uni019C
+u2004 333,0 0 839 uni2004
+u04C5 678,655,213 3 840 uni04C5
+u0222 603,676,10 2 841 uni0222
+u02E7_02E8 382,688 2 842 uni02E702E8
+u05A3 0,0,170,70,90 0 843 uni05A3
+u1D34 440,668 2 844 uni1D34
+u0325 0,0,217,100,100 1 845 uni0325
+u0075_0304 500,611,10 2 846 umacron
+u05A2 0,0,188,93,92 0 847 uni05A2
+u2510 708,339,304,0,5 1 848 uni2510
+u0458 277,663,213,0,29 3 849 uni0458
+u0075_030A 500,725,10 2 850 uring
+u059F 0,883,0,230,231 2 851 uni059F
+u0061_0306_0303 443,743,10 2 852 uni1EB5
+u1D45 313,558 0 853 uni1D45
+u029E 500,459,213 1 854 uni029E
+u01C0 200,694 2 855 uni01C0
+u266B 750,566,21 2 856 musicalnotedbl
+u0055_0330 722,655,189 2 857 uni1E74
+u0077_0323 722,459,166 0 858 uni1E89
+u02E8_02E9_02E6 542,688 2 859 uni02E802E902E6
+u2017 500,0,257,8,8 1 860 underscoredbl
+u25AB 354,436 0 861 uni25AB
+u043F 535,459 0 862 uni043F
+u03C5_0308 495,632,10 2 863 upsilondieresis
+u0059_0323 722,655,166 2 864 uni1EF4
+u0075_031B_0303 541,674,10,28 2 865 uni1EEF
+u0239 772,481,213 1 866 uni0239
+u0250 443,470,10 0 867 uni0250
+-> 1000,284 0 868 arrowright
+u1D9A 443,459,217 1 869 uni1D9A
+u0069_0323 277,663,166 2 870 uni1ECB
+u0047_030C 722,859,10 2 871 uni01E6
+u0447 502,459 0 872 uni0447
+u03B1_0306_0314_0300 523,892,10 2 873 uni03B1030603140300
+u0055_031B_0303 775,837,10 2 874 uni1EEE
+u03A9 768,663 2 875 Ohm
+integral 273,714,269,52,53 3 876 integral
+is "
+u02A2 443,709 2 877 uni02A2
+u043E 500,472,10 0 878 uni043E
+u02E5_02E9 382,688 2 879 uni02E502E9
+u1D51 281,558 0 880 uni1D51
+u02A3 802,694,10 2 881 uni02A3
+u03C9_0314_0301_0345 658,696,217 3 882 uni1FA5
+u0045_0304_0300 610,892 2 883 uni1E14
+vz 443,696 2 884 zcaron
+u029F 429,459 0 885 uni029F
+u1FBF_0300 333,696 2 886 uni1FCD
+u04BB 500,694 2 887 uni04BB
+u0499 395,472,197 0 888 uni0499
+u1DC7 0,725,0,154,154 2 889 uni1DC7
+u042D 660,663,10 2 890 uni042D
+u033E 0,766,0,51,53 2 891 uni033E
+u2642 750,563 2 892 male
+u1D4D 300,583 2 893 uni1D4D
+u0068_032E 500,694,206 2 894 uni1E2B
+u0399_0314_0342 626,801 2 895 uni1F3F
+u0065_0303 443,674,10 2 896 uni1EBD
+u0506 573,663,194 2 897 uni0506
+u024C 666,655 2 898 uni024C
+u1D98 439,694,217 3 899 uni1D98
+u00F8_0301 500,696,42 2 900 oslashacute
+u0047_0307 722,826,10 2 901 uni0120
+u0044_0327 722,655,249 3 902 uni1E10
+u004F_031B_0300 722,859,10,33 2 903 uni1EDC
+u032D 0,0,217,159,159 1 904 uni032D
+u0074_0331 277,563,117,28,2 2 905 uni1E6F
+u0397_0314_0345 859,656,217 3 906 uni1F99
+u01C4 1333,859,2 2 907 uni01C4
+u0054_032D 610,655,217 3 908 uni1E70
+u02E9_02E9_02E8 542,688 2 909 uni02E902E902E8
+u0397_0314_0301 1015,666 2 910 uni1F2D
+u0391_0301 722,661 2 911 uni1FBB
+u04CD 889,655,213 3 912 uni04CD
+u1D27 500,469 0 913 uni1D27
+u02E7_02E9_02E5 542,688 2 914 uni02E702E902E5
+--- 0,725,0,141,141 2 915 breveacute
+u0054_0331 610,655,117 2 916 uni1E6E
+u03B9_0308_0304_0301 269,843,10,17,22 2 917 uni03B9030803040301
+u04A5 623,459 0 918 uni04A5
+u033F 0,862,0,251,251 2 919 uni033F
+fi 556,705 2 920 uniFB01
+u0055_031B_0323 775,715,166 2 921 uni1EF0
+u0044_0323 722,655,166 2 922 uni1E0C
+u02E9_02E8_02E6 542,688 2 923 uni02E902E802E6
+u0254 443,472,10 0 924 uni0254
+u05B5 0,0,170,96,96 0 925 tsere
+u0399_0313_0342 626,801 2 926 uni1F3E
+u0347 0,0,217,251,251 1 927 uni0347
+u005A_0307 610,826 2 928 uni017B
+u05D9_05B4 262,587 2 929 uniFB1D
+u1D3B 440,668 2 930 uni1D3B
+u02E5_02E7_02E8 542,688 2 931 uni02E502E702E8
+u202C 0,689,134,117,117 2 932 uni202C
+u006F_0304_0301 500,808,10 2 933 uni1E53
+u02BA 365,655 2 934 uni02BA
+u0409 872,655,10 2 935 uni0409
+u004F_0304_0301 722,892,10 2 936 uni1E52
+u05B0 0,0,188,40,40 0 937 sheva
+u006F_0311 500,684,10 2 938 uni020F
+u0367 0,553,0,142,141 0 939 uni0367
+--- 600,592,14 2 940 alefmapiq
+u0415 610,655 2 941 uni0415
+u2524 708,911,304,0,5 3 942 uni2524
+u02DE 333,401,0,0,9 0 943 uni02DE
+u004F_0303_0308 722,892,10 2 944 uni1E4E
+u1DBE 265,550 0 945 uni1DBE
+u02E9_02E6_02E6 542,688 2 946 uni02E902E602E6
+u1D0A 296,459,7 0 947 uni1D0A
+u006C_0323 277,694,166 2 948 uni1E37
+u02DF 381,694 2 949 uni02DF
+u0475 588,472,10 0 950 uni0475
+u026C 277,694 2 951 uni026C
+u006E_0327 500,472,213 1 952 uni0146
+u043E_0308 500,632,10 2 953 uni04E7
+--- 0,892,0,159,159 2 954 uni03030301.cap
+u1DBF 269,694 2 955 uni1DBF
+u0391_0313_0301_0345 791,671,217 3 956 uni1F8C
+u01AB 277,563,213,3 3 957 uni01AB
+da 500,563,30 2 958 arrowdown
+.i 277,459 0 959 dotlessi
+u006F_0303_0308 500,789,10 2 960 uni1E4F
+u03C9_0314_0342 658,818,10 2 961 uni1F67
+u0447_0308 502,632 2 962 uni04F5
+u0181 759,655,3 2 963 uni0181
+u0041_0323 722,661,166 2 964 uni1EA0
+--- 0,0,152,0,423 0 965 dotbelow.alt13
+u02E5_02E5_02E9 542,688 2 966 uni02E502E502E9
+u1D6D 500,694,10,40 2 967 uni1D6D
+u004F_0311 722,847,10 2 968 uni020E
+u0287 277,563,10 2 969 uni0287
+u0127 500,694 2 970 hbar
+u200B 0,0 0 971 uni200B
+u03E7 443,472,5 0 972 uni03E7
+u0375 333,0,217 1 973 uni0375
+u0052_0311 666,847 2 974 uni0212
+u02E9_02E7 382,688 2 975 uni02E902E7
+u02E8_02E6_02E8 542,688 2 976 uni02E802E602E8
+u02B8 296,550 0 977 uni02B8
+u0072_0311 333,684 2 978 uni0213
+u03D9 500,472,213 1 979 uni03D9
+u03B5_0314_0301 419,696,10 2 980 uni1F15
++e 404,472,10 0 981 uni03F5
+u2591 708,830,256,1 3 982 ltshade
+u0041_0302_0301 722,888 2 983 uni1EA4
+u0391_0314 722,662 2 984 uni1F09
+u01B5 610,655 2 985 uni01B5
+u0309 0,690,0,87,81 2 986 uni0309
+--- 250,0 0 987 nonmarkingreturn
+u02F2 333,0,217 1 988 uni02F2
+u00B7 277,391 0 989 anoteleia
+u02F3 333,0,217 1 990 uni02F3
+u0596 0,0,188,74,87 0 991 uni0596
+u02EC 333,0,217 1 992 uni02EC
+u1D08 395,472,10 0 993 uni1D08
+u0467 589,462 0 994 uni0467
+u0272 500,472,213,0,57 1 995 uni0272
+u0315 0,727,0,110 2 996 uni0315
+u2566 708,427,304,6,5 1 997 uni2566
+u0399_0304 333,774 2 998 uni1FD9
+<> 1000,284 0 999 arrowboth
+u048C 574,655 2 1000 uni048C
+u03C5_0308_0342 495,785,10 2 1001 uni1FE7
+u03B7_0301 522,706,213 3 1002 uni1F75
+u0273 500,472,213,64 1 1003 uni0273
+u03B1_0313_0342 523,818,10 2 1004 uni1F06
+u1D94 419,472,217 1 1005 uni1D94
+u02AD 480,655 2 1006 uni02AD
+u03B7_0345 522,472,217 1 1007 uni1FC3
+u0055_0304_0308 722,892,10 2 1008 uni1E7A
+u1DAC 447,558 0 1009 uni1DAC
+u0422 610,655 2 1010 uni0422
+u02E6_02E7 382,688 2 1011 uni02E602E7
+u02C5 563,565 2 1012 uni02C5
+u0423 708,655,10 2 1013 uni0423
++p 658,459,10 0 1014 uni03D6
+u03B7_0300_0345 522,706,217 3 1015 uni1FC2
+u0331 0,0,117,154,154 0 1016 uni0331
+u03B9_0314 269,696,10 2 1017 uni1F31
+u2569 708,911,0,6,5 2 1018 uni2569
+u0045_0330 610,655,189 2 1019 uni1E1A
+u0258 443,472,10 0 1020 uni0258
+u03B9_0342 269,674,10,23,25 2 1021 uni1FD6
+u03B1_0306_0314_0301 523,892,10 2 1022 uni03B1030603140301
+ua 500,563,30 2 1023 arrowup
+u0073_0307 389,663,10 2 1024 uni1E61
+38 750,660,5 2 1025 threeeighths
+u0306 0,684,0,141,141 2 1026 uni0306
+uF00C 0,895,208,113,21 2 1027 uniF00C
+u006C_0327 277,694,213 3 1028 uni013C
+u0599 0,813,0,0,161 2 1029 uni0599
+u05D3_05BC 480,588,13 2 1030 daletdagesh
+u01C8 888,663,213 3 1031 uni01C8
+u0225 443,459,204 0 1032 uni0225
+u0436_0306 690,685,0,6,4 2 1033 uni04C2
+u1D5F 270,694 2 1034 uni1D5F
+u03B7_0314_0300 522,696,213 3 1035 uni1F23
+u0059_0303 722,837 2 1036 uni1EF8
+u03B7_0313_0300 522,696,213 3 1037 uni1F22
+u04C3 666,655,217 3 1038 uni04C3
+u05DC 467,821,15,0,6 2 1039 lamed
+u0049_0328 333,655,197 2 1040 Iogonek
+u006E_030C 500,696 2 1041 ncaron
+--- 0,436,0,144,149 0 1042 four.alt
+u0197 333,655 2 1043 uni0197
+u0406 333,655 2 1044 uni0406
+u0291 495,459,70 0 1045 uni0291
+u0055_0303_0301 722,892,10 2 1046 uni1E78
+u0067_0306 500,684,216 3 1047 gbreve
+u1D42 553,668,0,7,6 2 1048 uni1D42
+--- 0,892,0,154,154 2 1049 uni03040308.cap
+u03B9_0308_0304_0300 269,843,10,17,22 2 1050 uni03B9030803040300
+u0041_0306_0309 722,888 2 1051 uni1EB2
+u025A 626,472,10,1 0 1052 uni025A
+u0061_0306_0309 443,725,10 2 1053 uni1EB3
+u1D90 522,472,217,94 1 1054 uni1D90
+*t 401,459,10 0 1055 tau
+u0045_032D 610,655,217 3 1056 uni1E18
+u1D43 273,557 0 1057 uni1D43
+u01CA 1111,655,10 2 1058 uni01CA
+u1D5E 265,550 0 1059 uni1D5E
+u05A5 0,0,188,87,74 0 1060 uni05A5
+u0322 0,73,213,216 1 1061 uni0322
+u006F_031B_0303 528,674,10,12 2 1062 uni1EE1
+u0415_0306 610,848 2 1063 uni04D6
+u0431 508,716,10 2 1064 uni0431
+u0509 751,459,10 0 1065 uni0509
+u0041_0302_0309 722,888 2 1066 uni1EA8
+u03A5_0314_0300 1020,666 2 1067 uni1F5B
+u2034 416,655 2 1068 uni2034
+u05DB_05BC 488,588 2 1069 kafdagesh
+u1D62 163,310,89 0 1070 uni1D62
+u1D85 277,694,217 3 1071 uni1D85
+u004E_030C 722,859 2 1072 Ncaron
+u02B4 217,550 0 1073 uni02B4
+u253C 708,911,304,6,5 3 1074 uni253C
+Fn 500,666,140 2 1075 florin
+u1D63 229,195,89 0 1076 uni1D63
+u0072_0323_0304 333,611,166 2 1077 uni1E5D
+u02E8_02E5_02E5 542,688 2 1078 uni02E802E502E5
+--- 600,592,14 2 1079 alefdagesh
+--- 0,725,0,141,141 2 1080 brevegrave
+u02E6_02E8_02E6 542,688 2 1081 uni02E602E802E6
+u2555 708,427,304,0,5 1 1082 uni2555
+u02E6_02E9_02E8 542,688 2 1083 uni02E602E902E8
+u03B7_0313_0342_0345 522,818,217 3 1084 uni1F96
+u1D04 478,472,10 0 1085 uni1D04
+u035B 0,795,0,97,95 2 1086 uni035B
+u2C77 577,472,9 0 1087 uni2C77
+u02E7_02E5_02E6 542,688 2 1088 uni02E702E502E6
+u006D_0307 777,663 2 1089 uni1E41
+u0055_0308_0301 722,886,10 2 1090 uni01D7
+u1DB1 288,558 0 1091 uni1DB1
+u1D7C 269,459,10 0 1092 uni1D7C
+u0041_0302_0303 722,887 2 1093 uni1EAA
+u0236 316,563,10 2 1094 uni0236
+u02D1 277,459 0 1095 uni02D1
+u006B_030C 500,879 2 1096 uni01E9
+u02FD 397,0,217 1 1097 uni02FD
+u1D00 502,462 0 1098 uni1D00
+uA71C 500,933 2 1099 uniA71C
+u045B 500,694 2 1100 uni045B
+u0057_0307 943,826,16 2 1101 uni1E86
+u027D 333,472,213 1 1102 uni027D
+u018F 722,663,10 2 1103 uni018F
+u0061_030F 443,696,10 2 1104 uni0201
+u018E 610,655 2 1105 uni018E
+u2593 729,830,304,1 3 1106 dkshade
+u021D 395,472,217 1 1107 uni021D
+u0496 895,655,213,1 3 1108 uni0496
+u1D1C 537,459,10 0 1109 uni1D1C
+u2C65 443,648,186 2 1110 uni2C65
+u02B0 321,691 2 1111 uni02B0
+if 712,480 0 1112 infinity
+--- 382,663 2 1113 maqaf
+--- 0,896,0,0,367 2 1114 hookabove.alt2
+u00C6_0301 889,859 2 1115 AEacute
+u05DA_05B8 491,589,195 2 1116 finalkafqamats
+u2003 1000,0 0 1117 uni2001
+u1DC2 0,0,217,40,39 1 1118 uni1DC2
+u045F 535,459,197 0 1119 uni045F
+u03A9_0313_0301_0345 929,666,217 3 1120 uni1FAC
+u0259 443,472,10 0 1121 uni0259
+u1DC3 0,684,0,175,175 2 1122 uni1DC3
+u018B 574,655 2 1123 uni018B
+u004F_0307_0304 722,892,10 2 1124 uni0230
+u2568 708,911,0,6,5 2 1125 uni2568
+u0598 0,814,0,146,146 2 1126 uni0598
+u004A_0302 389,859,10,16 2 1127 Jcircumflex
+u20B0 500,663,214 3 1128 uni20B0
+*B 666,655,3 2 1129 Beta
+u01C9 555,694,213 3 1130 uni01C9
+u03B7_0313_0301_0345 522,696,217 3 1131 uni1F94
+u1D06 524,459,2 0 1132 uni1D06
+*A 722,661 2 1133 Alpha
+u02A7 459,694,217,18 3 1134 uni02A7
+u05DC_05BC 467,821,15,0,6 2 1135 lameddagesh
+u03B1_0304_0314_0301 523,840,10 2 1136 uni03B1030403140301
+u0442 437,459 0 1137 uni0442
+u0490 450,821 2 1138 uni0490
+--- 0,674,0,326 2 1139 tilde.alt13
+u0443 500,459,216 1 1140 uni0443
+u0443_0306 500,685,216 3 1141 uni045E
+u02E6_02E6_02E8 542,688 2 1142 uni02E602E602E8
+u02B6 293,550 0 1143 uni02B6
+u03B1_0301 523,706,10 2 1144 alphatonos
+fm 218,655 2 1145 minute
+u1D31 370,668 2 1146 uni1D31
+u0065_032D 443,472,217 1 1147 uni1E19
+u0342 0,674,0,159,159 2 1148 uni0342
+u256A 708,911,304,6,5 3 1149 uni256A
+u019D 722,655,217,0,75 3 1150 uni019D
+u0494 631,655,217 3 1151 uni0494
+u0313 0,705,0,55,55 2 1152 uni0343
+u035E 0,655,0,584,26 2 1153 uni035E
+u04AC 610,655,213 3 1154 uni04AC
+u1D22 443,459 0 1155 uni1D22
+u0062_0323 500,694,166 2 1156 uni1E05
+--- 277,892,0,1 2 1157 dottediacute
+u03A5_0314_0342 1020,801 2 1158 uni1F5F
+u1D23 395,459,10 0 1159 uni1D23
+*N 722,655 2 1160 Nu
+u059A 0,0,188,158 0 1161 uni059A
+` 333,667 2 1162 quoteleft
+oq "
+u0079_0303 500,674,216 3 1163 uni1EF9
+u035F 0,0,131,584,26 0 1164 uni035F
+u0234 277,694,217,54 3 1165 uni0234
+u05D3 480,588,13 2 1166 dalet
+u03BF_0314_0300 500,696,10 2 1167 uni1F43
+u25C4 989,584,14 2 1168 triaglf
+u20B4 556,663,10 2 1169 uni20B4
+u0053_0302 556,859,10 2 1170 Scircumflex
+u0245 725,661 2 1171 uni0245
+u03B7_0313_0345 522,696,217 3 1172 uni1F90
+u0075_0303_0301 500,857,10 2 1173 uni1E79
+u006F_0302_0309 500,725,10 2 1174 uni1ED5
+--- 491,589,6 2 1175 vavvav
+u03BF_0313_0300 500,696,10 2 1176 uni1F42
+u0282 389,472,217 1 1177 uni0282
+u03C9_0314_0300 658,696,10 2 1178 uni1F63
+u02E7_02E5_02E8 542,688 2 1179 uni02E702E502E8
+u04B1 500,459,213 1 1180 uni04B1
+u047C 1212,933,10 2 1181 uni047C
+u0265 500,459,213 1 1182 uni0265
+--- 0,881,0,139,139 2 1183 uni030C0307.cap
+u03C5_0308_0301 495,720,10 2 1184 upsilondieresistonos
+u02E9_02E5_02E5 542,688 2 1185 uni02E902E502E5
+u0057_0300 943,859,16 2 1186 Wgrave
+u03B1_0314_0301_0345 523,696,217 3 1187 uni1F85
+u03C9_0313_0300 658,696,10 2 1188 uni1F62
+u0283 333,694,217,17,16 3 1189 uni0283
+u0415_0300 610,859 2 1190 uni0400
+u0304 0,611,0,154,154 2 1191 uni0304
+u04FC 722,655,217 3 1192 uni04FC
+u05D4 575,589,13 2 1193 he
+u006B_0323 500,694,166 2 1194 uni1E33
+u1D5B 293,550,0,4,3 0 1195 uni1D5B
+u0077_0300 722,696,10 2 1196 wgrave
+u0438_0304 535,611 2 1197 uni04E3
+u0061_030A_0301 443,896,10 2 1198 aringacute
+u0418_0304 722,774 2 1199 uni04E2
+u03C5_0308_0304_0301 495,843,10 2 1200 uni03C5030803040301
+*n 452,459,10 0 1201 nu
+u004B_0323 722,655,166 2 1202 uni1E32
+u0065_0302_0300 443,725,10,0,2 2 1203 uni1EC1
+u0061_0302_0309 443,725,10 2 1204 uni1EA9
+u0508 906,655,10 2 1205 uni0508
+u004F_0328 722,663,197 2 1206 uni01EA
+u03B1_0313_0301 523,696,10 2 1207 uni1F04
+u214D 881,676,27,0,1 2 1208 uni214D
+u1D96 277,663,217,110 3 1209 uni1D96
+u041C 889,655 2 1210 uni041C
+u0362 0,0,200,478,85 0 1211 uni0362
+u2153 750,658,4 2 1212 onethird
+u02E7_02E7_02E9 542,688 2 1213 uni02E702E702E9
+u0070_0307 500,663,213 3 1214 uni1E57
+sq 604,599 2 1215 uni25A1
+u2091 256,195,95 0 1216 uni2091
+u0363 0,560,0,119,119 0 1217 uni0363
+u03D2_0308 722,813,0,10 2 1218 uni03D4
+u0410_0306 722,848 2 1219 uni04D0
+u01BC 500,655,10 2 1220 uni01BC
+u0075_030B 500,696,10 2 1221 uni0171
+u03C5_0308_0300 495,816,10 2 1222 uni1FE2
+u03C5_0308_0301 495,816,10 2 1223 uni1FE3
+Bq 443,104,154 0 1224 quotedblbase
+u0277 658,472,10 0 1225 uni0277
+u02E5 382,709 2 1226 uni02E5
+u03B1_0313 523,696,10 2 1227 uni1F00
+u03A9_0345 743,663,217 3 1228 uni1FFC
+*l 484,705 2 1229 lambda
+u0462 670,655 2 1230 uni0462
+u2075 299,655 2 1231 fivesuperior
+u031C 0,0,217,50,50 1 1232 uni031C
+--- 0,711,0,40,40 2 1233 sindot
+u01DD 443,472,10 0 1234 uni01DD
+u01F1 1333,655,2 2 1235 uni01F1
+u0485 0,727,0,55,55 2 1236 uni0485
+u03B1_0304 523,611,10 2 1237 uni1FB1
+u03C9_0300 658,706,10 2 1238 uni1F7C
+u02F7 333,0,189 0 1239 uni02F7
+u03D0 508,705,10 2 1240 uni03D0
+u04D4 889,655 2 1241 uni04D4
+u0463 542,694 2 1242 uni0463
+u03B9_0306 269,684,10,4,8 2 1243 uni1FD0
+u037C 443,471,10 0 1244 uni037C
+u050A 949,655,10 2 1245 uni050A
+u004B_030C 722,859 2 1246 uni01E8
+u02E6_02E8_02E8 542,688 2 1247 uni02E602E802E8
+u007A_0331 443,459,117 0 1248 uni1E95
+u0395_0313_0301 904,666 2 1249 uni1F1C
+u20AD 722,655 2 1250 uni20AD
+u004F_0306 722,847,10 2 1251 Obreve
+u02E6_02E9_02E6 542,688 2 1252 uni02E602E902E6
+u0404 660,663,10 2 1253 uni0404
+u03FC 499,470,213 1 1254 uni03FC
+u03E3 777,459,217 1 1255 uni03E3
+u0111 500,694,10 2 1256 uni0111
+u0067_0304 500,611,216 3 1257 uni1E21
+u03E2 828,655,217 3 1258 uni03E2
+>= 548,574 2 1259 greaterequal
+sum 712,655,213 3 1260 summation
+u0075_0311 500,684,10 2 1261 uni0217
+u05B3 0,0,188,133,132 0 1262 hatafqamats
+u21A8 500,563,90 2 1263 arrowupdnbse
+u0397_0313_0300_0345 1015,666,217 3 1264 uni1F9A
+u044D 429,472,10 0 1265 uni044D
+u0351 0,702,0,50,50 2 1266 uni0351
+u00E6_0301 666,696,10 2 1267 aeacute
+u0498 500,663,197 2 1268 uni0498
+uF005 333,0,213 1 1269 uniF005
+u03B1_0304_0314_0300 523,840,10 2 1270 uni03B1030403140300
+u05E3 518,588,192 2 1271 finalpe
+u0073_0301 389,696,10 2 1272 sacute
+u03B7_0342_0345 522,674,217 3 1273 uni1FC7
+u0067_0302 500,696,216 3 1274 gcircumflex
+u02E9_02E9_02E6 542,688 2 1275 uni02E902E902E6
+u2012 500,258,0,7,7 0 1276 uni2012
+bq 333,104,154 0 1277 quotesinglbase
+u0427 649,655 2 1278 uni0427
+u0057_0323 943,655,166 2 1279 uni1E88
+u1DA5 182,550 0 1280 uni1DA5
+u02E7_02E8_02E5 542,688 2 1281 uni02E702E802E5
+*i 269,459,10 0 1282 iota
+u0238 773,694,10 2 1283 uni0238
+u2580 708,911,0,1 2 1284 upblock
+u2560 708,911,304,6 3 1285 uni2560
+*q 625,602,213 3 1286 psi
+u02CC 333,0,217 1 1287 uni02CC
+u03C5_0314 495,696,10 2 1288 uni1F51
+u02E9_02E8_02E8 542,688 2 1289 uni02E902E802E8
+u20A7 968,655,10 2 1290 peseta
+u006A_0302 277,696,213,21,29 3 1291 jcircumflex
+--- 0,440,0,118,126 0 1292 two.alt
+u206C 0,689,134,118,118 2 1293 uni206C
+u02E8_02E9_02E8 542,688 2 1294 uni02E802E902E8
+u0327 0,9,213,95,94 1 1295 uni0327
+u0397_0313_0345 859,655,217 3 1296 uni1F98
+u01AE 610,655,217 3 1297 uni01AE
+u0041_0306 722,847 2 1298 Abreve
+u0594 0,842,0,125 2 1299 uni0594
+u2564 708,427,304,6,5 1 1300 uni2564
+u1D3F 409,668 2 1301 uni1D3F
+u02E8_02E8_02E6 542,688 2 1302 uni02E802E802E6
+HE 593,560,12 0 1303 heart
+u05AC 0,816,0,70,90 2 1304 uni05AC
+u039F_0314_0301 898,666,10 2 1305 uni1F4D
+u02E6_02E5_02E5 542,688 2 1306 uni02E602E502E5
+u006F_031B 528,569,10,12 2 1307 ohorn
+u200E 0,691,134,213,21 2 1308 uni200E
+u0061_0323_0306 443,669,166 2 1309 uni1EB7
+u049A 666,655,213,5 3 1310 uni049A
+u0069_0311 277,684,0,0,8 2 1311 uni020B
+u1D47 309,691 2 1312 uni1D47
+u0058_0307 722,826 2 1313 uni1E8A
+u004F_0303_0304 722,892,10 2 1314 uni022C
+u0193 722,802,10,68 2 1315 uni0193
+u1D3E 331,668 2 1316 uni1D3E
+u0435_0308 443,632,10 2 1317 uni0451
+u034D 0,0,200,124,124 0 1318 uni034D
+--- 0,0,152,0,322 0 1319 dotbelow.alt7
+u200F 0,691,134,20,213 2 1320 uni200F
+br 708,911,304 3 1321 uni2502
+u0041_0302_0300 722,888 2 1322 uni1EA6
+u263B 1052,584,14 2 1323 invsmileface
+u03B7_0314_0342 522,818,213 3 1324 uni1F27
+u1DBB 273,550 0 1325 uni1DBB
+u02E5_02E8 382,688 2 1326 uni02E502E8
+u023A 722,682,51 2 1327 uni023A
+u006E_032D 500,472,217 1 1328 uni1E4B
+u04C7 722,655,217 3 1329 uni04C7
+u1D99 500,459,217,111 1 1330 uni1D99
+u1D2D 538,668,0,0,2 2 1331 uni1D2D
+u030A 0,725,0,100,100 2 1332 uni030A
+u03B9 333,0,217 1 1333 uni1FBE
+u05B7 512,587 2 1334 yodyod_patah
+u2C72 998,663,16,2 2 1335 uni2C72
+u2C73 823,465,10 0 1336 uni2C73
+u0073_0327 389,472,213 1 1337 scedilla
+u02E8_02E6_02E6 542,688 2 1338 uni02E802E602E6
+u255C 708,911,0,0,5 2 1339 uni255C
+u0074_0307 277,751,10 2 1340 uni1E6B
+u05DA_05B0 491,589,195 2 1341 finalkafsheva
+u0045_0304_0301 610,892 2 1342 uni1E16
+u03C5_0308_0304_0300 495,843,10 2 1343 uni03C5030803040300
+u0399_0300 470,656 2 1344 uni1FDA
+u0500 574,655 2 1345 uni0500
+u0052_030C 666,859 2 1346 Rcaron
+uA78C 180,655 2 1347 uniA78C
+'c 443,696,10 2 1348 cacute
+u0069_0308_0301 277,806,0,2,1 2 1349 uni1E2F
+u036D 0,616,0,79,79 2 1350 uni036D
+u02E5_02E5_02E7 542,688 2 1351 uni02E502E502E7
+u0399_0314_0300 626,666 2 1352 uni1F3B
+u033B 0,0,217,84,84 1 1353 uni033B
+u0065_0328 443,472,197 0 1354 eogonek
+u02E5_02E6 382,688 2 1355 uni02E502E6
+u0055_032D 722,655,217 3 1356 uni1E76
+u03A9_0314_0301 929,666 2 1357 uni1F6D
+u028D 722,469 0 1358 uni028D
+u0408 389,655,10 2 1359 uni0408
+--- 600,592,113 2 1360 alefpatah
+u0049_0308_0301 333,886 2 1361 uni1E2E
+u1D67 265,188,217 1 1362 uni1D67
+u03DA 666,663,197 2 1363 uni03DA
+u0059_0309 722,853 2 1364 uni1EF6
+u044D_0308 429,632,10 2 1365 uni04ED
+u0045_0328 610,655,197 2 1366 Eogonek
+u05B2_05BD 0,0,188,185,204 0 1367 uni05B205BD
+u051C 943,655,16 2 1368 uni051C
+u006C_032D 277,694,217,20,20 3 1369 uni1E3D
+u1D8C 500,459,217 1 1370 uni1D8C
+u1FBF 333,696 2 1371 uni1FBF
+u05B3_05BD 0,0,188,185,204 0 1372 uni05B305BD
+u01E4 722,663,10 2 1373 uni01E4
+u0391_0313_0300 791,671 2 1374 uni1F0A
+u043B 499,459,10 0 1375 uni043B
+u05DB 488,588 2 1376 kaf
+u02E5_02E7_02E6 542,688 2 1377 uni02E502E702E6
+u20A2 666,663,10 2 1378 uni20A2
+u01C6 943,696,10 2 1379 uni01C6
+u0075_031B_0300 541,696,10,28 2 1380 uni1EEB
+u1D09 277,459,217 1 1381 uni1D09
+u04D8_0308 722,811,10 2 1382 uni04DA
+u006F_0309 500,690,10 2 1383 uni1ECF
+u0308 0,632,0,136,136 2 1384 uni0308
+u03ED 508,516,10 0 1385 uni03ED
+u1D15 436,472,10 0 1386 uni1D15
+u2C6C 443,459,194 0 1387 uni2C6C
+--- 0,892,0,154,154 2 1388 uni03080304.cap
+u013F 610,655 2 1389 Ldot
+u0041_0307_0304 722,892 2 1390 uni01E0
+u20A3 500,655 2 1391 franc
+u0256 500,694,213,66 3 1392 uni0256
+u04BE 878,663,160 2 1393 uni04BE
+u0399_0306 333,847 2 1394 uni1FD8
+u03C9_0301 658,706,10 2 1395 omegatonos
+--- 600,592,14 2 1396 alefwide
+u03D8 722,663,213 3 1397 uni03D8
+u02E9_02E6_02E8 542,688 2 1398 uni02E902E602E8
+u02B9 218,655 2 1399 uni02B9
+u040A 872,655 2 1400 uni040A
+u1D75 277,563,10,0,45 2 1401 uni1D75
+u029B 453,597,7,87 2 1402 uni029B
+--- 523,675 2 1403 perafe
+u02E7_02E6_02E5 542,688 2 1404 uni02E702E602E5
+u04BF 546,472,160 0 1405 uni04BF
+u02E8_02E7 382,688 2 1406 uni02E802E7
+u00A8_0300 333,720 2 1407 uni1FED
+--- 0,674,0,326 2 1408 tilde.alt1
+u0391_0313 722,662 2 1409 uni1F08
+u0055_030C 722,859,10 2 1410 uni01D3
+u0504 802,663,10 2 1411 uni0504
+u0055_0328 722,655,200 2 1412 Uogonek
+u046D 935,459 0 1413 uni046D
+u0055_031B 775,715,10 2 1414 Uhorn
+u004F_0309 722,853,10 2 1415 uni1ECE
+--- 0,743,0,144,142 2 1416 circumflextilde
+u006F_030C 500,696,10 2 1417 uni01D2
+u0301 0,892,0,0,215 2 1418 acutecomb
+u0069_0303 277,674,0,21,19 2 1419 itilde
+u0043_0327_0301 666,859,213 3 1420 uni1E08
+*a 523,472,10 0 1421 alpha
+u042E 1027,663,10 2 1422 uni042E
+u02E7_02E9_02E7 542,688 2 1423 uni02E702E902E7
+--- 0,696,0,258 2 1424 grave.alt5
+u0474_030F 813,859,16 2 1425 uni0476
+u05A9 0,883,0,0,231 2 1426 uni05A9
+u03EB 581,472 0 1427 uni03EB
+u004E_0327 722,655,213 3 1428 uni0145
+u1FBF_0301 333,696 2 1429 uni1FCE
+--- 0,674,0,326 2 1430 tilde.alt2
+u0399_0308 333,811 2 1431 Iotadieresis
+u04F6 578,655,213 3 1432 uni04F6
+uF004 333,0,213 1 1433 uniF004
+u0075_031B_0309 541,690,10,28 2 1434 uni1EED
+--- 488,588 2 1435 kafwide
+rq 443,666 2 1436 quotedblright
+u02E6_02E5_02E9 542,688 2 1437 uni02E602E502E9
+u043D 535,459 0 1438 uni043D
+u0391_0301 722,661 2 1439 Alphatonos
+u1D9C 255,558 0 1440 uni1D9C
+u0248 389,655,10 2 1441 uni0248
+u046B 690,459 0 1442 uni046B
+u02E6_02E7_02E8 542,688 2 1443 uni02E602E702E8
+u004F_0323_0302 722,859,166 2 1444 uni1ED8
+u05BF 0,675,0,81,81 2 1445 rafe
+u03A5_0301 899,656 2 1446 uni1FEB
+u042F 666,655 2 1447 uni042F
+--- 0,0,152,0,376 0 1448 dotbelow.alt2
+u05E1_05BC 568,587,9 2 1449 samekhdagesh
+u25D8 604,564 2 1450 invbullet
+u0065_0327 443,472,213 1 1451 uni0229
+fl 556,703 2 1452 uniFB02
+u029D 277,663,217,0,45 3 1453 uni029D
+u1FBF_0342 333,818 2 1454 uni1FCF
+u0416 895,655,0,1 2 1455 uni0416
+u1DA4 163,672 2 1456 uni1DA4
+u0399_0314_0301 626,666 2 1457 uni1F3D
+u0595 0,842,0,223 2 1458 uni0595
+u0065_0302_0301 443,725,10,23 2 1459 uni1EBF
+u03C9_0342 658,674,10 2 1460 uni1FF6
+u1D4F 315,691 2 1461 uni1D4F
+u036B 0,561,0,223,223 0 1462 uni036B
+uFB1E 0,861,0,162,162 2 1463 uniFB1E
+en 500,258,0,7,7 0 1464 endash
+u0044_0307 722,826,2 2 1465 uni1E0A
+u1D37 458,668 2 1466 uni1D37
+u01B6 443,459 0 1467 uni01B6
+u032F 0,0,216,141,141 1 1468 uni032F
+u04CE 632,459,194 0 1469 uni04CE
+~~ 548,516 0 1470 approxequal
+~= "
+u0074_0323 277,563,166 2 1471 uni1E6D
+u03B9_0300 269,706,10 2 1472 uni1F76
+u0316 0,0,216,101,100 1 1473 uni0316
+u0397_0313_0342 1015,801 2 1474 uni1F2E
+--- 158,655,0,16 2 1475 caroncommaaccent
+u2105 833,666,10 2 1476 uni2105
+u2565 708,339,304,6,5 1 1477 uni2565
+u1DA0 208,697 2 1478 uni1DA0
+u1D52 288,558 0 1479 uni1D52
+u0166 610,655 2 1480 Tbar
+u01A7 556,663,10 2 1481 uni01A7
+u04CF 277,694 2 1482 uni04CF
+u032E 0,0,206,141,141 0 1483 uni032E
+u004F_031B_0301 722,859,10,33 2 1484 uni1EDA
+u006C_0331 277,694,117,16,14 2 1485 uni1E3B
+u024A 702,663,217,87 3 1486 uni024A
+u1D53 255,558 0 1487 uni1D53
+u02A1 443,709 2 1488 uni02A1
+u0397_0314_0342 1015,801 2 1489 uni1F2F
+u04E9_0308 500,632,10 2 1490 uni04EB
+u02C9 333,611 2 1491 uni02C9
+u1D4E 163,550 0 1492 uni1D4E
+u028B 469,472,10 0 1493 uni028B
+u0045_0302_0301 610,888 2 1494 uni1EBE
+u2007 500,0 0 1495 uni2007
+u02E7_02E8_02E9 542,688 2 1496 uni02E702E802E9
+u03A9_0314_0300 997,666 2 1497 uni1F6B
+u03F6 404,472,10 0 1498 uni03F6
+*G 578,655 2 1499 Gamma
+u2184 443,472,10 0 1500 uni2184
+u033D 0,730,0,108,108 2 1501 uni033D
+u006F_030F 500,696,10 2 1502 uni020D
+u0065_0307 443,663,10 2 1503 uni0117
+u1D6E 333,705,0,1,8 2 1504 uni1D6E
+u05D1 481,588 2 1505 bet
+u0068_0308 500,813 2 1506 uni1E27
+u0488 0,712,165,480,480 2 1507 uni0488
+u0041_030A_0301 722,982 2 1508 Aringacute
+u03C9_0313_0342_0345 658,818,217 3 1509 uni1FA6
+u2C69 722,655,213 3 1510 uni2C69
+u039F_0314_0300 996,666,10 2 1511 uni1F4B
+u1D70 500,472 0 1512 uni1D70
+u0072_030F 333,696,0,0,53 2 1513 uni0211
+u02E6_02E9 382,688 2 1514 uni02E602E9
+u0391_0313_0300_0345 791,670,217 3 1515 uni1F8A
+u026A 277,459 0 1516 uni026A
+u1D0C 444,459 0 1517 uni1D0C
+u02E8 382,709 2 1518 uni02E8
+u01F7 560,663,217 3 1519 uni01F7
+u1D2B 499,459,10 0 1520 uni1D2B
+u006F_0303_0301 500,852,10 2 1521 uni1E4D
+--- 0,696,0,258 2 1522 grave.alt4
+u1DBD 303,550 0 1523 uni1DBD
+u03B1_0342_0345 523,674,217 3 1524 uni1FB7
+u0069_0306 277,684,0,3,1 2 1525 ibreve
+u02F1 333,0,217 1 1526 uni02F1
+u02E7_02E6_02E9 542,688 2 1527 uni02E702E602E9
+u03B9_0308_0306_0300 269,843,10,0,4 2 1528 uni03B9030803060300
+u1D6F 777,472 0 1529 uni1D6F
+u034B 0,824,0,159,159 2 1530 uni034B
+u01E5 500,514,216 1 1531 uni01E5
+u05DA_05BC 491,589,195 2 1532 finalkafdagesh
+u2534 708,911,0,6,5 2 1533 uni2534
+u02BC 333,666 2 1534 uni02BC
+vZ 610,859 2 1535 Zcaron
+u0271 777,472,213 1 1536 uni0271
+u05DE_05BC 592,588,3 2 1537 memdagesh
+u202A 0,603,134,213,21 2 1538 uni202A
+u1D10 478,472,10 0 1539 uni1D10
+u0077_030A 722,725,10 2 1540 uni1E98
+u006F_0304_0300 500,808,10 2 1541 uni1E51
+*c 445,699,177 2 1542 xi
+u048A 722,848,213 3 1543 uni048A
+uA789 277,470 0 1544 uniA789
+u05D5_05BC 255,589,6,0,16 2 1545 vavdagesh
+u02EA 333,430 0 1546 uni02EA
+u0268 277,663 2 1547 uni0268
+u0065_0323_0302 443,696,166 2 1548 uni1EC7
+u2559 708,911,0,6 2 1549 uni2559
+u044B 671,459 0 1550 uni044B
+u0391_0313_0345 722,662,217 3 1551 uni1F88
+u04A6 1032,655,217 3 1552 uni04A6
+--- 333,792,0,30,30 2 1553 radicalex.x
+u1D14 722,472,10 0 1554 uni1D14
+78 750,655,5 2 1555 seveneighths
+u006C_030C 406,695 2 1556 lcaron
+u1D74 389,472,10 0 1557 uni1D74
+u05E5 520,588,190 2 1558 finaltsadi
+--- 722,655,217 3 1559 Eng.alt2
+u1D89 333,472,217 1 1560 uni1D89
+--- 624,587 2 1561 finalmemwide
+u1E9A 443,725,10 2 1562 uni1E9A
+u03B1_0306_0313_0300 523,892,10 2 1563 uni03B1030603130300
+u04B7 502,459,194 0 1564 uni04B7
+u0183 500,655,10 2 1565 uni0183
+u039F_0301 722,663,10,0,30 2 1566 Omicrontonos
+u0182 574,655 2 1567 uni0182
+u0505 705,472,10 0 1568 uni0505
+u05B1 0,0,188,147,147 0 1569 hatafsegol
+u02E5_02E8_02E6 542,688 2 1570 uni02E502E802E6
+u03B7_0314 522,696,213 3 1571 uni1F21
+u02AF 615,472,217,53 1 1572 uni02AF
+u2556 708,339,304,0,5 1 1573 uni2556
+u0074_030C 427,707,10 2 1574 tcaron
+u04A9 443,472,10,1 0 1575 uni04A9
+uF00A 0,895,208,21,21 2 1576 uniF00A
+u0055_0308_0300 722,887,10 2 1577 uni01DB
+u0416_0306 895,848,0,1 2 1578 uni04C1
+--- 0,674,0,326 2 1579 tilde.alt3
+u0292 443,459,217 1 1580 uni0292
+u004F_0302_0301 722,888,10 2 1581 uni1ED0
+u2074 299,655 2 1582 foursuperior
+u2592 708,830,256,1 3 1583 shade
+u03B7_0314_0301_0345 522,696,217 3 1584 uni1F95
+u02E5_02E9_02E8 542,688 2 1585 uni02E502E902E8
+u0240 443,459,217 1 1586 uni0240
+u0045_0327_0306 610,847,213 3 1587 uni1E1C
+u0456_0308 277,632 2 1588 uni0457
+u0293 443,459,217 1 1589 uni0293
+u0063_0307 443,663,10 2 1590 uni010B
+u1D41 453,668 2 1591 uni1D41
+--- 0,696,0,276 2 1592 acute.alt4
+u0061_0306_0300 443,725,10 2 1593 uni1EB1
+u1DAA 163,691 2 1594 uni1DAA
+u0056_0303 722,837,16 2 1595 uni1E7C
+u006F_0304 500,611,10 2 1596 omacron
+u20AB 512,694,129,2,2 2 1597 uni20AB
+u004F_031B_0323 722,715,166,33 2 1598 uni1EE2
+'C 666,859,10 2 1599 Cacute
+u0432 472,459 0 1600 uni0432
+u02AE 624,472,213 1 1601 uni02AE
+u0433 410,459 0 1602 uni0433
+u0041_0325 722,661,217 3 1603 uni1E00
+u1D86 777,472,217 1 1604 uni1D86
+u006F_031B_0323 528,569,166,12 2 1605 uni1EE3
+u05D2_05BC 330,589,9 2 1606 gimeldagesh
+u0321 0,73,213,82,135 1 1607 uni0321
+u03C5_0314_0342 495,818,10 2 1608 uni1F57
+u0495 515,459,217 1 1609 uni0495
+--- 491,589,6 2 1610 reshdagesh
+--- 0,674,0,326 2 1611 tilde.alt11
+u1D5D 282,697 2 1612 uni1D5D
+u01CC 777,663,213 3 1613 uni01CC
+u0061_0306 443,684,10 2 1614 abreve
+u00A8_0342 333,818 2 1615 uni1FC1
+u03A9_0314_0345 812,663,217 3 1616 uni1FA9
+u0332 0,0,117,251,251 0 1617 uni0332
+vS 556,859,10 2 1618 Scaron
+u025C 419,472,10 0 1619 uni025C
+u2C66 277,648,186,77,18 2 1620 uni2C66
+u0042_0323 666,655,166 2 1621 uni1E04
+--- 0,0,152,0,316 0 1622 dotbelow.alt11
+u0333 0,0,217,251,251 1 1623 uni0333
+u0421 666,663,10 2 1624 uni0421
+*s 539,512,10 0 1625 sigma
+u0235 500,472,217,81 1 1626 uni0235
+u1DA8 192,672 2 1627 uni1DA8
+u03B9_0314_0300 269,696,10,0,27 2 1628 uni1F33
+u03B9_0313_0300 269,696,10,0,27 2 1629 uni1F32
+!= 548,596 2 1630 notequal
+--- 777,0 0 1631 .notdef
+u0073_0323 389,472,166 0 1632 uni1E63
+--- 0,696,0,326 2 1633 circumflex.alt1
+u004F_0302_0309 722,888,10 2 1634 uni1ED4
+u0053_0323 556,663,166 2 1635 uni1E62
+u2640 750,563 2 1636 female
+u20B5 666,725,77 2 1637 uni20B5
+u0244 722,655,10 2 1638 uni0244
+u0357 0,702,0,50,50 2 1639 uni0357
+u1D18 456,459 0 1640 uni1D18
+*f 577,472,213 1 1641 phi
+u005A_0302 610,859 2 1642 uni1E90
+u03BF_0301 500,706,10 2 1643 uni1F79
+u1DB3 212,558 0 1644 uni1DB3
+--- 0,696,0,276 2 1645 acute.alt5
+u006D_0323 777,472,166 0 1646 uni1E43
+u02D2 333,242 0 1647 uni02D2
+u03B1_0313_0301_0345 523,696,217 3 1648 uni1F84
+u0055_030A 722,888,10 2 1649 Uring
+u004D_0323 889,655,166 2 1650 uni1E42
+u02D3 333,242 0 1651 uni02D3
+u0319 0,0,217,81,85 1 1652 uni0319
+u0264 443,459,10,1 0 1653 uni0264
+u0300 0,892,0,0,260 2 1654 gravecomb
+u004C_0301 610,859 2 1655 Lacute
+--- 0,896,0,0,239 2 1656 hookabove.alt4
+u1DB2 320,691 2 1657 uni1DB2
+u0055_0304 722,774,10 2 1658 Umacron
+u02E8_02E7_02E6 542,688 2 1659 uni02E802E702E6
+u25A0 604,542 0 1660 filledbox
+u039F_0301 772,663,10 2 1661 uni1FF9
+u01B9 443,459,217 1 1662 uni01B9
+u0052_0331 666,655,117 2 1663 uni1E5E
+u0305 0,762,0,251,251 2 1664 uni0305
+u019B 484,705 2 1665 uni019B
+u2116 954,655 2 1666 uni2116
+--- 548,459,10 0 1667 pi1
+u02E0 292,550,0,11 0 1668 uni02E0
+u03B1_0314_0301 523,696,10 2 1669 uni1F05
+--- 600,821,170,0,6 2 1670 aleflamedtsere
+uA718 0,889,0,177,84 2 1671 uniA718
+u0061_0311 443,684,10 2 1672 uni0203
+u0052_0327 666,655,213 3 1673 uni0156
+u03F9 666,663,10 2 1674 uni03F9
+u05DC_05B9_05BC 467,821,15,0,73 2 1675 lamedholamdagesh
+u0041_0311 722,847 2 1676 uni0202
+oe 722,472,10 0 1677 oe
+u0072_0331 333,472,117 0 1678 uni1E5F
+u2590 708,911,304,1 3 1679 rtblock
+u03A5_0301 815,656,0,0,33 2 1680 Upsilontonos
+u05E9_05BC_05C1 708,725 2 1681 shindageshshindot
++f 526,694,213 3 1682 uni03D5
+u0395_0314 748,656 2 1683 uni1F19
+u1D78 323,546 0 1684 uni1D78
+u03B9_0308_0306_0301 269,843,10,0,4 2 1685 uni03B9030803060301
+u252C 708,339,304,6,5 1 1686 uni252C
+u0480 666,663,213 3 1687 uni0480
+u02E5_02E7 382,688 2 1688 uni02E502E7
+u02FF 333,0,200 0 1689 uni02FF
+u05DD 624,587 2 1690 finalmem
+u02E4 248,700 2 1691 uni02E4
+u05D8 604,588 2 1692 tet
+u044B_0308 671,632 2 1693 uni04F9
+u0045_0304 610,774 2 1694 Emacron
+*C 643,655 2 1695 Xi
+u02E9_02E5_02E9 542,688 2 1696 uni02E902E502E9
+u02E8_02E5_02E7 542,688 2 1697 uni02E802E502E7
+u1D1A 459,459 0 1698 uni1D1A
+<- 1000,284 0 1699 arrowleft
+u04D5 666,472,10 0 1700 uni04D5
+u018D 471,472,216 1 1701 uni018D
+u0048_030C 722,891 2 1702 uni021E
+*p 504,459,10 0 1703 pi
+u027F 333,472,213 1 1704 uni027F
+u02E5_02E6_02E6 542,688 2 1705 uni02E502E602E6
+u0484 0,684,0,175,175 2 1706 uni0484
+u0065_0304 443,611,10 2 1707 emacron
+u1D61 282,550 0 1708 uni1D61
+u0479 879,472,213,20 1 1709 uni0479
+u05A6 0,0,188,161,161 0 1710 uni05A6
+u005A_0331 610,655,117 2 1711 uni1E94
+u0068_030C 500,896 2 1712 uni021F
+*w 658,469,10 0 1713 omega
+u027E 333,472 0 1714 uni027E
+u03B1_0313_0345 523,696,217 3 1715 uni1F80
+--- 333,685,0,13,14 2 1716 breve.cyr
+u0260 500,705,217,74 3 1717 uni0260
+u0041_0307 722,826 2 1718 uni0226
+--- 0,743,0,144,142 2 1719 brevetilde
+u0418_0306 722,848 2 1720 uni0419
+u0395_0301 693,656,0,0,36 2 1721 Epsilontonos
+uA71A 0,725,0,134,134 2 1722 uniA71A
+u25CC 594,541 0 1723 uni25CC
+u02E7_02E7_02E5 542,688 2 1724 uni02E702E702E5
+u02FE 397,0,216 1 1725 uni02FE
+--- 0,0,188,237 0 1726 qamatsqatan
+u02E8_02E6 382,688 2 1727 uni02E802E6
+u1D7A 766,694,10 2 1728 uni1D7A
+u0041_0323_0302 722,859,166 2 1729 uni1EAC
+u02E9_02E7_02E8 542,688 2 1730 uni02E902E702E8
+u03B1_0306_0313_0301 523,892,10 2 1731 uni03B1030603130301
+u03B5_0301 419,706,10 2 1732 epsilontonos
+u0405 556,663,10 2 1733 uni0405
+u201F 443,667 2 1734 uni201F
+u02E9_02E8 382,688 2 1735 uni02E902E8
+u027B 333,459,213,57 1 1736 uni027B
+u1D95 443,472,217,135 1 1737 uni1D95
+u0301 0,696,0,200 2 1738 uni0341
+u0438_0300 535,696 2 1739 uni045D
+*U 722,655 2 1740 Upsilon
+lz 494,704 2 1741 lozenge
+u02FB 333,0,217 1 1742 uni02FB
+--- 0,892,0,154,154 2 1743 uni03040300.cap
+u05E9_05C1 708,725 2 1744 shinshindot
+u02C4 563,565 2 1745 uni02C4
+u05A0 0,883,0,230 2 1746 uni05A0
+u1D21 722,459,10 0 1747 uni1D21
+u03B1_0313_0342_0345 523,818,217 3 1748 uni1F86
+u04A8 666,663,10 2 1749 uni04A8
+u05B6 0,0,188,96,96 0 1750 segol
+u0266 500,705 2 1751 uni0266
+u0220 649,660,213 3 1752 uni0220
+u0074_0326 277,563,213 3 1753 uni021B
+u03A9_0313_0300_0345 997,666,217 3 1754 uni1FAA
+u03BF_0314 500,696,10 2 1755 uni1F41
+u207F 314,544 0 1756 uni207F
+uA721 0,174,0,153,172 0 1757 uniA721
+u02E5_02E8_02E8 542,688 2 1758 uni02E502E802E8
+u0068_0331 500,694,117 2 1759 uni1E96
+u03C5_0308_0306_0300 495,843,10 2 1760 uni03C5030803060300
+u2003 1000,0 0 1761 uni2003
+u1DA9 163,691,0,26 2 1762 uni1DA9
+u2002 500,0 0 1763 uni2002
+u1DC1 0,720,0,157,161 2 1764 uni1DC1
+u0224 610,655,217 3 1765 uni0224
+*E 610,655 2 1766 Epsilon
+u019F 722,663,10 2 1767 uni019F
+u01A3 691,472,213 1 1768 uni01A3
+u03A5_0314_0301 1020,666 2 1769 uni1F5D
+u02E5_02E9_02E6 542,688 2 1770 uni02E502E902E6
+u1D57 191,613 2 1771 uni1D57
+*e 419,472,10 0 1772 epsilon
+u01A2 924,663,217 3 1773 uni01A2
+u059C 0,813,0,161 2 1774 uni059C
+u004F_030B 722,859,10 2 1775 uni0150
+u02E6 382,709 2 1776 uni02E6
+u035D 0,684,0,632,26 2 1777 uni035D
+u0441 443,472,10 0 1778 uni0441
+u04AA 666,663,197 2 1779 uni04AA
+u05D2 330,589,9 2 1780 gimel
+--- 600,821,14,0,6 2 1781 aleflamed
+u02E8_02E9 382,688 2 1782 uni02E802E9
+u1D32 370,668 2 1783 uni1D32
+u1D33 432,672 2 1784 uni1D33
+u05E9_05BC 708,588 2 1785 shindagesh
+u02C0 248,700 2 1786 uni02C0
+u05A4 0,0,188,80,80 0 1787 uni05A4
+--- 0,725,0,40,40 2 1788 shindot
+u019E 500,472,217 1 1789 uni019E
+u0486 0,727,0,55,55 2 1790 uni0486
+u03A9_0313_0345 812,663,217 3 1791 uni1FA8
+u256C 708,911,304,6,5 3 1792 uni256C
+u266F 500,725,98 2 1793 uni266F
+u0072_0323 333,472,166 0 1794 uni1E5B
+u03F8 500,694,213 3 1795 uni03F8
+uA719 0,892,0,154,154 2 1796 uniA719
+u2206 611,661 2 1797 uni2206
+u03C5_0304 495,611,10 2 1798 uni1FE1
+*R 556,655 2 1799 Rho
+u041A 666,655,0,5 2 1800 uni041A
+u01F3 943,694,10 2 1801 uni01F3
+u03B1_0300_0345 523,706,217 3 1802 uni1FB2
+--- 0,435,0,123,129 0 1803 five.alt
+u214E 416,459 0 1804 uni214E
+u004F_0328_0304 722,774,197 2 1805 uni01EC
+u1D84 500,694,217 3 1806 uni1D84
+u02B5 217,550,0,22 0 1807 uni02B5
+u02E5_02E6_02E8 542,688 2 1808 uni02E502E602E8
+u0461 633,459,10 0 1809 uni0461
+u01F2 1166,655,2 2 1810 uni01F2
+u05D5 255,589,6 2 1811 vav
+u1D79 471,459,217 1 1812 uni1D79
+u03B1_0345 523,472,217 1 1813 uni1FB3
+u2C60 610,655 2 1814 uni2C60
+u0395_0313 748,656 2 1815 uni1F18
+u0318 0,0,217,81,85 1 1816 uni0318
+ca 722,504,1 0 1817 intersection
+u2554 708,427,304,6 1 1818 uni2554
+u03BF_0300 500,706,10 2 1819 uni1F78
+u1D19 459,459 0 1820 uni1D19
+u04FA 578,655,217 3 1821 uni04FA
+u03E1 553,507,217 1 1822 uni03E1
+u01B8 539,655,217 3 1823 uni01B8
+u0068_0307 500,826 2 1824 uni1E23
+u047A 762,696,43 2 1825 uni047A
+u03B9_0308_0301 269,720,10,10,5 2 1826 iotadieresistonos
+u02E9_02E7_02E6 542,688 2 1827 uni02E902E702E6
+u039F_0300 850,663,10 2 1828 uni1FF8
+u0048_0307 722,826 2 1829 uni1E22
+u1D05 524,459,2 0 1830 uni1D05
+u0418 722,655 2 1831 uni0418
+u2550 708,427,0,6,5 0 1832 uni2550
+u04B3 500,459,194 0 1833 uni04B3
+u03C9_0314 658,696,10 2 1834 uni1F61
+u0187 666,802,10,114 2 1835 uni0187
+u0281 487,459 0 1836 uni0281
+u03FA 889,655 2 1837 uni03FA
+u03B1_0304_0313_0301 523,840,10 2 1838 uni03B1030403130301
+u05D1_05BC 481,588 2 1839 betdagesh
+u04B2 722,655,213 3 1840 uni04B2
+*M 889,655 2 1841 Mu
+dd 500,694,118 2 1842 daggerdbl
+u0395_0313_0300 904,666 2 1843 uni1F1A
+u02AB 559,694 2 1844 uni02AB
+u04E1 443,459,217 1 1845 uni04E1
+u02E8_02E7_02E8 542,688 2 1846 uni02E802E702E8
+u004F_0302_0303 722,887,10 2 1847 uni1ED6
+u20AE 610,655 2 1848 uni20AE
+u006B_0301 500,892 2 1849 uni1E31
+u0061_0308_0304 443,718,10 2 1850 uni01DF
+u050C 722,663,10 2 1851 uni050C
+u037A 333,0,217 1 1852 uni037A
+u02E9_02E6 382,688 2 1853 uni02E902E6
+u0246 610,724,62 2 1854 uni0246
+u042B_0308 872,795 2 1855 uni04F8
+u20AF 1000,726,199 2 1856 uni20AF
+u0065_0302_0309 443,725,10 2 1857 uni1EC3
+u02E9_02E5_02E7 542,688 2 1858 uni02E902E502E7
+u02E8_02E5_02E9 542,688 2 1859 uni02E802E502E9
+u03C5_0300 495,706,10 2 1860 uni1F7A
+u0045_0302_0309 610,888 2 1861 uni1EC2
+u0048_0302 722,859 2 1862 Hcircumflex
+u0041_0308_0304 722,892 2 1863 uni01DE
+u031A 0,811,0,181,181 2 1864 uni031A
+u03A9_0300 861,663 2 1865 uni1FFA
+u0053_0326 556,663,213 3 1866 Scommaaccent
+u2092 288,194,95 0 1867 uni2092
+u0478 1095,663,213,18 3 1868 uni0478
+u05DE 592,588,3 2 1869 mem
+--- 701,660,10 2 1870 Eng.alt3
+u0361 0,684,0,632,26 2 1871 uni0361
+u0510 500,663,10 2 1872 uni0510
+u1D80 500,694,217 3 1873 uni1D80
+u2C64 666,655,217 3 1874 uni2C64
+u0042_0331 666,655,117 2 1875 uni1E06
+u01BA 443,459,217 1 1876 uni01BA
+u2093 290,188,89 0 1877 uni2093
+u006F_0323_0302 500,696,166 2 1878 uni1ED9
+u044F 459,459 0 1879 uni044F
+u0437 395,472,10 0 1880 uni0437
+u02CA 333,696 2 1881 uni02CA
+--- 0,674,0,326 2 1882 tilde.alt12
+u0075_0309 500,690,10 2 1883 uni1EE7
+u0249 277,663,213,0,29 3 1884 uni0249
+u0075_0330 500,459,189 0 1885 uni1E75
+u0045_0327 610,655,213 3 1886 uni0228
+--- 562,980,204 2 1887 paseq
+u0079_0323 500,459,216 1 1888 uni1EF5
+u04A0 785,655,0,6 2 1889 uni04A0
+u0191 556,655,217,0,67 3 1890 uni0191
+u0452 482,694,213 3 1891 uni0452
+u03C9_0313_0301_0345 658,696,217 3 1892 uni1FA4
+u05A8 0,813,0,81,81 2 1893 uni05A8
+u0077_0308 722,632,10 2 1894 wdieresis
+u0433_0301 410,696 2 1895 uni0453
+u02E7_02E9_02E9 542,688 2 1896 uni02E702E902E9
+uFE20 0,775,0,2,387 2 1897 uniFE20
+u0063_0327_0301 443,696,213 3 1898 uni1E09
+u0297 443,472,217 1 1899 uni0297
+u044E 747,472,10 0 1900 uni044E
+u02E6_02E5_02E7 542,688 2 1901 uni02E602E502E7
+u0057_0308 943,795,16 2 1902 Wdieresis
+u0049_0304 333,774 2 1903 Imacron
+u0065_0304_0300 443,806,10 2 1904 uni1E15
+u0397_0313_0301_0345 1015,666,217 3 1905 uni1F9C
+--- 491,589,6 2 1906 reshwide
+u03C9_0313_0345 658,696,217 3 1907 uni1FA0
+u023C 500,655 2 1908 uni023C
+u0352 0,760,0,141,141 2 1909 uni0352
+u0073_030C_0307 389,737,10 2 1910 uni1E67
+u02C8 333,696 2 1911 uni02C8
+--- 0,725,0,141,141 2 1912 brevehook
+u1D2E 386,668 2 1913 uni1D2E
+--- 0,743,0,121,121 2 1914 uni03080300.cap
+u03C5_0308_0306_0301 495,843,10 2 1915 uni03C5030803060301
+u1D76 443,459 0 1916 uni1D76
+--- 467,821,15,0,6 2 1917 alternativelamed
+u0353 0,0,217,108,108 1 1918 uni0353
+*O 722,663,10 2 1919 Omicron
+--- 496,589,6 2 1920 vavyod
+u034E 0,0,217,86,86 1 1921 uni034E
+u03B9_0314_0342 269,818,10,24,24 2 1922 uni1F37
+u02E7_02E8_02E7 542,688 2 1923 uni02E702E802E7
+u004F_0308_0304 722,892,10 2 1924 uni022A
+u0058_0308 722,795 2 1925 uni1E8C
+u1D3D 335,680 2 1926 uni1D3D
+u200D 0,691,134,110,110 2 1927 uni200D
+u049C 666,655,0,5 2 1928 uni049C
+u034F 0,720,0,360,360 2 1929 uni034F
+u1D6B 760,472,10 0 1930 uni1D6B
+u05AA 0,0,188,93,92 0 1931 uni05AA
+u02E6_02E7_02E6 542,688 2 1932 uni02E602E702E6
+u0337 0,459,10,235,235 0 1933 uni0337
+u01C5 1166,696,2 2 1934 uni01C5
+ao 333,725 2 1935 ring
+u03C5_0314_0300 495,696,10 2 1936 uni1F53
+u1D2F 386,668 2 1937 uni1D2F
+u01AD 277,705,10,67 2 1938 uni01AD
+u0255 443,472,41 0 1939 uni0255
+--- 0,896,0,0,239 2 1940 hookabove.alt5
+u0075_0306 500,684,10 2 1941 ubreve
+u1D16 500,472 0 1942 uni1D16
+u206A 0,689,134,117,117 2 1943 uni206A
+u04A4 850,655 2 1944 uni04A4
+u03C5_0313_0300 495,696,10 2 1945 uni1F52
+/l 277,694 2 1946 lslash
+u032B 0,0,161,179,179 0 1947 uni032B
+u0391_0313_0301 791,671 2 1948 uni1F0C
+u02E7_02E6_02E7 542,688 2 1949 uni02E702E602E7
+u05D8_05BC 604,588 2 1950 tetdagesh
+u1D8A 389,472,217 1 1951 uni1D8A
+u0423_0304 708,774,10 2 1952 uni04EE
+u0323 0,0,166,53,54 0 1953 dotbelowcomb
+u051A 722,663,163 2 1954 uni051A
+u20A1 666,724,65 2 1955 uni20A1
+u004D_0301 889,859 2 1956 uni1E3E
+u0065_0309 443,690,10 2 1957 uni1EBB
+u03DC 556,655 2 1958 uni03DC
+u028E 500,675 2 1959 uni028E
+u03B1_0300 523,706,10 2 1960 uni1F70
+' 333,666 2 1961 quoteright
+cq "
+u0079_030A 500,726,216 3 1962 uni1E99
+u0069_0330 277,663,189,21,20 2 1963 uni1E2D
+u0065_0311 443,684,10 2 1964 uni0207
+u1D4B 241,558 0 1965 uni1D4B
+u036F 0,553,0,144,144 0 1966 uni036F
+u1DA6 164,550 0 1967 uni1DA6
+sd 416,655 2 1968 second
+u0310 0,760,0,141,141 2 1969 uni0310
+u03A9_0313_0342 929,801 2 1970 uni1F6E
+u0414 682,655,213 3 1971 uni0414
+u2C68 500,694,194 2 1972 uni2C68
+u036E 0,553,0,150,150 0 1973 uni036E
+u03B5_0313 419,696,10 2 1974 uni1F10
+SP 531,602 2 1975 spade
+u028F 492,459 0 1976 uni028F
+u0474 813,663,16 2 1977 uni0474
+u03A9_0314_0342 929,801 2 1978 uni1F6F
+uA78A 368,458 0 1979 uniA78A
+va 500,563,30 2 1980 arrowupdn
+u0489 0,752,202,477,477 2 1981 uni0489
+u05D4_05BC 575,589,13 2 1982 hedagesh
+u004B_0327 722,655,213 3 1983 uni0136
+u1DB7 316,550 0 1984 uni1DB7
+u255A 708,911,0,6 2 1985 uni255A
+u006E_0323 500,472,166 0 1986 uni1E47
+u04CB 649,655,213 3 1987 uni04CB
+u02E9 382,709 2 1988 uni02E9
+u004F_030C 722,859,10 2 1989 uni01D1
+u006D_0301 777,696 2 1990 uni1E3F
+u02D7 333,221 0 1991 uni02D7
+--- 0,684,0,307 2 1992 breve.alt1
+u1FBD 333,696 2 1993 uni1FBD
+u0072_0301 333,696 2 1994 racute
+u02E7_02E5 382,688 2 1995 uni02E702E5
+u0443_0304 500,611,216 3 1996 uni04EF
+u030C 0,696,0,159,159 2 1997 uni030C
+u0427_0308 649,795 2 1998 uni04F4
+u03F0 560,472,10 0 1999 uni03F0
+u0397_0314_0300 1015,666 2 2000 uni1F2B
+u046E 500,859,217 3 2001 uni046E
+u03B5_0313_0301 419,696,10 2 2002 uni1F14
+u006F_0323 500,472,166 0 2003 uni1ECD
+u25D9 604,564 2 2004 invcircle
+u0057_0302 943,859,16 2 2005 Wcircumflex
+*h 479,700,10 2 2006 theta
+u03B1_0304_0313_0300 523,840,10 2 2007 uni03B1030403130300
+u1D88 500,472,217 1 2008 uni1D88
+u03B9_0301 269,706,10 2 2009 iotatonos
+u0470 737,655,0,0,12 2 2010 uni0470
+u02B9 333,706 2 2011 uni0374
+u2C71 596,465,10 0 2012 uni2C71
+u0075_0303 500,674,10 2 2013 utilde
+u02E6_02E8 382,688 2 2014 uni02E602E8
+u00A8_0301 333,720 2 2015 uni1FEE
+u0061_0302_0301 443,725,10,27 2 2016 uni1EA5
+u0423_0308 708,795,10 2 2017 uni04F0
+u0077_0302 722,696,10 2 2018 wcircumflex
+u03F4 722,663,10 2 2019 uni03F4
+u041A_0301 666,859,0,5 2 2020 uni040C
+u03EF 385,694 2 2021 uni03EF
+u03C9_0301_0345 658,706,217 3 2022 uni1FF4
+u042B 872,655 2 2023 uni042B
+u0060 333,706 2 2024 uni1FEF
+uA788 333,0,215 1 2025 uniA788
+u04BD 546,472,10 0 2026 uni04BD
+u0397_0301 870,656 2 2027 uni1FCB
+u03EE 475,655 2 2028 uni03EE
+u2C6A 500,694,194 2 2029 uni2C6A
+u01B4 500,694,216,175 3 2030 uni01B4
+u0416_0308 895,795,0,1 2 2031 uni04DC
+u263C 916,529,69 0 2032 sun
+u0391_0314_0345 722,662,217 3 2033 uni1F89
+u046F 395,696,217 3 2034 uni046F
+u03B7_0300 522,706,213 3 2035 uni1F74
+u0314 0,727,0,55,55 2 2036 uni0314
+u0410 722,661 2 2037 uni0410
+u05B1_05BD 0,0,188,195,215 0 2038 uni05B105BD
+u2558 708,911,0,6 2 2039 uni2558
+u0269 269,459,10 0 2040 uni0269
+u05E9_05C2 708,725 2 2041 shinsindot
+u1D64 327,188,95 0 2042 uni1D64
+product 823,655,213 3 2043 product
+u0067_0301 500,696,216 3 2044 uni01F5
+u0481 443,472,213 1 2045 uni0481
+u02B2 155,672,0,0,5 2 2046 uni02B2
+u05B2 0,0,188,133,132 0 2047 hatafpatah
+u0045_030C 610,859 2 2048 Ecaron
+u02B3 217,558 0 2049 uni02B3
+u0052_0323 666,655,166 2 2050 uni1E5A
+u02E5_02E6_02E9 542,688 2 2051 uni02E502E602E9
+u2588 708,911,304,1 3 2052 block
+u0446 535,459,194 0 2053 uni0446
+u0067_030C 500,696,216 3 2054 uni01E7
+u0065_030C 443,696,10 2 2055 ecaron
+u02E1 166,691 2 2056 uni02E1
+u0055_0308_030C 722,887,10 2 2057 uni01D9
+u02E9_02E5_02E6 542,688 2 2058 uni02E902E502E6
+u04AB 443,472,197 0 2059 uni04AB
+*o 500,472,10 0 2060 omicron
+u1D02 666,472,10 0 2061 uni1D02
+u0068_0323 500,694,166 2 2062 uni1E25
+u20A9 943,655,16 2 2063 uni20A9
+--- 0,674,0,326 2 2064 tilde.alt9
+u02F8 277,663 2 2065 uni02F8
+u1D03 464,459 0 2066 uni1D03
+u1DC6 0,725,0,154,154 2 2067 uni1DC6
+--- 0,440,0,129,132 0 2068 three.alt
+u2E17 333,418 0 2069 uni2E17
+*I 333,655 2 2070 Iota
+u007A_0302 443,696 2 2071 uni1E91
+u0278 553,694,213 3 2072 uni0278
+u03A9_0314_0300_0345 997,666,217 3 2073 uni1FAB
+u0054_0326 610,655,213 3 2074 uni021A
+u02E8_02E7_02E9 542,688 2 2075 uni02E802E702E9
+u02E9_02E7_02E7 542,688 2 2076 uni02E902E702E7
+u018C 500,655,10 2 2077 uni018C
+u0052_0307 666,826 2 2078 uni1E58
+uA71F 333,663 2 2079 uniA71F
+u1DFF 0,0,217,166,166 1 2080 uni1DFF
+--- 0,696,0,276 2 2081 acute.alt1
+u0261 500,472,217 1 2082 uni0261
+u04B5 603,459,194 0 2083 uni04B5
+CL 656,598 2 2084 club
+u0507 452,472,194 0 2085 uni0507
+u03B1_0314_0345 523,696,217 3 2086 uni1F81
+u1D7F 548,459,10 0 2087 uni1D7F
+u1D1E 654,456,15 0 2088 uni1D1E
+u2154 750,660,4 2 2089 twothirds
+u02E6_02E9_02E5 542,688 2 2090 uni02E602E902E5
+u1D26 410,459 0 2091 uni1D26
+u1D60 334,558 0 2092 uni1D60
+*S 582,655 2 2093 Sigma
+u02FA 333,655 2 2094 uni02FA
+--- 0,743,0,121,121 2 2095 uni03080301.cap
+*z 414,703,177 2 2096 zeta
+u1D7E 537,459,10 0 2097 uni1D7E
+u258C 708,911,304 3 2098 lfblock
+u1D1F 504,597,146 2 2099 uni1D1F
+u03B9_0304_0313_0300 269,840,10,18,21 2 2100 uni03B9030403130300
+vs 389,696,10 2 2101 scaron
+u0061_0323_0302 443,696,166 2 2102 uni1EAD
+u027A 333,694,13 2 2103 uni027A
+u02E8_02E5_02E8 542,690 2 2104 uni02E802E502E8
+u0065_0302_0303 443,743,10 2 2105 uni1EC5
+u0346 0,782,0,181,181 2 2106 uni0346
+uA71E 333,892 2 2107 uniA71E
+u1DFE 0,701,0,60,61 2 2108 uni1DFE
+u0061_0325 443,470,217 1 2109 uni1E01
+u0366 0,561,0,128,127 0 2110 uni0366
+u0424 790,655 2 2111 uni0424
+--- 0,743,0,139,139 2 2112 uni0308030C.cap
+u03A9_0301 774,663 2 2113 uni1FFB
+u0320 0,0,132,154,154 0 2114 uni0320
+u1DAF 327,558,0,26 0 2115 uni1DAF
+u01BB 500,663 2 2116 uni01BB
+u0065_0327_0306 443,684,213 3 2117 uni1E1D
+u0199 500,705 2 2118 uni0199
+u03B7_0301_0345 522,706,217 3 2119 uni1FC4
+u03C5_0301 495,706,10 2 2120 uni1F7B
+u1D40 362,668 2 2121 uni1D40
+u1D93 419,472,217,100 1 2122 uni1D93
+u0041_0306_0300 722,888 2 2123 uni1EB0
+u1D92 443,472,217,76 1 2124 uni1D92
+uF00E 0,895,208,118,21 2 2125 uniF00E
+u031B 0,715,0,157,8 2 2126 uni031B
+u0241 533,705 2 2127 uni0241
+u03C5_0306_0313_0301 495,892,10 2 2128 uni03C5030603130301
+u02E5_02E9_02E7 542,688 2 2129 uni02E502E902E7
+u02AA 565,694,10 2 2130 uni02AA
+u0395_0314_0300 904,666 2 2131 uni1F1B
+u004C_0323 610,655,166 2 2132 uni1E36
+u037B 443,472,10 0 2133 uni037B
+u041E_0308 722,811,10 2 2134 uni04E6
+u006F_0302_0301 500,725,10 2 2135 uni1ED1
+u04C0 333,655 2 2136 uni04C0
+u0286 333,694,217,17,24 3 2137 uni0286
+u03B7_0313 522,696,213 3 2138 uni1F20
+u03FB 632,459,213 1 2139 uni03FB
+u03C9_0313_0342 658,818,10 2 2140 uni1F66
+u0076_0303 500,674,10 2 2141 uni1E7D
+u1DAE 327,558,0,0,17 0 2142 uni1DAE
+--- 277,459 0 2143 dotlessi.alt1
+--- 575,589,13 2 2144 hewide
+u01A5 500,705,213 3 2145 uni01A5
+u025D 587,472,10,1 0 2146 uni025D
+u05D6_05BC 278,588,8,0,16 2 2147 zayindagesh
+--- 562,551 0 2148 alt_plussign
+*L 725,661 2 2149 Lambda
+u047B 565,505,44 0 2150 uni047B
+u03E6 661,655,217 3 2151 uni03E6
+u04C4 515,459,217 1 2152 uni04C4
+u05D0 600,592,14 2 2153 alef
+u2005 250,0 0 2154 uni2005
+u02E5_02E8_02E9 542,688 2 2155 uni02E502E802E9
+u03B7_0313_0301 522,696,213 3 2156 uni1F24
+u04FB 410,459,217 1 2157 uni04FB
+u0041_030C 722,859 2 2158 uni01CD
+u05B7 0,0,113,81,81 0 2159 patah
+u1D5C 318,563 2 2160 uni1D5C
+u0597 0,833,0,75,75 2 2161 uni0597
+u0063_030C 443,696,10 2 2162 ccaron
+--- 600,592,170 2 2163 alefqamats
+u0052_0301 666,859 2 2164 Racute
+u0420 556,655 2 2165 uni0420
+u0324 0,0,170,136,136 0 2166 uni0324
+u0466 722,661 2 2167 uni0466
+u02A8 648,563,10 2 2168 uni02A8
+bu 350,451 0 2169 bullet
+u05B9 0,711,0,40,40 2 2170 holam
+u1D35 199,668 2 2171 uni1D35
+u1FC0 333,674 2 2172 uni1FC0
+u1D44 273,557 0 2173 uni1D44
+u03C5_0342 495,674,10 2 2174 uni1FE6
+u0041_0306_0303 722,891 2 2175 uni1EB4
+u041B 678,655,10 2 2176 uni041B
+u0068_0302 500,879 2 2177 hcircumflex
+u2584 708,304,304,1 1 2178 dnblock
+--- 0,892,0,159,159 2 2179 uni03030308.cap
+--- 0,439,0,126,138 0 2180 nine.alt
+u2567 708,911,0,6,5 2 2181 uni2567
+u0270 777,459,213 1 2182 uni0270
+u03B1_0314_0342 523,818,10 2 2183 uni1F07
+u1D11 541,436 0 2184 uni1D11
+u0391_0313_0342_0345 791,801,217 3 2185 uni1F8E
+u026E 577,694,217 3 2186 uni026E
+u1D0D 632,459 0 2187 uni1D0D
+u206B 0,689,134,117,117 2 2188 uni206B
+u1D6A 282,188,217 1 2189 uni1D6A
+u03D7 560,472,213 1 2190 uni03D7
+u004F_030F 722,859,10 2 2191 uni020C
+--- 0,896,0,0,239 2 2192 hookabove.alt1
+u02F0 333,0,181 0 2193 uni02F0
+u02E8_02E6_02E5 542,688 2 2194 uni02E802E602E5
+u0050_0301 556,859 2 2195 uni1E54
+--- 0,725,0,209,149 2 2196 circumflexhook
+u05AB 0,839,0,80,80 2 2197 uni05AB
+u03E9 541,705,10 2 2198 uni03E9
+:Y 722,811 2 2199 Ydieresis
+u03A5_0304 722,774 2 2200 uni1FE9
+--- 0,892,0,154,154 2 2201 uni03070304.cap
+u006F_0308_0304 500,718,10 2 2202 uni022B
+u202E 0,689,134,117,117 2 2203 uni202E
+u03B9_0308_0342 269,785,10,23,25 2 2204 uni1FD7
+u02BD 333,666 2 2205 uni02BD
+*P 722,655 2 2206 Pi
+u1D71 500,472,213,0,43 1 2207 uni1D71
+u0391_0314_0342_0345 791,801,217 3 2208 uni1F8F
+u1DBC 273,550,0,66 0 2209 uni1DBC
+u0469 833,462 0 2210 uni0469
+u004F_0303_0301 722,892,10 2 2211 uni1E4C
+u20A4 500,663 2 2212 lira
+--- 0,892,0,154,154 2 2213 uni03040301.cap
+u0052_030F 666,859 2 2214 uni0210
+u0307 0,663,0,54,53 2 2215 uni0307
+u026F 777,459,13 0 2216 uni026F
+u02EE 443,666 2 2217 uni02EE
+u0041_0309 722,853 2 2218 uni1EA2
+u0061_0309 443,675,10 2 2219 uni1EA3
+--- 158,727 2 2220 commaaccentrotate
+u02E5_02E7_02E5 542,688 2 2221 uni02E502E702E5
+u0055_030F 722,859,10 2 2222 uni0214
+u0369 0,694,0,136,136 2 2223 uni0369
+u048E 556,655 2 2224 uni048E
+u0406_0308 333,813 2 2225 uni0407
+u0196 253,694,10,1,1 2 2226 uni0196
+u1D68 295,197,217 1 2227 uni1D68
+u1E9E 713,665,6 2 2228 uni1E9E
+u03B9_0304_0313_0301 269,840,10,23,21 2 2229 uni03B9030403130301
+u0274 497,459 0 2230 uni0274
+u0043_0302 666,859,10 2 2231 Ccircumflex
+u0289 500,459,10 0 2232 uni0289
+*F 730,655 2 2233 Phi
+u03A9_0314 812,663 2 2234 uni1F69
+u048F 500,472,213 1 2235 uni048F
+u0435_0306 443,685,10 2 2236 uni04D7
+u02F4 333,246 0 2237 uni02F4
+u02EF 333,0,181 0 2238 uni02EF
+u006C_0323_0304 277,807,166,7,24 2 2239 uni1E39
+u02E7_02E6_02E6 542,688 2 2240 uni02E702E602E6
+u004F_0304_0300 722,892,10 2 2241 uni1E50
+u20AA 607,569,17 2 2242 sheqel
+u02CB 333,696 2 2243 uni02CB
+u04E9 500,472,10 0 2244 uni04E9
+--- 481,675 2 2245 betrafe
+u0397_0313 859,656 2 2246 uni1F28
+Eu 500,663,10 2 2247 Euro
+u043C 632,459 0 2248 uni043C
+u0055_031B_0309 775,853,10 2 2249 uni1EEC
+u04C8 535,459,217 1 2250 uni04C8
+u0055_0324 722,655,170 2 2251 uni1E72
+u0075_0328 500,459,197,1 0 2252 uogonek
+u00A8_0301 333,720 2 2253 dieresistonos
+u02E6_02E7_02E7 542,688 2 2254 uni02E602E702E7
+--- 0,0,152,0,186 0 2255 dotbelow.alt8
+u042A 706,655 2 2256 uni042A
+u2C6B 610,655,213 3 2257 uni2C6B
+u039F_0314 791,663,10 2 2258 uni1F49
+u0075_031B 541,569,10,28 2 2259 uhorn
+u0075_0324 500,459,170 0 2260 uni1E73
+--- 0,0,199,40,40 0 2261 lowerdot
+u0397_0300 859,656 2 2262 uni1FCA
+u02E7_02E8_02E6 542,688 2 2263 uni02E702E802E6
+u0047_0327 722,663,213 3 2264 uni0122
+u0044_032D 722,655,217 3 2265 uni1E12
+u0349 0,0,217,79,79 1 2266 uni0349
+u0045_0323 610,655,166 2 2267 uni1EB8
+u0067_0327 500,727,216 3 2268 uni0123
+u03C5_0306_0313_0300 495,892,10 2 2269 uni03C5030603130300
+u0064_032D 500,694,217 3 2270 uni1E13
+u1D48 311,691 2 2271 uni1D48
+u029C 535,459 0 2272 uni029C
+u02E9_02E9_02E5 542,688 2 2273 uni02E902E902E5
+u2C76 504,459 0 2274 uni2C76
+u1D9D 255,558 0 2275 uni1D9D
+u05BB 0,0,188,118,117 0 2276 qubuts
+u1D29 456,459 0 2277 uni1D29
+u02A4 844,694,217 3 2278 uni02A4
+u03B7_0314_0342_0345 522,818,217 3 2279 uni1F97
+u25BC 989,572,14 2 2280 triagdn
+u0328 0,8,197,98,98 0 2281 uni0328
+u02E7_02E9_02E8 542,688,2 2 2282 uni02E702E902E8
+u0455 389,472,10 0 2283 uni0455
+u05B8 0,0,170,81,81 0 2284 qamats
+u02E8_02E8_02E5 542,688 2 2285 uni02E802E802E5
+--- 0,0,152,0,358 0 2286 dotbelow.alt14
+u04CA 535,459,194 0 2287 uni04CA
+u006F_031B_0309 528,690,10,12 2 2288 uni1EDF
+u0237 277,459,213,0,29 1 2289 uni0237
+u255B 708,911,0,0,5 2 2290 uni255B
+u0054_0323 610,655,166 2 2291 uni1E6C
+u0449 770,459,209 0 2292 uni0449
+u0140 343,694 2 2293 ldot
+--- 0,696,0,258 2 2294 grave.alt1
+u0397_0313_0300 1015,666 2 2295 uni1F2A
+u0075_0308_0304 500,718,10 2 2296 uni01D6
+*H 722,663,10 2 2297 Theta
+u02E6_02E5_02E6 542,688 2 2298 uni02E602E502E6
+u024F 500,459,216 1 2299 uni024F
+dg 500,694,118 2 2300 dagger
+u0395_0300 748,656 2 2301 uni1FC8
+u02A0 500,705,213,74 3 2302 uni02A0
+*r 499,470,213 1 2303 rho
+u0399_0313_0301 626,666 2 2304 uni1F3C
+u0044_0331 722,655,117 2 2305 uni1E0E
+u0428 1008,655 2 2306 uni0428
+u0355 0,0,217,60,61 1 2307 uni0355
+uA78B 180,655 2 2308 uniA78B
+u0077_0307 722,663,10 2 2309 uni1E87
+u03C5_0314_0301 495,696,10 2 2310 uni1F55
+u1D4A 256,558 0 2311 uni1D4A
+u0497 690,459,194,6,4 0 2312 uni0497
+u1DC9 0,725,0,154,154 2 2313 uni1DC9
+u0045_0309 610,853 2 2314 uni1EBA
+u0253 500,705,10 2 2315 uni0253
+u1DA1 208,550,0,0,20 0 2316 uni1DA1
+u0059_0302 722,859 2 2317 Ycircumflex
+u033C 0,0,174,177,177 0 2318 uni033C
+u0252 522,472,10 0 2319 uni0252
+u0064_0331 500,694,117 2 2320 uni1E0F
+--- 701,660,217 3 2321 Eng.alt1
+u01C2 249,694 2 2322 uni01C2
+u20A6 722,655 2 2323 uni20A6
+u032A 0,0,216,181,181 1 2324 uni032A
+u004F_031B_0309 722,853,10,33 2 2325 uni1EDE
+u024E 722,655 2 2326 uni024E
+u051B 500,481,213 1 2327 uni051B
+u01C3 333,655,15 2 2328 uni01C3
+u1D8B 424,694,217,0,16 3 2329 uni1D8B
+u0049_0330 333,655,189 2 2330 uni1E2C
+u028A 548,459,10 0 2331 uni028A
+u03F1 508,472,217 1 2332 uni03F1
+u03DD 446,459,217 1 2333 uni03DD
+u03A5_0306 722,847 2 2334 uni1FE8
+u0069_030C 277,696,0,23,18 2 2335 uni01D0
+u03A9_0313_0300 997,666 2 2336 uni1F6A
+u0149 604,694 2 2337 napostrophe
+u006F_031B_0301 528,696,10,12 2 2338 uni1EDB
+u02A6 564,563,10 2 2339 uni02A6
+u0391_0314_0301 791,671 2 2340 uni1F0D
+u2C74 471,467,10,6,1 0 2341 uni2C74
+u255F 708,911,304,6 3 2342 uni255F
+u05BC 0,382,0,40,40 0 2343 dagesh
+u04E8_0308 722,811,10 2 2344 uni04EA
+u1D8E 443,459,217 1 2345 uni1D8E
+u03B5_0314 419,696,10 2 2346 uni1F11
+u024B 500,481,217,66 1 2347 uni024B
+u1D07 444,459 0 2348 uni1D07
+u004C_0331 610,655,117 2 2349 uni1E3A
+u0468 1032,661 2 2350 uni0468
+u255E 708,911,304,6 3 2351 uni255E
+u0311 0,684,0,141,141 2 2352 uni0311
+u00E6_0304 666,611,10 2 2353 uni01E3
+u006E_0301 500,696 2 2354 nacute
+u030D 0,696,0,27,27 2 2355 uni030D
+u00C6_0304 889,774 2 2356 uni01E2
+a" 333,696,0,4,4 2 2357 hungarumlaut
+u03B1_0301 523,706,10 2 2358 uni1F71
+u0391_0345 722,661,217 3 2359 uni1FBC
+u1D8F 443,470,217,115 1 2360 uni1D8F
+u036A 0,694,0,144,144 2 2361 uni036A
+u02E9_02E6_02E5 542,688 2 2362 uni02E902E602E5
+u20A0 616,688 2 2363 uni20A0
+u03E8 541,663,10 2 2364 uni03E8
+u007A_0307 443,663 2 2365 uni017C
+u01B1 743,655,8 2 2366 uni01B1
+u02B7 428,550,0,2,1 0 2367 uni02B7
+u02E7_02E6_02E8 542,688 2 2368 uni02E702E602E8
+u1FFE_0300 333,696 2 2369 uni1FDD
+\- 563,357 0 2370 minus
+u0064_0307 500,694,10 2 2371 uni1E0B
+u03A9_0313 812,663 2 2372 uni1F68
+u0069_0328 277,663,197 2 2373 iogonek
+u0411 574,655 2 2374 uni0411
+u03A5_0300 879,656 2 2375 uni1FEA
+*D 643,661 2 2376 Delta
+u0418_0300 722,859 2 2377 uni040D
+u0288 277,563,213,9 3 2378 uni0288
+--- 0,725,0,234,149 2 2379 circumflexacute
+u046A 895,661 2 2380 uni046A
+u004C_0323_0304 610,774,166 2 2381 uni1E38
+u004F_0323 722,663,166 2 2382 uni1ECC
+u04E8 722,663,10 2 2383 uni04E8
+u03B9_0306_0313_0301 269,892,10,28,8 2 2384 uni03B9030603130301
+em 1000,258,0,7,7 0 2385 emdash
+u0064_030C 646,695,10 2 2386 dcaron
+u263A 1020,584,14 2 2387 smileface
+u004F_0304 722,774,10 2 2388 Omacron
+u0054_0327 610,655,213 3 2389 uni0162
+u0443_0308 500,632,216 3 2390 uni04F1
+u0185 500,694,10 2 2391 uni0185
+u0436_0308 690,632,0,6,4 2 2392 uni04DD
+u0502 803,655,10 2 2393 uni0502
+u203C 572,655,15 2 2394 exclamdbl
+--- 0,674,0,326 2 2395 tilde.alt10
+u0309 0,896,0,0,239 2 2396 hookabovecomb
+u0503 770,694,10 2 2397 uni0503
+u0075_030C 500,696,10 2 2398 uni01D4
+u0167 277,563,10 2 2399 tbar
+u0074_0327 277,563,213 3 2400 uni0163
+u05C6 325,589 2 2401 uni05C6
+u0471 625,459,213 1 2402 uni0471
+u04BC 878,663,10 2 2403 uni04BC
+u1D69 334,195,217 1 2404 uni1D69
+u03A5_0308 722,811 2 2405 Upsilondieresis
+u03EA 656,663 2 2406 uni03EA
+u0368 0,561,0,113,113 0 2407 uni0368
+--- 0,852,0,169,87 2 2408 uni03010307.cap
+u2500 708,339,0,6,5 0 2409 uni2500
+u1DCA 0,0,217,95,94 1 2410 uni1DCA
+u0065_0323 443,472,166 0 2411 uni1EB9
+u1D49 256,558 0 2412 uni1D49
+u017F_0307 277,854,0,38 2 2413 uni1E9B
+u03A9 768,663 2 2414 uni2126
+u02E6_02E5_02E8 542,688 2 2415 uni02E602E502E8
+u0348 0,0,217,84,84 1 2416 uni0348
+u0329 0,0,217,27,27 1 2417 uni0329
+--- 0,0,152,0,118 0 2418 dotbelow.alt1
+uFE21 0,775,0,387,2 2 2419 uniFE21
+u0190 500,663,10 2 2420 uni0190
+u1D28 535,459 0 2421 uni1D28
+u02CE 333,0,216 1 2422 uni02CE
+u02E8_02E9_02E5 542,688 2 2423 uni02E802E902E5
+u03C5_0304_0313_0300 495,840,10 2 2424 uni03C5030403130300
+u044A 517,459 0 2425 uni044A
+u251C 708,911,304,6 3 2426 uni251C
+u02EB 333,430 0 2427 uni02EB
+u1D97 443,472,217 1 2428 uni1D97
+u04C9 722,655,213 3 2429 uni04C9
+u04A1 573,459,0,12 0 2430 uni04A1
+u0397_0314_0301_0345 1015,666,217 3 2431 uni1F9D
+*W 743,663 2 2432 Omega
+uFFFC 1000,720 2 2433 uniFFFC
+u0397_0314 859,656 2 2434 uni1F29
+u02CF 333,0,216 1 2435 uni02CF
+u039F_0313 791,663,10 2 2436 uni1F48
+u0050_0307 556,826 2 2437 uni1E56
+u048B 535,685,194 2 2438 uni048B
+u02E6_02E7_02E9 542,688 2 2439 uni02E602E702E9
+u2562 708,911,304,0,5 3 2440 uni2562
+u034A 0,694,0,159,159 2 2441 uni034A
+u0276 629,462,2 0 2442 uni0276
+u1D3C 417,672 2 2443 uni1D3C
+u0078_0308 500,632 2 2444 uni1E8D
+u202B 0,603,134,21,213 2 2445 uni202B
+u05AF 0,884,0,95,96 2 2446 uni05AF
+u004F_0307 722,826,10 2 2447 uni022E
+u2563 708,911,304,0,5 3 2448 uni2563
+u1DC8 0,725,0,154,154 2 2449 uni1DC8
+u0593 0,874,0,72,72 2 2450 uni0593
+u02F6 333,246,0,4,4 0 2451 uni02F6
+u023D 610,655 2 2452 uni023D
+u1D2A 528,459 0 2453 uni1D2A
+u0592 0,842,0,210 2 2454 uni0592
+*m 536,459,214 1 2455 mu
+mc "
+u206F 0,689,134,117,117 2 2456 uni206F
+u004E_0301 722,859 2 2457 Nacute
+u02E7_02E8_02E8 542,688 2 2458 uni02E702E802E8
+u0391_0314_0300_0345 791,671,217 3 2459 uni1F8B
+u01AC 610,655 2 2460 uni01AC
+u206E 0,691,134,117,117 2 2461 uni206E
+u02E9_02E8_02E5 542,688 2 2462 uni02E902E802E5
+u026B 277,694 2 2463 uni026B
+u0448 770,459 0 2464 uni0448
+u0055_0311 722,847,10 2 2465 uni0216
+u049D 485,459,0,2 0 2466 uni049D
+u0429 1008,655,213 3 2467 uni0429
+u20F0 0,826,0,204,201 2 2468 uni20F0
+u200C 0,629,134,21,21 2 2469 uni200C
+u006F_0307 500,648,10 2 2470 uni022F
+u05AE 0,814,0,0,292 2 2471 uni05AE
+u02E7_02E9_02E6 542,688 2 2472 uni02E702E902E6
+u03C9_0314_0345 658,696,217 3 2473 uni1FA1
+u0395_0301 759,656 2 2474 uni1FC9
+u0194 722,655,217 3 2475 uni0194
+u039F_0313_0300 996,666,10 2 2476 uni1F4A
+u1D55 288,414 0 2477 uni1D55
+u006F_0328_0304 500,611,197 2 2478 uni01ED
+u02F9 333,655 2 2479 uni02F9
+u2320 604,834,300 3 2480 integraltp
+u0302 0,696,0,159,159 2 2481 uni0302
+u0054_030C 610,859 2 2482 Tcaron
+--- 609,587,10 2 2483 tavwide
+u0418_0308 722,795 2 2484 uni04E4
+u03E0 731,677,217 3 2485 uni03E0
+u20A8 1101,655,10 2 2486 uni20A8
+u04FF 500,459 0 2487 uni04FF
+--- 565,589 2 2488 alternativeayin
+u004B_0331 722,655,117 2 2489 uni1E34
+u03B9_0308_0300 269,816,10,0,3 2 2490 uni1FD2
+u1DB5 191,613 2 2491 uni1DB5
+u0284 333,694,217,17,16 3 2492 uni0284
+--- 0,892,0,158,156 2 2493 uni03030304.cap
+u0079_0302 500,696,216 3 2494 ycircumflex
+u0279 333,459,13 0 2495 uni0279
+u006E_0307 500,663 2 2496 uni1E45
+u02D5 333,251 0 2497 uni02D5
+u03B9_0308_0301 269,816,10,0,3 2 2498 uni1FD3
+u047F 633,641,10 2 2499 uni047F
+u041E 722,663,10 2 2500 uni041E
+u03C9_0313_0301 658,696,10 2 2501 uni1F64
+u03D2_0301 890,663 2 2502 uni03D3
+u0364 0,561,0,112,111 0 2503 uni0364
+u0426 722,655,213 3 2504 uni0426
+u0460 1172,663,10 2 2505 uni0460
+u02E5_02E6_02E7 542,688 2 2506 uni02E502E602E7
+u2C61 277,694 2 2507 uni2C61
+--- 0,839,0,40,40 2 2508 upper_dot
+u047E 1172,818,10 2 2509 uni047E
+u041F 722,655 2 2510 uni041F
+u03B7_0342 522,674,213 3 2511 uni1FC6
+u25B2 989,585 2 2512 triagup
+u03D2 722,663,0,10 2 2513 uni03D2
+--- 0,0,152,0,152 0 2514 dotbelow.alt9
+u02E8_02E5_02E6 542,688 2 2515 uni02E802E502E6
+u0075_0308_0301 500,806,10 2 2516 uni01D8
+u03B1_0314_0300 523,696,10 2 2517 uni1F03
+u03C5_0306 495,684,10 2 2518 uni1FE0
+u0065_030F 443,696,10 2 2519 uni0205
+u02E6_02E8_02E5 542,688 2 2520 uni02E602E802E5
+--- 0,0,152,0,472 0 2521 dotbelow.alt15
+u04FE 722,655 2 2522 uni04FE
+u03B1_0313_0300 523,696,10 2 2523 uni1F02
+u0360 0,674,0,642,36 2 2524 uni0360
+u0326 0,0,249,60,60 1 2525 uni0326
+u0511 395,472,10 0 2526 uni0511
+u0464 967,663,10 2 2527 uni0464
+u1D81 500,694,217 3 2528 uni1D81
+u0430_0308 443,632,10 2 2529 uni04D3
+u007A_0301 443,696 2 2530 zacute
+u031F 0,0,217,79,79 1 2531 uni031F
+u0410_0308 722,811 2 2532 uni04D2
+u050D 453,472,10 0 2533 uni050D
+u0041_0323_0306 722,847,166 2 2534 uni1EB6
+--- 379,554 0 2535 gershayim
+u02E7_02E5_02E5 542,688 2 2536 uni02E702E502E5
+u0043_0307 666,826,10 2 2537 uni010A
+u1D46 390,558 0 2538 uni1D46
+u03C1_0313 499,696,213 3 2539 uni1FE4
+u01BF 500,472,217,0,4 1 2540 uni01BF
+u02E9_02E5_02E8 542,688 2 2541 uni02E902E502E8
+u1DAB 270,550 0 2542 uni1DAB
+u03B9_0306_0313_0300 269,892,10,4,8 2 2543 uni03B9030603130300
+u03FE 666,663,10 2 2544 uni03FE
+*g 441,459,213,0,2 1 2545 gamma
+u1FFE 333,696 2 2546 uni1FFE
+u0402 751,655,213 3 2547 uni0402
+u05E9_05BC_05C2 708,725 2 2548 shindageshsindot
+u03FF 666,663,10 2 2549 uni03FF
+--- 0,0,152,0,379 0 2550 dotbelow.alt10
+u04E0 500,655,10 2 2551 uni04E0
+--- 0,0,152,0,544 0 2552 dotbelow.alt6
+u03E4 615,663 2 2553 uni03E4
+u0072_0307 333,663 2 2554 uni1E59
+u0413_0301 578,859 2 2555 uni0403
+u01BE 421,563 2 2556 uni01BE
+u02E8_02E7_02E7 542,688 2 2557 uni02E802E702E7
+u02E9_02E7_02E9 542,688 2 2558 uni02E902E702E9
+u004B_0301 722,859 2 2559 uni1E30
+u0280 487,459 0 2560 uni0280
+u004C_0327 610,655,213 3 2561 uni013B
+u04C6 499,459,194 0 2562 uni04C6
+--- 0,0,170,27,27 0 2563 meteg
+u0061_0302_0300 443,725,10,0,9 2 2564 uni1EA7
+u2551 708,911,304 3 2565 uni2551
+u03B7_0313_0342 522,818,213 3 2566 uni1F26
+u0075_0308_030C 500,807,10 2 2567 uni01DA
+u031E 0,0,217,79,79 1 2568 uni031E
+uF00B 0,895,208,117,117 2 2569 uniF00B
+u03C9_0313 658,696,10 2 2570 uni1F60
+~ 333,674 2 2571 tilde
+a~ "
+sqrt 548,792,7 2 2572 radical
+sr "
+uA720 0,725,0,153,172 2 2573 uniA720
+u03B7_0313_0300_0345 522,696,217 3 2574 uni1F92
+u03B7_0314_0300_0345 522,696,217 3 2575 uni1F93
+u0077_0301 722,696,10 2 2576 wacute
+u03BF_0313 500,696,10 2 2577 uni1F40
+*x 443,459,213,0,1 1 2578 chi
+u0295 443,709 2 2579 uni0295
+u02E5_02E9_02E9 542,688 2 2580 uni02E502E902E9
+u1D7B 277,459 0 2581 uni1D7B
+u1DC4 0,725,0,154,154 2 2582 uni1DC4
+u03C5_0304_0313_0301 495,840,10 2 2583 uni03C5030403130301
+u0057_0301 943,859,16 2 2584 Wacute
+u03A9_0314_0342_0345 929,801,217 3 2585 uni1FAF
+u0221 500,694,217,83 3 2586 uni0221
+u05D6 278,588,8 2 2587 zayin
+uA71B 500,933 2 2588 uniA71B
+u0065_0304_0301 443,806,10 2 2589 uni1E17
+u043A_0301 485,696,0,2 2 2590 uni045C
+u05A1 0,826,0,83,81 2 2591 uni05A1
+u03A9_0313_0342_0345 929,801,217 3 2592 uni1FAE
+u1D20 500,459,10 0 2593 uni1D20
+u0198 722,665 2 2594 uni0198
+ts 395,472,177 0 2595 sigma1
+u1D66 282,334,217 1 2596 uni1D66
+u05E4 523,587 2 2597 pe
+u0435 443,472,10 0 2598 uni0435
+u0075_032D 500,459,217 1 2599 uni1E77
+u0075_0323 500,459,166 0 2600 uni1EE5
+u0444 647,694,213 3 2601 uni0444
+u0300 0,696,0,0,200 2 2602 uni0340
+--- 600,821,188,0,6 2 2603 aleflamedsegol
+u1D1B 437,459 0 2604 uni1D1B
+u03BF_0301 500,706,10 2 2605 omicrontonos
+u0061_0328 443,470,197,12 0 2606 aogonek
+u0079_0309 500,690,216 3 2607 uni1EF7
+u02C1 248,700 2 2608 uni02C1
+u02A9 787,705,213 3 2609 uni02A9
+u05D5_05B9 255,711,6 2 2610 vavholam
+u1D24 397,472,10 0 2611 uni1D24
+u04AF 500,459,213 1 2612 uni04AF
+u0335 0,360,0,154,154 0 2613 uni0335
+u0044_030C 722,859,2 2 2614 Dcaron
+u0073_0326 389,472,213 1 2615 scommaaccent
+u01C7 1000,655,10 2 2616 uni01C7
+u0440 500,472,213 1 2617 uni0440
+u0308_0301 0,720,0,142,142 2 2618 uni0344
+u0493 410,459 0 2619 uni0493
+*d 471,699,10 2 2620 delta
+u0257 500,705,10,74 2 2621 uni0257
+u006F_030B 500,696,10 2 2622 uni0151
+u0492 578,655 2 2623 uni0492
+u0041_0304 722,774 2 2624 Amacron
+u02E6_02E6_02E5 542,688 2 2625 uni02E602E602E5
+u20B2 722,725,77 2 2626 uni20B2
+u0073_0301_0307 389,702,10 2 2627 uni1E65
+u20B3 722,661 2 2628 uni20B3
+u019A 277,694 2 2629 uni019A
+u03BF_0313_0301 500,696,10 2 2630 uni1F44
+u1DC0 0,720,0,157,161 2 2631 uni1DC0
+u0079_0304 500,596,216 3 2632 uni0233
+u03B9_0314_0301 269,696,10,2 2 2633 uni1F35
+u059D 0,813,0,161 2 2634 uni059D
+u00AD 333,273 0 2635 uni00AD
+u04AE 722,655 2 2636 uni04AE
+u02E5_02E8_02E7 542,688 2 2637 uni02E502E802E7
+u035C 0,0,192,632,26 0 2638 uni035C
+u0059_0304 722,774 2 2639 uni0232
diff --git a/scripts/LinuxManBook/devpdf/Tinos.pfa b/scripts/LinuxManBook/devpdf/Tinos.pfa
new file mode 100644
index 000000000..88c21d670
--- /dev/null
+++ b/scripts/LinuxManBook/devpdf/Tinos.pfa
@@ -0,0 +1,7858 @@
+%!PS-AdobeFont-1.0: Tinos 1.23
+%%Title: Tinos
+%Version: 1.23
+%%CreationDate: Wed Jul 27 15:16:30 2022
+%%Creator: root
+%Copyright: Digitized data copyright (c) 2010-2012 Google Corporation.
+% Generated by FontForge 20201107 (http://fontforge.sf.net/)
+%%EndComments
+
+10 dict begin
+/FontType 1 def
+/FontMatrix [0.000488281 0 0 0.000488281 0 0 ]readonly def
+/FontName /Tinos def
+/FontBBox {-1114 -621 2618 2010 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+ /version (1.23) readonly def
+ /Notice (Digitized data copyright \050c\051 2010-2012 Google Corporation.) readonly def
+ /FullName (Tinos) readonly def
+ /FamilyName (Tinos) readonly def
+ /Weight (Book) readonly def
+ /FSType 8 def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ /UnderlinePosition -273 def
+ /UnderlineThickness 100 def
+end readonly def
+/Encoding 256 array
+ 0 1 255 { 1 index exch /.notdef put} for
+dup 32/space put
+dup 33/exclam put
+dup 34/quotedbl put
+dup 35/numbersign put
+dup 36/dollar put
+dup 37/percent put
+dup 38/ampersand put
+dup 39/quotesingle put
+dup 40/parenleft put
+dup 41/parenright put
+dup 42/asterisk put
+dup 43/plus put
+dup 44/comma put
+dup 45/hyphen put
+dup 46/period put
+dup 47/slash put
+dup 48/zero put
+dup 49/one put
+dup 50/two put
+dup 51/three put
+dup 52/four put
+dup 53/five put
+dup 54/six put
+dup 55/seven put
+dup 56/eight put
+dup 57/nine put
+dup 58/colon put
+dup 59/semicolon put
+dup 60/less put
+dup 61/equal put
+dup 62/greater put
+dup 63/question put
+dup 64/at put
+dup 65/A put
+dup 66/B put
+dup 67/C put
+dup 68/D put
+dup 69/E put
+dup 70/F put
+dup 71/G put
+dup 72/H put
+dup 73/I put
+dup 74/J put
+dup 75/K put
+dup 76/L put
+dup 77/M put
+dup 78/N put
+dup 79/O put
+dup 80/P put
+dup 81/Q put
+dup 82/R put
+dup 83/S put
+dup 84/T put
+dup 85/U put
+dup 86/V put
+dup 87/W put
+dup 88/X put
+dup 89/Y put
+dup 90/Z put
+dup 91/bracketleft put
+dup 92/backslash put
+dup 93/bracketright put
+dup 94/asciicircum put
+dup 95/underscore put
+dup 96/grave put
+dup 97/a put
+dup 98/b put
+dup 99/c put
+dup 100/d put
+dup 101/e put
+dup 102/f put
+dup 103/g put
+dup 104/h put
+dup 105/i put
+dup 106/j put
+dup 107/k put
+dup 108/l put
+dup 109/m put
+dup 110/n put
+dup 111/o put
+dup 112/p put
+dup 113/q put
+dup 114/r put
+dup 115/s put
+dup 116/t put
+dup 117/u put
+dup 118/v put
+dup 119/w put
+dup 120/x put
+dup 121/y put
+dup 122/z put
+dup 123/braceleft put
+dup 124/bar put
+dup 125/braceright put
+dup 126/asciitilde put
+dup 160/space put
+dup 161/exclamdown put
+dup 162/cent put
+dup 163/sterling put
+dup 164/currency put
+dup 165/yen put
+dup 166/brokenbar put
+dup 167/section put
+dup 168/dieresis put
+dup 169/copyright put
+dup 170/ordfeminine put
+dup 171/guillemotleft put
+dup 172/logicalnot put
+dup 173/hyphen put
+dup 174/registered put
+dup 175/uni00AF put
+dup 176/degree put
+dup 177/plusminus put
+dup 178/uni00B2 put
+dup 179/uni00B3 put
+dup 180/acute put
+dup 181/uni00B5 put
+dup 182/paragraph put
+dup 183/uni00B7 put
+dup 184/cedilla put
+dup 185/uni00B9 put
+dup 186/ordmasculine put
+dup 187/guillemotright put
+dup 188/onequarter put
+dup 189/onehalf put
+dup 190/threequarters put
+dup 191/questiondown put
+dup 192/Agrave put
+dup 193/Aacute put
+dup 194/Acircumflex put
+dup 195/Atilde put
+dup 196/Adieresis put
+dup 197/Aring put
+dup 198/AE put
+dup 199/Ccedilla put
+dup 200/Egrave put
+dup 201/Eacute put
+dup 202/Ecircumflex put
+dup 203/Edieresis put
+dup 204/Igrave put
+dup 205/Iacute put
+dup 206/Icircumflex put
+dup 207/Idieresis put
+dup 208/Eth put
+dup 209/Ntilde put
+dup 210/Ograve put
+dup 211/Oacute put
+dup 212/Ocircumflex put
+dup 213/Otilde put
+dup 214/Odieresis put
+dup 215/multiply put
+dup 216/Oslash put
+dup 217/Ugrave put
+dup 218/Uacute put
+dup 219/Ucircumflex put
+dup 220/Udieresis put
+dup 221/Yacute put
+dup 222/Thorn put
+dup 223/germandbls put
+dup 224/agrave put
+dup 225/aacute put
+dup 226/acircumflex put
+dup 227/atilde put
+dup 228/adieresis put
+dup 229/aring put
+dup 230/ae put
+dup 231/ccedilla put
+dup 232/egrave put
+dup 233/eacute put
+dup 234/ecircumflex put
+dup 235/edieresis put
+dup 236/igrave put
+dup 237/iacute put
+dup 238/icircumflex put
+dup 239/idieresis put
+dup 240/eth put
+dup 241/ntilde put
+dup 242/ograve put
+dup 243/oacute put
+dup 244/ocircumflex put
+dup 245/otilde put
+dup 246/odieresis put
+dup 247/divide put
+dup 248/oslash put
+dup 249/ugrave put
+dup 250/uacute put
+dup 251/ucircumflex put
+dup 252/udieresis put
+dup 253/yacute put
+dup 254/thorn put
+dup 255/ydieresis put
+readonly def
+currentdict end
+currentfile eexec
+743F8413F3636CA85A9FFEFB50B4BB27302A5CC0AB6E2F959BF20D320C373C2128D0A0CE
+7072B1F672A0AA38C3C0ECEB04B44CB174A1C31612D71FFA20C90954256378372F795B0B
+F2941F437F059F41AE0598C00515FEF187333557F32CE32A9EE7D4BAB65DA5343F92707E
+2CFCF3E8CE446E5ADAC39FC37ECE64B68B356CE0D710F45B1E7F2CD768ABCA1436083668
+761A1009464162D054C1F6BF2C46A319B3C66452876316C13A926456D3662958FD56740D
+5856736E6104F813ED319156777934EEB1C5445AE6BF6EE59E5B19708B4287DB4BEB5161
+55834A33FAE1F3D62C8F7A832692BDE5582741BF98DD296E2D36C56E48A982BF0B5449BC
+F52E3A915C366BD7794FD5221D66F0DB6D71115F005A9FEC6FE8BB0F4EF9D8256C5BD68E
+08441C1D4AAFB1889A9A610DBA3C5BEFD017AAC002A855D0DB7ED8DF316024DC8D904E8B
+552E7163034CD61B63F202E013BA47530D91C6151C12CD5423F5D7AD852D44643BB362B9
+3293DD666A56EEF19D959639C09F68874744E75BE2A2554A2E49DCC78EBDF860A87FFE36
+6126BB02003B68AA375F7ABE6D6C43B956AD93635123B5F2B552EFBC14059202004E639F
+978A914A42353AFE096987465856DA37793438F3665BF5FC511BC8B96A4ABE8551AFDEC2
+5B45F5538364E0E999C80F7A29ED4F45123D0D772110BCA6B9ABD06B61E6F306E26221C2
+0717004E02E0B9B25396A79441E7D17D67C4F97C6025873E430185E3EF29166C6660B790
+70F932478D87498E6CDDD3986B20F7854BDA4D273BB0BE22FC89A26DB7D52FAA550A8E14
+CC312C65F0C780088364E2020262AC0FDA1E6D068D4F11014BA5953DBF0CE569159FEC83
+A97B9AE498EE736204B126545243AECB7DE2084425BF9AF24B069370F69C8ED982B51C0B
+E408339FE441AC2A95AAC29BA142C1538F75EF1531258B60FE14E50CE0BDA0FC8B0FAD38
+373C4BB238718728C250604FDB958359769E8E061BC3BFC8D7BC4A69ABA6970FB0A36930
+74F68EFAFF053F2E956F92B9039E625F9C064A29355CD921387DED087D7E11085D4EE66C
+DCEEB0BBB1B882710B9A1733D3D5EDDEDBC14798DB7E10D9C03702902167D82109B7EB90
+0C02C318874C50E486B6C905E5D93F9E05C015A08E50AAA84B1B0E25705DA94EF41C3063
+FE29BF0A869B7E0C8FD9822D4CDBD694665E499500AB143884F6397E8A9928496C905333
+12F35DB3342C48008E4719D07E1ACF356B2073487D1BFAF2EB7A7C1821BC555C92C2E23A
+2876F6822EDEF055912B86F9A0AE3CA9EBE7154CE64D3D676B5A46B12D0E20163B463BCC
+41ED897E6340FD5CE8B49A157B627EAC767276A8EF69DE735F24B4747CA80BA0319DDEE4
+BBB71AF8232A9E6385D392E725C1B4D90B1027473BEEC57701DBD659987DE0649A2C8EC1
+8DAD954D4BDDDDBF84D5FB065E7816625BFA3AFFACC83F36E6E838981511B260AB7273C9
+87EF31F9DCB1F81E314AF6F1BE20CEF099658E969331EA63DF80F0D264D5798DCD3F0AAF
+F6E1BFA5BF8CAC75BA807F2F259C1B08AE0A3B062D54A214DA00B2EFEEDC79CCBCAA7379
+1F6DC4C1610949F50F8439FC6DE06670C9F6572DE7387C4FDD90C9A5F0CAD7AE65FFF4D6
+323946AB4B4ED2393482717A81D7BF26D05A33B8B51F466BDACD5A27767CDF0A8DA52B4D
+30A9E9ADA5651E35D99BE80139C519BA7E7151ACCB29FA92F893715520860907F2C60A2A
+3A246B20FDECC6A8D3626F2DDE1A36D2B4E047C759F524F4B63099A987EA204AB9CCA48D
+D47D097FA5D04155E6E94800DEEB68F4164D26BC5337B8CEC2F7CF7232E511200D24DB6D
+0A09960F188F927F8037D3DE0841B66535DF94A67E1E23ECB2A7D42896541CA25A8F849D
+CB97FE330EBCE4C1872357E93133C8134361E0FCB4F078AD203E319EDE4DC80184267C19
+5B29EF1252427354244BB74D745DF4E4F461FFF56A481191488019F2F9112045A2557286
+1B63B785299DED8BF6A8F25E12828A6529120A0CF7DC63ED075E84FB87B018695A1F73FD
+0BFCD3CBFCFE8B2EDAC655A1FE09359E3576F227DE90507D428E288DA954234BC6B17681
+DE28BB379EFBBE50ADCEDD75864424D1280CC6B38D7B23EF78B3FE7A44E873360891996D
+4E56AE5855A94145366405342576D7F0560AB603EEA924D935296098DC25FB77C9DF698D
+678739202E963AF4B1A9993217246CD43C3BABF2B08F7726789D7A5CC1930C7CE78616F3
+874F995B467E2038BF51B6362CE553244E535E0E46154EEC797C1C4278B14FDD1E1F916F
+F400AEE367045DBD4E191A2AB73592429F043E98247E63192963B7912351B6506364D839
+5F357081763B0CFCCC33425D85E026501ADB195C5A511A434CC7C9BDAB52A6207C9263C6
+6CD852B24E1D76D5840A8CB8FFB9AC0D2CDE5A97CB3A49FFCB00AB52E51692D0DBCD1C98
+399BB0B89ED0D997E3AD55EEF266EF27C0BDEEE99D78BE27C4C9C6B2930D88B1365BC8F1
+7E16D8F2A3AF48B1A90C93DCD061C6C17528639ABB88FD30170720B34B1159772D416F70
+02E6FC68E1DF3467EDBE6A6090998743C7AFB601F15891B9FCB7B74A154C696B0146DEA4
+6B62DE3AAFA226883082E6E3FF1080069347A106C3E5682D1B9A340D9511E43620C03EDB
+A1C51024A67A2F2181FE8D3FA3F86EB7EEA649655D7AFEE3DD8028B38AC957ABF1C9CF4A
+623A47FC51CA4B23FD329775E155DA1E35E3DC40219F1AB16F1D4B034F6B387AABF5D7D1
+FE2D723FDB46A7A8243F1BA71D4635C89A41A940963E9834381D571BEC26C52E44FBEB3B
+EB4226683786C3A194F8DB970824997A48EA84FCCC23FAA761F171CECD3103CAB2C68287
+B258D7ABBC4EAE6CC792930EBD28C2EEDCC4C827181F8B68A6AA88FBA1B777B6A7E6B48B
+94E4B81942C245C4AE0BA41E2C41C725EFF869B64961D6BC0CBF19DE27F66FF5E4D4213C
+BD5C13B7D9E32A69427BCC6521D8E9F1C4C1924C765E42C44362EAA3211173288AC7ED32
+C590427126C3125C7E4F457DE266C1A6063F15036E6287C784C5C9F1D96C4D9673997128
+9DE2B713779821BFB2CA049AB0ADA518DD6F866FDDD7D9FE37C36872A7BD3790BF4F411F
+AF8192A397D36BE09A941E2C6D577F57B20B0E000030A69456BB6CDF14D62DF54C937451
+65460A056EFA3730F485CAFA944527144B97B0773380AA71E6011A4FA93DAD26AB144F03
+389B3531AB5EC835A02BD03F4C14027BE1EF5E7C303B1FE1D26EC13B5DD93A35013E116E
+02C1CC1ACAC0392840374FD20C6C33332778967C306AFD55F5BE024AF5AAC6C84C9753F4
+738BC7162F6A2CD913572A02763548BBC6CB313855A6FBBBC67686B0E1DCBAFAB2FDF0BA
+4A81F199C3E2D93AF70CB1A41B353A21650551BAEBF8667B306076748935A9DB85B6C243
+96C34F1F44DAAC992FE7CF57C005B28EB18843F58158F4E956191E053F80BF4CF55E1969
+C4BBF61C917BD44C78A70BE0357C53B64193A8BF555A4E1BD7FB8315785C257F5B9C1BE7
+963D59F75B7A305F37B70BD34CC2D3E371DA6E925EA98A72AED90A0B9D6C21DA68931885
+2AD994EF452C5D3005B0CBF4387762737C1F392C7191B29BAE5139B849B791A9B741C97F
+F8952F2F9CE3E69ED861BA8E56DF58D7ACEB291AE70C4E66522DB736BC4C9D20F809049C
+0ACA5BC2C7F8A97FAC1C6ACA9AEAC582AF931D5C4F9534D3808F196542C6453B670D3CD8
+12C0A78BE51BE589A2E4D364F6CED04FFA1DCE6D0A7A62E32322B0D92488282A77E8A54F
+8CF240CB5014721B9017F367EACED4D4B7D1F3198F20E9DDB85983D4FE7B5C2C42D39FCF
+C48D4EE6CF5D931C7A536A33D3EF544B9ED7523672B8A03369BB98573B70D9B9F6EB46B9
+CF0C4A59CD90425A21880D92120C654AFD820F389B91444A3904A1AC9EAA2BE571C6086A
+92183A285C74CCC0EE34DD03AAA66227807E3E7958C2048CDF90EAA7A547320228E1FC83
+4050227569588BB2DE38E137535CA41FC21A0A9FF9C3801371E22C1DC10FFB88DABC76F0
+1F0880DA94C26569A5A76BDEC9A40C97DA62AE6A4EC47F4E52E8F35CB3C2217916C4BBDF
+6F7044E3159300189CD53024A68B2E012EE6CAAE25809D855B40E605A5A31A39C156A3DD
+D8A43397526E68E300E2FD9F98345BC7795F2FF7B1ECD5948B6345C20E2C07049D36DF94
+C722D752BC6BA646E4825F8EBC5387F983B239EF2B73CDAF3C7C84607820E97975738E9B
+DAD4D6A4E85285381CDAF0D55DF365499EDE8148D145ED055360FEFC9812C052B4DDBAFF
+CAF98576106873D3381C9A12C32CD86AE8EB2A525539927295451FCAB6C17156275BD47E
+A3CBCCFB92967F5E5FCAF1E65A32CD9C8A51118FFC7D0861BF0AC1E61F9275AFA6A50620
+04031CEA3D884BFF9E1B93DC059EF8D53253C4AF63AB2E521B8D6309AB9690B5DD54FA72
+10FFA848CE5AC71942646178C23C763D3DC9482C0023380BA26E980ECFC914FD820D6B73
+E3AC9868A442C8EC52657863F289CF73F502CF4DD663568ECBA50AFC3C761764AC06D2AC
+AFA124CEBB0A31F3ED5DC1B833318A7847DB641FE3565604766CA9DA91098E795A638FE3
+63CD60605E979C547B110F45A55CBE40DA10019066A9830C54A07BB43D8A925CDFC8022B
+F8280B1BEDA665A0DECE57B4D95409C9B827D6CF0E68A3C525F48C6C925F99342B492E23
+64349C34060092078CBD893C780562E00CF4205B368ADFE86FD3D90C397F6F94DBE0A638
+52534AE3E93A71C06EBE24089551DE72828F050A5B4C150BC7B1F3061FCC3BA180E73B2B
+5CCD67E24AA7D2E98734896B28155189510D7E4A0503CC70668DE5BFEE0716EFBFC21963
+CE33E85AF666ACD5001BF1DF39B84CEEBEB9BDD8A5D2654FACEB3520D9E132522F671FE0
+EF45FD6B55FFC01F4F69803A6C34C5651AA6B740BE8670B638477D63D31F5BDB1BFCD3F7
+913A04957F6A3408BC1734EBE5A93B5C64DD76BCB351CB2F7D9CCA5B520B03C9E1229701
+BE7F5D7E9745B29247D304BDEE85345E272027898F4824DE2B0FDE5B4A49884C9B1466F4
+36A127372952E4A4BE9C2176386897753B152124280C7313D4CE6DBEE2C89E2998F58F3A
+DC277BD7CA65FBD08430C575F14C88A70E1A34B7059BE453A6D7AA86CECB3C3245F865B1
+2CAD5FE27A60309F6FA1B7AB01A7182277ACAA69215462F1F287D15B8DC9738EBF545076
+913211EB472B23CF1BB74811342781AE39FEC29C3E44517D4F701B3FFE377AA127E1510F
+17C30A31E16752B705EF5923F2EEC5CB604EC01B639F29D0300153059F6E09782D4E5756
+075E3E2C70A8386AF30F39490204568D3B810583C51D6A5DBC5CB940004529E8CD645694
+5A3A4CE8D881C2B1462246EB5D4BCFE45013196C24506647C39C818C3357A7E1AED4361C
+FD494ACC396C28E53B217F6DB8415DA3BFF92CB4956A9AB919CC43FA69442960AF9EF205
+7653C5B5F9753A834038D6B1576574DC8508FFF08E61D9D6BC39FD6EC36471EBF0E03231
+F29B0F608BCA1380E6097D21657908EAEFC6117E8EB5BD00F469E3AEF1511518FC6B0860
+71BEDB078BB335F2FBC3FB03D0EBA623163F835898A735CB93C01D9F33C6BCB245409617
+6EA7530C255F703DED5500E9F122EF4986564D7C06D3419EB7594CD3AE2317CAEA4D5058
+22FDB829D8C29E36FE1661293F94E140C23DE9544AAC5F4E3EA2294E821F2D36111A8A9C
+43C038391DC55BD8F7AC3D904837813BF86EDF4BB4CE240B4B3DDAC25BC5BF1BD0DAF8D8
+1C9E6F896596593D937634F91316981BB0676047B6F9FEE909CC9248A2F5067BB0ABB6F4
+FCC239978F8FE0CC6C16F707E96048D6950E9036683FDFB7E18402193C96B1E4A26C1BF5
+9F60FAC5AC4DB469C4768965EBEC3B3A4160648724037037742CAEDDBFFC598545D9B7A0
+8A4E0DD1799CADCB8B2783321D5FD943D725EB749CD6514A3312C1C856F526E8CFB59920
+D1C1987232B4A4F511382D5696805E9DF472A19F400FC9B6444E5F70A4DC42EBC2635FC8
+46BCB42080B0F16AFC5D2D737F882203E331460340E756417B68D1949DA1EAE46996CD08
+8CBF947466A961FF7C124453C102AD0BBE2C6F969D1441FD870989EBCCA2B8933FEB6AA9
+151025E3A4AF3086A146459A138D4FFCCEF81F3A64710088078F64C187BC17584F6E90EB
+8B5D938597B86A59A098550C0FF99BA3C19AB14F67281071453040553BD3209306BB902B
+E9BCE0CF21F6A493339F82BC35583F9727BCE4869CE7C04ECBFEFB8BE7769325A24BB3A6
+DB8285A9508A0600AB18155D9E2C62D0FF702EC15AF6BBE170B2492DFC90AC3E804AB33A
+625F0D3F10DB95652ECC978881EBD0BDAF74CEA10A053134B6E3FD0BE0EC1C9A7BEAE6A1
+4937054FDB0A33C3C91387A09EEDE5B4D86BA259CB83A18CB7AAF1135B231A28C21DB561
+0E9E86231F8C2BC34743972E06836F4F2F58D4572C2E1D8F44875117A524702B45C0E31E
+9FBC5F51A757A6DE75965A31E441CC06823C4D82D94D46BD327A05D637F1B07E027F91AC
+9DF897170A33EF1B393C15EA08D5F2F7EF1B36F46A33373A60EE7A5F95EF0841FA048CE0
+DE9695641B19A4BC996303429DB7F8EB247D5D25F9E83DE42FE4BFEB40BF4AC167553F7A
+06FD2F1C456D3A746E2862745C68EAF7826C8EF106995CFDFB84AB6A7741712C229769EA
+E804B6587247D30A4D947AF49FA7985CD41D8ACEABB4FDE4B445C1ECC3545CDD5364C134
+64562EAE43864F43A77D0747217866FC138A721D21C778A26CFF456EAFFB7463FFF3B17B
+904022BDE7BF32BA82366F4869886E64B3EC776EFEE90DB1E8D22BB8D86F1479031BC58E
+AB3D2FCF958836F54D8F1F8E0A7BE010320E8C70A3C7D191A0D873D6B6C71BF18A06D610
+81473D46AA3A89D57FE49C3366CDB1DD2FD768147481617B545181ABD452C856E00B9A37
+DA7FEAC08DB3D1B1549B099AAA9B32644F03AE06AC965A60A56B81166F8AF6D0B7D8C686
+31B62D1C8A5A3ED6D2A13A9F3308AD6F9A99F83EF4E6CB1385769CF570D75C0022C9693D
+501CA6370E8ECD63A4C8723FAFD176835CBF09E2C2B273753100F692B84E6B3362713B4C
+0B0290AF77B7A1480B3E5F07A11946112057AF93CDB17CA8288457FF0079C87E30419B03
+C67410C3D67445D25DE3F31DBF1ED2021932562EB417357E619D8C94523CDB4DF4BDD51F
+5D11D2C1D8841ED02492B3AFB38EE5F82516DB46C8849D8457C53A81EEA5524428E6999F
+45E9D5E12EEE15554A5030286A88D8D61DF4726FBDF725417F63D309F8E575F5AE3E21C1
+9E997541B0C2710419D06CE854636B70AE7A83B0E9F7F2408C98AB3ACEA034D97FBFA5BF
+466753902FCF8824B77200498A2FEA0B7150C3E76C80427CE4D44DE6DEFEDE8135789F2A
+DD32F9DFE926881A9161356C5A71D62A9ECEC512D544AC6330E02CDB7ECB00EED23944B2
+2A9BD5446445C63A870A14C1667026CCA4C382152273EF813587BB0CA8BD578373F0023B
+F71353E2AC6589AED6E62E3C8454DB35101954C4119E674EAEA304F13651B4B4F093D43E
+EF3C96BFC87954570CCCC9DC4A1DEF4FC2F1440DEF8896A10785904E40A671BFA7BF7770
+6568E84AD94360CD9DDD812924CAD53C52B500F83885874DF5960B49BB37DDD4EB557E5A
+48EDA82A5CEA66B76380DEEBE91E1555A9E7CE9E0D04F4AF3720205470599CD641591F99
+697B273FD36DAA200C224C91D42E8AFAB40DEFFEDFE42FC629458ADE7ACEE2C3B48713CA
+7B5E025914F2ABF6C014096598AB84131649ECA981181D460787A8D3CD21AA8BE59F75AA
+4758CB6EA8CA1692F0B7AC00B72AA87F4DE0BF14EF07EEC39267C7D144CDF1A5445B4842
+41D05EC7EBF2FE7D18B0F9E629C7D7F17D9699A6CA9C4A6A3F95EA470066F36D84F53946
+96F2C8BBBD58727BBEE93881C6F6E9289362F2470B36B6DC38E6C73F8A6ED1A8A05322D9
+7CF51DA8BE12CAE51D857C43F581C5237F17E49C31E1ACAF7D59A1C6971765D2DD35CED1
+5A1AC2467ADAEC6C29059FAB3233789551EDD636C7151F7AC33A81947FA95A91F7552CEC
+F6D8049428FF59EDB92CB77BBC99FD249D89112CBD3BC340616AA80AB9D2F9F089EE36E0
+9B4D7BBD4C55949ABF254F81C625AB8F21B25AD1B10F2F66D956A9A027F87C54E995D8A4
+92B83CC2F3AFB62EA0A401C5743223A3771473ED2387A1E63212AC1340910DC304A2596D
+F3F7FD9C0F9F83E9E9030819A646CBCA5AB6DFCE4D4675FCDC18541C2C56E6A3464A8CC0
+0568A9CE5C4E4D7F8D482A6D98879728914934D151C998372FEF2B8A4DCDC5CB82720AA7
+E55749B0445E4D9172E1168D6FAB64CE666215277F1C1854DEBFD2377D24C69607EA475C
+8CE26B17507E8AEB9DA0456701C205462EE6D270825B0EF2861764309A06FE9869CCAD41
+446E0F225D0F34E1A8373753CB94EECEEE8BFA6846F197BD2604554839A3F5C73BB7123D
+8D19C14B573E9A6C98A40C3E9B574E037AC8425B157E100468B5052CC18B54C288764E58
+D0A97A3371BC59C824FA2F48C9A647F6590E0AB3F2F775FDC2E6372F1F02FA78AB3C2833
+7231E0936B3C9986C039B0D6B19E0417DB1C8370AD189093EFDC99C06E21582E8BC277C3
+E1943DE4994D53938815A092C18B26EADB953ED292A4AACC21C44A27E772CCF2B6C52E2C
+1A4F8E0B2B6BA308588DF6C25A5DDC7FFD2E1430DFF9CFC97F7A2D9817EB4A5D2D9C43C0
+3792603174892B36FFCD321D648C014B769E4D513947DD453FE88C13A48B39E4F0B081D3
+EF9F8C6B4069AB6040EDEC9A170C64C75EE305D859BB4DBC568CE6B44A6C0586B0806A96
+9FD8A34A7B1FBEC341B3B20603CBA93935E4F2C202EC548BEA626DFD366D2040E383579E
+C88406C5B59737DD22F40C752AF4A01B6F8B70352D3D2CBA040967F00079FFAD3DF3B2A4
+B2FACA1B96831C17BD9FA5A2601AD82FDA473C02046B73E28F64AE232B6B59B7E3051C38
+A3AE039D7C678824E8B44CB87C254942788F13E10F443BEBDF954AB13EB8AF6556C296C3
+F24E5430C100FF39C72064036CC190CAF25D9965CF67B975B64018744130DFCD72A6EF35
+42AA7B5AAEDD750E8F4C57E668F3594FE6149FEEA68C46B82B0574B61784ED35E1896B66
+57C01D151FC334B5CE90F9E642E25AD5BBCDD46A95DE2D1406C5E21ED05093AD90069E13
+E5D56C3DF27825995A1858139B6B1BE64A6F1CB57AF12B02F2A9A5F65E2CD7F0B4278B1C
+0F1E5CEDC235BF3F603E766E9C9BBF96D1A0718F96B934EC86EEDB94EBB0ADB9C6FE5305
+CB68925EEAD8E024BDA11C436D9B8D9888EB3D97B097EDD3E4DA5BC7396E0A3542B739AE
+6E358C1F54027582192CB2AFF22CF425688E089AB59473AF5CD4C6BB2E9464E5263BD77E
+F3CA256A4E7EDCE4D271EC2AD5741A1DB4B3722453E02347533071762AF3261476A879CE
+94608E6B93D5662CBFB17C11468E1E894D47167AF8E2763114D918C8D5C1D0B0919E8573
+9304C10415ECAFA70590BD080B0D2D8ED6C7303AEE61625F0DE8DAA0CB82860E197D137F
+431FE2E140EDB447F58FDE607558512EEE4AC8D942214737B86369FA8B853940B5FBC879
+B81088699C9F55CA3379AAF4BC25C947B0512C13C2C9B4A942202DA52333868F6A230CB9
+0293E57BF71681B742C88BCCE0AE3693ECB7C9A807FAC755ECEF6CF97A9DD83D03F35539
+7A9FAF09EECDDFA53A37BE20F757600C5D03C2471E1173852B7032298D3822CA5FE89B29
+C1D8EB8E6E8B64D80F41B63D002CCDDA7FB40EFC884205934D9E68D35010B87C93AEFD7A
+426E23F5FAC9AAB358655A95CD66DCE76A73E5B33680EB1CF0AB85B07CE5A0BE2C65486B
+5E75EE9B0597C8E6C28885FBC2171FFE02BDE641830CC65AE4D61C8026724932039E6D1C
+C3F6FE7E2752436FDF83D6CBBA5639F7BAA5A9077FB4651C7F31DD6BBD5918E85E4EC136
+1F79B3DD73783B34899DEE41E140EC6E2C3BCF0F5A24C7768AABC7639682C467EF7F3BCE
+B96EC6997FFB69E7DFB2A5D92BF39EC76EBCF170BCF28CC878BFEF8D08D1E84D2CD1F425
+52D63FE646C915AC60A1A3CF078DDFF47813B49BA0BBD3F6415A630027EC7F763C64CE25
+F9498DB1940641C0CE0D3E62F916E14289859BD828643A4A947E11A1AA250D31A522BFD9
+ED3477DF797157B823FA4A170501CBEBC402D8C970054B9F5E66204F9DB9C3D0C8DB9ACD
+161D4EF09B8B000AC25C59A813C8233D7ED8876B693A2953B299E91F94F1A33CD32C1CB4
+8E151B4962A930880CF511A169680D7AA18BB256FBB233F5AFD682CA6739217FCEB4B8BD
+3B52AD14A3A66F1F5509449972EB956D132A2EFB24502BB55A0C6C463524FCFB9E406B3A
+EB7C9526E492721CF5F1F994713F274D6A7C0C9883B931D575C45716F65594B06AC3587A
+6D58010E83D1D4CA221C56246AB4B2FCD552EE33F040DE421F0BADFF0D801D3799C6E17F
+6288D596FAD98FA4407E0D529F96F7CB84F6E917077CE077AC08C1A5D62164BA463DC071
+40E42422B4E92B948B5FA0BF328DF952A3F50C80B5010065864FCA40D0AF1AD050E68818
+3CBF11B38A9043D8C7385E9113D3668E3C66B12B72C8D454F050DBA46D69AFB4B7D62615
+8A6A4EC053232FAE1BE9728CC27B89949664790B56F64A1B2CF307674BFFD2F7E77EFF28
+50281EA69B405AB6968A5A8F0E8A4601C727E4822C3E61C332A582F2DFDF381C9B275ED6
+648F650BD7760BB3944222C01F0BA9D97D2EDA9EC0E7292370C819CC1F2F2A54D2F08CF7
+5F08D5DAADC2AA1DF9DB6CAC5B2F564EBCAAACCB87C27570B522C77150A3966144C6E771
+0AA21ABAD0801B5BB0C43804488AE225A45F841B5AA6F1F3AF99C04F933EBB6F2CDFEF1F
+DC4122935EE3E8F31D5349AE1F7714AE5E1D667DFD20DDD270D54544392F179DEB4A6232
+CDF690931F35F96AE4F7DE9ADF499771E59E33EB9E0AB97AB446E0859C52C91B9D8BB4E3
+151E5D9CA2F897C78E62EFF081F2E7FE27ACC12DD93E97948BD316F86BB79C2DCF98058F
+2604876797032660EA3737EFEAE77499DA3C23E646D03C1672723614250758ED7474A0F0
+288F28D6676725E9D135FD8890971B92AF3207E83340A68674CAF61B413ED4B0A1C17695
+052F4E3D16A06CF4C5F0F96DEB3CC2BF6AABAD917A3D8ABE1CFB0A9DE45C842B881DDEED
+78BB47981DF1FF81EA8C3447D645EA9AA28031D99C94391EA7314F01853CE47062F9C082
+43B663095500A5EB5518FECEC8FFC571AD868AD11BD3454A5DFD184137DFEFFF0BFA2AC6
+0ABF9686E3AA5B8D06A527BA8107A2D19413D2BBB6C0212619C226300F2668497D62868D
+8FE17AAD5BD7AF856161D4655C76E1465E3864753FDD1E63B729CBC7D7F043401E04B42C
+49DE4BF73DDA80A9CFC99D333F0682AAA7BE0634B2099DAA120C96577848C5DA4B9D780F
+154258DFB23894BC2C488F7D9CB07E46878F9B24D35F3126AE69BCB92BF63EF77D7D4389
+5C537700F1C3F6BAF8A6CBEAB18D8297A2EDAA84C11B6D137800FCE71EBAA71E2C58F779
+D7D923D762940970E87538F16F4DFE31EAFD4B8539ECD8418F4B7F8CD54C541A79AB5E0B
+E66B93934D0AD3478AEB373C87C42804ABEFF530BE3260B63356D9833D1B15FA1E3C4913
+758255E3FCE362FB421C3457FDC09D3ADB8DEFE8052ED21E27FC0ABF0D43229CC9082A41
+0D4F35CCBEE0A6AE2C266B7FEC952C61565E1F497FDDB555D2BA782FD67B0A3E69245E25
+3CABE70390E820B25703AA37EF440D8E66591CFF3C613CEAE08EDEFB3F3BC5E64750E9F9
+60C012CDE5BF717833F0692E2DB222FD31EBE4946011E135AA1AC46BDA1C0D92B7AD0C50
+C53C825828986D9B0DFD4A1113D3F8EDD1D88B54CDD04D3CE519879321B35EE7E197D854
+1D72B9E166491BDF61DB8208412784D0037154B65321E066F2BEBA79BF90B321F4AE7ACD
+F1B074EE7C1883230436D9DA577E6E5CBE247F7EBB5EF07BD8AE1E1A8BA5494ACDDF8394
+54FBEAB9E44440124B6220FDA03692030EAACDF0F7ED91F041F3BF31B70F4927F2794FB2
+FA43879347405E39141714C553D263E61500BEDCDDA99C22CA2A8BBD24A29DA951A327BB
+2C22D35C627748DABCB3F3D6EEFD589564E25CAE9904A71B15550C95D2322FCB2E151C90
+635D018D14273697374F879A8DD938E3F58090401F41F3DBA0383156BCEB198AF83615B1
+FC800CA50105DEB1CA4C6A2AAA33BB9690ABD196E57E62AC51ED75EE140424EF4B580584
+C00B708E8E83150023EB50760DFCA3B3EFB759CE0E79D978C634BF10E05E779A425E1700
+257D273397457A9F28C1EC680F1D17E14E40DE84547C048E88C7F81B63726E7EA189A2FC
+5147B264697B6EB8DE530EB353DEB65CB929EF8C8CECB10D30DBC38DFCFED1AC343C31DE
+FC68D0578F741128948A8A652B828A3890F3A550923C9B0D5711A7B949D8CE6DE3FFC863
+3B16BF25F82A51A1BB603578BD8DA577C9508ACCEB220FE1BC115CA7D893563124EE8387
+6B6DD1883E007CEB64BED785AC3FA8305592D02F53AEA5885D70799ED2521BA00FFDEC0E
+C1058262DA2006DA2868B5E11EB99A455568F0181E92D27A564F39EA2276E2E8385FC5B4
+837ECBEDA0029DBFB5541ED36AD1782EC672C4BAA7F92E97A5902AF1704BFD3ADA8570A6
+25C1BCE63FC0684EE7A2E97BB495826685EDC4152693AE4BD101B4457368EE0CBEE37210
+CE990B2EE4F90EE4867723E1403A4BC33E9EDB14DB839479A3B56CED1596BBCDF683E604
+C1DB255FEE2F879B83137CE545A36011D32FBBABFCB90B4F793148328EBFAC7CE98AB8FA
+4584BC326EB67E86F4EDECD2123FABEF33D448500A5AD956647726B75904DB83A3231DA7
+DC5FD8CBEB99E8B74D617C666392591486D2B73867801CA95AA791554D47F3D4DD8D4D3A
+40EB23D5D38F012072EA99AE4A9DCD9C41BF51F2F681E6A332953D554076092B16986154
+1E7AD72135517908F551345EE0D1EE32F1E648414A9401C7E632BFE98435FFFF02DC33BE
+307A8425DFE80854DD898D7B5A84AEB99C43FB0B4DA4C09163362BBEAD43FBFC23A126B0
+F4CA410B9E8A0E5873AF77D72A0D2ED22E3311F14EDBFC852D2EB531E6AB02FCACCEC5F2
+C2E31F078FD12D1A85CC2A0D7427D4CC503EE5155BA53C9E05340C6AAF8286E4CE52BD81
+C60612A01A76923D22195AC112FC95C6C6B9EF46009FC76FC832BFA044603F106DBCB35D
+A30F90FD2D927943CCF1E8A55FCFA9803491AC8DC67051B7B0CCABA14D5505D2D9BBD1D4
+BAABBA8181C0591AFA35EF6CF7D20ECB4A7C7D86AAF7BFA4DC7AAF1E4AD0734C5FB87EEE
+5A5B0610214F0A6CB98AEA916B7A1161558815EFC2A976EC87DA6BA1B0FCF8234454E144
+DFC5039F394EE600F123F1C2B0B04D0F72C46DF165FAC8000896D4A047C14C559C9E98B3
+9508E88CCC2AEAB0E52EF11209F505B73FB006EC64552412DF9DEE5D2C84E6B12BD3C9AA
+2696B9AD42800D4CBD5235D5C103ADDC29510804C91C62E4D2E3252A503CC218A3E114BD
+EA9904226C55D5BAC0B8BEED3A053B8D5BDF2CF9F84CC976FBAE670C9FAFBD36F5EFB9C3
+BFB6D9E099F85FA2DDD657384EAD461332BAFBAC4CC35B4A7CD87932990FDCD41FD55BE3
+0B1F143E551340694E8368940CEFFCAC7A42A844332C9AD39BA6167EEFC585EB8EA242B7
+3455D2BEDB21D2D5B732DDC4EF6206E65179B2A55B84852FB9BB706134C00A1023A25D7C
+A7D3EAB0D9E5416EB7ECF8760E3271CC8EEF434F6CEF245653FBE070AC8889762E0961C6
+81164CDE77BA2519645B7DDA0A83A11D5862D6797C4F4F07E4FCDCD3D45E04A6C4BC5AC0
+E79C0B211C49E1DABC524704BCD936AB008074911349F376E3B33E3523235780349F2C24
+C110C58AF601C5697477E996BD6863109CB5BB0835D021511BD874BB4D5E323A95816E4E
+4F1B5F16C7F5E27B99B67921A040CCD300A4F011510B917FC3F339BDDF761709A6B62873
+A752D160753B644442E21F130B1E18DF07B31135A76DCD22CB5D35074D2F9B5CBCD916EE
+2372FEB90DAC12568DA886748F1213025BF7337192AD5470D9B113B6D4130369D13477BD
+61F3D58D07D7B6A7E196A57B22817521C36825D95AB36919DE9666CF00295AFDE2201499
+0FD8B30F69F4F65DDD875C9F193F9D1BACF463CD7A964D6AA84DEB187FFCF91B711B3667
+F7047291A887E18F3F54C2FE9FD57367A9F09B7762F50EAB63FBCEE078A9FBB0F0803559
+FEA211098F83282CE630A8EE1650A2A42EA55CFE3B93606FC6F2A6670F1D79082C1510B2
+B10C0F699D2358CFA6A3690D6BCB000923964FB3A0FE97C123ACDC3439D7D841A976C716
+40B54A24F54987126FF3BB3BB3351D80D4F15C1B139D57387FC99EF73A20655EB7182EC0
+8258DA41F90AD09D7C69AB307D8281591B05DB8F48442AB7157C4014E873A77470C2D1FB
+EC853272C5BFBECF4661D017FAEB22629345B7ECFA25CE718D159EF696DBDFF01BF67A2E
+B8115CB06535633EB1170DB2C66B45802B7243C5EB82700E81A83C685D2863A0B42EA1B0
+76E3BFB05C014D65A220EFA30BEE40432F4AB69DBCD9AE822273822F6F23871C7D77D053
+8F6041FCCEABCDFCBDB16EEA2A7AA8206848A0F0DFB55C30527FB65CB1963F2145E9ECF3
+1D812F790D1F9E24F9AAE159A8115C7578B86BD2B6F0EB3029F8320DACC85C3A4C1FC431
+A95C8BF8AC5EB37CAC15739F5B5F5AB45DC6EEC313BF1E3064C18D2F82FF2F4F011A3C32
+F946FCB444B7B94B0DADAA41FEC264D3210281F915C554AACABCB835C5C4DC45B7DBD31B
+ED2AF57FAA7DFAF86736097FCF815FB83DF21064384065639723AD3D2AD2C8B193113C8E
+6AF5A61B6B0F97B2E643A3A95026E02241ADD4EE7E3236C01F456A39242ECBF7EE4A9855
+644B64271946F1D361AA94284AD6363A61B498063042D9FECCA77EEA60A72FDA4E78DFD2
+C23A18190EF6D1E64ECF1C89284F86820070A1F5913174297F3F1DC5F56968BEE32E8E44
+D6623AADF391488760AEC1A8C806C80C8865645C65613A103D641593A33C7895D54C9D4D
+3F892C6C20B4AA8C611FA723F93CD65D05ADE241E30ABA2B515456588AEB00F03637370E
+0AE8872E7485CB6BF620A5293EBAF312CAF91FD04C2B23DC47BC6EEE1D1A30A896F18966
+DFEFBA1699C96AB8D1D660F187D484B757B4C2D7D979DFBCE078CC99EF83244ED92D0989
+D89A115F3C29830D333E48EA151A0C491DD99787CDA08A4C9F49AF6B3F510A1301466C44
+BA1C04B18C9A18A2E8238320552FECE65A870CFE1BDF54DADC49DE8FCCC1391B0855A3C0
+2C9C022B2AC566E43458495FA07E8B1606F8ECC9F9AAEE67F82CC487B4DFF353D2C02B3A
+32934E86AAAEC937BCB8AF7A86BAD48D80455B12A01B013EB6C4C1CAD6BBB7DBF0DF5B06
+BFE6B6D6951D8AC34B8D8339A999AC0C173A31F4FE1E4913F65D28D29FD2A86C7BCC84A3
+C6A15449536427658BDC3E615091B7AF4E92F305C4205A70521BE60D789273E5F345239B
+AA615D21085E9243B694548DC2F68E78BD93B37CAAE4B9C304CB1206D202281B5110CDCD
+5F91436F6E2C4AFE8F166A0C69D23656F7FCEED27039C40D9E1182F9766321DE36DCC017
+625BBF3234BB4BE7EC52BDD5962943E6C1E8CE0619EC53582205AEEF638CFD96B3A1CCCD
+D299252E9333F29AF1F65C18DD934BB91E1B3A30BD7C0E73486A7E44415CE2A9A19DFE85
+54FC83606E7C8A66A26B24B05697265A45B3F4E36AE6B56BE4B83372A916886AFA86C295
+7812C90498B54FA2CE1B63577558B5173033C0A63B760E5C88C51AA2571B8204ADA527F2
+B897CA2B79ED15ADF8C19DF89E7C8AA22508E09BEF5147612F6F69BE73381B210787947D
+DA81D1E171FBA57C8F9709F9D0083244C6862D93CD8C2126CF0E935BF102EE9724DD0373
+C374C93E4BBF34CF306B2D842C9C9D78EDDBE1DF472568638DF3347A9AF67885C7BE53D7
+191ED687D6640583C79945AA4F72B125E0033B850C493162F860D1B87214E7D0A74E49E1
+7148EBFEFFE38E90C8A932FBB46C3BAF928531CC561CA6F073BAB952E829E3D717FB57DA
+39FA89C5480C500546A305E27C34FA2DADB43CE405DA26F65A3C08E2577862DEB4D0016F
+699DBBBC972AE69797FD250713FC0ED73422F76CE50166FCCA77C9F911BBFBDDD3812200
+1F637F55B9BCD76C98CA8EFDC6AEDDD1DDB70D405E9000503188DB161EAA2C1B0FFC8159
+C77551DE648B8FF819759412069845DA2EE262AB662B1533326A55CBC5DEBA45DD56B8AA
+0164F57DE0552ACD340704E1C8E07C8C85DB6201E8DA3AB43C61984E1FA0EC44B4E75AE8
+8E03CA60E7929167D55127C2FE4C0440C97556C021B54B7E5153B079CFFE4A1B528AC60F
+7D8CF48DF5462FC528DFDAFDC9B12F290E081369C1E7DED256761F15F1D551826936EEB4
+A0BDD3DAD5C2113E9A88767E280F0091F8853F834B90D0E1372B9E71CA724B0190424C7B
+39D8E3E099E6D53472C73E4E344740CBF370615CDFF85C9C4915567DC8FEB663163BC38B
+33D8D210E9D7122A12FF7C1090C9A09EAD8D720DF979E5C3AEEC00C28C635379A0716AE9
+714550D5D715FB80091396BDCBDE6BAFEC822032E19794A6975179C42213E8E1971EDCFB
+11CC6637B1B9D98E2468D0E4429603BD9E096AE2D8BC6AAA5E65571C5866ABA1B0C67699
+1F4FC1A8DD5980C8FBE1B8A8EBEDCE6649F7B0100F098B5861153E9E560D049A99FC4C3D
+527FBA7E39450801DA8753E680E53A6534CF798E37174162BE84A0C90F48EF61E87A5773
+36859815DAB6AFBE18B283027020D8D40E5F337A54477477860C2F249C6C4E65D0C24E15
+DC57AE7F721EA793C2518DF986CFDA5063895421173809622568838CF5FA333BE686ED15
+5196E65E47C0BA7142C321AA171B9F69A6E408B633FFFAF4DC0127298C90308964ABAFA9
+CB5794CDBEA0EB0FD78989FC6474CC55F19293E665E5DF7537A7E9B18C7346AD600C9864
+E96912DCCE9C5DD5D4BC35987E9D632A2BEA7A48E7E171A80547D403BCAFDA31FDFE8425
+4039B1781B0AD9241C83E40B2CECCCB174DF9A6E7610DEF09D793C952A95AFFBFD8A2DA0
+1E3D8314FF9B685A2FA0E2F599F79107B64DBEAA6790CCF3065218E2EC4A46713AA2B67A
+DE09E7E59EE332FE3468180B3FD46AAFAB5EA98CE3608DABECFAAA05E9421E4EEF2CB7AB
+5F314DD8E3216155F7520AF606E85D1C588980D03F49DE3252B3BF530C0D8F2006C47763
+8D4028B445A5C8336916D579206B905FB1D2BD53B770519FC2E69ED8A26808E32EA4BA22
+6E0004A6DAA393F0026B412592F8C7B8ADDFAFB5C743A92A65B6653321988CE0C495D637
+FCBB6CDA8AF0823644478FE8F246CE0C9CB908B9A662482960E68DD0C4E72FB5E90E0EF6
+EFA6769C95C02CB75FC4D2AFEDED2492B7F0CF9FCCDB73548F3BB54C0AFCD7DF4EE0E2A0
+9C95D2CFC67B0B41165F1A11FC906A4305288E5178D8F610F76A96AE8C88323CA83DFDBF
+4F8B84E2A2701AB89BBB3800D471BB00C2153AF14DFBB697A6167C2B0C8ECADD83D920AA
+806C4330588A0F4DC4DC1FF2BA3715BA8C16C912E66C45F0E000DDC7FB6C1FA3404D9530
+F0FFBEF34700381ADB7E6CA4141F728FC0CD001B4718CAE1167D0A2B6B73C134F0E30562
+02245FC437AD935F708723A89E0A95FB7ED59EAB960EC26BA8E8256377AA3F5EF6DF6FE4
+99C3116926FBA26021B2C902E89C8A99B0B7B77241526AB9C9038384E4B16B1833D1736B
+E9F4140B2F3C74A7F070C164C153A2D22AD2312844A45FA431DB767E1954967B3C8CD214
+1BF69ABDB7227C1A58D8D89A9FBA75461A9AC6406ABA98CBC707BB968B61EEE9A3C646FE
+84DCE9B43521EC634A98269C1F8B17F757C78CCC708A934F9A1A01C4E2ABCE9C38289AF8
+CF581C3229FABBDCCC6B336F223113B2A8BD9D98EBBB06AF44B9B88E285EEC63BFAEA452
+AD01796901512DBF70564E31434CC1EC6954ACFC77F74016B672AC9D77B99E93F6D34E4F
+84A631C827B0A7F4AB573BE48CC4826515D029CF2449E93D1E720DC3CF4A0378A702FC31
+461A55E17F8C606021EED887E54C205218F31A93FC888BA248ECA1423325CAA2E9208679
+E2DCE75EB22A737A1748B8AFA8169E4D4E6852EBDFC8B36B510F3F274A15D42F6E108768
+79A2F93E365A93429BE9FA3A19AEA6FC94E33718114176F19AD54DCAEAE311B33572E50D
+F411873865F3E9D9B99FB5800D63B5C43996EFE7BF39F922ED2F7C1D3C22036650A42670
+7891AD0D6B101D388407D1E3B10C9A5843322F3B3960E0838796538B9492FC68D6707D1A
+0832D4CEDA6CF08C8D71EB6D4FEF2BA697748D1C21928C2C0B050B3E7F51FCA63BCDFF4E
+6E40B2649F6E8B8B59F6B0BBF2DF11560A32F43C955B96F8B147E7B1C311887E44A0ABD1
+FE06AB4D1A2A281A4E9F0ACC81101DB47995C1ADFCBCFE95330F7A90BA82931896BB967E
+A051570D00C99B7D05BCBA0D2CDC729447692F54870AC39C29FBDC0FBE60F981F310F73D
+704B1CE1F4549CBF65BD5FDAFDCC50C0179D498475F00A66EE37A093988432BF3E266C7E
+7A0547A3038BEF688E8488464532C5F955B8D76F1DAA5F03CFABB2E4AE0D6BC05B260CD9
+AF6056A4F8C65445010ADF616FA01157FD83C6F9EB547C324BFD5C184CFB45E25AB7D7D2
+06350219E969BA2B97B34411F13A3A635F0A6070C447D23F97E064171BEE3F92B5E67163
+6128EDB3D01BB3068CCCC60583AB4CCC2BFDE26D45811A56B56F40057A3370A0686EB0AC
+43D0B95F99D1C4E23067A4CED8F8754C3B3CA631256FE81D98AF0919EDA08F87D560D01A
+54E1B712885C5553ED62F1BB21DF966F10323FF1A21A5C5B492770261BBD915D0DBA7FEA
+5FF0A2F342B497CFF1EE95C96A0A76C3F25EB72C3C570D663CDAFF62E25088217FECAFED
+C6E615CA6C6DCAAC16D6F57E2FCABA7F9DB64E55909816D7CA34B531212DB0015C2392F1
+161EF1D80A7F2BA1A60CCA66E1745F1BEEE883B949671400E0BE19B4A5D48A37626B531C
+FB03B1614EB3227124E76BD2AF9C2708E9AD6A2F8D5879F048B0B3A3D762CB169528B42F
+4A07D1505E96FB866B8F9519F93D171EA59B2CE267B0686CB36DC732A312B626462EA385
+FA76C480021350210F2B0AC83BFAFB6D595DBE8D1EA75B4C042A49223778CC6D038749F3
+23B0B5B3ECB50A493CA5E36334F4070FB2637018F47C0E766CDCA2BB24702CA623B38D0D
+CB2EFD376281069AD96E875FBB6B090BC0D17C49957A7D28E4E13CD31ED4B149DC24785C
+9C94749226B990EA628F770E8FB7829DE6BC7949C7958F405CD5E8C1EA6D2EB5864E3F61
+69DFD007C03E4812E62866E3AC26EC813D7EF109A421DE6D021C899F7030BCE32A525641
+8A649C8F5DD84F44DC803D26620836CA83FB0D3C59705CD9DB20A99042ACBB24B738DEB7
+EC44A71C45C69264CCD466D74582DB523441294F77D24297B30C119F4D0B68552611CC50
+1793D0135ACB0152087751DDBB31DE4AF2F69496A1DC358BECBAA7FEE038E500C4AFCAC2
+B86D365CA5C7FA6D366A6E15D4761071E1E299DC7D12B010638463964145C34C1DFF5098
+85DC0FE52FE11A1A47AEED9E0B59788EB9B9FC1B9D46AF8300FE7B8A185F9AD2E8D4AECC
+CAE25BB15BA5C092DCB88C26382595F5EDE520E2CD38425F4C35F35FF95BA0F50BEB5319
+72BF1D11136C61D671ADC56CABD166F4A5C89D89360EC256A4B1526844DD41A27B6966C8
+1F6D728226E7CA32E48CFEF6BA68C29A9A3DBDB75C2F2B1139734E6463D16569BB4AF771
+E8FB3063C77B20CE33987F7D42A76E9C54CF09AA5C0080B9F82AFF5420BBBDBE8E4B9E05
+88964828ECFE1F09DFC27DE7E8A6E78D8F252496D3D03BA155A1DE7315795AA56FB5E7EE
+49CD1202E062F9E1778D97B0AB8DBA9BE092F37AF9B3E00D753AD167230E69B77DCDE962
+9C62D4429F1BCDDCE8787B237FC224BA2467813A3D7054307A24B6810E993FFDC37E33AB
+9CF8EB89D2D437C4B36E9E68E60DEE9778F9ADE5DF818B277E75D39E607A5030A62EFBCF
+552C22DA3D633F79475EB78FD45B00850E7A4DBB53C77F7364CD21D43F441BCA0A8B8122
+4339687695319D0D24F4ABDA837E692165F1EB00BFDF4C1C05AC9FFE26E96E24680D064B
+937C51CC13EAC643A8BD09D4E6DB9862CC63C08941FA71EB824CA29C66450F6D7C0328E4
+C7DB807BB789A178E25B9EC1DAE544C61E3BBCA86884F34E743448A4273F932AB05BF0FD
+F4856E391DB061D92F8D143CF6FE3DB364B311F4F16785E44C746E27A263D249A215104A
+3540C07CDB7EE5C2F8836593D63CBB8F5318CD725C24806611FE9C58ADED89F9213C3F66
+7A96F677071267CDD5F64A21F7629A735EEAFE33481C5172E64DD5C1B0AB84D348257746
+88BC7DEDDEA813A9FF9407B847BE68D49623978A1A2C14DF27549E55622DB8D063F19AD0
+D9E63AD35E4B16CC86CA63079577A0E19BD6EE406E3ECD2B0AF2C9EDE1154AFEFC7CA5F2
+304BB2BC8ED468CEB19F27270DD4D74B9E00FD4A771A72C5474DF006973208ED827B14D6
+A57AF3F818F3BBADF19CA48FF02891FBC1E24A87E9F462EBDC9974789C3621C94F0DE5CC
+61F40BB5828BB054916D49D6929039EBB3830AB8D41DD1DF838DDC51615A86482EA6DBF6
+E00E142DD5FA39DD71117AB85828A9DB2A8BB1C005E25D88F02DFE7E8FD35DB3A210300B
+49955C29868DBF0061F9A69097DFF779F22BBC904207A5F860C23EEDB76495D4846A9126
+0BB50CC7731274A1EB2107D23B85AF34507F452747AC6ECF009BFEAD8706C2ADCE8F1422
+FF1F62AA134F9F4EE80673BC0AADED3FCC4103F45C5097943F10715FABCE657E36C287C6
+4ED651FB8B7A73C6C3FDB55941AD8A03C8D6AB1AFC101C380959B0E01E47BD9BC4241A00
+FC329F8A37AD3CC0661A23629C048EAEF5B46D34FE719EF9785285886397F787B06C7194
+0C4491B4B9CC28F9CED68B109CADD4814093323E15E3F730923DAF4C0A2C3545FE3EB2EA
+BA7DF0F0A1A950FFCC1A59DEAF3650E1B043814D5664640FE009CF4B338C2F97301C2EC7
+EF34FF5E8A9206B06D7F6AEF35C08B6D4D3A2CCFAD034D8B085A672192DB73E774B8E6F6
+4E325760C8B949C3E12B35445790A4DC2CC00F259E4B1B040C1139273FE87CE70F7F53E5
+D1A94A30F6994FD85D23D810FA1DDC8D655C03CF7F4931E7F6739A1EB6E102E13446456C
+072BBECA54CFAAEFD506CFBBE9086C8E2246A63EE3E495830C82B8B8ACAAFB8227AA5C97
+6A9787BB4B3A8F23071DAA4342714BA7C0A773AF5D850A774D6DDDDC8215C999103E110E
+0CDDFD06A7F5E6724576D900EE812FEAA996EC0553493BBF46CB3BA010F67E4BED0DE928
+742CA038D821F1F1027AA7BC47518A2F11F9A9FD36EE9D7C3F11FCA59C07ADE4015964A8
+A2DCF474CC29C1415B4811FCB5748CE8D117A93CDA1BEA7ABCC359AFD8A986CC2418F6A9
+FEA92B004E4E6FDD86DC553D7677CD0E026B8E3B6AEACE4079DCC4646816DD75AF86CCC7
+4256A1D4C1F2CB1D89DBFF169AB6A7B679DBABC0ECA616FACD3B9E512C42C7B25ECD2167
+55761EFDF1E8F497863F4A4106D74189A4CAC9D5F86EAEF52CBDABE40FB269501D282D24
+D38FA20190ED790C632C1B69F171160BC9F06642EE32E871BBE537761850D04292F87EDA
+088103BA2F1F2D909E57EAD7C364D5698A0018620539FAF5FA03701DA8457BE7192FFE02
+5B802E7138B251556A51C273123C854A24FC48E66F61EF971BD1FE386CF08292C2A396A5
+D16B51054D9A9679F6EA293621619C0644A1789C8BD15F07F44A4F41B8DDA112B42F057C
+D36227DFD0AA1DBEC06172A8E5DA1842178A171531F39D48ED8DD2D530AECFC70720DD5F
+A083335470624525B729CC617C08D11B14F60913A449BC5676849644444C6463BEE7FE44
+D7B87BF8A3A7DF3A421FF62E3A6D2640F2FA4EE3F50166F444E47F73BA9FCC22E782E693
+97089E8CAFCFAE72A7B5B9570691B8E7BF674CBD3C84D0D098B01D0102BD0A13075ABCF9
+F440CA46890B5BB45ABA1EB5A9E7A8229DEDB49BB01ADE53C55E8B1594D832CF664C06A3
+2E2FEC5A6426E0B77E04A44DBD73F474AA1123C53969E6C4E812508314DF5041A073609A
+43F7D3B2A822261491051B512ED3AB5EDA2C039FFFEF797EC4FC4ADE2497021A2B138841
+D4CE806B3EDE9EDF6FFDF8EF0B5EACF449B118EF1417CFEAF396A91FBD2734FBCBC37E48
+9D866A9EF44D90A9ACBCF8866379D76BD14A5E85470A512E68C2C358ED3E51B3D43DC445
+DFC7E247273704AF5EF8A25DD327CC358BA3850988372D6E83AF863B31404C70F4254511
+B0D86ED8FFE67CA622384FD2FFC7F2773F40B06D5453946D9844206A6FE6BDAD5E74A523
+CEF1F509E3FF336D2EDB1CAF1AD0FE3E95535A7805D3E31A6EC023455FC2C384B69AB256
+2467D71439587C4CE1863C648BAD40AB86F49F791292B11AA91162E32DE6E605ABB31266
+D995A4FD29836FC222C186C1251A733E3CD11E37A8D5922C9E5A87B6C2ED553760B26174
+C4BA2E68278705284E160F70B7AA4CDEA9FFCB3F5984730A2864E666C8E33BC0D0CD3B8C
+1733313CF3A2D1F292C6E2488A4F1782572A5C22FB0CAAB9C88B2116AA9CB08883959389
+722F756ACEBDCC50933BDC1F3111DC3FF9ECBCB7E43E72E8F4398E61414655F821175775
+FA1237BD647B1754EEA69F71D78D3DB42A5DD20E6A06FE52C891537F0DA0DCC2FDFC1998
+B99C6A2E4A53E08557A459482D74AC5DAF2EDB0932A15A24595B4B35295642A8C734A356
+DFBEB0F12864B22C4E33511D320742DC470E0D17E33B5705A1AC373B5ED4E0882EF37E72
+6E547299F0A1B784E0143351A50896AF5F3E4180B19DCCF734C2DA6293D01AF9A46AD18B
+401081AED761E95055456CD7768AC11A008B2B8E22DD6529D620B844B4AB4E3E86C25609
+6F3F96704C9A15E6A4551372A439F92EBB55F84F82B413D3A690E49CA1B95EB4FDD70418
+B09A1975C10E03CC7C06F87A685A1E361C555159FA2C555BCC990A2114E2BF2E1C37EBA9
+5C27AD60B57141260285047B8207D5954B38EE01B65986C6BB02D7101228580A1CE346FB
+A9352B0315B5BE17C190F47B3071548699AC46E0C11A3E203A4F85A300A3E70D8F5FE7E7
+EEA6D03D59AB45839988570C33F3E3F8C85F5B096E063B5E242868740B1DDABDF3464AA8
+5247250B09C32C4E9B72FC4B3DAE2C57E42AFDEF89FA355C0EDAC0857AF7180666E6E841
+3E36289AB6EDBD1455A87B4B8896975608502EDAB3894C86D7B55E7F0D8BFE1CC0278AF1
+BF983961916B832E25CE49ABC1DD08E7602BCCA907C3ECAFB01438F54430CF0E641B3C38
+052C7457BE4ED65972EA2E231FCF36A802853A31DA2377FC5BF6601078E5CD363B95478A
+B28FE8B38A6E86A901ABEFBB9B1701F106670A911AE147CC5A94C9F167FEF1F96A496E7C
+9885E0096A29A8B0F48E6E9FF77154A81B5C6A2DC28129CCF5D22437E28F9890E99D6CB4
+61209B7C925DD13BFA97968A59752882FE928391B8CF7AFD5230DBF148E326D04376493F
+882C33AFF8AEF513441B2413CF9EF08CB53411E208931545D062D7C13D767DE9F6AAE897
+C964AF94455269D5833F57EA8E2B7814284130F577B053C0FC53DEDF313FEF71DE9916C4
+76FE63CA55D036635D643D5A7BCE8B036FE8D4053CF8147D90963615234CFCB533250CEE
+38F3588F61722864CDA40E32530E77CC55E2CC006B1B5E1B9279CC870AF03812B4B51112
+0FA1F29E995901100376217C6ACE374F663B37BB24ECD3B65ECEE400F9255E567C7746C8
+7596CB7D929FD0D7B14AF53BF48FB2083A602079B9AD40EBDAA05C796A512B3982C55692
+3CB9DEA77B6F27655F54638555229AF1D2B9288CE799E0C0F7F8D800A32573233E0A83BA
+C40B2B4C1274F461EBFFFF67247F8ED68B384F00C3CAE54D86ECFAE02D1F8045090EBB2F
+DA607BC159EFA31E18631186C9E22485683113393E664232A8CAE88177A4AC1652767F4C
+1A9B0AB5EE213C6DE267DBB6DE2B4CBC3CD5433F6551DE2AA7103F71C106A50E7ADBB35E
+19CCB3BC5C162F3B230D025C39F35E91E950386C07088B271C1839323A911E9317129394
+ECF8EAB9FC9AF984941C7AD89CF81879190920A38EBDB3C40773A238357EC151AD041CDA
+EF159BD5964CEF09C39C05AA171FC2005A47873271F1E06679DEB0FC700782F7B3423A17
+2B66724523149100E539E19DE0D28217AA55DA08EB35F2FEA7F48E0767AA4F303EAA238B
+A8E642748A1352BC6705B2A62D9A43F2D068BE809586CC5162BA0B306A6E5005ED6B65FA
+CA01BF64480CC71E6B4308979B266915E86C1E047DA5091A222379FD11FC53AE22EEF4F6
+9DC251847A6110D5A534B28820D32DF675BB3B43A73402B7ACBBF3BE84B6F19535819C8E
+D4DC349CF7BEDD681A425F856A63C8A5A157EDA38E89DA5290B4A76B0D7CC7F7F13F758E
+8BE07FAABC640641CD71B5A1356726396180A36DA9C3640FCEB484A96FC144CB6DC6CC1F
+93AFBEA0E6F252F9C4250C303DFF913DB0C1CE5CD86F7C9FE026B7E61CFB4B9B057537DA
+658C7E6F69CC63384B305879A504FE589CF2036F462ADD7EB553DDD1F5B2D0EB6A2E9EEE
+C61B8100941B959CD7DACD5D92C1D6151D1ED960E533DD7285D0F146D4804F35AD8443B0
+40D6C6128D904167D1C3DA9902C254A772BF1FF3419C4D0C3F27AE218A417887844BCEC0
+13BB993AFD8064C5D0C34D5DD2A2A0D9A989848B057993AAAE33879E6E50444C7E50474A
+531052C608E740507FD419153CF6ED0DB6C9380247213437992D95E0E0F2077B107A325A
+FBB0D5874E4EAC92CE966A3BA35FB67B94A7D03CE78EED0A2AAE2E31FC69B3615E117726
+EE53D27FF875BD4D233F75A44710934E579D2E56BB9A9C729308586DB0255C6003A69D45
+6383E5BFEBF1A16170ADC97B92B5604DFCC2AAE3C9DAB4A25410F0B23C38E06E60FAF1BF
+5D5C4AF939EB5F871D090A55186E27348B6860A75D659F0FE6A388F8DA3DF5BA565DE6E4
+EDF95156070D0FDD04B566609E79C23BB859FAE584012216559263B8CA1211854AFD7A21
+7E620E3AD2805FE9B0EA40162CF595198F0577E6AF92071175A55359AD6910F4F01DD7C9
+842B05E8BF488BF6A995774F0D1E4A5C5F90A8345317C8DA5395188E068D4FC9FA7740D7
+B63D2E7276127B7C696753D233E14B66AED3FB4144B7397DE60AC7A98CD6E36166844477
+75E35BA59FE2D80C2BC97CEAFAA50DC632255CCDC618EE64F0FA3B800283303E463C37FC
+621C28A17DDC8EFA3F381745A4E569C9556F3F0326FC09B4B9916B9525DA0BFF8290B95E
+B3AD0BA2B3186914173E61A36005E192ED066D08D3E9C5611A8F7315B1BD40179B318D82
+D54A427FD51FAC29919F42383FA4C44A12EF33A54D23AEE8475D20EA47B96458F988F716
+A781B18902675E085A09CEA395C88AF1955F3594D769E32FFAC7E82CBE4373DC49C8F086
+83DB2DB4BA7E5F4E4050867ADEE3572109345BDE69A1836AA34F76E5910578DCD4AB4DEA
+1C4191E6C242EAC45397FD00B899A423FEC55BB50F2E7AFB027044B9CEC95B1E3EB16DD6
+DB8D6CCA13D4D4F7BD5C453FD038D2C17C09F8C6D2C9E3A73EE7A34FEFA562A6EE45A4B0
+714002FA0FAB2107A483F97E9F80354C0BE467B5B7F436B45521B392BFC794C1564EC07A
+8D1FE9B96B700F2D16ECFE7B5799FCCA94BDE75C6F2DB55FEE17551DACD29DE905BC6F07
+C018FD2DFA729C275FD32BD38903F1CC1B3D61A645A6815C401B9F87F92F12875781497D
+DFE297ACBE318A74D1AE304A61960B84050695CE3B20D8DF059B057B24DCF01CED640204
+0CC76B81474AF938AF76B38DE22953D0516ECF34AD4B27CE51BC0522A396D0B9E96B81B4
+882D36D3C1FE61656C5C863ACB2BC11564E6A745A5DF8F92EBDE2F9B647AECD39E97D12D
+ACE07E185CADDC5EFCDC64A2A4958BA798C0440F699830152ADDCCA094089EE6EDAEA444
+F9367977F51F2E1E4EE9300716C3073710964EB426B575DEEA600D03616AC66CCC71D6F5
+6354DFE69300CFCFF25CB5DB27909791AEAB9CF605E275ABA36AB474034CB102061CF565
+2D6E89A4D3A5BCA7A351BBF9C1DB21EE78F5845619C61E1FA1B33A8CD4DA659311626AC7
+4BDFF7A44E0785014A8870A19ADDA15DD7274E18D389F70D1A3F81FDFB9F6164197F1664
+4E733317E8FBB485151A454300A78F9D098182DC36337D1C88748F488BA6183E305CEA92
+D56DCB6113D415C1560EC4CDB880B78A35C263FBB83E458666232BB94AD5ED385F289DAA
+7F22D71067D55EE40C309AF558F8BA38D86D6D5A772CE3C01333B1BB815D134A76AB4957
+9B63140EE08501ABED60F7402EAD624163494A60FB89A3CBA98FE223407800F6DCEBAA7D
+01D4CD352C60F3F7669DD769B15E6B9F897821B887142C0CD48D7AAD5B5E2B8F9E08E841
+4B4C93A5EF13BA786CE7F81E36B9EC4F4BE19869E4B4BEED585523CF6D6423B57955F686
+EEB32CAF758109BFF1EDCABA25574158ADE1C3EB1222A0FA9505B1B369676428B65659B9
+938D5A0E6DC64A91A4116037C012F39BEA7826C1B2542B8A64360EFFD66CE3F4BD97AFA4
+1F41E5FB90B6CF9079FF681BD81C5046E4CD0370F2496424C41E32326AEFA5299CC453E4
+80A56AD542561E3AB5F5AB0FFF2C9A0D888116A70B737DB0714CA65724AC49AF26B4654B
+0873D15B4A36F242E560F737125745DA35AA57EA7356A1BD29516CAB3113F6141824C3B0
+AC6482928A7ADB36AAAD3B4C4693977B6A0CEFC636BB8ACABD3016C37C9A52426E24F760
+F4068964439F25A7D6CDCC067E94A9498D7AB87C7BC6C5AB55CE98381F355B671CCCE80C
+36D16BE60D6E9665996D8D884DB4F943B2186C05279E809A0CA337CED282CCA67F25EC0D
+DF6B8AF6C2193F06927E539ECE6545CADDD7868D051150A5C6B0EDE3D4A8DCA3014A3450
+C81D094D6DB6D07156A06C828FEDDF5AFF1618B24EF194DA46738B2812EE3E8A92D4AEA6
+70C149CE2E7933E19CDA965A8A25504B6CA67E341741D806643564C3F8AB19986F628392
+02A51E39F5D761B7EFA4EC3D914DDE48ABB7711BEA6D2028506C9F95856EBC275FEE14F7
+3ACE6FB7E0C56031ECCDB52F06268BC39B15B709B26E955E0219E9A41E368CA67F79A9DD
+91E970B88F0ECD48619646B1E3D14489D111487C43D0D20AD6DCB011AAF096C308FB5035
+474A95C48C61101F74E1F6D824475D879EA93316163D0422ABA263FDA1FFB83C868D7773
+346705377CACFB42D34413C6A25DE6A7B0BF4B7DB8237CB3532F037133D2F9E50870E4A9
+F2A3AF7A1B090F4497505C25F2C0BCD33D1C57855BBEF5F223A5A87110CD54FB14533CCA
+DE13322489ABB6C1B7DD62A2D242A82AF007D5D5ED68DE65201CD3E56D7F5D9E27FEE0A7
+4B8A193916E27F2892C13F6ACC1B5D29FE7BA0014E74336BB37DAEEA82881A977116B370
+2B36FEFA77118C09F98F54455B0ECBDFFE6736DC4D70D5C99BD27E9A5E75C6A6B0143B05
+6EB5BE60BADE0992BE338F37B5F22652EFC4AADADCA0356C5C546DEE5401E279806C7D02
+448E298383B5CB007B6642CE2A39483A37276D2E19D90CF3A92D39CD547BE5032BAA6836
+B0DF62384062762B26C83922976B07168F54ECF5135346674AE507346CE5B66BB97E8003
+0CFBCBD3193E187A51997475B2FF1E5F7CEEC56E3BCDB2D28FDE3D0C136A8526EA298D83
+48F1318CB48856A3A61FB4C9BC2C76A8112F5C0A27FE068E1B77928B2565A93B27A4B67E
+6CF71EF27F1C5858CF20B3532C62AEB4D8F5229FD5312A99C3073CE9579A91FC53791FCB
+2F1C36849BD10612A89E24125B4699A014546721237B1E24441979CA97670E51AAAFD0BA
+BF3877FBBEFF80002957A9E2BBAFD0DFF1E768A62B0B8421B202A3CEC5C67C69E3553311
+DFE28EB3F4CDEE6926A5C78668D8257FDAEA094628E12503C44F1EB9246BC7900C2D67B0
+619268338241B854B3880C7CB383AFC363756873AB28C0B4935A1348F8D809EA1BB1674C
+CB54AB5DDDD8920968A009E38BB3051BC4473991E6913B5581A0EE54677DD8037E8871D0
+641CEE6FEC2AEDE9A3BE78BC9A12BA9C3252B92C05EA2D8A2E238CC8E3E328A93DBC663D
+E031FE4679D373BB2CD8B49D0A10321552BE6083976BD9CC38AC7EF6AC497821DA8DD730
+A3D8AD01486DFB6EFF9907556DD49FAD0690C9E73FC6C43888716658F763E4960ABA07A2
+A2DD2610627B243128F92BEEA751FD4517062EFF5015B2B41FC701DEB5FEB888152FF639
+2C6D4E0886B202CF73A7F5E45D7A354BFFC36C1E32AF5B97FCD349D3D86B745BF8F49F1F
+A923D2A6E8933DD3B5A77EEBB25DCAD33ED70EF53F3147962AB9691376CF1AE0EE8FC97F
+B52B10ED40A85C38C83172325CF378F666881FC91A4FF6F1AE7B3BF7811AE90772AD86B1
+1458BA46CDBA6116C66225105C98E850758B463018F8DD79E1E19ABD1F54584F5D905A29
+BD09E22BC2FFFF34D1C7514100E0A95520EE2A2402BA23DCC3D815123FCD59F3CDD52DDF
+AF36E707125071464F3057FB8029DB67CD2D89F41C2363F75D4511147CF91C97A29B240E
+839AD575DABCF150051AD03E3968A914BEE85B1C307614BE6F6D5C00C1304C563C9A1DC0
+A7B684608E420061F7037DBE94497AC1EF2025249BEBE0149E3C3E2A8DE083A76703916D
+578C2C6E72A1880E0D949E02FBEE3B1A9741D477354AFD2901503FE4B446EB4BAC0DF364
+7F0933D67B9F4400DF5CC50A5F754F1843AF6FC4F7D9409AB2B2449EE6A1A2F1D8777996
+A08C829CBEC35DB3DB5AF19D563775781233BBA5867A5D7866047CF06005B543CF2064E9
+784C4CFFBF91DFF661A692EE531A4B3983D8FF3D73DDC7958DA2CE07CE31D88A2E142D19
+45E70E3F2B7C8EF8DFB67FCF822869DD49C37BE64D7B9E6ED38DDB3CDB1E46016B991994
+1FDD79CE922DDFBAD32AFE79283995C0ED18A18B25E934F93CC86F8E4D0466688A092230
+82EA616233AFF768F9B7794257C66582997E8245A4705ED8E68203DC91464CDB426C20F9
+8D988F2E110BB67402C7D2E781D5717629239ED3CC6BE8DF0FA01438C375555681023160
+90CC2FD88FFFB57583117FC26D40219D7B509873B2DEF6F0BC0692369F831E78FA05E8D6
+5F98490B0C9EABF8D2EF2F10B7AE0B142A38E1F111B376A4FE64065CC9706434B122F99B
+23ABE5B7E80FBFBA436621556AD95BAFD25E593A429AAFC9B29117FA07DCF9059BD36601
+F406322C63CC31FF309A25E9859B74B302B5837A235ED2FE4C88DBD70C88E13736874229
+4310970445D56EF3A4799622A72ECE471797C1B0DE9F59CAB4B46812CE9F49E8909C214A
+D918ACAE3802512F2D9573AD63A65DD6A67CDA424750AF8261DE3A04D03A74F1662AB700
+552097A81404667685BF166C14569A9EB5C8D9D5505621367A42CC6FD66AF8D7B92CE356
+48F79663695ABAEA085B20ECE4B430D507E46733B46FD41AEEF3FC3545CEEE9A1D46F005
+44D569643C5B75EB480DC7B96CDEF6EB1850A8DDC9D6DB92F246A37F329B5D382C93D4EA
+C65E4F637D4DEF2F4D079FABCF0F0E7CCEEF71A1A6BB894928D6734E5FC3C808F7F83B7F
+ADE18C0839A2DAC3BBD38F51041AFF25E4F0660D6CFB49A0F50E8C9B6185296463831348
+3FEEA05398EE33092B5262DDFA6BDBECAC5631764F1D456252A88405BB9173A0FF22ABFE
+19914BD86CD5E44D8E4948652EF402F68AB00A3AEB94A39184AA43961F0A1C390F0DED13
+760BF31DA23611159CFA278A8DBC58529DC3DDFD1A0F07D616DC55DEC1DD0089B21662B0
+4D1E45F67CCDD43E7DA592B78A5E86E8211A18B05AF74E1F888D66833D295E3D51139604
+BB1E9808C61FA58AE1762D20317D8D83A004E02BA5720A1998E6CE032D97B585FF837A9B
+2EEB495CF3BCF508BD754F50D10A913673ADFC4FBEBCF9B8DA5DE0117B0AA1FFE52F6701
+536114A77EB8301EAC644B7BE4325DC1823DD6172FFF39DA7704F4355CDB4F354C1A67B0
+787336AB62E43E546A488B46A22BC54F9D7BA1ACF8B4B74958E7E1A2DF2D9816F80FD687
+136B415F7C72204CE0720C8216E4F9E2578C7619479A8958E1B716359DD75923B83FC2E0
+6D35F83C6718925F8A64471097045CE9D0A700F1D958EF8D08D4FAED17221315BDFEAFFB
+3AAC8A0EE1550EE1DA1CD7FD7A96AD77B4EFD118CAAF668BB9C87A2E708253CE3720975A
+7F9C7A9B1A6BFA2995879A45E8D9BF2BFE116ADD31FAB44EE729E297F3E812FE198253CE
+59E2D073CCDCB8E2344BBBBA1A080B69E6949880BA9E2AFF99F0343E2A72E28564334E77
+46BEEB92625E6C2CCA617A98E869596D184A06E36617926959B93648C912A858E3C17305
+880EF5E53E8C27AE85428F0564CFB3628BF96078D4FBB581F15E89C6A21FEFDF9300AEA4
+AD610303A5860552CFA7EF591211543E5FB24956601604DA412503F3573655CA19E30D02
+226F965A62DD9B41474511FE0E46072281735879BF166737E9C64D73F45520665D4D1FB9
+7CC66F87A5F879D48B9D84B7806DFA05D96286779142A6CA89BB54212BE80B9F376984C9
+A1DE3E1136F3B34E9677C075804B0FD6B1D10BE7764865D254CE32B606AE6DE0512C7390
+7FCB18A2868870BBEF96BA2FF6E406D0532AAA6D894286ABF7FFF272630D5E7EBBE4C750
+547A9F56CC3DCE518DD210DB1DD76EDA26B81EB035C4CD95FEC6A6AB251469C47DD4D993
+1CA4910AAF15E4B22AB5CF69806EDFAA4B89572695E1B319F891AB59028A4B9627E833A4
+71E86C81DF6EC3A0BCF38CC44F4589C69710D3122708B82C59F5DF5DE86FB4FECB23CF54
+6AEB892ED4CAB92118CA57B1A7287C134D55A8EE9C609826B2F7EDA1ED72C5F6F311E7B7
+865D0A02C009CFAC82A2C3C48F3CF6784C0B952210A00FB9CA66F03959A533BC091C5723
+DC3BACBC8AC258A84576D18CC24934267931814C0B454AA1EB41A00603AC1D114A0D87FF
+91C881959766F1847E63D3C9AA412D10AD92DF30A068C46136E772C911F9D508DB50B5BF
+387DA32CC9A208EEF56D66E61ABEDCDD64B94F1B9FA3FBBCE090CAB3AD08A7CFF260B5FA
+A8EDDF41E732915AC47CA851EDB1B3C95DCB28922249D92D54FB3EA1B92F784587CFFAB1
+E2726BD2C7C32DCAA7F69EB4AD1DA4F9256139D68684B241E6144F428EA9EB59881DA8C6
+17503BA3522FFD6F86BBD4ACABE1BF8EC9D311769FAA0C2F8F9851FD113B196021C73B71
+F299D56321E2C7F0FB3A032F73184BF75727CC7A48E1BCFE499B09BA6BB136FC879E1A66
+45D85F3D0248BDBC5A44DDAED09691A6FCD3F9B7EEB86A698D01486E5DCE7ECF30558B1E
+03AC714D2FCA34EB01C1B9B9791B72A0B7CC2CD008AA3A1A61FC7714D1AACB26DF67252C
+4AC64DB2F8ED5A23699CD9185D03D94B3BBAC941806A009E624AE973B28ACBEB5FF79D6F
+FC31254C3BF88BA2997C6BD11904F61F1A5195138695EED597E518372F6B2A290AD42AF4
+73C1418093B7D1A9C73EE9D4CD0B1DE131DE007F4971C9A9D5022E395CB6D299507BB016
+0B4B08A0A298547422E6CC8D761BB2AB1F7E95D9DFDFAE9E3229D861D8FA7E4CE3414561
+E4F684F7EBEA62B4186412F49104829C28E61545440E39A5F5CA9A18512FC5AE18D3C8E6
+3E67B6AA6FD84BB6C520BBC825F0886CA21969742C55D97F1EFE5509500B0BDBA178BD74
+2D27286925495777255BC9408D45CF9428B0CC0B6649095F463A66334A225B42606BEFFB
+C4F7033BB000FBEC4F62A11DF4A3856985D4AB6B176FEBB9F0C148FC33A652131BC7BE68
+6E090F579FD91929343C7602CD68724929D85DDB2A560F0A66509A40DB0E76E65F6711D1
+43E0A2B812A4B7DE65B855E3DD83A1CDE28CAF41B843A111D0F3460100680572A9E9A908
+755EEC2047EDDEB11253C837BC954CB1FF3ADD470271D41C39313FF04A6CF51DF14E07F7
+34D361642A1F1651B5A2B93CB5A3C84EE6B5E2A86D4004CEABAC94ADAADD3A88AB6B295C
+4E02494145AF0B4D84EFCD4A5814C3807C7D9326F3475DEC3AC9A342427A784FC5BD319E
+BB8E33CE934557048C1EA44ABC6AC8DB1B7F21B7D8FDBF25C65F5BA391448E8614692509
+06B55000AD406047236B7B995DFD07BDDF0F36BA325D968CDFFAC3E339DD94B2B18D9A2E
+50D90BE3ED4414FD9CF57C6AB2AC070D4CB1684A01EA7FEDCFFC39E31398206E1850A027
+CD787D4850245DFD54C0D4386A5DA7E7AD6EBB516A773E87A9FF4F569DD364535CD563D4
+BC3E1302FDF815E65B0FB7538C230D0BAFC09E0923342087B10927521F304CB4345C83F2
+5481FBFDECB356171DF89C7B020468851FB0F79FEE4734615822F168CFE40BFE19B4C6CD
+45932F62CC00B26798E0968D6C0127F58B068E8F6CBB6F682E8E3731586B9579D3C69858
+1FD6AE780B6A3559DB74F67131434B80CBE940EDF6FF73DA1B8BBD5B5763D7F14D9E7652
+152485A610A2A4CB677A99EA18B40C8A663F9D82A23433C7CDD5FC2011E3EE940F4DBF62
+CE1813753F3AD872323D420968682A7F8D3EE84B8F912622777D99FF435C8AA4CC5D3258
+37F8FADACFD56DB430DB5A955E224108ED4A0C7048E9F9DC3819458464FB1D1DF1B229A6
+72C402B885083EEFF15291FED9D86369CEE5613EBFDCF71AB6DB2B7D16890A76A5EF4F54
+3853F4023582EE9F504C309D81DF581A4D38714ED1FD43C2519478473042ACA56963160B
+4E0FAD8C3F2F61B7937DB72E6F995546E271D71C54995296DD3220DBE4125D77CC6507BA
+526BDA9753F3363920AE7C7EB756455C9B9B47E915815E8BA1C60EBB5B3B2A986E4DCA9C
+0B553E2976589C83A9BBD0C9F652170E62B46966795AF7CF8038F90CFE56202324EE6A0A
+FEB13CDDAB39142764468A56F23AF24EEB30345001E8D412187207207DC6573979ECF718
+14600A40C8243836BA659FCB2F4D44A5DAD98670EDCC2B45D2FBECDB50846D89DAF9F4C6
+8AA3FEE2F68C416C0DE33421EA41B256CB722AE3EEBFA0AB617B31EC6AF45F68ACA24A5E
+3029100601A3A6DC445D55CDB2262A1239ECF1A7480F80EC4A178E5857017AFD7CC74AD1
+ED9BE95BC12AB8478EAE606F7EAAF0927591DB495B65BDAEAA2A0114E4C0ECE44F4A857E
+E16FE1AF371B998A514E9B83BC463417C7B3D15D55035786639F46ADCC35A0D94E1FDC1A
+9588229442BA3BCBB17AB222B5EE294C91FF37D6B41BD233860FE9FDFFFC5F1A3D76B957
+49EC91478802B40F6F32D37811DEC6F556358C82D2C9E647AF98AE3B8A720574CFC0A8B4
+7C0B216CEDDAC6D584BEF16C29DD701AC8A6761EA78C2F16FFB1778171C9CA501B5EEBDD
+9E6700F1ED346D3A26991E61DE2A494FC322F3FCEEC282C0F00CBBB08B025E0DDA83BC05
+2910D2613927D21AAB9E7C3BD86575CF91F6FA39DA4AFE846968AA45AD31D84D4EE7CE9D
+D52EDD44EF9245C06E4157B4118868F2858FBF626DCBBB7D639E26F4B61420F32F6259FF
+909ED0E870FF7256EF392527BB1BB5C8E47F380BD22DDDC2DD315DC6AA6BA3A62C5E0CC9
+5BE212731F170852A5088EBD22921C4F5878DC2A4FD46C98C7AB87FD0C0106F0C3DF32B4
+AD337C69B5D6802CE9B8B36BC9E76194A81559A158709A35B603271DC1D0144776240C23
+E61ED5A7C031084A749D6CD6B54D52EF5A94BF27A103D67915C128B87E5AC5FD881F9BE7
+AEC8CA42C2BEB100C1E303F9C1A7B3FE742FA96456E1317E717B20E267576524BEC0034C
+1E3FE4327C010B7A6384CFDF708A6B6A23A2EA63F09AA8B5C824B49623A2E0A8E23D8EA5
+DBB10DCF7852A011D9157499DC9EC5613235339B75A374D68E5C43957B62BA49F6F78E39
+FF1E3C3AEFFB60BA7093438EEDB6E3E0C73D943BF093E6B94501CB1E5F949DE6B4101E32
+77E5C96BC96FBE79AC9EC2F6DA149BFC46CB5731985FFFF741A35B6B5A82FE22B1FEB053
+328ECD2725AF25E91E2B023B1E7C8A4C73BF4D9F09038051C4BC551BA5D224F0F3811060
+7A749202C8B52FC4A6C9F46B8B79B8F96823FEB610C0705F7629B7FC83A9943C0D96771F
+F77871851EB6E4E343C224581CE9B089962830194DF8AB673C3D2C5C72DE4E899B0F39A7
+F42FA593671E53D331A0F8C2C910BD53B39820E5FA17BECA80C72ED4396F2E000ADD1236
+2FF36D59A202575C0DEED679573293B1D9465DC41A9D46D1FB0D880C48F486EFBDD8E6E8
+ECA9618E8CA8F55DEF5A0EBDD6A3708DD2FC8F4A6A2ABDF6ACB798EEA536156943FB67D3
+53225EE2D9C941C96F634537091A7C939D67D857968CB89756E1BF33FE0765C3F7FC0935
+70DD5882761A3FD6B9D1CA0CEBDE0E426277CF942764C9D089819ACF43D47BFD46E80A85
+F19E3B2A94E359EA0012AA55884340CEF6779C905DD3ACA8BD6418EAFA7E2112228E7AF5
+A4425B462116D24109634B18EB1A2CA2062942C275B3D843F7B6F7857EC50613E684A1D0
+5CD5BA9074EF7176A14B8E1517F0A2D88D5D6A6EEA0E53899CAA8CCD61D2D13CE8422222
+BFD39D35541EBD168DFD166BEC6F7BDF21D8BC7544EE7360A6154B632BF54E3A3F664E13
+C85A5562EA843EE25A1DDC3AABEE58371E9E6F7EA99862372E142BC17757F23B600F4B6B
+A926419C0623A54CFA9524C2A82CD62C9205CEC256A38277FD93B3655DBE097103AF14FF
+C1C56EE329FFFDE59CED6BD5AE6C552E36FC9D8B946D5CBAA85C691F099502EE26F1922F
+3FAC43BE7E238AF5D411C5C5A58C305DD7C1F4BC3EE6F80653B47630D5784D7372CAE85E
+933E9EC5E63A2E348BFA73CE08F98CF7F05E624D3805BE85F47FA9E2BD5517DD2AEE947D
+1814AE96A00A7A558BA95AE31887A3E72604F1B3B53A511989C281F4A45C40A508080A6A
+54378B561371DDA65B782D80BB4D28FF0AEFAAD22022034DD450A9BC2708F01A919D863D
+E3B07CE7C973993D3ED742E69CE982EA787312A4E160212609390B18A03A6630EC44FABA
+EAD7C4E1D0349033D576ACDAF24D31226B06B756F71DA44712831C50A7775D9EA50B1A5F
+CD45DDF2CE5AE17CE3CFD5632CF44D5C31A8B431D2D13A4701FE383E29ACFF6841A50B8B
+A921B7CBF3D51FE7150550A8CAD19424CC7923450E1DD2333B5DC46B83FD383491CD3CD5
+3E51F8B21102BC847035E51038A000E4736D062CD742FDB9DE8C52ECFD5F91475CD98411
+70FBC2B042F16ACFA4FD94730CDA23F552EB3ECBC4905B7C7EE31A759BD336F92E7AA6BC
+3F41D81C0069067488EAFEC420E7A6238D61E659813E7C09A47682022E30B6AF0AA5E6AA
+8CBC57CD04EAD382FC6E2B5576BFE879BB29B683CBCD4818258BFC3D0A4D43DB5B578918
+922BFF0B1425949B979B49FFB3F418011EFB733127D80C25E97C5D7448B48C85E4612105
+4C8FE82D43CD9D5F515311B34AA39BF18E48DFBCE4838CE251C4BC7AA4C208F4BCF353EA
+E7F932CA7C21AFC09D38B6EED117E12B50C9FB342245B4DB2085272C96E8B053FB353946
+EE3604093C37D11A676B8E455CD2A74325058DFBB160948FD32386770A4D9FB3A3CF6958
+D72CB0BCFAFC9A827DF210233CFD1746E8FCB80924A2927D47C50CD561E8DE23B383F446
+055EF14BA832B6DA8AFA781187F135564C1A69450AF67FF4F35A51C659257A8851468448
+8F2830B24E815A935D2A4B072B5ED238027B8D08820E533EFF8E18512580A8EE8CCE66EA
+9E0BC1CDC4FA364DE58DC906AF59DB07A941B1BDC08A0D00AA7851516CCF7D3400D722A9
+A3BE1D47132012CCAB3B05CC29BD83878ABF54054A2114784A615C9C3A4F0072311891BA
+FCB8D5F0AE133522BC45D750FF73F03CA2C4D07AA05479C4461C1FBDD6452E28C82EB609
+D3457A5C98D8E318A085F66DF280C0961B065639E79E0156603956F5AAA943CECDC199CA
+9CADF7C58D68A1645545C4DE50CBC6D8410FE1F0E4A96F4D6EF6F45442EBB0FCC4950F29
+29D50CD2CED739CC27199752605A8E2D4D83EFDADDD94C90A5685AD692F5C91086B9F9A9
+9AD04AB41DA024D188EFF93245EA01C624F2721DF13D779D12D0B0C8E134A5A072C2AC76
+AE304BCD53A8B7712D421BF5E57B731774B431D2A231E0E481B23C4633BC6A53E7F23981
+FFCEECD8A613D48B320260EBF88A214C59E296104DC095DF25801B272D604ED9E8D4A0D1
+588CE4B15F016B4FE3CC96854CB2427A1B6C7CC6EA3092B883926F3CA2AC831E0F569768
+892D017AE6D3C62F9A69CC1EDED8FC4D91D247B21A289673835A689A2CF6DC3F03E7FB8E
+FB31105706B5B367D9D76C03DA1C9600871A39EF2A63BFA1B3552D7CE878EF3E243378E3
+DA260EB5EEA169969570CAEBC4CB9CFB9E0D47BE5030274F40DEC31294129A97BD9E7FD7
+4F4DEE5CE5ED60E0FFD6965F1E6B9F0A97567087A7BA050CD1923E7E30758B7D56FE1CE3
+FA793137CBCE9806F37FF7819E095202D39A316ECC35E938C3024DFC76EB056251D23304
+82C48ADB145DD7292B4C730C54CB8473BE2487ABE1585E33D884A3A935ABEE11D624D095
+67575C8D1A98DFC70B26BBED6D9E09756E16860336B71D742E4E80AFE90931980F7AC9FD
+D6195CC581D6EF953929BD785981780EA7357286807160851D6A7A6DB4339226D950325E
+612EDDC1CD885B36DC7880CADB41F14D3B1B634E549FFBCA06D3DB07EB74B4A29EEE3132
+EF2D692039BB0B1A873A256A866F32205071011639BC2D42D38FF91B6A8CD62C13597855
+EA40BBE0B7942A9C6ACE18C3988C8C9659FF649AA64D120664D87ABC3594BF70DA6A6314
+EFCE2CFB011B52A6323A9941B3B41A4407EF59CC1CD98E5F98E841EA34E710DB8627F236
+42849C355916BAB607A2942B3A4FF9F94AAB6734BD221F254D507607CF067261C9D49C04
+819363F8423B83D0F1602194DC0A287D3FFA68CF78D8B06D3570970C24EADC18A55422AA
+2695A1BA5778FCABFCCEABBF0D7A9FB371B686FA85811294D785D2A14A0F4AB8426E43A5
+9E24484766E26441F789ABAA740698195965529731D576733A405AD82E803188A7471214
+8E187182D6384DCC44A8EE00345059CA0FA888B9192FF63256D5372F6AA8E20BE9BC8D54
+8915ED12808D1D2FB26CD7391F55F2AAC11EA037090AC01D9E67AFE52FC469CC0308B78D
+84060A6BE7D5B70ED2E1D581436C9326AC12C7D79A9090A0535CF936CF9A5989882B87B4
+BB22C06552279F124FD73991B3D28B5DECC07DA5C0601C57E5F711ACA30FDCE48D1FBDA3
+AF3F5E16B5E67FAA5AA5383D50F8A9A814589EF60ECBB8EBEA5BA15FED39C97B4FB430BE
+14733170E0CBB2E531664ED3EC041B8593604837F8FE2809885C00D662DAE00DB56AEC4C
+7C2048A4200D4EB4564DF85669A167F962524D762E59C38379D831F22A9B310831DCA0C3
+21458EDF19258F90029884B85D73D05A00409AEEBB0AEBCCED35D8C231C23E624FB03762
+133B78977A430739E375E99E8983AA06DB93BD3FBFD3AF672D551AE99B08341A01D47A68
+E025F8F9226ED73251F740204E9F93152707DDCF05195CD92B24D9CA6FA1ABE8F853E8FC
+240F3323EA950836695AB4898F7056A79E61F755512A056146523D6F8C131D3BE6B57111
+7B373B7F932BD3D047DD7339650B21AC0FDF4A33F948343DD2BBA60A4AA0D4A0DCE98DE0
+0F4FD71355C14315464FBEF3169310FD50C02001F680B439DEBC6CF03A054A214CCAAA82
+8DBBB903FF3D5A6F39615FC8C97B4AEF78F443CFF59730F518A10EE6BA5F85F4806702F0
+0BEDFDD7AC18AFACC714B1F763ED3A05DA746EF22BD96AA0A4FF8253E549284114B9DDAB
+44EA7FD64AF1CFAA1A8D38FF6F18323D5B180309CB00BD5507BAE1492EFEFF91A1E2073F
+82CEEDDD95546DA477D8550B7442FEACFF387535CF3D55E87E491388812AC70E9D523C58
+ECBB6000322DAAA747FD5BDA8A22BE8307F171734405A64A1AFA48EA93EE3037B6D297D9
+6AEEF555C3443684DACE5A7898418331B12FA0AB770F1437BF1B345456632DAD4C05F82A
+1412D1789DEBE712C5F2552030BEDF9A06C952D5EDD22D8B58BB3AD69A3A4EB17C8D7380
+3867940A9FF857AC353AEF3ED8286F32C09C276DE4287876ED3360E11CC76C0BF0E20EAC
+0160C0515ECB1D39A07BD4142BC5848448B35032D4369116494B3BE8D4880A1D146ADC6F
+F166E3802E2539BDDF761709A6B62FD6A00166200B7BDC509EE91EF518668A90E98C0AB6
+46635F1BE8A317500B74058CAE514890C344737594530DB90F93C73C2A65E70D65754CEB
+A8C725018DD41D5A402E8022FBEE0BDF4A885CBDFAAD1E26AA2690EF19CD745D34517858
+A27F4536F3C19126657C00BB4E5A5D8AC42C968EC327C75382960C03BD3B98A1CD474D83
+54D04ADC056C2A57D35D15BD3B6DFAEBC47D6E8EB96DDABC8ADFE397D8A483E54AB80F1D
+35FB1A07EF285D51706EBF8C501B30816996A4C094ACEFE8020B049A6E7353C530DA1642
+91A4605F9E2E47DE6F89F5B43C178C7A2A0E5005D5FE3AD0B81A262336F6BDE565142BB8
+8E4935F066D7170F78BC1529610CEA44E0A83251DFEA00DA16BA92BD22884DEBA85EC2F4
+94EDF207A2C5E03CD34F169B737A5A968018C28D6E5D5DF356C76FFF249763950EC9D476
+222A271B6B19F8F089D3159A2AF4D1A5BAE00A54AB46A247AD868D2166F2F982A13490E7
+40C4C2DFA1935B9BCDB6374A8FEA6A7816F747287BE7AAD56F8B2BBFCB4031537D11F2DD
+A04D53B54197FA72D41B3761426D59DE8B76CF52892568FCC3524F6F89EC2C448441E901
+3FA41C9E2064D1C9319AC491260D6DA9B9584FA46269A526D74AE3DB5C5BC357D036ECBB
+D7C1993EF2196F73769F95DA573EFB7428D6AD6D2D022EC2A859A046D09598426150685B
+83B113390EA74B1FA002AF3726C3FC383F86C8D8E7AA4FAD52E0B89EEDC4FE24C899CCDC
+B10C9F0A27E1FB698F16B305BBDC634BBD1FA158E87F78BC5CF80E95B92A48FDE688AF72
+FB4A5436B84FEB94A07E5A33666A77609309D638338F977BF34FB3EA2C40AAEA187F60F7
+FEFB1A031FEA9390E0A82F967A3ED3329DDF3870A6EC33C8F5DC9E358123E3F0FB236AC4
+5EE6DC2D32B7DCF079AEAD454E511C7464AAF1FBC0BBC7395A560CBAE25A4393F55E3880
+C1D4A55960730B87EF29384A895CC349CF10E6BB9A9F503AD3FF813216A0DDE91C907E45
+A45DBCFD9EAC4544D3003607A0FFECC847E6B08A73F984B0F90FE1DFF148043E791F3502
+1D5F2A11E7A0552679A84464D0920611F20CA07D69C066FF2C522521F48DA0BBF60F12CD
+86DCA42C6E65B93CECBFA91BDD117A08E11B6ABE5AC6B30AF87FED25F9514519C95FE6C9
+305F2FFD4088F274A473ABCC2F2BAEBA6BCA8C359128BEEC86D103B54122F4B0D610BB28
+F6394B8F330FD2C312D3CEF21BC4CF6B90FB554F1F22F72EC0B4AEC77D93F13B45298075
+11FF489FBA27F573A8EA7776D5EB7364AEAA2BF41D5CB064CBF5FD561FFF5C981D0DFA68
+1EE1F2B8C8888E6766CC8ADF7575543ADFF8945AA1AA782540EA770E12BB63DB74A5D798
+74B6971DFFD260ECE84CF7BC668E1E0D4CC058D5205D3C457FA4F8A8881910DB001BCF8A
+0C5408CA4D82C5BBB3B70239B908E03167154AF6E60413474BBED29CA1F08E92901ECA79
+36AFC9CAA04A796E5AFAD1FF9C9FF5CF9B24F10A0697FD7EC4E4CBCE3D4178C8502D4505
+8FCF0070D004BBD8EDC385277EF187EF7E88F5D3237FD2C4E35FFF9FB8C7F88133B1B0F6
+881350CE7723E7721D505BFAE09355910032C88F4E478CCCF43EBEFA90E36ECB05CFD6CE
+5D76F620E8CC9709E528CBF922386BB7E0EEE7E00E040867A7E8B75664AE67F7ECC002C9
+1E8F94E89435E7FF46031655078AF3DEC2CD558AF64722D6BAFD0AA35C3DCF9FAFD47E43
+323F7D7D8BE012BDE0778775B6256080677F53DCA0FF7A3010CCC1170AD4DB8CF30747B8
+634B19C91226BFBBCFCC8F4466CBA378102E7B1E6D1A0011B4C8DD5DE62391B9CAF01DCF
+EFB92005FF8EB76BCE83BF56F306B3F0B63E901F281D7BE3C42B3C7731D211533EFD58AD
+A82F8C4BB76E41C752ABF1099C20680CE3263FDAA56DAA1706674F223F1CFAD01DA19112
+9DE5E10D9EE07E4045BF956264DF647E5714941A2B18B3111A6B74AF8B9931BEC0C0DBBB
+620DC2F050BA7398AC68054FE3911501BA03CA0FF75C24E10B302AAF836F4F1866EB2DCF
+F2B2767AB9B6F8AE3EFB7ABAB90215160C87AC6908D0C344FB7196047AF6CAEAEE832EFF
+163BD54EA124B651BE7E86C5C0D4ACBCB227262C4DFAD5DBAB49D419234DB3A571CF4BE8
+7DC8E2E805F14669D08098EB883DD2A095862490241EB561908D67A7FF8D10A110C598E7
+6C96B8153EE7358BCA8EB2B818340A6D59E5E3F7C0B95AE04B5B6153DE0B2A7214C20165
+192F0C199D5A22C506923106C6828272A6E2B7E4488E2A2642EC858609CAA13B421D853C
+3F9DA0C78703EEFFF6039275DC960A0DA60CF51155E5C7EC7E5AA7856106DCD840C0DBED
+DF43D781CF086128E6DE5A7402EBC26F5BA94559D9B4DF05FF5354645493FAB476842166
+1694CB56CB95354C2EF3D7FC39994B39335C3E8E9EDFFBEE65789309054BE2F3C8E693BA
+D3546D2194E345B69FF3DDF8D578E4254E88F885E2155C2F8D4F645912FC758D871EA6D7
+27F00B9877A2901088AD4E8CBDE925556D40563F794BB4E74C4D528D80DDB3CFEF6590CC
+F2A6E895B2B8B706B6BD0F0451302C2BD14420AB8247310D2D65F7AA103F57D75CFFD4BC
+CF36AEDDEB9B708D1B70FD36517CF7BDF1CA9195D8CF9693827DA5A881C8D36CE3E9B791
+58E80F53D93171A224ABA4D376DF7E77F4E6CD6EAE2D8858CEE0222417FD78152177C4D1
+FE4655A0EF216B358FFF756F4822E9A0E351CEB685F8FF288967F8AE15D6220BE0A87C09
+BF1C082715FBD2820AC4948B05FC219DF8CC93666B1E0205A1E294107B07A30027AFEEF5
+0D5196A22571E2310F7E1599ACC6548BCAF123A364291A4209C8C640AAF128DB98E9CA02
+4672B3CD733D83C930EDFEF84E04F424B78F44DA5FE1238D09E5F23D3CA4B4DDB57AFB96
+878260ECD42195DAB1C35FF166C1F5C0ABAB216EB8FC949A240A0E3D76F407F705D2F31D
+385714B21D75001B7E4691B5E31A70DCF92CC9DF2DDE8ABA2868D53B3B6DA784F06812F0
+956439EC720333D68CC97EA5E609577A95A5E894CC48C74AF44A46E4A707A9206FE4DA59
+EADDBE88F58D91635494B41B3D004ECB6E60FBDB186333A8A22DF9A75C7DB7F3830439C3
+C7DFE74D71E55DA7942586A93D030D1EFD5CD6DF16B69AB0B17C0FF849BE7E2533E82ECD
+30BD15D72B7AD1CFE69C7BCC9FF7B98079E32B2B6153521ABDEF3F3F1A932770D8787A33
+E70D3F3F47A5DC216522E0031793A45A2A7A89147DBFAE737F4404923BED6179E470D545
+701FE538A01FC234701FF9960BEBC4F8E8C089D9764F27A23803607643C1DF3B379DC46B
+38F889C838E61C111704DA3CE68EB443200FECFF29669A0A6151EC4062B7E59674FBFC0C
+0C983FEE3401084AACB1CC66E1D73024E1F780307168F5F61A1BEFA4DD493B1DF278C4BD
+1DDCAA3AA414D035D4EC80418099954F7268F47BFBA375CC5F64211903196F35D09E35F3
+7DDEBF0879AEE1DA5C1918BE36E656A592683FD38AB07B7E65C3EA2C49A502A0EDCDDF2B
+230DAD2A1A46CB9E5AF4F2FBB24CEE063013723BE088F8C4C1B07E24D18E7B6B19DD433A
+A991EE1C18924408382DF16668FB8E030757DAE6A5FD0D8B3D9C6E66933638A64DB07440
+574BD4D1D3BDD92B190B46CFC022A3A822BA12AA4A221B9F4EFF217DEE75884EF4B9C56B
+0E6E67239E79BF38C7DBD92B7AFC8EB95D8BCC7423B94271FA53F07E650761D9D5AABEEB
+B8DE102D2CCF96A0187AAED469B3F759F3606B084AF80C34CB5C55F376BD451E5C25588B
+E98DE75E825C03746415A82BB0D02590C7C911CBC49A531CFE26AF04B1AA435EDFE000AF
+55114601A916D6EFF2262B9925732D04B54D4B637F4F2BB155EB74AF78E4CE4F12172019
+E07CB9B5D8DE5E0B1C2C41F29F9266CBB38D4C77182AEE8C1E53FBD396C5065AB8471AF4
+04DAA634D1A634312D5B9A53A707EC9C6714E25A9520AB75CE1A5B11A2A2797987BB2A8E
+1C9ECB9A04F49DB693A07E5AA7BE790FB1EE571A11B055F82FB2AC37AB4830829217264B
+3FEBB7D30E76E35547E47B8C9770FA96EE274AE4D1146B68DB01A85C7C7045C23C6CC093
+BD969CE786D1E24A8B87C17A376C508AD90DAA2167B7A89CB997DBCAFF912B6FB251C0AB
+2B0A647B6A07686B658BEA2A2694F1111A3310F9889075573E488F984C44B56097E88733
+457CE3DF46436F9AA4B1CA969718E7621BEC0C359BA6431382DE18254DD241554F899831
+EF51DE6BE7C9499DB2EB9DC38115C796060B9D858BAA51D5F032B5333931EFF77C37DD15
+2D991991732079AE6AD195F9B532B67CE5680AF63B90ECC19A71046795247492EA0D9FF4
+EE54490428AD2AF8577BCB7394B546964810C116C4386ACE279CAC0F97387B731F456F2C
+044B217D9A803A974A5913DE7897E3BCA26B63EBA712CADBDCA1A1AB7C7884EB7CB45421
+7E868D41DBE75DA9857D0AB03BA03E61434D7351F0EAD1B4D9613A0ADF5090C26ECCB063
+41539DB508D8E710397F0D350F2825071A1AF1EC9E45A4FCCB2EF38F0E74042016F6AD3E
+C307633D3510D28B3A9C6985420B21DBAD944CDEDBB3DBAEEE4AFE2F18FFAF7DAA7A8C86
+238E3CACFCF2074CF57D5872B4EF7C1FCBDB1EF516F55BD28C57E8D462A9C21F248AA062
+BF2B7016A354DC5C6622F7469B8B134E7E7536E7F6C62123B6341CE6FC89FB0869D619E7
+7792AF72F4BD56061D29610C4F4D8ADBCF8A366A3E5B57226637CF3B787DE35F55FB7717
+58EE96F96DBC91460BE1A9632D524F5219F9D3B8D6EA2697992C7613B34A779075DEF0E2
+3BD1C8A569921E614967E81C00D9A6B2F1AB39A27930368303C6E46729E48148AC272DE6
+C273260739B47F47A7BD0E5F9683CD26952975EF77143C9E277B9B49EFEA672426E94650
+DD9B697849B6DAB354F50F2F3A0639EA88C4778C855080D3ABDA5249C0668E5844D9D80B
+6B6ACC678410335AE6CAAA4F740EF2177414254788CB73BDD2DB1B71FC29D04AE02F0CE7
+FFB36E5A266B19F90B252217950E4A77C7FB0644650158752720A822C0C7305FC92ED225
+E1BB6687BDE8E7735999A9BD55FBA2F92219D93CCB1D908EB8C21919AEE27EFE6F451268
+8659DD3820B483E0C1D1C88BD12F863B09E3FB111B202B198B7B3F0E638A19D881D4C91D
+D5D2C792CA4958742962236C33F578A09FB3596CF65F069C9E2DB6B6C2A17BD483E9CDFC
+01E2DD694789FB497026ECD743E915CBF3F84389EAEA999333F51318DB93F97C350D8277
+B0D0ADF9ABE8E3F68AD59F66FDA5E70BDAC05241D58F6DC1F9CC5C60F759B3E91D9C1AEC
+3AC8B0A876FA6E6B428A4113AA6AAB33C4D8583D78B9310EB5FBE774B722FF5EE390FE89
+49E4C6D07A0F9B0D816127B45210D3FFDFA35308F810AC9B0DFFD5C2D67A3C9DCF4CBAF6
+1C0B0E1C4D4EB5002CA63E2209B50EA3A2AEF3AF1009E03881A0C01B406EA5E1B1E93192
+E37A07A6CA7CEDCB1AC5346A0D995DA95AC97DD29AE7FE7E33C516EE34B4AE8F39473A4D
+4A1C08100A07246ABC26062DF86FA4536C715229971CFD3CEB29B56366DAE19BBD43F90F
+14B3D8F895DB064FD95B8C0732B884C7DD149DD8795051507FC835C9F1E6D18D63A49BD8
+C57AE8576D4D8FE3C6AB9F10AA4F6FFE113191CCB13CE3620E1C05A66363233454A59AFD
+F632D376B771EED8BDFE4CF93D72EF721C49BD3B263610B34B5664E3CE7E864A9BADA09D
+E56AF41BF2F5E10731D6A85904DB681E53F3293003803AB7CB484201665DDF7F5A3CEE2F
+665EAE0830562831CD23DEC40E64D93A39A9662C347BE74B5862570DCB7F501AA08C1601
+E39364CA0B3F05F9556D7DE72DEC9AFF613A4B7E6BA58D58F89DC1EE1BAB6E78381548E8
+ACFFCB489DA03C4756B7C3B16F5AB337E5F177FE4A3B59F2D2EA0E7D57F16FC212640292
+348314E6B6F32A977E3811FA7AB8839A26BFBF17C6E1F365CADBE2522D04437E74193DA3
+C15EA05EB56332991A90A3E0A98FFB90606825B75B3F86179CB516D72D65E91E6F9E04A9
+5ADF98543E83DFB8D0FC14120C0310022B00A476B655B88880ED16053FF63946CCFFB493
+4367A99A39094916266345C87B193B26B1CBD8889544CC0C8E8B145BCD291442384E1FA1
+E994DCB841274DAA2106EE71953FF339FA46169488AC53F03481BD3252EF7DCA91E350F0
+056BC7FFAA5E1D52D8F88DD49D31F259AB87D24293E32D468F86A6AE1AAC73EF331FF313
+03F3919D83259C73A301AAEE0C818059D83533F366F7930FEC73638E279E73AE31A98165
+949C8330E725C18D85A62C822F0F4E403ED640DC13F65DDB8F125E3D9BA308067A2B5F28
+FCE503710F88F07D39625AD11C63F5EF5A36A4D44917B3765D8E5B4FB1827A06CA1FD938
+06E0FD29A38A5D5FF22CBC93263369FD44D6D3690101423AE52990729E9B8877F5BDD0BE
+5CDAA8B38FBDE1ADC7CA8FDC1DB263786E65FF43AFAEE348328287779A30CCD46C48EDC2
+27FC9FD49CC8E0A807FAF98774BE9D17D4191C48E2DCBFDCD7B9B45AE74C04958984CC1F
+984E97C6C944FE6A0090A262785A1F36D8805232D68704DCBC9E324EB57F922010ADAFD3
+E1BC37041E00787069D8C274956F8B55FA39AA6C6E7FCA153A42DC67CF38D850793F1415
+F381236D5876A35BEF522C158043BE43A0FA7B41467BE0C1E85E288E5782E9614B30B020
+E094010BD0FF4BF15BFA843CF3C230338D7E85A5CD55265B45C492A76318E8195DB94E5F
+5B7E162F613FC3FD0F95A6A7487485A275D15B536FEDED3AAB63B3807517167BFBDA263E
+F5256FBFB331369219E6673423EEDF70A0377F9C18294AA0624C71DA4DF6A2E34B38644A
+09CD90563B20C2D6D08600FB4CB3EC8BA61CA12DD47DBFE71F7EAD5E74A0573C9272C2DC
+40524CCBEF88BFC5F202C0FFC080DF3A11AA056C1C1A1DF683B607DBFE3F27CFCB80AEBB
+B4BFD1BFEC3B6D58EB4305B3D995887AEA9D20B3C7894934A2BADCA9FD2811156E421C3A
+8A843227582809A1126E5A63EB6BABAB0A3073E0D1734B9AFAD79C2C2FB225006E9B0405
+6CE77D3A9B3D2E8DD6C2A7E492CFD1C953340BEAFA5AE41D324FDA33265EE0A210E6045F
+F97C68406DE8DD532C7355045D14659D587FDA7C63ADFA1E03ABD713A08BA2C364A97378
+970CF8ECF79BCD418DF3787CE243028A52D3014716966A27A30733703714C1FA511AF997
+7D87385D6921110EEA88673DD06A067C0BEBB0C91BFD38434AA2D48DAE4737CEE7F55A84
+17338C5411FDA817CB9A7C385CB1062635507A20E31B0A4ABA5306E19767A965356FE9AE
+BBB1BD49EA4B997A5D18F04EA09DDBD4CCDAD8D609F034C7C359AEE0D01A1A476F862B42
+7605C8DCB8B446CC569800ADFAD3F2CF0A2FB8642474DCDFC2D7048CE8545AE43DBFFB0C
+304DB4D3141EA4A7AAC94C8B6B5B80413F4C42D8470CF5CE41309C509300DD7B0A6557A6
+9EAA61C89F875A1AD1B67D4134E71F89C877729C6F283BB3810CD9C0116DE2BE59DDCF2E
+5C5F29272236323A87C09A34EB22D5FBAAF2EAC95145C605D37B1F310BB10DBAA439F498
+03F871081E9124D4EE9959427AA75801EF639FE8F16A488C46AFBF0AD165CA4468CCD0A5
+2CA1792CBA8E57B5E472EB84D615486EB34F86C34C53593C53F9B63747D42B4BE3084024
+C9863519F6DB702E7E28C863C9D4F4E5F53C1A148304AD1A4B15C3DF70E6072CD4405C04
+134677CF25BD83919C785DCF01816CA9131DCC02DFB0FCA3E4306E0A1ECCF8BEAB63279B
+FCCE48227DBF90F1748717625ED1F347195FB14B6B5AEBE733F1B0B7A7EDDD3F7F85228B
+88F264A9CB11949F829B7A4E00465996029532F34F15C4186919A708938926CB3A463969
+626C7DA06A65C9AFB0503E5FC28B8115CAE34F654DBBB5DBC13E8EF7CBDA94B202F9B022
+8BE520B47E39705BB08315B25910624994CA3062BB4D58D6E0EF262952A68473A860D205
+30A6A1FBEDC795D60DD295764DEEE2A6F845698354D3098897534CF957C7D592307CB85E
+8A749A13AC6C50C324177BD579B4D74E8EC616CA4235F848C71AD03DADD091C027FB01BE
+DE9F707CC9F6C119ECD53472C7A4267076053BA00DBADD59F777136C3840D40698F74548
+AC41A22676E42942DE5746CE8C102F7DF3974469E4344B9A4D62585559C8D054F406D5B7
+A9DABFFBB311C1C4CA8F10A6CC3F4E2208827C65036BE29D6A3F150B582BABF3EE603203
+CF41E50ADD3DEE3D9FAE7ACE1F99A306A7CF38F11B0A5B4F38B45594AD68EE45E92CD847
+FFFCC4E3F3D8A94F3FC5133C7126EC20AADFAC8B02B6824D4AEE54646153854A17A176CC
+3D403CFEF7AEBF31F8A4D038EEC6A3A4147256B7F8C2E21A6F6D85FFA25FBAE4BF775171
+9A745B037650466B442A6D47DB98C94686AD8E71746B42CB7609908835034119C7B6AC81
+6E346FDC5CCE6DBC86BA4D83D22822437DA5E8504C1727ED9F460C6D0733A9B030DDB3AB
+8F446B96E2BFE978B1448CD66E2AD844391EBC96A35862BC4E1B5025AFC495D4D93E2342
+7608FCBE0089896DC045AFD86A0BB7AAFD0EBF37D63EA1DFDE9A8BCF1C7E10F3BD7A2922
+E4E43969721B8BCA24E202BB38A165203B76D7E2F6A45A1FEC36424D8A7581AB3E7A4135
+302F44B5EA05DB4DB2B04C476A17BAE13ABB99EE66C89ECA060C8EF070027C417047EAFC
+F4DC1D65C90A38A53ABE2CCA7F749A5FC6D05AB4DD0A4F28554915190F7247F88CE0F5FE
+AEDAA325B6EAA825F1E9A4F41976780F17F9487AB0F7252FC270F24FCD8916F96B0D3A4D
+A89C301C95A7F292B42051586741C79AE2F5B05F9EE5C5D827C742C24B27BA050137208E
+C4911DA00495BD0ED7DD0EA7E6720AAB4668FD9237460B2D6764578AC3C1C14034164BC0
+4C85FF481E594BCF33106D817DA06D85DB391255574BC6C5F368C13E58C559187CF91795
+E82B8FDA038DCFF05897674729BC2F77B42D62A776A29DAB2E2430AC5C215403B718A08A
+08821945C78CCB8E0370C63EDA8975A6E17ECB8913C1133851E1F6F71DFF361A075995B5
+06FB3BAA0FAF252C2D470BE8E6610597E0AC23D8F2110807118F65A347F30547316DCC4B
+899A0D2E5FFAE38B8A49890ED4235492F662ABBE6B99D10C7D531CB11DC454F422F6FC7E
+EBD730620B6452CF6CC89A25D1328F853C1F16B29D007E91A4FCB9BCD2AD486D86C4C51D
+9E03581F0243F702C9AB7F15BE2E8995FAA40BD8B32166663E91258A99424F1BE42CDD88
+9CAA0F81E0A90365D9AD96F2F52791CB478D95BDA8F42C2E770A683107E7F39214052392
+1EA7456E4A2EBCE19A558AB89F7BC26459DF175D76E5D7F49A1109D52ED7171CB1E17631
+CD013BC88C07D9F592E455231B0CA1C90E34A669BBCDF9092A79ED96A69865EAB4556E03
+972C01CAA1637AA1CD173A1D9D95360CF3E5F7FD2EFCC32932AB50903EA2A9DC63F86A94
+F0B7CA1CAFDBF0383DBF5FBDD5D130BAE7FFC6862DF023E9BCA76E4D071B768B4068F1E1
+52127ADCF548C31943F114B5C2F74D517F12D66950DB489F055EC10A8D23D9EAF6AD8FD8
+499637CF6B4F464B55FC4C1B43CA01BB93AF801A1D1211E649DCF2661239DB27FA04AFF2
+0363C944CDD87FA7DE3535B5C5DE67CF79CD0F53FC9A77733954043880994B414731F0AA
+40D7F88C399973A85071124EA103AE0B3501743263F7B8BA01A368A8AF1DCCFE0352979B
+C4410D3B321E112B2AAE41116C58B1DDC5D2CBC8CCC90609B48BEB30F6F4C1B85C7C55C0
+1902AB634DB5EC85B1499724A15FB2FF3B521B0294812B3DE4CDC4DF5AAF92DA90F556E4
+62654EF4B0194462447762C2B0090B119705CC9969C3D0874DB559A3C20632D3F608BE8F
+B158E21AE594EC04A967ED1223A932BC161A796539BE88BCC705C74751EE82440121F146
+DCDD88FC065830657ABBB7577FA69C258A4E7398CC793B2EBDE80A9FC531C9C37E4BA588
+40DBE3D653A56D511C20AE6455C09F00C533CE7F0BC8972212FC32FCF9C32DD813ED4728
+25AF953C3AF59272887445CFEB338D127B953D645DA04469F3BEB8121DDFEB19836FAC05
+E436A1888A70C94420D3988CA0946144DB7D5243FABF7CABD16A0C333CD244D148B6017E
+8DF6396D05929A7758CE13829FDE6D33E555500957F8E54B9E81D4F50C767C7AC9D7A70B
+2512F321348A571C95816E8DE6EC3678E8EF66E877CC66B9745D530C2BF8BE46058E29CE
+4BE76832E60ACE86DFD3DBF7CA94EAFE34B0107E78EE58C7D09C2E9CAED9130D697972BB
+11E9F1ADDF471AE9899727FE6FF18AC7DC6997394A79A2D3BF18AEE560A93AB2F17D923B
+A9ABB8151D74A09ED38412B910864B3BDBB069455FE603E42150002247533457CFB032DD
+EB41BE08B265F9C03FB6E81B23F42B99CDB22C7830E89AB098F00709101960F200FA381F
+EDAA68E3FBAD3870D8A694C2FA1BD1ADD5E5D51464FF92B6364E781B947D7ECBBB0391A5
+BEE0CF0A6FBD887C3904739CD5A381A269255492648B3DDE37B3C56C321DD8A1D3303DF8
+F5740D5D723EAC86BD789EBC39598CBB99687A42655FB925DE301B97A0A8861EF4FF6CD0
+982F0EBD757E0637241541E1988E727A20604F1A6B8B7DDAE4B037751880B51D10368043
+750603A4A09DFCE4DCB9D05E251C3155E22D87E425D2E7254D5018039A25867358C985F4
+7D3F0140AFF5AAAD712818DCE67F603DCD0AC2F535A6E8BD18686759C59635BD24037CA7
+2198018D0DF22FE7DCE13E07573540A7BD1F353180E61A93130FDB010AAC7E69EBA9C083
+8568A862B270F9B2FB75454BCA2072916F79BCD000F690522EA891B0B85548B588D305A8
+ACE18653004907158B44485DBA064380AB5E565DD37ADB3D0D22C7AFF6F1B07904F4A6FC
+8182BB441E8813078248C74CCF670D0BF3EAF641CD7C3A8232C14915C1344641C1F8E2F6
+4A56E73D1DF1A516724529BF65BE8F864914D74D784007918855419548367F125C5E347F
+9831C33430A7BBE67515026D1DFD94E698D0A65005A144816FAE0A49217745BE431E2DDD
+F6D31111612E8F7E2EBBE2FE9EC973DEFECF1284EA1C6D37C37865B91849E28DB1BEFB79
+A0083768E97C22F1EAEDB09506E4B6C5ADF84F7368F83B7B9A84618B01E40A1AB6C439A7
+71A28EA396E7C67C4C6725C11B2796EB8868A9215D7017C091E2C07CAD3481D8299FAD26
+EA1DD8C0886A652B4938B90390AD8357F52F38352542496BE4922B59453D58B3DCAF20AA
+B3741FA0DCF52A3F5E42A933D64123BD2502FB45A79A5FFB987C5ECDE39CBAF4DFF0B65C
+3F31F6C6E780A2D0CB981E40FCB3E3840CE12FE9F5F9B275F4FD431E477DC3FE6C80541B
+6311F5433635DEE09D8E26DAB731202BE353897AFF8D8720C160AFEC8B85EE498AB1B9A5
+AAFB7FB94F9C1D02D788226287AF6C129D001B976F62C86B80426A32A85C933715E7414D
+44FF7397438230D01819605F64EE40D1181981E05011EE9110BABF8474E3C6612551745F
+39EDB37A238A0584955C5326D7D577911C3E66ED3F8B2E98F6466739E992263CD95CD249
+7612D380141ADFEECB777CA1C515DD37CD1C10BE4DE0EFFDEF322C19B0FEA9529C02D5E4
+A2FFE88F86423A538DEF6786C10F94BEF73BA1187E79B8DC81F02F9C151E4E3417888BEE
+8BA8CE85CD53D7CD69EF53832AC28F71E6F5958EE60719CEDB8E8FB2BF252415ADFBA8C8
+D8DD6D4D8E08E82A3BB22809D28596A0A353D39F034A9D4A9181149F81FD0C14948AB20F
+0F05BED00FD107BBF6F242E73CD0B7F5C8B273BB7C3287EB0E6DDEB22351F749E088D2CE
+2E7DE78FD3C38A3919F6230D0A64C8219B7603607FA344D3F63823702ED2F3DE00C64097
+3FF6EB28D140C8C7DA60A05C398D864091C344A55A63F79F98B31A59E4012F4342A49086
+92D4F1962125FE2977BEF2763367C29D4BAC5C5C16A20360EA173963BD8A335E3BFA58C2
+17E8E757066426A5B8BADEA4D6BAEA04263E293A5A5322509A2C9C3AE869B8A453C41D90
+5C8D6A8B202C54EF5744262D8ACECEC3005810B42BD9CBC3212BD255E5E4D9771626EA42
+E8BA90A374629E746BACD08576304CCF179E2D77C2BD7C08019C9E23516C20B6270496BE
+E64944BE6E8AB55BE44C44272A36D7EF3E994B08176899FD64C63AD02717F66B9FD3FBC9
+082C9B9A7BEC856B391DFF812458FFD180AC8D7C45B0EC76726F4F1174DF9F12E24AC47F
+442DA57E6A545763EFE4C0A95B032CE35AB004805FDB9CF9872B97DC2618DD6937F45C86
+9DD22E0EA37066E413B1A5F21A942F777C110C3CF9856AB26F7A22780D0318C87BB1C0F0
+69531DE809F5EF892F35E6614C39773F57905CF14BF2786ACCC8FC954AF5DCA574682D2E
+DED30013FB2A796201976EDC1E0C7CC8A0DC545F5EA4DEA16376711639AE8FF4FF15DCD7
+AC65C34880BB697C0D3D42ED3A704E49B1298ABDB56B821E2563BD6ABAF890722D3A9F61
+1D4C1A60443D86A20A0398415CF7343B44AC797345E8C03E24B3229260EA36B5A1917574
+EC037DAE39C82A9EC514E0599C8FC3A6251443284A0743E3BDBF7CFA7E8C9167A4FB204D
+7735ADC8F6A2BD71283174D902252C992F687C096EFE20D59F488DDA56580960BD9B5F12
+4B9179A5058641275A8C8975B1C2C38810242D1E0E3D7D25837B4A48865064C453A47C99
+B833511EBABBDEF42D1ADCD1A61EC9BE42185D4632AD47AFACF1938A94F787E3E726E23B
+2E7EF02F0C3478FA5F75E68F38FB0F0ADADC35F20468A8474FB4BE2D64AB95A25250AADA
+6F8EDE97923C7BBE927CB19CEE86DF95A197A5D0280DDD51F2ADB708278BF680B8924FA5
+06CFF04FD0B7E037DDB28F5759163689A9890D53EF3A5B280E535601831E800C20176C41
+529624021603293AA6138EB402105A7C748291DC595BB8F6913CB64A13292288C9B00344
+97C3636CC2EB9D02DBB8E31B8BDFF7FE114D90D41828DDA5B7E82B368C07B429D28E2814
+73FFD5DF37F9847747685D234ED10571AF7765ACE02E9CC9C1F48B817E907BB1FA51065A
+A7DB31C04C3898BA8C00D4110C75B3BDEF9E7D9D38A8E9A887E9C001F836DADE477B1197
+34823D318123BA3C908490A2D6C296E41475527955C9AC8D8270CEA2F2E3E9C844DEE035
+3416AF8E7ABA143FBB9F7D8A28BB00D56479264DE5E4CF23BC1BAC9715B82068AC04C833
+DAA980BC93102135B44047AB3D18BF18C3723024E23AA88112247054B8ED9FFD2C96E197
+A8AAFF83D41B2633A86B872BA547628823E5104F6136487A8B4ECE24FC3DFE68EC7E477F
+A68997CC165B5D9054B2D6A7E1D14B70315435BFB56D49AD6A431F51C098E543AF64FDBD
+80D997DD370BE73E380D82C057F4105E7D2019C5A99001BDB171D5AFD87DF8BB334BB809
+1530ED09E02AA857C6FF5A8468374C67724F0DB9B30F8AD5E174A1071B643989E0988852
+5E2B839935396B423533086797F74F876028A71D8F383FAABA49B6BB4D4A0EFD79599957
+5AD7FC6B9423FEAA0D67D40681F628CD410A38B01DF487377213777EA9F22358687455A5
+732DBDB545106BBA360ABE87156E335520BED29FFA72BD5D8F86CA6B939B4B19E81AB04B
+DFC484DDA54F1D1BE2EE3751B2E8275304BAF4EBD81FA2E622AE60B17529E6D1728A949A
+9023452DF54E55CD40A0F8E99789840A9BA7855ABB96512319EF4D0100720F74FC9D824D
+9DCB923DBC0CB1EA4029C7C87BD07C17BD1B746EFA83F66ADFFB71BAAC933FF776399D16
+C6371AFAFFA870A705683431A99182DB3574B30A36C9DF5BEA636690848866A4322ED326
+16A2ED5FBE297F7238BA4E404B7D6D1A22D7220D6DE0D3DA4448FE11B9CC4D3D796CD922
+08B6BC1D25387ADCDF95C2FA304DF4C31DFB5ED49A77FC544CCFF36F8AE8997716F73D72
+33C916B976F0C0E0FA25CCB447DAD84B75DFBD0FECD794B85E5CB65D794FF1A72B5B1222
+3487FA3F92647E2B744E48AFD771C8F3672414398C04A23A0D65EAB2C34B7EDB13B696E4
+ECA6B816C09355B72737F69E76B49C1C771BCA106DA10AFEF9045F9B0148BF75214935AC
+194700C37FA3D591124E2C4F1F71550220B035B6AE934F29F8CD127832423A4565F0BAA7
+ED7830396925C855CF53335F2A7B4565FE2976B926151E0D6825D22BF99D85992FEAD373
+00D6CB1C4FFE3B3A8DECF40E615ED4F8ED0EDC315771BC263DDC7EE34301B0481EF3ECE7
+0912117EFD02E56ADAB3275732D3A03C21A90A117AEE9AA75D018CD5725C164B103EAE22
+E496999B3CA36DE570A0DF1A24E8DF05D3CA10D74C9A63338F744F224DA5E87ACF29D6E5
+1F29504F45CA88337B2778229796458EC4C973EF59416032F268C40CCA42F8428E27DB4C
+AC05B0AD4E9FD1D9DA5A0CBFD9740F4365DB66BB099AF5CBB86B4B71DF8A7F419A3C6A71
+DD358C5472C13CC925A587252A312CB07CE13E38C2C9FB28FE0FBD1943E91C00699D5FEB
+A6D406E5578C09938DF20DF54BE0984C5CBB650FF921BE2832A5A53E22CAE605C7E438F3
+474D9467CA332275D5A144E8F467AA7E9DB343D1D23C409A27DC7F124832D583BD44FCF0
+C480796464D1A43C9C660EFF4303B0F976EDEA2EBD7228305DA9EB0AE9062910D7ED9D89
+A6163BC1A40C7BBD3B01E918087B8012902FFFE2FA269415A5F911FECE7807E95BC26F5F
+D706E0D49B61A6A6CAF6BA5DDF4E18D8CC3A5D44DDE503A5EC384E9B78FA5A7B1165E311
+49B1D1CE0BED65FA21330C216E21BEBB091409A61C67319711A561D0C5CBCEFC715D30FE
+9221CB33C8328CC23EC539D4E76272F1BE6720F27070209887237C04915BCFD85189CF68
+20B08DADD66BAFFD57D7E3407E176B5A4605A5E6F53EB2CE45FB93B8276FA347E30DAA8C
+49CF4CC90D7330244A995E77D369B625E811BA20A6792FFE4B4347DC02D121C02464C8AE
+ECE72232624DA901E134C8E420653B945C18E04684E8DDA12283C684E472DF545D24A04C
+E615A7F1FAA17CD8B26C9ABCE5D967BC9E1521FD0F239E9AEA60D97A335C50876C7856C7
+30BE997F6EB5B0BEB8F78CB1BB3D55BAEFD708E4B93BC827416F26F833F27BBED322935F
+D3D818F81B933AD7A1B8B054F388861A36AB16F5AE6EA42CFAAECE69285BA442D94ED07F
+5F983F192513974EFAD40756FF55F55DF39FE9A395120EBF871DE3EA2EFFF4654CEC1205
+9F91F86236A87F69E2DD7CBF18A9157D4BF0D5AC7984B172331ED21D35F6668D79BA481F
+8528C6DFE9C1BAF659D067364E59147D23258B4AAAA81A0C6ED61BBA7BC92817BB058C18
+807FCBCFA01BB267B5B6E5D266BC34E2498CFAFCA6C955529BD0EDBD9496769CD6DF30E8
+3AF759DB3274DB0CDED1AA0FA7261096C296B377FCA572146DFF5F0E246C116FC1A80C75
+DC45FE9F4553FA5AFE5A027C2CE9195E61B9F376229AA346AF15EA8BA75F82A68F7BDB41
+07D33B653DB136CACFB513F31A2CC4EC240E91985561B9A713C9082733D300E191E4887A
+2F908DFA89C0BAC77F4DB0A494011530BA96505B4999E235A165947B0DF6098844954BA7
+DEE2FAD45EBB0CBDB987C5C8199805552CFC2561C9D49C04819363F90A447B23A58F0283
+5E744123D7AD418F543C13850195F2F245E8AF9095A5494606C9D92BEE7C0889853A75EB
+116E882A6F1EA989AAAA69D8A1F5409E93DA1EB2622856155390D8B2F0ABCB3FD84A595C
+8B3B5C1F7187E9C625106D76C393691CC0EB463A7479737E85CD64077B910976E1D103BC
+97D80DC691883566684D4088138D5F6D7192F6199376095803DDE8BFA38F0D82601419A4
+2140D1F3934D2CAD710A5AC3EA352A32E88742A2D5D350833263034E8AFB74E554BA0596
+83BC166947382B4E77993638151C9B6D4A6D1D420FEA11635DAA75F6825FB4C78D941EEA
+5064A27F2D5BE177AA0B4F2E021DC8775B0F5D75A3BE2BABBE7DCD8FF3A61799D444C93B
+FD96DD7994C1C21577CE5BB9B26C58C73F2DCE56ABBA4F8B3F87AB3DD941A92AC57D9AEB
+ED9BA931FE4A67134482AA41EEFDA0DE72A50FC13529DC88E055EDAF6B956950D0A9A11D
+8B4AFC595940F53010E762AAECEF73C87C324E311E003B9DEC66CF359937CD2671AB9302
+53F8B64E1104F735BC25474911939A2DD2D2FD434CA5787EA5FD0CC6AAA8DA359E44E091
+FA6850F62875A578928815D319AF7137603FCDF2F19CA500BCCBEFF31DF2F219BEC71B51
+085E56372084E552871643E556822AA2732A1D44F9EFFB8A57B851F46DA839C3C42B3D0B
+20D2ADBE90A3DC20180098FEF00D0B518AE198E2C33CD11A2AFB6D03C4B6E7241F794A8B
+ECDA7B334BF4F2DB64456F75660F2A1782ED372C7759A3EB2B2CA0DE02D62E56DE1F37A7
+CE759189DC1A791EBCE1E6D67C3008F51DD64813F7ED18D1B64214C7390262E7EA68290C
+7F39F5B69FE0022425CBB23171A63C252F73D0187652C657DF6945CA8905222BC78B52A7
+D9523EAD7AF6843460958820AF21B3B2D0DD708DBA094907DDB687A20A0BCAB7FCEACD83
+773732003EF9C58DBB76834DB60241937A15DBAE5271BE77F76B14B4B5E11C865FDBE7B7
+245E46313BEF268580286F1B4C3CEFF1C405F8298084711EAC2BAC6EF6198F1D02C60721
+7FAFB34575F02F138B333B225187AFA755A447F54DBD84373C7F9F52DFF84A7476F7769A
+C76DE1CB466333FBDCD6C2C05117E17E6BEC87151BB9E6F4EF18F41773BB81AF09AA6832
+ED78DE3038D43DEE9C4106E2C235EA5BF5F1C05B2B4BBC09AD1308D006DD879D111CB1EE
+ABB77A31922BBABA7C0394EDFFCBD0548D0AF574E6A74C09F853AA4ECD7D89AF72AEFF53
+2C38F8AE204952A4508BE8AA58ECF0D7A456C05A7D0FC568BFDAB3ED3776D42F46F2DF8B
+A23E76EB52420FD72B0397E033AC553663BFE8EC6FF9484103E71BEF6BE90AB793B63FAB
+8DE4E525DCF3B075CBA5EF56C4CB1DA35405E888245721D1A099378252EABB7450D22A8F
+A4FC24BF78FD6A43643350E928E8192002BAE8B740656A057E8FA89A893AC5A959EB2142
+F21DA1536B4C90DB87729CABAFD1A2ED34109BD6A3D7A59455CBD1C24FB0830B0D27E1BB
+1900A3ACA96791E39A17FD8C83C91665B045E3077071EA09FE1DA534CE353B321B143C1F
+8FC1CF6AA8A3738B67505027396A19C896D1250F8C11E58A7BA55D337F12B58DB9B71513
+D44724C96C19578EC2E1B666029A563947C7302D5C6DF2E22C6CE9440AA9F8389519681C
+9783B9A3AE24C54C73F2D74E66F11F3A18668DDF3B3CF495AC079E9B9559F51AA6F85421
+241CD40C10766FFE74D2128006C1C8A7AFAF8294E707D4D6D88538ED596D9D32266BE11D
+9F25AF790E474D809AE342346E3D71AAC5C82A1A85C7A84D3DFA6F4F2AFCE55BF27BAE68
+334091D8A4A106740A9FF0FEA5A106C07C5B32785F9E16C0B8F044313C01A312D046F377
+11900F8003993B51BD1F3C7637642A124BAD92644AEC4D6A750896EB9A1446A345AD84AF
+082B956F145508390A6A4FF81C5349BE57B8C3DB13AF4B99AA369772F57A8333E439D01A
+8A8596CA775D67EF309C02FD6D2561AC8D34955878006F809672F9CD14268AB82656D18B
+4AAE3C3E32B5C10E0B782958505FCA75A82E9483EC5B38490DBB23D66D2ACFC9A443C5DC
+2EA095F563A655B9266989CE7D664D3A7DEB34BF8821EDB05E388FE21A67E22FA824B9F2
+FBFF431B148819740BABFE7144661EC3033D964B9B2DDFBAE69307301C2EC97F00B07543
+C468C443401671A3EA8E4C49E3DC373D882A84AF0F01C9640ACB2CA4C5DDE8878C2AC4E7
+90FDBC4A2E6F6EA0598FB50B54748E893C4A0FC756ECBD0D2F723FDC2D4F466E52C87271
+90A708EEF56C41576739BB5A06DB3E2DE70D992D34C19CDDFFD1D5967C23F958A6BE7046
+1DA4F376DB9E4971BC753C8E7259C7EC6CE32D227A953536F158FED64BB0C125AA1A06DE
+205400DE64A91F6A6D84ABB5AB24652387D5763BFCF0D466B9118B332B7B3B42882F9DFC
+466046DCF28BED0F420A0EC7BAEE5F794CC084EC91EB1A4732DB12DB1D3D5CD3269E1E7F
+847A598C3E992DC7F8F1626EAD33E0A88ED2D1FF7220E4537D14908F5F4AA6A6EA1FCDDA
+D347B263664FDFD3C60B848EB78D4AEB0A84E07FDC079F8030D192C3EF28658A97D4F43F
+7D8E6E5DAF89545B8DAC484E00CC702517719355FADF32A4CE5F5679E9D134FD406D24A9
+5BCC65736541C0FFE601698FDCEB95C0FFEE5265788B738C67F97D56AEC2B1FC4A0EBAF9
+50DAE0A9C5990FACB94497FB90E80F4F48E511F5B04B11E6F4E2C279B9239DBE2561ACDF
+28376A5835BC4C15203E060A1E6B7D87C01ED5E6E49F6401C758D62E20E0DC7DEBA902C0
+C3DCB8C118DAF74712DFABFFF810BF0276B9BFC8248C12BF4C8FB560104DA8ED1EE0DA55
+13E71234E4BE759DBEDEF4283CF6AC92232CF175410B74C62FF8FD0FCC23E4D72FB9A3B4
+2F39A485E1D85C7F4BC1D702D151F69F30E7A9B1BF818C65C9C4C0E9D3692517ABBB5680
+193C9622184100506A3C820694EA3BC3405B210A12B8B9535CDB4B21E4B4F6A84675CD61
+4597F925367A850590CF22F9C848B96E0C7A6F68633C95D8662F30C8050BC8128E17A5F6
+33458AA4D89394AD292606D25D82BB4ACBD8D81C5D33233DBD72D45BE3B72E626944E0D3
+CE7A48B0C043C6D77A6BB73BFCBA556F8689774BFA824B87E7890B51F8C8E759444E5776
+35332CA431E0D94C31C0F2D33953BD13EB93325E890BE835DF722890CCC742E520BB17B8
+CC33D36423D1E6DD459389D561B469BE5C04E0EEDEC1714D8D52A13C08F4929824981E37
+09F608949E7EC54CD190014201EDB53059E7F555421353133FEA8770F9FD80D9404E1CF0
+7E9B5664D21E5C5919AB905C89D2F2D1A2BE0CBCB087ADD6D28721E98C861B3FC4C5D25B
+2B20D2F2B504FC8B349A42A6CD24B7F709B85B482B6C7ECAFD1564D3B589B585C9B94B20
+873AC6C3537BE7E289DEE7686A460E788C37570A6FD8F2DEA89F828663678D6C2A1BCA09
+2D5EBC5646DF5228B0867976C77102A6591CE8F8E657A628E368B4B8DBCD38DC4A73AE86
+10F898B3EF13FA69B38E76DC53E20C641C34A6CC990B8246E73B6E02AA5E55AD94C566CC
+28A54E6F328A7A5DE21893C120F0F5473C8DBC38A1093DBC4146774B7E70634DDEB7ACEE
+AF857485999BF8DA87335285B2C539D6A529A822946B89EFFA4720ECBAD7BACACEBB661E
+6E65CC5216895F14D2ED1E1D3A17E0F446756A6CA48BC20F098604ECB9B67EA544CDECD4
+EAF252B44AA93808CE0BFACB5E9280AE045B269D7AB2F740DDE716C6596251290D1A81A8
+3B93DE71F8098A52D032BC7DEB2584C79752A614C8570106843FA553F541414456BB63FA
+E881C9E04F87E131BD57119532FABAD33A0DD1100DF0AF791664D0B4F5A60E464A183B63
+55110439ECC28F3E839ECF9851716D91D55FB199F641DF9052D15265E525417E17E92BCE
+7BD685FDE063B5D197F870CE7741A161D726E1658FA376D4BA71B2136A7E72FCDF2DA1E1
+2E2EB5D410A5AA42B8819CBA131A8D9BFE8CBDC354BAC986125B008EED39F407ABB395F1
+5F205413734C9F6D346C91D145FB59780D67674AA4641B7ACE2EDDF4BC574C18C875644C
+DE785AACFBB4C21F8A2D014516F3A8CC0C262F0D63F38E074BEFEA88234888B9B7859F9C
+4D833F89F5B2584CCC8D05825AB95A53D4B79399F7F0F87A0266D0928F2320DA69E5673A
+901BDFE8113D9944A94768213DFBF6234986C66D15E450E8EE1436AD1794E4548C480F4D
+E2BE0ED783B276DFF6B44D3098C830AF00AF4D7B316EE2AE2C7A86AA5C3C6EC2C4608627
+5E60424B99A05B08D0FC9C7B8C5A10F61F41B066A39AE52E07E666B477B7186E37B9CA89
+0F2ED91ABCA045300823533056B3494648643960DA5592C3247B8CDF4937D61903B1AB8D
+43CDB328E280F315C001FC16637FE60D3D139058451CA118E6C7376954437CE43967627C
+585F6739A498960BC735F5A867A0CA73D7864DA01F97F9E03E5E765A5A12C550C50E87EF
+482CAC2182C5285C5CF21CD73C2309089FB220F73373FA363DD485C8C25E59A552637787
+484EC1E42A7C554E324CB839D1E80BBAE5568AE72DE188FD1579CCC189B68579E96935CA
+6229AFEA03311571D1F11B0EAAC658C7C912A50E556BAB2E102911CAE7C8EF65581317AB
+99D89D36EB0DD03117BEA6E67B7D65C0D17A6DDE789977AB31223B09435958F5328D8F4C
+6E94D0CD075CBBAE6C8C214C434123A76CCC04F87C723632ADCB6350F02C4A38B633F60C
+F273E5E07794FE360EF780838AB3300A0652ECEFF841AF15F7E8831FEE23F0147210DC74
+6434CBC32CCB9F974389B5A59EC8F257B4869021BB0BDE2EA77B4A8726E47F39C9982ECD
+5E101B139221A95A2697258BE353BDC5709A51987487189927FE339C9887ECE0DB1B33C7
+3F5FD85C80EC4BDF1C4F917474D0F6000DCDA3E412E18E14F8B830B3470425A7013A2E43
+FBCC48C0AEB2C6535BA3EBAE0C24F49973D97B7AF9DB12816F39A362A43F4DC20DA40728
+B48835AF0D965A0FDE20F4A3B2168020F4C3EC729893AE3D8E34E6A616EE4C5AB6F3B66C
+EC9F72EAA2493ECD2F2DE704FBAB9E3FB492FACEAEEFE80050A413AAA0D7BF4A5B0B704E
+9930A3D9234073E771A1D1EDF0E6C9B6CA09A05111AB5ACF0035F6FB29CC9316F94DC40C
+478DDFDCC2B0B90B5D9812BE24466CE48C54CADCCA8EEA93FE474C693A82E5F64103B530
+F54A6B88EC7B58EFF4EEB71B384A9818569E6262781E908BF292005FC1B0146620A6217B
+C314DFCE40D350D034FCE42BE4CF315665DFDC47FF6A397037C09A37C871DF4CCABC332E
+D755D7895EAA1295425F0A1BFA1FECFFCAE913BA554AE33AA53819F23836098F836CC2C2
+C8FA7C14A89694F61690FA31769742E7466AFCE32C2B1092759EC30E59F024FF989537F2
+DE711192283F4293DA9BA8187F306B8B2103A4A0932F216314B9BF0F42190E78D121EF2A
+2C08EC7E52F306522C459E3B3138821D2583C296668F5541C76DBD4482BB5C2F30C6DFE0
+B19E842CD38F80228E934DCBE07C86F39FB98C2CE22F779381A9B50124DD072F10B23D96
+0061A5594C2CBC8B5A0C285B33F4CB596075F982F81EB4BF52AB883037FD0A2CD81A50C1
+FAB2DCAE3ED7BC3CBB9728E5D2642061CE4420949E96E70E3E698D5CB063BF796C5C36E1
+674D3CAF05FBB45933C7E08AFB9CB3767008AF4AB21050E07D3BFE74E983E23D6BF963E0
+034FAD5E1DA8109B03CAADF1C109B2EADD00CDFADCDB306D7CB46ACF192C0CD6FF3B1963
+EF2E143B92DE1B1DD1CB6220FB26A84A5CA141CE8DB96ED02187B9808FC23023344CDCFA
+E6B1A006C9DAE75FEAE8DAF4E7A436E2C1BF17E3FF19CA26633B84ED04E3BAF5BBFC16B0
+C27C6E3D10A20E961A6FD88AF8F8891755098584BFA11C9A5DB718E5DB272614BB051769
+411090C66FF98F1C2A1766643414F64692C46CAE6556F0EFD860C826AE0C21050A55E3A1
+328292A7B3ADEB2B27AEB2E5A0496952DAECA774C0EB15B8EEED50ADA1A4940A93D2B35D
+110410503CA3D644CA87EC3DBDFF6B1520D2562D38599B732BFEE02CA8A10E9E23B6F22C
+FEEAE4DD85F747DB843BBAF3FCD2DD08DFFC7A1004F24E2A3718DCDE95A0B5DCA628BE7E
+52ECF7615DE40776481A3AA1340003EE6E94C09A58BA487673D38E62C4BFD7DCD1C0C020
+2E28C5D0CAFC925DD6E3CFC1C91E3A0EE5A1AEF10B9942094E5BFA7E73483642CA9E82BA
+B656B93D79962D982EF13879D56C7679F6982E3275A23910570802BDF2A7D344549EBD94
+495DDEF28A19B8C09252BFDE45CDDCC46D91B59645AF3F7AC14568D33FA4495A567C4092
+6C98F920DB96A5074BB217588C99A8BBB91258F9380D6491B53680F238DB21B10BAB2371
+28C1D8F1CF53C46909CCDADB8A73F91B84B1C37EF6DBEFB2E6917C72847DCFF99BF09C55
+6E5F33563E608CB0934DF77FA6306C89D289A05C01E3193D5351F34B7CB4504F55DE50D0
+D6952C1104EC0FEEB52CD2DDC65E732C4C5DD29AA7FB399EBD631B61774DDAB92AC6BEB2
+895F220A5FC6762A71016837ABFC13C1AB0196771C4F47541EAB290F19D6AD0894636020
+8ADB6FE018BCE2BDECE3A4A6B5A064B5C3C2A9DF231B3336F0FF61034E6D26200310EC44
+8EBDB590DE6CB43605EB52F07B6CB5D0954CC6677BAA783690D13630753038C9D679368B
+3F8A7B8ED38EC28CE547172D7B52B098280496FC92C6B46675482AB0EE42C5ED3C2D77F0
+DF7AEDFA3C1BE5FB68FEAB4033778D70E48BD09D9B9CD7E099C88B2DCCFE54304F7887CF
+D0CB61DAD1C5B7DF5BCC7C4D36313AB3A01108DF7476285C1055FFCB42004287ACC1D67A
+321EDAD6C1F20222221EF1A3440903D223479846DD6C3A83DA498163655361FAEFE297FC
+74530C3C604C24B3CB398F9AA640DE75AD71486AFC90CDC1F90C14998FCFC433957B61D5
+AC96239A71B966CE300AAF6E6B603C0B219252199BE6D8E11EA7318887544A2E5F331B9B
+1A313814F91B434904DABAC1D7193B63A14D01E89E20424431EF0080450F09699ACBCC93
+80539D95C00A8B792E4B22EF79CD3719B2B545A52A1F708097DA82F4676D195E6536245D
+E3039BBEE60743A1ADEE882670C612F2CF938D90518466E1CE0E08F2C529D18F69A2890A
+B947D0F5BB8F7C8E2218ABEAE49C69F36A501D5F2BD7DA14DF645DD3EB913D42ACB775EF
+38EF89F8CBF4E92474900823B9A9435ABCFE682BAFC3B009D206F7105F7A29D522A9DF4D
+F455C4F12BC1BD9E3402FF6C487927CC066EFF90F373D762EBFFB1DE87E03EA1B1F11525
+B91C8AB15653C42574A1FD54BA726004BE6096045162BAE0087EF29B1208C482325DBCAF
+6680D2E2F38440ADD9D2E2D4C335438D43E4F6FF5BAD4107A8596FBB4C0583E81B681EF8
+AD8D0659C09AAD6C192E42530E33C11998B8A10B2DAA5E18E837E5598A3E9209666587AE
+68AA6B6BDFAF547D1AC69FC912DDFE2A0E045C11F697E4D934C824D61EE67CFA60F3B67D
+402EAAB30E06527C22059526BE34F46619DF1525CFE741750FB35CDB26346C0EEC007F2E
+F6F106D01E1B8B92880BB43204694F756BD73603F9C558E3AA3EEB0443302B781C4170C7
+4FF598FED427AF99A771B8BA80673C7B11AEC8008EFD75974405FFD9DAA8F24AD5EBEF09
+765AAEA8F785408385B75F143F2F9B339E4450AC5157E13C5845DFB5ACABF9FF0EEE609E
+9CBBCC41E85D5121363D3CC39B7994AA043941C742CED676EEB185D4F8335401EDD7BF22
+1A3B846F178CB65A22EF4E521C0B297B0EAE7EAEE5E76B966EF0AC80B696D8D6396A9271
+5132881E4B3F746AE11CFA397258E9F1322D7B7D213FBBBDA934033D2EB638FE3EB6C4ED
+409D021E2326041C7E5C7065B2D44D1315555FD33BC19ED97146DA81B3FDB4D946FC1287
+BA59BF80358BDCA3F89E7B06D64F37B54BC869253AD80873341653892E011DB301BAB555
+F86B0F5CF6BF8FE4BFBAACBB3B1E36594888B53D4A594AB32DBCF5A4F78D17A7EB2B1C6F
+AD11588678793E201EC6A33A311F09FD678B653A04BF6D10592B7BA0C9C9A987FE7C1399
+99D941489BF6BA2E3AC32D6901626AB1CC51A1E24077796D5742446A9FF651CE54BB8BC8
+FBBDD8DA27ACF5A1B966C39F802B92B5846E0B9E69794CAE86D107A0AEF796D21CEF72D5
+7F2506FBCCEC516E884633925A021565B8344C4B376E821E38F1DF0F0F4A5BE37CF92129
+E5C9D1FE671D5CA0F923566BDFCC912B22756924EC1EE33A58F619C3C7BBF356B8A284B0
+AF33AEB927EA2B1352748A28FCDF2AE1ABD7F56A9CE7235909E71CC6F663C881C0B84F79
+FEBCECE6E13FCDA69A1C1257501681153A05C1315C7959EA55CFDB5C646447699F1F1B27
+08B281E1C356B8BE5F486B6464BCCDFEB496E61A5316F0045ADA6F0D66CF17D03338B992
+13F168547405B293A9A53AB6A2F98CE5FE47F69A3CD79C40F54DA7DB7FA1E52C55DD15EB
+CB8714DA9AB15BACCED625F4A4129D683ECAD800B7B44A5D252B90677C38B0DB6C693BBD
+97FC9A216DC7AFCE1C59EE37B889F29A270AD6619D56E2BCA9A9FB0BA5B95A0D5874BB78
+440BF505AD5FD21AD39EB0B34733B55E3116871FA5F89BBE4C44F18CAC3924E4E84E93C4
+63E38338DB835ABFFD4B031CF104357F275C03CC96290D779F24ADF6840E5D597FB80A54
+25FDFD30097CA8BA5A07A20EE8ABEC2FDDA3644720C8ACEDF678F7217A1267A84E83BCD3
+F141B339682AFD12745112EA6E1E3EA852A3965299E96CF9F3F5B37D14242AD5632CF776
+94ED55FF7A4E26CD6CCCB6F2248D7AE9D38E951411BDDB8C5C661323DBEA4EA7ECF7886D
+94451E0840B6C98D36F15A09ED033BDD8064F2327312D829582B4C5516FF69D59DF2316A
+DB439208DBD2B37B5D7F2C4CF9EE751B437315913544CEC3EF53E71D6DB7AACF49E04466
+EDB5F98C903CA88CA7067C9427DBC12B5906532C8E6A2B3567153C9663085C1E3516593C
+2C04D4779B5348DBDE351DA8899B43793CDB1F6444025A835D94E3FE7F833EB24B4CF9EF
+C88D2C4F5FDF4315192F98FB928785F57B0977D88FB87500F0FB7D2CC0E43E8949899143
+F4BF4C2552D50D191A3EECAAAE40DD64270AA3867E8DBDAE1F3676C1296F3818D7035CC0
+DB02972059948766A060347156A20E8A253625F62632EB30BDE3A9CE91B66E0E4ED16660
+904F79797BECCBC036AAAAA41458C8682D7F1E9574691356CCCC2C9200101D2BB6C4A291
+2F906B7F72B848349B2F2858BAB70D1DD5107160E1B9080E0E84B59DB450B1F698490598
+6CA57C8FA047AD4D1366494284C2ABAFDD1D288FE5F6C6E0A1B33BF5569D8C045AFA45AD
+5C324C8C9D1855F09FC26E3559575981BD03043DEE2153E2057B4EBC17C2994F2132272A
+05EE4B6FDA1B8248C16B32B4D4EB642E0752FC3BA0F3B878DAF8A646BE0F772F75A4C358
+C858E7E6BEA76C1B668A473C32B5796FD6E3F8B416727396CB60121C995CA20679705EDA
+271869A29DAA78A1643F96D17E13DE001F2E5D93DA5544EC6103FEC457284826D261EF85
+598E031A098A152035F02552A028167AFD9F72BFD0108145794DAEA0B934667CE4714883
+B08449A6791F38B1677B743A96FDD54E7796A1FB8F3FF39EE92D57C4BE1A7FF41D8AC1A2
+5994B291760D5993FFC9368DEC74429FD5DCAE6BA0584050D584CB82F61C5164AFBC74B3
+35958D00718C343010FAFA43139B3011E0DC90307A2C4F78286807CBACC36A307BC44BF4
+572A8F262D836834DE40D8D27DF584E89179760255868A872F4602C1717BC432250E2F56
+C0B7C3E497B366F2AA9A7EF8995FF61EC741F6CA7D658A039F0B3F5F1BB7C6705771793D
+9C5C58F20BF8E163EF025C088F6EE28E3528D14AACC72BE1D555867BC6FE02206EE73EDB
+3E10A3DB0B1ED14130E4B9FAC200BA2F5897162FFE4353F5FF789750D4B11AC2A9CFB06A
+0FFE9D6E558BB44FFA98BD5C699D5B4774344B8F84810B3945B005BD962A2DF29E7FEAA9
+5B50DA54FDA1BEF177D0F140CB3DC3C10BEDCA51B93D8B5DD6F43F812B42B4517CEE7018
+29B3AFC32FC2BB0F8B776848F37CB93F41BADAD7D06100211965E0D25534AC1AD018FCD2
+3E243EB1FC347371902AACC60C6E686BAEB0DD2AE8CD1D10405CD783FBED9B95A1B9DFA8
+BF8D5E924ACFCB0FC6E5931B09457C57DA491EE956B6E7D9D10102E0E4A7EB2106C1918A
+68BC78E01C974056DC38F3F520C089CA7616883112AFAEBC4993DAE2E36F174A4E7CC150
+4F06BCDDC76113A68B73F31EDC9E64830816F024340041440CC2880F04CC64DE242C65DA
+8EB81EC8D62C00096737583DC9DA104BB4D96E7817B5E88247F9C888A20CCB9AEB8D175C
+C1CCC1991017817401AD12E3039821A385F68604A37EDCA8CDB264ECE5D1BE0E3151B6A4
+9370962A83AFF06E31CDA262A332CAF811A72C749E07A5BD152DECB9D61B196BC1760879
+C92FF9371C5A373B8E2C1D8ACA0E7319B344F303DEF8BEDADE462E0243271705A80670FD
+F023ECEC63EFE4D61681632F78E4EA659F5CD83D62A05566A42D12EC3B9AEE8F70895005
+8E489EDFDFA03A08BCCDE53085D136FDE7401C1A96F3260EF6A7875DF54E2CAEA083F0C4
+335A2CE8528C412E4D46B1708C085B2C263F9975EE7D92DB8DBA669A6F1E966CF98696F2
+EA32B9BCB8FD2A361804C4C6CD1F8BAF4C548B09FF04CAA64DFD71C668FB5F6B7604FB63
+71F387DD7763104FAB7222CF9830B427EB5DCAEE190BB4D1756A3E290544B05238BBC97E
+ABFC8FB023FB82FAE7F1B828ACF365829DAE5F429727E4161E06D9219400B5C9E68B3EB5
+8B384FC4598F693171343EAC383EA24FCC027DD4D607EB91BF46A991F3DE9F6923F7E95C
+0950245071528068AE5FEFA35A7EFB439254971E166336619DC13858F870145FF3FD87C3
+4C508E779B8A3034D3C23A2D42B62154004986543662F64AE03946A7C6349513080510FC
+AD3294D9B47BCDAEE7C9D29CB097C3F3CBFEC8DFE79E40267EE1B1591C4DEA99C33B498F
+8FD5553C50A66F5E03B003DAB575114E3DE3DCABCC41739926882658516C09CDBAE2BF11
+79F871F1A71BBF956FE8A09DE425D789B6170E8EB16AFA9D3A25FF531CBA2F3EC41764BD
+333F72F26F4B6D81495044A35367DE26CFD3988AB140F09BE37644365C2B6F283C9479CA
+527F71CDBD37E0F26F4DB058004625FCCFA0AA26FF041EB63E1149ACBD86EB4D5EAA1E27
+590C5975F38EBF8B1906198059716D2C86C642CB408F045463ACB4ACD8A04E8BAF77F8F7
+D0CAA6C535C1B78254FB8105BB31E08EC1EC14A3F5DF65135A50B8EF8338BFC58A4532D3
+32AD7CF4C90869594CEDE9D3530C1365B49000EC9705BE94A449C5EB8A3AB020A1EB6464
+AC8672F9BC5575F7A457144A0C26A24F4993CAEC9D499FC6D8354FE38291AAAEF71291EF
+EB72983ED91BAA18A9512DECD0C6E06140F239EC5666C3441EA85FC9FED33050AAA94D8C
+A1BAE98F1676F985D768F2AC5545BC10ED4C54A4474813403C400A02519BF9572D5578DF
+E9D7625306CF0B725578469A795B38DFCEE63B0CB08B2ED1D013A8ABB616A948CBF6B99B
+AD131BECCF2FB2B56EC36A598EF245840306F604FA46BE910D465128EAF43DA69E0506FE
+C35E21EFCA13FB4BBE35CDFC601CFDA344936E0DC38C65F4F72EA34F30651C4E1E5F590D
+D969203F3684D4BAF730562235F8841578F0F2AB4F39F6B2C78F8C9B34FD5C393B9AE894
+2B9A658F47132E2EB326AC4C8D80B86BEDB8B7FE695016015F03092FE378CA3FF8A5EFD3
+BAFA2BB288AEE7183D09B6D38DF3252EFD3ACF601692A517D6B8474E3427FC310263AF3C
+6848A670327814277157B06F6FFAF6F43E3CA0A1C89F5A1B6C000FCDA06D36491758B9C1
+4CD1692A75CA2D4177AB3A0BB76CF070505D736063F12DA593236AB45EBD584B20BA1395
+85AA82E06DB63B451D3CAA30A110C201864C6D07B7C6C5D053F3C8158775603AA8198CCD
+4F8FC55B37580A1876E602583A60CA55B4C57D90F738F727B09B832A66665CE96F82BB6E
+2A102E106FDFDC744CC8AECC074C45C2367FF382601D87382DEBF2B76FC9E263801AD12D
+9E6BD33BB70CAFD0D85F09B56687F88D6E0C145968C3E7037ADA0F3665690353480C48CE
+DF65F217551342978120D8ADA859AC814F56B99203E5022F520A8B681745C92EFB0E76BF
+BBC596DDC8333F0489CC8C53DA53173608E7C834B7875E9D2893555920313900FF53133B
+4E982C003CC241B79425AB0189469FF24A57FA79F09AF14D03BEC8AB2473C73D25F8A482
+65329BAB1B8DADD50595CEF3D315DF66D14810D50B8D5844D808B56F53C1931C7FC6AAFE
+B1B381E4B2B12D8E47B3D87082FC9B4EB659A9C7635AF4C354CBB67683E738A4DDB1ED32
+5699FF110EFFF720AF13A02D9182FBA50E8D5BB064FE6D3C2DAC304F5A480C4FDA462977
+3C9BAF389B716E17C82D85C0EA07535C313D8633941E925292383777F40D3C6CE4D56820
+6D307AE3B40B35DB0A577180B80B839FC3D2B46AF6FC3BA824B6D438906520419B979DF9
+EB07B857521751E40369D976935DD38E23B4AD5D4CBB057824181FCD4804910B01D75496
+5550675CB17837BC6B743865D4346CCA40157FA85A099A7124492BD102BD07EC91EA1366
+3AAE01B2CAF0461D8785EFBC4276A72056918760A6EA068CA1791932AFAA55B8A2E113B2
+083CCA5661F4471D87E3DF8289B2BA872B606D8DEC5A9652802E272A19133651606BA42E
+D4A9A29175364A524A2366D07E39D27A65EF08F13935CEE56EF1DBA81FDEF393BEF6AA0A
+AD7440299706E413521ADB47897CCB483000C9E8CCFEEC3BB564F7F7E2715904D20E802A
+E483E32C85E3173C2AF19DBFE5BDB7AF47513A097C7692808D72F31401AAD2B261F80812
+AD9CDDC6DBC0041E348DA213A368BB5EC4150157A6DE2214EFBDD5B7EEA99B58A168969D
+01842F6860D97F8C8503DFB7130F2F6DC2AD0EBAF2656E21C998074061640F675B4411BB
+5C062BF29E0F8AE5A6F81370BF068E602C047398EA50F32D8EDF3FA5592EBCB4C930FDFA
+8F7F02C3A8FE863EAE57D4A39F4850F494187ACF41A6456590F814F645607B3713CC868F
+C457E934BC7F54D8D306F2676BB0BFA98573A1DF545BC258BCBDBF27FBB96C33F1F5BCF9
+2517BB5146D7BD8B2B7BF8DEA4F2E1737248C9ED1885B4AE4A9E8C89DD168F35ABD9A52A
+37E4285518FA0ADEBC1D1B9FDC470348BD65B9DDC5441EF4B5646FF0DBB2C67FB75CE0BD
+8A6609D2BCAC3402E2FD726FE016D9742437CF97882B971D97C87A6CEE8221F9D522D360
+F88A3E9DC35AE88308AB494D4BAD691BF807700F65AC6D48645255E49433F03607FD801E
+07AF8DD36783F9695D33A9E5B296B5F5A5C3042E332204562C942577ADFE9F6F9DB951DF
+36A25770138AB7F09178935A92B1F21770CFD01DF9C37F440179A4118DD851D97FC31F87
+2EED1FD3C67BFDC6A7BFEBDDACA8DA5FA18B78799BE2F8FE4604002D6E0C3680D73E5592
+213F744AFC937F79EBB60D3B163D6F0113087C7716A5FE45AAF47624D87C895A297184A1
+1B8FE5D942D12ABD4151DA672D7FECEE637378B0EABFABD3FCFF3299967CA73E8C7747EE
+77B1FC20843D00B4076594F253567CE2BEE9F189283589604BB339271051DDE3B329068F
+FDEFDDE2B0E53AC45AA572244CCDF6103BE7D413028EC0300FC0718732BC725CE1D20DF5
+A44D3B9E06C060914B1CF2EFA7E8F6BB29E9265793B9D3AED93150EE4FE7930178763956
+98ABCFD98825409166DA45EEDE235ACCEB50D1EBD22D9962A380A8CBD743B3C74D435FB7
+C492BDE5A273A04CA4EC1EC8D3B8728B6A27234030EAECCBD90F8A683E5BD5BD4EB09A2E
+7C26374A2CB93446CA506D49BED6D024898DD5FE91605E9D085C2E01CE7E8E8086947613
+5E028E3B61355A5FD18D210B735F885667C99681DEF6C1453BBC73C38873BC8D13BB3351
+54FBCB67B84409DDE2701FEB0663F1D655680C0E9FED03248CCDCB9AB132590E7B4D2D46
+0740E46982A1F408C77612D3952843261887DAD9747CC9DBBBABA172849163002AA2B035
+AFBE0C2C33152BDA97137A619BC3B27A3D8F9BFEAB4C1A288AA3CF4213AD639A6CA91231
+F80B79D5D540A05E578D9A78F4AA4DDB4CD41990FC4A3E9535E3A04164FD58AD0B68DE91
+A55718BD082F6C512326DA871A5BD2B2DEFFC27ED44E7281789177091E07ED9BC8F1FE47
+5B3EC5655CAEF8ACEF81AF203DA326F4F0B6DBF0C2A79DDC4DC1C1EA96244F76D900EEFD
+48FF96C968FC88C206FBD4F32FBD629B2E8C685309E8FB320024A67AC35C1FECF42D91B3
+E0697A30F2A28B7E918B94041AF3E69913A4903C6C8A38489D28B30818DCF743061E9284
+4243CBF837519656A26A047E7A34201A48EDFEF856CBADE38FE6116B96BC1F828320BE3A
+A3DAF56D569C82789C4EDC242DEE33DBBFE7098235F5EAF07418D954E312DC4167513E89
+26709F0F5283E23A0D6989FC2F26C43C4D94602502A0BEF96357F3C8C643B28BC5EE59B8
+DE43479DAA60DBCAD1F727E159E02D6BCF3A7803C7B2AE719E70FBB2E0B524C76867893C
+7C423D31A5E1783E7B115B051A9FB805766D04D3794F8432572436ABC1867424B533E305
+CC5FEF43CDBD500452F54CB6D6D17B93765BDC811D9CA790B95F34E65F0F76C03F37CE7F
+B46DAB0DDC39B05355EF259DF0E4943DF611A09B8F741C84B13D414DFFE8652B04042287
+03AA2E8108C0B46308770E0E5347FA5211DC63A8C709E66351506AF996B9A7E997C48049
+E6745B39D818F984984D155A3D07800540350947597FE9FBD3D444B9A9DF2A93399C0FDB
+0E82AF2F3C3D78AF4897A19754BA4A4B69C9132D9351BBFBB95B4187DB0CA39AA0A5165C
+8AD9AD758605335A343A39CAE3DA6C5C2039A273A11000703A3C5F90F60608496296FE33
+A386CFE1FB0A37B16CC13F7B549BE4130070FD4EFC19E90A76F778C3E5E485246E6E4946
+A9D477091ABB66052DA809B7041CB637E9DAEE523D5CC07AAD862E559AF41609189E7C29
+A120BB503A76499BC8B35D76DB973A0E18DFAD78875A51E9284356B51EF3C4F52859CC26
+6D23A48F5EFDC44666F18AB2BA4D2A420FA07475874A9E5C964B0196B19AC6781F6DB2E0
+DF443493514F7424153611A34F72A60E0AB1C59ECEA374FAF5AB45C9915435427F998C24
+D782F66B6D34452C22D4196B0F96B086311691F4571F5CA444D7C3CC886031AC9BBCA23A
+8B946A040FB3029F568E681C0835CA84DF313D1D930BA547F6AF1DAFD86A8B7EED70C986
+3B94EE50439716665FC55887B1011E1C61F9260AD6AC1BD0622463B8426D272039D8A4A8
+FAB8BD8475510ABE9A279D773895BC1811C078C173C3B0FEBEA0633AB91942D9AB0E90A0
+0479222A7D937F3841F0357772F9C03165DCE0F4670F7D6DE8D295C43FE6F216FA6EDDEA
+674669DE43FF3C957B5C41E12A04413B2048E21CCA14D283FD12E257AB113B42C94AE41F
+CA5F73463E2B61DDF3BA5D0C5204E61208D0614427156BB9649066690D0B96B8ADE9CEB2
+BC42B9D8A7E331F9389D5B02ABE85AAB641490F6702F59571EFF4324E52C88F9CF0719B1
+5603DF15D204F3E5BD06A71F8991501BBCADC4353413AC2104DB859C4BBB2E6A41917CD4
+4F0C0BEA99E063C73BE64207E549100EAC9F09DFEAED2FC25B964CB98191FD735BE2C3FA
+80342626F7E84CF2DB5A3261078A4787337DDEA0AFB06F8481200F4B635161C89CD9BE26
+5ABF41224B741850D38B52FA9F874E8B1E0EC2F743AD2348BB4A7BA6167A607FFE588386
+80FEDD8B3560697DF792A6C8D282D194372298C53DE4CD695984D7F7CA1016BEEBF78929
+666E1AF59E9FCDC9C951547F6DE8C86D036A4F4D6C54BEBE06C0303EB8F680B3092BD194
+1847F1F39650D806593E5CE089ECAB917D6643B1EB3DAC686A508B6215AA65F59B9C6AFD
+14F3EFFDEF39C936ACF46D9063A07349613DFC848C4DFA866C2897BA07976E813D92F7C1
+4CC072955026C4FABE23C98C3E74FCC4B3D7E034B3F75F14361D09BB4456B2B4E1B39C43
+0AA970DE8D6745E8E90E3F4048AC41D8BA10F0E35DDDAC394F5DF3584FBF0DAB0A1DA286
+0098C9B5E20B72ADCC7BED0549FBA03572E857F07CBCECC210FFEF5125968E084610637E
+6BDBD164AD2550882DED51D0A4A1D3B2A1B514CE22BCE9529FAE6F3D3D0F37B344394110
+527AE3B84D9791489FEBE49B52421BB298E23B1B9A628A05FD34A41BA48E88310D19C9E1
+9FBDF88E6336457250666D43CEB844FABE3F3F916F16613140F18BF1D92FFBA1264CA806
+F2E830EC2F4FE507E149E21E0FA43C9B73F002B02E11F897A7A0F8C1D0634E873E2C2CF6
+BAE47878F8BA2250A261E8256EAF468BCF1667D13AC76EB2E8CEE562E8F6F1102EDA6971
+11DBF7515F3B3362A106DAE0794344D587BEFE167BCAC635C74E233E6368C021467CE6AA
+36F18713D73D5738D5E39D812DDAF374926AE3C2740B5B8DA9CD14E7CC2463E523489FA0
+A4360F7C261B627302D506B8EE4F8E251C7F458F9A253D4291BD92684B4F8118DC96AB8D
+23ED1E04EE0E43C85962B6F19BE7AAE5EC26D31F783FCC84530969FCFF6CD5EFA6E4B8AB
+EFD6D7F724DC97E1FE83B74B7F7420C34370F38D4C48145C7F7C070E3D03604D4AEA1DB7
+D653885404FD5D0346917F649DAEF0F8091317BD101505FCE5631807CF53D1492274FA8C
+99CACE3F6027E89E6F6E9117FE0EA303194485D6C0BBBD5CF6D464E4D80391A7EF4DAF28
+490D8BC756CC78139B5F5D0CE259C503F6C79476DB3B1B1A593425E4E142B27493A93EA6
+53D022341E80AA5120BFBF55CAEA905649738D67B37FAF903A2EE0926EF4A4D30B1100EC
+21758A21FDE8AE669C3870BA62EB9798F6405080EFB57469D6E12A3B577CAD0A8F480156
+B937320487F9782D516F73095FA13AF786FAA349A9D5048DA0CB3632DD1A1885A7A0FDB9
+CAB849E20B98C5605670EBE5962BF9F467E08D5C772C0FBE11D32AEB9504E5D68BF60187
+17B81B575E6DC06DE8BF2EDDEB4EFE2553F0ECE688D3FB1A8F54384624A86FD7498BE947
+CE7452F475A9AF568ED0415BD380AF75314A79D98CEBD2F37FC0DCECBF367EF43DBF0047
+6FBFDE7A9AE3CBACE74AC1B766896F7A60EF5AD013783A3ADEFE11B7C08A15A966670CE7
+243982807D48BAEFE16AA1161C395B15DEA8E6FA6F191BCC9064E6B4673CC11CF620CCDA
+9AF74AF9F481E5D941AFC9B94162CBC15B6AD37D546C1B390EE6919319372602A61D6503
+64A8AC0B3406C3A35ABE4C9C72AC80AD0B9E8BD1401BE16694B5C4FA732656690DDB9E1F
+63BFC2D75EB76BE11B6D471965ABFCCA61F5EB2E3EA1582CBAA484B30995D918B057BEA5
+28B88829FE7E167179C1AD2A335F8874335E7ECDF1C3CF11052A7202238CE7385808D7E2
+D38330C945E132C59058F5CCBDC4F4DFDDEE2814F6187DFD56E966634BD00295D83D005E
+4B098F3CA6E9EC2E0619CAF1FB3FC7B43CF99ECC540EFF055F46384544E31DAD842C83B6
+F820BF9DA93BB67CA28B88661CE074862EBABFB035EE75B5D65F1FFE24B87134435BB906
+3498C87291F2EDF7BB03477573B94BA12764147AE22145DD296A2E5EE1D76E636134C5BE
+1E45805D08974B2E1F1FC37ABE236202E589798A33B9B81B0A327EF816755EC8AD549969
+090E66E3F80E9EC17EB7398A09D9853D3FD801113B15CE3CD7E0E07F7BABE87721AE170E
+AA363857E17D6C65C4C89C587459968EF23E63E7283935B65C1F98C161B8543816AB8E74
+A6A837638FF0587DC27269B1A7D6C0AA1785530835F1BA67C023E3EB53DC22C987A8D2F9
+3F6A90F9E5211011FE2BDFACF65D1D6561638E3CA1CCDFB62F9B0BF5D20771272A8D8773
+6F6EC2FF53F9F587EB44EB7549E2CE92932AFEDB1B7E23FD010FBB82FB8C42BDA1695DB8
+20F3CD8AFFC291CF5DCB278FBA07BD19982BB42DD98E64E7E4B272AFDEA76708EDD51820
+3AB1B98E81DDC36EB1E1F29DBAE91985466F17FFA226499E7009C668AE594853161CEE53
+AAF91651BA42C051F8C0B703D9D2E4C83CAD5EB5AF69046BDFE507531C9746B2287D7188
+DFFB10FCE882FE14F5B0C7168DC37C6A7A3E97C7E2E6194774342E35200B08A596A81E8C
+A8FBC91B05D1087C22F2344C6D92EA4EB5D4F8B381D7007DC1929DB8C5D7815AF560EA41
+41000982DACCC20E0CC75F8557FAAB6E61A2CA05545047FA5443737DF2CEDB906D8FBCBE
+55FAE8DD9E57D11613EAC4C7C1FF68B377B9C3DF506028524A9F29310F341E22B0C323CF
+B5B6F0F9CF2DC7CA24988BDE3A30DEF3525F0034B8A95062E43D8F4FFA5CB7CB9AD684E7
+992801072221524F9B719D100F282E7298A3DB6F6943DD86000E5E74E7EDB62A926C3D38
+EAC0BE793FC76AD3D7B1A86E4A03E97111602D5B2E01F11E462BBFD857E94EE72809EB59
+8A41649454CD7A2A77DF628FD80C229FF20566EF36E7B64CA7FAADF2C022BC7325345A3F
+73C1BC0CE06C20A1E7A5D3B0907A37AB93BB32612568DFDA234544E452948D2AA9A013F0
+328B1B4F947276A174C076793926FD8D7CC204B6D96F7E360F9CD35C1781BBD67F873A92
+F895101C187C316AAEC211E7E36D99DD021D6406ECC1BE3440962344E6763BF9029CD9A9
+75508E942ADAD5242926274BB3929500D4C1C8BDC3C4F88A8DE9CB3DD61F248E5CB57D8A
+688C5AF0764DE20E6747776A53C384DF251B3456BDBEC25AA903C9BD66A5B1FA3CA513A8
+09CAE4E0C169A4C34E45CB7EC707F14B0EB1CA72A796A5D16BD9E7FF573D08FEB27873FA
+79762265694B354E756EFF8DF96520516F40E98768568C8F0CC0FE63351773E14D5EE849
+E241663CCABEE90363E60A0DAC99A90C14EE249ACADD40FA5FE8E3FBE0281E8FF465FBD9
+9578F88E301C2A99A50EB3A383FECE8D4BC6D661771E45AEF16C903EEF127DB5EB81DE5D
+2717EF3D015742FBBCA6B2EA82A8C2B2A63405B69448C4C9EB150D00723768763C14968B
+C994C91EF2FD46692A175FE1D118E75FFE5E480469E99D7F3A4033F78EE02028224EC649
+FD43687BFF2EBF8DB4DB66C06B9F7C19E130C21AE459C6E51C18CA2E0BCFEA46C0601BD9
+667FE8A432D968954365F89ABB3F495B510DBFDBEFF31E64DCCA570B8F6795309F3F9110
+7539CC4D8BE7120B8ED965E78FD85EB660E74F739068BBF237E4D29E34B2A8CFA3C88788
+5C99EC5F5A803F9F1A05762A73AF9C1B07513D3E313E50E8C17F5535E37E09B946ADA102
+38F0968FB712E9DCB231C43717FF59597281DDC97281B3106B216DB8D208582F977F067C
+75E9E99B5C418E716DEFBC8B8430E00FB9B0FAED049EC5DAA7C85CB6BB0F338A63D8C434
+93E7F2A521B04FA7947663C262E4615779DDC87D7F402DC36807AEAE7C04E7DD65FC4575
+1C9EB4357EF409E0E2E2129FA8B3DB44FFF5CEE052F938A4BD0EB50FE0F928D1CBDB8345
+D0AC8CF98E4B76BFDDE2D5D03B5B72E65FB6AEC904CA23037D4A83E2B31B027CF3C84CCC
+5234492E7978378A049638CE9A91A192010543B1D889B4DFC3BAD338D5DBCDC364821344
+047D3A81A0F89226625C1940977C7610FFE141687EAF3BFE07330F0A64EF057723B8A6F4
+0403B4976269597272B65D30E7C4EE683A3AFD31C9D3ED0F6920A21D876E650FBAF95415
+98B28C60988031CAD7D42CCF07ACD398672200BE125107D7CBFF1435679338EBDB339DCC
+FF18D8864FE2BB73813E17BC5807A30B75595FC1D3A4776124EF4228C8FC1ABBC1C75C41
+C7774D0F2BD60B7DE090A9E1BBDC31970C2CAB4CC0CA8CB37DA6465096A8772E8FFCE321
+F6A50F4BB7F584208B29D86A76774B460308062393571BA2A2562E5FA1D2E6D959D2EDA2
+A38FE73FBAD7864E439D51B781DE7F291058EED243DD58CAF4CF8F98EEF1F6C211C20F82
+F055B589FBACD597F50ED850C52B126498DF0D9AA8CD03554BA87CAFF3CC2F0F211FE4C8
+AA0FBBD6116A2C3524B97F65F58098B105D034D5118BC76E5214463C177E5EAB2F0E57FE
+6D5F1D8419AA231B2F3EDB5D9616A994D327D69B37B97398F6DF491BAF147CDC6CEF3E01
+0AC9EEC078E7668528E85BCC8589C2FA832AE3C37D194480A3F9C77ED33C2519F5A2424B
+1942B9BE6745B105C0F6A503D06327ABB98DB831758CCD63B9C6C5FD09A149C151BD73F8
+801DB89721251ABF057D094CCD2D5BAA8DBE17913CA35830A48A86D989BDF48221392530
+8A8E9976CEFFEF79D12E4C83D13D1C3CEDC27FFEDCD2206DDFB0EEB358B19D1988509F6E
+B5C69E17A039944D0C1DF81312377B6A314924706937F052C17EEEE513065FA591A3968E
+B957F837C5FE888840399436F7EB973FECEB535EB6D4EB2FCE5D9F21D33B1FFC9D0FC320
+CD06E9533C6627C42D4B23F62076E28D2DD8C757A5A79138AD4EFB95C878562E29939553
+D0BDF03FA604B1DAE5047D9B1ED2D641E14B44AD2A1F02B794180789A3F4FF423534827F
+4EC7317C85A41897E3DE30EB410C959516B0D746FDA839A63ADA4C61B01FB173BF34BDD3
+5AB3F4B03619FD243F66824EBE11C17FB209EF685BC8054CFA32AF652AFBDF1779E909D0
+863F027F23437418B82E4C9160EE05DF5B46C2F929A322B6181CFF7207DDC5829D4E6362
+63BF7BCCF10091F0D437CAF7C885E9FA20F000EB04B13B10579DD6B3287DDDAA92299B1B
+110F430B120B832E1BD8E398C202F55F13B816BB272FE160C9998523B95D1E6BC64846D3
+B31227F020232C08CF85B7F69F59623CF3C809A21B88618DA8FB0433A4DB4C622F3103F9
+67757E6F9F7BB8A081DA3F86B9B3BE0815C167026C318C3A2470BE70EDEBD2C1C080FDCD
+61B148B8E2ADF2B7BF5DB295FFFB5D51A5C22E790A24651E6527BF1BF074C6CA7FC972F7
+FC52705B9F3DDDDE639F58DE89A22D724C8155ED2EDFB6FE7E0B75FDCF9404638255ECC9
+2849666F33ABC4CE4BC774307D498249BA805160EF9D64AEDFCBBA1114258540BA016E53
+2B73B6CA7EA670FD209FA2637E466F9D8439DEB6ECD4C2F2912066ECBDF7C9F26397FE8D
+19C9E7CA90CCB4B101AF6DD01543F6F3B654D8CB7AC0338AC77193D37AB2393E7F00D985
+030E3454073710762806E6CAED7FB2FD8BD3A20E03FBEE75C3B58CB45C6F7982A7E92419
+83DB6D20FD53B6BBBCBA098420216EF3A4960D1A5BC0649E9CA9F55A6C5EFCAF19E502A0
+A33DD80094487FCA1F3064FFCD063E0715ECF20DEF56E7D9855EE8C9ADD5BF0411BC5F6C
+167B45F07D0CC12B020C9AC57F2011DC4BB096DEAF83F097A3CD044D121ED17FE874D8A8
+25B625247DC3B2505AB9516F99E6304327B11C69B15C2FFCF1090949F760CEED848FC2E1
+45EAF5F6DB2E7AA26364EBF34975350ED6C6BF444FF9070812A167F389E5AD8F42F1D56B
+2B8B7E51DEE5DA4834253CFC4CD4F188AECDA46B9CCFF81D4AE5E5915CF102A32FBEF07C
+959FBD6A3F0C2D1B6E1083DDDD17D133B3A86FB8BC7FFE6B1B441B2515619F145AB19F93
+B8FBA57275AF80723E27D9C15E5841A3B0DB16E07A78755D1D0DECA5F3741C9DD4F52F79
+4C36215F0AABFA3F366EC9EA5DBD9F126195DB73F1973A0C99AF94E4DBC641320F689457
+5BE7E8DD1C3769EACD332A264C3FD9641A0C758AAA93262C2C964A1FE53BD894770AE577
+EBCD7B4BB3731C731AB29323CF2B050735BF2CE83873DB6689F8ADDBC9B45DC56F7AC2C1
+1EB23E9621010B574ED1F3493FE830AFC0D158FDF31CC170FF36B21F09DF0D82D681D3A9
+46451F49546224BE55E025B457C63976C4BE0167F51E58622C9694F1F54E55A8321593AF
+32DCD90C064B004417B3FD3919A3371156ACED01F1D5E7C2C7771ED197CA128078F3883C
+37857E0057ACDBC9E15AD245D7D05007DE604BD329AE00E1D98938F97852A5AA5E557242
+35CDAD2F42E06EF7E14A6C2D5B10D519C992DE65A3E3919A98DA4A09A2F0EFE228354D3D
+062492B17513FE541FC470F5EC5365757C550A8776BF013FBCEC12A8159FD62BA2B77A48
+34EACAE35B878EC3808DA0F15C8C84F543DAFCA5A4ABFED956875E34F9F38CE72AB4FF5D
+29E64ACF7C94B422D3BADB1CD2C3A2F15CF7D80AE47C54850853B33017E22620A4C6E798
+D9403C14529C16E8A3E82E0151015336B76942AD662795E1E6845FA6F2DC2FE50BD276B1
+DC0FA25ADEF23E9A1720F4B391788E27CE035A96B035D28585B64AB9B020A3BA31C908C8
+74707D3D484F3C035A9F472851853A21B4E52B4911BC1A7A9D57027FCBDFCA0D53DCC4B0
+C08ED86B86A834B7D1114AABFABF44379760660BC8E40DE789F2712CB67412E9CA69E27A
+CF0ECB2DF3BB3428722177A5E884CEC0EDE4A009E1D21E2B83134712A47279723909987B
+2038080E45A46920FECE4B4B490F732CB7F80ABB0539BBF26D6A687757643C1A19A20D8D
+909FCA4721435A948CDD4503F3E473195A6F06530B11AA6023743DD8B6E82D8BCDBC1156
+AAF5EDE0F208416B29CDEC912B04015A13802B02D4741C1368DCC42D05A0D31626803D76
+084D99DFDA81FD62392F6C735E87D4DC8D11A3C09E4DDD7A561F60C711A4EF173836A406
+8B1CBD65A5A6755ABD88EB557C53D1C23F07558F220E8BC415B4DB9E6F4342161DAA84C3
+148E39EACEE05C47C483025418A0BD0F664BE19D1E0488EBBAEBFD4F383900DEE8958382
+DC9AADE76D829D3C32D2C6DF60DEFE8EC19EA8A8B627BA2071260A679DF4BF56E88619AE
+0A13D5EFCAA8360FCF34AE36D8132334C1F8FDFC23C730A9690B8F6AAEDB2D790660DC69
+EA7692CEE97EA2A9F646CC4EB05E05FFB0699E6E5C9FFB18180EDBF35123A7ACFD822C6B
+061A8CBCCA14F3B3DE19E78088551F0A83864B0F4B19EEDEA6E3B9BEF09ACFA18072A3C9
+813409939F19E2634BEC54C773A1436F3E8F46B9F936FCBD78B7ED1B4F82DD05957E9B5C
+4B2F9D88560EB971CA51D229B3F6D6A7436ABC8F629C0F9B83E92854B9455067256C326C
+4AC8863D7495FBC8B0DCE6D03AEC6FF0491644291A3CBE62FD00D790EFA4CB5267EDF02C
+4787C8A244B63E65383695C60CC0A06B44E7EFED06FA3E8EAC4EE53A9CA5C5E1959FEC7A
+9F773A7E584D29BEC25C80B68A1759029E18DDACCBCDB58FF7C2CD9126B1286185240042
+67E4536307CA774D94518CE20CBD2FB03C340010ECAE2B31D6A69EB3165BB2A6CFA36258
+2C3344491829AD8C7B013AA47AD7B17FBC2B4D4EE7E8FF8DC0FA25E43BD0D21229005A4F
+EC1B0539D2C7A7F4B13515BCF3124189338020C12FCDE974672CB97128B576C6464A3320
+9EA84E51DCD39721A7DAB2E682647707DE6304413F50122D5499D22CDB73378141AFC334
+84033A4ADF83F0F265E24EB1D6C35617411FA590119270FE3FF23169678912219FFFBDAA
+DAC377A518998265ABE9C39A06ACB90C3C2A755AD6B82B8E69DD3609B5234C258B5C9791
+F1D9108A883A4A02372C09EE66F5765881DA8FFF38D6A6063A573598F9382CEBA58DB3F0
+BBC8221FF82AEDA71A6524080E5823456884FF6F0E63A4413A0C306F998B379BB60F9961
+D6338E6D8C4F8D66A068ABFEA82D90D3C0C76ECF537C252F2E63CE456220DAF3F44921CE
+4FF87AAB2A62457D14AAD95810C7512EE42BDA1AA234D9502BD3EE797E5B9E18C7EB94F8
+7A456AA41F43C4AB49770277E0C449964269A6DB7539B2B3FB34D7D94AFA4D9CC06E8004
+C036EC42315BA2B55409FB0727A46B0FFC1E28E348D472ADD4204CD8A9FB8B428D8596FC
+077916D436572232EB8820EDD3C59B0612564BE2C83B4C19E6C8B31D8E3DE7E7CBFA79F7
+89D89E196DD0AD9E0D278FD030D1ED4116F7314CA6996D65497ABC0FFB1D461C508423E1
+4522CDF9F580058B7B289AF90DE72EE280D40B90DF51FD5B4BD1C998645EC25CDF37ED2B
+49360DAF6BD82872847E1598C26A5C9CE157DA79D983142A7DD0C2B2A7FA52FDFE318265
+2E76BB99442A4DAC96310A3CCF602E1F6AA9B088453FFCF4D7CD8338E18607695541BC40
+38337C656F7ED157809506B4DFF442A31E3B23AA5B24ACB4AC1B0B1831A3EB1DEAA42E43
+35052AA2755A92B138E7C6E896487298BB9381CA9ADD2B9ACF32B7BEDB170AEDE458703C
+3EF10430A1B439AE853D8DB6D9062947303FE575EB06677B1BF8EFEDB650E335F3FF2A2F
+8FBE7C7B3FB898E9397DCEBFF0EA847A32084F50A8400445006BE9E808CAB3C249EB4399
+990B0961E255DC4DFF757296BE011805B37ACBCF3F66FCA6B90AA21D22152D6594D12613
+B4FD4EF0B7D71553BDF56274B0478ACC533C2EF03B0233A4532B3FF543371EBB1F525A8C
+B6E3E89C095B41A02EDE74792E9DC339EF61F0AB011B1C36CB8653EFA89EF78CF7F0F462
+423D196B0E4C3949172AC79E94C9AD8B96F7DE83F37670543A2C71F462A1BE2C883177A7
+075CB0250D12119F2C20F1CA4EFAF7A4AD2530082A6175B9156215D6ABD12A62F6F7EAD9
+1696AF780BA6D08CA6343C49E72CB6D33F2B5851C4E2669FC1CB8ECDD11D0B6D36D2A40C
+304E90BDBF3F68D68D44A1A4DF437DC78D134B2164DABFAE0601AB00AD608DF8485E3E1E
+C08AB4557615E3C573CCFE04B230F97371F7EDA46A0912F33A5D85F23D2AE310F8014071
+26CB382765F2AD0D72713D5FF48E090F5502ABF99019A25B47CB33A6096C6DDA92AE52A8
+6B68F75935ACB8A5428314515CFA409294A7AC86BD0BC255BD737C2D3E7213F040C47505
+86CD077F56913DE8E25CEDE28119EB18B6A1CEFB616FE0511291AB6F3F92FE8A70DE9357
+C1347666B65974D7E6AAD71997B30E4D818CA4A5EFA35DA75292C7A0169E49766C0789D9
+D47D671C106F93BA208FB6F8AF365D4B1978A90F7935D83BB4F1B105F4EEA07284452716
+8F890AD169B51A129EE1AF8A43D171B19AF3A4CC5C2D5064050D423C054B73A899E94B6E
+9BBB674D868B62AAC16AD944622EE339A33DD7DB0292B7D264B498181F11C94B82811B37
+08362CC203F26ED1A6CBC7D4499B8EC08BFC085A3954F54EDA33C6205DE872F3E56B4891
+A1AC52BC183248DB8A531067A3D902AA74CD21CCF09799FBEDDDE333CF2810E414609063
+7C1FB61C15C0D2F4087D0CD9BD7B5F13EF541EC42EA1289503CAFE22630448902F720857
+A6A7E8875DA8D6DDC603D828260A29A328F5C91DB72121F6B2851BB889E94C0864EBCC77
+E68504A64F6CCE994697D29FA375749EE27A8A1905F39DD0F3D341E68BB325FE20D66941
+8E86417E3A2ABF2ED75B69CCA92061CC4E89B3D2986EEF1A87A8239BC85568E7D9FDA91E
+DB9DD9A7646DFA276782D9C80A1550374CB2B0F08D50672DFC9EDD55FF9F199109001F4E
+50AF6A0C0696B9E9F03DCC84072EF15DD5D6783D4D2D57090D95797C3BDDC0A9F051C69C
+741090BB2D6D3FE141DA9579FE38749D965CBD407D2B3DC665B9DDADB42A6A6B357A52DA
+FFA416F5196BD01B21D43AEA96D736CC66329627C6EE066B8781040C29D8B9BB980FEB15
+475D82D81959C96CF867157B30C605DA7DD1C66F577926B2770EA5B57E673474B2DA0355
+2C44DC36378D1C2D263142435D891D68B083761B7129D29A5C4921580EC6B7AB957B43CB
+A4CC50FA997CC3EBE35DFE2A968579623707A8E9E12CFFB80D0732DA07FAD6A9E9A36351
+16C02BAFA0ABE867896A47C54217C7F1CF2D3C24C1173A67F02A485CD46BB2306CEDB825
+9FB7C513F2F646113CCA056BBF917610BF3000570634D1BA020A7879A9836107DEC2F0B7
+4C9BB680FED333D011D65EBD941C993DDC62888450A9587971A42F96DCE221B0AFB4CF30
+A1D8F055B2D6D71DF4C6CC87920A07B439CD9EAD74A8119A9CE7418AD1B56E6B20769F93
+D974C2B0B1B6CA0B27344A4DE1DB0A2378C274ED5BCEE5F87D8D449B981225E45C1F7D52
+916FBEBD28E4A38581B02CA3DC7C9C44BC355150C19BCAB45D6116D6161DCD8680E3AC72
+73583CF76F49293A7F39A24EE22798FA526689623BAA5EF968E120EEE260D0CB148E3251
+1FC9AB91C255F156466DE0E6A002F968440F48BB6DEB417BF72DF9E1CCBE5969720D63A6
+44ED4B4F2FDF7C727BE7C9928C3F660A72360F238CAA484EB3F29C069CA6C1A4FDCEAD37
+5A9128B554E9834684FBAF84E1F2576BF3DB40E9DA06D0A562F3CBE3B767E4EDCD14A336
+832BB2D0E05552B9E59A2E820D7AAAB81BD54EA2308DB429C6F68937214AB61681FBF136
+5F16A4F90AE914F39EDB5CA8D5D9596F129C9E00F627D896238E50CDF801AAABC343D3DE
+DF61EE78F691FC4CBA2C783E2F55F3073DF59E6EAFBC2501B3AD4788AE7FB3037F9102E3
+0668804ED494A6B8278F4CD908B65406CA4C1360E89E60136F61C4E746B9A2FA27ACBC3E
+4A4B1B2706706C575111629162FA02CA9BC81DE654F7E7CBE9D5152EFDF6F36248A07F01
+105D0A1C78BC61FF81ED0648443AE0830D82654E014EB491786C58B04F66AF5D91EFD323
+9E1CD888C6C07F8F433408F2594AF990574CEB00EC548F905E383CDC712AFB003F241B1A
+7A535CDCD4BBF3DA71738F6ED04DCA03DFF91008AC3C38F16ECF575C37E16523070C57E4
+C5550FA4D3685C661D6D1FDDABCE2981A5D271CF355D025F2DBAC7D2DD166AAB9B76EB12
+30E3BBA4E2538F4A609C3E552AFAC919ECCE55E57546DEBDAF65F2B7947E9768F2BEF5F5
+CEC556B59C005A5CA454E961C4377B6C6C700A12F46A32839262AD282DF2CCDF9DF25ECF
+6D24DC0E9ACDB172689674C254D98A740ACF9D1B9C62CF66E373AF0BE0BB4DC623B2520C
+D79E9EEC36AA404396060A7F8D5330C28A11F29AEC4FB5C943B24C57CF7CB9A3177FFE70
+48001B539F2EFD4BB10E6EB9CCE7690C02585E4A0E92C74FDA894DDEE91660F58820E535
+6964960F17E2312F5CCEED967380E4C66C0F04B350495C8F0D2E1414CE8FB40DC702D4E4
+A7E82CB9CD5464DE97787AA0995A87C1B0C9884D133F955B371E8378008A7BC994103AC3
+B2B0800CCC773B461E328AE81D04D6FA21D0140D4592D8662B96A34C7E6119997B5630AA
+F6F4436CD296BF23B2AEA45A9D03FC04A96A82B52B4F9463700839FBD2F1B715EDFDCDBE
+B94116CF604136FA26BAFFE9F97AD285A1B0715E58E6754CCCAF007C0DA14F23AE3CDDEE
+3A36BE9A8405EF1FADEA474C8F75B54922DEDB8845A57C5BB8E3F0FF226A70D4E7886545
+E8AFCA9C777994B7F97C97EBEEFB253AA5CE0B88DDE6DB393764B9F74D567BC5496ED827
+B9D0191D880E9AD0AAFC258211AE1FFF13078F741E4E545DFE44BBA3DA4DD957C9540C66
+B3F594421EDAEF0B15CD2EC40C7BDC2DF856BE33B76CEF26F221B94F595F78225D4AC4D9
+E21EEC634325EA668AA997116974BDD7FFD00A34EA42BAB1AC235527246054342BDF7991
+560B8CA8B16ABC38424EDFACDA3206A9D263EFB2E92DF9FB9E679AE33139B0B2E51103F3
+5EDA3266774F5BFCE1E52271967459D8BA5394E62CB386988F09F4FD05DAFD613BA605B2
+D84F9246E171DA1C48313B2242565BECE909FD6376698B294253251329411150207DD568
+5D01103C3BE4EE7A6FE12A82EB1D64D6321A0BC78E256D9B6D456BB47A72757A38E96432
+3034E43D2954AA9E053DDEF5C4657EA611B22A205AF06DE92E03DFF9AA4B35BC58D01DEB
+CCD6A069C646DEACE5C5D67323B47AB1A9F73A4D0909E24A434DA900FAEA03BCCCB9F435
+BA03D9103C6D3A3A3CFBA8784D6451CDD42BC5B6F697BD7EB34515BA1CBDF5C8E658759C
+07DFFB1D4E8F70A4E77A9D2E26D196C5F865821C3956B73BCCBF26ED69AC4AC98B7D6155
+E23405293CCFC1932E679FBDAA98BF6968D0B8DD06F1A905303E9D351E907C08866D7809
+4D843B0B2A9F4ECA2E837BA6D2EC81A1232D777E377A5CA6B877C5887D0DA9DDE50EB215
+F1FD5B30513B01D4DE066D920B1849EFB6B881A1FF5F81A43FB91EAE477D5700B0BE9B21
+57370E987AEA55C7DC12BF16AAF9CEC6030666E5E4E5AC2DC32DE1DC0059F302201E2D17
+A90C5B652FAC44795C8AE6F7CDFF647E6D26A598546E892A374B25460A7950A1C19ADD39
+5BC054CA07F60F1CAC44E7A919533806D504F0793C710B8CA6741D90A65C04FEDD73824B
+0C8C2A292EB457E93E3E4DDB7DC4424861E9A15D47D61E70D17F3C44071B19539DB0ADD9
+B4A44DB8BDD2EB70743C6B1CAE7AFA82719776CD21E5DF79279EADD2FEC2799EAA124F7E
+CA45C898A1559655DED659E337B092ADBAAFC953F04A1D2C5469A4CF53928C34BA3614D4
+9E5BB4D6A1DE8187D138FCCE63FF677B75E1B1F309157B45498603972518A8B5003B882B
+74AC3611DE11414C1AA15A787A74F736D5936A286B94EBC03750FC890F7EDFBC158AB852
+6E184BE6C379EB82C704FB2DF543A7A092F17964B5E3FACFFFB86CF5B0BC99397F504BEA
+1392C2AB7D49E7E9465341DD97BBED212446E72A4B05935D7D7DA073940FD181977D02E3
+D490250C99C1D361A5CA19D1356F87FF617A7E05E33E4BD00DE5D44AA5EF4F56CB423C35
+2669F53C70E326AD65B321D5EFFCD56EF79C1AD2EF65CDDC788D8BBCC1D3934820F5A967
+49DA63F45363133808C007D806B82D6CB572B284EA5C5C4A9C9E84D419D55550FBDD2BC7
+EA54BDD78A94B1563983B6E6321EC6BD3D82AD8CC7254B1CC4C1550EE48AAFDD8E9F183F
+9E7F02BE417FE7CDD3392D3E06B945AA1F5E7E5BA3CCF947F813B61D072FDB463049C0D7
+3C47496F85975D7D012D4643DF41A06F8FB26B619B267E1437F7BC7E74BA959B65BCA76C
+28715896E69ED0534297392D141C67D10F2BCDD96212EBF4B4C237AFEA0DD326D5EB1D16
+F7AA85CC2229A288D24195398438829D28A5345B9A001353A0D46F38D602311BFA565EED
+38F8EE2C0AA1F9DF9AEEC714C31B7AB3DF76FB809BDE6E652C08DDF55EF1CBF5B9E80064
+28D57DB398B10A561067EB625696E20C98994D451C037353CA9D1996328C7726CF1391F6
+F950D61E8C8E09EBC277DCDD09149E050B8502587B723CAAFE419E4BF6F12A1B31B31143
+0BD820D2CDB85903E27AEE5DAA41728122C5FD189BEABA887D0DA9DDF4EB756B9B2CC71F
+D579661F794380FB19AAD70D30349138DFA2BD9955127C403E51E23F8B0DBD4A879CE7FB
+3708C05EA8186389E69D80F4B7D0853E4988B2A5467F9FCD19099F545496B4B71388191B
+3710C8785D8407910C9019558D84D26B665E97902B2CF4622A9BF27F7E21C1C1789F9A36
+E4728BFBDC025C43FFC0C56F540D8EAECFC8E118B2E6152867BD1B01F198F458DCD4D637
+3ADC5EC55675E47B739C5955E9468B8DB6CEF9B7F4B79ECE8AAC048544F078106D3A9770
+EBA0054AF5C726EEC7C4996B264016F00CD4171D3983D5A71B9162263EC9F597638599DB
+4FB4AF8F392EB3B4E05796F855C67A9DA28F3301D7A753104D13B83ECDECCC47C3A9DFA4
+1F4992CDB1FE7F2A5E013716AE6AC6F77511C7DCFE24B2C8E8BB501B58937B4E9CF73714
+1B1A2504A3CAA40641A5D3C8694B2F0AA900C061265F893F1969066E9B7BE79675200837
+FE958E74CEF9C2FA846BAE2382907C2FAC7E513C3ED34E433AC3B89106EA21AF5A433F82
+4AAF46AD2CEDFA141FAAAC00DBCD5E20B374F265C7781C878892BC2DF8DF183CEAA3EF2E
+144745186C8CF9A90DAE167578E156B697F60DC5D38DFB1D4C86FFF5FF4C603725CDFD06
+670B8D775D944E82D2BC33A183612A66696467A08C87E82A789B241649301B87D4BC8B51
+C76C15C731515A7B54A8B71C30E5A90F44762F0E7B49718C87721C633B0C23E62C5950A2
+5A865AF77813CA8269430C90F1F7264865A256F3EA207823602311ADE698C003793E41CF
+1BE886DED48F65D525BA7B0A929F04DAA5C93D5F4816BB0D0F56339659DFAA3B61E6FC77
+9AD8F8C1CFC9D086A81BAC222B7A97CE99361D0A0D2B08AE5086B8EEC55467E669C4AE77
+97CF7F8CD9DC64E72A287D4976845FD236F1465B9716CA4F7E0176B90D645E6F2B06054C
+EFEC2DB0613F477F88147C6BC056248DCB36A69180E81777F787F41B220C6407EB421450
+C0F9B50D2CDE0AAB5C08007073BC13BABA4532BD935B2366F1D5FC26F90C7F19279D023A
+B4321A6BEC3A003A4CF9968E5810A6BE834614E9D49BA55B578A9ECB0887BA2B77028BCE
+8B874FFFEDA3803DB51EAF617BAB1101F589B36BF6A1C62D39412A5F73E9D7FBF851AEF2
+AF26F150F82A66B1DDCA9843041EED21FE5915E6F28340DF9860DD546ADDE82050255B38
+D9DA47FBEBE0A2036D210FFDEA698D61A0248FB1BE182326F31C1369A61A5CD6A4CBBE41
+DCC54EC8A29434466085CFBAEA243F7C0FD66D5871FDBA34856233006A9479F76EBE6820
+CFBDF24C5BBB06AC4EE144E8AB86A53945C080915052B40629003E535096354A818B9A68
+0B2525C1DBDBCF4E3AFCD638152F3BCE9A472E665592A6344E6E0359FA832B1D9D33F3A7
+48C07369759E8DFA693712E2C851EE51DCECE005821BC5AB53B513A240B843795D6177A3
+37F8F219773A7B73B545D70B7A79735182E6C057706116233FFA0702022DB994891ADA34
+A737726803CBF7DE2F286C0C9E831FB4FFBB9F8DBCD32EB8050F97F2C96CB42873E147C4
+B233055606175D7AEEB9C36F5E1A9078FB897B874E9E11DBB09F3953C460DBCCD4D4C3E3
+23D8884D5DBF8EC395892AC05983E2CB7DCD6FA5B571847D60BBDADE0725EBFAE9D028A5
+58F26D631C1007208321C3B367AFD37EE4B32310610A4569F7214F480650105B080CE662
+106A0511AC252C0425E8124E87C9F6268A064C7DE7F8D76EBDC69AC5400A7701D465689B
+171562855165A0D4E5F471CA83D35A640CDC0269E7BF028E06D3F5E8C5F92E1453D4AEC1
+9C832FCA716A5D08E0BEB5768F9439CA17AF287D6F13787D2EFC6F0C7C65F6503417596E
+8255B6353EFBFCAF93BFAFF20C2B56CC33D71B1B9915DCC4851D83FED2EE18F7C4C91C63
+8CA27B408C2B1FB9F7B1299E9B85D6B9B567F512799D8D5F86DC6848C38A88797DBE9EA6
+18A70AD976E0229356022B653F1C4ABB6C201C1D25E3456D276C9632903EE3E5C61274E9
+E09CECB945F0528E003148B51EC67FB195A6820F695117C69ACAEA7ACDACC39C897FC5E5
+BDC1AA768402DFA491BB065E720A9B886D65317F49A0B744A41C4752B689F0F1C7B229EB
+6FFA6A16AB50E28A8BFF98D276C165B57224740AB0C92110C233AB415A47ECC8F20B932D
+47AFECB638B37EB8322D17924CA325CA6CBBE80DC6955208D93057B6574920BF252E0A25
+A6442F99C16A71BB54C286DAA18F3C6D160AE0D4DA91BA9DA07EF8325FB21862CD2ADBCD
+27467F1DE7ACB49ED7C217074A0ED1316973937A90E98CAF04F93D02CC16F763555867A8
+E9B0D5D878FFB3A5C5615D50E4222E44B25509110F463E0528A0DD0AEA7FBAD64BF599ED
+B9F257E208F1BE4EBA7E7D4DB037E577310115CA41078DA35B5E0B26665EB18F60DB2B26
+E9404BDE1911D4DE4AB7B35FC1A1779DB3A898BA3D3FFBF295D3EC2BDDC3E3E899F9EC8F
+404FF4C587800D025605C8B68C0AD577A9433E101FBDB4AC035F6CAFA964DCEA2EA6EC67
+BADAD9D2EF3F31EF48386164D65D9C5C7D53A59B09461ECB9B3EEA0A8A96AA80F0FE2B7E
+33B92A456973D4DA7B3B244D8C837FB305B82A16F815500AA2751546975CC3A6D10BD551
+820D3040A5A698702C815DBF5423A47BCA15168F15652A52709BF5467A4034DF849B8A78
+031D82EDCD0C7C7FB5378D5E2BA7F13838D11BF9A9A573AE04E14CAB24F9C6B1252FA98E
+DB078E00F09C10383A468DAD39CC501D08B7DE1377D254D64BF87DC599483AC9CBB5349F
+C3E895B0A0ED23AD22E1DEC80AD2C74B22487B32AA150DFC992CCC2D1399EFECE458BADF
+6E82009036359918C4DFC87A54EF90642CB47FFAB7D5806F1C6FA81C73C43D73D803F498
+23955AA800CDE266D447AF81F6408C11B4806EDF0153482C468FE39C55E63562FB1F7D54
+5B0FED1A01A99843BA64F58FF6AFDABCA9E8F99344767FABDC70659FFF1BF0472A5F4259
+47144FFE76272A514A6955227CCD79F831BFB2A37E22C34CEC03BF30EC15065A19204E73
+BA57F9BF7765AE9111F1828E1343DE6CCDE845E02BD0DCCE8EE20BD50FEDEAB8466C7060
+51AC89FCB903477BC48D0CC0300D43A055345C465BD58A29A869882820DBDDDA3877D246
+D78AB87529D62C582836765CA51E08C7405387857A2D207AFD97757DEE78164201859331
+D12636BC373DCD9F3ACBE8F771CC371484774D9D82E633D0CEDB825FA7BBE1B1D8A3DE4C
+53CE505A092EC8A1356D7CAFB9E92545D395DC3B1316A657DC5874A09417A4D9A985ED3E
+D8E99F95D16809E896FC0714B72F208D559E8C4E03CAB1CB798CB34B0432A53136883906
+997C344EC5751159ADBC704F93E3C423176B685EB71247621B0DA0C4437D9A93E3A9B195
+6E0B4469932C07AFD3187FDD3EB8752730F8EEAF076E90415FE2CA4EBB15BB6B7F694FFA
+72F497D122D0AE3875CB6981AC56EEADF2A5F51B0B7C138F9EB4AA0FB6BADE2BA17ABD30
+90DEACB6AF1AE734880C06EF060730CE6F9F6F75A62BE528F1391C4BDCEED30076CF69A6
+407C50BD35D22B1F95110032DF26FB562E9DB521E89D9447DC129B07CEF2FA89F435291D
+BBE50449CD2B726066C9B2F914B465C97C6DAD43F906F506758F74EE2DD91224922EB14B
+B7266342B9F099DE05D0419807021C5C8A82334E9B53ABAD7269D16AAC35D46F1B1AD2EC
+F45C42288EC9801F4C1172B713EEBA979542D0B532D037A77554A2BDF0EECE91A3B2C45F
+4755CF9AE071FEB4FE377270695C42AF5DFF1A1AAF5468A91FA7D5DB458FFFE5B19EFB2C
+2C867F9CEFC7773C44FAD072D4C9303CC799D349E57BEF3DA327A7C8D89A1ECF04D37770
+A5032CD3B079C3AE6CADA618A9B524F65AA4B29E1F32FA202E1F72D0D4E03D588351FAE3
+03938C05E8C8AE40B3964AD586CAC8ABE4B20A7640267F283D6ACF3F15A4C415C8C485A8
+F2254DFA6784CD3515F3ABA12732B350A696EF38A73068CC471E055BDA1E8A7CC1204F06
+3D3E38BCDD4D50481F477DB1239791F62C5C29DE5982467BD53C3AB3A4FAD04DB5B14331
+149C7BC6349B16259B2B76231442F4D7ABA5E5ED7CCD68C5C1E5023B999749EF28163D7C
+8F808E4E7A5C75B86C1F082BDE89340F9848E96B0CA7012CDE9364B86CC24C822A7F6063
+2C4FF37F50FF395BDFBB4331CD33359F6E8E2949993BF65788D21BE45C36C3D5C0AB2C24
+C9CB5538115E496705B3B97C6649C2124AD353C0CF730C1B7E2CACF015909D939D71C91F
+F64A818E3BA723786D2731FCBD9EC146C11D3BC1080337B2B53A4EC4ED6C7E3FF5EEC99A
+33C162E752F4514F3B5732E2F921A648EE94220CDC3A0421126B4F1759F894FD5970338A
+9429AB81B78361383F66DB049EAE101AFB7379EB765D2DAAAA21C31E3F4B53FD218C9CB0
+08676424FE81517E95C0C7E413E3207532F29E2BAF040B3604C142BC89C66981C59DA019
+7A1CEC13D274D125EAB91E6670BC033FF9810B91C037110DBDB2F187B6975D3F2677790D
+98D968D1256CE55B718623B8F8CDA81F34496BCBBA0E68818F2007EC1CB1C6349FC9E0E6
+7DECA43748F9B1BE7031915D4E0997BC7FFFA3213CD4FE4DA314AE27FBC25AA31151215F
+38BA88CF94B45C3C9E67E0D1E4625C01EB6BF5BC5C8CC6FE263B7D7C4D38D6615341E834
+101BD909EF9E715C2DE6444044CD547EA189FBF5195AEEAB4F14F6B6178F21499A0ED4ED
+DED3FB186AFC1B3FD1AAC53ECDBF1FEC5EFCF2D7FA9553D0AC360472DB8920DE36DCC034
+A435C660632C143EE88D802BA6F3E5C48301E0B60CBFDFF80D5A8D1710DB5FB9AE5FBADC
+1DC5F878152D44B7F43E8F5802C67BD15E479C7BCF17E2311624AC76FBE6C191F0F2EB26
+36785C9C5A6BD36FAE0E83F333D7B02025D1D7D9C04D9FC6FB24BF76EFDF40E4B8A6DF15
+A695989467D81A9474B2E2D3D7D3D8FE7A93AA0E50BDF6FF2832C2B9D27FAB328F4E3D07
+6A9D7666FA8A5A55DAC0EE2F71D3FE4DB6C9A00490A1CFACC5299A799363A31EFC10BA46
+B075BBEF22A52661ABB2155D80B39162C004D1A01ADE17499AE5F03A30D100A9E85251A6
+AD4932A40ADCD1DF90964E3255F95C29C220E16FA9A37280A86C0F354C4A52A06CB5EC70
+757B4F1362368AF1C1C24CD541E49A1D14B4840B4D007E07A4C42BE02DD551CD7682A67C
+C73F31034492A57C100B48727A975EA7F29425B9DCDA830ED0BF8B94D38BD29FA81A9E47
+F92C8D3810BB5C30A0DAA7B3A081DFD9085E3D811B9EDE1B95ACA7F333FC92D20C97DD0E
+E99738847B6DE1A8DE74CF6690CAC1B046687C2F10B0721723BB1D75BBA618DA89C575E9
+3E7CB0DDC3B0EA431A29D83639961D256F66C71A046AAFC9802D627515AFCBE0AA36FBEE
+F9A856BAC246D2162A3C9A5B2DF7019C0B2915E23DB0EF404C8DEACC18E744CEEEF23ADC
+0F5D8E305ADBE7C300A3C9345443F6384931912035A6C0A86769A540073B08E61928D087
+D8EE6D0C8995302E0BDCE431F03941C63EB45A7353E2F1258B38DBBFEC45DCA1F0685DEC
+E3A3024EF2FCF64A1BF71A84663A9DABDA62BF450DC1EDC0A15DBAE264574A076B03CE2F
+A724B18FC2EF164C95F46541FF2BFF169A21087D1628FE36FBE2ED7FFC6C3DA3ECB20FCB
+F4865DFD6BE80DB2C286557F615E72A5DBCC3CA21F3B453DCD22155A37DDC98A91B97BBD
+70D5041C8ECE89FE49A9EABFFECA23CF3790F941D19DBBCA9CB178704B4060FF78622879
+05CFE8A66970833708A6CEB2AD338A72AC890C7030E3D244C24D77E22F41077547EAAD1F
+57AB2F0B627777BB5F8D43D97A8A106A53CD7225D2F67BCB08040C171C94897C0B03D670
+F23C6E9EFF741AE7B753A7E375DE6FFE8D8BBB2727CE733CD271D969C52D2E32E0AEA683
+0CE6A9D7DC0ADBC8DC59832EFCD43E82E23B5B6C0490DF213E67C6CBD142CD130F1AC033
+3B15FA5CE77B2AE5310EE5BDB2F57E4BC14B027F2A30C7DDCE75149E459C9A3BDDE00B42
+21DFF160D6B7C06E4474A69F785F70B27B1BE720D7FDA62C273B2E0194814D810D17B4FD
+46AF89449F17A5983BA064E2138DA3ED6F748417FD89C38BB8F91C63C147C52791434DC4
+F70A851BB714359F14E8B7B099A47DD1275FA537144F47192A12C586A2C7CFB87F6D42CB
+A00B1FC25A92B1785BD21618347006625F4993929278BDD4FAF692F9804D95EF079848FF
+D3CB3880C321C577B2BF5DBF8856A6F1EEC3FF9EA5CD5FA14A225ED495504E7DB6BCF9A1
+285A224ECE6256715A9F9F69B682279AF26E216AB2F543B3721DFA897A0B708B0B50FE1D
+5054BC20ED56BEFB4AE53833F6D0324EED26C711DE6679A84A2CC6DC588E2752380C3C0C
+6846403942707B2D856F064592F481F10F9662AC06941B111076DA172B5720E6EE516755
+815299527FBF40609AF57EA2F5525ABD3D14CC70695944A5A98565116267C25A1C789D3A
+09A9E4211DCD25C4D23D05D265CE3462072B4A34834D6F367DB36121BE1C0A69C7CAE57A
+582C5C5BA9A26BB90229BDECD4EDC24B3C59ED55F5EAA008175BF55F2C5C31E95A0691F7
+5D2560B846152F5E0B21F34919BCCD2E437C4AED5CAAC2E4E9F000A8200B78553F04AA4E
+ECF29AB002B4EA290344094F37A2EC1BF5F24C25248F1ABC811CFB1522BC6B0A73E861E2
+EDE971D188AA7057CB9A7480B540327597062F506521911FAE25DAA1843359716E00E652
+9A428EB826ED9B4BE1204D3384B78070FB3678B63C03596862FCAA34BEC3C18A5415ACC2
+0F38F9F003A1510D5E1D35186065F25815B1912B68F9F1E21CC7174E20EB12A0ABDE51AE
+988A79B4407CD7845AC8C6436DD447733A512639E9B6766B7ABA1A1DC943081CAB5CF4C6
+B39209D315307A277869E4F4919016F8ABF29B403113B03D653A7E313D6CA7765ED3F1A0
+56E1F1F0B2997E553BB21061AB1FDAC36A1C69EFD044176E4E8F070AE90DC2BEE7C21C3F
+299251BF6D1D3E41E661C9A441A55C4BD673BDB971CCF2633E76A622DC37F70C07F30D52
+87527FDC26A652FFCC8B25F8796CF8F16A4F538064F0226ADB9DBD9AFBF69FECC79156A3
+79F2ECC9283A30E4D56674F0070F52176F29654581250496037EC9DC20FB780655F21FC8
+15154344F2D8422CCB5572B70D03BD5F7A8C1D27B4E3D4E83057D5B28F3A60135F356639
+130E3E0517465D2C051B9F309E4D49093D97CCA391141217FB86336E71AC06CDF8D42BCA
+C7D1240215B5A423E95F84C909C62B77FBEBC6B433B698E589BC3935D31B95662EE68C57
+4B7A62FF4004208C2A61051B1F209A7B13AB4D9C78476C0CE575FDB4122B4A2D4AD6F3A8
+DBE068A3F887A32AF11F2353065365C2676F5B2D1552D152D27D5D3A78A1F10C10039E99
+5A1BF4FC043B7E3A4D2B40E348923F3E69F141122008A0C522553FD051F0F3D9CF9A2BC2
+2F201C2EFE17F9108827807026D65093B4D289D5933B2FA0BB2E7B432607DE604E8A127A
+5444C7BF7A517AC212D8A3FB90A3921B0946886F63594598FDE84ED7029573C1FCC70B74
+166752D99F06C7B5D4B39A7CFBD6FEB2A5896CEC3278C8A05F6635E70AF18FD47BF0FDF8
+05D0B7FB22D854302CCC6515486B7D99EAF207A17A85EB1FA56D4F6F4AC31ACA33A6135B
+229C48027B9D2313E8F71F91E042511EC0C96D65C5262C16032317F0F0CA7BDFC0DC9326
+ACE847A4196D737FF572FD72B40441595922F363DBEC60378ED9655031938D9832476140
+A34930BD3556B064F37E3CDED0E9DE8BF235FB36DB6E4EE45A8F4EE9009BB6F3DF39DDCE
+027FF5F55DC652BCD08D5619FF06924062F39D0856F8E49092C6531CBB4334CC8EFDF9EB
+E40F9E8D04564A9D3CDA2537A1389566B5192116E83F3947FC475DBBC3D3A4F0E20BCAB0
+ACB2A238A82855303B518EE97ED6601711C0313D4015AB631F5F1D17DC8AAE8C942F9483
+19B5FD35B0CFA58C4CD35E4CC51927CB4E45269C52361F73F925E4F140BB726F7DB303E1
+5FAB4C709339ACCF726153AB33A6DFAD34C3801D58FA3C382352C690F08106F4E3F30BC3
+004DED2EE98502F9DBC59CE9DDFE7E8C67D83CE1450601F9BAAFC521B30A5E598CB2658A
+A28A03359FFEF524198B901F4CC7572DBF895F9FA12C75335B746E9BD28D9505D9E4BAE1
+39A4A6A5DCF04AA839A5D2B70942AE9034310452289719051E4EC86DF1E04F303AB32B13
+E45C283D656D219097F8EFEA9CB413CD25707A0B6E1AF9C3394240BD0190D42BB1BD2F21
+EDCF7C59BF88C6BE40C2BD94B8BB8B0E2F56DE91668A5CDFA85DFFE6739F42038DF9FA9B
+829BBE5576485F43CE995D0B81A6F64DC26A1C82280A7704213A7E6008A83622B7A559EA
+30421115C8795A686739B5C045DDD1459C45DDCDA20F06788DCB3CB5D0A723BDD228383D
+AC565EA7D871F352FBCBB16AA2523B1E42640FBD16972A5CDD6FC2E86A69ABCB8B42C468
+C443D7C33AD9291E05B7F67372379930FA6FF6BB42E33C130E6525D235B381C80D91F2BA
+0BE34CB2B4B4858A8B634444DB8126AE4821FCC77B828B2D96F7DF406595F7F71C345BAA
+72AA8315DFFE61B72C98BE6C30D8FF5D84C57FF295A35BD814FDA4DDEE180F532E19D6E3
+0B85C29CB13E09D6245452E8F5A76C1E0635C2DF31B03547C313A383F1EB1BD8D093A363
+A1E05743B394C46E861D4328BB5EC86AD166957FE878D1EE7000C4DBF09B81296CFD9E79
+019B18D07E28B22C638E1A1E12803FFF8EB7330D7BF097E459F9E5DA25FEEC3521D161C6
+BCCE8A0CD70CB09FCACAAF26D5E284955046376ADFBF49C56F34A26669287BB75520F5CC
+E66925D7374BACA4E53983BDAA3B58EB4114F4D1413FCABCA5188F376CDB64DDE698211F
+A43E691FE5C1D7F378B6AA12DC6FCA031969016250DA7C1AC3E78888B07A069DD4A639FC
+BD977F99132036E33564BDBC00FCA17BDE4DF58E283ADB138BB2A659D504A6B6D6C9FD81
+6A05073B81A3F277836893CC35498B799F3FA55CA1B7592F325630F2C4EC180BA7187297
+4D17BDCE1AFFCA84E1425DDBCF90E4E713FDC40C49B2F5110CAE965DAEAF6559D721662F
+2F5A708488BC1A93FFC2465FFC99A68BE185383CF69A83A38A58F66FF3F10F1F0C009A46
+620484DC21551D5B0F950778A9DD04993D4B2047F744A7F5DA08D1CD65608E972F5CD27D
+9B2CA6C5FF3FC252564A36ECD034D8347AD731BD47D0F3D089302B7E854D902441F4D04E
+44E8B1ED00D050F04D9926ABBB64109D493B5748D079DAB47DD0B6AEB871F3534EE6B0E5
+2ED35CA03E84F5F1A311A5452C09246643B92230DB6D2A485D712C97097CBA6193703228
+90B29A3E6F13DE188EDE9EB4D774B8A2DAB52B0F7CFB35637A681E6E0220670443C0A3F6
+7F34AF5DDF07F868C544D8858AC6380155F3DD04CFF16227C6C81F49E31CAA1B9675EEC4
+7FE70382E75235FA46F71004AE9A1ACE2DC4B388D1AEC9C29671A9CF4B6BBC03EDF7AC30
+B2F07A3793874D67EDE96F8F65FA4DC691616B5A64A63615B98738393CC69678EF7E88AE
+F2496E6494DA7F07949A0A3F5400B309ABAADB4026D99A6F83E74E353628A128FC783D41
+54AD69309C589A8FC9A7EBD50C835B5A8735F22D4C8970B149DB86A6EF4035542590243A
+92C21F9CE7A3773E0193090BD4477A7DACBDE742FA7421BF0B302E13D1CB88F0640F9478
+A4C6D90036F8E2F4AFAF7D638F7114D4521A4E41E5A2F4393D37F7C92438A0DA2C417AE6
+F2E3A5F1A8D24AA9D7E00D4E25DC8A8E941C7424C4B7B5164E6CF729B48D10C5BB94F5D6
+FC9274BE7E9B35328BB51D0E7F1F5BE339A2943E5DFC1ECD5C2C89993B9ECC63570EFA45
+5059EB690153E202F7925091E2206A859562F35407F6AF14121E2B2CEB12F4CFD21FA66C
+1A652CADC7007251091417E71E566660003EB6311C629D78A1556286F2C37BEC5DA2687C
+B9CBFA5B91F798F75DC22C4F2B6541BD1105C02E6E186C0CD029BF427ECA2A3EAEB77BFD
+A18343B133A9F7555291FBC413AAD20797EB4B77CD424E09BF2F492AAF9F85956CC6567C
+F447CA9E5DC5F15F8D720C92E3D6CBB9A338FF7EBF28CADC791768DDB25AC674B07F23F9
+7E4F0774531435404FBACD795A456635E1A2AFA41E1972419D8CC50CCCC0C0F705EE24B2
+EF0642EB1274CA2BAC0EE9B60DDC89E2844C3483B95C120044D9546642ED8B7404228AF1
+D25B1088022C52007077B4E9B7D1FA29DDD262F1CFC201B9A903C45EF1143C7D18AC994C
+15B55F060EA563F296E987EECFA68D1EB5D78E0461AAA5FE93A3EF27A43F38D94B5261EE
+B4544104626E74013343ED045ED73EA6603687DEB64BF65A715F30559AC5819D08B2CD36
+63D38EEC14957FF14777F1D1B2943DC6C4573735F4E4C2F50B8F68D2B6749B3073BF5387
+B61E8C1F1B08EF6CE8A99F3FA47A7B396095BCCD3D93A941FCFF2C6259D5988DB61CF627
+0347C6A127D48BCDAC4C233E9D2ED716CF427C9881C8966FD75D73890F6E743338FFE1D4
+182533BA5896F7A5BA9C4C4DF4B1DA4B69B310C454995F935ACAA4D1B64A6C115EEF587A
+9EF30CBBA6239389A696FEEF47D5059902AA2BF5A867A3D61913B23AC9AE4FBCC6E6C95D
+30552187061445645D0DE52FC077ACB3ACEBB66A03F118478D431979591F2E677D53F9AB
+221460180F37DBBAC964166CE7E91BEDE9021A7F5506E3ED746AF3F1A8E864D0BC66CB52
+36C54B46AA74570C4FDC06294C73791407CB6DBE88BF2C4511C44E713FE430A7DADB0F23
+6318CE8590AA4FD845B5A63B31ACF73AE0C4EAC9F2818951D350765B0F21003E09C3A010
+2A61EEE8C331F5B54BC9DF7DB9E8C60784A7BE072487901A2D5795FBA411A9EB281EA99C
+96A78A730C0E6A086E8E2EDC51CCA4E7AB696C16E3C80821E0CF575D59ACAD89287A1C9B
+25263791D3E11B1656D118A03AEF277E16EAA76E30DDD3F96047658F4B7BDD11A1791B87
+4FD92BB536624CBC36A278FF19363D619BD9CAC226739E5E5A738FD1C67061D7F57C8BDE
+0AD629B7DEFBDE214314BB6B8201BBE488DA852A52125C9728F734F2C45889EA58FC007D
+203F835122ABA5DA1557E5D661F0F5B53A2ED252523EC8C7A284EDA145B6F13C97B97A94
+7B158AD84C792FC2776A5852202888A685AA84B70D1BDD1F9A648F2D195F506E8166471D
+A5F62CD5BA85C4E4D22FB8B4E1DBA5FBBD68F5DACFAB701D0F64E93558B53BCF7D5FE1A6
+FCF9053D4B7D3A4E33DCFA0AC47701D13AFC680566FC12C3153AC313A2B40552A6CB1FCA
+94252F707DDF9FBED52D12A15B28DCA28627124F4126F18A5675A9C232B555F10A156B22
+3C5D9BF20322EB8803F7D64C2FF55351CEDF6F1FA074AC34EE92EB32B3665D52345821AA
+479B002F384DD9E4784F3D4AFD7BB5F254D2FC33F32DAA2531E5D018B813FE5222AFB297
+1D96143D7140131DF935996BAADFBD5BF4CB74E7F06A353461A2302568275319669A9E7B
+6B42F31908D1E95852B33A6846F9497DB5C940E6754B631EDE52FD01E24CEE14A391F0D0
+D082352B5CCD098BDE5237937A2CB2A33443C5239806C6BA879EF3035E0177FFE29FBE30
+E86448682AC37834E6FE85A6D9B4F4A26D003EA0DAA0C22C2C897C05E5245EFE7E660967
+FCD19470940A62E7DD1A2F8C7D7A5E5BC5DDE15317D3E195B39637BCEAE97860C0DE5786
+AB47707DDC192CE4E7C868FC54A8514E7B3FC57AEAA8DA32787FFFF9E8D560E41EA9E8D8
+0278775D46D6733171FA5F23EDCC89B988C3DF7D7FF11A42368FA9E4E4234CD3FC27E3F2
+AE5C278B498B372E31A635BF61CF5F66445A923A0BFBE0215430A6A29501AD8497CFB439
+C9D4DC12F4AEE08A1ECB2A9EE18FC0248A817D87ED681100FA7532C8BF3C3C8C1377382D
+42DB50B6EFF1A476DAECEDC90656BD4DFD5A1AE41E97609D27DB01A6093C7DE20C27DFB2
+DD4513C17E79636018158A3E4AAE02C6D4548E70731113ACFB93687747C5A7DDE882EDC4
+B63EEA7477C9C718EF2A7459933E54F7AB5844F98478BE82B54BFFE6EC0038F80C121504
+90992289DA5665818FB483560910FBF1AB4E1ABC12240C91B0F0B8DD3C0DBA8EEB143286
+18DC91AC1DB548BA58D2AAE3511CE8711C3833FD42B46386F47C9928066F6041934373EA
+DFF6D7A0D7DCA0B19A5551C018C8B6EEFFFB520CB17B0B7EC95528E170CB6B5121D437DA
+44FC8D17DE5CD79FA3ABCBAB25BA7B3A9742F81566C3DE514C164F37036177446F822F64
+A03AC85388EE52D44773B90750E0A752A14820D820081EE56216D7E8DD7AEE2B3721A76D
+49F806CCC35EA1DD8AED0AD9795ACC1B9488A7DFFABC32C083E8B959EFD83191C6313B07
+A7AACAFF2ACC26A185FCFB64011121A9A4AB4C571417D6C9B181B61F7B0A6B5B0CA2EB6A
+38ABD4CD7F65FE257E116FB06E1911F5C6BC6921ADBC5DB7FCB60C5C25C3BB8BA6D18DA0
+484F27D5A310E7171015D83E2D94EE6A70CF30FABE769697A68867DC8CEF6F261783DB3A
+9E369D0326F39291A0E7039C9F71C6BB3D1E86CB07A0039BA06515FCFA91F8B8414904CF
+26516CEFF9EBAD13FA9784C3D94DF712E54531DCCE2D41A73B77FD8F0CACA5253BF407A0
+CB3ECF3A1FA73284F5140210FF664195930C7410CD235828CB3DF27E161346AC74A2A2DB
+D97E2AA5440F094235FF4EC48ABA22F9981694F18B5E55ADE24874D6A79E9A8FFE668F82
+31ACAE98316DBE84F93588738942943EC41A0E798B4860A45FCCB38A2516A117FD77E29D
+87DBD1DBC0B0AABF65966BEDD58A13D52454AB34C0E0ADCB96ED89FFFC8E02B07A352A4A
+5590D5D7FFC55265D477AC7BFA135A284905FE273E28CC00318A8A03D6B758BA6A7D7ED7
+B5E4462B98A372A32771AF02286352E6F5BAFF37DEFD07FADE1FDE7B8674EB02B3197E7A
+802B630E22990EFBEF777903915F80DA71E87705342C4010D96C973293D995459CE70344
+65A854E64610F181E9916CBE6CB80EE4FD542DE05B86A180B155BA6EE8455469EBFA8F26
+112DB16A9FF956F816E6F8DDE942F4BE219D37F6D708446224C1FA3301D83D42EB803831
+37608B83B084486770FE62B0D285833DBE37DB1C396E1ACFF83D3194C8DEE3D2170EA68E
+ACFACBB8F5281FC90F8F8C46E026946C514D48B16410443A2A004342D023B217C2F0CAFC
+6C60EA36E9DAA0B5B0D487402B322A207615CC58BE346905A6D4DD9AD8036A2B31FC321B
+0F3A017E5CBF37BFC1E90A2B4364A40EA3CE9941B40B8398B97F70E34E291EE84465E6D1
+BFDD5BB2D65AE77A94CE48F2E853B9FBC3DBF6FB98B7BC75A31101862978C96D139FA23B
+51693D5D66AB8D42BCEF0B93040D5895ECA8F188E92F45249945C1B0286D61EC7A015A9C
+FC19D3AE2FC031BF58531F6A82F8E2A27AD46F80C97BBEEE01AFBF896D25A5F18935C37F
+BD73DCB8320180F9188890961B6B074C33F6393071DB3AEE4785774E3D70D202551F43E9
+4D54520DD6378BDD87665B10978DF01F32B2CB393A3F4139EC9E0511A061EE80663D253C
+19BAD9A3335AFE2FA08CE2A56F262623D6480CC54BB9AF5C26EFC7466821061919CBD092
+7029F4DBBC2A268188F2B4C2AA06AF74EBBE836EB79EBBA9D399C6C4505CE27197DF4DFA
+3F4E06C0690CD4D0B7D563CE24CB25E3F6445C7408E257E3CCCF419CCA723541EBE22FF9
+D9FBEF246C33141CAD510BB6F4931BDDF868FF4FFA3CFB370231D9FA0F20720F2913A6DD
+7A6623E43EA622DB71206A0C63F1F2214FDCC0DB066D62AE06862E0BD93D81E53FC099F1
+AADC577C572C04582F15FA82D0793C14664ABCAB95A1BD7BC67CB78FCE74074EA41A43A0
+3BDBD90DB27B73918064A2C25D5282003053B1EB42CD8AD364CC9F6A4D672D133A3C9EE6
+7F68F585C342C539D05418F70EC810E1DF8B381B768002708CD868C6BB85C15D689553B4
+0AE971584FB9554B62CFA8E97CFE7AD0C6E9E4C1AFB1D010F4FE5C17CB6F0E96B09FEF1E
+DEC5FDA3C333A21065E66269E313A1CD45D5C49617F0C3C0C3CEBC1704D05382BEC91EA1
+ABCA84E02027FE493EE543294ECADFABAF7B44B182218D9C0039784A9C1B2A78014B3A20
+5A8F64F293DCD5B52B7144D7E038F56D8A02E3831E033BBEFB0EC4F12A6353A774B85C81
+D874454AACA89675FB9EF2B7EBB2FE9931A5174ADC99E3A34A67A431D0D5614F8B2928D9
+2CB87172934E2A86FA3E4CD91C1ABB72556440B54BCE76E1A8F965E2DE257C7F70ABB37D
+DF62AF444B90A76A406AE8951322D6A9FCB07E98BA1584026130FD615704BC1B38A50E27
+1DF07303571C672F3EE5DD8C3FC204C087D6F68B7DC2F4AC1B92CFAADB6533402DC063B1
+BD4359594D3ABC659CF684F228429E45AE54D943185012DCB9E3019995FC840F073F4677
+F7E93976F3A3C04E8F72BC9B83BA16DF8E6B721B16A42251D72EE337501FFF8C8FB5FEBA
+F96D24D932A220C4956DAB3C853CD69EE39E27356D2DFF89B8503D5FF3C7E5012E24F5E0
+BD22B76286AE46C2DAC708BF84EB16DAC36D8D190BDFE99BD139EFEC7B76AB9532B4CC29
+B3243CD58591FDE4F24FB9FF41A5379CBD336D0656CD0365A7A20FE479445D43DE0A0FC2
+3F0F21DD8ACC35E45CDE192584598E17053E1818FAB8F05ACEBBA9DDEEA15654A2BAD652
+6C3BB6413177D0FDD105E5F63A71AA5630AE89FA62C7063103D45D6EECF021014EFC316D
+97DE7ACBF61C781A7360EC903F9997D35362F922D27B74570C09794EC2CB41FE960E423F
+E878682CD33D93C6F252586BEED9377F060FFED3C0930F892F66CAD20A83CECE22A81B9D
+C7BA4B14EFD02E61E676E031BB2396C9FFE5A497ECFC11490282CA7363C291A13EF102F2
+D7F724A6A33BD949DE250E9BFAFB757EEE02AAEC709B67CAD1FC6E43E3DA1A9D12EB5060
+B5BD167DD8BEDC425A854756960671CF70CCFA536B393FF8872BAFF89392E64C5C68E001
+417B03C0A7664B7C77F2F6999F39ABB4D8298D666D574642DBC4E613531DE5AB8AE5C49F
+85B0EE5D6DC0ADD2834A3BB14F19B468F8D1D5FAAD2460F79EF64029625051ADB5596845
+46AC49689FB3868DDB4520ADC53CD06E0DFC4AFEDBDE6E3EF23ABAF3AAB757A0154106E0
+17800F67AF74033D3B37169099307008B06482CA6B709AD166DCD8CB3F0F66D6FBA4A875
+2AD81624CD812A46C8BF636D441620F0395B8AC4CDCCBE4F87BF6A21C29BD33F2500E03E
+CCD1F28214F52B51665053F4B70F17698E89E82D3980B7CF4500BE8193F2942CFF7A96DD
+675BAA99E437C04619AF2F92676F3CE63B280DF20313E3EB48566BDC79A3D21AF678EC99
+B0F3E75C87F68AC8AF94101E9DFC6F6FAE1B5628FF8284AE81A208CD2847E7587C720BE4
+10FA807EDE38EDCB6FB9739A6024AB9801C8D0C16D9DAE896B2429490BDA5E4335DBDAEE
+2647FA4CC81DE3B699B8205C7D2F2AE1EF2BDEEA2D97190423903EAEB32B75F664DCC182
+426AE64374D3F2EE233F44FE5945DED70CF0C9E36EFAEBCF04B3A31188A0F62632BF21CA
+AF9D94CD88CB9405AD6CF2F1A91292EEE91B7F8E22E467E4966B97B9F8C5E773AE828DFF
+3D0FD8045BB925F5314229E512796D6B6FA466D923FE52ACA6D436EAD21E07BA3933C348
+8DC7F1F002646D04873EB488B1D3144D6A83FD26EE89C1760B52E0F26ACDD2A7D146B6F8
+AD86357D80909BAD7D953E9429D0B0F6007A972B2F3AA02B4A6A7796B39A8D91EED2CC43
+EE4533505D7F0369D6C727B960767572AB164804D03E7DB8AFF27B1B338AD40619562931
+CB24225A3463C2D03F2705F032D6D1D6504B96159A69FE14D7B0ED5BBBCE8EFF6F8D0E08
+5CDEB36CE1F7A2B80F9385D1B6AC133BE194B677B038369AC874DFB91B1C2366E2617842
+EF988AB916714A88E3D0512BF8E9AC1DF05BC53961E1CFAA81297EBE57519CB0C810FF09
+3BC3A2C91C5782395C3E9949A56DF6EECD1D2A13430405A94ECB1E19F7FEB0A3A7CCFDD8
+1F01628589781A442212F326994F81E8EFDD6578C82D457963D2E2D9A549DE6A9D7A9279
+D107F918FF16ABF8739AD789F86A099AB51BE87F2D785D5A48A49B9D4E940356D131488D
+E7877D49FE0D2C0AE41C8B6B98D6C91A2A9A053790EAA0D8570AE832CB1D1B31664A4D56
+54B9058E75B59DD8D0BBEA1035BED034C03AA04F397C00C79D593F7F6FAE3E9AE6CF3FFE
+813A1B73CCAEC01B36E843F1783B3939B9839242FE53587431072E43F1D40CED4E6CA54B
+5F9E961D966D016E98B58FC4CF88DAEE31C80DACFCE9AB73D202ACAA0B5D7976CDF72AF1
+E0C8B674BFD1C715D55159625DE7407731A817A9603619931E0BD21620034C4B93046EAE
+454EA99F1B59E9BD631076E53927BD80816F208E4CF9DDD2838A8638385F95CF1BD00DA0
+54F1C8E2486BF85269CA28822F4730FBC8F91D863631C0BAA17233D0BB76E9B9B44F14B1
+90F5533CBC40E46296102ACC62E4826495E719F521A9EF422910591F8439F1BC1E553ACB
+2CF7E5396E547B24BFDB254B6B792A66219AC523D1920AFBDBC2DEB1BC1F8BD9B07E9BA1
+CA0845116ED943114A139BC59A24DCB781F70ED5B1BB07997FDADBAC15ED09D808987BBE
+01FBE01A45B673C895441EC3F2B5D6D7B1DF9F6B2232E14F35B5ACCD6C65B19839ABAEEF
+3DA00E3DF023FDF978D1ECF0246B75A1704A3D124450035D360D07AA5C639B65174153D3
+53B17EB06F69F06C364524C83862C2DBD10E3ECC8522348C9BD90B83AE59E80A11871A07
+BFE01EB4ABFCE88912335FC4E08F26AB3D3C0083A6BEA21E041A8C29C9AF2C1C29A5A77F
+CA973D49B89BAE7119B83F2C60A75D26E589C5A3C93ABC3FF4E5D9F94066E07CC99FBC62
+E4E05CFC8B9F651720A9DA123A6C2627CC6DB9B79CE842AC8D35EAF800CF982B38D56580
+4C1D0B233C45337343FBE019B016BBD2F5CE3D597F45C6C2E410854CB511BACD49A19B4E
+C9E0532091A99F3C6DA18D143796E447A57F97A4A537669A3D028C40DD79B7F2276DF107
+992CD0CA4B13308FF2EF76BBA1BDC5F5DF803C57FCC99613FD2208D92EEECA0A17347A82
+331E2A2F4C64C54374ABA99B4996BFA5C8C9847031E0B3FBF6FCDB7A411BC2E06B4932E5
+B978E87CEB244B8C1605A7D556A995AF0064EBA1B917EC62EA73CF0BD64947819AE24C76
+99F06AE4061BC4861DB8ED35B27DC134D55B200CB48BBECDD836AD55F9159C8C2D390F69
+F691F4951FE376F5195274D896F27E6894921060A5D7B18AF0BE2C1C9CB879E168747FDA
+507D73520325BFC47F4DD187A9568519DD057FAB40516C01E3FC71F2FBD3AA5FABE266D5
+8E3AB13CCBB38FF04C71E0BCA1867BDFBFB2E31330662CC6AC71F12F135DA70C10D093B1
+02D9E85782E2AB032B457B5845919A9D4D2C8857AB96CE26FC75E9B1E043D09E4194B620
+5C23BAF168F2F6A7E88390899E59FEBDFF23FF505DCB5BC76D3B80CD160119274B13C7F1
+94AB5C438BEA04CB95914EB0FB5C454114D8072EE0EEE0F226A0D8EAA5C71DD48926AC76
+77F48D38E3536C1E4B407E35C1BC58AA21BE811A98293AADF4842AD85AC3EB0842264BC6
+AEECDA74E0DF0CC46A6A4DB531BAD53DAB620F60A9E4D31C69B1DB825B95B0C3BD4781A7
+D9CF4743ADAAABEF6ABCBDC17AAB7D0CAE097F899F0F2BBD20F9BB7CDC538378EC0DA324
+C6400D9E3A239FA79C3A1947B5F0DFF9D31CF3CB370A7FE799F99E4293D53E871EF890E1
+EB90A06AAA1C4A5BB474BB232F784645AF4AEF59D63F41B9F1A0672B8A5AFA55FA488ADD
+4FAF5E955CE207D33ACA2ED562D0A1B8880212E18452BB2FB0A4CA987F0B6E76CD358CA9
+315282D6296AE79D13CECE73CEB101A7114F504D9650712E10C1F1E9A8D493D1F66C60BA
+BCB0B5F3A9B9AFCC943EF08EF6B1F8E11874E3D679E61F726522A9D1F8DFCEF2C1CF6DDA
+FA1D142EE715F6E9C70B592E1BC38881E5AF455D2227D4C0A1CD1DC8F51B17F2294FBD0B
+0C93359741ECFED18D99833BDA44F88DC43673BDD41DA46C64AF254359918B8F82DF0E4C
+1A962E2960D4E41D8A1CF4ED6F255BCEF6BDBC55CB61BC11D949900374836A7DBB6FD3FC
+64F009B500AC2AE08C7F804631F5865B2CFFD8BB53D6BDADBA109412BC2B38D955BF728E
+7A4A17ED4097EA3EC9448569198CC115EA8185EC1995FBA83FBFB08769F93C137FEF115A
+985C283AF0241FFA6D6DBA2871F8A59B2246BDC6B36262E0E5DC7DF834C8DBB19A8BBA65
+FD8EB6851D59D5F075739CBE4DA3AD34DD4CB7C010E806819538A15A8050A61E4D3D0980
+43815C58403618952A59876B672CDA6FFEDB68BB29D4AACC8435091CE70A842CDB296EA7
+3EF01C1B418300D1EA5210AD132FDCADAC97DE3271ABED1A00AC77DAB53376C91F0C2B95
+BC77FA464576882449E021211BBBF18A5A0C8AD0CC08EC577DF2C4D2983A7CB54CCE23A5
+968A94C978E2522D48E87D558100A629A0B80F42D0CBAACD02B8D457CBDE8ED73E16DB45
+B17E20D13D3485F04CE830BE062DFE0BE7EC85AD300F2B4A425FAE7596CB241018F59544
+D1E9F3BEAB45E45540C649DC533A570A3A98F473EA95BECEA205AB007D9111FF7AD36A5A
+6C27F149902AEF40D74B0CCB48C6C31CEA95E74052081D7D64EFF8F0B5984454A931D443
+9C781C9AF37F2C3BED3FA69E9FC7C900BECDDD57DC36C761D10B64FB40AFC32809BDF9C0
+EF895175B0A20296A02014CA1BBE1A09C799F7D6E8AD15CD907FCB676F759FDB1B591114
+2FA287D873CBA57135208443F04C1009B8813B574DF9A930C10BDA467579CC4D37030C74
+9E467C2D4DA3E51F2C4071B5B0BB3549EF2B24353C94077ED66713D80204326218E647A7
+A9D5D8D6E7A03B6A615A13FDFAE527C355210D2C84733AB77C97251B6AEDB4DFDF780DEF
+CA9079293D918B59A5149EB75EF690987FFFCBF150257D548A2D384E2D8DF48438DDBFE1
+08F6C34842F2ECACFE16F97A40BFD831716A3A287D2572A802E46A887CD63CCA2C9B0D1B
+660561D6431E694CD2D61B311972E4EA86C05C6A1478C54E9BD083C8C15F27C300875A3F
+BE3A0866600BE544E212935B35F9ABF923763E8BA751D26B5F8445E531806DC91294DE66
+217F5A9FA624614D1E658E868E5AAA0EA3384F83ACC917F0445DB2D2D561D000C825E4FB
+FDCBD35D30B565C00207BC5B6839E5881655FDB6557500C8A3308E7C1007B121745B4247
+95B515B6D33A8C0DE17CDC18FC81D7E0577E8AD447397F78B5F02E24E2BF6260D5638F51
+1E292DD51456D33509BCD450EF21AC71BB0D63E763489701D6884899D98B60DE03F81517
+DB20A4EFCF0768F45456832BD5065C7A3B955A58E5CACB4BF45A8155BF61BEB11696192F
+DC7C6779E9E914C78D675320EC2C9C5D656EA19AF36F373FF15E2B923CAA02D871148C48
+4BF5ACEC8F1890CA5844D87A22E06D83BE0C5729F0D9A13DBFC5CB43C9C1D43EE7B20047
+47D89DF9BEC822CF56ED1FF23D1BAAC5C592C019F7B3DD30A9370DE115351903A041FBE1
+50E4EF4A1C15DF630570693071565B2AB7981894A27056333971B088C0DD7A2A0C029859
+BA5B6A10347AABF63AAD479FFAD90F340656D96F030C518DC96BF3D470119517EE20234D
+499986809D923775483C4648444FCA9E144EE786F8CE22E86D4942840FD39362BD3CEC72
+4D1DADC929EEEDB30B1A74E86F6B11EF6854E92A4A5461188CA5ACC174C24BC531FE5B41
+5D8B6CA2C2D91B01B34B9FEBAD53955BE5B07B10B08B61AE27AC9B6D284C5F1BF732A7F6
+FFE81553C86CEF098A073048E3B601F1467A8400BEE642C5ACDA81D93F1A986BB4A573D6
+3344196B1D1901A9D023096C4CA111005FDA4C6BCC2CD1F0D3ED1CC717ED201E0586C183
+B420751455F36459FDD4449FD08586AFDAD318A8D10FA6AC9BBA3E2A216C2947A02E8EDC
+524865CC0CCC2C6A825BB577EE304130A1A328E974B7A2E8EBAACB6D5BEEF97C7A96A551
+3264EE77DD7E3EE2B01F53AD21C4D357D9F181569FA35091A7B67E3C5DAA8D4D97AB5377
+B7DD0D52A808553EBDE2544553D180AA7ECBB446903CEAD96F605DC51940E720D279DB6F
+6F645FFC9C1045EEAE166AAE2DE47AC5254BF09ECD664C20F16FDC622007BB1F766BEC1F
+EEDCBEE6E18B41FF2A0D38BF8760D094479478A9689D8650BB41370804BD906D5C1F3655
+4349DB40E1AC1A208287775DCE58867417376BFEC98A1E70F6CAC519A5F5EAB356107567
+00CAF3DD42094598857A55FD34F5C6D778E72CABA702FD15DDFF177069735AEBF05310E9
+2EF5F6864A731978B3692BB49C1AC21453FBF44C849D54EAFA17E66C0698934AFA09CEFA
+6AEE52C222F70D72204F76D900EEBF98A7925790C184B3DD22ED4B56FC35B045049741E6
+1C693C91C15B66F3D7765EA12664E31FBA54C4E91484561F970ABB3244ED8118BE793DD9
+EB0B17B271E401122AB062CD3B7ACFAA91CD45CB32DA5F258BC22A0AF82865446176759A
+37ECDFE70726622C8EBDAE5001746B97F6664A93B0CDFCB03EE35F664F35E964AB25399D
+282B0549E12F03B18C6AD5230E75FBDAE827C02F357595AD0A956BB8AF6FBA1583406E55
+9DB1082C796DCBA7EF9DE70597D87C3FF11DB040002C75ABB5A76BEEF63F943B8873728B
+0CF9967CD9BE362497ED98861ADA996E139CEDA2BB865E94623BA0DFE358B83B3C256943
+70311321C4A50E4A80A7EDBBF7487D492374C3A495E94191277EAD3066B3EE0E009C118F
+48C4E6824963B0EB5304A58BC6F02693DA34867B680E3578C2D5A0A4B8CEA2A7F01993E8
+1F09DF2FBE2303FC215B2730C221A64EC28B923EE383BECF3FE916433DDC6A2B2F5F2C66
+40EA36A3229172D20B41DE407C75AE597CF3292FE785821723EDD329CB3AC60AC13FCF27
+0607CAA29AAE77148C7E1A68529A41767BD47611A12F8465689C5348CA1250A0091DA770
+55C5F36B138F5A1389E4A6E14CE04F3F410EFA48FD6D25F33BD006C9A1C17C6302277FA9
+8AB0F2E1A2F37429335C0BA222B3E573841DD948CDEF46F2CB0109024178CEAF39AAE2BF
+5DA517A044C70BC8AAFB7CDD040892D4FFB7ED7707FA51777F0212A03694A399CBD73147
+22C35E25222E91B446359BED032C0902E0592A29C2B7968FEE78CFF76A2C25EC48CBC649
+6307164F99D9A7EDAB03172025A57EF42F0CFDB778008906084DCE971ABA1BEF4B42E81B
+CDA237A2A793BDAC11048558975AD4C5EF6B18048E7D97357C9617E85D47241098122D48
+8B13B6EBB741E69D59A2119DE8FA155C6A6C3D857C117A137A8B106430D57163FBD8BAF9
+3D012008911FE3FC24017E2614B3D2846F069FE29A0B860BFDD18A7B73B8AFE6380B776F
+FA291CE067D619A74A68BEAD8772E9918EC233DCD2A57106A6FA8C83E467AF50A65FB3C3
+CA6C50F42076398410B05C1761535E4B2F26087AADBE2EFE2DEC003CA6CF73ADFCDB763D
+F19A688D264E7E99509FD25275636793A873BC389BA7BECDF489DE79EF934DF289CAF34B
+B75A283FBB1D1AEEC04453E86FEA9E92E1FED65DF10C351358DDCA96C245280FC9FF03D2
+431D226CC1C2A0F178EA72135FB7017F964F9662E099A5578C22A0F8589328DAB03A6838
+7A86DF69A8DA28C5CF2D099F41F3CBAEED2A7212EC273E4F415B767CFCDE42F7228E72F0
+309E248256631768567ABFB0145B774AA1880ACE4E16F3B3AABCDFFD4BA164E01FE7EC94
+E1F9078A7E1E3A5D6421AB51F692F27CE1251C21B8D6B7530A95280BDD78E2BD6BA1D136
+AE9BE35662A47B2304BBB571534BABFFF6E64914B44FEED465D3DE86B8820E7E71EEA0BF
+A511E4BB7A09CA9C7C551B04C48571DBC985B0AADC08DDB23369E14CCC14AD5A8EBDBB7C
+38BD00373B094F31CCA71A8DA190907E5B71418E65E393AE23C9A8798E678B1D341C4A01
+1E5CFB78B17E55808053E70B3032F845DBE2CACECFE8115FD83D1653D459181CF31517FE
+4B999850376A6255F84444EAD9D9775439ED5F21C39E31200B6F3D0616E95F6AACB9CA5E
+D5CA984E21FCF09FAABF4821575EB5249A5CF3D2C5E5BC390A9D01874A2C328B39DD1AD1
+C747C9B4EA20E9D3B9AA033B1427EB15C0F8A0FA2C86733F6D4D0FBE72FB4E151E91C2DD
+C33D976220D14D13C69DD9632C595466EEB3DEB5ABBCA387CA1D805A006F6321CBD1D190
+9EC49A119374E4F3CA391D68FD176F756B3E01B052353E2E81FBFF5F297967E342D0607E
+250CB4E5961A1434BAD9F34FA23D66D0A8FCEF94A1CF2DFC79C9C5F8E1B8438600A90BAA
+17F3316ED6BB584F716A8597D6B744FA1EB282BC332FEE594F4B0AD3257212598707A96A
+A61EC3B81E0134A3CFEB4EB11FAA13D114E23B99A3DA52F9EDEADED1A643668A2E8CDEA6
+3868854E164602FF521882930608E11CD404FF51194CA7B58860C93957E683E39FC84508
+53706908A63A0B9800C1B839F8FE76CAF223485EADC7E1E9492B3244CEC29CE9C5FB2FF9
+D2EE644F011E1DD1899E21EDDE0CA7DBF9536A6C83A3FFD4946011D79CEDE30C01681AE5
+A63C3D41E8BD4E57DCED292C521CE44EC200466FD67D158BBBE34F873B11639777B16CB9
+D3A359927C91B0FA0BC9089407B7E5E4542DCDFE38AC9527805EF20A77E53B7DC087BE51
+17A6FF0E0ECFEE5748065B4AC852B08BF46211E7473969B9B75F418F34B1B7D2B4A01101
+E7524E1B1E97F8E954D77A1516E4CB025530C51E597C9CED66768A6EB71819B8A8F7D19C
+11129CD6BAAAF68387ADEF56E6AFD5AB99F3FC82A603C69C73CE4683E16FD64C8D3BF209
+73C4E2DD0B98CC62DCD5A785E37B5625D548C7FDC9EA3DCEF88AEB7895C7CCA16DFEC46B
+589A883C52E688DEB15FDB64DD514BE159D84A573C052FC96B80F8C6C324AC1759C2BD38
+E14574FB8066123530D9F96132E6D850CF01A9A6640EDF208104F2BD4D2A730F191AFD42
+7ABDA77D5512190D144384BBED6D66D665E2D3895C442A513E42687B7F699E0D6237E832
+E83F7748887C7020B4157E4549C9107D9A08AAF5097629506272EF9472BE07576254D472
+9B891A3882EBD1C1A01413836D39A9BF886621CC34A8830ED7C166B126B92CDAC020F00D
+8BCC78D54E7355588DA3F4BB6B79C17A7220FD9495117843B272AB848CE9B75FE567B905
+9989E02C899C47E83B5E31DA0155BFB5AB55C460AAD84BFF0592AE0CDCE2C840E0CDF202
+30436D86D59E51891069757EE9927E28A3864170544D783B5A4C021CE1DE2B9383C48D5E
+82AF359D62E1463653F7CAC9886BFEFF1A1BC87665630BB8C8E54E5FC59371A2FD6E0498
+EFF7D256C6937FD241516D59E55D37050BEA112D3B6F80D8E4ABF3AA8CEABF0166EF1803
+8BCF98CA3186E3881B58B61E1B9676F1768212EC1685A734C7E933DE04750DF6C5CBA03A
+F4186632DDD176506690CE14087E76CA86E1F131A883A0BD9EC10AC40A3AC9CA2ED3AA8E
+6BA8D17D92B7577837EF6B165B14B8AE19BB1B778616DE7E01929F35D35A6362A41DFB7C
+B42AA840BD54BB06FF21C105F6D4F37A3BFD07EF424839E07D2B6E69BF62BD879109D7E1
+512EEE9FAC8CBE968A823202B40BE5574493C246AE5605E6E70C35007943D1A3AD2E93C4
+3D782FCA7B71B8260955664572C5E0E5EE659652CF048DACDFF3AE9BAE2A65815D0B9B74
+60DFEDE302E54227583914BA764AB438B7EE72B4BDE02E1DA8F7A3F4C3431A8EAF8846B7
+1981A44BBE27C77328D6D9904B0DA8053D46A1E314157D17A98A4A400FDCE08403108FF8
+8537E8E17BE44A3784261C1F2512188A341C74125174DAA848D66393AA779382165DF08A
+85C5DFD9785B6D6157ED2C56C6605ABFE12E3306BAA0FBCB253471839D5604B1A7F8AE49
+79320302CDF13B159050D3ABDD16A047995E0AADDAFD97DBC4EF49C926A49BD600CDE0FA
+217D805D1F86ADC7B97E41E647EDD9674F208EE386D868258478E6C77368C17D774B5C94
+4F43A01604C43BE6A1548BFF9717392E8C9EE3234A4BA5B87521F130EFE090DFCC6E7DD1
+678B24D200F8F74699BEB5C7C772761A3AD996EC39427F858DC96748E6A54AE68EC5127B
+56BC0F372BA246B8DE51D8044E6108504835FF697B9631842C5DBCFDC03E12843CEA10B9
+58566A5C4F895E19D96D25BE8B1BD0453C9BB1007878D64354D7B9C716B9BFEE0EF3C974
+25EE83F89F8657AB0361ACD4A52D05CB5A8991D0A7EB6B8CD103A4F904E533CE7198E917
+308E1B54EFC73C956209EA7815181BA790E991C37AE30D2B860B9407DF0572F9DB3C1D66
+FD6957AD9F55D0735AEDD3BBEE354AC5C4A4637375EA1D2C0A54D899AB52BF1F63A79498
+6EF9458A53D6A70E92B915519FB1B270B002BF50AF416589DFAA06C19BF4618121043E75
+E9311D0FEB899F529FFB29F733F18A69CBC868A70AD8F73996BDEC04A9F0C0B5D250A61D
+139290D0468127E5F9A114C9F20A64ED7E78747C9E8A42C6892882C5BDDD22CF6606E645
+B3020D2C0BDCCCC15267D21ABE481D4043B2009B561AEA1F370DC35F3AD9B99F1DEF1D80
+5604E78344CC854F8920431B73749A60CAEFCC9B1AE809140D7F68B29C3A5C2D547E54EB
+26ABF8B884B4D1B06DEAB7FC03E69A389343337E5AFBDFFBD7D397CAEBBA39076EFB3FB3
+9F2A069FB1CD43D7497DB0857CFB7259DCE458E0B8051D607D06A1D9EDF3464A89AFCDFA
+0D23D5319766E8C78618911DDF4C7BF3B5BF7833280C9D7F5568E5D1F6824A0C46863F10
+180CBEF6E0CE7A5B4A5DD9E7D6E2AB3D4C6E50523A9E6CC370F203FC3C72416599BC5F7A
+535323304C8DA8D4306DAF57AE2F1E7F00F4A9727FE907983715B76028B1F0C6A6384373
+BBE35DF5C909BF1321A35F94B80B8BD50619652900F2A60C9C6DEBDD1BF442A9A2498725
+1135E50DC5E00E0A77B22D873C5C8B1F0FD19F8989766CC6FBE35A33AFFD0310C1C7E7AC
+406E85B028A65F735976F424AECB9AF7F72086B269825002570BB8F8142AEDEB07B05C5F
+6452AE38245E167B54CBBD9C2E68675F5E662BFE717FA66BB0630D3508207EB68DC5290F
+4FD9B328605A3B11AD016200F5198F2297349A74024004DC23666255131168E7204CFBC0
+41649885B0EEDAEDE2ACFCEB7F06C1CCCD60661E5639AEDDDE70EC24CB971FF8A6FCE9B5
+2662BB7C04177C57D61D25B5C22558D13382B664A8ED94F51585E8017846DC43A85F6507
+CD5FC51CAE0878A2A86175E5637A15C8B1FAD5F931CC1AED525664AB0F50274489CA64CB
+45A126769C91857DE12580A9B3FA8EDEA623F0272E24C5FFBB12EBFA86F21F47D74EDF3A
+6E780A56BBA09B0270C40217D90440AD7E5D039488F07C39A37FDC6506D4A41B7F0B7179
+7BE84ABB9AB68D4C55FB65617CA909F2F974BECB69278E65F44480D122713F09684081E0
+99E79D46842C5877C9D444655F4FC1111AC31A66C71356724A0CA745FA84878C6FA72523
+0CF1E658B5724BBADE65802FA0B9D3020EC54B4F6A37F1B807AE7FBB3EDE74CD1BD7A640
+C3475F770C7ECB0E76457BF6CCB8F49DD08D8800EABE4DF75B6266B14078C50F70D97EF2
+13460D2C1DE0AC1A260F38001047E12BBFC618E0A46B285CE86C12DB848E1D974A150815
+E66AE6D898B0C6CCB5CA2894FBDDEE1060FA7E385284C961FB271D2F9F88B93863ACF859
+C99B8AD67E950E9BDA8945BB65651EBBB18EF710FAE9226999667755D3839776E5CB3A2A
+99444696867B025CD9C80F75BA9D5D87979D16E6AD090A209AF2C2CC9C353993B7CE9308
+3D95ACAB2BA5877751E621CBA022E2918C46C7D0D3724BDC5433B2919033C2CC9175DE65
+89715C0FCEF518D8565AEA6CB37BDDB69BAA95F8DB1FB4ED3DF2A1CFF11ACB38B7C65623
+7D47DAD0813F80164777EA32A513482772CAE7D7C1C123EB41DCC45763237749C96995B3
+7FC49C33239D9018135B348300EB462A74E1C6ECFA7903D076E08CFF4120F1D668E3D760
+9139BCE471BEFFC43B079B00190D39E553B67301BDFD35F729A911BEB841D06455935FEF
+B9E15C5A4F94E973E638D6D6439C8BCB14BA2429F174169083A2CB620490ACD58C2748BE
+7A3B75B098D80651CA1CA0A35425AE1E100AB1175A19EC474CE69D2A6C1A2624CC091666
+A19E74CF11AD9B135BBD6395873D7050D12052F209D7E10D331FA68E7D327F261DBA1DD7
+45927958C1BE14293738A5CDC6F5872BDE8E95AACE668644B0768AE95F5C1922D391DBA8
+55568F81EF29384A6C5CFB7EB8920ACE45EB87950565BE3BDAD2E939B4D506A12A571731
+DE28E06B674914DE23A4F5A8018B3C98CE7642814D34BA7F77B9B9B7A7E89754640D562F
+7C474D493090D917E52BCFD7F217BA2697780CFD9AE50ECEFC18DDA5E72BD0A579C1EB65
+ADB6191159155A2BF50AA2ACFDCB4F6A732B6D13FF32F5373E2B0DD33712BA0DAB9A70E8
+A571A1C7E2BFF1F6213D4B485E6D5D5C7536DC326CB20138C898E343AB7D7A0B68D8E589
+6B932C20AA734862CF49ACAD12AA19AAEA7A597CC503D3808817AC9D692B4A7677C7AC0B
+38ADC5EFD599C3ED181C888374706491D89EEB2430DB063ED51E59529D7F1BC578ECF6F9
+7E5D07580D16C5D34447019268CD00A448F5D11FA64ACF7BB9B2B90727D579B633BE5567
+EE4CBF73EF4A66B78DA256DFD4E68203EC9AD1106CFE4858229FA2D506FFB509380CD5B5
+9393BB065EB8475FCB89FE31A84F1A27A8E8BD98C90089B2477323B8ABE6202AC1E16CF9
+6D436FD5C6A6F9C8D8A6DCDC4A54BBAA03361F5FB54BFD9ECC22B5D7DEE8ECC0866824FD
+42AF8FC6E2C0694A7CF6596EBC4584E36C4285FECC8F876730274C4A41AB0AB67D794680
+5DCDB4A88D1F7405694AB00B1B2E962F903115B6E3EC2267BA9061F655C371E7C2CFD938
+AF0B323EBCA03C0DD13FAA8506AE0175C15BB3C81EE2056729640EA0510AD1D9EBEB2FCB
+62B83AA9EA827BF7E8615C2DAB4878E7F0E650FE0E2CCB6E6619D20157AF74C928689F6A
+BCBAA2035815DFD15989C976F899F6AD7D764A95B88D49D4D218478F93816C15451318CE
+9D67706A28DB99BAA291472753875F701594ECD3300A7BBE2EE2405140F1258C7062BD0E
+3BBBC0490876FA4420ED610BAD364B70B2EBFCECDAA9BC9C2003C261D25D26E9CC4382C1
+BF85CC1D29A1B61B529DBF8433F3E1296F57F21EC5CE7E9FEED5CFF204B710513713937C
+A12DCC8C8BE277B9E3FAEA215AF65A256978E1742A77D733328C4EB571B59E1C1DEBBA25
+983180784104F92F6137C6B0AD1124B972EEF5DB2187CF99552FA8F0DA8E59CC5080C923
+90C5094CB73EDE7D7AFE90C966FBAC632B4CA522F84FA7B359EFC0D66EBA3EEAF11276CB
+B75D4729AB0C96DCAF8EBF025FD4B020820C75C3275329E821B900B2443214650EFC4BD6
+13D65A0B6A948B56D092BDBB621AC103259CA83B4479BAB92C4135D84AB9611BAABB2900
+BD5598CD527E492924E740C62A0C5BD9E46EEF375BFBA396326530B724AD5AE2EA33A94D
+97236002F8F9BE022079C0A4D4DEAF7C807805111B33FF3E571481BD00807C6BE332F7AC
+420585CE8194E7065DCE1DEE6C1DD6F4EC86E2B759C019733AEC7C8AF3CFBAC3C3F9400B
+15EA33E539BA9D4A374628D9A6BE2C8A7E9E581D4636AE4749DC227E4C20F171B8C91831
+19A89EC7C0DE499377B9CD83410E3E4134027B0C278DA06C1A2D4EF58E6DF332B8500194
+9A27764D804CABF5306665D6454EC3A351401190136A74A93ACFCA072382E9B96DB80234
+22BDF8016B87174F5C663265FCC19DA56F4C2FA2858537E63FC316208B0E9745A3F95BF5
+B22A2A35D2392C6D13398C0F73C4145335986B965F5232C72FD54B8E0A42C65D01A68197
+3D296FDA860C9CA5F959685E257F6A364041CD346AC12B96978427E66F1E0E236C3AB17B
+8627523A803E13B8B440696CAA14520AA198D4D15BBAA080EBAAF5E51B81F9B18D565DC5
+20C567B1637A3C88E3CF15049A718ADEE740197269F3134AF0D73AABC1926AEB18845331
+77D9EE7C8BBBC7715FB14DF9235AD0FC5C744BB3348DE5B414C6810181F3040074CAD492
+1052A6071CCFDF4E46732807159129C2FFF64B5FCB97E94342118F64C8A797C934C7CB9E
+D39E6C6F8CEE3D59EE7C1B395EA62C0D7E6A6D358F2504187CF1A09474F20A1268473BA9
+4ED5123902D3E95755A2CC65CCEFE428D7470A0CF02CFAC62F6B4A2E04678D155933E785
+4C19E68D277586BFD5150210652D8529B466246ADEA340E7B2EB9F2F84C59C0AB02A911C
+3C35814F28588DD90083EFD9508B04061C34213FC445016881BC90ED59141F387FA64039
+7DF99FCA57CBC88B122F2A220C83F9422DC3F015F383FF74672E03B700228FD7F45CFBC8
+D2962FD4C8B4BEC514B590804F1B272664016506EA28AC9F39E410967FDFEAEA30BFE828
+EAAF904B6B9412121A45992AC450A62CD5AD611E77A7197A004335D816CC4200BE907547
+59046E7F2A98D00FC9CF5DA889B8CAA342460734E189608E405E0A07F1CCD22EC028BFB8
+9AFD007F2CF44487702F4C1E68C9DCDBCFE2706D736AAD6F8C1E95A65F981185DA4CA303
+292900E668E8EEBE1998F7E262BDF432838E26843705CEDC8BB1B6819A81E90A35FE726E
+3CF80DFF77F4558532466B92FC045DAA64D9597936A3F4171A3B9BAD074E65AF53087938
+41C158393D8A0B2F948F5C8B9E371EAECE0F8A4F4D24FA4EB334127754E2F45191AF2B0A
+242D55164E271F86E786C0CF16057F4991177154D823DE296C3146AF47A96A14B3391622
+F6A98244CF82D3775AAA5C4FD3F6AA1023CBE8AC40C1B677201843ABB83BD9985291AB14
+A0B9C48984773BFCD9E72C9EA0246025F4F75D90FCE196E51C5E16A4298966264515F9A6
+A743D8BC7980330ECD7A0FA2B495ECF969253FE43866AFD33CFA1D814D9A13D6F043AF8E
+06B7D9F5D0B2213B3CC8B4660EBB6601A9994D0A39481F0881CE4DF2FB9D0099587560C7
+EF5418899C8775773C84C66325B5A75E2A3706C81CCEF5F171198EAB1878B962AAB7D075
+2561424B043711AA79120FEEF032302370D7690BFC8C44579FC54F217FFB7B6BC08FBD41
+F5538C5C4C3073EFC1D72A2603B7809106545406528601BEA315A8C98913FF1267662B93
+1E772F5F834828932C527F3E9A3C217A45FECFE724325CE2ADFCF4AB2DE8FC730111702D
+EBEA0B5F6D290E5C96DFC105CF3411D006184630DFF249149DE3EA7CF6782E5BB8B1E464
+BD82E1BC12AC97EE09C035EA77BE34AF44C2054C3BBA702DD5C7014F8FA1FC2FEA250349
+2028DC2009595FE635A2F6C28814CD1738ECB80E9FF74B622AF2A539FDDA64D510E20F45
+D0005E3BAA5593EE8AF69F8DAE39BB80DE7EB85E2A2A9BB7BA6477918C1EDFFA3885C541
+3EEA02062B78C4FEC5BDF9C4B931C182FDDD90047558A2CCABBA04687000AA6CA886FBAC
+F559C6CD851411BAC26CA88EE0237B30A93149BA75D8F286CCDAADBC07DE56BB498B4B37
+B847DB7798A0F5EE1B949F38348EB0BA899D4B026C554DC7F2F647F9463FAFF484B2C973
+6A2DFB3D8C7292BC13694A9033072299BB546CBD65C63C7E9AAF1F5758F660628AD62223
+8E3DE3FD95B86C0D066CB8E06A0C2C289A425BCAE4CE2D052FFBD1D09E942C3FF8DBF7A1
+B28FCFCE75F6EC72676BC359FB01045979CD3237FBC892EAFC2B08899BBBED91EDC251CF
+479EC859C25654F9EF8CA79CC8598CE52F8E72FDE860701B55CC6B08A99EF13E74B6B42C
+E83EA9C5B64C563ECDDC98990E142DD350B4FCF7EAEC5D2D6873DF9C49CC232482C1741F
+7E85E291C54C415E0D63D79C4797D2931372D0B0BBC85A8C8A080519C099EE4C44A67F6D
+AD7CB8E5E0F3E6A6CB03022391D1DF07925C465AA6F44E677AC89B0533C52135344C2A11
+54219BF139C957470329483BEF2B1E0E4453E3EABD3A6968D533894B6E8F6C280D097B8F
+530487F0FCA1F64D218690D77C8BC4CB865D59F4A51B478D7B970FA864B9FA5CB1AFEADD
+C169A81CD3FF39E055395398503AE8A6CFA36321F10E41D5AE406A29F6B342D91F0D3681
+86D12ABC6E93F55503615598AFD70AA3E3A4B6C3EA9B41AE62F26FBAD6431B4E6EF9FEE6
+AEBF77B8BD3391734A3BCB1DA50528FBDF45DEA9986B6D5246CB16822DB13F02C4714862
+2CFCC3449890DAB994F51E81A17F3AC7A3A4A1AD24E761B69ACD695CB7F2F0F3ACB8E682
+F488A7FD2E4735E197CA9CEF3F616A798103AA2374CC1603E00F114785B665EBFAFDD638
+F3976FE8C65A6E057AF4751F707D25FDD98816590916A8D9B3FA07B1809FE1A646D4D854
+A6D8E33377D44E7CA0BC957D9D8608A5B1CFBC9CE113FDBD7A2C21EF286712171E3CF3FB
+FAFEF8C99C3A872112BCB6BE8554BA9637D742E766169FDE2D414D4BD792636E5FF454B0
+A754A9B73E871A97A0F984D4C04FD37F439F3E718153F7A6B4D0FB5F988DEF1BE48D3835
+8C55CE2ECD3E8138DA3A0ECD3E641FDD3E6E25738A5DD67A0521D7C16AE1D33032EDFB69
+41A2FB3908F404E211AB10C283D3F5C5D29D91E2DF0948BD401F9D4FE9D433BF45D19890
+202E59D1113FB6531FCBACAF41B2835BEC3A0828E2698CE376C9426F13BAFBC37A040245
+37E9DBF5263443D90D611B589DE4E5886A07CBCD820E67DC8E856CBCBA640595C8997771
+58263D5ACD0F6A26367F85202B814287FDFD1CE3DA9E87280F6A1B95FB7B3D49C925E428
+A08ED1C49B6000FF199A54D8EEFFDDF2614813F73B4AC9812AD9FB9620CAA826B5500888
+CEF79EC9B2A60E3292C7CF1CD888F27890B6105168A588381E9AF8E48B6A544482C2E1A8
+09410DCBA8AB2D61E5F7F1559E3640E92EF7F1B120C48E9D80696939AD500274FF74D35C
+3187BD80F91F362DC158A172B7D5D98E627B5C6A7BB39D788E96BAC421C2BB0AEDB4B59C
+7E4B765570C8DA18E12961D7FD8058D5C6A319A55E2393DD17253C7E72656AC62C2BAE62
+22CC781F524C4A6D0AB7AE39A01FFDA7599BB2FAA181B74637646D41E6248EA808EF90F0
+46FB5354E1231A8D6BC1F66E2103C8BEE70C99CC7AC9C1B4A22AE7BD50615071A9DBAA1C
+F7ECF355E4D41F5203C67E7929FEC024146D3344212A4BF9E07067F23AFC3790B405CC8C
+4B8FB23C3D70DC241C3F61432B77F7D3BD8DA7DC6BD589A38B660DDD403211D4AD607ED9
+6CB06A1631CA408B7A7948DD1683765B092D42E610154CDD9BE2B201029E0159CB5C1094
+0CED0962C2300683B2FEA2568EE244EEE9F398E187015237D640C67D90F793538055B023
+FE39F6B20738B0C648B01104F59368B17E84563EC7BB88788EA238863FBED96940AF91C7
+C1C4F8E27881CB688CA17869BD4979F664D49B8E734A071DF96B9FC789D341528974DB35
+963261C61201483E1B07BBD7DE35AC5B30A59F0C7C7261F7F90162BEBD92801AD8E9F22E
+FD6917D452205E9ACDBBF066DF651501A01664F577A6C6F379578401BA8179DAF52B53AE
+CC1C47F80F8CD3246F4A7F72E9900E569A851C41C3E06CCF3778B3ADBE8C3DA19B660921
+96EB64A7042EB34DBB51E2DDC636F517937754E69F8382719A63347D73D2DFE54A005CD6
+C26C29BB55D00A64A0A29C27387FEF4472978619B9CAFA2A3026E218B42E74C44D6B316C
+147E3A8789CD62D9D40AFE225196A308E2DD28C1C871FA4D379EF4E61ACE1029007E7855
+1305F5E82E1E84E6AF0150E23022A285F5E0472D494004E723DA807A8D7404CF3A251CFC
+DCCD75A98CC1C38B228468E112BC8A8C935F7B604E9D23C9108516887B2D4EBE21AF35CB
+2BB83DD1150F6FD29E35F95295A62AD06DEC426BEEA5007A9BEEBD19FEDAE0D98AC7879F
+DB208390FB366D5DE13214150E3181142837E9835EB09C7F48CFBDDD4368AF62DFC3543C
+BAA448ECEB1C592703E4AD93CC3DD5DF09037A11683D5A0A2AE44596D2B963BB744DC762
+35A986453CB092743F3146EDB6FAA3D51DCC426C8C75E306A5B201FBF5C5EE3DCE859DC8
+533692D7FC9713C3011602F9004433538A02E08A9F3A73C2CE43F907E42228346B5C9A4D
+17E542FF5EA506AFD38D2D3ED9125EDD61AE14C9845D9218BDB942FADF937BAAF3E40248
+EF4E64BB0DEC788D507D6A3F4FDA2417027F683DBE018C8675F51AE6B43135C7F56C96E3
+661DE5FC33C548F9DFD5699532CD5242B5AC3FCE081E1EEB228C72494659238C7A0086DC
+D561D52079476D387A97949A85981E3F7A1C232BE42D87F6B594D34089DDEF686CFCE99B
+CC1EDC9F61A45A743C1B0FF4C9D063658D3B5ED07FFD85F305F6A849395C891966F28CD0
+66C1856B9AF76C42B0CC3C0A42D3AB414A3DCED01DFE89B1192E7909DB2B994FC6D0F4EE
+5435F2C5B3438997B6D162CCE6F3BE5EA6728ACA14BE08B94662404EB2507A0E39194882
+3A78C96E80023E4D902DDEB468CA4C252BC8498CA374CCB4A32AF623F2E03C92FAD6C5D5
+617B8A600651AB69B1C79BAF2E6AB6EEAE7B5E19BE774C1CD52FDBF06C8E908C5A798420
+9BFB6A8CC8258EB9ADD1EF0CB9AE53D7AE42D78BE80619655D6F86C464FF549FD10D1CB0
+DAE66249993F112ACB07C55A78B9642BEA3E55878C426BCEA2D6F99C260C18BFD3E0558C
+96ADBD42C6D816413B3DA8819DC9D756325218BC00E082BDF3F090233BECDA8FD02352EC
+215BE3DC266E87A96EEF56F991342B335AD8211BB32C031ADEB1F67F942B14226EDE57DC
+8B2E1070EA2B36724DEFC60FE811E0CA0A79CDC96A54D731E1357E17AE0F8F453D6001CF
+6C2136BF3B6C264AEDB7DBCF2DAAADB28406BDAA03702915429FB7C1DE8517E109C841E3
+54C64155258D7C735ECA48722483714B8E2983835B02019009E423F2E1BD04212E14E0E4
+8FD6DDB001B9CC8AE1FA8AD5E0C797E8E3E0EE6B661A455029F678403F749A5673BDA5CA
+9B75C290B448BAB10BE96FBE72B08081E8F81CDC73325B085E9C1AAA563081FA9CB5F454
+BCDEDA020988C706B979CBF4C38229683D28DE29A16FCED4702F333899904E2974D666B4
+EBC38CF0E58BF2460EEE5C8C9D957E6F1DC8F64D9837AA998258C63FB04D2777EB64D88B
+569465B77553770296EDF015D91A7599CE5104B7F34933F514FCFA633B0A4D034C9614C8
+0C79A326EAFC7DF30AB0FCB2916B174C188C584694E90944775A6A2EA07526229BB74470
+D62BB98F211EFA4A2512FC2C67038A373BEADE06EBB121DC04F4743A3FB9455EBDA32DF9
+3545333404C1FE908A609A1E143EA851ADB4916B7769CA4AEC5CF672C071C13B9E5B5700
+9A1BAFCFDB0C5F6ACE458B6F1E0EAA69726FF201319EC671A96D7B69170DFC0DD0886FCF
+CBAB63112D6BB140C7E4683BD08FD8CF585173316D579B29525DA5EE94949043E85BA55F
+403C9106FA39424454351EB49C43EF09C2AE7434A82E43A3FDA5401C85791C36C6E41849
+220D820D3726B3C336DE14CD9BBC886376AFE31BDC76E1237965C9DD83B73BB4F1824294
+C9C43258C8FD14D352B32565300687F8AB831F8FD543EFB801CFD620FB8DE341434E8C7F
+C0037AC3EACEFDBED459B91A5C2FB186E0691A919A9DE8BD06C40E7E94BA2E1A0D492CB1
+726BCA49DAF79CC48B1AC8E3D49A5D0474BFD28B2AC84C548C138CAA52190FBA97066B9F
+CD25B1F8D51209B22AFC03052C4E85B255EA4D723F5817AD29F285F2AEDD8D91793BF08C
+C087072AE49F5AE725FB07EAAC0B920249279949EDF0E88D72111D398E61A5A529A171B7
+6624E2D938FB29EC5F04094D4A76ACA95C0CAA7EA312E571CB2BF04C5F4EAEDE7FA08D3B
+93264F0ED646A24257131D3F3E7230E5DCD4F0DA49833B60942C89C6F925A1F7D3B9BAA3
+89467157DC4F674E5786AFF13936B2B0B5EACA795ECD88D386D8AEE9C0E8903BCAA31EC0
+88185178D22D2D1D48461F1F3CE65A9F9B14B0179AB969E600375532BBFC941EBE1E6514
+1E60005815A82E43D7F37DB4953A026F3FAE51203E9FE9A8BBE122431192EE44E18B521A
+53E2A7C9320D4A14BD364EA011969100F19B1CB9736C8C2555804196EE7BE8BD92904123
+9F6105B9FB5169F48F7240C4DE9E15E26DAB16ECF08B70E2846F566823FA5790F5449211
+C46D530D1F051A6F6C53F5EBE83FE6EB2757A52BE64F003B079EA6C27D27378FE8A9D612
+9CADC7838D4107A4829435095C474895ECAA68DB7F06B86160DB6D2109D5A4B15CA31352
+49B1CF979A73F22EC205E456617345D2784236F7B243CC8D5E4499501D27DADFF5CD044D
+95ADDF16A881AAF6D341A517FDE8776BBBECDFF5C8185CD57AA9E633B45FD5A3D7B24F09
+4973842E2DFA3C7E1F1227251330A471E1ED712AF5681719A87DC98C5F2B114AB046BE4F
+A761E95BEAE3BC82C22AAC205A760798CFABEB6D4B85DF74397676301C58C743319E5A8A
+28F3F8A53369EB5E2DBA59DC741EDAF4C317ABD35EB269221B26D0C1E184E6040947DB4F
+83957BDB8B29090294672862F957AF4F73C03BFC08240F69C830FDAF7B74EA32CF4C33E3
+C1A869715B982F2D057C7623FD77D8876188E15BDD7DF63396B9CB5F4FCE88DF4A54B4F8
+618B02C9E8E6D109CA6F9132445BD1F5488B7A3A0952939FF49EDADAE82B5BD7B44FD22B
+EAC4D91CA427E2CC0FC14E7589B74957F7A38D70F0A0DEE02BB618085B1FE8E47F57BBBD
+A6F1C2AC19BCA77F6669FAFA88CEA8F8F15881E8703D384A91A68E185914255EF49251B0
+06614A30F1B66E0D29678D077E4A1A71CD741FDB126F98460D5F71F0CB64BCCE36D5FE93
+408BC0F119B3F2C08756DA194AC88B4255CF83B7187167E528A81FF43DC06944166C60B1
+889425E6C2ED420AB6AA3F1E8C37F2CD353C489A7B4C8EE87C6543AE157D5FE1BA43C92F
+96673D99F82D4317B43B6FEF685A0DFCD0CC15AE030B2E678209FE4D9D1E1BDD61E99DA6
+E3BBFA2BE4B2E1F6BDE850B22A73998FFCBC0E93F2ADC10EB9E983EC6D3E2B8AF16DF1A1
+ADBB51B0F501B2E501F26DDB24CE95065D7A3EFBE0EB8017627901900500ABF372E0A225
+5A753EE678858323A2C64A87969F79467D18E116CE5AE8FCE25DF7BEBD3FFD3816ADD372
+99BF729A5A8C83429B27C5F90C0C5FECCE85BA254F778105CF367EB099DC472376486F31
+CFAAEA32C93D37461506441A5C7A1686FF5A3C75CB6EBF9A5DC330931232A327C8F381DB
+FA8AC74CA95A2B4FC0BFE3C9FCC65E81BF0D66692FB6DE4A3CA6F923A3C806929237D2D4
+787473A17BC426028E528703FBECB371FEFAD23A1318FA7CA84D0DF92D7E1A694110AC0A
+FB97F0DE592F19BD571D91521A61DB2FF6393F91B31324716B1F95EDFF62D3AA024CDED7
+899D48997906501E1A8A6BC554045F18507D3810D603C13AE4777D4EA68036946C6E30B5
+1C14545513134C00DECCD3BC1B97ED0CC3F4D03952900D5160B31E09AA2B52CADE261922
+9E5065AF0FE43D7C2D4AE2F3F1C39932E05BD85B64AF4BABBF3F1420F552FBF5964FF974
+69AAAF4260C3948F89EF81B60E45C14013E933D44520DE6BD9FD0E4CE2FE1E3F601D4C9C
+3C0292FE0B9C7517238E17550C70C11A68E10CA86A961EF138D725F63C85788F492A91CA
+39FF770A09AFFAC9BB08F19CAC2FEAE2C7AF648815441193C0FAF89095E0D1FA41B0566B
+7C8681F24F8A29B64AFE0862C2228B6029F9D8FE5DFC5225BBCBBECAADBD8DEA17083561
+7AE21C02E5570D61F4857C88D7B1866728E2DE6664E14599444B7BF2C6783A43BAA0D5B0
+05F4E9D0A3681A840F442075445C4E6E5285F81672241EB0ADC84E29EABFAF33BBD9566B
+EAD06A878C3EDF3431DE44F5F6F29DD544E87BFEF51B8D064E32EF4CB42DB2E08BA56B87
+0B7649E98DBC648C8B1095260732A93CBA9B798B905CE526C525FCA07C3B37E82C945517
+DAAA9A2E08874FC34FE3D2C1C4318E6D375EAB5DFE5C4E49990C451E890CE5EAAE7AF108
+0145C52C54A7810AC9BC92CC48F7DA75CFFA70FC50AE28FA10E379140C64DA594F3C4EA2
+D1F666E1670F3C29245F9A0F857FEA4DF57F3848043F3D41B21D78370668EBF19E19EB85
+0E6A40BB7BF71455FFA756C32758857D73AB66A14D3B059678E6E71F9E2BD0C75BB9DBCE
+57C3ECCEE3F2B21B44DFCEBC387CCF84F01CD50236368B309EED631D38ACF00391C0E92C
+205D7007BD965161223DF0E046FB823A294A2E655E2267D07B0037CD83A9D5B9AA3CA8B5
+DBC0E8F870A2E908054530074DBA0CD3191984B293B7DCE1377AD60B197A8CEF1A7777CD
+C94C37B240C68E841D99774F735AB2DF31F77FCA441920CC8E300E27FDF3750BCFCBB8DF
+53E4FA4E6ECDC8641A6BF0D29543D4B3CF82B3317E065744661E829D04CB8CC06547C86F
+2C5B6146EB0F8A62F4B7918588BB929749C3A56BC22BAE19A834351AE8C2CE654FA8A3DD
+DD544F277D3F60EA799C7FB4DAC76404D6DFFD58A9614D6FBD59A91EF6A7DA6486BDE88E
+D75BFD7DBF63FF970DBBCCDEA13585EBF646CF189EDF06BC8945B092677FC0F5E7E984C4
+5CF0A701FD06AABF1831E54376BD8738257FC3571952887D3A29F492D8F7EE51FA2733D7
+9F1BDD92AA3A97899B8AB61C9F5A3759C4A5D2CF41B59C7D15A65751B0D781F1081363E7
+C123A953359653DBC53F84557D8CB579CAB56C2A82C2E35F562AC97300B22060FDCE0BD7
+C70A86C78E2DA0C5447B46F25821A791DE2518BBC3412A2FFAA7BDE8D9BFCA617300E922
+83BC36A0BC88FB09153CFA558BBE8D2F8EBDADC4ED0887E32ADA278A788D6A0EEB40C4CE
+9CC56B6A4761024812955F0EA62BE566E4A73D7369F558DA2C220DA21DA3F5820282186B
+C387BE4F26E1C271A9B04FF78C34B3DDF83A703003A0890DA717621E8299ADE14F992567
+24DE3C568783B361760A000E2E64F5230EFBFABDDB6CF1D7187762422CB8FDDF60FB49CB
+26E40EF0566D3EEC2644AEC44DA96DE6316C0411E2D957E3CD6CAD4F5136D88E123D6405
+F9180116CF91B5331A086B321F03B6219F559BBE4C15F56A7EE7E9464B0279C8C82C6037
+D94EE0DC7FACBAE378EEE76EE922A9B76203FDFBFE71A058174E9B453F6F76DC010ECA1F
+C326A525A318D3692B746B27C93A6D93607C0EA99F2B0BE4592610894A6DD3271A3B153B
+8EAC917FF3750A38E407C34D3C4312EAF6504EB2A3C02AA96DB1EE39D5833816F29AF03B
+A73637A4D7695D255F6FAE38050D77668DA407B93B3E90B1DC1F8F2961E97D15260414D8
+C7F2FA9718CAC3A0ADF2EADF1BD733D37279CE14B9D67CE59DCDE94BA050F90118D8FB92
+9EE7DD8F347CE29468F0AD3F3FC49445942E0D40994C6917BBCD53F21E536E51423760AA
+AD01675E2F7B344619E1B23653E0FAA7F5A4AFE9A860FD993B907FD1FF157C99A772DEC4
+2374991154510D6F863F1C2685A6041A65D3DFBC17857F0A0284F5F43B5BED470685BED1
+F6B88EA20C9C01E5DE3861465B991A64BF900113EC482046D625F25548DEF8D55AE85F9E
+9450663CA68AC24D8C2C332F4E5B09E46497532938201DE4FBD0E058535724D971CA8112
+E93B9A4747B11C8D86C1F53B7B69EABD78008B25326D91AF10586EAC2E4C6B77010F065A
+345614E8B264E2B801B221F990DF04BAE5694504BF42C4130E548F8289490ABF3513DBCF
+8228B7B72C93EBAD29141D0CE0C7EC3EE514AF3D589C055047475404A6ABB8F672A16170
+F7AB698659722DCD125D781448BA837D08DA2680A45D61FC09F7EBA66DE2FD8396460923
+0CABBCA27992C84A5DBC93A0948DA62EB5353911BE7784969DCB0A1D9155BFDECF2FB4A6
+71D8C6A22083B406E97F54AE206086BED9BC5A79E25DD59A680F13C3B0F10AE430F41D40
+078FEBC20630730CF1C1D42248C389AB70117A9AD33F23FC4011B8CAA44FBCFC58E9ACC4
+697C9D160E700A8CBFADDF3103F77254C2023CDDEB01E11639B0258BE865A42215D39D64
+A920B370ADD164849D16E9E1966C419C7BA5846F411181FE7CDD1849A84BB65AFED79C81
+4D1E898BC23C6C4FE40108E986AA13D380124644018432BD2B9F1D0FEF122DDCAD325197
+58DB8634ADED15D27B8D5F5866BF977E80C4856657BA1886CF6277E7967037A3B4841C91
+2391B0B0E31C9149D92915EF34560362280F27BA6F71D786F8E8F660D31EEC321BDE6A5F
+A3BD40CEB743A96D1DE21C6DF17A2A60D00D81F65DEA703F58D3F9B8BBD8824BFD284ECF
+97D3376B820BDE5317588A361814CE9320657780995F612E52E2A884B41B1201A486AAD1
+9F4E86BCD2926A1F2109EFB6F94A68D122467CA48A7C4D4658E3BFDBFDDB9A4FD30E6C30
+A8EC2A9C3AC8CA5D3A766C4E69DD389F57105331211A9EC42B7F1B8442FB8E8CBB446851
+7410C6359181DBA15D50FAA480CE5EADBF5D4B0A837DBE63961A6EB2551F8B61BF07AF4D
+B93A1DB37F83F2BCE3D204B10E20069D61C2E5856DB7783779B9A6D1CECC3B49A4DFC527
+69F3C0F3613652E285FAED86B212EDD9DFA7CFAE22E461E55ACD7BABB4541883F43D9414
+2B424E0DC4A3DF7A9A35C19827865B5F3BEE54ECFBBF4006EA2C5E34284573915ABE6F04
+2C865B4F5E13FAAB905A54BB32477CB6D5D78D08D016CA6BA3B912E2EB308D65E8FC73C2
+CF6931247053ED12A1D83C2244506E3714BBF6AAD4B4B2C38075AD3A7E65EA1F28C20012
+075C9413DFFA89BED41BA67C5BBB5CDE2D49709E0D7959E98CF12F409D59DDD4525BD997
+920B45029889932180C19D3D86772DBC45641EA4B823BB14D99D6252160C936E42DA534E
+B79E8A830D7C13E221A24BD2673599281DF73A22A9B86AB8CCD05C5F571D98D7C66BDABC
+59C4AB4E511DBB04A806D546745319AF6429670FD02AF6AAE584DA2FFE969F37F09C6025
+E130376F91E07068D14CADE39373F17FD271B000EF1B36956F8F712A6D11741EBFA787BA
+D784F39ED6C3BC6ED2C0219B2C1B6ED5E1ABA6B29556F259B589284C56D4596DB5A46C33
+1AB1BC5323459EEAA442BFC27A41F5DF315E69028E6D2C40E2D9F6C1247879200A6046F5
+A639B97FC1D579CA7B0A89DCC72EB0BA59223EF8A5A95AF7782A3A7BC718B3431C65BAC5
+0A1DF8A54AE1C9F7AB6A0846BA0AA491F5E869726AFA8F49431A120B466E67749019634C
+99A530B702202401A60129426DFB5DA5FB7D21BC41D8D8516674B00EF2155C16A318D2A2
+BD36910268379DC0C4E4EF558AAC898BA75E9B7241BD7D38870A2A7A9ED38ACA97EEE8DF
+A9DCD905E26A4B293A2EBB2F97A1133A68193D6BAEB1A7EFDB64A6619E83494D387265D8
+625A0F0DD5C2ACDA7EA15198B2EA86A82E41C47F4F7FA7488441B49E23E9B04D4744AA78
+DB347CB13BC0C106DCF79EFF14EF373B6C82F209A5EFD22AC794CFCB658104DDDEE29C43
+E3A68A3DE6AE1959D5E9608EC02A0838604F914466AA33A1D6DF98B91D1C0FD01AA979F7
+067ADF94E51BA8C4DE6D6EC3872CDE31D9E52F9D36E17A2AEF64FA2F519F4618A05C8579
+C952441C627CCC703E0152E763676E4682553C707E29C1E8BFCF985AF9747A4CBA984D3A
+6B9F21F661DFEFA4C4A979C11D9B98FC5AE4A96A3A4B14FBBF5D926FCFAE386BC7812E66
+8D060D880321DB2656A5AADB595DD94811ABEB1916AA5661FB0F351DAADCCD8FFB34400F
+C5BCE6DD0294F0D11BC984CD91A1C20A0F35C87D030B88EB6ECC8E6ED14595564CEDD93A
+899327B5529DB5EF261DD7DD39C86A48153C0EBFAB83E4838539D10C03F9A73BD36F5D98
+753E9607E092C2E40322E756866F1F2F515E9003FB6C8E803837B635D27A40E1CD57F8D1
+B7D7B6AACD50B9AE218F76F0388165D6D15DF28BCD95FAD0CEC83DBBE41D6377BA1C2F32
+83961510AAD88096BB8C70D7AC1F600293470CC29A644F2F0CC44C3BBEF16661DF2F5D63
+C06EACC6811EAB4FAA9896A96A4CE2BD2430882AD3BE64A48435CE7C64625CE7B6E29DD1
+E72418794E0AF2062BB2CB3742A11D6DC14807963120897879B21F53574A3F92E440937A
+BF3DEF070EC282AA74A33C168E7AD8B42AE95D8A556E36B7B8CD2BE5FA4710929D19ED40
+585845B001E938B67B2E3016CFFC453673FE335C8568735A0536C01340A868119BDD64DF
+99D6A67BF7AAEDE21E6764DFAC4559BC70948AEBF0ED6A0D4B6CF91F3CAB35C1D250C8F3
+AF6899B1ACB86FFDE2071CBECB8684F245E3FC7D6A5939DCFDBEF25F89B23E87F6709D07
+C4AA6558B84D6B907995B061460CAA80F65AC268A636F5005FE7D5E341F4A2D81BB18CCF
+530AF2E3909DE8C5C752184C13D8CB38C928741A23314DB67134B3F1E3B8C6572B81A6F3
+EE99A0B9511EBDC3A0D73BBD5B640E20393414A163710A175B6EB289607A21071898AA2D
+1FC796F34112DAB1A5DBD5EB530B9F983B9E6EF9F34F6A2AD64EBBC91557E092183DE1C4
+952F053DB8A385482B14FE008A64211A1AA896877C0D3D92EB8ED9706C82F7228D45712E
+6757C5DB3E4027C397C03688684B6677181DB9D4931D76F6A5863244B9CFFD126DA44F42
+C735C1FBA0861C509D13C6BF874748245BD5AA1A53ABF78E3CC071B738F763CFB10066A4
+566BC8705576E03BA6EACC452AB45A87A659F2FEDF6C1EEBF5D27FEA500C676ACEB6E301
+D0AC73D06727B6E117301A7BD2C6670B8D24C27C135CDD6F73E2FCD54AC5E2A9FCDC495E
+952669A329D51F399168B6CAC4C85CF5130C9385BC04588A6B40FAAADBF23DB2E3F8DBDF
+E40C398D60F2FAA0616D58B93A99EE73C351174608A0283ADF424BF1F38E2B1293F7FF51
+1168A0900825E4E840FF8F4CE48051AEB306EFCD138C3B9095E3D668B00FFB34B2FFF121
+605E690C906534F1CFB54AE28DECE7518BED0996CE2D004081170B57B212CFF1EEAFA8F5
+3AE2531CFAD4102BF20D6FE8D3781DC5CBC6D25D28BB5EFF9A3B3CA7167300418D1A49A8
+3F9B51C9C8DBEC737F369636785477F81FC47B0DB3153F9BE7D3543E89770BA274525B32
+9A00EF86F5CBDCDDEB453BFEE5F60CFBBBA86A6C8964A55E8AE160178C72498FCA6934BF
+67CC0E352AB1C525FE6252F7DE5E5A3F60CC47A6FA177DF59F3718BECB84CDAEDAD9F7EF
+2E997BAF70986187968B14FFF837CB8460EB9FC46AEBB99856AD3FEADB8984648589C80E
+A00239FC3C191489A14753F87EB0BDF8ECD59460B2626196A0787ACF2A21A1BDEB8AC5C7
+E54FAB54720EC2DF8FB535AEEF53EF0C6A5F51CE5E53BF094DA04E41EC463E3EC0063AF8
+42896D33AAF86A47E0A6625C49CDD62974C042894B658BBA341656798FB47A7572F27A58
+3B0543BEB529B1EEB76A62BEC8B76276A3BE25B3BF0CEC70052D18CF711F8A32B7A7212D
+FBB476337FA2B1E3F12F3795B5A47F3D384754599448EADACC086977136D7F1298BB2ED1
+EB0149BC1F13301CD2B8585B5932EAF72F1CE86BE6E35ECD535FE0A2698374DBBADA32CD
+AEBA93C3788B3BB08611EB0B8B9641F28981284382220B7AEE8B433189454E3EF9D7AB32
+44535D150354480C85A988354A90485ABFD94BF798B53FCA319500044BD1E59B8A945B58
+1F7072D26021AF822571F9F02D0BA2BE3D44AF981BECAE0ECF3CF12D9BB1F25623B35753
+488BBBFA248180EFA37DF0B4CC277F074D7D1CC2F8EE22A44BB30D3B4BF98578A424FB78
+C8191CD733A4945626B33907AC0C53A89AD54050077DAAE4B94D0890B56EFC2740D0313E
+CA173C59B4CF25F7C174C8795F8B04EE87A97BD45F95BBC2669D328C03743AB3DCAB2F42
+E9A408C572AA8EFFB0802108A05E504819CEADAF4D039C87998DB05CDF326B30714B9CC5
+A88816761375D9F0CF532FF87E363931E024D146F28EDE5B315C8FA540B75FC6470F2456
+B6477AF542E3F377D2B2574D7796C815BBA1E07E12E2EA3B84CC037AE08B6A6DA2E75B47
+C97E17B4A97BFAF1BCCE2ACB67EF2205046366D3DEA69C815714FD9698404ADE0F456CD3
+5F45F5B254084FFB319B3048491F81382E9C9D7F71343AF52D68B4E152A21B073E9C9BAE
+61F9F3C6B41E7F917FDFCD1141EF87321BD732F0541717EE1DC4197ADA368155D2747596
+079953820BECE29B58073B6381F98C14FC6DEC9A8DADD6899744628EDAE07A32B71AE0C7
+987F5390BEE60F0AEF3837B7CEB98A14FF2AF6CEA02C66ECC9A4DC95742D1BC3F7F16BB1
+3EA286902A66F4E19F81CE78D484C074F60BD85C15C363571672C643FF613B4594F4DD66
+298BC5A594D1E42E0637FACB2589ABCC69A02F4B103CBA15914032D9ECF4FDD6D06A28A3
+EB4D8BBB3055AA1764D78442D766C525DCC6D7B984595CFA23B93CE1EF8A15B7B7F3897C
+AC33FEE97E46658AAD20981EF350189D680D409ED78CDB1D20D07624251E41A230DBC236
+02592DF39B577DB0DDF46C004EA4C4483F9D6A252AFD4EDC2774DF5DC56665DB18CC30D5
+A1579D32369E738E24E3F450B6F3D650F1C1D89AC132AB7DE39BFCDF04096D5DD258ECFE
+07125E9C58D4BA2600A8E3A29C151A173145734E5854C8D65E779E0F700EFE7A08FC42F7
+F716D24EE10F7A3A15C0D14FD89222F7ED975CB24B8B2D9461D675523E122D5049AC3C3B
+5DDDAEB0D0B16636542DF359FF73893B9612687D03396F4C0D590FC83AA3D1F0CB7F44C1
+849D8935A777351F0369345A818B300F4892C7006FDC0911D71510D1CE9EC4C2AA267FCC
+D15DBB31ACBDCF0627A095A216A792F86ADE478FDCCC85326D9B171665945122D4A1B9EF
+7455876CA0CA1AE73B3A1E4F414261F9C67A8A73E2C246F6C565D526BA7012915E3E5D84
+CC03E1034AA6D718E4E45AC5DDFDF9A9E50FF9AA5FFC1DB3DAC2E9B23DBE9F16884DB1AB
+2E9D4786DC68FBE1E86177A54D16753EF900ABF67D8B513CE9B568A62D13CB7CD22AF4B1
+6422906231232A40D0413301F830FCB1E94C8533F632421B6A96605FEAD97E30AC2725B3
+E4F6C90531C82F8E767ADB899AB21CF9B7FCB69ED17690D197E74DC5E69CC2F543AC4D15
+B6555916270F8164CBC47DA45591A545EA13055C0B6CB31DCF084EE2A9F77B852E674DC5
+A108518E2F36B14D6D037BCEB049CDB0064FACBEA91007AE183804C0F246DDE1C5D7348F
+D74736EF1796F8B89BBF0EE02B324F99875C2C3E69D731A9DB0B5D7196A1C30C36FAC29D
+EACBF191BFA4C8B05BBF7A0E2805DF72B9D9D1CC1F0377B3644ECF357B91710AC4EB7C2F
+BD5DA5629711D68DD4212F0CCEEC188EBE9A4F3CAEE98F5D9213C441FC89E4764E1F0C0C
+209E833A24B843CA4EF380EFAD777FFE689408AD3A3C066FB0AE6276201493743C4F139B
+D2EC8C2C7536063A88F1BB1257449B8182B3A76DBCE0CC02AF9D4C6A9BF62E6AE9BD75E0
+C35CD86774B4D6372AEB317DBB8E384EBF5FE2B1E0751D89C0B4D398886A6A9F2C8501D2
+E45B700A71DBA3F5D8A03022FD7400B04519B9441B9F9C315EB0BC55C41C90B358C75F6F
+7AC8D8BE9FF6E97DD2AEB0C585E97D00FA16BF6F4F093ADFBFCFA4DEB52362E71A21DC35
+E99852DE2B619A91CF0E98CA33C03A8EF9DCDAEF380BA40D8C7470D68E1D6C129854EBCA
+F98B41DC5FB00853DB40A153FD089A15D1071EBB3D5C7DFD56C366BD7A4A666594039BC6
+DE52B77B615A16BBDA693E7C325E2D2866B59FE0258CDF993FA7A8C11CE365862AD9D7FF
+AD54C1D53958D13F96ECB49C395F2C3A7839B74D9B82CD0C33A0EA2A3537BBECDAE26779
+AD43219A6687836BD369D6E841A744E810AEA0896DD9CEB8AFFBE1A8E63FD638F15E28B5
+66A207D60D37F4EC3EE96D07660011C9D03BF12E90E644CD3FE7C34DC404181FC3B9DD66
+0A37E3CA55191637C50F7182CA87E35A64DAC357F1B85F57F0872311F8F7DEEB0E273C05
+815F9C175047DEA63C7433AA61F500CD211EF0B8F582BD05547479AF6BB2485CFA487EA3
+5B102E7FF9038A6C85CE4CF24843DF20B2A30332859F5EC656E16A2DBCBE63C1CFAC129E
+1CE67D37FFA8D7E5C9A765B2882EE7E3D020A2A323AB6CBC80DB76C5A879A4C10D82FA8D
+B2CC730F7004E702F8ED3B53E48F45CC177EC242152D3F71F2FC8513DCFAD1FC70E8FC26
+AA290E47EF46B97D96C66DFA7DED6629BF349565A28B3D555C7AC1BCDE7A327AD18B83EA
+A8DC0297BE61FD9A390EAA08F3D215C66770A56E1221F789AA138036AF5E3462CAD31A2A
+CA7E2C4B75768B3A5071B6682B49622D02056627DAF9FB4E2EB14BD56F2CD8841D1FCE73
+7BD081E1F55C5F11C02A8922ECE504725ED2F8B6AA86E7D9A95D7271F74C3E297B812080
+67E7CA488CF9CFEA80CFCFE1EC974250FFEA35FBC89BC6BA9631AA5FD400E3238681843D
+B3AA1689174523B8F5D3E8143B42FD1CBE402D19447CAC0D5EDCA71FFF797E596A7E1D8E
+33C7C50946A49FA8CC4516F4ADC74A666070C5FE90993E07BFCDFA58C2C5B61BA06E1DA1
+03335727CA39B3DCBCEDB7887A67B2C7D175A6D33CE88D76125871693708788DF354F663
+2439B67BD0B50D5CA3CC8E2924C163855999FFD3F77B0F76DDFB8EC5AC09C621B2586F3C
+469872DEDDF9519C453BF223B7A1A818439FEFE55098E7EE91C8E721FCFA4A4A5801FF7D
+D986FAAB0FF2780A2D176BF7C5BB6CDBFEED4570A5B9655AEF0F23E1EC9A830C72774212
+70AA130E9075E35B88A4EE77B6592FA9A44E1EB4F363499BCF9FB1A3F278612391ED6545
+0AF364EED9DC97A52E2B4F6BDD6CAB0990FD547AC0B31723DE11DFA2D91167C721003205
+7F358EAF513D9F6F2F6937A62E7DF2436D61A916ABBD9D2651E61795527436987D5CD343
+B6CFD9AB629A40528E7D0CCE5A154A3EA94B167FDD8CD896B8B572AB59B8375043527072
+9F8C70E6D7ED698C7AF57909336A6699E43CE3431A179C4BC75E233B168942C9AAF53C4D
+0CD57CC96443E708B3EB2FBD756F0B17760023E1D23B0CD3CE4B5EC9F13AE5D5ECBBEB7E
+E7A91D0A4009463D000584B18281793F064E9B655ED1DF6DF14490F3CAB6C5018F814D02
+3F25728A9C7E3C7DD455E9909CD4A46CAF21E928DB5B31ED53A3FF9F088A116FB240A575
+3BA6949D8D2F68666CBC98B0CB95BDFCB33304E1B0E0BB67F2DC6A72836C5F98868FADAD
+F881211DFE48E67D4141680A3ECC39529D10CCA1E8793CD458CD0FC0DCADE7316B149C7D
+D63D5CC03B5514B595990436D39CE18FF35AC53E2A8933EB4097C7E5BA0548C5ECB22363
+8EDEAFBDE5088E92114E06E3A3396EC0117387201857F61A31C9A2AA616A9D795E16ADB9
+A21A081B5617E0ECDC5576707AB6F5BDFB87F1882B3FB388AEF473CC6128CF2EDB430F08
+62230DE195CCDF3DA9C9A5EA28EF9CAC6B5217B1EE72DBE4EE946B60F6ED76922B8034DD
+AA58E5DB5E41FA74541AE157D7257008BC176012BBCC18148A9EB75A040692F1C108B19E
+D1DA316E33AE08A35B2AFFDC2E3049AEEC196B5F539B378C47CBF5C1BC46120BC973EEA1
+08B4CEA553B87607A4FB27F20AD8C6735185A4864F63F0801436267028C2BD47699B1716
+0BA4BD285E50746B544A8D3D371DF3CF71BAE79880C0EBB0EF22459D51515A3F52A4D64B
+02C8EAE31F9952B450CC529D0728FBFDA62547A217CEACE7BE4AC781A8977ADBFB26D1F0
+05EDE848E208FF4CA4398D6AF3F4618901DE98728FBCC038E0CFFA5538D2184FB8A399FB
+A684841561F32A55CAB1587B0B40DA5B12A06B93147E40A938B91C35F94ABB70BF200B6E
+9C99875183D82C6189AB5332031F44BE72EDC9C5C2EA271CEE50499AF114218E07AA80F6
+E3097BC86E9B9805305CFCD4D464DD9BDF41EF6DDDCDA8120B3E64F8A025ECCEF38A680E
+A22617B27E1BCF5033B8BE798EF51B9EF22FE9A80E1412A305842601E3D58E508C8930EE
+C00435DAE0D338A003F8C6EAA95126D3710EF420C6EC4073B2A9C596F8CD5292509EEA09
+62261AD41C0241BDC1C6FF4763B974E29B9C18DD79B9F6B74C4CD2D6A3156767B9B9CF4D
+0C648BF82DB66CFFFFA191A9F5D9F4A31F0B28336992B8DED63C7D40D59157487927C199
+76B01A6A8A4CE7F37ADD0FFBC08C7134F37BB2FA5DB95833BB37A08EA4F3378F8789E34D
+508B563FF661BFFD129E14E9518C9953CCD4C5646756D8C7F95592AD1C1CA913D06B3074
+4400F0AE9F452F22ECECBF2D3F3C026E5BF34CB24C1BFD40C6C93DD7169DCD86D8B83695
+94AE907821421A0EED9AF834E8806BDAEF9DABBA07C07416CE6373FA40BC4833DC16DD75
+84066ADD9EB06522B59121797FF243E037D03CD34D34FD15310AF3E75B1633864D60CE64
+C862C37400CBC0DCF7A9242B7B3226484010BD47841E712CE7DAC25E99FDE99DC4014A2A
+A5F58E13E483521E9E58A6C234EAB28D7E4968B72A51E8560FB79C6DF726389BCA0E2826
+A1F9F7C85EC08325BBE4A8300A9BD16D6A428C608450BD5AA54CBDE5B87A50631187EE5E
+D2CBA84BECE5C65A0B82BC3170E09343C702658DA11FBDB2F5DF4F68C558765F22B67821
+7999F76819063048B4C386DA5B16604C4F15E3CD72BA1C3F3F47488B124510C304C2FAB4
+0DEFFEF9E6F1B1E4EA5C034615346E1A9D0D04607AB9DE4A395CC10E2F5D4A2FD53D6245
+9E4E639C9B2A6833C269492566DDAD2DBBF263F54D6028BDA3E74951ABE22CE34A74C011
+AD4EB2B79C5B10FFA6B215E09D79BFC8653826EBCC6ADD275733D165FC87567F62D50BC2
+23CBDA7ECA2F8F2651E28BF3EF11B4FF7D5BEA824A6AB8D971F0B10EE82C69B47BD82312
+5A237E647381D2A840DE474D3BC9955033415274B7E19B1766E7AA5BEAC0EC9ED263305B
+42F2EBFA828A8F8885B134EF6EE197EB8A5EB04688F39C2A3821A682A902F0CA6246B55F
+A453591320F6071111FE9DEDC9B25B0C3502AB758B3779F674351FFEC05E6C36FB246FA7
+3A03DB11C0DD7295CD36643F3CCAE510642CDFBDC0914545696F388A90183BDFD4B2AC39
+33C86CE3B1C590B04428E8EF1D259004C2E1C9202E73BAD11CC49BCAD9EAE00E8F734609
+13DA2EA82F3947E3F787F2CDE66DA76C61CDEE2A28DA1EB6F845D881ABDE3F726F0D4929
+44FD8C84A4491634381256C45C3AC5CA6EACEFFF5E6731C9E37F8189000B2B424BE8AFFE
+A7370ECF9B24FF100BAF501D40A984298CF817BC8FCE559BC7D17F9554AD2B957D3EA082
+D2DA1C86136380C7ED2476CE9BF5B5CED40258C1822B4E250D0601C010BC2A57D727FEC6
+1603FBCDE5E9ADD78910C59B918582F9DFA57DBB15172726C5196D899EFF726432185C65
+24D8842FB7DEF8AB5975224873BE1BE7FCBD39636AB01E7CF723501DDF033B624589D160
+7A88393B087FFBD9ED5FF49186B33AA4C5F10392623D7E09A84813053AD7E17DCFFDB2E6
+D45D5B230B95F094D848B7EBA2727A082617F6652DFB6FEEFD878C958667DD8F167754FE
+A0E4D635855FF00D0844E3207F3BA526CA385372323E71F100B20987C352C617BCC02E50
+B477C049CB80C268C74632CB71046428CD0B74489EEC71C0FB8EB4B071D48840DBE768FF
+A8F866ADB21720B327A483360801DE35CB19A7F821B72457485B6B25099551C1BC01271F
+9878D94DB6F49B38AAA1F834F84F49D664B6E58763B317A6BAE342E6E7373C92E955DB79
+51CCD2615277FD3AC6EB5CB9D8B19DA719A29F803B521EAF920A9CAC7421E05D68446807
+8867B4A32ECC807BD1FDD84E849D7A81B46A1A59C06ED0002D0E756F66DDA7166C3D43D3
+2BD2DFA555283BB13488F03557B4B2FD3FC788618C796EFB7CE365D8E8BCC7EED2717FC7
+086B7B9716EBF64C1C308A6608B8B2CAA6A348CCEC4D1E301891DE8C74A8CB0C26FAB723
+C1373FE64402903C86CC2CC972A8514C8AC394F2445D824E2B634646CC2DA1E995077022
+06591C38BC1BEF2CF5B3BD5547F2864A731961BC8C6B4CCFFED886FB8D0A7CAB74EDD88B
+79CC3DD610F1793DEB04BF341C9D5EC153DC4E8B988838F15FC3DFF5AD6B20A361AC6980
+972E8EBE66106D649EE8E1B909BAF5CD9CE2D86478D1440EF97414D0FBE69FFF8DF59BEE
+C174DDC8BAF34EB1D72DE36611486EB12AD3B0A35EAE486514262EBA3EE3CF2CD5D840B8
+7035F9CED4763BD4C103FAE8A08C985ACCB39AE9639A55BFACE57596768D353DB2BB7812
+95AB752DE5126B719F1D54B1DF79D3D23AC528C88C591A18604A1931FA23567E8AE315CD
+9A44287710F1E6DE5E8E2377E13B37FDF845F389AED5887F4C2B3330FA90113ACFA45AAF
+813753016292B95CA17DC38F2BE2181504FCB6A0AAF20D0BAC9DB3AB4C7934598B0BCF40
+11BA0A6E23B30421477E6466953B5053720816E34912CC572F8B4E73FF6BE15C0CA407B8
+51CAA1378AF54A1EA0DFCABA21A3875C10EADBE17A66D294B8C11D955AD9703A05755024
+8208AB38E85841EDAE61819A781B20DC39CE34963DA57F57B4843E323AE265D5BCD18379
+18E46C2F8C6C68072244CC95D8E7D66912E83AAA8141886AD99DB358DAAAE07D9E9B431C
+3A79FC53C935F9FBFC5806E75F45A253E5F9B8AF92CE446A156B914765D46CCBCA72027B
+D70B0DBFF5A883042DBAF76E6619EA55E2F637FF9435CBEC712F95302B1FDFA991BA9B1B
+06DD05DDF08E365D814A20B14D1B3FE9E7CB46BADE025287B7968F5412C5D71E1636B9DD
+A857A633CAF6B40005D9A100CCDD325884713D5C7BBA2974DB7DDD7EB62F510AF02B8FAB
+A0BC2F86CC64D78CC832157BD60F01F8C76F613A5280DDBA0FF27BCC57926E24FB962903
+51C509D376D95605807F1453442D5CBE92DB0C432BBAD8996EABBC38A81A5F8D98E05075
+63EF80BF737345DFE659B50DDDE3FB4F5AFEFE5E5BFBC51052ED4A25CD379E0DBA9056D4
+974380638666E4F7664D09EA5FD5A8958C595C744E8FC02053728DB72097C3A2F7C59881
+813A3CD61442AFBAA1EEDFF07918DB062BB4F9754807A0418DDC8C188B3FA70E890B0B7D
+ACAAA44E36C7F9973E5BDAED6294201B99E27295C7E3A1F0F1969E4E3F7CA9B8B07B377A
+17D98287A4323A58F727D6A8DF65C62E2C93B036E705C8CF6DF2491C22A7BD5EBE046F41
+BF37950D8E2B7AA768E1C3F69752AC728E5537DFF28B38AE2544426FF2D93359A69E964A
+E58C58BDB0FC95275228F5548215032F312D773956999606159BA31DFCEA9F0D82AD2F17
+D165CDA74EAA13ECE15B1DA0A52D12600A8D63850798479DEE5B5F0615AD9192F66F992E
+0AE94017E177D19294443EFCDAD277EA5235B99EFAF74BF258F552F42B1E5CEFB1A520C6
+1C30ADD0376D2335141EA793D07299004950E097CFADC213E6CE68B218C9A9CC0C427865
+957B47851497ECB569BAD010F18D8327BF450EB25276D54C1399ACB64922B5291B48A931
+F6CA8824C046FA9DC22EFB52D5C1E5CC41477F66332F71971CD93E3E999BA1EB92BA959E
+1F5BC3ED8DC6C542F3CFE9A07A319ECFDC190B16A417C36C1398E7B8A95E81B39E6B68F4
+3445542134415D1443C9BDEDB780D3C46EF93D79762CB5816237A4021C16AB8A4244B12A
+35EA5377F8FD091D75AE6F5F1C874E470AE0CDF85E92EE5399325FE269A79046F634124A
+1F0B5A73A9F06B323243617E02BE4FD93C44A549D9903F62FE2947235B43EA4160DA65CC
+76CCB8E96CEF9BD3006E8784FA6E12E18DDD661E7EB9D10F4C7E2422ADBFBB88DAF91E54
+853098CFB3BC41B352AD4BF12AF971B2AFBEA11343990F5B513C1762A370D9C48B220A30
+92C7ABA6427D5562C1028679DCA22F711332200B45AA182AEBD586A5CE7E8461A9E5DA8F
+CD37CBF50B7A24B52417162F6F30AA2235FFB1AF141244A84F3BDA656F016274E78A89DD
+B7FC01B074F9289A5D66D3796F6BF593FD45B914B9BD5A5C08ED1C6BD36872DCD444EB0B
+30632FDEACA4A8F5B56DC881C57675571E283114D22E2391BE34C2DA6A078A6186623462
+464C3F1C776540A97C6565C52167946728374D6EF8256C51F140EF564F111617A0D2735D
+BB47040A5B26B8FFD61C1D47A88892376F1D82721774BE04C5B52A430FE6C69DB1948AA7
+5C16DDF2CAB3D814D0705D2B8A2902819800E8F1B9D43A2DAF8FC2118D8162C2F229F8AC
+6ABF3997D55C0978866F7191A3F7C070050322DFFBB2AA63ADB6D9F291FE5E23C30EDA0C
+A99B04BECEE66FD360563DEF83027B8A330172266358017FE995E8B3B0AE46C0955DBE87
+CCA97F45271ED707EA6E81A0AA211428C474CC9FF47736F376A351EE48A03969262B3D93
+2292FDD9E108AE40F15AA990F7D634F28493534E2E7348CAB7C62866D4E2CB858F4AAC57
+3D52AAEC5F53F228D9F612C46175C4E2049C537E850C34172BD474CCB110BFA6C22DC36F
+FEE8BB753C9BE2F2D5A478326A24B758005ED9C4A7034BD03FE33A7E561C5724D4883B7A
+0CC0246D90D77A5BB4471C1603558B6E06A4BC03936FB15FD856159DE81CF6DA41F248EE
+E741CA784A029A95111B56A678E4B522DF56C74B4D3E2E343D4349C03398F04A6C1A1FFB
+4392202B963C62003532DB0455D17FD208336DA9BF838B0D71C85B0A94D9AA2FC9BC7D93
+4A56D58D5B5F81506A6D0361BE3FB4D046BB874493BBE40DC125871CB050370FC8ECE3F5
+48C09DA90C495C81F516AC6163D4C113D035F8B9F1B7C8E1C32FA61E23FBA0E6E46E3B6D
+17C70EFE7B26CDFDFCD45ACF15487C9D49ABE7A99E4CBE1AF13ED12A3BAA54A15C60B22C
+413658986B817C3914E5B3997F632197471EC2CF976C1E7C4421877226575022BFB9E039
+F95A0FB356F7CA0885B758989613BB41679865AFAA48CC08FBDCC658F5F5619CFCAE090B
+7ADE4BC3821934757AB73E8AB63AEC379A1677A3A00F9C40218F874636A42066B8883973
+C445ABDE593778CD53BD176DB09D6E48FD08AB219941664D28D5150A03309EBDAFEDC90B
+A113A1108063042BCAE7C0F03FE712237EDCE52DF3162406D80310E8E8A4D59E3F616184
+E7186B975F3B596E9648E45C851799A102D28A1A8E2298C8196796651C19CDEC62867160
+B225DF435FF84A9D477CE0B0FB94D07997AB950315D35555F4FD1245B412CE851096F333
+67FBB4C5BAACD712A709BC9A1DB8CAC8CA9B2A602EE7791B1F4C4134A395AF9F0CB471A1
+C2AF197D05186B4541292FC9B939F6B6956F0B2F6B3B29BC76445D23EFE8026E67E10924
+FF47584C52258BFB8B86386D2917E70BDAF47BF4F31C320CE0D08D2D281B6F3F16943864
+BC3BFB6485715C97EBEFDC5E97BCD7AC3591E67D76599C4BAC51A7B8E4357A366E5DE1C6
+E56F4A51B69463E8859C4621D1C87539B8D87C4A972A6C30CD64F696626E584DD9D92548
+C0AC0CF88C119CC7EE162A1ED3F9568B937D406270B1CB3ECF0E32470F378B888CF242E6
+9BC23601039A6BB91BBFE9C6B2EE023EF3F61B4DFB89C0FB8259E56AD7A7597A22DE6E76
+7E8CB5F1DD41C1E82006F79BEA4D8499BB6E24B5550EA0B36844796772D977AE9AC4B030
+899DAA7F01186273A19DEF4666ECBF9A76D4B6179E7D1362F6FAB4826D79E7C74D90B606
+37DEF04248EED5A3D96B0FC882380CC7BC886AD1C131F53AF837B68A70E2C17E73734E3E
+54535CEDB118731F52AECE763F668FCA0939BD05043CFEF745493204CD8C722804338B1B
+4190EBC20B8FE43869FD9237462500608425F67DA9EE21C198206B939DD08736F337364F
+C9697F9DB52F1A60D2D05DF19AC4B2E1B3525A37E177F4E3D782515A496FBA7058B6C3AB
+2DE1E3AF156EDD89294038FBB3CFAB693614667A66D2E802D09445CB7DF84FF853C43F33
+3B00FA3F70211028B0693C907463822DD2444E7B95D26F2491995FD12803F59FCECF6F7C
+61F50FE094094D3CC3987FAB7D3301803E6655FC27375236BB2F27173D8ABF076716990E
+CF617F9CC290D100B6CE5CFCA6A4A637F6C23FB029B21071C18958D821894FC7AAA01901
+7C9EC848F8E7C3687A9DC699E1DC503C6CDCC0CB31D2A46CB66641BC23822E6B74529CD7
+872FA96B33AA789FA1BD640F6AFDA40987708603D689FE8C5AFE5A1F307BA44546B602E7
+8CCCEF2C5A162910A788E8CB4BC511FC2A93AB181E6A18E6C430C8136AE878A5794E744B
+3CD35C18B96148B8578D49497361A2660923C44E94072F19E1B919D401006B1867AC0297
+EDE0C9A035EA60A7432C026858826D72A0679A48A4AF6A14C51CB2AEAEB6815C52AB278D
+6B05A679B03CD28D144C2A5F43BEBB2F0555147069335E6A726B1CC7D46F5BF04445CDBF
+ACBEC052135AD2A710AC16527F4555FAE25A5AC8B1224C948DDC5DEA8A6C6BFF9C5435FF
+D8E2E352E6E4A530B8D262D1BFC0D96E12EBEBA15B054348B7CC942DB475D3C8EE70461D
+D6B52CA6A50B1DBD99112DD8B3C9B1DA2956B4535B8CFD3CF97886DF08FE79A75E116D87
+AFA30774B22E50FEF38646097C1831D6D9AD1EEE1BF6F2F7425A214FA646A1F4F67D778E
+DEA52AAEC3D07095F9609D794AF1B22CB895399940673774565ABD150A750F230F5E8026
+DAD62213218FA767A00846BDC8A2597D314A40612A2C294A974F76B2AFAC3DF5A416EEBA
+B6C5EFBA5BE16AC4554AD6D964B41FB90A3DD14A46144814E86036D21C22D769703F367D
+626D8B23172E4584B92967DE54F223712F04834E6B8675329CE1828A540226E00142F3FB
+EAB54DD2467F415B6C11D6C267C3F0CE2F8B57A67E536939AB3C486961F5B746DE381D60
+6645BDD258D134C2D9AFFFAE997C1512CAD3DE0E0A8393DFF19EB2409CDCCDE1DBCD0208
+40363E1019169C0F7F7FE3335594D16E34E1763848995FE2520C13975410A1D556B6EA2A
+21CD26C1C455CB9DAE87F84E150CBFDC914C4B5312C9E470F15BFB3E8B43830B468558C2
+070817F291987061723AB2B66CAB3352C3FC7CFFFF89990100AE4DE7636F7EB8E25C7EAA
+B8DEC5E86644380580AB0488FD61D721058E9874A6DD2BE4F68DDE02694C070FFEDF818F
+37BBAD0B70B21DD824F7624D665A3608E66AC346094DAB2866DD885432043B77F1352113
+D62CA25A60CE0E9DEBE5C5D8B42A2D4F35B5069E185C161A1670B6B74DF4FCCB9CDF0364
+08EAAFFB2E96D88A6D923687508575F50E8F387426655012CED1E05DF4B18CA1203FAB19
+CFC746CEC5F4DE56172AB0121825AB6F3E587FB449DC8134E7611FEBB51BEE70E92F1BA4
+6D79B0FDB3DDEB8ABE3E9B458CDF6A030094DC21D2751751D18F93EB001567625D181EFA
+A198C03630F32B860F3353188D68BE67F9DD6169648771851BF30699A86C7DD191B1933E
+FEE0E91263C4D4F1210573B0D0B0C90EEBA67AB96E1BA61FD80CEEC9DAF1D767EF52B867
+1BC0F382FFF5A7A5AF21625216811A4593DA422C140856F2613C9BBD7C543DA4428EE300
+6A575B18495647D201F48EDD253FD6A921AFBEDBD422D7FBB1D93A732D5FA0BAD8E40A7B
+E26162BE6DA3E8DD10FB60F34A5CB4E3C7C96B0C9AEDEF51685C9583639BB90B883976E9
+AC3DADBFEC3BBBFABA10CD7B30ADBE2F59B3885C62E7341655532EEA378E44EE39A0FEB3
+423164D016F1E03F6FED162C4675D5524261F68D3ED9EF3A0A4905082D2288CD3390017F
+221F57B9A8FF8BE33F3C8FE9E0EB26EE412FEA176FA0E9785E493483CFE18704CF29BE24
+619865F9A0B09894713947F1B82DBE1D6A1A3696A092E98E31E334AEECC453C77C604217
+CABB3398FDE2C32A1F2FFA336746E606A41775FAB2092ABDD89D63BB00C3B993BDBA6F06
+600B1C3738FB6E10E0B53CE009DAA49D7444430A7B53B0310CB506D10ABA5AE982DE247D
+2F698554DED86F95A78C049C52D0A820F3ADFDE1F60D5AA61911853A68B440B5724123C4
+A9D8570C15505482F499C6E26549115B6B987FF788B5F0B54F7803BBE6602797B850887B
+858840BF6E865AB9A394347610C06B62A1B61ADE5585E0E1888351A2357D8DC26D1CFC66
+26908FC6551C2DA450FB7FFE1FE678A21B4540FF3BF6A4043141B8F660C8A9FCB23ABA27
+8A363A08AC7AFD066379DFAD6A3D36B3E874136DA898151DFC0E3A1FE270199DC87FC8D8
+48C8DF52E6E4B8823269237E2911A4378130CE81EE84653D2CD054F9B0F1AF8F8E153DD5
+73F63AFDA77369FBB2A46306DEA77CF9A3624A8348629BECF5B1CEF3C25E8190D1F76957
+5DCF9427823C50681FF1B19474CA671F7B9BA643370C42391BA69AC1D6CBAE627A78B24C
+41E9380825716949A1B72C6FF25226ACAD2C7D10B95A4D599A86D9083A7023A66C097917
+6441856CE1C18399373E182DF0A96E2ACEEDB2F3008E36E8ABE5211714C9643021D9AED5
+60A5E098203CF9D4EDEED7D7C9940D21C8C226CA773DC6D96CF870A0AF866A3F1C19D047
+DF883C5FC3DDE3A52FDCE7DCD59C845D294BC482C61DEDC82163C9EE49407E4358131863
+0FBB0ACE0B044CB8830B65C68A8EC53B0A2018A03D98FD2F066653098208909448C2AEFB
+061D886363BBC6606E8067615F475C83D3C84480334293AADA0CD10B2580AA41CBC91091
+A3E7A6D09DE6784721DB9F012492985E21B9CCF959F663C35B6010765683E50696182A02
+5D8D20C8904478EB8D0B16C38D32C192C46A29748D0C186BF949D698C192F6281F11CF06
+D31ED701B4A7FF03F380864EE3BCA620E53188618E482E2C0DBC1B98CA01D9AEB0011208
+A6408D32277486981EBB1B718AD348D94C1EAA5CE2F65BAA49FAEC07EDDF9874ABF4E560
+13AC5ACBA4297AB8194B5610859548ED20687F3C12C684767053D511CA3EEED42A12C38F
+104913E4766D54208405D326EC300EC37E790FC60FFA8F194FBC4C6D301C4B171B3E313C
+40D2C70E10B4C7884E75E5E987CE9CE1D92B48ADDB7BD377609854DE3BD2AC6FD48C0E57
+0E8C874EFDDD85673FDE640F4938FC3E5220FBE66026BAF4B67A1C1D2C1D7A0134AE5A49
+7171306F0E4722B30ACEAA331BAD0A99973AFBB97459AF51956AC0C9E1187BD3E2B310C7
+B356F9A5AD8D5EDF8FA0A1713E92E933A9CA7C6178A24DF90942CC456D28BA7E80087CD5
+89F11C14E10CE7E31F99526AE0290AC63055006C3F9A840D298ED03C776F189AB7C63F53
+BF6266A7E62A209A1648D8B04B702CDD8C3C640347CBDAB29650AD2A697E529F6ECB24BE
+D0359512B4D28A992E2A7999D94549E12799069BAFCC3EED1B4474710ED59E7C0A15242B
+F80D86DC6DBB0ED8AC3CCE22A1AAA6FECDED11D7D8C4062E48F9C6AE645ECF3E1038C028
+8B93A1A40328BBDE89A4D3407DFE92471D20EF6148E789A3F8F68DFD56DAA800582A55BD
+E6F0A4250BEE554FD92146E7883B446FC7E939492CDFD8108D137DBF6C4FFF86BF334608
+D9B183E9F0DCD2476CC172F5F59C8240D3AD0F005F89C522B27B227FBF5BF9ABCAF582F7
+44091F14E5FCD0A5CE5B7A617969C3C7F19D91ACD34F8F9B99D3255CF562D540A03F2DBF
+B11E06D82A2166B68ABCE852C98FB7B426E01254D702A6D20854E35251234AD9B6184383
+3FC35751CD49B3DC3EF56499B76BA300D7666E1ECD09056B171EBA6F358AF57430F32126
+D25EF8228F842798F57AA0DB42E0D807E2B0EE8CEEF26D5EFA4F0691996D29152121616E
+458A0CBA0A4CDC71F1C79E4C48356443FA9ABD7E8F660EAF1FF9C41645A92501428D74E3
+FFA31DC37AC5B52D069DD3F012492AFF2AC87BF3C48117E3BF70CC3AB0C51C96786A0632
+D8793880009AE7691E67D7EF2EA5B4FF71F239340C82798252E361FAAFD68C93B2337BF3
+B71D30BC38A2C92D5ED900F8AF691835E8E5A9A6A6A6E60911E42A549E867CB129AE6868
+8005BD2BCA11B9F08561FC3D1247F6627AA3721B063D1EBADF36CCB7736A6547A7C094DD
+05B8DAB57421B9B568E27C7C60E7892CD73E1CD422C6DA094CC933F7B091271F6D74F426
+A403BE621D9A3EC4DC63F564976D12E624967E3307F1E866C9C19803507028262C0BFB3C
+1B4276E287C165CF6E8E09157B9CA43B2628C0599A83B9869CCF387F2E60DE214A11AE35
+28E95B8E377DC350ECCE2E220B3282D016A3661C44B44B4160AFFC91EE7C2AA0590A9EF5
+84109494790F06F6560220FB24A242785EE5D3D0FF483F01992AE701A0209378B67395B5
+16C2EE6D22079AC561780F81C7425A6361DAC66289269C0187E0554036AD67A046C655E7
+CBACDC7C1D157F762C1A807C73DA9540DE4A60B068751C25CA0FB9F55871866383BABD40
+543254390A25A9AADF58744C95A4AA4397461C608E6DB50D5AE1B1A76265C6008A2B3DD1
+6E386DE924C98A2402842E844C246C6C1300BBE577AF540B557D833A5D38DAD5B92FA422
+24F0C86211BFD788D85BD34A49AA7FD059FBF9B3966AC45FCAA49757ACABFE422E9B22E6
+99E60B0251D0908EF13AB68A5CB7C9DEDF5CD6BD0AD1A782740BC796A14B58099F35340C
+C61BA0BC12D1605247A703E49714FD16687816D74962F49F84042E6969BCF6A0FC9D1C2A
+9D22875AD3790DA61605B87FA580075D7B18637A593C08E354BE6CE3D6F44A8ACB0099BB
+A97DA4A99AB71C04D3EDD9FE1229E07693552E4CF593EB59AEAD95C0DFA7AC2983FCEC67
+BF679DB6136DAA80AE33DCC0C34723670C83567E432F555D0417629A4E5B432329E21478
+08C58AE516E399AF72AA634F5B143BAAEAD210E101A3BD0C4C8968E4ED9543CFF7D8C5EF
+C7F5CCAD003416913948BE118329AAB8A55804C62D7A6CF8D7C4E3D03D304779443A7BCF
+F3E9AA5F2DF96DF9F7E6610F8015E96AA7135273A9EE15C5E2B28D7E196134FA97F507C4
+0A5A9CFFBF8447D75BD3505470C1D5DB390E2E3A2764E115FA8C30E51E02BEAB6D16B4BA
+14A4D7D42495F3F803FD3F437CAFB5CB1B0E6D61DD3D55B79BD9B8D1E79382BBDA6913FB
+1C6C0839BC6D946312E8BE71A9B5F5C659E80243466973D9714EDF2ECA7DF0776D0DAA05
+E98C2B5A75B0DA5FB5B481D05C53D8D83D3C7E779D694675CC671807510B54270A34277E
+2D6AE3C4D4B3C93A4CFD9F8EBFAB81196894459299DB9C418F1CF02BC4851E09D1DF86ED
+E1953AE3D849267F55582B0B103B93B7E450635B9B5D03C8E65FABB88F0B6BAADC665733
+100D59C313B919880A3D9E131694EA06065EBEF49DABE7987C0D81F27EC34A867E5F56E0
+08DC8EB1872CC5FF0AE82DF13410F4A9C1D0CD164AF26E1CFBB784C06035B8998A65BA3B
+B67065F074379868B973483A13F3CE236BFA62BDC466BA3AB7D692C0A142AC023B354C81
+059E2868164314A31A174041012F5D773F12DFE26CF648A2B220D421A10D96205AD1ACB4
+7EBA95053EB17A5994EF4F700DA9F12FF750516A78E70B8F61513DAA21CB5DF359E45217
+968E966C29219391FB48B0F81901E51DFC9115531637D5B9E339639F9A35210997B9BB19
+E40EED69ECDAA48C69478E75EA29F89F8ECB8282EF01A400BE6A7AB0FC949D118748EAB6
+95E9B4BB408CDE0DBFB179DA98E6080574518F72C1165457D9C33A0300E738126862B6DD
+BB3F2754E3F3F06BF20D70A8142432A291FB86B3279E1A276284CF6A10D4871B87D95259
+EFC4210FCBA41C3D5D4F2E86D31406C212DA593BADF7C104A21069D43A17FFCBD2D51FA9
+ABB32062FF7CB3779A9D88BA9B5CD21E749FA60E7BE9BB0EEB1A981EF9847C266DB7A344
+80105DE35ED49EBDDA2F1607C34881A4CFDA81CDCF18C93F8B176F3BEA3482040DD116D1
+06445E193C8F6868B8B7B3EFDBB43D67C46F6ABAAD6567411BF516DB24BAADC03374F811
+23E94CC0376B179CDFF53AF3FE66F43739B6DD853FD5AF9B4C81273BBF472C3CF3AD56CF
+1844F9487DC748E90450D12E36FE3F64CE508641E0D07571195CDB4B62F2A0BF35663B6A
+D7FE1A1AE492B753BB8CDE2ECD605EDA41B5BD112D0A9A5B6BDFAB91D332AC924D1D51F4
+010FF9C561097E7C5A8E1ECACCC2FBE2BE07EDB78AB34490A6F69F1235F5528791488FF8
+DC550F2F59BF1109A61FDC01FD175F9ABC1BC1A3A985914582A669C22ECADC7C24D7DCE3
+0F30BA627D22751D92C347EA0873C8AFAEE5E22EE28B26C4046CCD0398BA2C43D704D501
+91DB114A5A03B6AA1D20DEB50463D0A3D8C74DA27AB1ABF6945BAC7D12C1FDE7026F12CA
+AF104C52DBF0FEBD83B2EBF2DBADB211B9A26C251DF23416647B4B80566AB6F35A0459AC
+C1D3F17574EF89208316CAC54823A6A2AEC1952AAA716BB5242E9BED5C24504CE702CDC0
+CFD2D1069B928B730BC4BDC6F58611D22BCBDB4BD3C75B69119591C433C2C2AE8CD3B97B
+6A669FD6CF6B20F8D4C2C1D2295BBC3FA257CB950484F92D9B9FA272D6F70469C51E31FA
+3B883E9DA54F82FFEE0B0C1451E8080623D5230BF4BA873AAC6F9827A32CB17F3FDE8EA7
+63CB2101D3837930389A0577ADBD84004C9C0F16E746634C1EE8F412565890B9ABFEAA0B
+46CE06076F1675D195C81DA1865E4FBEE39FC4566B16E0C6BE5C61BC7C2A70A94EAA5CFB
+D7A3ABFEC761294338658EFBFCAF3FD0C3CC78C65F582EE20940746E4334C676895A3809
+5425740987ECAF7EEA2CE6277AFBB60376DD4EC6FBF7D21822F91DC1FA74E655CDD12216
+BC3DBCBDFF646E3BE32799468529625D53DCFA9C13F9D8395161DEBA663FCABCD943A49C
+3702245791099F32AFF935AB6979E109FE22DF334AFF181008517E632E8891F1222CDDCB
+8A5ABA5587FBFEDC58642F5EE639D6680D52FD15002AC2562BF108A11E4999F3B2DCAEE0
+E4A1CD3771589E6339C7F5AA5789EC3BC6BDA3E23A2E035009EFA12EEA4A1BFEBC5904C2
+3C0C57DBB62DDD5DD5283042E019E25E961A375D536DAA6D603D34FE01663129BC3E1BDC
+1FC2F80434BF27C6A72A81F02C8CA9BB06868F264415061F3268EB901AF417C082162337
+DEAA1CC6FBEDB2CD48DFBBC0EAC648580E6E1CF644DA501ABFDA94CDFB8F24307E17A21C
+32FE4EE43DF57201C78CE56427C4864439A50E0D1013F903C61C87744EFE45B424D3367D
+464C8283358684FEFF7AF668C4E0CDD5A155497B8FFAE6041F85BE4358D97E6B6F468FAF
+0CF99E5BEC23DF6B19AA35D86BD5D674A2FE98905155FD6D1D5AC1580AD3EB4802333A7F
+C74A5278E6A2518FA04EBB7ADDA6E090187ED29365C0C23829A7183FA72E9D5150E7D28D
+3ADBDC76C322CB6BEBD37270D9BDB31641410E1D0DB589E74EA5F0B78719311EB734F965
+28D7290C44C898883C9EDE7D5643FC83422E9EDA28D803033F144C899C9ECBC8BA3A91C2
+05B52DA510BA09FCF53F823C1ACA76373DFC5E332A122E7998FF2652E840EDE8D581708A
+8C3ABAD2A0E761486CF291C06DEC3B70B8160A6ED563FFDE2103A15C2025ED48AA88078F
+7401BB93E03B4A74769AF5EFDFB9F92D142069F7BF068F22EE937FF9756FE26459C4D983
+DDE0975AFD5B4EC11D231E93A21FDC503F40CF49C7D8C4B5408C4F745970AC6FF6D9F8B4
+20B3CF55888FA7C6022C4FA123FDDBAC1F9BAE61F1020ECE08F74A1E00D5B04979B4DA50
+26007DC4C59D0ECB622EF0D9D801D1A149D0977CB22FD2EB4840B0C632AFD6973767788B
+049DEDCAE9EFAAC0CA5E8CCA320F98762B6AFBF967CF026274FF9D61F20C06C7FEE07046
+D16A546C24C0F79599156840F8A76ECFACB48D4B5BC301B8288C313E163E4C2D09EE634B
+681E54063CD8C27924CE446DE2DE9563AFB0AC6DD07D707A3EE98D6EB9C932A6764A114B
+463498F2CCCD50A1A0A55DF9CE0C07E5F9DDF629E44A84DD770FC894EF36FE0F59EB3FF6
+203C08968E9294152C25A50DA2A26BA7167238A8B094FC670A537675F609DDBB25F88CBD
+74FAC2C5B8F70B32E0942E64E7C43F4A9D6ACB177139B1FF645320B624F30C82E40BEB4D
+9F9305691A671351C6F0B315E24FA703EDEFA6FA9AB73D008F5FDD224E958E2AC38AA793
+155F601B3B0BC1111D5D0020EE0E7058E59AB61CADE4E48F4324B2FCFEA2A2DEF2D0D829
+458E5E085A33C2575B5CA6D347BD409C31A35121497214635A7DD161682E2A4D5D04A71B
+DEFF70B2992D8541692CB98C53EC8BC030CF88AB045B84BC2FFDA30E0D7F114049F52F49
+21875AD2C32176F9824CF31B712BE5B30A0210F06742B6B17767F6464D51C724ED6D6D7A
+E78F835774DC4806A1228E438FB4E7A15E551F73981098CE8B563022D492E60CAA5A5584
+EC6D9DDBFD0AD5B6F1169AC968132DBA85451EEAEB4E3FC311DB78E5E1E5AC164F4802EF
+41F5B02968C6DAADAFA796C468CD089209F610644AAC4275033EEF32818459779312F1F1
+BD80479653E5B041408DE329E81D4257BFCF753586D74EF2A4C07D0F7C6F5806829D0AB9
+5D1880D727F82E64F4BAE90D1048833423076051E13E3A68F7983C83B5554C6AC33B5B23
+2387ABA59B89C11CC84D5C8C2344CFB5EB18ABDC543E335552287F2411BE4DF21DA7D137
+D1C1BFDFBBD421209981A0DC9ECBA44BBE0CBE40445D4261B47BC8E0146F1B9B06181157
+A40ECDA831DCF1D29CA0F8F0D943CCD6ADCDA0FE925264BA89479300C5953236E21D80BC
+8C75F388A89AAFB932090B0CCA17968AA2FD30BBD7CB775BD415D8A0D6D220D9CDE04AE1
+C83062B315C09BD57F1B2FE12C56C1B419F9FD5233C1609A270050F9592AE1E90877470C
+2FFC2BFC1AF8C3605BC2B41D526D5494FCBBF65E47E823FEA056A859B8EE86BDFDE43465
+17E3C0C4CA284D68B5C51CA9CAC0ACB517178C47A646AC1D5470422EF62F35AE3DC89C76
+EFA2D52F62814229EEAB299108C387CBF72DDBCF8F1C9365941F90E5EB57522E00AF3B48
+9717AB1A71E29D59238AB0A7E8E6489112003E89677B430B0F3FC3F1EF86E282B2F4F068
+AB31F6A57C336BE81DB25688ED3A8D95593724DAA8C1E413D22CD0665A47CE6AA5B6D856
+26145704B28C6B4D3C9A460CA4229532153E7B260CAD3828DF0F0AA5927203EE06C1CB18
+81FD88F1CFB48494029FC83B429D8475D379EDDC1BC2733153A08BB056D79F61B4CEE9F1
+63EFF34C83CEC9E48129ECA8A90A5E4F7709723ABE57E05AAFF553B5AA498330D6E54218
+A69F696D07EE4531605704580C56C84E6659D6DF66941A5A5B57F12948DB25067F360FDB
+D15FEE85F7AFBBE12E3A2FA2670503F18541E1FC3A8BEA0E9CF19F19507894907BF6ABA8
+0D1B2B092766C75E96226C4B9127D05AAF98F7C8A6F688B2BE0B91A00B49B8C9141C6674
+F2D470D8EABA6643FA15C75E80658F43E43667BF84C5FF296EB8FF383B1AFFF5FD1C2C36
+208BB7982A4A85AA196641FD82114777FA6AA14FC16F08EDABBECFEE8628C76FAE95F966
+66D005F2232E08B52A1DBD07FCDC4EC7525057DD7AC846DF6A25ED1B8E967478E026DFE0
+9719317D55A69471627C793A7E465E6D62DBE0DDFB6666044BA9CB3CEE5210EA7A1B0279
+0F68026AB69C81AEDC281F34535A1938DDAA417AE0A74975325271560FF82634D81BB3D2
+15C2CC482FD9E9613534697CE6FCCAE6ED01C1482CB2ED7CEF703D32D0B4069E377F900D
+3A39848C3C662CBB2905589B191C214FFB9AC68AA60F05E0A24BD980B54CC9FAABC48AD2
+C3F9B015265AE3EE47637EC9B8C030D6FAAE9AA9F1976DDF046021D33A2D5BE4067CC800
+657150619C9C62D70021469E0D410161BEC86F7742BBB75B3050AD16B80C56DE23759E11
+7680A62B214E3D06C56218A948517A946C055959CE9E594FE3172690630DBBBAAC368F98
+47D32C0C81B689213734AF7884656EDB361FF6177BD2A3E78D8FBAE5FE361E065E5CDBB4
+8A9519F8C18BC434F1FB197A6385BA78E6E2922643EA15FF2828B219A0FE1E0ECE0BD273
+7CB21D522194536978E8C8DC7CDD5686C1B7DECBCD3B8E42D176C7472A99A8243149033D
+ED2FC4DD00FE72A08FCCC68C6AB33F93894F2D9E8211855382F6D44EF8F258271771EEB4
+E13F6A447C6F45DD60E58C683DA695C71E5E1B6DCC58C7577EF42ACA0103184E8AD09834
+4083129DA0E3BC282020FA53A2BFC4217FB5FACFE178B07FF2B7520421F44F99BDEC1657
+602B567D2800CE1DF3FCB851022B00647DAB8F73BFA4331881D104820416C8B634022D02
+1A53292095B90DAEE668F8918772935FC5E58B6F8FDE85DD13E2E451B8167A16E5EF6443
+301A76CA4E19A497EB2BD8FBA5EF188840A330CF5BA91A8A9061983C2806E76BD4FCC9B4
+748205C49C1636A2F19DC874887BCEAA8B85F9DC00B8B6F4C74496E03DFE0461D8404908
+45E5C13DC4A986CF2EFC60E03FFDE5BD81577DC747A9C8AF604C70B9ADBA9051ED600CD4
+2DE7C545978A41C4266B27BA17142CB2E8EE5B8FCB0A80322C217C84AE29BCDCC191AA72
+926B589150B627E0EC5CB04A5F2F50B692946728739E0A6E38B628CCCBDED805F4686559
+C9D53345873345611DDCF9A3E5A41C9D488D8DBEE064B4C127429BD64CFC75A7D33992B4
+1B8B2D0E8BB11C745D82D99636596AA15DB0CD2D7FFECBD625DACBEDB801F0141F3FC021
+EBC3C7A38085812EA54CEE5005C2348C90372F62AB3148774BCE8D02FF9A22A528C16F8B
+8762D7E214048F4A3AAB22C462D61010686174DDFB3AF13DEEE5591C94758B4AA264934E
+0266E87E960DC4D6FDEC1F3BDC539742E9D93EDE54007DC52D5262EE9AFDB91EC67FB11B
+065BB29830037E005F2125A905464D7C35A613A63316CB9663A5AA96395FD66518B70B7A
+FC63F6AB8C05F94A200C3D579E10314A4CB7A5559735B8A4DD8CC31D3C7543A4F776650C
+A2B0C9E9B4955681DDA0FCCE508B265EBA9271B9D777C3241791B5CDCEF169EEA2C36A10
+DC0454FCE5852569B7BFD41518C40109DE4A874383621BD5DD5664DBB5641BD425EF9B37
+EDBCB4E99233BEA390E1B7B9C7B0CCCA9D644534D4839A5477CFB39E66CB16EDB83D92AC
+5DDCE56F28C60787FF6D8C067FE7D92A227F42BA7DFE9C4CDD8BB184CCC628904114411E
+C691A76A756DA2964F406269E0CA7F70DC12DE90C80CE77D8F0911C15AE36796ADC13054
+B86B069F9EAE2F11DAD87E143DB818A8EB59A6715A4907007A62AF13A4463F8AB45E76EB
+3B17FE71E7FE546DD674A1A028191F64D1A19212C4231BA007C0CFE1A000D82577EDD071
+1D03A0CB5A2C3E788C78A52C9219EACEAF98993C38E66BF39282D0C16F5CD7119B2E9B1E
+EB278DB5443F10B654037711E32D8CCC4DCB3190C8C2A7F16B94306CDAD99D9D8461B020
+BA0C1D8CCCC60B735F04DDC52575E8758DA3F55329DC6B9CB174038A8C6D41D03F8A82E4
+B9F6EFEA3A0F5381EC7B9C23D76F958DAAFD654DEA0803DC539046E292758E58F02E5AAE
+87122DCD6E334B3FD4195EA807755AF9C35202A4860110687F7A7E1DDD0FAE167A3846E7
+BD163C781162B1087EB2090AE37C58288C26B5F4C5C99451AB8F7201F60498832C55D66B
+0D9941A81CDFE8B83AB19D7A5AFAEEE04216B034079473BDD3D7F237DCE823E77D3740FC
+6065DC289A59D017D1E8F60CE96CFDA0CFEF703192E665DF0A33803F2E3EA456C1D1D6A3
+B1DCC2F0BEDF4D900D839C7D6248CE2635D44E8A04BC006E978DA7F349B555765DB4DE24
+343512A78B6B0DAEADEE3D561628879AB0E8B6C2E9C739E359701CB2420EF6566F674682
+1EDD57F7198FFCCE462CB5FDB9D48F87F689D2E647CDDEEBFA520AB032EF0F4079F69855
+BD6FD320DBD1224EF18DE9A15F4DBCE8B5C5B70C8DDF0DA226586D9716473ED49C9FC0E6
+CE8F62E1280C004052C089C2B604E2414438B37984F673419FDE8ADDC112803877EAB205
+E243C92277A563107DE81A100E9EFA5895D7BEA2ADA33BEF38483886CB96B098A22E20F4
+C935DB9F3D22CB0D439040C863411A5AE1A8D05D84628B5861916B70E7A93F67AA39E300
+6602CC382BDC17AB41FFB8F3261CB006D041CEB1FB82975D50533639F0280F23C53E5C2B
+CBCA4F7B550D2453EDED75BA073AE3C3EFBD4B83913347E2C4D944F24FEB9942D8B13FCB
+5BB1BB0296BDA26BB860E131ED3F6C02C89A3F4DC42450FFB813D9F8466B7EA091DBC429
+6EEC2A1A48CC7602F4AB2D174E9D8E8F8E11BC9D93CE0CA02C2C987D347EB16B9DBDD944
+FA2E5665FA23622AA7329C68D747223CB94F41EB862CAB5C95A8034AF4BB76C09D4D80BD
+69D7CDEA3575098AAC18FCB16A351236775EA7CFBA80A95CDD3E41567F0C9F96CBE72E25
+AE919C06558B85D64A85D69E9487D31B795DB7BEFE62E17291433CEFD5244C964935B594
+41FB77A677878BCEB5D18CEFD7E63C941B2C475E059B2102C4C4A9C2B71AED36476CB5DF
+86F947EBF46EEF9F635213027307DD2A254BB9F4FD08162B577D427AE1BB3E082BD8929A
+D5E58D9C6111B41B1E1373A0D8681171780CD3AC42E5CE5CF5309068FCC992662EEB6035
+F05EC32538E30ED429814CABF91035B4CCCF3DE6771ADF399E021297EDD980C368C55F23
+F04A637E45BBDF7AA8C70E27F75278055D0B54854AA88450532B8BD1D64DC9479787A5C6
+7F37D39E76B1354F0B2A9DA2821625A87C7E03BD98EE09C379B9BC9AD6642202EDAE4649
+A18C58A4AA51CFA32C4047F8BD566C841DA10326BBD7ED0A52D9D22582D2FB1D86B00AC5
+EF7E9D330E5F845757270E92B11E11F68DF65808E2F844AE5A09ED58B7FAEB167363CAF7
+2A8AE40B204EB6E2F0F908E183EBBE756935666764B2A4B98E932DAC8603DECEF9CD9CC2
+B26A817DACC35553FB8C4670D32CF8BC959658450328BD488238F4693A8E4F051C73D1BF
+9825E8B27A120945C0F323C129DC23B25DD43B46456C07F4499597FC69B4D912461A6755
+1CF8F67588AAEB8667D527606D147704429438CA08A7F2E44B991EEA0E8389B0DD78C5AA
+15A4236E2C781CB56303518CE1FAD4D021B86993F562B21D752C063F14117A9BA9601A11
+F58219EF54E4A6CFF2419046FE7624AC9FE38B20709A534CBBF3B912845734F562EB8779
+2A2333F16E79AEDC2C294AACA405BFC8E48CF4A66D94FFE4FF19B1CFF0ECC82A238E437B
+711D7949B8C1663CFD9AB1EC63ECED731C24B2F2CE0D61B2706D03C87D5D5B2A197C1AF1
+F4365D52E576F88376825E0F0A65AC9DDE60067211C69413E571C8DA79C46C35DBDBC5E3
+D1E3E69FA7D4AD15F4383986C4488831A7008CCF8533F1D8BD3E42500FB2624CE2C49652
+2FEC439BFEF61D6ED23B8A57B951A5E39562230BEAD9ED7A657203F85C417D31DA1DAC8F
+6941F8FC08A3CCED622C7846BA57FEB5E525677A68AE3E56A9681C99B2CBE74A8942EFCB
+172D8D989CB1058AEAEF4CD889E6A59C25E04BAA12A8FB66368EDF0CD9B59347426DDE39
+06DCB62AD516BB6D4533BFEB3F441EE7B163465EB5567710D5682778F1D945F090A72722
+6935F1BB5B33A9ECD0094BEC3EBB1ECC422E51971CF73C72E1EA78295929A7AEC38BBF64
+A2291687A21F78FB5C7F1F56F31C354F718E6740753BEA8196F9FA45238D4D6D54092F67
+8CDA6458179763B55B41C94B69A3C972587EC78400DABADC11F55ED67E1DE7049EDCE8F4
+B63686FA3632AE98E25929467A84FDD984E83C002268538AB48CE073971D29B0B0ABD754
+45F9A34BC0ED829907F143F87169927E847C4C4CBDDD2A8A7AEDE2EE2DF31E139C773053
+A7AD752F57B1C7D8643130454ACF0D4444946D27E9D14407D4EF117448BA1F66A59AC5E6
+42F1FCD45EC33FA822F83B98D3008C02D3F4B6508B5E535FCC642F310CA9DE005BE527C0
+46D8A525F5D92F0D986A1D02D3B0040B1717C9B2ECCBD2C50B77190435349B35C1EEBF15
+6F0C791C0DE7902FB7C39BEE6E3B60DB45A52486F8BABA4099B91D2B08CCA6487B79A999
+309F861D583AE344212593C8B9DA3EFFEC2DE4DC50054F32FFD876281E27F17E5EF61D82
+43CA6E3B8C0D8293CEFF58CFBE21B071C3C7D7F460F4F14AF072014A2254A8EB7C7A5C36
+9FB4BDE39A834596D71ABBB19F6A82A2CB08C135F7BE483286F61606384D5EFEDCDCBD0E
+6217459C8C4B53C30AC302B1019BD27BC437A7D9CA58FFDAE459CBAC15C2E3E048EBD68F
+92F5918868908998E8D6A4248D09427DD58932C20300F17DF90EA99DB86E8B0F2E931380
+4BAF34E40D184E9F619EDE81EEAD0CE192A16BFB0FBDA634920FA4B5A5A021B3C33F09AB
+080BB85280E81A13ED23B6791B9F59F4F0CC7406C5F853E25F536888A52141B12FD11B6F
+E7AF0EBAA43FD77FF97DC1C360860ABA4AED90E42B64FE2BE08D579393D6989E93116E44
+973CBC4E02A600A6ACBA3C1ED34E6B8C04B10DA1796E4105C3D207658EFC7671B3E1E15B
+4810ABA8D4BF896A5EA15F0572B7EEE0560407F74B9EA29530941F3BF6F5C76703F839C3
+C399269558E1670DD63DF710B51D2156A6A71DDE42AD3A923D880903CE99E9E28CEA54AD
+344264C4EAF03EB0B7D51B64969BE0D4B9841AD320627A8E42B2E4B145ACD0343512ADB0
+025508972DDF1885F81EFFB1251A7A907DC0FA2414AEF360D9F6C6AACBDDE6EC97A7E9D0
+49BE48CBA681742D490A7E7D1DBDC2B52920310A8BB6DBC548C251EEBA487BA07AB919C8
+FEA32D14994DC17A3C8ADDD308BB94851B6B76B2DE303861691644B113B78431B88B09BF
+49F37E7C579CF3EF8A7CC762C1C68CA7C50D2F81371EADFBD66C8339D5A1A1CFE75ABB15
+7B1654B330A4E562307096294709C70EA3906416EFD99EDE04B100A6C9F9199E88AF403A
+5346186078B3C3BC6F11812AD3F7BAFF1F9A099DF8DDD6AA4354781DA821362702C9C303
+BA5D57D921450E8A4AEFF04659BC701EAB99794227964FE61CA820BA34C9DB7C58072547
+D91033E208227D1200DFDC4F33E2771FA66ECE000FA771CC7BE40713F8A48B30A711CFBE
+D577E1E47569457E12EB5EEDEE7E40008E1C9BAA6882377FF1BE810F26A51C4B63533837
+0EA33FBB2E59EE369E266E29FD70D0D58249C372546B97FE79EB14AEC246680FC8B94DE3
+DD5432BD3FDC001F3F5A3510E309BA6C8115CA7C3A32D70C256C03B2AE94995580D43E21
+0E390230B060719B4AB5B26C3E4A93F63E3AF38B292F94DB172542F6F68329488ABAFEC0
+19EFE34EBF589BE103524C4C09BE9D914FFDD0131FEE95EE5560BDD45B057CF001B001A9
+FA3DB57D1371D1915FEF63099BEAA5EE95A148F6CEFF68150E4E1E24AF5CED92888695EF
+CD7685E67E9527F833659E0AC81404CBE0BA6E62AF5F393B23AAA9D2ACC040837419A9C6
+48FC5CF6F1F2D9F64385924EED4D6BBDBA70FF54FE5F67787EAC0708D975156B5729C8F6
+3B5DB9F98DA1F0793906AEE7F006EBDE63184A5CBF691B3E0E1A09D59D6BB3815621CA31
+AB54A026D417527B1D220BBAE91C49A60426B6D714328E6E02442E76FDCAB0A755E0F0AA
+52778F2EF7CAF45D75206A9F846EE709259D2EC01BCA48F419AA2BC72AB82387C9D2DD21
+A106E19614A575B1B440B2388AE50D23C7BC44D910B6E2B20C18978EC3DEAD276FBF7604
+F54582739C5F717538EE28F76408666B616435B90EB796A8A2C326B468A0E7CC6D2F9EDB
+6B594C1ED02DB80E2120ECBE03905310567AECB25CE267B30BD89B931F3BC8FFB9D0CC77
+9125780F8B0AD11CF203DC89A3B39DC14D78A4D8CF21F47A9D71D0663236C4E6C9037B2B
+EEDB2B20153F7E0C6181AA851614227100101990C270D46A1094F03277352BFCB167CA56
+9608EBDD9FC9F59FA4717340A1CCAC13D1F45B471FFACA2060D8661A5B212D5A4A387AE6
+79A08E39F3C5E50CE9680C066E342DE3EA1943D3155945EB14AE5717A02E21B975D63DC4
+E860C6B556FC4A3C4FBD7D568A27C841D30452D72D8C985B447A77C71A3854762BC365DE
+92A8BE2808B72CE88956382735A8050A9F74D993FCAA89F10F62E754D33DFAEE7BB08C2F
+B29BBC8D5C3C513BB186914CAA9F83E8BA2F1B555ECCE1DED812C1016B60E86808D7493F
+E9EAA56ACC8E0CC88BC34E2B3A74DA3ED2A0C81B10243BA7D3B25958FA577B6FA8DC3EBD
+212AB748EECA2C91F51C7F2C6BD72BB57FBBBBE17FD32C8A0E86A78E95F0B0E7B2D12BA6
+111EE61E10369BFC4EF75E8BF667CE398FE3C7778311F8FA0B0DAA6E883CFB08B6AF5E8B
+379F1E724D70F37B6520B7329CA3FDB3F13ECDC56745ABF6E4AEDF0707459849F094FEB6
+AE73F4AFFFEC4EC8D4D370AC30AA90AB7CE0EAB612B83117E3B80D7F88F12E31288944E9
+52C878FBFB303436459D36EF896A21389C869756F93A80FD5AD8CAEF623B8125595F8D47
+BD2550A357E9EDC9BD7602EC48553EE2893A7B1445AC0543FC5932CEE48F5DCD30D9D6B9
+E200A7E041AE6193362D6167BA77B81F9EA97C621BCC09D9C3171AFDCE9440F92AB53C6B
+69D95C7FD70ACA25DA4EDF5285809887FC16EB8F742049010E554C8235294511D3BF402B
+17D19021F8BFCEE06B6716DBE79499D24DC06183E31536F701ACFA463F76208E1FC68082
+96B389D33E3099EA67452F6AE6B7D9A6AD5BBFB8936A88B5F3ABE09FA93477963BE0B491
+DB2A1308AE30BB4EB89404F4B0235367EE04C58759BD302CFE139675D7C8CE9CF33FA833
+4B64617C22BA7AF26E51E5FC98DDF621A998F8B2A2CD55B6D705756734070F8B4AD244A2
+2DDAFCC082EFAE6120B76EE6231E3CC23AF4DE212992965A5BA520BA82FD22D3834CBD5F
+3D1FF5C0F378FCDF5E6E451EFBE8A4EB7FD25D36168D515530FA3BDDA256F8C841D68A60
+48521F040ABE682EB1D1A4D10457099130BF6BEE21F97BCBE17A2CF2E12E8C0F2E6EA02B
+232A34FA418CCB10043C9A4B9BB36B001DF5CD4604694D39443163C17710F445B43C17B0
+AA79F2B78B9EEB75C78703D504C3BE47C60BBBAD8184FB332CBA847CC6DA0BB1D97E2D5A
+2DF9FFBCAD7CF46EB2090BDFE5F5C3033B6051902A3A5C034AB80E88AC4087BA61DDF33B
+BC1FC637C7133F24B4EC651567AF42E99B92AAC96535D93ADDBF4C14A195CA24BA2DB784
+4EAF27AF64E57BE72118523A993FD9689AD5AD718DA4BB64B45E7DCF62AF6FEA486B8029
+01B90B4114AA4EA7888A81116202780B3179F63C111E863ECEB56B5AC762CCE079FAE4EC
+DF4D72783A1A85E4977951F1EC4BD99119D85D656BB094B6C76E8BCAEFC62A2722F3EBB7
+11F46A533633F71821BF8F3B7D8DAA38386A3C76E68DA7BBA11720DD532F5768F9202955
+7ACC8FF7D47F524222ECF32174C29F2A1A43647A163F9571556EE635FFCE16C02A46F15F
+22808ECFA46F10324F4FD91A60DCFE4318A6F7C1703C6C19563C16E07981531D21100A35
+2490448F4A3E7A8D43726CF3E765E1A94F52BB68E2F26B8CCF1C3C4945695526FBE76873
+65083E00C0103789D47CC6282FA85B340720A6DEBA41201132B9E75EB6BEE4EA28A55FC7
+A0DBE38F4062CF531C0FB33443528AAE67CD43B31976F742B22C52EC6292EB3397948B99
+CEE429A2C3C5B215F8504F9A5CECF292E2EB64599ED4BD79F1B7571EEAE20A71DD39B1F4
+3B1352994C4A7CB83D4C5D65864C240FED34B83703678C5C8F62795358FF0C910F787A84
+F35BB3685E58D1FCD1A546D5F8CCEB3F724E910BD8291D468910D54D1FADC38AC6A1FF7D
+0D1BFB929BA61C58D57CB31996915CB6AA43E4F4ABAF30C4F6B5FB3C0BE743A0D16A4FE2
+826A1E2BDA5B5791B810FE38DE5BC3640F01096BFF9A709699964C64F097D0315F80253C
+A424018221AA67D94335BEB8D7848BE9C651A37F8F9B6288B4EDA5E9D6DA42D7D4EE1CCA
+FDCDA749C0DA8E05C72A79E406DA48D92B0D036FBE368F202F4ABD12189B48B83654C356
+69D387804B743D58590E75741324E458A265AF0CDB82364C24890742BAD53BE574320107
+7901D79E5684BCD968DB1F222E2C8E398CCC01A1C13DA0071A68A3F1BF95AE74CCF236A2
+2F477FAFFAA21896207283782C263219651490E35AACD3C9B99EBBC6E9637D7AFFF6B3AE
+E799D725EA12D2C1C52171963AAC8A8E900314D23552A1AA018EA261EB6A1DEC31BFA25D
+0944DAB527A2368A454F716BBD47B436D6AB1485BC0A10316F835194A9F4422211A54500
+65F6A557F5A1F884ABD03E80DFA922DB89490ADEE3D4B067039E792EFD2882A338EDF524
+255EDE9D8B222BEEA6543BC2804999BBA6042746C1AC4945C57AC810C8F1D0111EE9F08F
+3A3C85A27C0A26DF6EA2DDF7A887E009842E1B026C541B8226D11E154316F5098E5C7D36
+1019A2EA52E3721FC038535509EB977B9A542DF2BD40D1C83D0BB58EE9088B30980C7003
+87484138416514DD79C093A82A41E95515B938FF9C11E5DB45EC11FDE5C6970041C9DA2C
+B95B532728118D8AB7305014FD9FAF7AB59B80EDEF16091E4E802C860370012D4ADB59CE
+669D222603F2593664DFCD9E10091CFF584057095DB3DC3495A898BA35912C676267DC12
+B13E0C674956B32B828293767CDFE108BE5215520A644FBCC09F1885A0D51351311B4156
+DB6067FC9CD2614C23C2BC9AFDC1B73910053BC6B4834721B7C4EEA592BABAE282F35EBC
+D4EAC836BBACF0C5F0F2D4D114D318BC3C641AC0FC86BF0F881CB62AD1471D60F23C13DC
+5F1D2217A57913CD0B1FED585EF6B3BAF8B48D9EC6E6880F315D00028EC3B133273893C9
+C7C1975D536B3680086824B4A074C78B7BA68C309B70AC85EBF6EC03470128CBA70FDB51
+508B2D88189449E82140ECF804C85A059ABFB5CB913151CCF0AB46CB64B036C0A4C675C1
+B93ECE593A6A601E79F0947D9D5416C9D26C1CC5046D2813DA18E2B954615E9A1C1B3974
+FAA4C4C877EA3977C030514A7FDFE784514AC26534236C09A70C33D5EC87FC613A4814EC
+E8221E2A7D0165D8344B530B9A7428EB552FC4421452D24501EE0F5E0CCE89C5AEA84A95
+183B46C42A2AFC0A6CF782DC8D1F850401B070803B222F81DF0A14C8BEE2D6D6D4C25960
+C4E868C27044AF1464ACBDE955495A8086937E5A988646DCEBD8C4231365ED91DDE40EAF
+8002B7CB8D86FDE0C8FE1F21AFE975124BB5E7864F8FD1783B2F8BBEF3C7EB002C4A58CF
+0EDFCDC369554D08EF1C1C7F89426FC6B88829A31A78C4CBA45A8B0F199A9DE5AEADD4C2
+A8C452543BDCE0DDECD77F66A7BD0A8BE571A7E3BDC91C8B082ED0039521ABF72973A257
+2AD08C193206799787F070F1F12EE5C26ECFACB48D4B5BC3779F5F39D468DA862922A8A6
+7BD7DCB314497E5E259BEC1A0D06993F84EC813CEA85CE4CD00FF9977B1EFE0186A7CC3D
+06A414D04CDF4C8A563B7F0AB214865CEB639E8EC8DF2AAE34EC2849D4A0DFE017BF482C
+548474133FC73628657DD45F4EA49B7454AE492F02ACA3148721F83F3B3919FE9AFF2DFD
+8A910243B421D079768CE7F2CF5B6A838140B6647534A156D43CFA7288077299E6D24A8E
+8F09587D3C0A5CB77AA1E5F5148F20241319D56326B8B79E4046691A0C1CF5D533269B2E
+24B24EF620C0A3EED70B166767D4271BFEC7E99262BA83FDFD165F02C4FE3FBC4DE9E831
+E982592C5C28009B9903B5438FC16BB3CCF6D90EB403C3605DBD2B14A7DEC8FFAF6C2832
+53C32A94EA7CAE2D185E3A481A641EDE7BAB5982C6F727294EF37089F9A6843BE6A4F296
+05447C3C0E61C8401ECDD40CF2CC210A52044DC7754E4CB7D9FA36FF62587A55B7A6D5E0
+409E5526795EFE5FD7B415D1BA85E15F34EC96DDCEE5BA06F512ECEDCEADB0919562EE15
+AAC667B03EA3B0F75216662BDB57DDC2C646B693FE6E8A7884DA00D635FE5751BEB86889
+C5A225582AB7A0E8741A8093A294D7B2537AF060B0C77A2253DEB2A2CC2349C93E3AD41A
+5BA5DE3FC0B03300AE4660EF056B5DB6ED49D81015AA3FA3F4A5F1468EDEBB6A7CDFC58F
+52E797FA704D155134DDB520DFD936F5C9F154BD6009E45585BCFF0918CE75AB76F12B4E
+F7663DE41FC2F3BA7968238F826CA137F30E50470FD65278813A2C4E84E6380347A22F54
+05A2B69D976646CBA8BD05E5C2BAA3A95BBA1C19BD3A6176FC0F24B8B74E1F9E416D692D
+258577FDD14D1B16456A880373B23406D3DABEFCDC51F770C07915C1EEE361A02FBC9480
+1DE1A249EDFB2E0B52F069E2EB8262437D7349EA782BEDA3FA689E64875F0F1B7AD4E8C7
+1E186F3A2A9EAEAA28F94880D1E28DD594D44CC6E9C42870646F18C481B0826D561CA84F
+117A757A89673F0F39072222555682524B5BE8E0B093D25F4D4C4C3DD3D6AFBCC6749496
+B6DC1B119AE9BED8CEE10A9475254A66D4488C26374A7C7F21763650E029AF033D42388F
+783552FC71EAFD019241EBEA790EFA0EE2CB95D3496EE41D21BDC2C2477AB19142377CC2
+6DE41A0568AD4823806A4288D715C1D49574F78836F9B11AF778427A4F27210D27F553E1
+2A3B3EDB0DF24204AC81AE45F33E6FCE004AC4B0029A710407CFAFF84A435B05AC776E19
+2EB86919DDC84AC51E6B3D8A3BC0DEF58F6AEB42B9108A6EE2994ED43380491DD330A2D4
+CFFAFCF164A3FF4443E7A415CF5BC112F0F1FA7C5F32EE18CBE2A795E14F52A9056F4E84
+B4DE3FE0B4EF3B59387DFC7D4EDE7690FC006B2BEF320FB2E1718BE7512176DDB47704F7
+0FE999247E0A5EBC4BCA68FBD997CF322EC37AFCDA921D1313FD5D343EBDEAED915791D8
+F66C3A674819F2113087B6FA3C25C41BD0D0E3BA44DD90D7F28D2CD0F2713FC90F37FEB2
+1205AFFBA81AD5E647B4950272D9A2E16B712192316FB27FD3E58D680CD2AE74C0BBEA86
+9588B44CD19A87560C97179F042AFE53F5D1AC50073265EDFF2255C31627DB4AC11B3651
+6515D2E048E8741291E02EEE48C12EB4D4F29E2B51051EC54F0F8B8F7E3729DC1CD111B6
+A133FDB2D391849985B4ED7B625C2B628AFCEB2EBE7BBC30A5FAB5BC48DF3DF187A37B9A
+C73DB0E904C64636536F2E7F4BD8F6A564027D5DFEFA3C75B09E106A0F69A82EEE868714
+27206159FF89DD63F24903ECB4FDAEAD8324555D5E1EE2EDA22262EE39C7A40B726A527A
+B0668963B10E80742381B4ABD46BE9F2566DA13CE2A0C16E7863852CC39B2BDF3B844290
+AAF76B9635012623D20E1D939490474B763F91411884F6E1F2E024E07176ECD68713492F
+B9CCB2B001FE223C61D24E185B5918E5344C802F17AC7F980D228CE3C23BF2C06DA0216D
+418342A4895F7A41BC09C436D6F5F63C7B5F315A7CE664425E262338BC68FE44C97C9E64
+F251F6EA603E2FAC6038B499BC8A5A72E26894F64667489A468C3185F628EFB55756DE82
+6A08C49AF9605A2881046848BA535A26F71A753DBA31AE443C494B33C3D2A2462D86448F
+3EF7851002097B9F19D1958FA54DE968404A8827BE59C48B05BE0B6C2DA790F663C5531D
+CE54FB2AA9BE3FDAE2AA658DB07230CB4881B61B70B89690DE8424C2872AE00652B0AD72
+5C92A4C4E5A2CD52FA9650D607C86644EFF26DCEEB53879FA742CA794B9EF73295E84957
+0316B568106E0492CB07D2258957D37E88C6B1E50FC62FEAE5D401265D92CBBFAC925A09
+0AC88CAEE8DCB35A8A4016ECE7B8CC9F30236C9CE198C2F43DA5D555982F8D20EDCA909C
+0FB44B136D1B24977E98A4313E51EBAB066D565626CB0A5AA9D798FD19262E810D9AB333
+BFDA5C344049D9C6D6CB276089F0DC0EC2AA7B9B3297A30A608858C21B610280FC43102B
+964F9E3CF3C22E502112DD9FA57B802B38214D8990E3F69DE4D50BDCAA1D6AC90965BD7F
+CCDE14E356C16D0398F12EBE3C3E9DBE5D5971AD75FA77D873E7E470D1512DEA65FBCBD4
+ED3D2E411EB4E948933DD5939D54680B971DF8AEBB681E4007728DA9E0EFB9A830C2442A
+DBD8E2E387E681120FD71978EFA8E684417681994F09D867BBED53BE5121ECE56FFF76BA
+9A1DC5D5E61F9D3F669AC0907D8AECD5FFAD3C8AB95743583FC867D95BE95F4A81FD7C18
+E531FBDDF381D20D0A379EB3B0C9B9FFC6F91000CBD32DA8DAABC3B98D8B19728D33B4D5
+9124E33740DF15EE53653E79352B32F76E820C5AFCE07CD6250687E4BB29CE6F2BAB76D5
+0C6F6962A328FBB21432A4E0B0980DEFC3F2DAF17850DFA9DD28A28F34EB1027ACB9446E
+D09F54B534310D575A0FEB2AF6A1448FDD53CAA0A24D4D1B5D9C7F2D3BF8CA7768E3C7E0
+E746486ADE6ECEEDCD1B42C902685F5662FF73567E45B5E4B026AAC8ADAA0FE3B15B0E0E
+07306E074DD6FA8D8CB581D71C669B0492B5B89190F6670B3BA888433F9758706DBB025E
+3E139014BEE9269B102B72F5A7D2C35BDFC4FA7702C0F1DE0A6D099389B83785AFACFA45
+4EFA60B9AEDDFB9A6891B34218807A41EB0C5CA7590CCFC8B886F51663F40246E1549062
+9826E44D0EF795F70DF6A2A6E3888AE865FCE2D8C9CC5DC045E311BA79FD5A8ADF89FAC0
+EC8F0CB95F0FD7B72314B762520A36D771664A7AB40B1F6EEBBA40C9BCF56DFFEF8071B9
+3B1A00F3C31D41F1813B8A53ECDD66EA5BE35A5CD230736837C1E66979DFA4E8FDB3422C
+44B2D01FE681A12B380187118BA8A2DF80150C9AAEF95145C33CAC8CAB5AD9229D2E80BF
+AE09BC9365DD35065814DC1E777F44FEC5AE51A52D9602142030409D0F60D0B1277CD819
+F1C40DD7E7A628B1D12D63AAB9E3DBB14161BEBCE7603C28858E37E32144E59D59E8214D
+F424E4F1C308A363AF7E9E49D290B54FBF2BD59E23B10F62A3E7C689974BAD2448D6013B
+BF994D7C373C0967F0D0A6FDF54FB55E4573610FE2A178DD0C322D524400063D0DB4E28E
+C36AE1CF8ED7702F71FA02A1A56DE5B941EF48879B02E0DDCDB3AC1ECC111910B525FF3F
+E289511B8DFA245DE11D76C25F9C3195BF1509288F0A553D3DBCAB09515A1504756245AC
+EC963A35F10DDE54FFE6BBE1EF77FE433815EE43A3D140F372A65C989B4CBDCB473E39AA
+B10E884AF2C87295615E0C38516B3C8013C1A6FDD59143AE9CD3695C5C16ECC53A110F36
+8B27A1FCC8D17DC0BADD3BD8DB6C3DC70311E044F80A638D4432D439F5CD29A877E26283
+E83B650E349119BF25B38EC17EF30A421663AD2D2B1973DDDFBF811A75E1B52DD80F8585
+EE8305BE35D50482AF6926559CD10DB2DE2E55F3C3178D487D38967F8614AAF80E115911
+07FC66277466B709A979D361A6BC65755441833AFB6FBB95ADEDD19AD6068FEA040DB68A
+4B0B23BD7B70227A3DBC4AA0CFF5E81E5ACD82B4DEEE5ACFDD5E30F09FF0990C9CD61A43
+5C172BBD27202EA98540011E458DD983812599BD73457839747BF4E7DBC8B4624D36F5F0
+FF5F0B05B186F0049D3DE4CC9E1C0890B0B4E2C7153C706A61E6F7D017F66F51F738B596
+01F45B87AC862AF8861F4ACD7DC211D855AE02C4AAC2C806C072419FA2BF3D5C1DA149A5
+0B15A41A0C07C045773BC2F6515F7CD60BCC1E20E0AC46AA19D0CDD9C66930DDCC375102
+2F64A6F6DF7B20BF883D97DA7A6519126EFF929F690D0A0E03D5B492C91445E5458CBCBB
+BCC0AB385223FF479013DB9D730F3DB3D218D5108CE9CB9F6AB35EA136629C8A540AAF00
+C1E08CE8E9005744E0B33038B0E772CB1CBEF72E76C11BD9E41F237A50DCF2EC9F4C7C82
+CF61E338C103B11B1DDAAE43F954F763CBD105BBF759E80C17F0EE7F19B4D45A952EC2AF
+00A85DE3B5153ACED876719B209D892B1ED4D1AE1B4FB17FF5A945D8792422CA3A92981F
+9B25787DEA56726F62AB1CF7CD667957E31DE5EFC96D11EDF149C7682ABCABB604A905EB
+80212936C09516C6F1CF76EF0A869A001278D921F7284E58A0958C11E78248B5CC0A6603
+F41452EBCE175FFF484250F4842D5A03C71A77D94AD08A2FE2144CBE251DA36A5E2D5F40
+5C6FB88F27355F091A88BA8FC218CD80B40A1D3EDFC127DF1935478C425796780789743A
+DA0D2BA55CAD02B6EE454985ED6A245884749CF48BED1E6668EE2DEFE69D85E981C57634
+69D4F0D7359EA000D28657ACB7B4457329232114CF6D069D479CE18760CF1F7B5229B3D1
+7508924B276559EF4B22A20D502C228E685664876735F86A099AB51D70E3CB6E347951A8
+E5DDB39268192C6D6A97D3566746E45822F7EB7D2EAF4C658971B4E3C62452940CBF1FEA
+9F5283AE50657019097500D20A72276EACE7212BCB110A55F492E3AB404CD25C2D13CCC5
+4D45CBB5FF86FBAEFD0529BC6512601884D83393871E1001B51C793674B83D545102AEC5
+A60AD4F642160CCEDDBCEEC4629589E55C8188A906418D4582A773B9F699F19EC7393089
+76F358728164E5678A6903479810A042EE959CC5B5C839BD69AE92DD4D3C7A5A72E1A34B
+BEB05AB3EEC2A944BB6F76768527E49F0B78EBD9AEFE35C3A421F49FBAA7CF44D5FD2903
+CCB0F823CF7AFC188C6AB442EF8C9ECAB2360B995A9CF25830B19BD40F62602016A0146B
+DD422504D64DBD22F26B3653662387A182CF347E76C006966454D66A558DD30E762B93A9
+26B1694DAE06E4B2F060D2F4D46052F0D637996C24EE6A1AB60460BE4F36F8AEC1B5EB9A
+DE25CCFA7B6FD4956FCDB6654DBF2EA7676137D6330171384F4D968AA3ECC933B770E021
+954B043D93B21917D466AFA7037CA6933661B95E637C69E6CF2663C0CB7A374D2E87AA2B
+F23832362487E8AB976E9286123CA849CA2E9C00302318CE43EBE51832092CFC825A4B23
+5FE3A7AE515E07E12EE4086C6389FE1F81AF0495846BA5C52D8074972A18284A72FFBD2A
+A938E7D0ACD622976571E7BE3557D864E8633C6BE44B4F1C5F57E7ACF1E3E662C7189FA7
+3BF93ACDAD1214DDEF7AB39709AA1B9243AAAF3F5F2FC91F77F79D2ACE0CE76B6FACBA94
+AC17931E724C595824696FFEAB954A62F18B92FB7A0DFBE7DDC0134A2F9480707C9ACE2B
+8B16A7BDA19A47EAC02F57A2D24D3107687E2785BBD29E79D712420CFAAE171C48870A18
+0486607F535FA0D70AA3E05C338B1CB82731828F5C000C22138B2870B3900968B4F1D23C
+A6B9DD23190DB4019640863F0BF0707E8E7A60B8FE799DB5235A3C4FB0E21009B2FDA833
+8B1E561263A9A4BAC91CB7C94CF58A9001B5E68F96D3BBC465624DAA4EE55ECC5B0528B0
+8A8880C6023D42CC214DBCD093F4C610CE06D9C67DA0EB8478E9063992AC2E288C955283
+23D310DC9BA576EF94F6FD10094EBA06CE659D53B01584D842807AF16BD6980819637038
+68790EDA149CB2FC1614698FC19C9EC2695A286F89586446098B815FB49EDB22999FC370
+886A422F52B9103298D0EE19B92C824A77FB4C1563F7368B18FA726230EB5DD8514D6B06
+649AD37266BEEED529BC37B8FA3E497FD1673CC4514FA4300A0FF908B9C5376B5F76F4CD
+456A9BE110273553ACF726ECFDF2E0CB2472C4F67E94AD70BB0020EE774E899F4FCE3556
+9DBF08EAD8B095AC1AE0C7B1EA34E7AE295A7EF9B5B0A13F2BC2604A0A6178D3B00D71F7
+CA6B008B59C12548DF063C66D289DCC468750CA806BF98971375887C523149D5CC9B161A
+83178A88E2BD9A0A216ECDBB9BB8109DD5E386C3556F512EAED4E0C120470C49BA1617C7
+2067C36BCFF5E5C231DE2BB858938B8E5356686A11A86CE037129C37EEA7B6F99457F38C
+0E1C028E91289B8EDF41011F197C1F4DD67461E2033F4C9BD58527F46251FD9E9A7A1E8D
+EE84B989960A960A86BDEE6058E398D598CB33CAE4F3BF264827EAD1C374C36DF3BB1309
+7ACD14FF8DDE433E9508DBE181D0078CE17628483F2D0635D1CDFEE7924392731D44FDFC
+113C515E26ADFFBEA17C9094324407F3519E052D336277D42FBC87FF0FDD16AC08D698FC
+FADF955E434CB6AFF8FA1FD6FB9FE8C7D701F405FA6D648FFD2BDA54A64D31A5134A1353
+3232E5323874F62FA0A9D6496437588C5F18E728DD3EB0F3295D9B9F3E4CBEC3058B3DC8
+07CA030EA53FADDE0D082B0123B34CAB983BCC39744D43B902B5681E65DEE039C7FDBCFE
+AD4B630CC031D59421E31B6458D0411692C1A6530BEF2854B28CF9C4EBAF097E2CBF394C
+2D5B05770A77BC80CE034C2DAFC7ACD3AB1EC0C97091F6B26EA0782A0119CE6CF10D99F8
+C79DFBD2B015EFB8F2F6A7B9293E7C3325544FA78F921F169E9DE628D1990EC0AE6ED5AF
+56EDE9D4AC9865943F93871CF8F25173EBA9769132F4E98E00128B04D3E5422288BE59FF
+CD351B30BE8DC2FCA4F13BE95E66BAB19D824582C61FCB762F3A3896A24FA532900A3295
+CC6AADCDEDB4EFB8425912F7ECDD84B41A611B457090A7987BB44D19ACAEC8BD3B84D35F
+1EE5FCC5B916FBD30A781F239C89937D3CA26EBC369BA30915AC3035234326D42CB0BE86
+FEE00AF58CE8F46348FED663BAA58106F12660D661367D926B9C4CB41D3F9B34C54BE00C
+B6221C8CB63197D2BA6C3FF35A55C29772C4E1A5611BD7C0E4B7C3EC54BFA2A3DA26C1D5
+1D2F033DF270FA01B9FB53705D0184F12940EBE66B0AED6C1545D730FF88508B6BFB539E
+4913D086B37015AD6C07443474F8BA17E62A028ADF392F248222F76B2209AA1E57A4B7CF
+F258879FA1D39AFBF85925AABF93803F37FC72A3E5A7C349EE17BD3B436A681C819D383C
+14A7B40049961ADFB9050BF027683F193ED99ED6A148E28700A830B0B9AB77AA8207DC2C
+529F40018D8A420FB0698355ED7D69B44EBC093AE23CEE8609C5458C6FFCEF134659B226
+A733473F32F8AFA05AA605AD43AC601B9256825B7B73236291A9B969CEF13C19C66A3A7A
+FC5857C84B9E3BE7D7849A9BB91A407C623BF0DEA0DD4F1291CB9B8924D70207C6598922
+CBD70E8CD6FE2A78C517171BB662280AADE958F4277DF23184C09D705D42C038CCD396A2
+3123BB3680C1BF3DB99A886B7A522D454C8FB6E5635E4060B6A14A04D6B677986853B4CC
+A3DD3492151655964525DEC609EFE81D80D29746D5648E4FCB84CE01ED970A8AA5E28986
+67227897C233CE78DCE3DE4D95A1859658C3B3B8F801CB4264D65EC401946FA9BF707A69
+C718435311D12325254D4A066F67677A9CD77ADA008AE6728FE0E8C18E3A20A2EA7987B0
+A07DB5221B212A1EED6A1C2CAD127A3ADCF816BFE46264D21D1A59C1C0511F3214F24265
+8F551965729E6EC31A621FE598ECDBBB6E3574EE0687821D6C12A84E04FD24DD4578FE2A
+8709960E5C88570E9CAA6381EE4D6A91F6768732329170EF3B32B0B4EC4502F72ABCAB7F
+61E05F8FC84A4C7CE50BB321CDC5DF1D30F5B6DD190604F45AD771BA4150AB184DB33A0D
+E7408EE8038AE39E37BAB88C7DE496D6D3504DC75B6E4EB0D37213614FDEE68A3AD42213
+5379F702CB2FDE0E48E9CC3A17C6723BE0646F7CC552DE3107D0B3D87A9BA3977377AE12
+D6FE692FAD666B53196A47A0EC71FDDBE0ED24BE62BCA74DA4D8D768FF4C85225A1CE825
+0E9308678DE2EBE306C9077E9B7EC74E20E4C29D68942E35354CB9604384AD45E6BA5238
+A62D1EE0183F82A4A159E8128DF6660DFD22F1F723187DC9A21DE15A51BADE8EFCD84CC9
+7785C614C8ABE2544DB6A970ACE7F9C6C88DD2C8386AC0ECE367F24D933C7438C04D0754
+5400707457E0A938EF5C4E1954869D015ADC6A3086C715CBBBDB18B0FCE546A3B4EA8006
+B411D67B71CD72EE887277679D7C68F2E1231035D0D81F13225BC4DC5EC9CE3CA9ACA882
+DC3CE2C4AB1585C4283D09BA67E45D10852ACF7764CCEE812546BE7CD8787CC4CC758B5D
+138B159C5B0138A76739AF3AD7CE6E9AA7FA1CFD1FCEFAA260D8FEE345F825FF7496D87A
+25A614048CA0D09F55559E3592D3A802E20FB9814520146E08C1B4D610737A6C66B2857D
+B4F60E07AA549CB0D2071ED442603745823E08C707CF0C3393C058C305346F65E7E58493
+325A04A63B35A140C9C8B827579DD4419BE11073A9AD4AFF91772D8718D46650B971F978
+0A8265744D4EB556C564AB0C571EBCFAC566B67C1A5280E36E8328181CA27070ABF660BF
+A349FF75D8C92D82A0CD45F8DF4C24E889983FE34EFA711B17598D01FBDEAFB4B5E122C3
+EA255D13843FEFB9BE75B4B47F3FC6848BA794447ED48AEAB10ED098429834ABE0780604
+6B46DF883FF221FA102330DEDF585866CF15371AC36D1DC45B4F3409735C7E60AE3D0FCB
+D0C3FC48570C7B9D84CEB61119687F21FDDF418A9A7358E09F11BA71C5FC51B03EEEC1C8
+1C66D6A209BC66AF05BDA047A6E6A52F06D349246AF761F231F93718203262FF5EEDD836
+8FCD81CE0C7BA3F1669CD7C744178F532F70F40502AD87151111AA4F6E932A3F4C393D3F
+2FC0BF72303F7848B99CE79361AD592585ED79DAE8237E175D8B8CC82EF2E732FAF59D3F
+949322D6B44B3B3E5DD023AFC1A819CE68F928B9B9E001065EC6F18AE8B499050FB1B62D
+3E95E5D14EE31A118301D5160A815E094E9AC89FD208DC4BCCB9A5167050CC779C92FD39
+63E8786CB3993245C174F8ABC9B113F0C650C9F68D684FA9BD8015BA63BF596FF87856AC
+698818460204391728D8796742471BDBC3C609B0CDF89FBEA7BDA63DD61D0EFC2D70B2D5
+836E0D38F9E0FCC7A88134E3A3BC5233E41410EF7EB343792FCB32DC0AF463A8BFAF2D93
+2E80CB75AA8D563DF420BB1A26A7A36B10BF39CFF96504414267EFBD0F4AF3210D47A528
+CD7167FD999827B04A9E412099F3870F19E18988F71C5D75A5447E57A3FC3A04A9CDA21D
+082DCCB14154F2E28FCB6298136F5411FC09151A89611B944E337EA29A0FD9A46ADA258C
+097EC382C76B34B47CF799CA7B752AF7906E6F8C6A044F8213438B327FEC76F3F24C8CB5
+36D9EDF905069D5048B0D6747F4F6C5E7ACAE6E9933EF3425D185F80A275CD75C7EE2C08
+EEC199CCDCEE52BED885EC9320CE59CA077EFF1961039E7B9ACC69FEED16620B780B3758
+D0A2D211A80D259D31DDF7D71D244753C2D5545AFAFF0763E6E8B1B8EC0DBE1A6C1AE26F
+8A2DFBF6F704E1444651387786F4D28BABB5663B8BE05EDA5281362CE8EEAD0B206ED963
+A5A6F5F41D64C59EB4E93476E24EE803CD03A682A0E4261D532DEE31AA9965FCE1796AE3
+93119FCB0F1DF765545EF95FB60E405DF40D85E6CC9107F1AA9D750128A5E8EB2B1AFD0F
+AAE9DD01BF594CEA6A5E170E39DD49EB897DE5D30F55FB7E1CE8A0059CC92ED0776D433F
+F7C043CE0E1DBE810863CFAC46C8F7C8E4BA0C3FDF6CC9D9B491D5300D89FCEB1257E9C8
+B459645738072ED6551095D173CB2C90698B45A893E46B0A366B908E48B27FF0B84F2494
+AB449C08EEEC097A70AC8A4700A044543146A98DCC750540A007A8AA4CF8AE19A8A8DB8B
+0A36694F726C36C4E65A3236E23E941B8607F9BFCF305CAA69F445D3C584166ED30886B9
+5EA4664A87E174DCFC7539A61F964CCEA8465ED993594E2A8CB553D13773DCC2FAEE0BDA
+DBFFB9238CA3E270E3CCE52B522D00A2C6F3EF07E81A02BA594101BAE69C7D8967C7FEEB
+3B58DDED25FC01F6F9C92762B27F65CFCF9F4EA826E93F4297FB31FD6FC334951B63920B
+3D57D7EE5BB635146A385CDDB920E5124691626C5494C13A3848BCDBBAEAEF3F959940A3
+0B3BD2015DDCEB7C441E4591233D624E7710CC10C865DECD2D1F18C468EF9137283D7064
+F74F63B9864336DF2E9E1DDA2EA957F6C8D30E4D9785DADA1316E4F32573AADB171E6D04
+5D4C15632AD737D6C81931007C830AA4E5D4E139B4914373EF0E3203A26A4A94184B3250
+750F5FAABE67E6EE9D14D08248AAFD485639D0E2CF9D2EF3DBEF44EA67C59A3FAE515100
+7EC1433565F5F1D253B2E8F47561B9780D7230656776AACD5E5B49B5AC342002D6BEBE45
+94627850E24C19594BC35EF3E15F45B46321378811BCB076FB465B66386D5A586F7D4103
+AD588AFA57238123FDD8A24B90C3F76189533C604BFBA4369E09B723F036455AB8CD78EC
+DF4C43AE62362E26835D91886CAE817AC93E708D6625DA02B0685399BE440BC427A2188E
+45DC9F9D1B56C59E0AB109562CE0038AE095D62527131DB04EE7C2FEBE461891A8B0157C
+2F21D8B9A649ED3CDEB995D774FE78F8562ECFF010E00C895E618C5587F9CA7D75035ECB
+B9081D9C1D1C99BADE915D36C5B2E1DDB1837CC0FEE0FFC4454528C8B42574112E4DA1DA
+FFA8BADBE77D3C99BA89216E278EF7B9EDD0C7FD46F539C1DEAC03FE38ECDB71D2B37AB5
+3615F51F72B0BE212E1BD13CF95A37E230D891684B43A90B01EBB90A64BAEFEA1288FED9
+2697C4F475EC9293076170608DAD4C5852BA23485476D3254741850489B00FCCDB90E778
+58BB4291EAC55811E569D01BE54972AFFD6C8BD5C6009ECF2B645130FFF5773330EAF5DE
+91E9E44CDDAD5F2C3A2E189748DC6BF5CC4FB777E75130A62F012FAC51D0AE0A7D915E9E
+5611E484E5E90E6934976C2A8C219ED2FB7901450D8F2F225BDAB89288063333143232EF
+11A0DEB72275F4D03DFC42EF35CEAABE0BA6448F7FD0A67D3DDBC5EB0E9EB95B7507C6FD
+532D2B6C727A3FAAB653A8DABC4BE22B98116C461AC301E1087C1E2F94D78343E77EFE4D
+FEEC96B92F5E73192DFA138300A61A44D5E4D64E53B660D2D0C87A8F76470C868373C149
+5C1AFBCD7B04A4C749A5BE70DF7250FA626B0DF3A00E6E032D42BC2A2159D0994E56EE50
+1ACC3B1F3C40A226F5E36D53B116A395F78A92A448B23088EF3459AD920047774A6B9FEA
+18DD74E5FD469B5A0C63D48E2AEFE7444C6B9301A5512127B573D0A993E24508F746BB63
+F8C2AEB62B84CECC05CC1D07DFA9569C7590E399ADEB6A20ACE3CFAC4D8E3DEFAF8CA9AF
+50A0E70C2C284F867E3ADCD7AC1842BC27D378119391BD096D7541ECCD33B5856A5D293D
+D942258465AF56CA20905F5447351E2737AFB0F1F480E2DBC8344B3DCA8A42546CFB4BD0
+9125F4563ECB6B3B7812DF19F2833F2B9815B75782DEF11F6897B31B0359ABA5F73AF67D
+D5A975254BC2950F7A226F5A4D6FF283A232E27E232A512BEE45AF3FDEC2C49D56E84E20
+C662101EA5C90EF26E47A73ED314B4B11A7543F6FB6587BD4A459A3C86BD04CFBE57A51E
+00AE807CC2E6EBCC4EE8811AD8669021B4116169EADCAC03C8CF4D4FBEE93777CB220309
+11D57025CAD9130128F22DAD5BCB568AEAC7B4E85C7B48CB5392A3F793042135F7CD6405
+883266117BBAB90B25568800C0D00B2C59334E198E03DC9861773DC37AAD129BBED5D060
+25254CD31A7F7C074DB75A477F4D946A0EACE1F97671BB364557E62CB5A03F8A009FCB67
+9704021E7720D2FB3B7E46CD47130A1DE76EFF9217676C799811AA17372CBED647DB43DD
+08BEB8C6DE3B5214F329681C1501D40CAF041495B81BEB3D6E337D6BB5ABDC82FF809156
+24AF37A2B128CCC622A8845E6E292EF27E0236A69515BA0965442A28AC0779F962A7A021
+426471730CB95B6067AEDAD1BAFB72EA9063BEF210739A43D06F9BFBFB77AA3D2C9D932B
+29CB27F0EC28C20A4AD260C449D2B544E524FD802446A487B9B88136D954ED72F3749051
+F6178F5C1D27ACEC827EC5A8382B27957D837F7D1B1F96D502F537CEB66CBB35682684E9
+F7820DA0A9936A362EA5E6D93E915EA2D4EE040E5F7146FED0C92CC005A8E2F19F212F84
+D88BECC6652153D69F407002C7CC0D24376BB098050A5F0B7F8CD1F77A3FE2F6B84B27E1
+44E6F5A05D9A196BD8A40BC91DF682CF69917807519198FD6403DC68BBDF398C19AAD3FC
+2FF9F5F1734CE92E670336ED2B6010D029F4B392F09FEA89C592A04BDAC6580E53511903
+B6C898C71BF7A37D9C5F5D354A5F570E79CED347842EEF5D22C1752C7557981F5246BDE2
+BCEE1ED776BC13797B44DC1A68CD1FDD2879857338680995B9899423CF84FACA322C1B55
+C4BF6EDE9A12B93BB06904F165ABF521EB9D34B0ADB41302D024EBF7E30D1D2810555B20
+47B27C9608FFE0CDB6927FC1D1024DB595545F877BCF2BFAD25C7EBA2A5240A8A46C0144
+0DE70646F4530BA1EF9DC773B35DA2A7537FCDBDEC97AF4A2E2DB64CABD26D2E85009D13
+E4FF5ED4F205FE8BB02CDB2B20CDE98F8436879A7BD7E450DEBC215DE553B9A87C536EA0
+EAF11CBC0F158C3D0CA88DFDD405D262E249FC15979267736958B46653526330ECF97EE3
+B4B6A27F30B7ABDE4E2B9BA65A30387D1CF5EC1EAD536F99C9B07352B8B690A44F2B89B0
+98990AC05711DCD00143E6632DBAC66FB7625D59781B0C4E442B6957C9CF50C478D1F2C7
+C7612701567A2BF0D9F01D48A01437FCE35BA245D297C392F13947D2793633AB453BEB60
+E276C4FDD264C5F7D8D76603A6BD449004944C5DF23A6FB7ED191C24692C14533D19DB37
+ABB9EBD9A6193F15BC2441B604CC55260154AEE7770AD4D2FFA5ECA88B5F16B6F139B1A0
+5DB6D86E2E710D16F76278F7592A9EF546C2C644E9F27BEBC12085731EC079424EC8B6F4
+6742237B98904F057EAD097CB143DCA3B3CE25011C57F12F7CE6D69BDB2F365F07EA431D
+9AA70AAE77E13AF9690DB3050465421D24C98DFBBE2DC3E093A74C6BDF5F8BAAB921415D
+CAA9159ACE82D1BE68F0BA3DA64E5D11133EBF7D396C7289C4BE6206777A50815D16719B
+31012828159D1E0358374E5A7C18923B2B519D985766F03304B7D2C57A4570A3D7CAF1FB
+974898D12D41913098ACC965DA977784A78353C9FF3CCDA7E099685B4BD073827CDAE972
+A5812A3FB34D4A38173633AC7FE1654DB0F457FB8304868884D8E012DDC9699974E08577
+856FF9E4B2E371E1C256587E47094DE00F84AB58F55F2C512EFE22718783D50E7EADF193
+595CE14FA4A21F87E29FC38CA720A64C28F24D5C32525A23306B8FA81602F18F06A70748
+4E81AB01BE070C0B6B8541345A2D5B275E733AC7A61581FB35FBE4DC1AC25097282D3E04
+11F30AD603CBB471E53898CC4202AFDC24B68153F5FE89192E962DBCCDAE6F40FAC92C08
+0B0E9B689A57E278F2C0893103716BEA44904D3991610935CBEB57D6D81C11B6E906C1FD
+D90CF63BF2FED6596E243CF57674E70EB947413954E7A757222A893008B2218BFCE7D8AC
+7F9933A2F56F53EFCD2988A1229843672D7B23213D34473A62328D88A0E33132C9E10927
+230ED8D1271FC28BFFA41B9E92D316DECFA7B12E3E4193ADB80FCC5F27377C32FC252A86
+265328CFAD4383DD4CAC9D33874AC60D60BD2F7EDF5F6690BB9D3302DA97138CA96A37A5
+BB58263F30EDAB7647AC63C6C7AC9BD0174C55B517571A34E19EC80D03EE6F7EAA5FA9DD
+D7561BA8C1830604634C7D8DA3A19B799ED03EF841229236A6E1DF5FAF678AC0B0E2EC48
+F43CB1BA969E771A0E4D9873002420ACB1B0770FF5C599CB91E56F1C234AA500DD180391
+08B13D833FBB3C9159C2CC8CD8860A9AB0F56ED6B46ECE3BB31B9EFC0CB6A93545320412
+DB925321D455A0493FCFEF547401B6D352AF88E858E79D078A00F8D0A15513967231BB6C
+BC9092B91A5985133AB7E8D0F04140BA10FEA0D4525E7D3407E8A0EA794A416D4D909518
+1E41FA70F882B3217CAA36F10C1ECE5378DE43CA1900E2D3EE182143020E0A8593415C15
+ACD452ACAAAE01FE15B41C28AE5D0259FED96B69118094A6BB80E351477DF1377F704FEF
+D466B44FA7B24A004253825B275512ADF045E03ADD4748D198375171681AB9CC86FDF8BE
+317259B4BF6310C53C4F7B0A7D0CC6B8B4DD7EEA933846A362543BDC9A07753D6CDC02DA
+24CD664AC95F4AA7A6D20CF8EBBB80E1F18BDBE3051659BA2624083F3CA0EB437589788A
+983793507D244FCAF4E3A5036C00E7184D50BFF306270CBF9A305FB5F1230ED991A14E6A
+9CB67143F128B25E5C21630CA96C24D07A0F76AA7896D5EA11E634D0AC37694295C497A6
+A4BCB790A6697F8328A25FC7B05900764F90C34795C3D41660286ECC0C37BF08F7EA1C8D
+625A8FD98C469C3A6738C597B14FBDB64E0FD70B67B1A57A38479F4E54D1FE962BD07F71
+A8B06E9C03C3A52B661A756D1B59E219632B2386869FDF66881D87A6BE43595EDA2DEC91
+F1FAA88D79969998CE4D65C98DEE16739CA280D7375BA89CB47898E9B6F08FE03B487B66
+D6F493ACBDC022BE3BFA1F5E2A692412C3867DD9CE09ED79999D5A42E11AFBA5F6167E5A
+B7BA6D0B382051F7ECF982287CB60D88B74A5818F140A5F9D48C5BBA9CAA8A5E6C67F7D4
+2AAE1615FB550A8528069476F257D130B36643EA5BFC7CE8969CC485BD6721676C4B15DE
+2298C2D0B7FF9BF2F100FCC36E6AFC5421D192C493361887A419399815B3A90100610A85
+07370DA1F13E8EDFF2ADF84CE2A3029100AB44177F2E56262D06803D57F3278506758FDC
+5F9908A4FA8DF6C5F58F0FE72EC4C3C23BAD45BC44A628060B720166D7B15F555846B0DF
+E9CCC34FE69D2CD9B7471329F8DFFF4AF7D17FC7A285C1AFEACE486CF8C026B1FBBA01F1
+9A00052268D93F5735E3444CF888DEC6C4F853BB257C4DB13CCD6960E072172D29801A75
+C09149646905AA1301DAC25E8272341CFFB3C6790B96DBF44CD3F407F734B57B3EA3B12F
+B947E03899CFA24893A1845CCAB0EE66E4D09429C61C366C7FAE7FBCA73389DB9A4CFD01
+FF4023FD2457E2EC824B4FB3FF6D799768FCB64625DD09759B98B8BB5981533735843D23
+BC9D55C13BED70BFC3F9D5AE235F52970EDE23AB936794BAA06E08599EC918D1EED9EAD1
+CE85BE3A34F6A31421BD7A910D5D502A745EBD6CA713CF6868F7C671625ABC8238433E3A
+0EE5B3248DEEE5B40E978821ECCD7C010026ED9DCDCB09115C808A6A35885D6139C1C39F
+22A3304F355702D7CEA92105F3FEFCE5123431D097032665FE2E103D12AB8C2A51EAD4F9
+9E8D28E94CCA84188ED660A40E06649801063529BEDB8BF840FD8EBE73158FA8F3E5CE68
+924D99C0E216B7E50A2DB62AE495F73F805787F7D6616BBE260ABD72D4ACAF536329C4D2
+30BF80DB8BE9CF3D080A87D7513E8055A167678EB558E36CB7F9096418D26CB1EA9A213F
+218152ED52368AB8D12B7AC72A40D822817B3E0347FB0E1D4DF56470CFC764CB3AF22775
+5A504F346CD4B014459B3437BDFAC7433771F788AF2B2CA8BE2F1572FAE653E216A72E04
+3FBCA1C9418B05DB2EB6B26835F0DF01F010DA8837C2E8C1EB3960B8C7DBA077F1EA4189
+5FE692741F954D0028193AD2C6300C7C78034BF276717D82A9220FD7AF03FCB4572D6AC8
+8F04BE806DB85D1E2A1BFC8F301F9E4AF4E69906B8C8E35FF8AC639D9B599EFB9C21E96F
+AC8D54E777A297E19496A4BD2C58C5953663AF078042748AFC67A98D226E39D478C85BA8
+5644B6DB78DC6F03AF074C74ABCBFFD3B1A46C640C8C9383D28FBCAD1EC9CF7D1EAEBCD3
+202AC77E123B41DB7B489C1B435006B9D43A6D41621F332FC69FE9003CECA7FCD6962B54
+C507D4E5256DBB8476F4EBB93D8F7F3F2F4E91B4EAD6CA62CA4ED68865FE6C7BC122066E
+44895D418C7844B2A59DF2DA3547A876A334E499435296A910C8A056253DBE193510F153
+9272CD59B3683660BF6002B6B6807291281545EC60538C5DF7EC7A1C0FF62362E92EA67D
+692291BA16EAF69F3F19D3F926E7789E4111B59B400F2F5E8A76FD8C5140A0488BD81093
+5FF7D3C8305A1EEE2C855E33B67B3508DC76A0D7DC27ED53F182E2354F28C4439E03E96A
+FC74E02F02E7BEC3E4DF969B3CDE73012AC4221F2BAD6AF554B4C0130F40C717D886F320
+F4D1BB1A24D9EED7B7F69CB17194DE6D11897F3EBB0EBEB25612AAD17C69A56EC73FC86A
+CE4A6A7D1F9EF9820BE40F4D71C109BA0E6D56F27216F0F0DC4D9A24B866DCF608333B6D
+7815D5C9D3A68A5DD96F8C2AA9488ADECD48B5FDF36658374078F98490EC2999AC6B64F8
+C89E46240B59CC96CC032D5D71A37EE167F4ACFBD66D73C5CE70629D7880F8A50C82ADF3
+A5902404A1E7F5AB25F9B2685A03D17997DA876D7A33BC42C92F996351D53693AC19A3AB
+184EDC622BEC1462AAD60EEC5F57169CAA42432FFFE840067003E775D1A1C583C88F6336
+8B2F968340ADD527A36CDD3C2D2D3CE721F08B3D33A135A08EB12A06210369150BA65012
+391AA28AC5989C17015D401590C46A3645304FA40C622CE6B52FCEAF3A0D0DEFAE1CFA25
+DD6E78E104AC47AD713168133780C8D9371FD30C9FDB36B0627D64B43E8B71369AF09663
+DF5DA3A73053502BCAB1908DAE9465C84FAE69DEC1D4A5EE0994B8CEA8B3282251DE5371
+4E622205A95B17A44301C3F98C38FDEAE45A7667A49D72511EBF31E738DA23339281B150
+F741956629D2A01608CEBA7D8D32DCE75DF8AA92C5BF0DEE69266DA5C32A55620FEDB400
+E4907EC78B88B5D92C4E81FAE2D2E6C39CB59B65552D1FFF34C4D72DE72E57E3D1FDFA35
+3CAD02B4B31FDF25AE2EC41B4FF656B8A8CD4285E447AA351F1B7F0D395E15A526E20D54
+B192A5EB95A6640B3DBB9AB30296815E768DC9B012658C84D3E71C050AF243D26098166B
+C8713F5140849E865400184D930E0E2D4989FF6F612F765CFA4721F8356CF801C4791D4A
+6A509AF85CEF2133B840B81DE1C3DFAD25326569311865A11C460F4CB308625102FC9DC3
+11D1850487576F316F8E33FDC8E651CB2AAB1A2BBAB81BFA5741C7B9D89AADE72BA85C8A
+302C03BC45825AB66C7A798E07B9435F4D00D2A3797EB27F36388BD54193B04E020A48FA
+94DA0685C8DE7D7F665247BE443F3466270BC096925D8074734CA98B1B34217934B0AF4D
+4A13915D016B17CCCF3041F16D0D9746096189C74FE60066C06C422EBDA9D7D14C7EE6BC
+B420F07B15D60594E6DB01BCCB47DACD159DC2E29CFB9BB024C55312DA7AE1A5EA66B368
+07C0F02E753A108DB37A95EA2934CD5D49C539C39B434F17F763341110B16C949B1ECDDB
+3C28EDE3FCBF937A751A55A88D579E16618A6846A03D413FEE6F311EC90333331432A6B1
+CE94DE0C97A284DE90B28484458456692876E69C22E5332283C5B21BE15E377CA3E6996B
+AE422F99A6F5E4A72EE5C89121E572DDE7A9FF86CF08BC268F473795E942BF823E71380F
+71C287AF4F606DF7C81A138E19C3CA463FEF3351F22F65DC909CEE2EF90BEF32585C2C3A
+1382F26797F7C6CFDF62A73577B16988C7863C995E4A9C1E5EC7718FCF5209E457F31CBD
+D8B3E26BB67A758C01208AC999A829DB6C8576F8650DEA3231AAC1D898BBDFE4BD3DD956
+3F482DB4FCE7395562D53910BBC8E350D55E59B00023666174F168FDCDD52A1CC3155421
+F725C2844C21A9B9D4B0B377FE80D57030715DD435B85C9030EFB71E968F6CAAA6E8637A
+D541CF9F1DD0E52893026A657902A2C873741BDA166F7D9E3B6F441EDE4E7C39F4B5ABA0
+13403CE9E8352C1E0E1FD081C0D71F7CCF2801A5B74EBF0DA958388D601F00F3DB9CFC7E
+47604AF1FE10099E7468422C4A258B724A893FF41BEFAE97BFEA13E17485416FE318F9CE
+717F0CBD3E9F7653A8AA12C958B9193EC63E5173A8F9A8A2B2E16F4D1BFA118CE7449767
+5D8097D376A156027F42B22F6420DD7F5E2DB252A14D325321242F9984CB6E0B824F8ED8
+4BF459CF047CA8457F76CCA54CF2A1268571E47839D60CEC62EFB0E81FD46757A879CA57
+D0A46FC6F0EE51483B9673304F9A5C243CD543BC3E6EA0D9FF2B5CCC4431289B1073D833
+983D32122070179338AA2338A6577FA9E111F08F89A01381B4F5F52069A59E12EBA3F1CF
+780BB5793B95C1ADB5858B425545F0D58D5FD0E11407FEAC4D267FF8082C50C437101723
+84427B0C5719DC5A8CEFA08CE5F8015D90094E77C6B39D9DC72AD990BA5AB3FF57775AB4
+78C38F7DB9AE60C1BB058FB6586899ED65D1383CECFD4DAAD070653A1659628964C1127C
+7A041B9EF056EAC8AA56E0846440FD57E31D0A16B13A8703DCE15307C97AE933FFA46A23
+7D902C88412CF60E31F40604117876ABB9D59FBAFF56A97729380EECC65D59AFB36C49FD
+0486329830B9FB593077C8F75629712FA92546DF79F1CBFEA0CBEAD79B56C1E98DE971F8
+A55B3F65C6E247B474FA08229C6052EB0E6656D263792ECB77BC21BA20605E50507205B7
+2B2278DF32E47C1AFFBFE19627ECE0AFC3F697F64A1BC5E7266B45377708BAFCFD5791FB
+EF0573CF82C033D24F4F6A16E85BC37D6038007BA46FA4FF21750BDA28AC48A3D018EFF6
+B7E1988E6A31D07DE7A028F6836D3ABBE48684F750D934007B01B478DCA7D45A24890917
+5D45B1C68D1215FA5E27004625B5863511D88FF5719A2D29B42D2788E284AA2DA02D54F0
+72EC264D006E8EB7A4667FD8C795FEF62C4660A48CF88E38EB6093EBC54E077B2BB80594
+59EB8F76AEC3BC7DF1E3A37D5FADBC68667E88C3AFC1A4A2EF873AA40BCF8F8739066A22
+0AE1C27A6D20270799CB652EBD32DC15B5A4391BDF39D649692219E3D5CA862032DD0C38
+2EDD9AB2881A92489BC763B150811E3A462855F9052D783BE86F524CCC3936A84FC38527
+9E4623BFD45C9195A478F7103D087A88941579308C51B18302B9BFA031FF5C4AA25F4DCA
+A69FBDAB534403043D67587EFA0C57DC3CC5508A3BB75ED42DB691F7C97D0C39C14725C5
+B10D1FAB4D01172949C9498A28DA4B73662E590293604DB4E67B458E9F944166E243A5BD
+C18E3952887692D32374A19AE61CC1E17497E322D2B7354E89E2700222FD0C856B4B9C35
+EC3A3DA441B4E94A21B5B1B8FA68656A3B306ADD6E4F6472BB3B9F8B7D024A2F3A36FF90
+EBD5859512825538A81C4BFEAEAE2BE733885D15DC79B269AB921F8AE37E9E091EEF1470
+8093F0F8DB6ED1AFF608953593DFDAD4E86A238EFB92C7743A1EA3CF8A65C7D66A993AD3
+71D810C15033ACFD8C45131F7BFBE34B5943F22F0D7538714E71266020F7778EED704243
+E5366155283112819460EDEA9FEA3130C0FEED1729C6AFAF1588C385748092991F43DF24
+324682EE5E6C9B455BC031CE88190A99F44E11962D1DDC01AEDBE8BBBAE588796BA333D8
+F6D7034489D20E65D31AEE0052A39476584907B86EE2976F95A5B5E615A7A091B9AD8614
+153FE4AFAE87B7AC4914D86087CEA8BAA3008A92400E7793B3450885A1DCC4ADFD615897
+D5C9DC70542BA1D57992CA03D1A08A1D6742E19F0EFEA0E4D635855FF00D0D39FE72A6FD
+411E8ED99CF2B2DFE15C4D94FB36037030A2E6B54AC58028E6F358F1CE7FCD37134398BA
+709BF4653F41E34B0457117DA755AB24EABB23EA7492B0037DAA9BCF3F309B408358440E
+D573B77C9AF19176C8960BE412B9F784F3C772E8497954E6FBEB435EC824B87413CB6974
+747518834584E793169D6D9AA3ACE667FAE005C87B2636B5898B7BFC4E6E8D972871F801
+2971534F0C39A3DD0B1EE5A158F1FD6B51C0333E90FAD917C6E5EDA54AC84B6E5DFC68AC
+C5673D493452AB942636390F076E4F1B1858CACCEB9BBA3A5459071788D555CBE5B780F2
+7D439100B1B014D6B2504E2FDF918A73C83DC067841172B90F4B4DE2C5BE5129C926EF54
+E2CFCEDFDB8C567B06E2CAC4E893E658604FCB712D8E4D1977E03677620B3354D579B978
+89705FD15FE9BCA03DCCA21505DB98A91CECB5D515FB28417A1378AB9DEA82569C1B37ED
+4B38D102C9939DB2FB7E4DB4F2FF895615D9BEB425BD76EAEB845811E1EEC89BFF2E72AB
+2257BEDEE27ED84DE00F2938AE16FBD5934E1488AC2CB5324AC1E6A17821AA0F763D5D01
+603FCFC03C02E9EF813C62AA64CA279921C8B238607DB32AAACB5B579F145F89BD0617CC
+1EB0A642F1AD7EC15DC75D1D038ED86930CAC31593EC9F234A54825FAAE3FF00E6C5CA82
+614C1B0BB2CFF4400D8B855318D23038109D4CD57D0BCB6C55D192A1A7C734801105A7B2
+20D7AB5E830E27D498CB0539DD0D5D73728B57B5EB95A31F6AEBE5E3C5715CBCE1246BFF
+4DE1CC2649977873966ACD870FF248A0413ACEC538E70EC1E3DE82CDEBB12427A7518F35
+8AADF23A81B724BCDB65E29BA004DA3FDCE30B0736C019B638EF908A2A99AF1A337E8F9C
+B47BD01906412AF69FDC4A606CB4BE5EE21BB5FA115E599D098C9A43F28C54171ED834F4
+55398C5ACF6977DCCFA636C71D96FDF9EA2192102E45C26967B36D145C1FF71F6DE71091
+0ADCDD1A1A05BA38C0EFEA44B9D0096A29436306DDF8AF39504E5277E941DDA23B86DC31
+BD80E7CCB95893C133E20CCF8A71609F9FF9D1B71DA262CF8B6843F70692BA79CAE45B47
+B67FC97DB95DF2F9BFA4B05EBE0CBBD123026D0CB487F6133A4110B16CC82AAA4B5CE9AD
+6544F235A73C5DA6C35F6E89B9350C220C6A7E8F177F38F119571BDC9EED21956D3C16BB
+5910CD84F5D77265C1B6345A809E3ABCC8528511BC5FE290BF48A2442A975F049FB16D46
+2F4225CF08AD8B5C8375F3BE121D6D0A48251877BB6501F7161A3FD7F8D114AEB10ED239
+35D1C0A34738D91AD993802284CFBC05311AC0480DA044B65ACC579FB7EA75BE8A4F6CEC
+9BD7BDA6256C2FEBD568F26559544BB6AAAA2BDF3BB96D0BE3D490AE70F4D3023AFF1D66
+3DE1F1FF0ADAE5D46B73BABB62E18C055E56604BF914FACE2AAD67B2F18D8BA9DDEF897A
+C428AE30980B4AA0FE1AA5DAAA40060FB0E54FD454DFFDCCE269883C8FFFFA08F0592599
+DAFA8D6243B426896DFCB825379FE5E8920FF18EEAD1A49F21C29B39907F78428747FD9D
+96C7D41E3F06A88C0D94D8454027D52A02223013DEDEFE27F7E4B7C186591C36BA1540CA
+7980914364B499A8F0B749EBF2698DB4508DE0F577E490ADE403BE8167E318CE9D8527D3
+BFBFB44D017ABCD7F8FFAEB460F5E9141C455947994A4713C525CCCF3DE6771ADF399F27
+85DC33C968B1DBC01B159ED1B4E56D7D98F99F4B81A386B323A76D08A73C93D5B8BFC2CF
+B4EC7956459F9915CF19951A6D827CD2B293B68ED8C259866544242CDF96E3C330630723
+CDED8F23A8B657E5B72389EAA9D6AFCB9B4FEA44BEFB77ABF3EF235F4E9F09C367AE07F2
+5C22737A0B39099B00E51A83E3B9BC3EA8909816B8E6929511AC14F5BDD5F147219DE956
+4DE34E1F8D90F1404AAAB889C1760B52F122E7276A7BB9F0B5D712715E3BFF3056DA64DA
+3ECDB08F75E0BE8453B8DB45AD49D49414E26BF9675BF1AC4EEAAA2163E8CE7956D46407
+6986B9B70461306598F9EE1FF7480239A95AB7B26D361C31B5D74D22BF56EEA27C42202D
+CE1D85D471D9CA71A5F83E1515CDDB6999ACEEC652227B423C223D527042531BD8476061
+B696B0ACDDAF6075B0A7E8E648837846DE54651FC8BF2384058A6BB3C6F5B3EBC73111A2
+A98C4DA3738C8CD4E9A612BA713494A5D0659EFC1F279868231BAD39A917F6C201ACAAA1
+91FAC740FD7BEB270BD44F95B4F88F22FBADF3EC228334E489F5622178C69DF0DE2E8721
+2B17FB9E2A52B14B166CD3AEE0C616E64C2205F9C3322979564E8B87BB9662A11AA91DF7
+6E2B27D40E4A84A659E4EA233685EBD2BDCEE5FE3145F93BFC38EBC2267BFD73ACDE1E97
+AA648C71B736491FF3126B15BD9D6E12EDC6599ADEECB463B810068ECB0FC9375ACCBCA0
+4A2587F4686E832DD8B352972C158AC51844864020440A7944C8E2C3F6E9AE1C1718E8A4
+ED222F8759EB0583CD2DCAB4146BC8951D0E21AE0DE9AEFD70529E6E356D8EDA9E6AB1EA
+F0B07337B7A7000ABD7F78928E2DA40AC9471D559A1AAFEEFDEB3FF440CB812B44E53323
+B9E3EDE6218D43FF7A27CF32D8E627F44CAFF6E610CEE0606FCB7A410F2A4694FDD589A8
+331375C8F68947BD17D3FF9086E3EC68B28F5B203B22370B998858611B5873C984F249A1
+E85F2015E8602D4C9DCC0AC2A99C7CDD78B455DA5FE89C5E749E402ED8A301B177568AD4
+04012BD77DC8D614D036C21F9DA6B58C792408F637065FF623EDF10E7487ABCCFAFC023F
+4068C9BABBBDA7C5B30EBC8F417429B608D67EEF24D809BAAB684FBE4FB1469495EA8EB8
+2F0EDBEBE3CA32ADCBA29470078E195178B2A6B3AE666AA8B3F4B14D0C5B4A1BDCB8FFBA
+AE0CB450A94CFB1ADD4E54DF07B40F6D00127DF19EB62E7BE3B0645200F55D422D84DD22
+DA681AAD517F4D8F5C5A2A4E507168220D7A80B04F80FACD9008F38141CD58693CE42D69
+355BF2682DFF707F462AF093B59F783BAAB63194F1CF40267D1337EA6348577FDE3797BC
+0F92D46DCB274AE3467B1BDC69EF4B228C6CFCF08AD5CA4179AFD6B63D9EAC1937BFAAED
+C76604A1BDDFB47046DA58D02216958813262B3F0DED835CB11FA23F00E413B03833BD98
+8CD8F909DCC4C60A603DB237F92659A19984F79BDC1FE7A36A91368AD5E294A453C7A531
+899F5592DE1D69D61DDE88E2EA38F785FC791E925A83E63A5FF71196A90C77A146DD9254
+4CF1A1A431525380450A019B672875CC89D9CE8CB458AA202FB44E6AE7F847B97AADF141
+4131DD4D801A6C210F483629EC75CD4A03EACF5A10380337B6AE8D5C59C4E715749F0DEB
+1882EEF8BF3BC8D6D2060337696385D3EB3FCA331BF0FA910975D78C3CE4878320BCE002
+4F08973100E1FB00F9FD0163D880864ECE09A6A15CE3897DAFA3E5189F1A23B9693498CE
+D50B48DA6A15D739D6F2BC017B1C7DD2AC109161116E1FF4CFAEDA644FF605AF69C07EDB
+62EEC2596837392D75B7115E71F19887C4F1F8DC80929A5AA6C6457CFD44C20FC4477C74
+D584B846BDB642F3F241D87EF6DFA799798327562E1A93E6C97D9693256E4B083E72ADB4
+8ECAFF4B7BD1354C09F1F12731B45FB7207E6A472C79A9DAE299183E15C7AC6EF147A60E
+739C5B713FD71737CBBF8C42A9A28633E3FD6CAF863EFCBC09F47B6661B53AD23C991CA4
+A8943FD0A8AC929639E1E5D83540A6CEA53021D389EBA44A4D4BD368DDDE9B3768C9F244
+43320CB497386574EA6D93AB9A56D3362F30668A5A2A3DCBA397DCBBCA3174DBC5F8DDF9
+04D9F6BC5A4BB93526791618BE231B9B6F91AFD4CE9F80DA4FA4EDECD2D46DC58FDD557E
+BB558718E8666BCC1C6E22D469B26C3DB80F4A5A8EBF34A59E928C8D3971CA476B24102B
+06023F3CE615D5F20D86A7151E1B7F912618B52B1AA18FA63273BA2713AC37CA4290B26F
+E8F9DBC2DE26857AE1E4DE3FC7EF89BB4AEEE8E008E541DEE62752717A198512A4507D84
+842D8DBA575749E74651DC9D456E8342AFBF4E1AC91B0C31B67FC68ECF822D12B1BFBABE
+0A96C9351260E7E32DFA26ABB5BF7F78CDBC1A1120884F7569EB6B92E3A362133E4BB9F9
+09852A96845576A99DB94823758012017B9BE64E7BDDBE73751980DB47D176FC6750CECB
+5060853DD6A7DDDFF5BC37C4C762B9F044B40AB9E756FD7A18F3B3FF822216C83DE195BC
+65C9A51A72F09A5A0DAB7C2C5EC367469C8A64C850008252DB2349E25B7DB7D6E983F8BC
+8ED8F85B61485A1B8658A2BF7575A3316E1CEB54BE88A1D7A21D9D4DD2D5D36D09E2F4DE
+E3FB1E7BA40A274046CA0A31D43410CE52D45B9C2F1C1B3CA036BDA69629DFA466C7B00D
+4B4EF4619D9DCC500160D493484E3503458DBF6564E1D7BF1E656C6BADFC0D6E8264ABE1
+BD55B9DE4DE2D42E6FAF9E2A8227BADED46AD650205E725C7E72A831929DFD02567AF1B5
+94ABB52584116B84744ED2157C5090B09B664CBC4F907EBAD8E468C2B71010E2AFCBEBF0
+B2D0BDABC464E6EA78D664480C7F1642F6B551361CC752530EFF1B7A188EE5B54A535C23
+6A9C01C0FFA8DF5AE582255A2115F2D8A5881B783CD20D565F40AE72F9FB35BF63E96133
+1643623E7724B330A33BCB01B2DB00C7A18CF7CFA20C38F60C3C548DB1333D78003FBDA9
+E0AA4D8FB7D69F486D1A851CCE1140924E88EE49C2FF8B721C17E45F49B5BF12B1315DFF
+8CF89126133AEDCC0957D40B064021A65DE5B79AF3DA72B21E10D7E58C2B1C922D05E494
+B1617FA46171F59D320219D3A90C873E8AE2B1B5ABF278B1385F948F4D8109AF683FC3BD
+15F351416B7AB4A66B6700D5D50A5DE94656808473B763639BBD35080C1C80B20AF88B9E
+A14BB9A2426D5798A51EAD1DEE1435B215AE13A5586B7505A5B988F52212D146335C4C7A
+9BBD93BC4174DAFF6F1C27D6D24926263B9EFE83766BF29A1D28CA59A2B93D4B00D859FE
+45AE2F1A60B9E15ED97552D22B59E7266DED725B4BDD357A0B58AD3ECA76E0CB7A8044B3
+0E81A7E2A352611DD221035D0495E66E5B79F6BDED31BF6BF37E2242A8466105359BCA17
+E3A4DCBCE464B41D9AF1D6DC165C6263261BE78CBA984A244F5F68FCEA3E376881F05181
+215E5CA0C535877357B7A6C55A6598B060152CC164F78303D4758CE6271D49588546C287
+45EB991297B5BBF7799A703C9430ACBC022E8ABA126DDB634859EC13194E1243150BE639
+AC3F6CACDA17EDFE7DDB35D1409298A31AEFCB5580C75B17541E1E2B69BA3C0E74E529D4
+0640FB63C8604BBF403CB65BB14D86C89B7B8E50996E33D235977BE3D45A8817715F00D4
+7B3B81EEDD229334B2F259359C7AE70747181D9B3667910BA9FBD34672EE6FCF2BBE7A2F
+27D3362039B96659EDE90F81076F2D9B4905DA7797F6BDE5F4CB878B6890D4F26C9B7BB4
+DF242D51776A4F99D8D1A9378421BCA1E296B6FD821CB311E98F33BAFB9CED2F6D1D64E7
+A98E8CB174ABC14ADEAABE95D1179E389F17E8C2C952FADE5B5DD713FB167B728FD1B65F
+8CE811B9594237ED7E977F8242BE7BA117D7D20930C777B5146735CB5AF8DC1E49D7DBB7
+3E45EC3EDC188B78FF34FC7382912A0B3A27034A3B24759E62CDBA93721F21ACB2FF50AC
+94EB8A5EB0468EAB58141E838530CAA0B8A11FD9AC8AC0713C5D1F598BED3E73E247465C
+4BF854627CCF42AD6ADAB1989B78D3430166691604034A9E68848E9D38572AEC9E3A7AF1
+0A99BF9D7DE295C8C6CCD0A8B081CAD47F6432FC6C7A44B17C7BE0A10F6F8503D2A02435
+9B5D5CD2F086458C18C140FAF9ECE6AD7D235A56FA54A6902C0B3535E5A1072269095177
+C54B646EB2A06FD60DDE54243B2D7CA449552AAE21E63B5B4F4E826962D004E2347A08C8
+CD89448A61E1BFF383E7D655B82795B31A6DAA242168031D3B1BAFE7D53A1BEF6DD994D3
+1971236969FD1CBFA9BEF86D417AF56041660E4725A794A1FD4F648CACCAF710D9EE9252
+B98F89F3BEAE871324E0758ED143E4B3ECB284E3B5432583E552E328029D1705D4DBE930
+EA93C0007C528081A9483867CDF020D516F770DAE93EDD48737837191413583C3DAADD74
+71BD6C8D62BB073A4E9CAAB9696E30ABD0F31C1550FA7B2D6584E86778F2D8F2AC7EF130
+0CF326E83E518BAAAF40CBBB9CE3867238D69F0348AB600D797C76CBC573D671FB4EDA3A
+16ED294D4DD62DBB748DDD5F1357A4930533FF30D0B7058A356A278996B012D10238BD5F
+F77AEBFF124556EBAB90CB258FBC90774535A010DA4CF11115569055F843F04A4ED1377F
+4C25891FD5C3AB243731E94894E33B489911E9463B4C9EA18F2594C094605A90BBA6F836
+7EF43DBF13141903EFF100D2A71A4110F35934AF649CEEBAD4322F862C548A3DB68497A1
+99A7E290834EC5D3FFD98572160181724896763BA70339B0D8BEB1B3FCC0083F0A4C2C6B
+8DF2D5BA33483ABBC50FF0B36EDCC7D67D3AD577820691C9E718EBA2031DF516A11F8827
+E4FA46C338CEC805FC879D5D4E8A0E9D4FC8A67BDD7EA60249AD40416C50D7F6C9C31004
+C20E60975C280664BE5404AAA688A039B7C003A34A2B36DD129CAF2C6C023F7CEC605909
+8B466ADC184B6134F1E83E187BE80EAE8073C871B5988524317CD4B7231E5280073B29FF
+83C05D8BB53662FB0F82C311A1566E2C999C942690237D9A803A6FB23446A634A0DCBA24
+2034F73B5BFF45AD8EDAFC104AF8DCAF573C9DBA9EE0A98756AB68F904847494CC75FEB0
+ED2811855C38EBC178347691F23AE3BB51B7FC53C26C232B6018FB195D996427D2ADFB43
+3023D0A708A525B3757CDD8657882A5744B6DD3EDB802610FD1587FC3EB85FB489A92A3A
+4D0390561FCE2174DE10F74974E216D0BFDFDC0849AC750AC8EAE91749BA5CD5AFD1617A
+5DB4C55AE4286DFF84C33769476AD087CC2A74A4260579003CFD88ADE8987582AC3A9319
+D4D53E899B19847AB351936794C0CEE082BD3E37C7A606C19EE2F57FE7EACB1D5248B097
+E6FFCE4FFD9937340CBBE9287C96AA7422E8F53D7EF4604A292B5AE92B83BA5EB8CD66B7
+C138C72F25391BA98382FB381FEEBBC453BDFDBDFB23758AC79645906E155FE3007BF0E6
+BCEE362849D56025A0B4D1090A3D83B23DBB7B7DE0C9728003BC6C1225DA4E58614398D7
+AFF43EAEB7C4C5E01D636CBE5E555998EDCED7DB75880365623DD525CDF3CBF9F8AF6D16
+A52FA7AE5BF630E0CBF34235D98426046F7C51F2541C35BDA988CA58A9BCB83C446984D4
+6E9AC21821011E815942614B6F6DDC4D5184ED720914A3203D8D03B3E9FAD9640D328027
+9CA03475D382118F5455A95B0CD87F827A89D73DD2BEB6BF1AE471E2AF4A73DFC75CF407
+EEAB96BD04B4FB6411B6A5167C775A024E55986F356BB696BF9B8720832E5867D56D3C04
+636226FABD377C3D5ADE664357EC0EF22420F29101FE7150241A2EDEC8F889858E3E0B58
+AAC8D9BB3CA36B3954FABDD2FC5983D3FF23443D7C9F12ECDB557C4EC96858BF68C54C8D
+18A7F1D9B72B43DBBE6889A1F4320598866FCF4CC858AB3268E68C55752F5D98682EA741
+FA2F3BE593B212536507DDD8BDF571996D1038F108E4988CB47895107457C955C1DBCEB6
+1B0C36D74CEF881D33B2705106653915580E975EC45E8B041D6D44F5EFA0135627135359
+4DF2C10A7FFA166C750C9A4D2998DF71DEE4A72DF5C0E23376A1EFCCA66A3FF27E1B39B0
+807A8663B376B742AF9167A287E0FA6AB455DF0BD99FBEA3F583CA3D3C2382B5E87F920C
+070BADC292847D9EFC569498D3042BC830DBD33C6D148C1E111B6ED4B6D62BF6714507E3
+8A777B77D29DDE95B95EAB6AC1DA321FB5F89466B0F717322326FA145CBC7080C45F5197
+DABF6BB420FA63AA4151006D5FDD248E32A0A07152087F91DD6E3C5849B560AE99513DE1
+0B9389384F1BA78CCD98B3914409801CA39395D73B96D9934E173B75339CF3AD09171BA5
+DB4FB3E4E9B1733DF10F76FFD806B22C52B038711E343947E61D1CC623266AF5714D1B46
+58CAFE3A97880B7D148771C8AEA77342D66DB0585F650432881FC6CE2877498B6913E7ED
+34C5DC73F642EB41E39F7DEF29340BDF74A8259F6300CDB8FECFA226AD0F1CF60D2B5AF8
+FA4ADC5A3462D07F234A1A3B24F422DFFD576636E3D285CC454A263BC174966EAD928385
+543FA17AAB5C40AC496F500E8F1B485A8DAB819969F1B431F9ED6571F6297CDCE21C2656
+F692A3DC84E58972AE0BCF13CCE9C9D4C2DC78500F33796F60463CB99DE9A8D2E2B398CC
+8DDC8803E66F9E5877C8429C62F32E27E878AE63F4EC32C749DE10017ACA42C1BBFECF41
+6EA89677D6FF07E72DF7076A08EB5537B7D1DE25AA448368451569F07E10066A63D0D2B2
+23EED8DBF3F2AD718ED088AFFC44AEB3A62B2EA07F71502706FD19C8FEA32D14994DC043
+BF319284EF3130E2B903CF465A4D53B8689439E273234FB6688AF19877E288E394C5558D
+CCE1198FE00DB88F32F95BD0C53DAC93547B32393DE78BEC648C369F569CB84C626632F0
+6A5C0298021BD26A78F6CB3F926DD1E472BD8026D0D5A40BC16EE38E31396DD61E2236C1
+A1AF1B6F3209ECE2D464FCB29320A7487B0F0291E3A1A7434C4175F99E0A0833AD33B6B3
+3721EEFA8F4AEC0C05589AA68E458A3E6893F33FF6D960C46136E70F2437AF65990C9F6B
+DC574D735BE03066672EDB5C536BB77A6E1345E367136FA8714215C4AB67094F11837CBE
+8881422A4EA80E0E1DF96484DEA0A410180AF8864C0E5257A0206536B71D78FB4CBCFFE9
+094277AFF04266B64FE1E812CE78AF3B9C186E8E63632C8C1AAD7C94FFEC08AC189B1068
+05924B0E92C1BF1F65DCC3A64CEF473AD21AFFE9B97BA3E7CD3404B3A36C55CCF57672AA
+436F72459F0AD005703DA565812F18939CA50FC2A2E11FBB6CDA016C0E96DA0DB4A6DFA2
+ABF93B91A94297CC97CC4D6D798437E6003472E1AE27CF82566E346C12EB5D36F0166CDB
+F2CFA9A42087115BD26BF378FAA434B4CA4C507400B69EB2C9E1B383AF9B17A6617A3AC4
+14BB152C1A495456442810189F9C99D0A314213440DB52352DCC49DC2A1AF1D41DC79565
+793C538F67BEFEEC9C90CB4AE8FCB592EEFFDBBD829EE76B441E23AF96FC1A7D2B8D6AA0
+27211ABE50A4D26C540EAE618920A28FE37DCB05ECAECE7DCF53D30173D3EA3249922529
+48931CEA5F1A4764E81375E4A74B03F8CE79C5A79E97D5A68FFE246C6F7A98FF543DF115
+A09FA8217C64B63EDD58564BBD140560092EBEF5F7615CA5175B012DFBECAF4DF3C31BAC
+13B36B2159EE30E2EFCCD4A225FAB324177A9189B9E5284D191F86D6E7032E145B0E1F7E
+8B7F9DF6B588510E5B63DF26EE6BD75FA5095A8D84782C4D802CB90640F032719CB026DF
+0AB25C82FF4B7F8DD904F4E546F13B7768B712D416FA20B5B49233501294D64EB7DD73E3
+5C1BE38F95FB72C8BA4E2068C3DE8D88443317DF1014C44197DB5988EECD874E20D08F32
+30656CFB7C1655828475CFA6A9CC7684EF9FFC7405358A37C990A20A970596E0DB194554
+3550912CDAF0D51D10163A08D3550FE06C5EFB70C699B910970F08ABB5296DC307A175E7
+C89696324FA4B01BE09628CE29FBB1F8F457148CE8E1C9D320EBDA35915290B3ABA532B9
+B03CBC0B0ECC79BBCC8B69CB90A60AAB13D97856C44A2C86717CD0A59966DAE08A64C380
+1D64869ECDB9190F4FFF8AADE3D6A42F43ACBD35A1F18628232D0527086373DF0CFF8825
+7C920EC1BF41D04707E6D785B263AAC52923FB54AC89E04E30520253230EE64C381EAAF2
+77FF3E75E1FA02C00CBC6A7BD8D986A892FE856017CCB8659743EE92D93A0BC46252C4E4
+A5287EFFC872DFFB9A02E358B2A3A6B486FAFC78AB667BC04405DB30D3D474EFD34496EC
+C87BDD752F139F9F2913AE511A49C3497FF79E1C30DC13B327B349D217E1D0E1A159ABB3
+C8EA6338151A511F2AA6D06F1B065FBBB016C0032B819AEF7971F375C426856BA84B1616
+2445EE401213799225785C9EC382A9ED8A73CF91EC2731F56371338CD0EE9EC757DBB7BB
+857B8B67919D86795EDDFC6BCF5D09BFE81CC6FAC63E10773232C7309B46D66DED83943A
+7B3DE067EDC0F3BCCD720E1F6C383331DE5E6F3F81DA887480CCEA8E2FDF641ADDBF8733
+A37070524F75EE2410E4CCEF21B3E075C90667CE4A757AD06B5CCEC2C82492B3B10FD3EB
+ABA3DAD1C9E8CA726F16ECD955E84FF4E6B2EB296BBFC9C6B4EE6EB5A39F4BAAD0DF2B8B
+4B9BA9EE1F6FB3AEE3EAC3045DA8F788691B68B170CE10934F919236CB151945B1D0EAF5
+3F833EF385A62D9E7703A2A727BDF5196966B8DBFC3C361057348B29825962A02E96038D
+33B82C9336D1BFBA6DB0CA6CDED079D83B46798BE591750B71475309EB3AF56300F233D7
+97DC2F0503B4215A8A05833465E8EFEBF309AD8A48D7F0154E24437229C2CCE7DCCCD6AB
+236DF5E1D592730DEFC2D5AC402DC4BD584AD7E6195618A41D862C5CC6A9DF40FC4AA2CE
+61492EEDCE1A3160D64B99E902E384A81BFB038375DCA3C92AB5833A4A32547FDC765947
+C8B9C38C10A86B79E51C2AF191565F4C160CF12C16333AFEEB061B5560C2357C8EB66040
+E90099F222ADEDF46AA4E9AD089A9C3683B0A112E664A33AB63288D0752204223864BC78
+1008C8E86D3388E038DAB435A68BF245E3B03AAE7A71D8B8454D03933B03374C682CC5E8
+B79FD0E808091C35677F2C43EF5DB5544C8ACB376346C69446E13863652F34E5DC48CFDB
+80C2C0D891FDFAB51C30D5A62722BB702A4D89D1B2AEC83B53F4B77C47E9AFC3C3ABC86B
+A8D76823208FB22D8B797D6967A567CAE3C81721079829A4C7E45668BA78314BA9EB78D1
+1BDFC9E316354810F8F5C4406555245967B777D97A97AB5B402FEFED43E6A6B8AB8D1D68
+16606479627801F45ABE59FC7B9AE6044BEE2D4006B5954A65D1D14891FEC447BC711FDF
+09A9539C04014D0F3506FE7A0293D54BB95B514D8896E8045747B34FC162EBEF2682A80A
+85B70F5C5456461B29B880808F632D7EA6F0A0300D1F98B6FA5F17972A8C62F7159CF2E3
+78109AF6336A37F3A9365E9F97077750A494652370EA0CB517A89A4370CB37ADCE03D22C
+EA15CE8D0E828E34989445487BB464CCD4A53F27B3BD5550BB26465458DC04C28DD2C101
+A4195A9965D929EAA6EFEF2817B3E86C29C53496044B2BB77B9FF52D28C52A9B1D762A1F
+493D85771FBCDCBD24023016985E61E0EED7912AC9328FE6FA9CD59FCBB721A1B0270E2D
+1C9C3AD47BF523618EF9C5D6F600426D7B4C53A533435E072C2D9CA2B27C49BEB06FAA0B
+EBE37264F430C35F36BA6E9C94951FB1B873894941810E96CA2532F148E12DAADF9402C8
+B37301C3435C7C135A097F9D004CCABEA07823692767DDB51AF4B6D8DD3AC8FE5C5A9B3F
+D2FD4B47A7AF3CDCB48C4229DF69F8541FDF31359BA472CD05A6CAFCF3B19BE75517D0ED
+3678076CADBD569B427AFF47DE73C011AEDBA455913D1532E171DD54817CCD43E97940D7
+27F261826DE70B45E361A93AA7D9A028B0A2C807DF1207F60DD9E59E170DB7D3C4E4103F
+FE78A39F90E6D538EB6366D5ACBAD465070541652779E5917E9879DE131FBDC47F7282A0
+900E862FF37D2FB99D988960C83EC3AB5618A5156C3EEB11235B10A26ABDCECD748AC4EC
+1D30BFABA420281E4EF07FCAE17FDC550C5A0318D4D42F801F950BAB22F8A925394B8BF8
+91BC5FA3894A775A38FE417C63464E2C4112283FFD254026B1EE184726E0BE6D11C1F6CB
+AA257B59D18D534C27564BF713BEAB1F6218433558F53B577BC4779C081651BB0BBF2F7B
+E17621DB45542F86B396630EF878199EE7F08E3A5A4892ECFFFDAF0CE68B041D7379BBD8
+E53E8E2C078538E97A963BE952E213B9D109418ABDBD7CEACA77A91FA3FC50EB518CF0A7
+9002A43DE1E32D78CACA54195910A38E710C4ACCD2256BDEB3F9088CD2CDE9DB34D123AE
+D479ACA5D8936FD89A7039FCCD9B0F765785FC30BF5FBBE8243DBF1E9FE31842328EFBC1
+66C4079EC1948B72EEC734C288EF46445BA2096DB3F0235A7239412BEF765FF6E416E177
+D131DA3FBC1B5016C5D6403C382D064318C0078E0F35633D871238E85A26C279873F78DE
+5A2B0B0F00FB2B9F18EE0A3487D5C56FA3593C45440571C20FBC2626D04500F687CE0599
+5C64A123CB743ABB76246F82B55E59808CBBE689BBE8737172DE676AA4DB12EB2E3818B4
+82FFA32A043DADD72CBF55E597C4600CDB2EF7C075E3D28BE441D69635D5C49087EFCF84
+BC829ED33BA1BBDFEF08F82835BEFBB6F142012A29138483DCEA0F718BC618BAC7D07813
+8DF31F5FBF9A6B13E10044A192A5E9FDF2B91D008168EB79015351E1EDF728C3B73B886E
+6AA715F8593C4F850792F44D5139716E0CE3339E88ADC57755879FF8D652968C573C70A5
+7C9AED32C0493FEC2BE5CD797F2E083EC81089CC2C28CED99FA028A97A220304C614806A
+CBC6DDD2D8ED14E23F74C64813E1AFF9B027E18F8C8F293D82503D2C3B3322909C07E5C0
+B83DD78C19C4E0655197E2CC27A8BAA060E9D890729F04B3D661A56AE2CEFE90F4B642F5
+A5879F1F60CAC91ACA2A4D05E682D1D16E40851BB53B60D6F1A732CEC589AF1B3935ACE4
+6D85600AE6EA7D7B05C687F40FA04FFEE747287342778C94DF4D2D640FFB5AA7DECDED40
+2B1D975AE055568A131D2E7683C48A5A485F45690F552E8F58AA13752CFA801601329AB2
+CDE3B15FCF6E796545294E01818C9A7A708DF4B243BAC8DC9F57128DE52A6C7B1A7C6588
+F3F532AAF042B4D0D8F9E3CC85E7957915EE1500F342777CF7D60B079FC999B0984A236A
+E078BF54D21F93B51B04815203E89701877A4EE7B41C2582A8A6C08CCFEA2E6CF7C03A14
+32714873F1A9D7629EF5AD7F1FA953D350CC33019AAAEB6D7C40AC6CCC79651FAC614812
+EAA99F174CA7079CB7EF8D0D672DB414817F48E43DDAAB62D1BE06257C1A2AE06A5C1023
+6B808EF77F4D04C63B271F912E8BCC2894DCB7B9B3F5FC205E55DD72316DB01FC9270013
+2505296536745F9C100CACDBAE51B8EE17A98056DA4A0B3E19DFA5A4AA9FB8A4C9B0AA6E
+4170EDA9D26ABDD5A9EB0D6A0F6B9CF8924B902AFF3136E008F6C665852067075A208876
+17A7A64EF77F267B38252DDAF280E71C83B0532FF1A7112AA1805667B0D3E20F0EBC39B1
+5E090B2B101624E27CE29F1E7F415721ADD5D44DC1E022B59F93B0D47F7136334635ED10
+2A3BE5C769BE999A910BFD5A3E13C4F06C0479C872D95B31E8EC8F395A9248B763D4FEC6
+70F0CDA1F535B213F1C718CF89150CD3AEBCD3F64A0C5EE01AB57539801172CF0A75A579
+8615C88DB41B97D88491943CB223B8D43B98BB85E72627DFCD2AAAC4A098D7A77E8EA7EC
+ABB3411E3EAC7C79223466E613E8BD897E287A5BB8E9C523BD29F70CB66E9A8C8B88E220
+3277B4CAC3D3A405495977B743EF1B8D1E6E3216C3E25C69F6FF39F3709CE1A5A727F23A
+4F91ED99CF066EC7154066E2FBB24B17E83756186C1D7A60C68AC2B20076FBDBBBC0BF9C
+5EE99ECF65741F6AB6D5675645FB0194F68A0560EFE054039714CADF735D960D3AB27A83
+6821D6AA73E263B5DCFCD51A4EB63B37F4F5A4CE9DDE483FDEEE6D95FE1C77F92E43088E
+2B76D9057E1395235E4BA4D5375CB80485CF35DB007450CA6745DFE70577F7BD5B579370
+83A6896F955BC30A1D29EBFBF46362F21C912731089F86AFA1039C256CED950878EA9974
+562EC236B330D7928DE7097A9A3D6657F0D2C74385FC5436B94F795E86DC1F41B60E1DB5
+19D4301B3D5825CF510F14CF672B3D20A14E07BFDB2446AFA068FD8F496B64C0660DC72E
+9C96CED6A7BB508FA7E41919567C85134AAB25E1CABE1F33A06AE30128FB698E838B2DED
+C375196B14C8DC5CAE5093574C20BAE73D5CF3E165CFBA0EDB9E360200D6420B79976628
+9348A7D3F428EE0F26C0EB0A75E23CFA8399EC74C686698F080773B62B88263F66AC4737
+390EB5E1CCDADCB43E105370A3FD5D7F889F4474ECAB7E18BC57DD0B8FCF54E1CC7A5983
+7E5AECE051B82706E05369B1BAA6270C814D8E970E600F4B3AEAA075A88F4DBAD1875726
+3319C45FD4F8B39A6D67E1773AE240684CDC2FAAD34352ED60B4D6E6EC6729697679523F
+64EDFCCD1059E67130237B22CF0A37C881A1A349D293E6A772D42BE66238DDC6A7E1063E
+2341A9CF25E485676EF32C3CF4B321DC915445518EF0788E1E240586D5E850CF42A8B9E3
+1B5A1C583A10D59A08D51237D6BE6BDE359F5255BAE3B5883B2E179067AF732BE782602D
+D598BDAA6FFAF4EFB98C7920FB6FEA122A3D5699E2D19F79FC65ED400802914BE3AAFA2B
+B383848004ABDFEFE4EED701B5D5092C3E91C09829F98851C520043C61514D061B6F394E
+DA73820954FF23C596083606680167402D18049AEDAB7C7BAFCB2AAE50DC241B1CE2C582
+813A475998D4B9870EF8A328D0B343B875DBB840BD0536E8AC2DB08F8B12C2B241493587
+EBAFA208D5E9B466EE1781D8C1420571B2EBD049B9671CB99764F1F408C28F243C6649C2
+7F023978323964CB2122D251E8C5F439B5E515A60413EF3EBA6FD8E198CB1B2764931909
+16E017FCEB72AFA96042D4C9094B54D8F0BA9F15907662812CD0D57C8CD752804B76C588
+1ED1E3BDECE86ED204A4346982E3E02C66CFD6F227B6321F8772FF131CFA5A4B00018CF0
+4C531F9C8A3230F03EC630499E6CE538AFACA74B1E637CA949F2DD125C42F3F35BCCE4C2
+0D0299B3964DEA895FD9832658ECB6C03BA16037C90DBE5810DE2A66099C499F6B273C32
+2E0F6288408241C7528131C6D4A18BCE518D9485244C636870CE645A448BF5CB517FF7EC
+3A777A9AFA3EBBECAA94071067C9289260DD8D8A92DFFAFBFE71E7DB1F46FEE3006CAF5F
+AF0CE984F266201054F57302155E377DC7B0E723ACFF2DE223A7CD39332563A5AC47B862
+F03C3E631999135A69DF73863A7CCBD71EB0CD620C224DCFE1EA47E568F2446990D265AF
+1C08AB3128718FBD7CA7D595BA8820CE71C69634B1AEC67332DFBDFCC06B3DAF597D12EA
+E516EEB057F0B5DFA1EA1502492F9E7DC3951C3D6D10A9BCCD0B2D18DF2180024D287D67
+E7C88DB375CA5015DD098059C4C0A6F48C02FDFF6DD3A001B97C239B43040BB9C6A20CFA
+11BB5EA3A89EF1555F4F97C9701D8A76B46E2EF7A6DA8640673DA475A1741CE4697F664B
+733673D7B1BDC215B1C856D9C197D98E1D62DE1BEDE7D9D52630F4F17E10662EE291E0CC
+A78E6593AE80813ACAFA7196FB5337645926E21432BE2E66DBAF0540A8E449C1A163B3EE
+79F0255A03DD53A4182F8EA538B384E8C0D173CA858EF745DF1A4AA754B873438C661492
+02AE9CD9D935ECEED6795DBDD0D83A96B7347E7C13925E0DF8EAD45BE21C7FF978DEEBA5
+7CF291ED708CF61FD2604BD7EDFC726BA9F263FE277D252F413E707E38BE36BBE3A2C261
+17D8090695B4EA6BBD1D860AAB39C4E1D9E92DBA2692A5D8D626577F378EE88069A96DE1
+6569A41A6E841795033C8AF45AC224F2AB6729584A1E5D912D965A03F90CFC8A4164B98E
+11B7F7562A5BFDFF98E36E6075672959C05F54A651B05050A913FA9F3D289A9E1903A608
+C6A69EC25A557C811DF7A44D0791F34EECE8CFCB05C930E23545D3ECC4FC12FC9B553269
+B1F38EF032B93B71799353200C53E6BDCDE8961A8B7CB04788727F1C3191F7018CD99E93
+1FA1778C555EC8BD954678D0958E8D4AB67C606E4AA4577DAB771A09476D5EDC91B332C8
+F38AB231BFBA4DE3541190272644C42C72DB8B2BC3DC66A951882AA6A265B2031743182A
+EA53CFB8F7E4F18AB3AD6363E7F1CD05326144A8040AD77BACCA862F2309DAC3349FE275
+E47DCBE9F9757915900EBDA66E204FC6E473119565385CA986649AE5E9FD6F951796A10F
+062DB8D9DF2B6CEF59185893D97CE02D9D2B735D2C9985E2B4832A9F9F9196E492D9B399
+A553ECB36DA23B502B72F499F7AF9E0869E8B23DC32AC919E4F257C440A602AD83F4D16E
+BD9E64B64EBD2DAAFC220DDEC7B27E2428368E9651BCBBEC3A4B3661B1D9517BC35BBC25
+9925CAA3931B7D85F366D0263310525A0E0853F944E8E9753A448BA1E355702050F882C3
+AC8B202D482F2324C84FC742C95B4A0B00B9CB3953FEA8324323BC4BEEC3DAA7468198C0
+1422292CE827BCC605DF123FB695C45312AB569DCD7C943CADF7F81855D0D4897205675B
+2B2523229700FB8C513D115526DB97BF4EEFADFFA80D78C5A70108AB03ABFDCAF13CAD5A
+C932F9AD8DA48AC82E2DD58E79996DEDC451610F4E2ECB8D78BD1456114958153F4FD39A
+F2A42AD4CBB70C1F433B83E1F2E569B5A0AB6C32450AD6DB9434647CBBA76A6BFCD79D07
+8BE0C8910F7A04AC7B730DFCB727D538E26E57608621B34A2F939C99B6CB4BF54656AC50
+F7E5342FB3A68B50612541F159B77C4DC6839FB8F0ECD7DB5024B0932DE6C7AE47BE3180
+32FFB0D830DB3724DFAC8C2A03F1615AE63458A840A2A1297E820CE142B54B93266B96D3
+49120FBF7A5A2E99D0CDB1F7D2DCB1AFA2AABB1C3063ECBEA948B11CC8F5278FB7AE2FD1
+F9292CDD4362CC2303C863758CB0088CFDB4F9D9497F3A8CE769A646CDD1D593B80DA3A9
+55CB493DDE807A871ABB1475F5D4953918E7F423290957E378AF4F94E740075FD51B09B5
+E83C8EB8FE8BA0066C7004DC8603C93BEC78D7C6D97A41C676F87EE69C07C8E83B79FE57
+6853932A51732EE4838D8C8A6FC7D195BA9AC4B9A7DD9BD2C18A5889DD6920B050392D6E
+C9325E2D67C32D8992A693AB0D7C967FB7E336555923CE5C28572BEF68D12FE01141B3EC
+B1F97E6823A38CDB64C046616447B514A9BFC637C6368F31F3C3E5C912E14EE444DFA674
+2CDA270AC6C292BC5DACFC4B2C7CA0CFB13E67B6B89A48157722162160EB37878570CC06
+E38DFB30B70DFA2AC0045E20874B3E27AD881139CBF584E4F361E45A3CBD6EBA194EA3C8
+F1D88175608884ED46582B0B859226CF5EE08E80D33EF7BF59BBBA9A3D8F9621396914C7
+9F1B9FDC263B8A19046018A0FE83971EA55F3F6C7E6D917D79A75153FE318A356B87ACE4
+E1BCC8C73B0A9C4D4EE209DABA440F5F8316BCAB8A2F7DF1B0E73FB4CC0CC197790AC3B4
+A8327DC921EAA131177157316033688FB88EADAA6D8DE3A169AA80C85420E9E67A883AF6
+D6ED109E591E62A5DE918EB057F243EFE512AF89E7C6218F4DD4FC27AA2D4066080D8F8F
+261937C38A7E89847C269439AB521D210FC36DDC1E4F673D385F0846118A5D4F3EDA1EEF
+03703CB640BCCA4ADA482CF129BE27B61DAFD21844BE369012B1B0DA9B325D358F3D4112
+23B041D2DF500F748D19A82EFF5FFE895EAF08A0D14B19A130743967B337ABC796156F2B
+0EB327148E1834C28BB084B8E4A49C6856CA669AE5D0D658A9D9D2CD54F1125EEBA9A94B
+6BDC14D4031E42D022CEBF451550E2F9D0B219E71FAAD46B96F266CE6D57652972C7D5E9
+A70D9FE925DAEE94763C12420FAC79035A8DD33072650FD365F9E89AE1CAF9F124C5B702
+BFCFD1E76C31FDD9B71FFA077969E5CB6F6940D1E40F1413F0A4880B08FC1090B684DF19
+2686601A6AD294FE69879FDE0639B71AB68F2335BC4F7C42136F3F69DD5ABCBF9ACEBAE3
+96F33B14B698E2DBD39C8E1CB2001DC5C9A1B77483E744737541FE72BCECA395625B5DFF
+4BE6949E86939B8F8996E5006FE96A0F8032613CBFA361CBD70F7472280D68EA62EEF9D0
+7979828DCE634F33F8AB7CFF3CFEE2A872029388BF4D834B9F74EA729D85D063C1731423
+939E56BC2133E85B182BBF2B7C511ED7408748A68D40CEA71F649E282ED70D84D228FC86
+0F4E65CA407C3AAD89BFE55AD3F703388643234EA7AD7A875EC90EA92B882CE580D8F2E0
+BC133F74EADD8F8005BF808CEC4384EA6D0C74AAA2DCC37DAC05550D656097E602706C01
+7EE695264228409415DB4C0D887ACF06623FEF5A1C67DCAB017D1DFE759181BED9FC46DE
+363BBE4A1AF8B589D3FDD01D052312DB1A72F9D2C741F51EFF86AE2C0CAA3FE6982882AD
+85E62AF31E3F64AF08FE06C9574B8D3B659869D3DC63BB607DE2DA53FF4EB79BB3344061
+B82989B366EB4836E11D5F72E2FE557CCCF7769CB004CD8337E3F54B85B3C59CAB6DF244
+C2663CB60A007774D1C0557249F3C8DEF5C9AF1A3D20B95C10BCAC5DEC1AAE9A3E5CA6B0
+C1D40FB6988B8680A8C2F4C25DA311B0AB2FA233ED0E79D8BD82827710A3DD75D3C49B59
+F4B1E775147B7F47E3B14C821ED759D8615ED306161AA697D7BDBF4A2F525B16BE740B24
+F22862714B0F6D2DC93EEC2188D1D3D3376E9030B73477E022ECCA60DA14A04CC774A760
+16F148351B9FCC0472E22A809906EDED7D54F6B7EF3BA78046553033CF372566B67462C5
+0880EFCE0DA646A2E7E6727A6C805865013B9C064F2143BDCBF613701CFE6D4B454AD8CD
+D3303B492D101F2A203EA7D19B7755681E4E28A7E8C01714C2C8E78CDA79624B260ED312
+C0DFC1082EDF4CDA041C35A911659DA07A6ABE761367E3FF8E4363C663C31D4BEF7ACDF8
+A3FC22ECB05161EC30B624D7B7AFD736D83B3E5CF064774103B49A4789BD6BB4A57E9021
+2C1C621C59E7F128A92D6DEDA858F90B5FB13E1196A45F09E0D62DCF58BC8C8CAC44D3EA
+5C03C42BB1679243E894776EE29085CF6B167AE54043A20E8AF9D0FC85ECC4278F57D5FF
+46CA017DEF2A4DC4A075B7DC9C2BB0C3908521F70C281336DE2B0D06793CB8678D30E5F3
+417459B171086E8911202DF55658F7799B66BEE13E9D3D22AB7AEF85A3FC39664D672570
+D9F584193E0BD542AAAB005BC6DDBC5DD8E5007B1A7134F278C70DF87E99C125F9621B8D
+14E572C02998D010449F2EF7125A23810F1ED194FE4880C0B3C4A28E5C211CA76A948F8F
+22E3F09387449F68F470F27ED1586862B1620E5F1AFA63929B70E66F20F5C101087599D9
+06D36BDCF1AD323CFC41ABE2BB43A64EFAD3E534160A04D45D151F894C9C1FC4E327C9C4
+B757A3580E2F18C3E9A0C152AF64E1052A639A2F57EB958998FA1D6ADEF01C3B9F0FCAF0
+8752BE2661BD94DEF7D32D4D2E2391D4A0154488800EA6663D9D5BCCCF1D9CF82EB4DCE2
+F2C84A1A05D57BB4AEC0659F71964BDD067A097D18968F67807A7F6C4DF8682E76B5DA7C
+133D55C25FD18937D43F4A8DAAC432838E9B5D99D908E0084AE8102D2C728EF3AF0AC190
+5115D228CDE2E18B70C8522111906B4AB816502667EC00CDD4957C05775E9CD90CC870DE
+645BAFAFA6CCE8C02F3BFDB37D394FE78D1474BF37787D0C2E30BEA8FB415B9732043B21
+30D7E9F90DC9DA2F8113B52096F4AF6E29E0894D7696330E34FE9F214C3B70795AEEBB83
+3B6567A90578AA41FA43B1D42D0731476595544B4739352625166A1C1593F2AA9C95077E
+1C98454E211371C4A01A06D94F9970BCFDC1CE5E3A68F178250EA530D7BE52A8FDF0ACCD
+8E7DE56CB1019C7E7F7BE4C55FB70757B5B85C196F03493D3A31DFF0D04426E81F2A5253
+14C43D58957AB1499968FFBCA67DCC040686450C27E690C2DF09F93E2E1A4445B109CB66
+26B31D5CCDFFF9F647B97C96963EDAC5913A8BC2F1ED4F2278CE06487AC9BEB8E6C5E848
+B72CC98B9A1CF57CED66B1A00F9CDCBC62C6F63A954E1AA0C1546B24BC48E3CC892ABAA0
+8C33F6AE3298A23324A1977A7F5725F1D15FAE9F32B16D029755959C8DB2A3F01F7040F4
+D65E2AEA6E0DF7FEE099F3D16246DB07B4268620EA9B39C9F5EB73717FC5D61E08D1CB65
+0056831BE1B2600CBEB693DA6D831CE1C2B1472A90257317F73FB3A30B7D5F4BFD8149D8
+AA0678DE57D345069C03B5865F2DE1FC1F0912ABFE1F2A1789E4FF465510CF6C8518569F
+67D817F16C7022A4120459574F36B486EF74E91693A8D3377CFE6F741581F32ED976F726
+5A0F0FB12F84BD05DC02C42CB774E98CB235D60CB58C8D1B7DD5A7967353267CE3B73FFB
+AEC6219B38420C1D5C321644239A5CB378AA4616505FDB47CC69DFFA9F89D3FAB3308DFE
+D6250492598085AB25D5769B3EB3C96A51F9D1A665450C0F6267BDAE188FA83E4B75BCE5
+4D46829FBD25EB3682E785FB07C6A1CC92C317BDEB764DFE86ACB9621899A62D77D96E65
+6C246AC40EB855B6A0E87BECC8A80E49BB182CBB8B691D46E61412F8DA47CF8ABACCFE00
+BF8519669B53860CB69039E8DF7BAE2293D68F518BD97606BBC3D530122B56117FED7E0B
+0FE3B0E1B107325DBB283B9CA969AE3D7397BFCE9059BA1473832007812435B8E6ACABB7
+FFF85B356FA83FD1F8B7FB6992CE504050D58E3F65A2893FD48E8F188CD1ABE872D9DD39
+EE3C0E45EBA0F7DEC539596C477E9E1703C8949437198472428C405280D5C8033077B2F3
+BCBA7C6759B8D7B29260B46E9337E32210E183EB80103F4824E17247C70036B017A65C29
+AD834F66CF3F5659944FE370B3F0561C1B79026A2F96810FA0C2AC5B18394888462CA9D7
+DFB6CBB90FC122935365A0D244774D5A748D84986BFE0AE2885552BB7575749BC1C4F788
+A2C93CFF05A0AB5AA0EA30AEC69DB4698B786960CEBD846E835BFD1AF8412926717AAF06
+95F4D6B34C7D4FD2802A964CC47EA4357C261466FECCB942802300E6965D227690C4D7D1
+9C3B1601378FDF5FF35E5FF6B3301F09427E72F6D6E5F22F7D3F44B9BAC3B46F1F8F66D1
+97D3EF46ADCF817CCE3F6D69211D2595DEDB2E4E7C068F4EADD5CB30AE07E93B566C0944
+CCE95D4387B35911A3C32553F437563F5C761141DC7DA28FB5151586B3E48FBA801E7EFB
+F59CAD0907B3657E7B294FC5C9E38C42115D7FEE9080416916BAFFC2B2529404A285ECFA
+A0C443AC89A16068D75663283E4D1A21645C3EC56733EFA4C9B29BEB5E6976A6EACBCA85
+8EFBBEDC2F9FA39B1B77A0C9C0A5F3AA02F26D6CB04A04D80D0AFCF5CEF6B8BE4EF79FFB
+515728DCBD5B9978D330AF913D29E1D8BFE3C442632320C470CAA282CE2B36BCD073F6ED
+B9642011BE3DD330AC65BB84CE8AF5858EE0F72667A5C9305F56384DC33EBF193CF09DF8
+A048C7C854360B484A09DBAFCD23ACEF74EF869AE207DC60843B6824FD0C0C49455BFA11
+0746EE7F76720CF32998CA535152D149C4CD95B94D681ED1B86C4FD3DB09F3080D1702A2
+7C179E2FFF94B712F801BEF60EC218AFCF2F76FBDB8C405513A62E636A986BC69542628F
+6FDD26ECA8E4319FCB4AC95366E0E405D8B060D4BB75A839AAB2BBB8F42055E4B8A753FC
+9089E7F9907BBCC78CC97D778A97981869FE5E57A6E7D6370596E62FC564153BBE03780C
+58492E3DC6CEA6BBE2BA9D6E1051A79AD477D365E78D8D02BAB546E5516BF450AE499B3E
+8EC3E324FC7F82F1155B3BA81557821FEDD4EBCD94AFC8441A6FABEAA1FE184EFEADD59D
+4913C115865090454B117660579379C6FFC963103658F4F2EA93A534E62454847413C23B
+DDB1DC93C716890DF9DCB9425C8D239D3697384CE91F40A040D48974557DB4041FF70ECB
+BE63B111BDC62B78EFB8E31FDB55B6AB9D3397A5EE303C32FFA254C08D729B6364878A4A
+9B591DA60AFB8F9B2B81EAF56F8C1380857706D1981CE6FAD8226D1FEDB777EA87A2B6C2
+D46E4465F1BC3ABAE4627E01E98001CE7493BABB332CFA285208B5AEAC38ECA95C86B673
+7A2655C7AE5D57CDD9B851E64AAE0F00BC6DBF394425A3BB4DEB3488EE55E2E86562D55F
+CC82ACACB4F9434ADAE4D2A09C21C168095E2D5835C012DA2AD980FA3BF12313AD58859D
+2F7D510AA2989ABD65E7E0D4205E39DEED766108D6389B33B867B91E6511339731D00196
+41E8A16496098338F472D0528CB539EED1F295AC5F2393237B63BA5D38028E180E251148
+CE3226B370E6A9E56FB13441A2108F585605DECD529F3C093CEEFEA94624C9D0D9492909
+688685466BBFABE2F986073228CEE67FDB17A73BA97AE5A5AD3F257D3F6BB190BA4B6164
+F0623AC18ED84A114B463498F2CCBBEE2417106A74D2CF834E4526D324C07DA135C606EB
+B5A344697FE95447862F5CF2877678A90544C09603BB8A095E28F5147E050C7DA1A3D271
+C985DB8513107679E5AA64883C677852A6AEA8A423DD071D288695820D39BBC6A211B80B
+A2999C48FD9A5A45CDC1603B11B66114B4CD7D67C66F241207B7003B25B48F31A3FECAD5
+935B4013F0A6F4176A60F31BE0A01654606398934FDAA2E280EFD5A9C784154C1E583F72
+27B148037760930E9AE366A865D76FDA5F9134ECE37FB9C0B6380702FC0B1C5689B5DD1F
+1C5899EC6A2ED77FC3308976A4ACEBCAA4E50868E8FD3079B47D8A3CB1DC1D02DC221BC2
+DFFFBD040340AC2EBA67B656CF75D8F9843EB81C17E8729CEC1B278CF5F8A7E77AAB9A9C
+EE63CD848DA511CA9C2B50CC9D8DB2FA021ACEF3F02E3B3E92E440461317451666442282
+33DD04615B25D2E72AB4E8BCBBB5130BFAB28DDF7AF9835C33B3590EFAA095DD55E8E926
+4FC6D70A56034CBE16D5C98AE300975F37AD237103FC341F2BCC0AC5ECDD6F6ED0D7CC21
+3F562A68B997A7E9AB30541572D43AF8E2DF8D9B0A358B488CEA27DAA1F3EAAF3182299B
+BBE9D78AEE047D363ADCE50CAFB31298A7A118A432731719B81E6E060B656B75F6634F71
+325F121EDDBA3273C78508772C1FB4CB79E229D393F41DD6C7E9F398EE079179756A48BA
+828F3DCCF49BEFC0E9566596F1CE4CEA362F08EB840F70A8C8540096057BD0712F285492
+A1017E1AA276FA0C1A8D2AE3AFB8416744245E43EB121C52B9EBE21567598D6806B09832
+EE369BCF623AA9C63D122FB0B4F949FD8698FB85C85E393C6FE18504436150341D304D60
+21F951085140054CD0203BE3E919EB7CA01A9D4C73F10726D598C0D985AC8110F7AD4173
+CA6C83AE002CCB2AC876D10FB63F56F9EA9E63549ABD41B6F8B0D6F8FADBD5B75A7EEB23
+1B4A16D8F138D3EC03C7077CC62877790212B02F3F167F4844156083DCF8F8FCEE8617A2
+6034CDA111530EB194D0070607EE43889A9F44EE2802FE584967C2174643D17F7010CE0E
+DB9395E9B8235CCA124FF70A7886E4D5748F37B64C9854CF76D4043DD748B499CA08B0A8
+94F0606CDBC73C06598BC3360795848C5EFF97DCAB71136ED2A550A1D67A4BB94AFCC46F
+824CB231601214180D0063821FD5B03C2B37DF7213A95B9D16CAC050B6B3EEAB3924982F
+494FA9D4D1D73FDBE4177C07097C21DECFA584FED249461C1945710183350360A08936E7
+10F2BF63A9B101F8C0580F2FF6B8BA09956C7632E93CEC12DD8BA4D90D9879DE529C380D
+3B27305DFB4B2B94DC0DCEC4D6062C30E908432F5019F536AAD462717D7C7D3AA156EC3E
+08EC80F04711A15CB2259DE2A86712B107D7F67D14E3123721782178831C01F3A3873DED
+9356FDB3374E31D49909658031915AF67CC667C6577893774968D04C38C207E79C00DA1A
+BE1D812F8E842D9FAC4185F74BE9F594CFA57ABA4FD35C0E75D351E2640380567ACD07E3
+F888741B5EEA17D5F14E4C7E236405BE372FF4C4873E77EC974095415F27F4693D1FFD01
+9DE39A6AE9B146BADF571A7EF77B0AE27E3F3308E5DE951D00C41D73635D469463174754
+4962669235F89D1D5DA44E5567F38AE97A2A0A93DC65F29FED1B53B8FD50E13E357BD886
+DD7178201170597F924376DF46F0A99D383A3FD536C3EEBD8A243066FF8A995EED4059A9
+801A48074FB1F76CD017DE26D1E417C47058839DAC983A3DF5A8119B51959D57C4EB71D4
+22AD14B57BFBD27F045D6F5E3ECAB5D4C2C8DA504876E2C711052DFFAFFF3D1A3DDBEDC9
+A137488A2591B866FB57D3D6F2B05ABA74295A4BB5A16FE7ACF0F86090FCF8240E28372E
+034DA9CA384253ED2DA00453DA13A862783E724B5620D087CC5A1F48B5EAC444CD7F0659
+6AFED3D0EBB98379900FABDA6F67A5A30EF720F72E9A78FBD0B76C882D976714FD25DAA7
+10FDFDB23085D8FC9D91BC555E30E60B5250CB65C40B2F2B0AADF57DC913F67D924A2BEB
+16968ADED549B456206DE4C3E9A063D10F00E88CDD4E3F6AD33772A51BCF32DDCF8A63B5
+0A773F1A024D2617F37841FBF0E9D768E9296F034E9523C47653D4BD920BFC072EB15245
+A4C1C5DC303766D354E2D6EC262142AE1F03E4C7F4B99BFF2C11E68572786A0642627AC5
+654C012E5C20C6259D60F1EE5958A632F54433CF68CC96773B8486796639A7D904677EA3
+499C8F7D219B491B5B58A4BB2B69F170D865B4642068FE3D189E6BCE15BD670D78E9F167
+4CFB5ADB9B82D55D7CB0B4ADB339BF4342AEBD741731A85509F66601A76D7621907F70A3
+F25DEEC6AEAD008E95939335BC49FD5A42BC6D71C55A62ADB529C4388343A68522BD5548
+55BDC37472E924395241E8C8B223897BE82E74D458CF9470DC626531EA87BA38159AB64F
+FA51EBC2576E730A155ACE7D48ABBE895CD973EE678FC10CD688AC65FE0A6D0F1A5FFCA2
+68FD121B5A26FBD2993E00E2CA8489FDAED38EF20FF24E54FF694F6A883C56D6D1828111
+8F708DC5CEBA9C4C3DF677366993B966E7217E2D2874C4652A1E9CF0765390E5920F8686
+0FDF3C251BDAAF51141A3DC112B7001A8FE6B28865F942ED2939FF45EBE117C14A756CC1
+03D6D958125FC5BAA3D430EAD4CA68D0331A8ACF8042E0A6799820B683125B5BA0692781
+BD36BC81A15AB13E5AFE593D9415124CC1AB98A483159F706E13C5796645F854F0DD25C4
+03F55326EE5344C9622D002F3530A0943B5CA64A1C316070354978090EF4970EFA246E8A
+2F2B780B3F49F37FBADF1F44A97C5E56A1ABB825CF52ED56D986C0A78F490CDFF405D948
+B0F13D6E5137D10F1365B7DF4391842366415ABED4FC5D7298A34B076989CA8103959CA2
+87EF72BB36DDE0D56EE2A57ED7B585152A48F9C7BBFD4253ACEAB5FBEBC6B31F8A2A1B59
+499B56865C92764C8A714823748AE6055050581BCF91C723B95D8ACB8B17F96DF5A70648
+D1CE9FDDB3D70C114E52935E0AD5534387C23C92EA8AA42ABB3996D983C11B5819A9E918
+0496315B8E628B25C0FF3E47761AD4FC924C26462A3BC32773A870D41C27B032A0CCFCC4
+F5060F6658CBD433A0598D45B04A61F49087312AC49EF40F7E49BCC3EBE4DCBC8FA59F3B
+1A1AF11F6C3A08E861E67BFF1D0FB7964D02145FF96219A9F2A5A9256372ADC973E20188
+2E1C4E67C36A08B1D9F91E02249CD86B5CA6F808B6F44094CFB4CCBBF6CA4EEC2D6C8B9D
+EBA5D1ADEB310E336723EBB0DD448AAFB08D6014A280D043FEDF38B11B7472C5F9971C74
+B285CC54101D970FADC2E6C07F748E21D1D3C47DCC84E59810643BEA961B96FD1AA193C2
+5C614613A3CA6129A59987577FB04BDB0E2FAAFFA16F54D593631C69D9206A8223E3D8A2
+AC9C380AA11E9363490EBB5E555CBC5A48ABC2836CD22E2D89D4C9CF7A9258B05081CEF9
+5AD56EA5DE4C517926EF10CB8780438A2E149EEC7506A2296038BEE94189D23913968779
+7D0483D1A8807CC4BF71800DE6AF9D007B15A6F2F7E6160CC2CDECC866F782F7C8BE5118
+7B2729A99E364A5272CFC9513055E42ADB0880CD4D2B3A677752DA6CB66045584E637EE6
+D4728334E839DE57673436D8627259424B4B82214EB551173209CF6E8ECDEB4C1933C270
+933DF38C9E99A978BC62F5632C11A7B7D2616C9728DBEB9E8412C2E1A27D9795B73999A9
+49AF4F1411EE911E842D12623E2C473B27EFCF302D5FC2BD36FA54901C5CF480022B76E7
+9DEFD8F7F6E5DB22348F3517C17B2136502B3C89853DA261A6DF3ED24ADF544325006148
+8327C6D9B6FC50EE0A81082DA32A78FD22683F41D07D79C2371889163C31CF5BC4C40310
+CFE84DA4BBC66EE92605A09DBB0B7C90DC7185F274CD9D0BAC34A391DE1FB513EA1361B8
+ACB6751697308D73413C46333984B35D9E062362A2D0318A8EE14C13047252E743C683B9
+673B56DED84055C86F8BD54D2D6EA66EA24AB86C6E0417A0D5E94F386B3625783FDB1FB9
+BB8D03E4F802E8140C6D9A8A9EFADE2FDCDD90C77775E338ACD3DB6070EBE6CD3F26B036
+F8A95220F8F67AD2FAED4F11F7124CE12889966122BC67ACB65E7B4E4849F9A5C77CF68C
+F0311589CCD4BE6799D13EA1AFFCFBC7B967B91785CD5F678F4C2C759A2C173B084A97A6
+8379D4B36FC2B3546259EED1097A402ABD2FE93099FD276D74AD6330748B10A6D128AC95
+5FE0F6DC20A305AE8C6EC446FE6AF5AAE81534E9522DBAD69B285AB027276043BFE0A597
+E94CB72690F6D2998E4289B0291CE5308E74F8A978E9CD666CCE563B6E71C3BFC0A577B0
+78D20A8429A05B39916137E1E9EA7AD1B6D8D9A21D4EE69997D3A759EB99A74662026472
+DC516CAA7379E00FA649AA1D7F3E95857C95378D64E9642E0A5B1698309BE37B673C82B6
+7EA4A0B6E69CA03EB23C2B8074C7BD629397503EDC19716BA05B53587478A4F06391E9FC
+BCEB77368D7EE8CE65B9E581E25EE244AE7056B879703EDB127822D148BE067DD54AE22F
+45E1E99DD1741D4A0C9612464868A949F64540F1B511B3CDB1AF7F863A62491FC2803D0F
+27769563FD1DF803E563A49437AAEEF60BBEBFDABEADD7B363AA4C39D1EA4D064650A327
+548EAC558669DBC0BA2554DD077C527AED30BDF189FDF51C4294E93AD12208F2E6A9DF90
+7D0C176AE971B724D364598232175F66E46B021FE16B92D44612C257823723B99FE350A1
+C1EF7A07DAEE036FC83D57969E9456A85004BB1EBE8D1A87E89EAD45CFB486131ABFBDEA
+E2F82A010548E678FEA964DC133FEA57F47604B325B707B236DADE90F35F9CF009DD94C7
+640F6FE49EBE466860E9C6C769203EA3C557B0CC9602F1B36F2B23E3926038CB4541B941
+7C8B31E239E517417BDA9CF7415A3F7D5FC71BA96F29FBE61CD3DEBDF52F37A40A649343
+83840381F1DCE22D5EFA1C45B40E9B478970D7C9B5D9A7F27CC47974E90DAAF922291AED
+B97D516FF3BF8EA740B61ACE987D0E03EAF866FE06E1D4DEA90A8A82B9C35217A6020341
+EB2E05D5556BC90A2564B073FF8010EB0C32DBFD09F8AABAA1F1F0C020D24C9BBE2886AC
+BE5DC72AE5F1159AC5359C05597FAAE53E8C695891CCE552198A315A24BDFFEA28DE4920
+79531911349D7D92C3D40361A6762AE076BD6992409E4F523B624D3A9487987B1B3E9DC5
+4CD260A25CB00CDACDD03C9C6F597132D4937C9022D98C63451C5090D36E4674419C81EA
+D9408BE46EFEF138F6CA8C9F45290DC06D8A429538630F626171612E24219B511D3AD12D
+C7650A1EAAFDFC1958CE0BEF27E881F929E603C21408CD0F1808C8EAE441737A6E695937
+E5E0C40B9DB4C00DA2995C77478DCA286A817C0DFA558E85E15E05A5D23664C8F86D3280
+62C7D6DDB5A17646DF92172297AF958F25979C7D787E06386511828B40257BA687386DAE
+1C229059B7DED44692B5C3DD4B34BB3ED5A7951F5914AB87C1C88D9624C4EF99FB52E8D6
+C4EDF98696E778A888BA45786EC1CB18AA85024CF72EA94BE6A3F13A44DFF5CCE8F9FC19
+40A667402DD84B8E9D807800D606375825F90D3379483FD405B07BEFEA82AF8813161ED6
+F06B54D76CE70AB8711D3F7E1A6E530FB1837DE56AD870DC46DE1CB0757F5DD0DBD871C2
+C9E37E38375F475155C9478E3E8D4AF9B57746320623FFC811A0D5A695928E82D2E1436C
+7B3266137E85D88A7FA9BA8F39E9C229D844E92D8DC7B11F89A3DBE240507EF78B1B4E28
+85D96AEAAFE307375F3BD4057676E4821F18D9A658362ECD5F1CA4F3E07D2B894E81FDDA
+E30103BE3E05105584193D879B9054DE9ECB61E24A40B25EA858D9587705334797100324
+29CD6F34E3EDAF5E337D8FF21ACCFD7C4F0563C30B8CC8061355C5C2971970537F9A1583
+450284D7B50FA873877657CE19A1FE49E3DC337CD51F2BF9113643DEEE74C9CE2A06F492
+55F14E413A12F92F355FD21A5749D6CDC5EF90365BF05FDEB0325F6EF22CF7F4D3CE4C90
+643620A949270B536451CD4A012D950C2F72759756EEDDAC19FD91396AC8D5BDD29EC383
+F0836DEACF3E978AF6E33D9F59C298EDC05E174D5B58586CAECB06C5D81647214D6D46BA
+783FA86CC4DF20C3EF8EF75B4F7E320456A5516E89D9B559654D9959B68BE8B29534CCA5
+A6A8C5761F5706EDF3AC4AC96FFDB3C7477DA2CE65C0867110002B3BB42E82EDDD40F9A9
+543A47DBCFDE6210E0265EA963966C4AEE3C6B972CF5758F7020911FF0F81ADEA5656BD7
+B53F080973DE1054AE303C74ADCB9348D9F7E61A3CB939B3A014B0F8C126C8780B59680A
+A82AE5E85DAC2431B7E04E8DC19E12E8B76CA06666534994F76373E8A5F0547980FFFD88
+EA242F8BA45D938A8892273E3B18AE315D3160AD0ED0401D57B831C3129FDCC6DB750FA0
+73A69601F9FA5331FE967034A72211CFFD0DD47495FC749860F0FE767E8E4AFFEEEB5BB3
+C5A28746DC4F035BC5FCCED5D9036564A221C9798F3AF3817D35955934367D3C8C95DEC6
+D7DAB26D7C297707FD6AABD897A422369C353F0793EC608FFAFF5E37D01CAECD1755989B
+2388B8D7641D87BFE69775D4EDE124F13D6B0BD51E8224675BBCF210BBBAE444A31AD963
+2937BBF3EF9BBD4DF27D9DAE987214DEE960ABB5B899844D8B15B29CB1E7606E009938DA
+72EE2BA99F99CBAF72572C72A34821C45F054C328F1D441E97B39EBE23CBC84CDD0BAA29
+B04C5F4C77D25AD181F903966B225F3C6ABD36DDDFC9F281B7570B5AA638542193F2FE09
+5E35556EC26C0B8042AB02ACEA7D013B9374C09BDA9015008B4A1F9EB1144C7938A0B24D
+EFE28537444D42BE80825833F81E78FFF34F7B49CB53A3204A7633B0003C32C09E0E6D10
+336DED783724A60FE3D7727CECCC91B405EF0284814A772C2AA38E7D014F3CA36807E2AF
+4F3B82D5D33CE1ECBC0293BD16C5EEAB15BB0D14931BB1F3132B5947C6B981A4005C1E13
+82DAEEE5369F75300036DF373B498772F3D2C7EDB719CBB8DD9CE62F41A67B0E02BC235D
+F5C1B64FEFD3BCC5758B53CA84E3D68575083788764AE94ABFA5E2BCF4760620A11B1EE0
+8013F380B98636D8F84AEABBA465DD955AACADC30C2C36E1C06840C4D003793B76201325
+FF8F11045FD3D74F20E83A0EFA4DC80EE18AFCA69EC37A4902A0855F2934E50FAF1D6C9F
+C78A9B352E129E6FE6FF4F533046810D2D19FB383238A466E3959378501A9F472CF9D072
+3A9D19C81CEE74633ECABC2CE4B2AF6C7CFFF5372CCA5F60CAA5C1F5E992CC22B5D7ED05
+1F72DC17274F66AE07083B204781E5BDF04B8CFE6C8FBE05D54BE813FADC88CAA525B1CE
+B707D40B53090B8FFC7618919E849318BCD36C4BBBD5D4CA15EFCA094BAA1F5FF000E979
+B0C5F715559227FB4B44E985930C9C5FEAF8309ED792C0254BAFF16C7FCFC431FB4BEB56
+1657E559028BE311B031B0A1CC619070F56A574F99903E85719C4133AA9713A33F6A6E6B
+82EE41470012A4EEEFC340860AA45BBAB86B7B797FF988C81F8E9CB6F3D38171E362E38E
+8841A0FC7F79420E62701D18187D96FADE5FE589A105BE5416CB6A284C6C1FDBF3BCEDC8
+F943CC6D98241B64601C0C794531253B5D840BF112D8246C8EE9FFF35A4DD184352C827B
+F97EB705237A023FB60E270BD78C5F405BF588FB13E701AFCB5EEF2ADC0A82B8BE68D8F8
+C9A4BCDAA755DBCEF5B1844B48F2A31BB3D44D2C9509E9C14E21EE4881E3DF9AC8ECF303
+45E4D4A9E1FF2F27F3F54849F9AE26BF247BD918ECB98A7C0941EA7E1AC28BE7128078CC
+A656B4B5B3C6FB56CB218CE972987143260817A100D801245EBF7D1FB2EA3F373A18A0C0
+4BA6DC2B5EC2506411020A3D0F2A115EB8888A3DD5439BB51DBFFEFAB7AF6E8FEB4A8B86
+B6A09FCA67F08F9D7B8E2B512E21DC85C7214AC3D50D7EE791B1FF973495553BABE5F130
+5759CBFFD7EA02E092F9BD5275AFCF8000D4CA4F84AD36F59DEC44318996FB6F01A7DB6C
+5E1A64A5BF480327C2D19909E9903D1301D35FEDE442A6158B6DB7FB14B87E14D47DEBE4
+2BB626BBC723F91D6A72350A2B3BB35710B976B60143E1B5B5BE591ABFD1160371AC787A
+33ACA0021882989D1E1F49CF4ED404B58E1BA0C4C0355B7D8B2353B0B4AAAB2B8696604F
+EB4213C415CD67E1CC1D9851F8AAB27AA9B2BB7BE80186DC86451A6DD1BED1829F3278CB
+187FDC9A8ABBABB96FE90E2830C85D55195906DC8F2747948057F9C2142365E61B992E90
+C99A8A796720E8E7E434A98685CD739DB8862B111770D902492C0E63DBD2C738A39818F4
+CD451383E60E37D0C3FD4C7B5ABE316C47146667CA08288E4F844BD7AF63AB6637BD58DC
+60FA6B9F80CD47655341D07F0F6BF11B3C9C3668A728EEB25E686045179A944B735A8BBD
+594C40819CEBB79E4F1102C1B7B81B6D5F1C8C8515C04813C18D18664F13BF5D9BBF40FC
+1CD2D1E4B97F863540870E788069F2056A343F98300D2B44C8155129331B6566BD0F26FF
+C2CF48DBCBE5AB4040D78225FC3C5CA158ED588727AFA40D2534D0A82D092B22CE05520D
+2DEE0CAFF80642EF457F67047C298716DADC6C40AEE6BD3E5849C259153DF40840E78683
+E7E42C75092AB36E619630E77FFAE91644283CC8F4F426A7D3BA48743B45DC0A2234889F
+13BE58BBF869D26ECB88B1BE8183C73566EF53DC57C73DABF7F255B764343C374EE775D5
+D68DAD6C98F7B67C770FAC5EF9C4BB9EF949434AE8AD8C2B3C26824D3C842EC5F3CE9F61
+B14F474E0C3FECA51B87FF69E83943E34EA743E2CC1548C451ABCACB4119FDF3D8ACA40A
+E7B8507B87D34C511003A74BFEFF2DED44768FFF6EA0CFFCEEA4F7AE42E8BEAC1BBE597A
+7DB50B008837463E4A1ACE6EAF5540E08D5E04B48D2A220BB91165EC60964F25E865011F
+033996C6834B36E4597633640EA53CDA385DE11E9F5BFD824C4108C88EC4422859341C45
+F115492C4AB1EE4047389F00629A5DFEDAC8F1B94C64D520E2F67F7447B01770B0A65ABD
+6042BD58703DC04E4014908ADE60DCE2BDFB2720ABD83BE04C2D381E945C594991B20D6F
+97D909720C5337436FA9DF77751B28696DA4C4AD76AC4E99544C2DE6299251BF6D0F6F53
+7AB1E5301F9067237A5D8E964BD90238DC8E1497EF6A9DDB1857212B450084F8639D0058
+E3FFFCD8E2EC8BE9B942D8D9309E4E81F196EBE064CA75AB3B6C8D4394015E6BE576204C
+4657BB03609EB9D0E0BD14FBFC687FB7713E41EE0CD6495AA2F34CC3423F15B4CF49DB22
+0ED74FA9E57F3461FBBCA6EA8BCF423D5DA8C2E024808BA966FA911A2969E358A1E32EAE
+11F9601604B721B7DC0DBE2535273464388BBE4C292EFE35CA88068E6685AC0CAB38C575
+A66B80B75E42DB5D137FE81B5A3A28E7DAA5A9812B6B1307080BF23BB3E8F3ED983F3B18
+324080B51BAFA684B1B1E293D458CDD2FF997E0E657526CBEE15B124680F2333C3BB2685
+D0C4E457D9169370C963E238A076124A59AD9ECAA93EF1FFB0222766E8C8EDDE0FBE385C
+CEEB4BB83513DF8ED98DAE9F6684A3534DD111264642954C36346487E933B9AC5730593A
+A891517F14B492C4A81300AD63674D6052B6907B92941484928FF4BCAFB70C5C47E4B874
+32419E7BE8DD0BA40E87FDA6F5BCDBAFAB76B2FF5FD5CFFCBF85524EE7EFFFDD5750CF39
+423185896F9191E2A830B604172FDED4E3A4C57A1D107A54243D5752D87243A5992F7253
+F550D3FDD32E9BFEA7DE112825497FE78B7416E1924FD8A7873026D0D846DCDB6EA5261D
+6A0A74508692FB06E7409C310545570DBE464C08D04C8C3D75277553EF3BE554081EF276
+733FF2C1B9BF1D475E43DAFF3B9D7712EEE686B890C6E55A167544CAEA7BD888E105CE4C
+919E9B0B738B1C32C9A35EEBBA445A9BE045EB07F340AB1786B8619C0363BB016A118554
+DE59AF4289A0257071B5E095178F90E977AA22EA5C02E9B4D8162F8041BB35DF72939B18
+33BDE0518CDEA4A8298E3A7052AA990ACE1ACA389985CB62B655C7DA82079DF5B919B11F
+5FF55A31DDD5D6EFC5953D4F0F2E97879A63622A8E1367162FCAC317CCE0C98074CF7B02
+033448DD7ED01BFAE5F2CC8B9FC2B843F4C88E958B73A5039C0B98E47375347F0FE49FA6
+13CC4E6E7BF9BF63FCA2249FEDBD90A3FB1ADFD94CBAFDE63ED961386F7BE049EBC258F8
+42E4CBEFFE0055E1FEA8A05E5401BD20261E63EC87BB680708F5603FF93BF9748B8EC5DA
+071DCF1DF73E3540E3976210F711B30EA0DFBD8B73A60F2E9410A8E6D806F657D9BAB513
+1D57073593ECF8AD7362BC0D9ECF223C86BCFDA5D5806A63A43D80E751FEF2BB365CF878
+83008967EFF69A39A8749226B089860B5A6567A0F9C9F63BFA99DD1C1B02FBBF765288F0
+C15C41E9BD872571CA79E0FAA74873BEAA1E456D3673A23A597AD76BF202A4A6BBF504A3
+CFEDA8D6D2D5F57D76C31E884C0E15DBD5167293DEEC5E604854DE23FC953C655E88E3C6
+CE22D80ADE2B76474F4A4C87ECEA544FAF48069E020AD4C2588C436D2B35D58A7A615D23
+6D9BF15CDEC5FC4E286836479FA532B6CB8ECD65C9614A05E76CE0EF197D12C72ACBDAD7
+F6A7FDE904816AE1C0A7402F76158518A1DD52B52382ADE23DB06FD14700922CF1C8A628
+9F941C61A41745CB217D4D57D01E8B81765E81D12ADD796456400ED4ABC3366B422A9A27
+93AB4C19C49D122AF169ABFA6C6771D5B4700F527497711D643C9D755C433D4EB77806E4
+05399AA32A02C7A4EADCF098BAE5F67D59C130E699AEA89FD9D3E81C1992B03795BDCBE3
+789F42E859BE14AB6FCC8D426C590545CC6305A3AB9325099AD48D245C7A48970F107D9F
+1028928E35DEEC84B10FBBBCBDD9E23B2D16EDC1A66B99206B48CC68721A51E798D96923
+D96E8FF290674ED4B615F560A9DE317474E54582060BE09EB130D89B0A1EC12380F7CF25
+80723E80A9BC7B164F8E5C88A6B9ADA491F4738BF15940DDBD576553740560C683B9E517
+1148DC2FC8BC5645ACC7922EAE2563D8118E3B9DB768882120B59DC2D13527E43086F589
+30F87727C4199D738BC0F129F21C08258053EED0B71C906B261C3CCA65983BDFC7E25364
+2B75C26BF99BFA3C8C7790B6446ACFA5856FC09698CE0A147CCD12E8135181FD87D9B824
+DC44322242816B1726819DE7BD32A3AAA24E209E726F028B2B9F1CAF69C81857EEEA9238
+7907B6D8E28D08F876F16F30BC5488FCAAA3C154798DD84FD0855735C14C646B681D4ECE
+F03C18F3552F61601751B0C59C6F462A6450C6F4FDD4BF253551E25D3196DD3AA95D224D
+EABC6CD072976889CB0F6F70065B256D5854618108A513BAFD133265ED756B8E9A901ED3
+F1BD98B618A7424D97D3FDA2F1DC795890BF8B44D6691CBABF7899B95CA718F836EAE096
+80A4A531999A67EBC566D7F556F46D1C7D3CDEEF6ACC559EBDD569684E5E459CD7AB8BB1
+F5938789ED98604146A52381E47337D6B4E5ACC4227C9B030A9CA13767B1EDAF92F7AC0B
+46641C2B0A36924C4C943526CFDD263372C0AA9424AC8A170E164D02F08587F4D16E5AB6
+BA64FDEB12917B47AC18B15E82287DC59CD3309E971D27B9B633E1683BB94466D2F90FEE
+6FF94C30DBA2C30EE7552AD68350E34E07792FD3C06B36CDA02AAC3B307EA52E87500334
+41A40DA78C5E8885EC6A5D6ED63713B3B25453629086E9DBA9D647D49A066EBFE58F95A2
+0289F52E4F774F26A02F9477F05121473A53BC5B26116B4324A00287434C54401C65B81E
+8B3EC6FA3C1180A9D0DAAD1B6A102546A9A7ED90FA70929471CB58047E9C4D3DF0E0586F
+10DEC3298874BF7A7810602132CD8A686310F1B41F56A0545EBE41FE7CCE3565BDB4B931
+A06EF8D99DE2BCF1A40700D120E928C5A5CDA9D46BAF189ABFE9B8812BF777EB689264E7
+87B0FEC441CE6F12CB5F7888D8C654A6A15B5B7D1389C0D0BF9F9262861A8DD4AA431D6A
+2A36B218F8EFAED45888AB346EA95AD44BEC736876C1DA26CA88F2CF8F085896FA71D417
+F162928B4E2261AAD319EF6DEDDBDABE7EC5CFD22F2949495B225CDA2FA3B65075E99CC7
+0F366C8A3A7AEC41026B4A2CFE7842772CE8753402C68D9CE116007D2F0F53E5A60FD18A
+441BF932E7C136FB30D8314A58F833F4D0A56E2DAA7904DB7B7A0AC03E4E86CF728ABA7A
+D09E91FE29AED4D61FD0DDE24E356C2C4F7C7C2963D6F9F6B7A6BBEE93E678BD59D2D330
+F8FC5AED595EC1AAA1B0F357859B08F9886EC1BE41804E961B25CF7253404183224C0466
+C1CFA33AA4EC1E9AB979637B90687797C980CF3F5864933A7ADCE4C941592A6CB1FD4AD9
+7CD7886F5A740ED72AB7F7F6E28E5B5FC3D12D3BBEF075AD6050B81BA2930FC7FD227EF1
+364B5E56742D9E456A3FF5164238334582F1112B0B58F90C7382B7B569DFF37727CD29BC
+F65FD66DF9E20B916A2ABA481A8B75A1FCE185352B7ED441EE76818F175FBCB28E985A0A
+620ED61683F9B2EB6FF763563267A5E81DB7B78B16612E9AD1DF17CD785A7BEAB05A8D88
+510B66C98411E650D9DF3DDC18CB0CF94A4BF6FF37E429EB5C446B547C3B353FCE7DDDAA
+4D082009C29025DD23987121FA46E554F96B932EBEB10F953F7D203EEE9638D6FD514651
+D6E6F5090853B2FF7D167A6FFC978D2DE863FCBFF653F1535D2F7EE1EC5F2B7D4E40DBE6
+87995BFC98EED55B2393B526B466995458D1549EC8648D1B092E1DDB9B0A4BA36AF59F07
+3FC733242E698B08D307CAC8CEDEB70C0A620D86F1259FDEE2AEAB051E7751F2C1670937
+FB0043090FA65A7128FC438729D7E43A27C1D8C38E3E15E730ECDC1A57BA329AD8C15082
+C1B2F5F542E0FC9D84A046DF99AB3E5E5DD4CD13D77816C8FF4EA0FB7F8CD2E914C5AF1A
+394D35477D2C38CEF529621CC65683060F61FF4594CBA39E77F7C6581A556B041CBFC08A
+D00DD18C933A2A485A211E59FAEEAEFB1E6568A25DFE71F0554555987828A4DFD5467623
+D10210E98ABE0964B60BCACE55FCD28DD8F04562473EB3148F8F3143A1251DBFB53C2C70
+2C14CDFF2E7E7D1BE338AC7D852BB6D5B87C0B75A2A23F06F2996D20EACAF89719A17591
+4248B44CC3A68555CB08FDE5FC502BA0405E069AE2487F7F3C9C1B693F82D1B8C6055999
+6E77EE83EF25449E765E1CC07782DB1550ABB26B9E0D09201382C084B223153C753FEBBC
+2822A4CE222AB876FA29BF1806F416CC670D7A430AD51D487B350675AB85141F9BFA0A13
+B50B399E1CB88F44487B5DDE8B7C88B1D8967239916E09538CCE0ED73BC2836A8E6CA2AB
+CE56217A3118E44BA2D9CDA3794F0C2F4FCF01DF7F3DA11978EBF00F91B22941F5568731
+121D446CC501ED0174D782467F0CF9430F69BFEC4F72BAC99885330F4E8573493343A13A
+D7C41DB06CDCCE98A870C1C95DE3493525005461077E45B27517B38792018241B259136F
+037E83B55BC4B9C7A784FEA0EC28E33DB364A68B161D6823AFC95177943493971E62807A
+5080463A7229EB07B887271B5DC53574D8DF16F17CA018B2B153BD34B88DF9266D2DB8B0
+532E27B6B50120FD563A99DBB0BD246B25B71F4E715307EDB88D6E9532942C3206532093
+148ABD8743B934BD1950983A7F579D0A18C7C1E3E6778687A49F36B8E884773884CC1535
+00F64C438B54C392F5458E990ADE93C2DEDB57FEEB8A368B183E8149D7F2767E15BDFDFB
+51F7D1AAF9EAFD48E18D674710C8C2E06CC18444DDE06DB44EF2FCEF2F5AA1878737014A
+4178048A027FC7CD56EDA3B32EDE627AB0F602050D24136F27BDC675535919EC00A65400
+B3D4537E93010A9513E119EFA5D9E306716BA0F53BB93531B93066EFA7A7D9EA89F3F59F
+6C0DAB3A060A7406697509443A1976EF9E9B0DE710ED95B762E2279F2326266FC57DC2EA
+082D81139FC964C69E289A1D55A026D695DF57AE3A719803DA3945368B326F146146D253
+A3FCEE4DFAB2442FE023526EA17B166F014971A6A15F9DDF0F8C66A8FFC56C97E3CD9175
+DD0E56A3578F3C7590B2BA4CF71F8F8966F366847D379699F3C570A57F538148F8744DE8
+D0324A9DAFADE833AB3408116F4B823340E5FB78B80FE06F94CC74652F51DDFF507C8A91
+C172087CE99A3711BF9350C508F60F1005B22189348480FFE5B079468F475C619A4FF90A
+7D49EEE9607CCC7824F8DC99255DC26BE1BD08642BB5531355A95031BE4EF553CBF64B20
+D056F0A950932BD60C8955F77F6300B1DFDCE81978CA3925E98E8ABD0B94C95109CD562E
+59D63727FB333A9FA60B80A7C6CF961B215006833AE7FF182F4842990248A6DDC12E49A2
+1FB96EDC7FD632BD45FC096FD70E40C6C230786D32E5A026D27C335C0DBDFACA3207451A
+08BE6C0D5733681A693BE9B098194E75136A5FC71981CF277312D5B6AEF76D85211E05DA
+CBFBFAB81A3CDDAE733AD4D7F88032B2E188DE4377DC94F82784BCBFB84FA9F6EAF02CD2
+ADCC7EAA4C2938304B09E3FFDCF4A00662365D6E9C9E6211B97EE3442324E54750CB022D
+707A50D9CF1B2FC35C49F459B4627B5F0BFED666460FCFBD17A71EC693A09306545D2D1B
+9AB4441D3350CEAE1ADD94222464A3FD52BC27D0CA880837A577F52AC1E0B0A224FB2BBD
+E5DF9BB1DC11C06ABA8B4F164202D3C6A616906D21B433097D492AD3CED29EB52BC9944B
+2BE3B92DBF1E8220302FF832AFFB4E9581979D11E6E2775E92FC83FD02208F0A7420E158
+EAA6F959D4EAF5B52EF47A203CF0F0BEAAED8A108E72A18D3F630ADC2E762088C1A0C45B
+5A8D84FB810AA40C4FF3FF30F6E263BA1C6A26DDC3D5E91704724CF1243E8508035E8EB6
+37BA6F5ED49E3203403E8B49592F9066A549319DDE7E726FB422941E654F3F8E817170ED
+0355A04B59C710185BC3E070C2DB3C4B8D3737296AF12DDB4AE0DE98E9CBBAA3C94293DE
+379894F965E45B73D49D227F48CBF8F0FC11E6CBC8E317B4D8CF728E362164AC9C8D15B7
+FF56BF07EF22D668D7903C1CF59A89F465CC25A30F2B264131498FD2581E9CC44EED023F
+80262EAAE5E8AE4E9647BF41547ED527769A8BAD4E0A7591FB920070D8BB70C6A2DAFB89
+664DD16C40B8DA14EB77B5AD3C436769E35358EFA1C2C6FBCF2C38AA69557126375DA89B
+37485868785C9FF2CFB66CC7CE77F743306A4FE371E075E0500D82DF776BC75BD33B65E2
+CAA8791CA1F45BD750CE5ECB3AD8AA770DCE9025A557626F5AE5BBD0FDEB1F875D54525E
+D3E1640D96D8BDFC37B163EE82244FBA905CA5A084AA10824FDBB6E05E6DA8D97716E8AB
+04EE897E1FFD819C8F3AA212D373EC440E6E669F539D86BA9C0BE34A9F4A3A7C62F85C22
+CE00453CCCB9A528AE7D5EEF829CC43590E01187EFDCC90D225CC57623E4320F38EDE938
+E33C050BDCC75BF8AA5492D2C9621E8E5D6CBD53FCD510976483FC91C669111B8CD010AA
+801F61CE3178B56F50285BA301BDF9802ACE557204446319655B26CA3611048EE6F06FB9
+BFB296F4DB1910E7FBD56A76333DC33F0C1A15F9F920564159C6755755A79583947FA7AB
+52C6FA6AEACD607D087A7D636FB637A113F76F6A9A7FB46DE19E88C8A8ABC206D865BA9E
+6CF01BD10B3B40EA1F310CAD0954C344961D7CD4882AD4F704293B53B48AE52B9CA34859
+22FBEA7A9CD25AF44EDA037103481C63E24987D9361BCE7E92EE1A85CC2D9349C65C068F
+C8A3A16FC7C4809DCADF8D6F80856B0A3E511ED958D37329632C1B77B30E4AA00CEF2C77
+BA5B12457FDB165573AE970472EC4A0644B72A22F6EE22E2CB8DD87EF6F6AC6ACDC0DD99
+23CFCFBE1897BFC9969B5C126FDA64DD36A2B7DC9BA724BF4F24B7B019F2B0CA096C0C17
+45DD70F511073F091C3F5F42B698DF42BA462D7EFE38D5598F7081C20B549C486C809B94
+60E3B8FE7C7933829C3869246BE47851D268AA0DA563F296608E3C75528A8ABD8D710C12
+72A29669D925A91B7ADC3A20D020EB46C8D4F4047BB269CD4EB3EA17C684563871A52D48
+C2978CB031963FEC3E4AEE98C053F3D58F58F7C24C8338F329D1D39784ACA3C156A4DA78
+C4D3AA9F2A21AD087384C3B68B9E169916C3B54F45CC1F2824FEBF57519C9887ABF03718
+F85A117920601F650BB6C05A19E4EA71CEC8FCA086B6ACE40EAF196DC06662D209EFDC46
+0E9EF893838608C9B81C9E011009349AE5E93A243BBD0A399FF6490F79632F9AD98AB110
+9137DEB6CD633DED4B6570D7E9CE67DDA342834ECBBEFB338559F2A591DFC0B12FD95E9E
+FF36AA89B32278C6502051940DE488D92B46D3ABC1910E307B06D86CB0C6B8C4BA8999F9
+C0D47B047E7C1DF1272812903C113A97C4E536BEF68FA136E20701124AAD16F857E6A536
+B3786D65B620B2E40659445AD9CDAA98FF1277BAF717113527EBAD012180D091DB59B871
+675FAAA5ADAC6EFD34964269D4B6DD72BB86F1A99AFC33F321421CD3FEBABA2B9C596BD6
+DE63160666E3E0B2519D9B9202A68723A6964155B8B1608880C0AEA2EDF9AFE99D5CD079
+B8663F795DDF92A682C2CBA14F5F27081BCA25188CC612B7DB95962DC9589C7AEB0481D0
+7494A5A53D42452CE70DCE0C2082190A92B713DA39BA7C96E82BA65CAA46EAE8EDFED70F
+4AC48743B532619565C6FB982F3901BF6773F870E75DCE3C0A12F6A9CE8D278B2144F30F
+6A33B08F660744D4383A32B49E641DDC5AA338F4876009CCDACF9E34E10FBCA9B6080FE0
+3ACEC6415C8F010C67BDDFE4C4A83A193DE5C8F76F3CD78CF50CF30299FF23E5DEB8B760
+C12D9DCC984840074682FDB768C8D404510AB35ED20E923EC09ABD877673C4F9567ADCA7
+CF80BCBC99FD5F292D053DA975C57A4535E872D8226D83EA82FC0A4AE1C39CCE5D0F9655
+288EBECC04E820B817ED74B5DC90F13729007416A4272267AD43C13ACBDC9320C9E1EDA9
+1ECF4D9FA6F85D029638B974203FBDA9C516302B1A4DD843C231D5B3B1B1EB27074FD917
+DD43F22C453E4CBFAB3A25FCAA6AFEA19945C92BB8FAFD1C321EAF958C1970182C337D26
+7C5CB42F758B9138A43D58483B9C3AB9FB6E1ED0C34487FDB229A46EC6202CEF21309C86
+E82FC7C6A2AAB622C530388841D0783E898E345AFE5086B0948AE0D4E5604F9FC8DBE1E5
+310666078624E0D81E441FE22D6F8921D044375BBACDF7EEC54B663594807888BD456229
+DE14BECB4B9DC510AD0314E5212358D275E279CBAA9F6F05A00AF218971637506BCE2303
+9A5134DDD10D5CCD70CFA728252281921671E1685220D2465D52B2E6FE5F1BD0DA7AE82D
+8FCDBE493FCDB47097EDEFC1A0DA3BE5B1F536C537FBAD65C25A9665DE753D4E0FEA4867
+FDE6218330B00056051AA23287C8E7EA0A44E0AE3BA261B3BA502D771CD35897642EF180
+B5752BAFAFECAD913D1AD46C1624B3563408E900BEA4802D39188DACF112518121D76D8C
+B2085054DA1B797D665952466565608A3A4EEA582265CFB24C8ABC272C54C595802FEE8E
+D2CE55A53AB7BF4C42CBEB03529CAD7E340128C305466C94B22D50CD2A9A2D1D7375B488
+D9B9AB9CDDCF1AF0CDE75DF627DCB8BC139F7056FFC6FD5126B8DFB8FC327FF20C1C3233
+A808D73874603AEA395E592904B46773D455EF311090B7A9B2069E0748F4F8DD3BD5B578
+1D4302607B4C18636EBE5A23CD0ACEEAAD3564259CD290E721D971382F43CF6C50DFBB90
+341FC45248635C32096E9BF2F5E771B6A1DB8855664D114E8DEA215E8CD5CD130A99122A
+33811590C91B5A69CC6D9DD11555CED19D532FD06547EA318F82C1F63816B8299D4D4CF9
+B956246A018D7F67B240F3A97F463BE79CA6E0D155C6309749C57F8023219CA9671790FF
+9E17DD756E33A640F6E8A32A842C6E7D65029865B565D928C58B3BF794A6DCC5C680223B
+7786DD1D9E1B0E9A1044FCEC5CF30085BCB464A8BA9E34651BA7A685D916A98656B6EAA9
+712297183E4F0EBCD3AE634B60BC279E4F95D732283B340C6859F4155A21E9C7AAC252DB
+9BAC9B9F88B73185AE3EFFD193AEB805DEAE5012D32E297957AD00A78128AF3F8FA6E24B
+D0BF15EED5B6E1AADC1828BD444DE1BEFF8F706B84D5B78777088D5AAEB4C0474B33DE27
+623A5EE54063BF1D607622DFC027B5D0ABA7E7675FA5584A8AAC4B6A8A3145A3BF7F5EFC
+040A6CE8091EAD6A6E2E0C748768C3033D37212F9946A1E7459DB14828858779B1C98F49
+C9980EA28029CC61F449F136728BAAD2FDED7CC252C8C02C6F122460CEBE8E153B3D76FD
+BCF3D62DBD62F50D7DCE6DB5CAADC32745310B36E5BB9EA50C44CB7525B2199A23F729C5
+7BE9358B404F08F38B78ECC14A3B69CCD832C89B685F3EFD1639225EA08D089AD5C0CFFD
+19DD84A394D1D2C40494C10886A95CEC45C7FF01F19B0D368B50B7072855F80E65B6C27E
+C19C46DBC2507EBB8BC657E366611F04ABCF2BBC35E57553C0D4F679AA9DFE7BC5F01CB5
+0D1F2F02AF2AA8AC2DD7653D39C5EB8520DC5105CF4528E64FE89760DA09A9E17BB93036
+7F8B768334FC8C9D18149AB593DA762BB77B93F9EA68785DD781FAD47B6D224DBBB9E742
+C3EA3FAFFB734CAD0AD5EDAB689DFA07718A8173F444E81018F5BE3C3498B2EF86BC5E34
+CFB813DA94FC948E5DFB398B61EBC946DED0BE6FAD89C8D25C3668DE0B1E96D5F1C8B264
+7EA7CAA5FF457D83B5E1E13971F090B59C5B81BC6012BB3F603EA9E52DE8B5E1A837DD63
+BEA465B058E09681BE8BAD654B5437E02B453331C7FEFDFE88BBAE14D6F18734BC5EA9ED
+0FF905CD9569C5E6A21DAF134D5D13D0AFCB72F5ABA0A4DCB35BE53E22E5B38DB15BB9F2
+EEC17340437772A6ED69A40241BD478F30994E37C2406AB237E0FB41513B80E03C6535C3
+1482C4D3F1B4D9DF50DDC54A19D54DC1A3FDF4FFFF09A583A3F12AF1CC08263124A3EE21
+BA4D4DFDF8D45BC6AC89FE0F5C5B9B603A4A74A5C4987B12B267FFA27C3984B3E17DE91E
+330423D40FF72024ADDE59AB0F926C60CEE7BDE88965AD318143BDE551D08757D92F95B2
+6833288A6AEEF5F4529E3DB04DECAD47FFF38AE1ECC86B30B7F6DE4EEA67E71CD10164B2
+C20909CE5078E183637526657416F5973A67344A7A3CEF79CBB388D781BA77EC416903C6
+54D25188F5829E6FFFCBE768E134B53A2CF29EEC6702F3A1D83C616B11BE2D34E69E2002
+92CC8AC49291360F2FFD33A50BD775E6723F37782E90A4C952CC22F3F79058BE112DF4E5
+398DD99ABF059CCE55CC70B3C9D8D5462238A8BC7BF4ED4A2A3937A708F0BFF3CB2B6A60
+E33A1BD5C55448ED2529CA987E1C78CD90D251CF69F49935AE8521AB300B79A2B2DCCAA9
+2DA83544981768C63A0FC9722DFFF3E870CE55EFD23CDC9FF8648D2B7B660F13D67AEA36
+325E42B4F7234AA20586A7B4BC3F2E14D8C6BFBEFA455935C1D9ED4D43B3FF4C9A92E5D8
+A6EEB7B483D222E03049DF779A91A8DD1828129F9FDA14DFBCCE2AB7D9906689F4E25B03
+5EB6B416A874B11A74D09F44FC0B98C1AC61DF8D3AF33E4C0040DF165D6143BF6D9B24AC
+20BD16EC4C80D7C3DDB85DC5C03B2C1A130B4E637F59FD0C414C5EFF5B7A7FA287B01E86
+711FAB22BA39AC638C5F799BC1C4B95280567A578957833604CBA0017E87F1D59114D9F2
+17C6C8B7C35322C24C291800B0AC29264697631F199648BD17246E4255E1CCD5EFB45343
+1DD7298637C72F52E1CAA72F0A27344E2281C9224E6CC57CFEB56F3CCF67E9B1EF13A804
+0982B2556E3C8E398BD3EB1706C912325278503D0E2DDB45F1C772AB02E99D6B5C11B9FA
+E64AC4A50E911B7354EC7EDE37F5DD78EC40D32A98C9D3165F4891184EA1D81A078E479E
+778129ACD5CDA38596FE96751A1FC9FB4E2194D17871C0C204C733DB83C075957EE08327
+4489F51E544D111A85AB3D32E6E3824EF385CC1834EF40CA075B7B5A4ECE88966CFBEA51
+BDADCA1911EA699092100EE9F48A61D52A23BF2F922AAB888203D0D77FC976841965E84F
+5C38EF4FB3115D3EFC3B0803D858F0F56BA9A37B877C3117C911651CCEB17B62C72F238F
+20E16AFE0A257155DC002130AFD22A5CA4BC5F5DF625D586BC32CEB217075ECC0BDDF584
+1B02DF2FFC47EE121EDEDA23A0399C289C919602E519B0DFEB8DE356EE8396FE040B9AAA
+3C2D1B540EC57DD7AAAC11D1DF44869F6CCD87524CE44B604ABA2D86A53D68B06B394257
+F2D07E952047F74FC7871323B9563BAD71A7760072725413EA6FCB9A5BDDD76CC12D742A
+2BA2F2934C9D81F3E81293E9712D29E03077CE3DC1FEE1AC3CD434BC09A1AE76761B9D0F
+309A0B556905940A83326F71851D1A66651E93704DDF0A371252D598F40E54676994F1DF
+D565ECA1941B083203C1872C375FB69700C59E2DFA9BAC8A0824866FB91AFC58DB34A41A
+62762249320F341EB2D9901BDE538DB61289F0E631BD6DAC96D72E9E9E2DA10A67024B78
+1188920475DF014FC9ABC73256F6B8BBA2DC6B3CE8C0B06FA0211E691D0CE0C6A41454D1
+C0E5F0A0B05C93201BFFAE40DC84A9B7374E99EC8D35B2C688683DFB0B0BB324E6CBB58A
+9729B95260DB051571164B501D12BDCBBF450B488A8918D2474974BA465631A206304D19
+04896A22D064B06481CBB462F5D54B8F5401A80C84599E096DA1FE1D3D74DE3833A52189
+29367B986FC473C2FDACE8FBF0EB74575F767C9B32556885F696977EC2D9AABF14F81EDA
+554B1AFEA88A22C2836C7D539D69B842DD12BEDA381A08C774884530E63F7D570D83D338
+BF7F323EFE2926F698F46FDE34FE00A2B69294984B2E243F7771F0895D6208613CCF4A5E
+9265255EB21B83363158FE462467AD356308FD6CE4063DE60694BD890C71FC4277476E57
+C2072F939AE0568D3D4951141B87CE9F2A6BC673EE486FAAEBA72F3996C5396DB408D411
+7CDFED7D8EC465080E51D63C494806BF56F2D401270A7E6C69CBC91F56DB8693E272E287
+A8F9ED13DB1CD4A19ACAEAF64A40DA59FBB8441610125CCE7093A832E7E24433A51CACA4
+9E2BCFB0B2A858BFBA3923C538C39C543A3A8D29EB8F8D4E8930F77E0D86B709C6A226A6
+83F5D3CE7B5A0FF7EF6133E8838D4DDE68668ADB29E45FE7586392B9298F5AC62D164F20
+C79FA6CB9E9757AE7D0B35174A991FF5C0D83A651890521DFB7972BEED6AA09BC946F5F9
+50600B883F83FCAD6FBE7D9DFFE231A41D0B7649D734367A616D0AA8638D4851C9B24407
+B994BA5CE9A634D748259470FCFE5BB42AC7CC065CD2E51416503C3B1D7CE9AF437CAB4B
+8CADE5CD586D09542DDF86AC7B6F3F466C3CA911C9BF6C8ACF58E9B1BC7211A9057C24AB
+97F2886F783B28C2420DB7F0A7134E17F722DD8666BFBD7C1D570EB220AF20B8DD67E203
+AE54032F2959A05E6E7686CE3AB315D428A06FC6B2F6F7CCBB0AED544F8AA86E9BFF2FE1
+3DFDC0D0B81A403D766E31698F88ED44AA4E613E020AC673B57E87A7B0C491F048E18870
+7B0A2F61A8A0B86D4C71FB078D16050B0097B75644306ADAF4F57D198793DFDECA9C0931
+6CD333ED441AF149DEB53A6F43DACC841B996C35FB89C24946880C4AE663078A9A0F8CD4
+702F54CC0CBF4AAC9D821B919BCFD557B626E66180248F25ABC99C55E02F1418290CE3CA
+C7C62D415B7D8AD31F54847DE34D060E783C7ABC369B5B7195CF7F06CCF7DF2F7D1E55E6
+4E07E63F0278AF5FA4D287DE18C0BEA455685099616F9A444C768DB6952FC902F28064F1
+1FD11EF0125F00FA50A3E635F8F0C3DB39F0719F79411BD456175613E754E0D454494E19
+04404C6D5E39A10613BFF73FE8BDCF9812ED0201A1AAAF7E2A0DE8572E5E9068C6B40435
+D0F5C08E5CB8A0EA11EC0EAD8C326DA67F48109A2BF192AFADEC8E9C203D7922E653092B
+B68C822CE631E65C80C2F6BEC9A0A1D4AD3D615A72759D7280A9BDF27F35A7421912324F
+D929F92E373B3D78E035EC29C615A1D9D26EFEE76EB4C4CE6A0C49F6FECF258072E6F595
+A74F06F9C3D81F807742E81C33008734208FCE4409DBB26CCFC12A7C5EF07451BAD289C4
+8AAD85DA6D47162E66E78AFBA98B9C30813452B922DD69E2545051C96835980CD09AAC32
+41B0914E517E16425D86E95483D6B4FA4EC9201BB318DF0915B269B3014DB75B9DEB9C85
+AEF68B9BAA419A21F43987A3F5B38804432F41E8B85174C2903523BD8D617B91D349AFCA
+EAF59B08D84A9828B060556A466EF425566FAE7FFD5232A66688A88A62AEBBDDE2A929A0
+C4C4D6EBBD8C17C6B6EEE46A094A0361A1CA15B504279CAC689AB68AABADED5059998096
+31786D81E2000366C57E71ED2A2073BA41B68D614DEFB48000DA3A99B752E816D1ACC0D2
+D6E515F628B80150A9DE677BA5EDAEDF381AE63047867D26576708999553A00204362A0E
+B1B23829678E398562E2A3857FD716B8EC58A041E43168C7FD1306EB00AF2230241C9A03
+5F3E45FCD7C7504B1210604DEAE9C1C0EC9F2F29A68996A2EC5369B43BEA1D66BD772800
+892B09CCE1585A12E39259F11BF1DEA921918922456ED85D9053FA76BC7CAF2F32475B94
+7DE813285CF64BBC35212815E4F6B35224EF52741CFE382A0833260F6AF4527C44C94BEA
+C63154EAACFD1988513A94BED65F52E7314BF9192A6459D717AF617FA57633042129B2CE
+221FF28150A09C68066FEB72C499A82982E215F7C7126EA2EB26F8441FCF20B2CAF6E0BF
+58118D8B9213E245C9592F8DCCCBBF6BAF57872626C12523D31E4200814B38518D15DC00
+17FF94423A62C985A8E836FE04668F9C82A6549B36FC294580A852D8C17B0D5584213D3C
+503EAED3368AE342961633D49AD82A0885A4A18FFAB8CCC5A9A3056838DA88A7DD541988
+B8534AA2D76A33C7B8F68201D6F413E55F40C061D423005682972A0015687950804ED8FD
+9DE156A6D46C2D69FA10287E2CAD4C7B26BFF7B3BB7B747B6D00E94A99BF63522A735B0D
+815B36F0FF02797257A63786A7ADC369737D1DEE20DBD21A4B5B5E4B8566036F71B7485F
+6CBC99791352DF3658502A975C50E68B531329C007F02EF7D2B96AA42807170F36DA3B88
+A12CEDF2BC49BF9482F68E3900036474E2905938696F47090AE894B6D07513E8A3FC187C
+657E2430918D43C001E1F618A320887760C90EAB0793C87B54AA17B80C73B7C8E66F1FD7
+F81E9589790779A270A71EB07F02F1F3794E72AA7E8E1AC074331344FF38E2069D3E829C
+6ABE275F5D3EE720FC29C52A327395CDF5A36E2B5B4EBB05C5E7E85F075C264A9E8D0FC8
+181F14E58180B012D7BF3BEA3CD14B20A0E4F6570E430EDEBAC4AB4A8B578B9362DAD995
+654BAD7ED1C091DFDECCCD5828B34FD7292DB70972E57A5B32126ED7B1C43C77FCCCBAE2
+50EC40CFDFF10AE0CA649AB0A6535B7B54C8345A2E756C46E4117EBC7BB0A6F2F591AF58
+3BA2DE4175ED66A0F66DB5C64F6B4FDDBF77F5C837CDEBFFA04CA544B4B83ECC05DA425B
+F4AAF6ED50F40E5B708830DA77C5EB90F49F074C2691AA891BBC339BDA52787C1EACFE2B
+C7F844CCB785C031A46A4BBAB8774DE404D47B7D3782887E6BA7BA74935EFA72CCECFCC8
+D11E57E20FAC3D439777D6376282AB2B9F3C8F2D0365A05E18F35032148751402F813EE1
+6A4180F3A5B16F28A4621C0D23CBF5C79BDDADA0CEAF11BC4B3015CDFA43C501887A5A67
+9A694B88ABF67EF1E61F01357991C7F9FC9DB628F5C2FAC0A1ED56957F8A09C2B9594DEE
+94A28DBE9002D99425594E868017C9EEF82A3BD182F488D99604890AEB22615FA5246FA9
+447D6A029C73246D8A36EFE03909BF4E77FD3166072EE0E216577FF22CF87958F9B63202
+9C5C18A28AAD09A8B8B7F9A45CBB30FA3EF55EC09347C3BF14E0789F02411BED366D249A
+E4C8AF98201992AAD85C66CEE2F6AEA0BBAC3038FC2A244A1B8B0C9CFEE3AFB4C112CE5C
+F38447FB91114C7694F8CA1B7AF3E37F21C6170BAF1739022FDA38AFC0234C80ADEE4D32
+6AA466A930C01A3E76605B429897ABAB6C55FEFF8A2B01B0750B0561B8D47AFCF487B207
+CA0400ED6D49FF060B1A4799C05C8AE88EEAB848B1957515D332E3B63095FD28A4FA4A78
+F13DA9EC989BC666E7E1623A06FA35910778D30F1241F24B1838E772C8C8B034CB6E082D
+1A09FF43AC00D761F4D334498E7123366281934C56224B10F863AF63B1EF6F0BE4AB28B7
+6846F27798C4B80A5F0798982A4C31BF6A35DDDA02A968DB0159DF2207C84D9F4E733B2A
+11ED082986363E44B6BEA9F731B388A0019A3DF2E21206B65387D151A6F76ED65E2646D6
+352C310B693E5B60F19CF256D5652DCC42C9A13FB84291F87D930059A30C57146F39056E
+5B04DB6DA256B1AF3B0B422A5378207440CF4A8E4E9D4A3E24C1B81FEFDC597DCCD7F37A
+A972675CC81ADF8E757771A81EB8632E40DB711A4BE4A9D7168891EDC8C47D864EC294B5
+9494CF5177698BEC69613A16E49EF49165FEE4B25DF8552189040F5E2A2FCEBFEF455E1B
+0A50E0A69A9AD6A4ED28A5DC0B24BC58A28AB7788B06BFAB2F71B46DF65B812BB422B67D
+5C77A132FBF216A4444016A1D8FD04AA2AD8319AD8A0BB5C18C730CE5F43F7535A297577
+2EA4E2E726BD86F6919662DDAD098BC1E1B5A21DBCF3CB5B8EC19D1B40FE3A479549FDBB
+B38602E92A3C755BDFE1C42662DC0DABC4D7600ECD29A619CFD46EF7FD042B7152058A8F
+801CC958039D02EDBDE335FE35CD9D73C24FAAA6912F79ED5D5A0263BA801F91220797C9
+BB42503C9EEC0E8F1CB0803A6BF76FAF27FC4F103D7D986B89C1D29F5E409CB6E9425AA1
+86CA0F53A101FB77F358C59CB663B34E36AE25DD664E37093B4B586E5505BBD56831F1EC
+B57F5CAA4702583EA1832045E29228C4EC894405CE23AED2A0D92922DFC59814A38EEAFD
+20CA8F0996DDD5D38DB8C70F2524457A8D327A4650C1F2F5E28AD97AD74799C946243575
+46B4924923E8A7967958E4AD0D3E4CE66821531C48667BBDDF4EEFB24BEA10B605DFBCC4
+B76C407F8779A197E0389DF85AF9D34371A5758048005B8A2D00606652C818F57BCCBD39
+205466E77537DB45C42FD0A94B0BED07F18CAEFD7A9AFD94AA326626F86BBFFB4997488A
+EC05823B2A30D6B2828864EBA12BD7C03FBC2FDF1E7296654343D8B1F6579CFFAE28D8FF
+CC6325263F6FA74BC8E8FFF93D10F099C966C872A0C5D1F69833130E431AD5947284D810
+204129E70106FAEE596A16507451AF4C77F4022EFB1488CAEBC249EA681C08501664295E
+971D0908F2A30A4052A1A3D67A0D281CF2B53E07899AF68E3593348CCEA5061CDE798E43
+4B52AFCD5509B22A40E26FB2A989CB28D636DE8FCC860B1A971A4D244E44419FFA86889B
+F354367D8E6DF015234C11174557BE41BD3391686303DA1AD6F86738859CBE0E526FD795
+1B37FF54EDF1A093F838BC0D176DC6356EE705FB241658AC5CA5788B781E9A0E616B56B9
+F11209CEEDD357D9D9F0AE9CA471C511EE70F5C7842867E7A97A5ABEF55DDBD70F829D5A
+D3DF72C30FFDCD7DC5C2E2F6DE843424922AB927F825BAF5B3FE66E4AE07CF555C6B00A5
+6D0A121F15DC87A8A641E9027A59D622962E9C88CA0A821DC43637DEA7901587CBE201D1
+CBB3B155AC9BE74711BC14E54B8EBA8017448067BFA465E90A82A2ED104AC70DD5479DCA
+B1B718F39D99A58DC7C432F2C0EA8ED57880A8ED1868E19C1572B7F95296B47DDF955580
+7B9D70C94DF1528C156D166FD0FD161555EF91D39405A0EDF49A3C84A5D4A927273C24A1
+9ED5D53C2EB08F7AD885527BC23F855992C7CFDA3B3C57F7783570E0F5C8D09F5B5BE0B5
+C65F8E6F22881271BBAB67C3F4E04D9F2868347D8D70D0162AB1D55F8D2B1B80F8E5765C
+FBF205978FA7D6C232A9FEEF4D72D4AC2D88EC8B7568417DD4B4E5F3A780BCDA447ACCA1
+7638F60463610D08D196E31714956C9AEB5D46331D36C159C4563B3932BCF3B1BE46A60F
+07E6485170939EC3DE156A6222DF91A62F603427E2D9CCF6486F74B2E9C52F5F9212EB01
+697CA4FD3AF92CC337EFDE606A5F3A233BAB631712992A2C26B6E96ED699091E7B689F87
+EFEAFFB34DF6412AF5126A51BB7B86D9B8989C12063B88C44365526F3737AC422C4A258B
+724A893FF6C4665F6C1E0C19791CDF4590CB1656E29DCC1B28E6C213B4D396C74FF54B7D
+7E42D1FC704A091413CBCC47DE3B5FCE62E7A0BE86C30E285B8E69960460BB5468BF3F50
+8A639E16126C81A381792ABBC6D8AAAA6D9FF2488EBB29C6BDCF83D4362EEC341CFF1873
+BFD1093B564FAF22AD497A8F40DCB3A63ED514A5C386F50DAD74715B2C6CCE6FFE2EA723
+DED2C91F2F82B33D4D39FBB8DD842235EC5D700492FA1F7EBC1F40072321A297223ADB42
+332E0D04F95E2C6C018FE53282B0F753CDD8DECC04B46BDFFF28FF48B865880C032C78B1
+F502C2A4E0DC77BD5AD93D93964DF2EF5FBEA964B4DC0866EF5F2D7FD848C474EC19EE5F
+C0A18A44FCA85AA348A8BE9124D64E23296DF21B20FF3D71A9080801F90956FA5E527202
+846B657593DC908BB3D978E10CEEC6AA7381EFA2418EBC5B9691EC829BEE7328FF4152C7
+7BA34ED5EA11D04386DCEF39CFDF040CB0AEE8642DD9F34EDDFF692670C09228007491AA
+090EB336FA09D383BB1DB1576FFF857AFF42510C55F03A3B2C858BF66CA029B23D18087B
+C76A166C09BC50C8DAD3681F58B0FD4149E8F6E731618008FAB0EE09446C7068BDD36D64
+84546D3D5081DE7478E8B4C3DC01F09AA4286E0DF05CC242088273CEB04DFB666D7AC6FD
+EC74F6083ACCE99C78A5987987A6B0644ED237DBA93B3BDB4BBE716308A1ED310B8C101F
+828F0F470174905398D68D04AEC4F99D770D0513CDA22A88DD1D63D076C718302493529E
+57E5703528F3FEA43112C5F999342387862675C3889782F28D8EEFCBFEDF46211AF5DB59
+1F812CD11E37C489D0B8647F29937D6F7B62F4432F59B9C480D638804FD80F5807A1999A
+95B6FC64DD73A0F8816CB54A8908313C956F3F422DDAEEE77D478E2AF138001D94DD9C1E
+AE7D6550CBFFCD476A3D8B678007CE04D5EA96A11377323D6E67124CCF583339705B143F
+9340549FE5F5607C9F0EEDEB8548099921DEBC1592CAB0FB93A34D8F271131B3D25A5B94
+0DCE536F6F4C0801A3BC19D8F68011AD2C34A814D3C6FCD2625803C119A3612ED810F5D5
+316FAD5FCC1F80BB7EF66784669E77D2D7150817FDE743A02181FF129A5E74C7441EDB4B
+034575B34BDA1E14A5761CB5D136B2BFADDB7DC77B145AB6694B6046644D783C3EDFFD25
+2BDB52E7D7C98C0BBED7A7F7AB3913D0BD8A16E37230D38C60BFDFAE78953D94B1F4E283
+592A0EF01227BA6E706C0B873C0A4542758233BEC078B792AB0DC679D45C39C41BC24B00
+E0E68C1796125D0E61FD5273AE3B8B500FFC813B951CB54BE9C975F90FDD5273A8F7B977
+B011BE43E03BF8D524776B3F49ED31AA7FE719E902E4D9C60F9561896E9FBB9006C7793A
+00277C8B70430FBE7622ABAF5D4AF1157AA3BCB36181F24B4B9943182228D1E07CAD4C97
+F9986D899C66F93DBCE517DD7B62261C4E5CDF4EA7EB159BEDF515CE80F557CB0CDAB576
+A09D35F2E7DEAE4A2F999372E02B100FC1A4AC3DE2FAD9E8EEF65BFD824C4108C88EC443
+098F0901C6608660AD3490D6E574D5112B516756CC8A5ED40AAAF64E320A5125A23532AC
+F2199F3D0B3C0034678873B11A34F18A0479BE3E5F36E0F4AC33CB37FC2A811E71AD8257
+F924536B9E3234838F7074F03E3563702D7028A55A7CD889D8436DB527C2A6B0491CB4B8
+2E8D80129EC3B244325B4036FA0C0BBA15B32B30D3390E6B8781E5E25F416CA8442BBADA
+F75A3F30A78801AC69D6731E08E9704E822785F3DC89B1CE900C9FDA3D613D7788FBE2A9
+16644E041B5C0CFE139649EE90C3B303562B8BF5559B13188F45185A6E2846494BA1ACD1
+F46E31467205C387EA13E3CB77168B0B5FC4FD4E8A993E13E6488E04D084BAC37E53E7FB
+E6EDDF1A110C25AD19B63B08EA99943257802C5E30CBEA4DA44CBDF6B65F8A75D75BBE25
+F47258B88D27EAECD422BFE65E09366AF41CD8C4565E5A5CFCDB8E26D8BB638B71D6A012
+866ED76CAEC69D36E1A258934B76468DC33B78899973DFE955399A7D6D0A284806BD49FA
+A660ED918D3640F45B9216312183D948CB388F283121CBCBB2792FB0ABBEF7487D4923F6
+949FC29C2F9B86ABC81A12D3FDF287A090C8BACBEE1FD79FA60BE27960CE9AD095E04758
+8FA1E9862720FB7C4C1A8C7400F087CF44AF91451E5AFD52B819279AD9208BDBC28A0DC1
+5440EAD57ADCFA30CABC01AA395F4D75037F7D8EB1E37805C34BC099FB152939D0D1C149
+9E223453AFA220880326A38C347DF67CAF27824DCAEB5EF09DABC2232C1F0040BE037CFB
+DAB016FC9C96E63EC978D553F5968FB5B46047C1A09E16F90F9529C3C89F64B76C790178
+3A3DCADC80F902BCBBB8F2EE77CFC618C074A2A5CDE16E0620868D9032F83E820CD6A889
+844C58279BD077249F1ACB7491ECBABD9FDFF3310694B2C20CD382A3F99FA163C611C2BA
+9AD52AA560646B427D00BE58C2B3D7443D7AA8C2171FB61BD12E2A030AE8A60ED5645BF8
+9872DA73E7A5769915B7F282E87CA30646A13915070AF859A7D3D2E882E69EB290A28CBD
+0CAD27AEE9E0AED956DD4FF2094B262C967904CBC579825FAB57C4B7712F107525BD8A2C
+4964FE880B79341896BBB4163F3551AC723EBE646585244AF075FDDC1E55579138B5D395
+DF04208E4852668DE9B124923730FE950B18584C418CC398E15515B913A078CB23FECD9F
+7DCDB2A0C6E4ECACC6CC94D9502ADCBF40E0300BB0D9E4527BD12697EE0539302B1344D5
+835C81F531E34721855A74F992A70E505A057BC74B3D81E9795135B8FB67C836607C599E
+D2B97A4793DC9539C0E6B169D0B50C0530E1CBB482C8DE8F962FCF7733601644C32E6143
+B88CDBC9B5F084A19258A92DE5114429580F9255B97F890C299C3AF3FEC76E5327FB4A02
+EBC0B429C67B14D642B46ED2E9545B3E52A623D310234961AC775E3B374C522BA0E34F21
+E72510193B639B5497E1E5A822A39DE3163F49A9737421A49A986E14CC46173A3016AC87
+9060B91ECB5F2C40B788B6BB49B56D4D1C55A616B4EC50829927E303FA47158EC047F800
+41969301C9AE5EFF2A5CAAD0811CDD5EA44C36D3441BD130892C6C3E6C27AB38DA7BF332
+0013FA6A150833D0668465EFD7C33AAE25CF14379FDD73D9B2166140C9CE612D35C106B2
+5892A8F9CCDAC0E3AFFC1E4D59373F99A95CDD312C5069FC09CF11512AB2360652423DCE
+A0B09218D59CD1C0005BD8E4ECE56F35737480FD46AF3DFFFD04122FE5824D930678808C
+BA1EBAF92A9E1A4CE8A14952B4B00F7CA4CD5776516A84B9CF8AC9565373E3636DC0CFAD
+07F1626C184951FA314E8203BB3F59218C8585F66097258BF52C95293F40B17696BDEC49
+327C40D9B4C2197AA6D638EB0C77DFE525EE7FD6F5CA450DD390A11B9DEF2189E3B22CFF
+0D6BE437276D846A59571BD3130372619976E5A82E551172209AA98014AF1A7BAF81C9E1
+82602598DC306C6072D35CFDAC156045AF3BB2BD7FA9D9D41011F1E32E603AD35DD0A098
+9A1B49F9F05980618397F21FFA0C8D9078F4618DA03052EDFD45A773F5FE283515D74C13
+1B384C8A40ABA554FC4F375A5DC0D761BE958F763823221C5ADB9F4FBAEBB5ED1F9570BF
+8B7BCD48A10D21B14A3B085F75DAADDFFCA2F50E4BF9699DED3D0806CCBCD5A8FAD2F180
+ABD6C0A4EA2B2D5FDF751455F36459FDD63E3F6E6A90484894BB928FCF0B2F25679E0592
+0280FB69C65BDF9330DCB0CE77645CDE8A038F2C16A1405D47ED6105D06802C21B67FC29
+2744B35A5DB26F5811D6AF7768CFAD5944CA222565550D7EF9A94EF6026C0A76DAC71984
+965E31B256BA27F1D1A6EDA151F4DC35332703E3F5859B4156149135E4372CD68C73640C
+9765689AD87CA4514A4A7C7F1227A7DA5CE5D6F92FC634308B59B65AC7B044B75C8B5633
+65FEA34F179518BEBB1385BF3989CC0129E442CEA087BFDF89F8E6D9655A8F31679D95ED
+8BEE1952DEE72E009F8D08B7A94AF8C20F865BB631694F7316C118CA6B8EEE6873345882
+667F6A8FDCE85DC21E2F55CE08C9A98B38C5B8455318A96D026BB2574AD42F2B921B885D
+A6B24E306160BD099350856727B1C346A79857A74F4E5D4601724F190375A3614FF6BA7B
+AABBA90ED2C8B1475E923376737DA28E39064E2EF5E6D4426FCB184C4F26C049AA65E399
+F5BD1E9132295BF4F1FD6604740CE9D47B9F2F14D1159E8469C74EE37A29DA77C3C1532C
+7AA4FE11925012B5731644FB250ADB41FF72B58019160C9AB52A4D386FB5A47816ED5C6C
+D91F069B825740F114B5C2BEC62ADA53FFA614FDE04BD3FDF67027F7452A51AD48F3FCFF
+6F94BBE08F9A237055D50993B57512C1FD7D42810CAFAE0C506481A9D7C633040C3B4D08
+05E17E8590D15919E9BBE6B13B0238412F3A8EF64F78512DC26503CE63CA84C5260ED08F
+282CA1368A0E0E74E4223110A51C3F20E767EE1632BD4639CBE15A19A32976281D6D39AA
+EE402C327888A2DAB0ED201E38868C6852E21B72346A45F1930A00682181E2E58C75CC9C
+CA22359D421875DBA3B570124E3FD1585F2DA26BCEC1F23D5D3E1186A24ADB8CDD8686D4
+4824C720A4877DE72300ACAE92643B7BBA1D635930DA9D2E79D1C9A2EBAE4AD1BC97C92A
+7E6273515AB1814295D8F094FC5566E82A0A391EDD241A970DFE094C2D07759772EFFF1C
+738BE696D8A575D5F230519A9A4AD6985DF1094B5E65D35AFD38D1A054EAD9DC3EBA2645
+CF0EEF242F3F79F73D34F9796C973A581CE511B83669A866ADB2A7C811C3C58690A1D630
+02FF78981EAD9CDC827F1241B36947E9E3CF607A8905FAA25AF199D3A389A4D80BA231CD
+56C031BCF0FD74EC162525C4C88CED6EA5969AE4E5A34B6A5C87C3688DC1B3654FB30E25
+03C5C035203C22047DADBDB8151E5C3761A6EDF8E02973325FD8F89FCB741E61F9A57E23
+8419C8055A72890F4C96E164DB32FE4850FDBC776E84A9A2E66D3AED3126441CC834F13D
+FDC880FF0B5FC02DEA182EDB723747E806F78841334F583CF4311265CD0F1DE67A1A795D
+34487684370112BCA32586372C6FB82B19842C00CB09BF431A39E560756C1919765BCFD4
+47381BECCE3AA3296012FBC52E4567D7086F3F838DDCE23A1BDBBAD52F89FE8891821C75
+2B6FF309040AE1053701FA72229FE7D2E8AA2B8C7F29E0B2B97AE91E6FDF1A4E83EFBC4B
+97293A90BED6B99B8A6A2BC5A2050A3872938AF95080E0A36ABE4C2352DE3B4DDE124E73
+B607A0BB85B63168A3082E706000F5F4095CB97B1F5866E1DBE3F757F2679D24C2232395
+E37EA5F4572DB317C430FA9020FE20DD7E7DB6ED8D1C2AB3DDF4554657D2C67BD7FCF04F
+523B114E4BC63EB63EA9D0DC89781BA2435AC8268669C882E025D0B8A762B8E2FA0715A4
+92BAC7C2FBFF4E9C1649805B53B470D3B0871466F1FDAD0E50BD02ADE743C73B452A94B8
+168F13C82140ABE9B361695DB1C59DE43F4B1D67C3FA943D7CC113DF750F619564490213
+CE3A64754980372C3D2EF7371545D3F3EBDE6294A2CD42BD0DC3315D44FBE5380C39CA30
+A4AB6F8CCF16D9234410EE181682E7349D713AF815A68E322954FABDD2FC5983D3FF2294
+C6F9AC483F5376EC89B9BB338B391A846C272F8F3AFBEF3F0A65842C219086FA7AEE64D3
+C5D5116540E63BC1EBC6AC6CE8EBC711C974AC324A49FCDF13D564C1DE6C53B3CDBF31A5
+B2C11D875C53EF9312626F7CE982C868957ADC48EB06AD7AD88A92059D8B867749D3EC67
+BC97C8162AB712AC37983E917D2FC74AE7FFB8005C1B804C0E9831B5D14912008C6092CB
+E1EB6EEA5F16BDD1D58A41CB45140F0948766CCEEABE75CB820BA6C4B98CA26C3A0A5B18
+16C3985B56F7A9BA9E78D9501D648EA17A35AF03CACB7EB935801FA500B4FCF4B246AC3F
+B263A684ECFCC35103C99CE3FF9DA524E0EB2556F94C38DB0D8356BE1B4F3AB5D9B1B040
+EC03F0911B8C85F6AF966E9510E1EF15C8A2AB57C9747493F0DDFB580010E4A6344B6A44
+6EA2740A85F8EC85F4DF4BF3D711C7FB9AE87E358BA3140FA92F700484DF0981F93C074E
+5C5FF5CB2FD481D3B1642DCE474B0A6C31F0AF4064FACC53732C3E69ED779A517C8CA195
+6597FD3FF4F0BDD91D5AA0443916E50906D27187010E0E1AEC0B28B12B34F38428D93AC1
+114CF4267FB6E35EC4E2C998E0B23202A075FB948721344AD10B0E46EE7F27B6F2B221D1
+3B0E2C16DA1E17F331415DBCA87F2D9A84DFACF1D309E486112A10B2E5062E58386348EF
+6126F25BDFAE94ED743231F9CFAD687EC3E2BC32FE6540C17B5B37D3BF52059AA54177B9
+163135D0F39F667EB0AE7D48D5DDFD85B20D0FE65094AEBF89EA2B99D4DD4C5B97997816
+A4544DF5509A399AE5B98213D2343CCFE28BA908E2D3C01EA4FB161438AAAF18C008FC8E
+0B00BB9745EBC254439F49E92989C359AB16A5FE60936A41F5D9F88ABB9DB55F8CD2DF5E
+99445E76B69AC85278152EFAAC0377B1C3579181283A367896DA34E357A9CCDE6688B1F7
+A89EB48AA9DE5250CA012AA8B7E1C642F6492F637D38CF3E6E3FDF342C0EBE631FD34257
+91CBF620B3F1208C0A90C7591463BFF426CC46CE05F5C5750BD5F52BC8966D3C80521896
+DF3780228D03135641CD04A1F885173121B535C6EC743A0A88B0C6D44FA00222DB2A29F6
+81DD4984F0C4FCED16E5484034F65C99DFD6CB5E8AEB2D6BC09D3B0E058D925D38F8DD8D
+D0C85A9DDEBC226789E691840B1AFA6FE9ECA6F9CF1C97B809B3764124CF3B3C1E6F4E47
+48026E908E81F984CA637257584BA40BCC60B3FA9B2927F80EE0620045AED3FDE0E414AF
+F92E22933C090591377928B902374E3205DB72BB0A201D7BB4904DC8943FCFE8E75DD8EB
+C9F90FE852D0BC0D5C8B9A57FCCD1E525BF44111E110B3DA59DFA4D0C3CBE2D95E0A72EE
+078E58B039D69EC540BE86F966CF92583BD9B065057764A854997EE09B0AFE05C0248D44
+18F26B2ADFD42F797CAB878D059E3FE8D10FE21144AE83911404FEC9DDF8D2B483DC031F
+D256B576C23E8D3481E23FB052658713358EECC1C5FF2FCF1B862C35DCE998286B31ADA3
+0E395612B22D9B079ED3D37BEE74663BB89BB411DD3BD3687A134AD3C2A0315B470C4635
+ECE94DE29299CA690FA816D68796E41E62FB571152B209A1D54D571BA76839593AC45B10
+D27DEF9500F00E676DE8AB24C3E0E040A81873454D2EEAA077B9009A02FFBD5911576E4C
+7C38AEEBBE2A89C22E9A685A4C0EBC4CCD6F1247E03E8DF9E2B222AB6341BB920DEAD594
+4BFFF344541C0329F3BC56E92F8ED77807F287DDFB29381F5852E9C1DCEC4BD00E874D79
+4352477582178C4A8798B61EB86195A77D1C7BFC796CE7A7F59482D1B86BD0D067C50361
+09446A229FAABA5E8F6790F6F7EACC526B0E45AAE0B354A81FC27162DFEB926CF3D651D9
+1699804FA18A8B8BD108BE7F35A71D7F79334D065F331AB4E3AB98F8E653626CAA7FBF85
+6E4CD58360957606E55945BFD987AE54DAE45FD2D27107787E16FCFB515792BE9ED8D977
+7D31C47C726C047A500C1BBC3281245F173BFACCCF6D8FE432C406F53D91605B0A7935B7
+1CF091FB79FDD702901FB841CED082FE693807D62F0DCE46DBC99976A655026B09825EF7
+CEDB49124022D7670376001F807F36F1E0B29D5E53BF513D2E8521C6AD3C6D17884ACB01
+ED0EB1AA05D71D4BDE732A6ED61C6F41BB07EB32BC6677C2CC59615C8E3E74730F1D3B9D
+B697AD3188C71768191E86B91EF70F20CB2A07AEA249978C109BE3AB5D52F794BF4741E4
+96E12C9C084F42C600C958E5D7F8E26805C50EFFE394D61806ABAF63F99C09D0DA4322C6
+86D9B3AE8DCC0E09AC0D28E49FB3E74887B42FCB29ADE84F905E7D2FB5646A7270D6480E
+E7878E1B8BB5A02FCF5A6071FD3E43EF2FDBB536234A50F2F616FC5396C4D13CD67D2417
+575C4B8C8B5CFB9C17006862F6AEFE5E142FECA3F432404F4BBB0762BF17647DC56FB1DF
+B2767E4CD6FC4C99027799BCCDAEE607EA97DE5E4895BAE93DE88061FC38639CBB69C9E4
+F00942972EC9DF030362627376933F38DCAD1AF9A2A290024934AFC28A2EF531B04FC1B8
+0DADC281559D46546684FA54C1602E2BA3DC6ABB7D7375B54DA39B2C55DB98B12C7BC4AA
+07940EFF645351946F8A018F31FB93898830D5270AD72351056BA9BCE1FCEB0BFA59B09E
+90FD6A78885C389B9DBE09F4C38CE44FCEBDC0B51FA8AE3183BC2EF1B6D3ECB46E993D1D
+FEA806954459D3334F8934C249C8A6C29F6F5227BEDECA77E92A0BA5F6C62E8FA9ED6948
+BAD1330AAEBADF4C4E0E1EE5F1AAF51452E02E7682249AD94274C56185D5B8CDB9D31957
+588CA55DC053054E1A9B09091D7146F75E2357108D452A5151FF6E5CE8804C16557E449C
+9E8E2F3D03CEE6EEEA229F0C6A15FCAF1EED878AFBD7B4920D81B29F0468319B553C5D72
+4B93BEF77FEEE50AF8514BE006CA472F81F5C53FEFED03A2E29429DB8E1375BC0F714E45
+74446E818BF6239FFC2276A44ABD6833EA1700F404A8CA2146116083AC62E6426BCC1A42
+20366E69BDBC1D9ABC5A978237656D433B004485560F0107EAFAA993FDC1F88CB90F47B7
+C7FD3B1FE4EBA30FE9D6421F67BBDEADC1F523150A3544979C3325C0C97EE9F78C9743C7
+5F1923C1CC5037D9D016BF49DB0ED2D52AF4EBB241AD49E89BC3A9DE9A4B4937581DF388
+0F6D6D25DE9225E65C43FD7375A43FCE607F16DFE1BB8DB8FDF007BB0DD52A86C3005AF0
+73262E3C4FBEB490017717EE74B826715D4FF9AE10CB68414B5798115E1133B5B54D8D6D
+2F2A034C0A898F2E5471883D33A6BDA78C00FB59BCBCD0B3BA618EE51F35A8E3CADD04AD
+F646868F9FE308F94B7791DF8B624EC23B71171AD7E2070E718A1B417DF6C8AAD1D0479A
+9B363784D1D50CAA03464EA8C54B4492AB75F07CF4552355ABC74F3B8640E03F00806616
+B330D7669317246FA63CA7791097C53ACEBEC55617E85446BBA1BFFF55CCA73A96FFE823
+E788A5A854229EFEB76E2A04E6554F28D7FF9118C0027A1E6C21DFF573ECD163BE1D170E
+78D8AAC19662ED4CC1DFCFD88C731A948954E5AEEDF51D04D59CF3365CA9D4CEF22999C6
+96621ADDBFAF539BFBCC08D212C0DCD1D2C6565D45CB629388101E8745213A4D1B6A8346
+D103652EC22FBC18CE76B586262F50E7BB84EE9193C02188680EC82A8F07040B2D5340E9
+0A27280415B08333CA137D4A2136801692DAA9A78CD0322531D37DBB5957B8EC4B5A34CF
+664278CE72C58F487DF6214C8C74519696813C90790B124D3EC66FCF2015515AFD4DC303
+E2E88B2FAC181C43EB4BDC800A71EA618B8DFB970DEAEED4BF1C88187ED03CFCE2CF241F
+150D9AEBE01B5F20C7566413CC9B481C960EEAC47D98DF4FDEBD9AD83760612DA5CA06DE
+B32C7D78E80CABCD7251C894BB91F1B89A16545F8A6133D9D4D8C49E3ED9048C5C724769
+D5BDBF2B7FFB59FFA6D19406FA43C2C47B0D6D188C3DC0EAE0835435EEE2AA0F3901AE65
+D1D311ECD6EC9DBD58C75EEE2C602939D5291FEDB8B72740AC6BE496D5045197DCAAFAC5
+2DFDDF7E109DDC65A1B3A6F8826EC835F999D40AEC4169166C6F0955D83CC5740887B1D5
+ECA134043A910E2EDD8EE3043EB28E952A4AABD90AA139D279C9E079C9147D619F18ADF3
+6E1B0F2EB226F4F474632F952DE05AB48F7FF8A61C2C90235D468CF6EDAB83F3B7381974
+473DEEB572CE2F4D0C876D36E563DDCE485C912FE98B6D8C05326EA4A8605878E8984389
+B2EF1DC2A0786D7F3D69D6496071153BE953541086575D77ED26AB995894DA168015F50A
+7D286A2E76250201BFFD10B1C31BD380134A0861BE27CA6D0BF601E35A8BE5B88DCA4842
+900F57CBC8C160CF8779AAC0675E06F0413E36CD2D092F33BE18BBCB9D427D57F9B90394
+9BAE64A505676AFAFC91F3211D152BB1AB670EB7FA53987D03C13A4D615F7199C41444B6
+25949FCCC85805A46F7832EF3C98DDA7ACA01352279B53B9EE2069E22680FDC80A3B62C7
+F729BFAF42B4B1102BAAFEBC86B4E19B3C69FBF3D0BB21861CD27E4B678606563CFEA8BF
+D51CBED2947C7252CAC64EACF0179DCC62FFBFC4B0140E3DB9B86C06CBC1AFD19F7F1AEA
+0D9EA01F10ED6F8425F1D7B9F359DA2E1E3F90513F60EF3C0FDD568A0751F1CB9ABA6AB7
+58415A7A7F89338C31C9280191F22C08E739A88414E8AF71621C0C5E0A7BE3C4DEA0E18D
+D5DA7FC194E6AB4564F2FC59F837DD8EDD2C6CA08BFFADD3832421129C600231B16E97B7
+73441F1F102634D5A267EC11D5A2DC92722B42283D88707EEAC0C3F8CA8422C095B1AAA2
+3A413D71A85EDBB70C7498947199F2EE0B4B0185C7C4A7152D58FA87E2C08E8DFD7E4B1F
+86DF59DF960764F1E4D19CE6DDF43B0B04B7C85E13FC7838F5FD7D1BE2FE289FC3CDB895
+CB8D9396E3E0963F0EADBD3C3D4440C69826EB5514C71F4F17B6496A9AB55EA8FA48C3F9
+19B2D3606B5F6E10E3A1394DD7D0AC9943B824A9A676F6464F2003140631188B8960ABA1
+F951727B73C199748770B8AE2E7AF2C6B5C4CE0CDC8C85E7F8E065643177789FDAC69230
+EAF7F135B6250CE4F1AFB5BF2648235C56844F791E9521E1897BD54CE302FE50759574A7
+0F0B05CB7B7EF47B337E48C6012582EF12BFC2627B7FC75368DD64EF079F0E05EA00F2A4
+D65C2C95A132F41DC393EE230AABCB861632AB2691462538C3D2DBF6BD12B21146F06272
+60A001F94EB1E90C0B75414EC4AD9BE6B23C1344454B3BCF60E2BEB72E7912F5D0072809
+BE24ADB1F93D4DFF2B28A448645579B2420D6C7ED401BF84078C540A67F426F8B1B8DA6E
+C01C9C7F0D353A02D61463A7208B4E3B6730059AAE62E05D66C88CAD9F2BD987E1CDE1C1
+95DF3C30FB7B5D65B02BFE0C5A1989CF323783D4205F53607267341DC6EBE358008DC824
+D3CBD8409971BBCE5DBFD01CD21D7BF07D9357BA4220B8E05F02C629A14417C36B954B9D
+29D70D1B7E74EE2883CC96E55C64432C720F43E804D0640441F9AAACB7FD70082A2906E4
+CE1D47CC056645FBAE463CCD4B9CA99B617CDB446C35A9BEC14ADDC5EF11D78E0A896AD0
+45341DA2312CC374DAF497888595370C752568B194CDA57886DF74976F6383A8AB506CB4
+93EC2566394A3B8B232E01D56EF9C88B20FC079F7901155AE101B4B2943EC18EC032F4F5
+35C79E5E855830273E2885330B770FAFE3764D6D5DEBC880B1DD858FBAD940279EB1B6B1
+4CC625A348475545FCA5C318DFF1F2EE9CB3F27D4EC69912E0A6FD3A194C2F50D0E32E42
+3898F530852B3E33CF9CFCDB170E28122BE98ABC4E5FB2BEB38E0F24A433337F0209ECC9
+D5769918DF35762F5BFFF788921A4BA981AA12635B30A8029181A497189AD98B5583D69A
+1A55505EC5676B360D73883BAF35AA788D76DD9A59B233DE1E7C86FC89B9D024A8570ACA
+1D38B759844B3E3D6F36F5D78411A5C32024963DDBD9FDFE08E6B1A67B799505379482D7
+865501E643D2FD372245B133C6811F3A36F054673651CE860DD90FBC646EBA5655F90CBE
+BC6A1BFDA0075B48E8AA4DF065365B6F03D449985F881BE4FEEBC6F237DB52BD1EC8F951
+6BADE304B5F03BA9C7C0CAD0BF1AF11429C723488CFE9D577A4D11956309271DE6C763EF
+1F15533F863E44BBA57DD3881654F58F6F26945AA22C02FBA1718528173CAB715AFFAA0D
+B9F3D4A880D173824114279382483D770FF3D74A6835F173C27BCA56662D55771637CDDE
+D90A143CDF4368BFD58BF94782E545802E9FB71848DA3EE4DBF3EA8089EB4ACF8F55DB59
+B1F08E70233A3E511B520FEC4F99C9BC896BF1A461541B802A2658FA1E31EF34EA6183F1
+F794C6D7CBB675FBDD317D5E520AF7C00E69C421BAD2AF328B1B172153C7C1B222DECBDA
+9B2F0C549A9E05DD4DA59028DEC5952A96847027C8007CF76E1FE4E101391FB0CDB51F6E
+9FCF78C4A8966C6915E0CC2479D6C9C093829CF8BEFF09959875770B8F02EDAFF31356C3
+EDEE1EF06CE6B13BCFEF3E0F5D62DB9803CCE3FAEBDCF1440670A179F9816D7F704C905D
+09CA925EA44BC6B935093727D1712BA4FB7A596D23959DF0A9E92425DDF434CCFCF066C2
+2B5B5ED484732304C1CDD04F3D1B1F42B587AEE0462E198CF31E24AF9CC48A63AEAEC0E6
+E00B522F3876BCC4750933429BFCF655E7BEB676D16841A7DA012B10BD8342F92A6AEDA1
+35516555BF179029637C2524F4EEDD575D587AEC4DEEA0F5F0FED56C00499FDCE5760BC6
+E16E6A757800199FE2145B37678BB0BF0B62290CFE8646CC7F484B6904E6230AE1938567
+1264B4439FAE4809C7ACD6F2624F507A3DFF523858F3112B197835F6575CF7835C0D20AE
+BCBE4A9630AF136B44D298A56606D77FAE3FA7441F4281779BBAFF69D6421E701DB085FB
+BF693C819D4430EE271B5A09BD714FF377EA58E6A742DDEF548F5224D1CE2EC4D1C20E75
+0C3352AAE14EF16A82D96D13187845F926FE81542A29F4362725923453229020757FCB30
+748C02971C5DC9B784E8E284889FD4FF3DC5E5D6E3596A2102283997970CCB6B65A11F01
+37346255E48488020103A6337F360511D95072FA6F3C00C4F6DE50F007065E4F734FA302
+1B0F23D603048183FFAE1C86941437C71580E35219AAE3E313811F7B5AF34D855C03ED82
+075F452AA0ADBAC30ADEE8B1A5F1D5ABCF6439767ECA254AEAD83C19E7171CF1ECCD2BA6
+7A680EF68AFAA27FD10A44DD3E741A5FD2935BB6D94954E26EBFEFEEBDAABC441DDE3CB0
+8AC840DEB11BF4BDDF3C29E88810CF8F4C4A8E40AD548D6E1866581F1C207A17E3F80750
+863402D771D7F6DCC3AAA9FB18998041DE42F6E7FB5CA77A765F4F7746D5625EEC105955
+99B90FD4ADC747BC04DBE243CC06F4663DC35B876CA475B38DBC0752BF695DE9C95CCCD1
+A22FD6919EDADE3237A8A32A34582559402FC7E76AF8F627597CDA5B941317B025586AD2
+98805ED8194A824E67EC8AD4ED57C66FCC72CC4FE75788ACF3AAC0DAB69F5A51BD98D970
+7AF13E8C4DAC1CB4EF1A348E9F07F929A1C88ACAC190EDEF245B45B5EE1D72D7E0272DA3
+F9D707BF499F0C10230A293AF87BEC2F2F6D6A6587FB27ACA7A807A6AE494E79985C047B
+D16D58DE1DD9E59CBA24A0C4072422AA3BED6265CBF0EE94E8BA836C9D566128EE37E6AF
+24874A9141295E46CCED7C7D791CCC6AA85F398C45B145EFA2A66529DC65F6C20602ED84
+957B5537BBB4A9035FE3F83B675A5C7BB12DEC810FFE8BEBC8BED3A041B583CABC27755A
+3974E0EE7A762E9A1C686D7C701A7E773395A8AC54F53A69030345647DC7853AD9E0E974
+0F4A71498C42745E967004F55C19E1DA2F14611F3FF170F76058D1676DE6C8FAB7D73675
+43BF185AEF4D0D092A40E24597F53FA5E1DBDB522C4F28AB96738192E9F23175E6DCD756
+A0CEBF605B3F07494BA01E2E7C0B2E69904DD4A87960C73502A96F3628164BBC5208DDDE
+0374DEB416F109919D1B64A4F687EFDC5B80D3E90CEE79B3B26B03EA904EDA36C3FE5BE5
+16DA07D074A0C832D07D36695109034C8EB9A7451CF77915DBC99CECE39CF021475FF538
+3D77AFC617B54D33D2703C9D56C448B55D6444BC9AE2B7C63DF6A9B03E05773C21A2074A
+2340BE6D5855C4F1426E0DD5C9004DF0F4C3E8E9D71E8321A3176B6D821FFB04F1BB140D
+75014891DAEDB92256A10A96BF25C2FDEEB76FBB7E8A14C1A2F9C0DA78C1F81AF3F70F4A
+535C252615347770A3F81575282888837E8EB49A1F385369C48536159CA9E90F2F1B5791
+3738DE979A325AD7DC16CEB7DB45FD71686A37D12A5E82397029C69C02234D9EEBDE95D6
+DA672D8F5A0CDA76927987B3F86F2C88525E4D926352B5B766B710187A906DB606BADD5D
+1F41226AFCB4EB9E399D21BC51BA040B356CE2E57E08AE4B95FEA124C8A7649B37A700AF
+E7DE80D7A81FBB562452968914CE9C34B4F7291C8C636DA4711F879871D6160560EBAEE6
+06AE67877FE88CE3CE178AE7B9865F9CEE44A83D6D6D4CC7B2D464E3270D2809854B967C
+652065A169F5661A3709EF9B0FB2F645178B1A814FB764E1A7F31D562B71B9710D8B5694
+DE5B30B158B4A0C711F3737D9D4C42A1070F21A89462600C62580344FD3B728BB67D4D74
+29476787F257AB01E12E0985F8857AF76C5F3E8E260F7C4B4EB8D537B0764A6999879037
+AFD82FAE94A511AC544606FC0D6BDCBF817C0346161296DAA76C7F8A1E742D9901A0768B
+2375DF57B12549042EEED23858E708A721C33C0672A9521ECF8315E8CA2CB7C4B688C218
+6FB69CC1C892C04C4C7CC0AD931070B713EDF18D4A13EAEA93855C58DF76418F306267A4
+70F9D0A1DC043BFCE220A851EC959E762473AF2B919923C97836AD39260E45402CCA7761
+A8ABED24C15FD33F2603FC2F4B60A58019CA47BB9247E545D77B187A4AA53A6D2F7EAEC3
+3A06622E62EC7AF3F9AC857AEE5A085BF2D4DFDA645071E78CE85A4E44FAEBC52B7554AC
+AFCF620DD8FBF5023B8D4070CEB52109230E5A42AB1F596D7E6679B85A3124D6C38C828D
+5D40C6EFE364AF5009F178CFFB87012E46FDAB2EBE119FCABBDC83D2DF6EF6058A31A771
+09AD46113C5D7F3BE61589F4127D5332BA7D6E7FA69EEA18FF2CADAC9F0F174CE0316F10
+65AE0947409418A156D4357F154182399D1810A0E3F6A90AE2D7D8D52731B49F5223B2B3
+4279E262C62E5FEAD54A6097B8F4C2EBEA149499B369B3488C81334F1EA985CBF12B8C71
+2C79D1C9DA2057DA680ECFAED2738111948433709FDB58F9F70402F242D1F988E42B8E2F
+085D10584515A34141059F6AB4B9BF46D6C8BEAE9575000F69D5BCF35814A635326B9DF3
+BEEC0E14EF0D4FFA8262B73D247BD08BADE60BDFDD3D4F215F42F5323AA25A779E0D4AD3
+8D65EB66846CB3F4CD5BCC20956A069135681F9C7635D550F9C91EF1A862B567B55B981A
+085F9233D58444775139DF40C8E93947205AC58591237BA5C29A30D867A9DDE22E87B055
+7D3E2F2916E0EDBFE723761406460721F28E2199B16FC560CF34E0CBAE9F7FE6693D2512
+43965091BD2D354473B4F1B0D2BA9DF0C1AA39EEB35263E96FC1F23B8E9B5E8A84C6C232
+205AAD095C969A441C6A32751E3BA454AB5DE50229D96A20416A1822F201CD219FF30D1D
+7B32BD4B6935AB6BA73B89025EEC7522BBDDE44E373256D821190E53A814108E04132AEE
+9D8E6E801693E7946FA2BD7F4C526C0E78ED9450FACAB74DB0DD97BC9A4BE56D8124B431
+A372A7209FBB9E41FEB1D6C51FDD44D661883A5F9591FEA4A0F9B29A8F626639C9717E59
+FB254C9D079A7F7D948A8262F814A41CB3E82E02879D97BEF0D8A924EA073D493641641C
+B1BD628A20D6C3BF0BFDC0A696F69E1552A95380CA998BB4FA08E8E1756B551ACD4A36A6
+E006CECFCF89D014F7D99C6E46E63C591A841756E2B115AD5F0CC08F9091898053E22387
+DBEACFBAB170CA7C157604653C872175D17A366D2ED188E598F805B6D5A986926BA0C8FC
+2B9F28A960C00E6A93D0558863DB3BD2CA0AEC966FA38071E93A8D90C99B1CF1DF4F3230
+3BBC7A250256A9E0D0D60DA63334DA1B94C8518E4F48EFAC339E11F50BBAE281B8C17308
+7661A42325477B4206B782359873C7472B00B36EE76BFCF3B27B90D38CF05CE30B6C80C0
+DB91F6F9C2BD54BBD3AD2FE189546B040A47ECD4FD87D28AC8A38D462F6057274A231BE8
+F492F90C933ABFE539872B4E8077EC0D882B60608594B14F1B9F03C3DDC48AD239876DCC
+C113ED522B886CA3BE55EAC4753122338CF9EF55BCC7143CD51522B0F95C1FFCEE0A9588
+25925F5E795D15FDE2A9146178BAB6CD44478FBAAF96AB26C0B07202FF22CCB27FD3B5C2
+C8E2FC5531AC1A1E3A38947C620C6319BC5CFD17D53A604150160B360DFEF7B097D07235
+2C2CFA0A81C0DB8EDCE0EA22D723281281D56C431DF2D0E9C49912604C515295E6C2E463
+50E8340D8ED5674A5501D952B10503F475A453B3F2D28FC7EA2EB08CE0DB09D5CC27FA11
+D66DFAB051A67EFE46D8B98EF0AF6F38C7843DE704EA5C9E92478C5D2D8CA979F8785B53
+75A7D08651ED91186C17F51733814312A0AB606525B494D18EA64AE8EFAD6981D194294C
+3CBF01C6EF9104508BC8730CE51753C89C0E5143AAF8B9C00968AEFB4E66152B25F5E60F
+0022F0E211109ABA4E72E91F91298C6D972280519A79D98C1E084975E826E813DEAE3FE1
+5D6910502EFA9336FAEECCB62EE47CD9844A7A01C02EC1FE11E3A403E990519B2C0984EB
+A27B13D57591D1DE1A430520289EFE1BE9DFF3394A7D272656FA2AAAB0FB8E72CF0702E4
+E57DA58D8F15053A96FFF0C51D9D8E825649A7A6EC825F5E025300640D1278CB6FFE9F7A
+07F704AACF3F4FC4DC1D688CE8437D78B13DD729562D745F6BFC0D52138BEBE5690A5D44
+2FB9856B724D395088641C4AC08396AA50ECCEFDB40A79CA2F3749AE5DF6ACD883D45742
+6F167B4C7042EFCE37B5E2FAB7961C260C77B6CD6674C59067AA18FF40EA7D14C12EAE87
+11109503D447DD0E29217061E7A19A71E7348A5DB61176F89347FEB95DD653307581C6DA
+E4234151068B829F93F7C7C03F4540F014F4D0D5CCBD7658725BADB4D4FF610B1587E1C0
+166FBF51598FA14E89ED4D89427F00B3AB6581D584C3B903EB746CA2C93D6103727AC2A7
+B559D2ED5DFE8DC9AE8C8BF899DBD535C11E42A9EEA156B6931F29AA1694CF2078D91263
+0DE0D797358441A9CA2F9E52DE8417ECCC4CCDFD4C375A69F5DB75708D7F60463FCEECCB
+9327C7DB7189755CE9103F07C12BCBAD05D4CC357D336FAB1118D345C0BEBB417A82408D
+6858DE160B5A98A16C9B3AEAF8AA78D684D9A7462F200893FB8C86FDF33CE34D5B8CA1E3
+818DF9409ACE1A2C0317E097DA938793E2AFE2791772ED4FBC26B5BA6465EA81EE6AF935
+C8BCAE3650C5AC7F414A39C41036FBF1BAC566F9189252380AB390E16773484615F54398
+EA70874621074F0B6413D288B85654A09DCACFB664AFE7679413EEA59A43DF20AEB6DE1F
+4C1E888F37C504B5E9FFD9CD51AF64461FB2675B8E36F507B4EEDA2C1B767330B99CCECF
+AEE6048192B3980F3A9334A264947B9B5756A4292024F136A6721C009EFC647D1A4D8334
+DE361215E09E835663AD4769479A848D6BC81AAD44E590EEE72D2C594FD25A0BCC4FEFAE
+FBA01E2D99663355BD9B76DCE8A68323361757392F29E69CE26C9A12D567B032C37FA790
+492D15922CDA7FADF4EC51AFE92468640D0BF9D0F5C08E5CB8A0EA11EA9B5608BACAE217
+F0AA8352E279573FA585D4C742FE04C620350A9AB97FD7C81180AFE84A9292A0FF4551BD
+421039C815E63460E12C8101B8BB074A3B66B938678396E60147C0B91112AC9E7C697D42
+4B4AA510B9104B8CDA648B915E3F4E523704A8F6154899A54D2F64AFCE88B7143B160E78
+798FF3020E715940B39B43B2A72D599AEA5999119845D4AE5357A9304D928837CE537084
+3B6538427D2C1B67D4D05A149BEF72E8A1C43C8BC174F4093D5011EA342D100CC69EB5B3
+3C17405E7BD38B60BCC9D61776DB010637D144D7F0177F51CF17194DA8EA5DF322575867
+BAC8EA308C1D5115554F58767E2595849121A33910F9E838298A0391EB48243CC423EBFA
+138D32CF5B6421BCD0A092355D71E55FB67A6B498AED5B5888CACF899E3150BB6B718101
+56D3E78A9C6FDEE439F03E06C6628E97B37DBD18B61B7D2B9E8E05B6FC53ED73D53B6D96
+860E5143BD92C3554E4E6FC022809129EC3B1501E85785CA14B504E37E31C12559DDAF11
+248C65FC32F57742ED5A01D32154BE1BDC228BC8304AEC07967EE47A5E93BEF30B297B83
+2FDB8E54733721800A4081D8CFFF859650314D2B1358BEF4B057A8607958D1006B49FE42
+8ABF0AFFDFB66B6C93316536F47F6748B6DC79737233C892A286B06FE2BFA07112CDFB1F
+DA1C7C72F999B43F9F44BF120728385FC949FF79AC7618F0588B6CE7545BE1BB12271DBB
+92D98C763B10F04AB29A0EAA355979B3689A70C31759F71E623127FB90E6BBAB40FE4A9C
+C11718C5C9A863DD062D31D5622A229D1774138CF89DC661FB0243D8B4B645B85259FDEB
+94284D74118B936956C24CDAD4C06C11D515EEAEDFED476CFD2D17AF0C06B740E7873C8D
+2D8F449C4A39210F72DA6B1F81F4BC3EED233638480564F56E68DDF7E837BCA6BA2825F2
+5095100A32C4C514195DCB25038E3F14E3DA4CE8E77A3A0952939FF49EDADFD5FBCD703D
+48A6E94CF679EC2C9AF49D42359CF13433B4D734D5E55F3E5AF873CA980400F587A4907D
+89E702D6708F5EE84A5CB63FD97E93EA898303880DA6B1F97B729BBC5A09D207E8A5B077
+B4E3386A3F8668A1867FE8BB24A7EDF78ACB41C82E09F3B508964C151C16671A919CC957
+FC327D66C37F340465C870DEEC1EE4E4F752E6CE068652B8EB8D12715860886BA279E397
+C8183EF4B72FFC43DC44B8CA3C6FFF6CA02405CC4F952456173C84E6E3122C4422B3477A
+FB4DF449D2D9C52E330E9C442831F00E04542C11EF7514A59EF7C1334F63C640C5EDE12E
+7DB26D6EF5B2945980DE939830DFEB86E3FEF06410938530523DCAC5B44B4396B043FD3A
+BBCCB35EDD84FC7C7CAAC7E7DC92D2DC59620DD4859FD25C79B44B1B51BB59B95871E79D
+CA5F0FC2D1543AD1B6CFE6CA22693230FD29E3C3D295A9BA63850A160C80621F52FAA9F6
+9EF6A848CD1AEBC0F9B6862FC7B3E75530945A41BE332AC69B3EBE3B1A774EC203967EB0
+28212587D70DD2463E7AAE410E9A28EC9D2E4A40629F753DD15EDD84058BCE62E27E8529
+D3B984E7AF85D7823B0E8728EDF132B19AFB5A87DA5684F8FD8576D32F47002C7C16959C
+44BE0023D777CE2EE53B73A6514BEF32D42DA60065F72982FC2B984B82128599E44FE549
+596003FB36690ECD86641BBB3D7E7DB4F005FCE44E51DC8F7FDEC3F78D1B8E6598DD85E6
+6417572EF8B1992FECDB9C599F639231A62B175D374425915AD50410F2635529BD9997E7
+08D97FEB9BC699B13AA0C06EC1A86697C0094538EC121F8105625FDA660B85576A66925C
+6694E9C0B0202035A4B38D928366BB247745D3F6881E8CD86E09B7AD5530E69ADA04FB25
+2A3B3F0DAF11C0D948DA234341C36A077C81173B9C5D816E33C2F422C44958F84DE028A8
+AED76A0C5CB5B3BC4205FED7A58ABF7B74B434FE3B179E83AE67EAC56ACCD0695B4574BB
+3DE4B0FE61DD4DBF5067DF614B72E4EC1F2BE70792352BDFAE0C59D19001505544DE2B6E
+40A0C4A7140BB14983BFC48AFCEEBD078BAAF2B6149AD7BA298632EA048ACEE80834284B
+2B48A2D94149528395D28F6EB4CC74AF090D90DFDB52644D2B0A23C87D89F5100EDB7CA3
+09C5715819BD43FDC65F7B49BFDCD4C1E57F35E3AFEC7EF2D3050656C55173CBFF58FDF7
+C57145270FB878EA87609B41FCB2DF1CD71049A38FBDD2DE3DEDA5CA65C4C5E665CAD7DD
+BCFB9AA5D4AE16E644254CF66472BC05A01D4D290220D75A934CBCB6A378C80A07416D7F
+930048B663E4F81977358C2C31B3E6932F220FD472171FAC004C472A2E846486275DB956
+C8EF81C47FC5229B3138202A702E9356A36FA9A02D61A5A3F4D476AFC1F36B0C521ED0E3
+E3E16A449F67753264CB98ED96ED17F83F109921C05126AB4995DDF613C2F5C0D5AAE724
+09EFD518F65FEA3349A532723B8306F2C347308C75EC28ADA452F862DB8E6FF2E13D1820
+7DC2D2468C3F31A52DFB8D5149DCDE373EDE022A2573EE0CB36CFFF430506AA90BE894DC
+B3F0345A7A4FC1278D03180AFDC1635872CB16CC5C6D148BB3BD4A063D41DA77419E6922
+D5F5399A3CFF2CB0F3D4427164E8D3B6813778DF16ADB0575A0772771790CBB4A8BD7F37
+F06FB669B8142C4ED9A18950BF8662354149C18F133323D67E16FC4D07609136AFE5058D
+A189108AF111907E5CAA6A8C4D7413A6C0C18F16B3FC002327416B7974E71B3DC62D3606
+785D6B54A44083E3A1509B82CBCE993B5E925063B1746649778BA899A569A2B505ED8EC2
+054AB06ED78BEE48A728631DF37DC44F12B82A3EBC1153FEA3C29550EFF85BB4C58FCD90
+9DE99F3A69DBFA483D1D869264FEA1CA61E19F39AB9EA117A52D0014BBFDCFAA30D8F64F
+FE1EDAA4147B0AE3A13D53AB2FE2D4B6F440468934A38C74BB06FBD746F9778BCBFC7E72
+3310E9630911FC0BEE009886542C53E42B4A70F8A73D6BDE718A287C888E07BF83D7B592
+7B790EE69F07A4756156206B5D7FDDAAF426E9C5F066A009FFAE783F176F76CDEA1079D9
+A3B7BA020A4325C904B8AE0BC4EAE6EC7EC384CCCA7E1ECDA68D95AD84DBB10B40D40755
+DDF69CD2D94FF2A0441F0C4A645AE75EEC75A54FE87CC23A4C96387063D7AF67764A7D5C
+1AB506B16CFC5150179286A36A8C8AC0DFF026365A61AB2E19C31341BBC015EE7E690D16
+9EFB7AACBA59295653D8C7E4CDF1BFDC2F0A99EB69E0E157D5C6BCBD007DFA4286DFF328
+AB1D2E8D56F58F4E1519A557C6AA9615D3A46D5933C248B14C7B255B92744C582820AB1F
+7C7A12491CE3369F771D2FCD346727AA656EFB428DB16CAEC19145593407167B2FF39398
+A2E68E74E74ED5D44A1F7638F2CB77E07F032A77837A2FBF83E39740A0C299E6F8285ADC
+E1962CC9EE20E257F1550645FF667FE5B76B9D333383E740056A8F1D60AB5BE54B3693AB
+21883C387BB1D73443B56BE03366478731290A98DC832FA0A413C3FE677CD42E70A1DCD9
+4CF029C963DA090F83AD60D627D4A190268F4CC245D235C2B7C4FB6D9A6E97967579A4B5
+1ED9289EF4A48D5CE44F0AD50C0858BD95D1204D4F17D741D2DD41AC1882BF3482213EFA
+42278DECBCB7A4F08A521489DEB98ABC86F121065975127EDDB5DA1EEB0B7116C2AAC476
+CE4572561DCCEC85E026E5013C6468E1E8A700CA116F2242659764F80F72FDFB17BA1B02
+88AC6DF865A4E567C70A75F1CB75E7AE160DED656ED5435F00179046BD2B6FBEBE67C363
+DD25BB45B104D6054FF63183A67A4861084B4267A8BECA677BF86DECBC930042F4C6BA04
+55A9B56F92A664DE0227C11B3EED60AFFAE334C4BDA8DA8BB208A8B73FD9F864C13BBBC8
+1771CC3B4DBAE0E08A974513060F63E3463EDB452966F788ADB915660A290212C3FF79C0
+99D56F4587C7A3337AE22FF30569D81A0EF22FF5F57E4D1E707E4226511BD50B8EBFC2E9
+FA3CAC3B1389A73509A33F9BE03EABD3C658F322004843F85A51E71E891EDFA29C317FBE
+BC4C9E9743D5C478E62509449BD6CA03B9FB408758881F9192710099121D082552C3CA18
+F2C45EDF6603EC24401418ACD4ED51705A8EA4BFB87EC962F03178450DCB8004A3670204
+37F2ACDC1A63145EC6DA3306FAB54D6F8FEE2817A254E386F20D790682EE5E2992072DA7
+EFA676C939A8B301BCA7C6608ED445DF938252CCC74964BDDE4BD5B197C261B37C25A9CD
+ED830FF0C030F0326906AC6A4C312D03FC24D1C418D380DB1CEC8A287F9790A90DB2C2B1
+11B98DEB92FE6C344D94BC2A89C20676503F466C8AA3EF4A2A559D1C77CA5C6A421B8FE7
+E542284F678D2BFFE39F3B497C54727A16286612D861454580ED8779A2AF31C556E5ABF7
+F4A5F8814F0BC9190C7A856E43ECC4859AEDF4020F58992A248FA6DDC14DCCC40F79AC7E
+A1FF4E8A56DD2E89743C5A5B703CEF2ED614504ED6C5104AC007A5C15DECB5BB0B507A96
+F4012B1F70ADCC0FC2AABC3F379C362135261B3E01DC3A2423B00C2F056F0489E8A83DCF
+2839797264300B5A839DFA4269005620B287D9DDBC567797701DBEC5BA9F037D8BBF3E4C
+7D21209D7973B4132C8C1927B6679269D4FAB9AFFABD1B0AA66EAE8795FFE03B2B2F9E52
+370A3F0817B13285D6BFF38ED7B7C643A2CD4595C089A49961FC799DAAD196A55C9C1B61
+227A3E66137805C51682F6E99E7CA5DF50A3CA9FB8475F8409823A1E0E09E0978C2369A6
+71D122F580BE7EC9B2DFD4705BCE10D1E2FBB987422A2ADA2030F771B3999CA5E564BD59
+CA3998D8136514B71830F15D4EED16BF83F43A691A3DA100FCEB9D6199D8AE50A7EAB5EE
+E0B16438615314239EFBEABCF621B0BCF2E6930689BD5027C9CC2788F6A85BAF72856674
+8D6A783F277E8A4C9814D515C6792B8DC6B492AC40E5ED42385C588E79210A8B3138967B
+034188E2A830BE0EFF3F99ECB12EE896E9E108E30E5F5E8FD7E965E3B1FE2329D4C11705
+F36B51DD11FF34250D24BC90E49F3F9F221738ED5DC263C936658B744C0AB1949F354AA5
+DCF91062786BAAF7B802AC6C7D8578737F3A8096BCAB7D347C0AB9A491CB5EF9052139CD
+A82C6A1C1E8D6FDBB7B51258590DADD157111F8F77BA8B0EFC4A4698E38D4C5361196592
+79FE18D6FD486960AD7C4AB79A843B67118DFBAD08DEEBB950D5256714F0220C2580502E
+E0A805F2683567E19BD9216E518974A93B9294F997D8CB8450411C0B0FCB2FC1D0E5D39C
+A6653EF9DD0FE175B67C267A0B26C92252EA816F16D1DA5FCFDF8AA2CA74DB52E3F0E7AA
+21665A72C6EBC3A80293CB5FA7F49EEF59CDFC3494CD6EBAC7CA2F6AD514D6FBF9A30402
+C82CA4A4EB425D17EAE81A1C4EC66D164BBD3EF36E0E547BB820CF063F3950C36EE5EDCA
+A7D9C5D4E32F21DC806026142C715EB19E02217E7E6BAA3E120C0989D1C184758DACFF02
+6641434DDB77D00245EB439A13FF87C58336519CBAD61A0B23CBA6A0C15A57A65108DCAA
+E0C97EB3C27EACDB543B8B19A1C68C2FC30E41E94BD17FACE70CBE7B83F4C413F92C4B5A
+0D7D367F5CFF636EC3BC22BE130AA3E2829178B1BEFCAF3C212DCEE9690A0402FABC430D
+D07F8AF9054FF182BD023F5156925FF9A4F080A6A4F4A1025855237C5B0AA8BE6CD8BC10
+A9F5F5BF42C877C6CE2528DCD17158571863D9EB27BCE98C68DE8CCBAB957A75F2C940EF
+9A2ED40348401FB5F92AF3A3D28372565C2717297F2C124D0A2BCD6D9937A1EF14AC3F96
+5B1E133A34DB10A0D952E401E6EDA811828B104C7DD3B10C7E490310DA0C0FCADF61D084
+B09A07950D1C5CD392B75E68B5444AB9E54807EFC21672E788059C91779456AF2E7CD0FD
+FA47EC64F4424744FFD1A2DE40FC1DA66EA1C9E38B9C902C22A85D77FC9A7837B2AD81C5
+5D75B2B74DE10904B3E312700636C63A40E62BB09204C4D6AB70A090C3535DA9D4B4E46A
+C6344D4F0BB119BE835713003B8DF8DB7A571EA45475FBD3416BD9ACA91505C23C9BAAA8
+7F27170ADFA2E2C041447EC8A736569D13DC15CC59D848F711CA04FF0469BA3797349D56
+D085DD027DB687AEB0E62A78F0B54436B4B46639D8BE775B6B1C2F2424E97BC671D0915A
+AC90D8D404C69B0F95B05BDD26EE3474BE566A57D00533309E454BB7CBEDE9EB7BC45688
+E815C15725E203CA36AA970A1E049C1B2DDBF56F5FF0FCF330F5B28E258A62CA24A4E63B
+1DA686D74DD22669A29B39DF8F6FCE59EF04BF4E3505AED651620C3840E590ADC3FA2E50
+F76AC493B8FAD01855B03947A7B7DBAFBD05E5C2BAA3ACBD8F42ABCF39608F408931738A
+CB46D34DA2DE36C847EE34CE12023B56E13BED22864222594F8B6EAEF1B5542871DC803D
+01A717A2824B332D9C7C90B66AA8848D15F810D6085ECD50AA863BA6AC958F14108D765F
+416591AC749F11F39FE01F217A438CC6C6274B4A624BB59CA287B217D249512A5DE12E6C
+DDBF362595B9F9B258FE0061951A011D401295645C0A6F0703863E3575570324BBE6AA5A
+A6A5897BF7E7056AAED349D416BEE149A65BE3068F90F12B7C2912D819BCEBF03E7BE3F8
+78EEC6E7EAFAF386DCBAF4947DC02A1104E5185E762730627CE441C31C383C7AF0775D3B
+5F6EC4EFA8C8D083FDC941592F15037FB310D5F0902B540E2A48061F85E46DE83BA8A265
+D27B5F03AC5FFF8672190987CA8A73139DA54F82FFEE0B0C16CA972C22F75292F0D816D9
+49687FEB59A4D3ED67E083CA01492C13B9F8502DF3D64E9F1109709F99CBAF1E7938ACE3
+A34F9CB4FACF25BC4B89B575BC0884E5B88D2966C94626B89F4AFBE12BC70AFB7C1DCA2D
+D63F911B6435D225883DE89BD61AD81CF479700330FB8340403D1FC4915D3103B9ED02E8
+8B5DA6970B9AAFDF0700953F30A38CE94A98796446307FD66F1A5F78AD8B6F96A698F1E5
+A60B2883E890C67262A45B3BB908EC907FED077E5C15A3CB4FF546C39D2D40F3EBDFC803
+202E47DE3BCA3672DF074968478272933DBB1FC3A5E170BED8BE1E2FB16E0424C967556A
+FBE0EDCF869FC211E5A6EE6DF5E5216A4033C6AD74F51B9A069E86E56F1EDBBEFE020AAD
+BE5E0F972DE4810FCDA1CE834839A1445742B926FE920789C47CDD1E36B4C17881580E65
+8D9BF2E1A0EAD6DC35C16DFE911DEA03278D79C33C1AD7D6D282D37CCD69B18D3B559A9D
+9803BC7A4603CB0B49EBCFB605FF1729367813E5B75533FE1333C1822B47FD394783EACA
+7D893ECD8F9B3D99479EF1E3357565AC70C74176A52FEE21324C2B836498435D898D6764
+5DAC3EC2ECD335C38BD229E18BA477405028FFD5214010DDBA7134A3CA9C56B390E7AE47
+D1B263E76B3BA8715FE39575B3CCB27285F0F75692E1971E6BD89C536443DEC567383B47
+9BED731B762BCE6EB99487A7CBB91B204F5FCCCEC797B69FCA01B36B2D343B31011356E6
+DF0991A7CDD0FF327E888678CFFA37665108EAEAAB2C8BFAD54DA72AA58AA485CDB85116
+1F7D47C2CFD5CA392BBCCD8D930CC438B64EFA3EE4137BE2AA3512D81AB170E17324806A
+E1F1F6E54750CD0731F17A73452529EF7BB053997248784007B70B3305FEA4D550EC5A53
+7113DC758A0210A42068B06CFC51BB5416415E499A465DBC969F9FA60F4AE92258591685
+5E45A55E9E44438064CD2A0DDD4A185CA548B3BB956E8D39C9AF1593ED3AFE09CD5E9752
+FB9CD899A6BF88AD4C396C9FED1708053C2079616A53FDCA19E1BFADC26C003C4F8359A1
+07758B07D4AD2C228B75F0EDC14ED0E42C3E3ED7C1145A2A8FEFB36D10820B42E02367D9
+AA28F67135DB1E188B75B0054960D1FB88476A9CD7592995DE99C381AD9339160D661727
+C951BC1CF19364D038A108438F6261163A7C703433900C1C08A3931C9B91A8AA80DAE8C4
+7493136FB1089138FB8B543CAA9CE5762B4DB8910A457E5D2FE85E92C96779687D9AF513
+840D37941374EB8578A86C2E4CDEC772D978E9F3190AAC8ACA2CE3D28C42015947B7E289
+964CB850E90C599C9CE1D88AAD628C176F5DB0296434D7C7691821FCA1E3901A0B02A520
+0C64A1A2DE4582393D2F079F32700736BFD2D5C60D8F98961EA0A06CA6036455334FA263
+5223FCC7382139A9E9E746D8144B9725C040331C339E5A673CBB94E267089E70241B19F9
+FA0D747F10A68A634211779F1C11700D018737365E5798E6E8082BE3F51CCFABBB46D812
+F405801FBA9279ECC31F24635B839D15A836384B63E173C033431CD5C4BB1DC4355F774F
+6D71DF007787FA16E254B7EAA93C2A440BC13B5D910C0CE4059F29DA0959803C5E29A223
+42C785CE6A60BCFEE8CF3DBF37CAF880778A88E30A829B91CC40884688EAF1F60BAA1210
+917247B99FE44ED55F618348C8041CDDCB5AEB7B2B34F7CE637E2EDCE2BB28DFC88D36C8
+F2BB6073BBD33FA2D4BA48A1A390433FB9F67EE14A7CCCC235F833C088BD25380797BF9E
+94682C7137C1C050C7F222CA0E33A1A0AFCA82EDC71F1015995A239513DE34616EC2E2D7
+CDAFF73C1E57E9004F94E05CBFDA0ED15C395E871F4B0466C2718E6337920D6B0F57DE9D
+C5347B8AFCDFAC2EAFF9EEB73077586F0A9538A6D9C8F838D80AC223CE1F38229B4BB5FF
+813CC32227985F6504127CCBCEFFEE7262D34331A5F5540AD8AEF3419D8C0FF46436804C
+CD1951AE2251F8B9E1174917C1CFB46AE18B8E9C91B1CB8CBD5B6D08354502DFCBED4F18
+524F14CB78A799E3C9B338FBDE88D1E5D4682C3A33F0EDE62330802CD6FE4077865F8D45
+7B18FB9EA5399E0FEE182FBFA28A6C88025D8E805980D52099FA58716371969AA3961D36
+B52D033F61B17E8AB0D819E8682777EBCDBAD18354BDC8053F2171D6E5BF468F11939F17
+4E392FF3D996E18BE49C68D16EA0DBDD7C9FB8315994808FF59388DB42BA477247EB827F
+9241609A9C210F7C3B4CA43D4B2B66E739C5E42C2A8DF4719F328DEACAB59F8083131A66
+DF0D21CB12BE47ECA68BA91D9DD5C3F25466E965E4522629FDDDE2283D393AEA76DF6C31
+8EA200CE7C6843F33B3720276561D3FA82ADEB9C1F4BA11D9037F6610FB397CA4383A4E6
+3BD867F1E63BCDACF681A119381AFBD66CF9314C90A4A5E780ED57F644C1A2395259F7E0
+231955283E54ECDCB9DFC25F80DA71E866DFB5E993D3FB932509ED9BC538504D6266399E
+ABEBF295C64045614CF9E01F24488DBF3F7944FEE7F1A17AE3497EB902B62AEB8473C0EB
+CD9F59EBE7FF556294ACCDA45E29DC5DCF8CE902B4B67F09B83B55953280BDC71FCD7064
+F07BC0C808F49ABD79A861BA3270EAB04D6CA3A9B40A0CDF2AED7884F8B87FE56613F521
+57A62F405A6D5470AB3F57C71AA8AA208F10DAA1BA3DC679C975139BA3AC653C93C58800
+20910318E4A5197BAC9E87E1E3B26C1EB3755163A11A1C361021F4AC217A90A111056547
+7AC0A47E545CBDCF1017460D95B25CC854B369C5863752CE3E9C03925C01726AB066492B
+29DD98DC0DF6BAF7C14C39EC9AA351A89E46999975D1C736680295493D6B62CA8F5C95E7
+E2B4E8F00D63C95FC19E23C5CD4738F37E0E3D43C0275FA76431E4513975B54D11814B75
+7F02D3E461D0F202669B05AF092FAC93944F15134B9798BEE6E19B44293EF873AFCB9E39
+F1898BEBAD7A8A50D14C6F1CE26230ACC89E625DA10CA45D13107BBD7BD042BA22471B10
+7C7E9346E978EA4BE60ED0E25D5BB35A33D2B4699FC84EE4167C9BFDD6F412D5F025B9D9
+DA6AEDD4F6DCD401244C90CDEC96F30846A43536D829509DF3D5F4DA1D2941F7687AD05B
+030489C0DE4096C03466BF9009FB9AF6B36297231251404159D5C6D9F93D8A1DD2514539
+E31F369FE02C0E25E0379FFBC4F94299622CC09A1635C762B466409381C3942F039ED8A7
+A3B4D4BF6140B7E7C189350723A73C72CA87BB3ED45BFBA51447E6DB807F24FFF5BE4F8F
+3816BD8CB237616246E4916CF3F0DC88519AD70513A7466EC705173E70D2DD4A23F91515
+5B88FD23098E149656445070D7E5F3466E491F87305B5569706645B64C55B5B4047FD8D0
+128D88D0EEAFB6BBBB77627412A86357A128F3A18B901489F135970F933C1D5BD772AF3B
+A5474EB725266C5F6DCF6D383AB7BC7F4915996500205A989448B014058291C5D3BE637C
+374EF780670500F52C1E44EDF366D5BB2EB40E5641E1959B42FEDE5C39401943EA2600D2
+2193FCDB3BD458C7D3AE846B664B510C0919BC56BBAEFE3E7F0CE0EF39E70EFBBC0A27DE
+E08541AFD581B6D8D19D10ECF7ED1177BD5F290EA1E59F2AF44DA152D0B2DD079F1E4CC6
+8DC47E421810C213EDB7A34A0E381D816B93960B4B78FD04781C0CBE35C783AC077CDFE5
+7D243DE7A85F7BB7C860FB514A2E2AF71699028F518CCF35DA8D7B39F5392E5D4969A173
+1A25415D6CAC8C059C3BBC7FE1756C763FC9FDEBB8104FD238FEB54F87EC720EB126FFEC
+55FAAB6E2A000B01A2C20F8865F383420B722C76A27FB044D1F5880DBC837EF3FDC398F0
+C8F408B59E20C11EDB121594EC6D580BA621983429CC230CCF93B74CABBA36F5A38F1046
+1FFA5F0209D162A307A6C1F61DD4B60515C300663246E5753077D4D62441465160C492F5
+812490B098D748260CFDD7A53CC09AE07C67B923C560C0C0955E8A95DD3D6E639B78E4CA
+3A3AB05927D5023ABCA0EE774F616E514E55F19FE761AB2C99C2AD7C6B145C365C8CB371
+00F98943EC4E0EEF964BB10BA0DDF4B721D0B5B1E02A62F18AC8B70373BA7037F1703685
+4094293572AE87DAA8B440A1C1637A16FA9431498DEB791BB0B5081490F7FE4B1DCC1ED9
+7F059BE5336D2C0B903D585768759278BA537FB1840F29EC4F9435A1D1DE2494F098E9B4
+2E9FE79D73C0D7B728EDE37FDCE39C167B54AC9B379CEB4634656D72000D64E159CAB1B4
+F54D60765B3903D6D4AA1466FA453DB3903F1C177208C6BED453E87D32199AB8D319568F
+50471AF14F0351AD718CC542711E76B9C1882941B6616A04AF683C3420658485A76D02B4
+65A3AE9D06BE2AC2951642DC0621E637453029040EF86F514B68A95ABFF510CFFBF74E17
+A17B8FFB9CFC760396C61B189B90E6B3818B2B56D3095C610D4A21412E02DB852E789BDA
+666A04B8A1D3E6AE95D1822E8432D3E54F5E6A609B1D13CFB3E82445C9E60A60FCD07774
+F90C9ABF9418ADC21A375CC0B8ADF0CCBAF26689B8EBC99DFE9BB6753CB198BAF04FDF89
+9E4C22F8C5C0A192E601D00918AEF13394425A531D02BB186A20C46B9C780BD1AAE7CA86
+CA7F0C8EE6AE3AB1FA36BB99DDF7D9377F83F90960162BD80AE93EE05919694013317980
+19DEA50C5AE9E9A67B179C40F8182E67AA84B2E7632022DAAB16A5299DFAF61EB52D2595
+06972C8CFD9616A9905EA54CB9303D33EDB768700878C796FC08B3C41EF23BDF1E738075
+BD048E42C3EDA51D58137B226B544674B06845CB347E07BB8D0F1568A2B6F5A08F406FC2
+B3747FD1072B44E8DF612D1C737F094B87C3BC8F8779113C5496CAFC6DC6573FAD75BCF5
+E0C4DB727FF1198C7291E13BA7A95E6C7526C2654183573318162CD0D36D24CBBCA80D2D
+B073F66AE024DB464FDB6EA46344CC49835695F51293B917515476D518BAC778805E7F9B
+26C4D14FA2EC5085EDAD89606CDEB534A4BFD92F6E102693C71D985D4FA20865FA996885
+A30C4EABE03FCD48563609744E82293D681969DCB2B4ED90C3BE8FE5A0A1DF5900DAEBBB
+CE2D4BD483051FAB207E46227FC0935B8034C299C5FF6B13AA322EFC9AD1F9A7D3360E5F
+36F83DF95276F22E30CBA6E94549D04EBCDA4C3580A003C1113B0C93B9AFA41CC3C7DE2F
+1DC10B4CD1D5CB6A2B40263D57B2A9BF0B587AEEA56809EF6489B511FFB2AFC5694B48F1
+332FB44DB84AF1D4C82F4F78F7DB26A658A52A9F7772B284B43728991914E0DDA6A3A4BE
+3498DBC8FA7706BD3CE4AD638DB02E466115D1C6F907EDF3E655D1D1F8264117B7C40265
+CD4FACEF81BC2D514E901CE502F75B2C6AB5B07086BE3DE8DC1AF4BC1F0BC8F82DE87E75
+7FADA17B43DD5EAF71FC587DBC1B3BA925BCC7301723F388B12CA0483981206E3F9B25ED
+CB80543B119F6CB1B637A857ABB813C17139094FD52AF1E4481614CFDBEC867DBE73D16C
+CCD9C50182D2E89ABC7C2DD6ABBE252674483FE36B26B65B61562A4DA8D56499400EAED7
+6C2274CC33780779776A11DE266FCC49208534D0C5F0023F6FCFCD2410321262254B7BCE
+A22599141A7948103572506E5D96390C13139F625E00A20500FD8CC94317704532CB7A04
+45D4969193248AE0F702727D3A6782F85D1D83F2FE848297947B55719E82B2200F30478F
+9A99DB9C2119257A4D73547CB580CB42CA944A6B7166B2956F76DA1309F211FDEA401056
+C085281CF32AF7939B4B9C4461CC11266CEFC58921CD0B2ED8206AE9EB3A69AC4762269A
+DADBC382BE5AFFF86469C616F4614E020415043E09D3C9B1B2E7D931C88A8763CD532413
+410802F174826D6D364287D45042390C1C4351E3CECECC78D78A0C3688E8E5166DCA1E16
+6D4A6CB9F17702DD1B3BEDE111BA40A2D00952D6357B0F464B318E15614C3366B49F69BC
+9E88FC84A5D2D43002CA633DA15EAADD0DA375D16DB293D2731CC2E4F462CBB47E92BB81
+09773BE4D59066113F6EA2C4374D07EEF5DE8F1898A59EBC2784F95A6098705F2F645440
+3E73635CD4D670909EE3AE6C6B8C3096FFE70699E961954D01E219934769739F48F41721
+A320463B001D9B90D02D7F1A1403AE13F8346B53C3DAC8451244CBB86C1E4F47F6D47FC5
+944CB3D131A39D976BC70AA35263C52B66305200667591482167192E5C1A7008CB77A1A1
+CFDB209EB04E6B092EB0F1E188C592E9736A2454B60E0404A093B9A55093C693F9433C09
+BC82115F9D1FE85924CEA46406758D12E8A2F64615C6358496A4F10435F20268589345C8
+48D854528294B07DF91AC1B98597AAF7793DE3C6AFD6880ED127873A30257C8B603181EA
+B5EB5D1AB5C6A51EB6015B6593C4CC9774E977B7634439A839FDE12A61F37722847CABB4
+C3B4F399F6BC3B4F1B5D9C730EE34B78D01C7EE28B0047E80DEDF3DF53DCD4C6EEAA5EF5
+A6EC75A7F91D4DB3392B6218E38EEF21E0A1C1739DD2DBE9BD18421AA79FE2F2A6E4CF10
+18EA5D9F297F19136942FD0EC31E2B49232BEDF53A565B2CDCC9E3C3795C2C7BCBD0098D
+C6788119BADD3E4CBC327C81D1D0B8FCB452FBAE645C5073D190CC41132885FAA4135F2F
+FB7E5C2A167A224435147A38FEA2EC2BB56EBE92B40C77BA913619C94DC85B3CC68CF84B
+CFD603EFB47AC9B09153CC3ED48412A8B87E92FE002125DCD38ABED1A0A16937628AC721
+9DA006E82E662746DE1A396BB819A437E41BD93F1B3E5EBB23A90B7A171C967D9A63C86C
+FA5C6377BC3C2696003560049EA51D256C6CF67A0CA53A0B4BCB5EFCF62B68911C01FF60
+8C2C59C412FDAFD4B9341C24CD6966C2C2A319AE5A0A4267B51A515699CD0EE496E67AE1
+6369E65C6EF0C669F00D743813B727AD15E17FF0A0037EFE137E700304FEAE9B226EA579
+BEF884439896547B9DC08AA7FF7DF605F827BD983619AC7F51E75CAA0EFE04D1F5E6C2AA
+A78D466E40F8B9ED4D61230AB724E6308485D635DDAF873BF680C552724454CE8AF6C787
+C91180C48F8A91474AB18B760748574847D71EE432C93018770C82702352E426573BEC2A
+92C688DCE7AAAAB398977FAB140EC000BB9BB807299874A8B68A6A8AD5F41C66E2F20C03
+9C5B6F03F100A9F2FA9FE499915E5DBA44C970F3359C6C8CF38171C9E4AE394E340641BC
+CCFC14FADA58F9925DFAFDE1C9E824845197543AAE2DF27DDA34EFE1E240E31B5CB9CA29
+3447842908EECBCF5832C798A2B3FF0354178E14684763FF5D997497E6E76331D5F5F275
+EE7933A019175DE657665159D945E038CCA29940D5BD653F4094B4C7C052127195C53E2D
+AA61749E2E75A72A9F10CD0B133A0189FD01DF7F86428425286CCBC0923E511792227794
+5AD291A5EABE8472433C4B7B1667738E38DBFC8A249EDA9B33ACFB5298FF151AFD2E506F
+6A36043982331782946D73045F330C4ADEC0D3DB1436904D9A471B01DB641A7E572D2850
+534CC7373F56B18098413972386F26A67CB54413BB1AB0AA8BCDE19B5EDDF252C103A3C5
+1739A2FAD820C9F05D0CC899B749E4FC06F6B98096823A1BCCB6D1D2BB96AC1AB80E5FF7
+B60EE10A47C19DED1A07FBD4028C59164F032BD4E24E6B37F8FBED46318F9622C60E691F
+49F70574177A07BDBA5F7B98382737F0D8FB191F7FEF3FC988FA8D365C71E4B7B737F741
+0C794697FBAFEB22B8E18431EEB96E5B3AB4914963857484912264F87A431305F7C852E7
+6BA8696DD7240EB62DC9C2E3F4847B57B7BD139B0C914135F9406919FC34FEA28403836D
+52F7D863D5A7564F9DDF0BBBD33023717B44A206ABFCFEC2F93455CC96A6D83E991D1EF6
+53011974DF531AF73A9E4A45ACADD043D6DEA071C403BBCA613DB4ECAE343FFDE15B7213
+E706FA3A16493FEF32DBC1E875AE5D6B48375327D62EA270F3B6231E98CBB850CE2F09EE
+71E53AFCDFCEF8DF7864E109F53D633FA8104F111FBB6AA1A0C89D413E7EB4B2ABE343F8
+65C78E81FE80CE17B9F9283B3D7B6A62492F349AA1EF2A7771AC88976190CF2DD8AAA7F4
+EBE1CDEFA8A064059862F3F9FD3873856F67433282240BEE90BF056D490D65CB01B3F9E1
+113EAB5D22FF8AA04B08F89A45D4FE62D610106860214089A6BD689150A25FE23197607D
+9354326EB1083F5B3A6F163F6F81EDCD5CF38564EC6288C913D50874A25520E672A31ADC
+895B274B94D406B0767DCE4DE305F3556CF9BEB55C39F8D242B4863930C4AD378037B84B
+2D30E0EEEA9F156F0C6815298475DF7766DD97D1687C00F687BB9039D1F9C942A5E1243C
+64C5B5C42CBCF7B7078364E24CB4E44B7D7EBB2338154436FFF17C03DE172BE7861585B5
+69142FE4F642F3D4AC65B44FA03F399A17C9FF1193ACCDDBAB552951879B1A08331B0DA5
+B385AF7B285465996F313B090694B45F6A789337A8BCB83B164C25A4D1D96512A554FA69
+714C2545FD34F2D5E1AA7A806B1FA790E3A3E7E20B2BCBC5B8EEB39E2F6668C4368CE493
+5BA03FD681CD171BE3F4BE0EBE27645BD215A608C2133AFA90B6C4A7537A117E712D85EA
+CE1786295314A747967D1494E5D5E8B4D0F67764AA016E600D057938C984183F8D5C6022
+B6BFA75E08E7B2F512835DA89662F8CD05127BCE100929D8733480FA1A3B064B152915C1
+1EF1149C1519B70D901FC2A20A163B30BF40FEF673A30117BF293C82173FF4462E15294C
+62AA31F10B54F8C0043E283E46C91312BAB59A15CA1A59BBEBBEDA00771953F987A8F41B
+387A7FBADE9E88645630AB1FF5B1D0581A7182EABB29A9279C17BD0DD29EB815AD5EB0DB
+EBDD576A40947D3F4552309E60EC745DE16BF0C25B9B44679A7E5EE5688E93C8DC6F775D
+2A5557A1012E9E000402CD9A9F6145ACDCE57272EEEC3F042625CD48C0C5B4A24A19FE9E
+8B503A53C41B51E68986EA5F055FA311F6A4C6EC16DB4029B976C4056D5E65FE28F823C6
+C889063BD0CEA1F6AAB7BDAFFBA7F7E5FB7566E2B87825E87606F6DD6B51010A65447C76
+98F947F7A43554EF398CE5D1382BCE1F9DF7B2E9B0919CCAA4AC9AD061BFF0E60484146B
+48513B3492ABBF4045DD97331ADA29B0CFDA7E916353A07ED1A5FAFBE557C7324C2FEA8A
+6C1F3E8B28A279A3FB1D20C9314DE226DC0123797196136E052FBDBFB22AF2C6488BA2C9
+6FA7802826C83AC911782AA60B6E30C7200A203FFA07FE22469CDD11EC664F5F00606E02
+C4D465FA37CCBC188B813FD8A34FA43598713740AD5B8379CF434CAB8EFFCE8172668C6E
+9579F9CCA90524AC308DB48736C876AB5F8CC865F54F6D2B2ED97D69FDB6B6F105984D7B
+A3619AD8308FE138B0CCB2F091998CD818EACC549941228026EB279AD03216B8AEFAF77B
+370D06DCD9903D410B72D5632AA8A5AD945CFB4BC758FDEFC5149B610CC534EA4EA59926
+C142F27EB36C3C367D9A1F58FE075815C43FB3A9F7DD293CAD67DDF29A306990DD4EE074
+5664ABB94D9C444577533E7B7B5C9595825A1901E7A249896245E80432A362A96C5D0335
+136EBF04E49CBA327FD6334EC2043639879E5F7AD6E2F48ABDFAE90AD4425B08A61C15F4
+D030D30B3C401C7505F44BE4367877CFC104434FFFD7079661BEF696A5CBD361F65159EB
+D7061CF90AC6836173E7E464664942AC473A19958372FCEDE0D9471AB068941700752808
+212EC74C963B45CF69D46D45631942325907F242E8429FBD8DF98E60CCFBDE8AD59F2691
+798E5DCE6AFA7FB14B4A10EE773E19958D6A1BD9FD5FCAA123AF1D0E3290F7404C37A97C
+FC82263B68B8C227C0180D8D4B361675324C67EE8C52A2B6BBB5614FF8456592A415AAD9
+AE0127C40C55431DE4D7694541730F026DF8759239A839AA7437712A519CEB704B2A8D1C
+5EAD6E9A1DCD8B6C1F3B58E8C0D9F51AD90B1A1E59D68E447E4CD23584EC88EBC443BF83
+C5E2A011F4186CAB7D884A30E3EDF9D976FD308CDDF57D4CD2CF78FE77AF9E40A9CF160B
+CEAE649FD0A00CB0EE3074592BC509D09FF022367DF5AFC63211BF57A4F1B23A99747660
+1BD1D6D66E8494717559A11AAC133C6F51D81F80CA697E4BA9F32FE41E977AFB2AFD7FE3
+C8DDA4E209B75B37DE0009C3F46060E2FAB68369BFCDC7C3F286B40BE7F3BE001467D435
+40FD924AC5DE6194123B350562429FADDCE0F70ECA2D9B3BE486020B34F32C9F46D4A2FE
+61BC5677F1678057F9BC07B465217EB7D985BA135F3830AFEBFBFFE8CCE654A98F8933A7
+0FFB3A76458BE8B8442282E7D1943CC25DD15444FA3A66894FD9949938C64DD6B1EE923D
+4D328DDC1905661B74E6E57E8037682DB9C5E0527A6656331EAEBF262BD353542C234AEE
+CE602BF9823E97D34CF791654E7431D02ECB47FBA0F2993D8EC47445DE18190320E87110
+B906082914AAC5408DD3BCAF7D3C50D55A45828960FE58847EAFACD0F51A174DB6BED5B9
+EDF7D716E7E4AA9CEC74AE8FEB6EC624A6326FA4857AF65E0BF5BC6625A236B40C9A052E
+79EC8422274040A3882353E36D7858C48D97A958EECCF52C64BBDED210E187D90BAADE67
+FBF3505841D06F74B03A21971BA551971C808E80ABF7CAFC0D57CF21767F100CA35290D6
+F6DED4D23546B2A3A4B83EDE15A1383475B17E26AA592AEDE9AE821ECB2C2299C105717D
+7EE583F8966586851253FCEAECA8BD2C8A1251BCAC83ABF0A8BE66F3CCA2750EBF387D98
+86275937B111470B490292E21BB5953847A0A9D5A9B12332CC7874BE7364E0BB7E6DC472
+7F6E7F00CED20F1CA1DA39CD01A230F5BEC3202F663E705016C657B1285B4AB8157A6688
+7A4EFBAD8E160C9494B60FFF504708EAA8E104D2D2E454BD343D79BA700C47F20CC3E8ED
+122F7D9C21049C6EBAB4C9A2107F2452E201DFAA28F4C26658769A186563FD6E73368F19
+0C69D0EF507A5F62F9A1D5101B95CC0C944DAAB34E9B0C7B551E3188BCB66A83F58D55E0
+836C04D0CED4B0781D9007AE42B20D44F2E50FFA86942F69A1EAC2BA53F0D2BF4DE75DD9
+3002C74E5802D8C929F87A10E8C338ECBA02DF69C999120CA740C62B00230D65D649E120
+7BBA2C3A1522AA2880D6AA95B5C8EC0FD2052B0D6044F6FC1D46A744DB9EA5FFD99AE756
+FF15C3AFC7E497F75BF0AEFE047A3C33658A16BD664869788A91BCA730C02D3D57AB5E34
+6E120A8AF82A1E7D449B4AB7893E3094FA3E6B6A24827A10781162DA7A59BC45BBEC65B2
+C6A4D72CF7454F1F29210FDBE696BE4EEC9A975286FF3303EFBF0BCC261A42972DB638B6
+928F6454BE86E56A94F551BBFB3380990EFAD13441BFD3E42194A490D1F630FCE73CDDF7
+DB376586C1E83BCB82B5ECA25016C969A1CF7199861054FDBAE62D30A35A9C33A026DADC
+D88D79489929D83A83A6AAD2DCBED789A0039BC2E8AE691FFA382BBA6A26B651D368A8BA
+7EC225BE8A7115B208B0470C7289A24ED9729A23C6AC6D8E747CFD11DA83797D51C71649
+FC82909B46E0E371716DC3EE061780251DB87FE7EDBF25B7761B582A0FB48B7BF18AD747
+1F2082910960F20BF30EB56072CC7E80015394B89C3BFC27A57CB983162F58CBE83056F0
+0FCC7B9E139BF1A8F3D4BC136514A79848C00ADD9D5EB8C8C34DD6F6F773652036FAAF99
+5979961F7D689F668864E6B519241CBFE9A0BDF40F3EA11BBE453EDA46A8378CFCCDAA29
+BEB312CD97993B3C8B56ADE1AB9D573BB050CA244920242CA8EC88E00AF41F53A987B0BA
+59867BC2C04C5CEEC863CC79AE23D06DF0DC822DC52F6CE1A9CB9CCCD260D07275203402
+F12F12295175C4AE8C43B1E464128B62CD60DB9E0B7BC43FB5E7586B3DFD18E9BD26E23F
+5AD5F68BE69C3F28137A295CE1EA55EB621175E4234775EBB956286C4A65A2715FEB3123
+FE89CD029C7E34620618D846856622EBB6E43C01B3CC83224C0466C1CFA33AA24EB8317F
+989BEA1B598CE854B224F3224EC02D6C61C531E563071F1509D50F5A1E75AF1A98235961
+A6802CD6DA155C4CFE159CC54498C4D1A88971D42126C7B3DD797DB18A6A30C80498D52C
+3E4C1869C3917DB56FBF712A51E36A4E95A7E2BEA865BD256D585628AB15E5E0C025B53D
+D369C634940A45E5044F017BDDE034A4191548D088A0B340228489DA6E8D375BE0042A72
+952DB03C9D06AC6DA6403CD2963E287B7D2E31B1F016F3BF9DA3E081C3207705363D84A6
+83B6DD81667F7158CB16F31960C1E0092E656D874FFC7592B2282BDFB799B6C919196A74
+C2DA48F430C075713A94B6483D0B286C5BE9D365D6246977F3EDD63F000CD0E6208F4287
+E17F77792B7390E03E7EC0C9A7EE224B59201C8230081FB8633ED8C4440B8B99774EE834
+204297AC9652A9C7751CB12F4F10522EAEC7F02D3D7237F0F714A8E9A86B804E85E5EF4C
+9634C00124162ED17CE9148A4321627B6A9C98EC1640DD3AFB2264386E9D40C0D4C4CCF9
+F0770158A4637782819B76D1791E835D3DA4DFB3B1911EE5A73B2AC2A5F234B0094BB3C4
+544C896B717ED69AA242D520CD93C895AC25DE0E28A97CAB638CF9718C2C3654188436F0
+9D525B5C731AC01359293DB0824396BA3EE8B766C6CC68214B1DA81B4A00E7AD96D21A50
+F919C446BCEA6E5067BB9728F49526807170087843A945CBBB5EBCF8E7F0F0B80BE0E2D2
+2D70881D01FFA3710261FCCAF3D67B57A44395940E311CDA6EF49F22EA247AE5CF218130
+1E15B8B8B745E31ADB725687E5EF1A572ACF5E221D12EFA75DF79BC97EFC9CEFF2B65125
+2A2E70F509F806754E676BCE7F99119F84E80458039FE991040ED891864AEBE95ED73517
+A620B218D69BD38FB29F5BB0A15E7A97395B9A82EB2C095DD04D07F5F63AE3F6E8DC2D31
+943A63AF490C49A4B76C90617B6EE243F5A5CCBD30C96330EB52651875C1D6AE31C05ACE
+ADCE242975070FA2F8A4F3BA15A5917A36A4E144A20F09CFF5E920E4916726C285287A4B
+D05B429E940F7246F2DD5F642F38A3DEE64019AED9DEF1C88BBA30BB45D9DEC01863BAF3
+85C208FFA94585D177D0C869E063443981CC81338FF9D41FB2F1F38BA273D9FC0CD7357C
+F1C1C72F12318BA10F62CA5DD317BF090726BE2F73178DBC3142D3C0FA60DD35F26C4B93
+BFB754A9891D47F56CB0D6D09FA407422A80853CF5518D8A981A0DD7EEC0C4BC5597F3BF
+32E725F99397813C955BE163F8DB9CDA217DF15A1B11FACBAADB9419042187C0BA2B6F28
+14354887282E2207336D6E4E0723D2CAC5717D9443F13E0904A559F115C6F9E2B706AC12
+8B7DCF2F7D845863D85221B4BD2C28B479356D17509B42C70DAC4582FF11AC20B897150D
+A14E71D09402D84995A08ADEB23A6B0753B0084C208603FC04C2CA25C1B5D9FD4418C9F2
+610C99B65579734B9D2EFDCE9647BD88E50B59D97D54BAEF65CE7E50A928ABDCFF23E9F5
+E124EB9451C4AE2C5AE2595B118FEDD1ACC8A08AFECE7DB480A1881A68A6E294C51A0DF3
+21280D6943CA0B1E4DC59940DB60351AFE5B89407E398166846DE61D85D55054FAF2270C
+A26CAC928C47FFF9F18DF58570E1555C2DD39665FA051D50632B67F8CA9182E17FDAF9D1
+0E45D1687D3E74237E259EA1F69999786BB5D9924C23780D32A7C66990A57C5FE7CFEB41
+03FC0E6B949C6031F197966FAACD1496125FA60B272C2B8E9E59C0786547C6C91E902151
+BF4A3251A6A195DCEDA5EF9538D25A2E9EA8172DA81C3062D0718AFDA3C0CCAC746A23CD
+48D458CF87D43BD6A8BBB8D0212F6A235F7F292B45AEE8EB47E8740AF54A1499FE509EB0
+0B85BBCA7214FA80936CDC417B95EBB6FA37D78DA32353DDA95F7B47382A88A3C89BA465
+8D352D7839876B02617F4875F3AD1879488753CE73CAF23A9252B977C5E613B3DAAB883D
+FF6AB12A7A0C59D1780173820A49166BE88FF98A3BEA59168D204D5292EEF3314A88FD0F
+2EE97B575DD029E22D4A7CEE052CA2D9F82FCA187DC5482FD33CDC706EFEA3292D0E1E57
+2AC1DD55659864EC183C75938EE27B8C4BD826E4D41E510F8EC2D9B9DC113DB09C1C6979
+EC1666B4F49B468B9B1F3541625C3D1F2C6C3448BE23E38CCB7A83061654079FF1554C29
+AC79E4DD2930059E405216309B16FEDF8A5F40690FD428E53371097D0589DEBEF2BD3BBB
+2230C56A92E730432D5DFFFF7D639CAD979F4148ECABE790236DEB6D50C5047AA09D6B77
+05E2661AFF377A64F4B8C2F5290B69B29FC2DFC5FADD1C93DD9D1FBC6B946BE908F454E0
+27E9A5009E07BB5C2A35F889056B10D1EA7C57DEE535501CC441E1420903E03CB6129CBB
+C7F9648E81E4753ED0C065B3100A22E7DB41ECFD46F60FF83F79AC2E167B35FAEA00123B
+903F7962040D4DBEDAA5BDF26AB9868FC54846F4527583B4747FF97CD06CCE057E41ED16
+D14BCF06CCD6FB540F311ADA946EC854B25D0FD3918B425D4BB962BD91D5EC02A0BD26B7
+1B637536EF6C3B48093AFB4493F248281ABDC15C78D867AA54B608CB9F3CB45265B81E6F
+9C28CC9598CD21BBF21CE3129F4EBA26F8BE08E9D0713421B050225F764D66ABCEA00AB3
+488E9AC451C98E243F8C7F1D289D3AA6DD9FB169DDB02A2E4C16EF9462FC70B4F1858576
+4B7CB7B7F0CACA0FDD506CF990CF30DFB4E64F598DE606BE2C2DC8C6E9E7824C3822DFA7
+DFE497BD2CAB6193956FBCBC9EDE353AA5C337B952F18D5126FD034D0543BE5F90AF40E6
+DE59DCAA53962E3706EF623307B602CC8B7BBDAFCB3832FDFBE812A89DA6B76C4910FE51
+6666C06FBB9D030ADDDB6553C52E4BD59E36F615E9CC5E2DF3DB9AA64D996F67245A1A02
+FE3380A80F2017953B4C2FB5ACAF69771D9791CE16C5345A8A9CD48D709ECAF73662E64F
+1F3F398933630D93B1582420C2D3D944B9D85F76C210711A62C3BCD087C4BD08EDFCBE46
+43090B174456A5BC4A433C1D60B83AFCD72FBC797311BEDF7D2913E8BBC82E0707187603
+1470870F1EE321F0B9D0FE9793FDA7BDE44CF6637C6D62B2415810EB81347D08A87CE7CE
+2AA15BD78CDC14FFB20AA243D553FB16F6ADC799FF4D034B411556A09C6FF00FF5298B9D
+BF039C2B014F81399C094A23C950E6E8EB478579652D7C9F820EE7A66F55B2E0AF4BFD6F
+42DD65EBF264D2EC65F2E25190CC125352377D02C0F95D86D83188D9FDD369260618DF6C
+B60C1A58F72B1839983F808983C32BC2CB24B18518BEC0D6CBAA766DB19E489B9E7308B8
+B0250194561A3C168329B479FF931C0FFA939B179459C48E8E22B5993E65D0D162F524BA
+C55B6891375AC68F1EAB5164D34ED8CFFB7A7E34EB29024ACCA5E9507EAE61BE3CAECAB3
+91FE5C3AF9AF7C45741876F7CD28F027C59911BC91AA189E2B7497606E3236B2CD3D7808
+193B15BC1D37E2BD867D2FD95CCEFC98B712053DE83FE3D87DFB7F8C3ACB73A1B0813614
+286DE88546E6DDD31C1ABD4BEA5ADAC4BDDEE5A7C744E0B14DF82DC8D312EDB03B563172
+5FB2E477B6031332631493B9226711C720FA8ADD48A2F756E75ED949CB9566363C11BEB1
+50930059A30C57146F3903CD8B9CC6D2E04217072A295567320BAD8883348678569B0932
+6AD0E5DDAB636BE29E70055DFEED231B67604D6A5245D3A3DF055D20385EE03093D592CD
+342E8105819265D4CB1DD2F1BC807465E953959668C345BD0630F6A19A2F55088A3A0B28
+DEF22792F3A50BA0B76A3110FA8266B963D95E0DCCCD56226D673160A0EDB411BF202E55
+DD78CACAB5D44D85213E70EE864867C8393257DBD21C220AA648EBFC3D74975943A49D33
+68FA233E4C2DF3431E2A9ED38352E6FE5D3C9DC3DCB1B352E4685D76412A598CC3BD7A67
+585B26F0295E552B10C0F3AFB0A487C2CC2242BDE76DABC7BA953DBFDFA41E344A0728EC
+C356AC3A1BA192DBC9DFE32660C46539A9BECA5738DC6EDC864C54B0F30F65ABECA6AB51
+36D189721A83E54863F85F1EBA9921021C701062D56DF637CEDD1F720CBD26DECC940A3D
+626D06787C372A96D30AA1BD2E2511273B53C8F919A3B2F0219B2FC8CFD3DB3D90E505B8
+F35644375FA22EE430A07B7C2108BAD301A4D25EAAC103099A5DFA73BA164D15C0615112
+C99145739A230D4BCFD2F1527A17193AC8A76415F9423F8A5945BD6BBB1E6C57D443386B
+5046E1F488FCFBB1FA63C33DFA0B2C5B98F7EBFDB2E188F2B7FD0058EB00E1E91AF23546
+26B851E02E567102C4C5CD11C222B3741C4E591D23F1EFBA0C672B58EA89117837041737
+8C7CD8CD1A1ED0936D8F348C49F52BF4A3ACF1C52C708A7FDCD61A5B80C67130C25D8462
+9A51391A6CA06AD6CF1F3181BC4426565E63E7F77C7BB27186F1D33557A7D0EB2DC02FB9
+B6A99B32883CDA3DBCD92EEC491BE36C9E3DAA8FF99A10B7EFD65111204966622C0516DD
+97BD5842E94DD2A64E938A00F88BEA01690A256DD5C83B7B87355500B7EDE2160C193AF1
+456F8D1A115AC988A1D0EADDC8304C4BF46F0AA2C548E8D84F1B7407525A42BD4264AA4F
+F7045D381A8FE215264AB0548FEBE78A1CA2E766B5CC62A2A43287DB03C7FCF428233729
+C90CAEF5DF6767403FB70136B1BF9748F45D1CCE555D145E3EE9F59EB810D084C7551292
+6BBEC2C049B6580B2133618EBD4703FAE8F5F7F21D129BFA493D945A2C823C8358730096
+E778DC8C29A9C41683CD41B83BF1C30F45DE24A6AFD7B315A1EA31BD5FEF53140504D92C
+B7E3B0B3159321B9C5CBF751763D0D20667C9825A6F82D07A9BDBFC675593184DFC99BA2
+A896B4FDDA27EB8E65B4214C6348D7EA26D50C8357818303DFE21A4A62AAD1B1AA7C4D84
+6CD824966AC1F3E3B7B2DD124D6346BEC35F6B9F73C93452D0AE957545763D90FB95C58D
+90964072CAE247617AD67B627CF10055586BE671E9C1668FB29BC6555B6C55B81040F13C
+8B785563FAD8EAF783E8D41AD9E27F94F30A9E32ACD1827A6174F2016171760AE815F840
+12FC9709CE85AD62ED08EEFFD714157C18DBB7E59BD07E817A805AA95FF05BA1A9935465
+A09A199D33DBCA5066D0E3119587D0CAEF3A611D6354001DC3B713B9CF592F681195E3A2
+764560690BA0F3BE9A3F09F2E093CFBD3081C25C18720ED0D5306962BA692B4A8ED2B4E4
+EBD63F5BC6F7B4F1F51877591DC48684C5FC685A5A7CD287F2E5EA589CB71C8A1068DDB8
+0DEA64E0C268A4782877031418BA84AF703D6D8464A00CC526F29A1BE04444327AB06194
+7CDB12F1CA78E9CA6712C7CB7A69483FD732C5C1E6E249D274DACD8D21182D549769A366
+8CE4EBFFADB37A31251383FAE92AC1718EC3904142464326FAAEB603EAF18D6798E21D9E
+97CCE546AB51B1874423CE027769E65C4243E1216A27D3115E831A09CF59F8BC242517C9
+5AA90BE2B8848D8AA7709C92BBB6816D701D4BF4127EB2BC0EFD5B7ACCBC7BDA219DC09B
+D236DB9115F4D7D4AFD26B4B11090005C2777BD2FE2BFD37829794839B8B352A517DFB0B
+4E1E040348B84E34DFEC7680E9ABD9F372845B7F00EF22E663BDCC6D05A704FE5D612344
+6A184E6211F439460D86DE6CC62F4AAC0E8A2237C04073EA0BC2F7CD5E2A3B435DE812E6
+065F719CE126E1D3D968B92F6A9C7431FB824C4CC87BAE9C4614EB85BFFBD79FF893B65F
+377DC4591FC46433ABA08A889B6F033AACA578F9AE6C1458B3CA7FC5449D9700906A8D73
+CF4CA6FB50FB1918EA228547F0C6AC5F44859C11CC4B4D818F062791670FFD3B4188851F
+77F876D62684144EAD9D2EE65ADFC9F32FD33BB7A2CC678F615AE88A40A9F64E12034F36
+39127BD0D330D4EE5DF9A130C67B7F8E7CBA9E0AF82325605FD9C09313B51DF3F78179C5
+AC672CEE775EFDD4320F58466818C8DD5677B16F940EE2DFC26F779DBF9E10C80BC59552
+E9A2AFC52307F5D2D85C17863788895452ED6EE9737FD4CBBC72E4AEB3E1AA2B5A7187D0
+46EC868899AFF37A43F3F628A8E75137911B6A644C1CA76D92312067EC773D2B14F11BE1
+31968FAB5804588615C5D83C6CAF1DD14D89E388A386CB77DD0A23A3971295F7BBFBB3BB
+36C9F851598AFCC1F2881C4B95CF0707BAB49EEDC907B967EAB38F247FC802DBFB70887F
+A418AF894B550F76DE233A01DA27F4376C77C434066F92106E008EB4506D53F58738AA22
+09A038632D2674AF50689E7C40688139DB63ABE6CC5DDCCFD5234D9CD3351F2BBC1E89DB
+DC290144C565152713AB84452E7FEB67589E776C9310A2601BD0EE2A4D279B02A2C8677B
+DF4D582248320E4D91C2AE663C07F3D204C11EBF3714A1546CA7519C8172BE5AD18FABEC
+4731CF252A77EB5A0EA95FB91F5E6DD69E45A09F8C8C39D9A1451C2DD7A83133B69C1191
+5E9418F583601AA5B4A8DD49914E15314EA6018D20D57D535CA64823F1A5D7986908F0FE
+60D37E24843D197712C04AF7DC5866BEEEA02B9B0A80A311513B5F15D719102577E1FEF7
+A41BC4368E31F6B3A745A8867FA7FFD9FF938DB4A83BEA766A9A130FA646A7BF17848692
+84BC5393332602AEC68422934A7B46C332127958C63E4BE08A42115DC9D838FC211D19D3
+6822136A56BB53E1B94A76F5C5D286D34F2146406308C3B606AC18F2A643D25F47C38021
+48C73DABF7F255B764343A90392D894DE1F68A419C976F1EFC4B7C273238457D0B32ADB5
+3FB165F9A35AE9FDFBF9CBB9482042F60251C488476DAEF2D355D55CA8B6BF019FCACC1D
+118DEECCDADEFDF7EA3F8833C65905CF2C9994A48D290640C007428C2B3DD9AA8CEA32F1
+E9CB001516454DB61C34F619BA12AB7DF7A5D1C1B7539A35D679A887A157A141C6B32DB5
+203E145D7B389059F1F52E66253B4240AC1F84384BD21DB659AEC61C20B712E2B9391947
+EA0B0D9E93E5E06D57342A75959B16F273DC10DC0AEB8B75C6FAFBF91C88D7D942B6E59F
+78BDB2D6F9EB3CCBFE6204A3D7DDC66895710F05B6067CF4F63FA34A4A61892D7FDDB228
+D702347C8E7B86BA99D7308A1FADF399A4F213428A971BAB4DF326DA0839A9E209C02340
+64CC87907627D5325E54A0E70B971950BA0D8D9E41D2A686A4BAFF0B0C87F21CFCE933D6
+115D120D31FA2133CA4E91093703E8F71D6E367A4D968FA7D88930656606D9B1A9C97B28
+99E4026847B4E0D84A7DD4DF7BCC7F2D035D469E9CA1A15D80BFF965521234C72D274B67
+B5F04BB29F607F3508D15C9FA747E0767FA372D054C641465339935AA43F26EB02DC333D
+308FF62A38C53686307CFF43CE36FE82CB31B8B4666D46C246BBB5D35178DE7C21D6EECD
+1A95260731C9E8B70825B61775EDA517B10DD889CA626E4B0D6AC6D97F917A66E796B6E2
+60B1E316205A6FE79D4D92053BE6F540C5925B2562D4A5AEE8EEC95021CD777846DD5CA6
+2DCC63126D5E1D04A81EA82D2476B7D4964BF8EA4A5C6ED8A63F5FD1538EBDCE7DF35162
+B10168E34BE7F12B2037BD40512893C5467B04D943570ECFD7F143171481D51949519A3E
+3563D33205055DE3FD14577FA25F5D75BEF9850745721A862244F27EA529B3938922FEA3
+7D83D44CB851C9E6A696EF1D45DC6C41A36B17918BB2B49A8E31F0BF6343165F72B32C94
+F54361F077004282C7D01789B938649D77B4D8EA472A7464CC318963517FF4EAE1374FE3
+13E95A890B5FC50D9A3239990DC2F0273E92F3199BC32B75B4FE61E810322D5CB037D03F
+748E971E775A97E9FDFB34D8E57954504C34A27F6857605AD29C9277C9414046A6F12715
+4D4B1DDA664C2F367A353670204F79212585787E2AD173E06C603C7760CE00FC439E10B5
+A5BC572D69FC7300CF62A66F364A499E34F7FA97F6AAB21C5F415154C2E4F059B9869D4B
+C94D5A2E11D2BAF72ABC2BC297DB7BB313BB0049AEFC295E22FA3F4C8605CF3072FBA8E7
+61C8EB9F533974297136037F110004331ECDE00548671090F371D24D30DD5FD0D0477082
+4250E6C20D9652AE67AA7DE0863C0A7F91BB5B9E7F8AF5D11516E4968B72A86A5C48F368
+EC2E8BF81B1982FDFBF02D3585BA9595D1A2FAFE87708BDA90B88DB18849FDC1791B417B
+7CAA504E6BDE137EFE451ED5735E80A5FF942E2C8DCB34D02998CC67FE45D8547C140BBE
+A7FC0A7FF32B0B497D53DF87234A97C7A2ADB566931E8D800BE7BE5639B1725AF21F8FB8
+17883D9FCC43BE52768C84FAB407DA50E136819F700950816A1C73701BE3E7F002465B0B
+D16F7671483155485F38B55FE580A1C704D6C4F6E18887BBD08DB3E29D686297B646CF5D
+E588C1CC613129B52F66277E73361BBD9862E6A03CB129BA46D37B98DC3CCF3097F6FD4F
+4293BB6E404D965DCFC883C9E6D9AD3FF342D35022FA9A2104550FD9A720E023F1796484
+12FA029180C50DA8CA936B9BE873A35998398CB0F1A84DD0F7636DBCF9F87051E0C11CEA
+C3605E6A260899ADAE96D70D27C65BD7068133AE8DE7D9EF01AA69DE2D11F91819665097
+E348FBFB36B9E91F902AC04E453B7F03B694D7579DEB323C53644352939E59A66572201E
+D541D1322737685A05F790E454187E8B4A2559373FD827741E927F27251B9E70AFE99C56
+6D57F2EB9D6CEEA304DA3D66BCCFDC4C7E0C6ACF0525D1B1E575030B58BD52B89BE29A10
+B4F7EF5BA63EA81342039A14BD3191B2341300DA3457B44AEF2471D7CF297813531D8BB2
+72F789681795B32810B0CCB39D111068D757DED4929041D8FC41970BD8F7B8F16FB80EED
+520395C5BADF40427A58F680989766C8C3A752865D0AA2A23A07E629E542136758009186
+E6682A3375D0BF86C1676B6A1A8AC22DF30D6C7680AC719D0E744EF8D1E71D4CEA0ACA06
+62EB09CB8A8C4664C8301F1BA9990A6DA62B8D8D523175462C7421BBBD1C87B416DE17E2
+40BB1BD0A86BFE7EA50B874C8659308C04911C64E2951BE61D468FDE7FC4137A49539805
+38DEDE93B3621FC260340ADF2ED1D7285028135848ABA01182F252CF9239A98D01CAE714
+88F23FFC352528A222ED7881A713EDF65ABE4952F2C965D06E839C6FD813F0F32129098A
+4B755A6628CFF28B3C166463747F2DEBF22C5EAE81D2173A920E34C9AAE541EE5DD8808C
+E264541D8BBF88F568DC8012F57215CD72A3777B515A5FE9B467EF324C06DE0395E83CF3
+B349A41D1DBC2CCA053EEAF148FA4FE58A406346A9DAA8C0363573EBB5B402E63C84CF8A
+C472CD941181717C7A2EE7FFC49AA9434E496D0068EACD2C5C94B31417390F530840C83A
+42E06BCD8FF77BABC6A2833EF00546180F35C5418F34CB6C7B93B9116F3B37BAB948ED40
+8FD746BA5457FE31D6F75DCF02DE174177CB11410DF370AE6D4387A04A322D46E1F74B12
+68F6A45E36E8FF7621A94C79A270E646F51DC5F77D1FB37942DA9CBC9445663FB1B7ED2D
+2F0F61E51569923E6A9597F67C05934748E0B172E5E7499843F43CD105AACD722F71A8C5
+973A07E5C50948E5C4C47F9B4AD243842127D8CEC4030D73E80CF1743F95A655A20F583B
+83E05FF73FD5661F2772EA07C8D8133A06231BCB38B98807BA4DBB93E31A67FD72972C7F
+4D96FF28532565635924735FC0D0CA42CFC92E2C1FCEC96BA4610241D035363EAE2EBB22
+07ACC4EE0C5D621022AD426CEE4B139234C928C30A3F0E1A9F9ABF8AD6C0BB4DF3441023
+68F17B660B8E34F19DF2A3248FF4826150DE27CC0BB42433DD15224F7EBE72DFB5B2250F
+5D86B36E024E700EED9BD159BCA1B82E10679EB376052DD1BCE4D0F253356740BA76AF7C
+8E7480836248730FF6DDE4A1103AA94807F866017A68C8697F9ED4843D91584F6E729314
+A4AEEB7EE2440BBDF586F9A437952F79E08E1913ACC5A5C018C6406906EFDB3C3ACD6C7F
+A16F5D6DC0C26840792607B4BCF1ED8B3838ADB4A7F7996C88D39D2780FAAEA35FD7997F
+A17C8DBBD76A662AFBC8EC1EE16FE2F03847FEF8B1B8DA6EC01C9C7F0BE3612FCA864015
+AA56AEDA3D0BF8FDD6FEA04C8BAD41CC4204F3B8073367FE94E6B128BA5226707AC5C61C
+AD05D1E3D443025EB6B5389ABAB87436EF5AC2A202FCCE47FE3E391D92DE61715A234AF0
+1956188D0BC7B8BCAB0E1442D0C47124934024338AB5C6570FC83855AA447F377BBDC81F
+29858B06F98BA7B8360701BEF3CC9B4A63E459506A8072ADA7C62DED6F57BA6E2E874231
+382C3167CAE7C04AA7B994F257E0F591C3D6495701730F0A95F827128A098955F78A6BD5
+D34562D681F01E0C0E649EDEFCE153648F0B0851905A668097760CCB267467112350E1C7
+7ADFBDD29CB2ADCE6056A1112386369388CEB8B20236B4D46D6BC003D462D09C81B559EF
+3A15807BB3AA38EA0A68DE7FA67B15D24441436F9C5BE7A1C26BAA251C61C67CCB821CD2
+91D30B0340383737D4B07A9DDB25C9837EECC717DDE68749A4272F8A9D773232B4983B8B
+72B1B126396193163C936D09584EBDB7A9D8480688737E892569498DCF0F43D581C9DCE5
+45952CC387C4994DA33BB3C08DD729F9A5062C1643C90FE1C9C30F28BB5999DFFC371C96
+ED2E9812C7E35133EAD372C8C286926638F186FE34BC8B41AF266F22C1DB341DB1A6E944
+6C67B207931904D6E1290A29DF168336221FF64E00C4CF4BC42232C895F9930B9E32DC59
+6A121D1C97969639896F043C594C7A73FE89710AF77040E955E101A11407C26911FB8EFA
+3D2A06E5D135702E4130B1E7D0A7A9AFD9C9BA386BDA462D81FC5186F6BD324AD61946C9
+48951A3DCDE4AEF47115085A7F21C39D7993EB4FB1024B16610D97E0772B94DFA76F444F
+F49F0E68240DC531784B42FDFBE5EB5D37741A3C1BADAF9F7267A427BA30A7A73E9387DB
+874FECACA664C47CA075B3C06B2FA7560B972B613667431BB3B945A5F65D517EDA22269F
+A90E0A51A0D8ABB6EADCC630410AD250E387B90D4F58812B46709E58B4B2A28DD6B5A902
+CF6319A42F46DB3E8B66DAEBC76C0F6C8F8A0360069250C48B252CF23143E961CDADC1A9
+F7E8A1C5E85FCF69362CEDFCBABA3318E4FEAFBE7795B635CE81513AA3409B30FC37CCD0
+508338CAD7D47A5221A52E507C3331D755181FA49574C38C73D5D8E753AB6A53306E4E96
+0AA445420C13C3C4FBA2E9004B356A707798897FABFCE87B862E1A54B0909FBF622F4D55
+749734955F04FF695DA24A2C94E7AFBC770D690AA88696A0F43E2731183AA38C63967CBE
+1DF91722164483DF773F52DB670AD378A6F08553005909D032C4E98017B422C2090D8F7C
+9ADF283F10D5C1689862E4D59FEA23735DE321389A4DCED41C7C68CC50A0F69B12F64309
+94B4B793374520C14D44C3FB9C53E41B74C53D027F25740FDA7890133FEB3BB3C9D30EC0
+18C4BDAAC0107308C3050AE7A22F10A72FBCA9E50EB56DE1DB029D803775AE1DAB62DA2C
+AF34F22F85B9483CAB163928127D8B0ADCF3253499B31D202269421EE0F0612DCC693F27
+9A4429A2939EC7723D7D756B762EAF3883CE611E00500639C6728F140E3DDDB42ADBECCC
+301FE87E8B5B546CE92B1F1ACAFE98B630FB1CA41AE39392546A8A29D3EBD8466F3390D1
+5D54376BC864E6438D408F43D5F90FBF5A753EE678858323A2C4D11BA4EBECA0724758C9
+A9FB9DF4A19A39B4518A86536ECC7F48DF9107D9F479B45859A5B20FA1FF6AEC0DDD26AC
+3C4AB19C440782932D9CD41C7C64ECA4C70F8368438603573FA8E1482FFAB4732C5A6CC0
+46A249343A98C926A9BA3DA74E374FDF99A14640C5F885EA0A585C5FE21F3C60B67CC94A
+21766987FC86836D1DEB24A2DD517529362532417C4824DBEAA4A82EAE4F068F0C1B4A8B
+10BAD9989B2995FBC7AB9E7E672169736148DA7332604C1FF6EE5294CB02F0B61A6626C6
+D058D4C4CE4CC486D413A5067CE2CDE10CD48A54EF5C7B7DEA71EE35AA96F496D91BC6DF
+1EA104B6733291CD03E778C05A5392DED0ED79A15C8F5F0A7AFF3D0DFA22B965939534C7
+19347E68F4B9D00A49F5767156D2E5B3E00B93C9D70DEF240E2C6B99D1EF8E4324355822
+629C4031A76A61D438BB30847A31F2E68FF99CC9EA80693F1D83BB8C8E751AE89252D73C
+B714822F0B308D936E05FC43FBEF18459343A3CA75012B48705FCAB45EE7E88BC4DABEF3
+3E2B96440FA38EAA17C2CF747078804F64000F6CDABD5BCAC52382FC98930CCF27365BCA
+5B66E2092C6E00EAA4656EDD85FB744D0149A0A5CC9EB93DC0B107A8CA5E9C6E7FDD07D1
+3A429439C2F0E459CEBED59E9C7469057331B59542143EDB79C75DC17523905F4AFD1569
+EB195E5F2DC8A3A6C3583A5185DA709E549A964D7A4CBC69FCC578C2181BA9AD0FC540EB
+9A5AA67EE4C72474512B164B335680C8A7A97B8BA576BDF3D599DE581AFFA776CDB93E76
+E6DC1BE9296AFBB88FE15CEE8A32BCC8BACD5C1BF25B5D5F6EFE61030C4AF9DA0129535F
+598E18F52184654C184A357CC76A3B7B5170176EFEF00E5095C97EE54340477ED5D9FB4B
+57C9D53D08D5BE5308046A128E20AFBFA0F03165A972AA6BB69006B92B548098FFFE94B0
+1D45BCCDCC8EDE9AF2729429E0974AD67A3BB6F41BFC2A2FD79166BD14E61FAF0146CB52
+8938734A1A744B05CD58CADC634C49635D4E5961FA243C4E64687FAD66C4519CA6A69B3F
+376B82987082A96780B432B993215067EF5F6BBF4282BB19135907711935C529115683CD
+D82906FC123F7E32586FBF959239DD5A25A85A6E5930CF0BAFF54B7F9FB6F8C10A13D98C
+4D8B0CD391869CE66289C8A811C80C28EBDD3FEC80C0E370672A173A0CA4DE900DC8C6EC
+18C86FFE21D31940C46D21B6D0ADA8FD2C7F8183AACE78EB9701A61273D1F9FF680D288A
+B9968C70700E034E660B33BC39CB686384BD1784BB3983FFDD4ABA18255089E069EFB8C9
+E22E67ED6371A81D17B7FE6DED173A495F3AD697A180199D31D0A56B970AD1B818242771
+855D189AD12B1A34E0617CCFD974C24CDE375EB5D9D1FCDA26696393DB7FA57F8AD3EC12
+CE38ADD071183F34365F9B50D7B2D97F34DF600CE7398D6255DCC50D8C203EC7B4D6FC12
+884198C23989147355FCFE78548ED4E81044FCFC84C8F7EBA67FA5CEA9544A910A8E1DA8
+32B3C70D2B278EBCBD67C93A8BDD950214412EBBA51B2C863CE991CBE175EB4240EE00D6
+DB83446B5DC0A1F4C54CBD842864F115B8F22E3436B5C0D926F7EC5F66D4435243F2D308
+0A3F1AFAE75DA4073A1E177AE897AA25831C9305622F8DCF5D2B10BC4EEE923F279EF8F6
+AF590D7DC829068A7D8CFEE5BD4D47107F5A54CBE427FEFB9209A73A31DEBBFBC4BEEDB2
+F14A9191D566003E79C2A7DA0902C78B4D0DA32FA6AE87B3D1B449E0264E92AA1FEA8875
+8E70E6025DC1C606A39CE1097FC373BE01AB756DD869FC0046330AC40DE61EFAFD6289A2
+5183C631B2D4ADC1C8E92E452FC1BA512F3A6A6D2C27A0AA332FFA8056D59E119749D724
+15A1B2C757F5F4605A0488DA9ED0A8A5CDB8BC9986704BA48E38CD88CF898DF3EBE78269
+7582B0337DC1443F8811F4AE92AF98C44CB1B99BBB07C50FDBABAADAB8FA955F29AC243A
+E96B850C64A166AB302B057638E37C34FF0F1A0F04EA03CE462849D00FFC8E0B00BB96E2
+EAA3B74ED28FE29E46DF91DEC9116EC66B18CC062D45D6943A3CAB25EE4E61DBD5DB8DBC
+82C634FF17D480C6E9DE8107643E48F3C5FAD46A955C7AD3016A0CE9A1A81CDEF3B00F4A
+C3C8F4827A562C7AE77AFAFBBF92A95ABBBCFEF8DF635F5D5A7A698F20523FBDBB3D3A55
+2447AE90EDC160B8DB8312F6CD24ECAD6D52C9A554DB03D207039B935A003E4F0992CF23
+559814892525B43CC8F5093098EC05A6C04FFA59179D672709B49C284CA64BE1C4DD377A
+B270072CCF2D137554F979E82E91D994BDAF33939168268365AC6E2D2A0143C33008E6BC
+B98CBAB1B3E0D37B6792A5EEA9E80B1450318AF5468EA11CE548D487EA5B31F32E2A7004
+0458F9AEC77D38D5431E8225F7BBA867EB28FC99821458E6CAA394A27A14644DF3CE4B8D
+5C39260775C9209F0F5E3AFE5B621BBA2BB3DD7106603764D1F2630F26D60E770511C247
+852E8C4034C57BAACFA79ECE3273518B38B00D883BF65E2BF80604DB0E256D67DF5A35E2
+497147D4EAFAAAD917E716C872CD04131CF0461018A6EB1132DEA4DC3316A68CB92BFD3E
+A71E3668F8CE3FDB2F667E8E6609255E7DC63E88ADD03554AF630991D570F45B33E1B8A3
+4208ED4051A3EEEB98580B39CB7F42D3C89577D453E467F9F30807B6379ABB0E18C46486
+4B171C3E29D6D6F9BFD4CB09312E309AE8F89B2DB5123DDEDE7C92B96F33693544151654
+E14D46F19B810B217A8432CA30BC1F23852F2666BB924EA0A1BBE2BD081F5492818D6A6C
+40FA1508E830FD9F7A8CF10CCEE68DD0B76E637402B84C4FFE716AAF3DCAE65CE337A96F
+C9B0D18F8CA36D07E06A4264096B8510CE80A9CA6D2593D0614B04719F4FE40850CB5F41
+95302C25ACA29DB26AA1F3A2B2DB82845E46C4637B9A0B3B0B16F6B88AB0FDA9B1B50807
+E9A0F65CAAABFD9C45247AA464D5EE87CD730BE5DE80C1C7629A060087E0062A6E483F94
+34E1D4259EB9BD32955C580F298FE19A16630E5EDCFCC45E0EFBD71C4F1A3F41BF6EDC66
+19AE6EF5F181F855F944BBED414FF06C005613084B02874679A53AA20D0497409D97C00C
+418975DFBED930B9D9DC2DC9940203507515C8F372437EA75CD6D2281BD87D80C150C848
+9EF8040981873B71FE0EEC9A46BDBFCA995FB0FF0DB00C0B4E9D953877BCC685FC529A23
+14DBC7000955C4FA06B290D7F44820858EF5282E6C89B425133CC89F3065E8084E683420
+D3B0C692E220033C6934505A08BEF51B3B5150D937362F5E911E193AB5FAA27CCB05D98B
+CC466C97175C94DDC230FB03C814200813FE2E8F4BF765160B3B0D3652770B68AD9FB6B4
+A742AAD6DD35D35B219DA7F2950DF385899D1078F31C46681757D6BB1B984AFA5F2CE7FC
+BEEFB2C8B873BD5FBFFBEFA12F305272492ED1C43E86EA24B84D568D60C06E7D2920A126
+451DB444E991FE298CA4C5FB32EB682C3BE23EB1B19BC8579F789DDED36406B6A340E177
+AD18AD8C405BEC1F6C5CD4C25A4F1D230895DD69723CF2DE4E1373A63FAA4DBDE7BF1034
+CDB9252D2225951B9D5879057621FB9A0B8ADF0ADEAEDB5AE8B73DCC838BB4D60728B6A6
+98EAB7EFBF3A6A4B6A0EFFEF5D1F224570E576872B9F4968E00DF966CB444654CE3B74D4
+5F2A316EC5B8DFB1675642B68209258CDE9E627855BF47DB678FFC3A2A0B6CB542A766B8
+4D6736456D5AC6B503A147E19D6821DA70EF9A11F6BD889E263D77CF0624CAE05BA31D4F
+F5928E70A8C41039945BD41B59FAEE2574E6AF4B93579A29C170E3E85812195DF167C2C2
+6C63E77EEA5AD4B3F2DB8F8F90FDA2C7C584A03319371F15F1A13B0AC587BFE66971E787
+A5167C0B09AEC670A283BC5BF8716C57FB36A83465AD456ADA0D54EAF557E6926C272119
+03778A9113073B076E3652081C696BC6239270F5829638DEC3A11BB627CB77DFC7D1E878
+E6654AB75A4E99E5EA49A5940960700F9EAB6574658E6505B104F22093AD1376F86B5710
+8BA2B4CC856B391EED03DA63168CC156E006765C88054A922D4B930C90E7490A382051F2
+AB0980276F4BDF03D0D0321B8185EACC57A0ECBD17E4CA18B00CC351440C3DF6EA4AF3A1
+4CA8ED4B955B06864076F750323DCB757A827C75CB533FC757A1A647AC282AB9298B7883
+54DEA18B8FDB7583B6777B53217445E08B8C65C5DB41427FA7158F1637F217C9AABD4810
+308F466C092A6C434A1451C213F82F82CA639ECB0B5914D4368295D3A42AF1BF14D47B1F
+D113CF57932BA4074FD0DFCC5EC4D3433A8F3871A4FFECB0C2B550EA579847EEB6BB4C79
+A8F1052D7A86CFEB0BE73E9BC6D9AC57AF61A057952CD2092296A4D9C9C055E71C3C2901
+2E19F7F4038C7BEAA49D606FEF3C8C3C1273C13637B15F15AAFCF3DD9FEC7511863E3AE4
+73CEE76BDB20C9C553D4B1EB1F55598C17C8F14F24E06B9F5221B79E274C3071DE94E68D
+201CC07C3DD0AD07E33DFD17033BB212D7A47230C89C97DDA8E18D313F1326DD805BB31D
+7C56F5A079E0D117D73370A1E6A66F67F56FFFBB21930D5DAB20D58C73F3F157AEB87B0E
+4E9543CBCBCF4900EE8FB9C590EEC78CA759ED9CFF5EF27DE10AAFD23A25C163542AA8A8
+786499BEE123533EDA3AA09E962579FD1BE97E05EF51FDD39DBE3D5E93AA9DD4D80A5A82
+6235E15ABEC908CF5579243CC7E35C758981EE20BF1BD1E5232216F627A4186D37B8C64B
+36688EE678F3CDAC35A227D390F9413616D909F5D306322A392131D27A01A3045BA3265E
+E3BD026D43950D34336C18A66B56E5FB21A3D6934A4DCFEB7C9F5C6B00A56D0A121F1464
+698F7119A084D08CFFE582122B19C395F517D83815C975078D988BF2F89964213A94BC6A
+683BAE3A59B594D8AB95CD20F24B9DC3868172704BFA82C7F34019C0D7883EA952549C61
+B286424C0A6F0B61075B1B588FB8B2925D80F9A60078EA4B7E6706066B25283E7945D72D
+F26C1543F42EDB7AF6DDD5BECBB24C82AA755D14A86E177B575F192F04A938C5B0494F32
+56B38AA9986719A0F16C99A756E2FCB04310E9CFE013D8BF4CAD811C04E4CC002A63A2F6
+3B1D237265C1E65B077DAAE41487A1F77070C26069DE33984C3A7563D0E58A227F6F49CC
+C7143BBC0C36D85AC16C7C550C8B48A09E53CB65A08BD0D2BFC5D3EE605EC25D6A24BD4C
+CE67B49BFB743ABA0A2F4BB581FF0BE8C74049D04EBC8B7E242B57C882F574BA9C82215B
+507E233DACE6CBA715EDFFC05B122E94E1DD4838B61F355AED5CE3E9D8E9D1932F03E2B2
+F1460F9BA8067CF0FB175B00CC93623C5316E5D5FA352192663C9AA1A1B92BB911BC8293
+B366C4E56BA32D63F6AE8D81E3AC5C89C16353D9766A32BE65CAA04FF26ED2366612954E
+382E7C9A4851DC858BB3DA8DBA612EF9B1E287E817D3E89BB65A8277AF4FE343E045B4C1
+94AD1969F472DBEDD4A5479CCFA8EF398DF91905EE8A835704788099DDF27BEC1EE57076
+BA19756A3871A57CB8DA19EC6DA0312C0A56239CEBE084463175FC4015D7E92EE31C9ABD
+F2626B10CF576016570711C2AFF5A8DAD20407BD62BECEF1E3AACC201062EBCB9C8D52AD
+1BE3D748781BE4118B28F2F96F4B999E20485FCBAF447B16C094BD5CFF8818525BEABCD4
+AA82D492854C8D3E7E5B03D80A08866770B6716ECB4B6018C8EF1FD47A16C1152E137CBC
+484DDA639D829B521B7C893BF2D77F3A5DD47076A6766B903A2122459744ADF7C7C56060
+8B75CF27E0FB61724CF150FA2C0A4DF69B1C7AAA60940A8B337F06FAF3B4524C90F11DC0
+89297CA6209A5A159036416B5EE6ED0EA11DC8DF4CCFE203F3A170F85A38F2CE21B22722
+D56F06E060A291A9EFC0B7E94640EA31ED7B62E633DEBAF3681B5DA60A21FC71DB87E33D
+6AD83ADD18A1EBDCA88D97F4AF6B6ADCEDFEB8370D6CB2F0284A408E04EFF765B9470637
+055FA32994C192A63164B9F74D9A04250AA2DF4F98525C9004649FDF288E618B344B96E9
+AF1EFE29B84EA22A1606C4BB2B636E259FF29C3E1645A7E7A6B87D5529FC9C1B02C9134B
+8E6B02555686042ED3B43CBC56CED1B02E6415981AFDE96193C1908F7FC17621CEF42BE9
+36502615DBBD9433B828800C4E41FD252E9A2BF0BE710E53DC18A5C408046786E6A39519
+062C6913E9BBE8069A32B1AA6590EEB1A1DA89D0A084883600A524DC908389A374B87CB9
+9E659A27F02AD8384DCDD020DBB05C3A15CAE7A7A68192830ECF18C54BE6DD20FA295A0E
+CE3970943790749BBF7BB2E9B51C8B2BBE88FFB748BE70BACCDA0A40D079CDEFD3E583BB
+26CB4EEFED08FD64713A355463144E985049B3330042F1B47C7F25843EAD04B90718912B
+DF33C1388B70F10BD19F7308CCC7EC3B44B090A6B1597041EC91A586D619DF031EEB5254
+11AD0771AF09B136EDC253AF901AD1BB2955E414218EF898004DBAFE18CEE3E027EA837E
+B410DF945709BF58322E2EF47337BF655BA14774F81332D8EB455AD409BCB7658145B3DD
+F6AA28110994E23DC8B6EAFC0E0FBDFF36A28A20C7E35C3DA256769924B0B186A09068F7
+B588A99016D73B4B01267F246F92E2F304686C74F13AEBF6E3591C8466D58A2E0F374E35
+B069607EA5AF65C5C441EF4505A588D71B9EC6A28D85B6C7DC5CAA0A9BF649A664483D1A
+EA82CC2D4B8D3251AC5901423224181FE4EAB9D683EEECA017019D04DF12C88173E05826
+D785916879E4D203F271A940CE018AC7CCED09989B3BFD893972BA35FDD523B3EE790776
+EDEA918FAFC188A566FD23230D0805FE3A5583A4C95D24D3936703A99A90F52932F91044
+12BD6994BC838F73277A3BF1FA9AEF4F3581D6173D50657BF9CD7DD6F70FA8DB1673B5FB
+C546FA494335EDF95DB9F331D6A9C13BE36E0A55A9A1038970F2DCF1A55BDAF52D3CEF56
+6BD364003CED2E14AED5631E6505F5BAD0F8893FB6CF32C5C57457B97002696A251F379F
+C663B372591FF5C250610D2215CC3A34F8DD750672D8AFCE4D5A99B93D892A406AD2E085
+9356A98782C30FACEAD110E7EE837D8985A93A4A4C23D7B8070B510AD3C4FB65BE64B189
+A62628E160D7D9829316236284551550326A470DA42D90AE69CB7D4F05E3A74F2DAB54DA
+C5B7FDEFB56178C6B71749D2B41F17065971F7C55A901255C6EE5B1B576D287B56960548
+738C66FFDFE07E9ACE2A8888A8B61BAEE31E4BB8668E57F61554D1D9EF3B4CDF0C90F1B4
+E78155D0B2B171D1B612AC142E56B0AA0AA49BD69E7443922D3096073F4DB065DAAF4E55
+0E3079CBFF14C36DCDA43BBD1117246FBDFDA2A3DA167FC6E42DBF60D53847FCE55A62CC
+1AF3E38D6A6FCB6C58913027312A4896F562FADCB92F39FBC3C0ADB6CCA0845DD8B44C87
+555B290A891F004A263F6C3C01BA43873B1E063C73C6DA9409AE92B50B6B632529AA9E26
+0ECEE2FF190D7B2EB4B7435AEECB028FA24A99605BF2D84F066ED1F02CF2C0C135491325
+33C60F2FA36FC58D9D6D098D926727B666045AC58279372BD229C946D9D5DF076521D52F
+A20E2E91BA88F3F3826E01112901FF63D6906C12694B44696F69D17B9478221B4FF16E2E
+50524302FC3A259C1744AF7A57DB6DAA9AB73C52883263F40F5424DE324D208363591606
+7B1E1704BA8B7363BE4E774C4C1ADF393BC42C7D35A176A2F8E3934DE166EF3C6A82DF0B
+9E7BC4EDBDD988D49829E32DC2DDC0035820ABF85F86BCE5EA2F291B2718512BD82DE6A0
+96E52A2BA8A2D812AB07A4CB4E9939B246A1CCE521D0AE59B991554BF7C65859E3B8D12C
+3A6E00ED9E7D6286825F8C32FBB0CE778F621B8E909DE6B04489AB6CD7051FD89F4EA6D5
+DCBA7E538E2DA81F04A4C541D9B83E526385CEFBB89E641545F85908B54A1496BE951F94
+C90F1A0C486950015931CF5F3E1CF15A666A244ACFEF343233384D585524AD7F1940AD64
+54B3478119548A8548C6BD06816D40C964CE9D3326E86ACC070BD14F2284F0D856CFB6B1
+B63BD5B993536DDB3CEC7F2B0F1E682D3D4BA7295BB66804AD5EBF8D3F522C2215814840
+DA6F243CB4E0CC4B6DB661CCC4AF06D78D2F25BE108C943F43A84B49A455A95F3C93049A
+DDEEBF63CD1CE6E723FADC8E8C3A7774191D2E5E4DF75CF2B445A3185FA3CDB025C5CE0D
+B8C44481EAD303FEF59670F4F0B80C3097BC68035DBA6458F5413F32B281E2ACAA3ACCC0
+2C9EAF07EF4BCB97459CE9F5411713B377365BC9128357989F4B392979C093A5565113CD
+B88F9EE7549CF8018675495881300201768713EDD5B2A9E2CCF89B76B31B54F1D08B1B6F
+AC493D8905CA8E78444B1546BB85245366685C9EBB6A0F9A8F6F8E0F6B2048A1B1B36052
+4393760E4AA10A0376682CF02ED2F2BBBA18D7F05B49B2BD45EBFFBD82985185A0DA3D9A
+9842736F9DEECF58CC949DA1030B53EE89F093D8C5AB40CCFE989884AA9D38D5E2B2217B
+EA5868941ECC749BE4B540030393DC4F0365A9EBF9D055F8BDFC78DFA4AC6E3B9B8E01CE
+17CF55B9ABB612A7499F80F8CF9AB3192EACE185BB3A1002CA2DE49EA76AA184DE4CA289
+B9B8B4E0D84A7DD4DF7BCD5C482720F91165EF49190772EE73EB58511F7FB36C4AF0C563
+2123BECE568FF33354A804F3C788316620858EFB76315D60AE68490BD1586CCA72A43045
+71DCADC68F19A5A68B86991D0A978FE716E24371FC6D58004948F5004AB0C172327D7C04
+3A51F365D9931707F07D8144946BC92AFADB06DD3FF9B034143D9FB825CDF01294DBB5A0
+8B4553F869F40251A352F5D24A0B3CA70F9DEC895C46F0914B4D49E5492D8204A97F92B5
+8E9B79BAA8667751EF691A7C29B3AC08567F0B5311E3C83A0D92EB24E8BAD2F99107204E
+06D8AF266FC3D5E9BA1F73267FA8E7E6BDEE90024776FE2D075EC47C85534D3AE040458F
+D7A5E4FEB313BCA1BBCF08D46AFC3882F5FD990D17496A8EE4FD12733002A162C18303CC
+98946D1C037BCB213FDD04A2DDDA2C699BDA049BEBABB04FC5A86FEB0F76F22A3A0371E6
+3149BE62F88AC5F80B6C5302B15F75CB9E4BF08DD7D6A7E71F9F4184D1F411C7E57C7675
+545C457D168D4EC986B82C30248E6EF7EFECFAF2ABCE4278E51E1EF12032A27015C0F133
+A2F8D5FED7F2F47096180307A80A74B531C261CCF3F987F420354F814A30D05DDD2A51DD
+AFAD40D8929A89CC91D2CA692BF6D0B4525D14A255196DF388CCEBE4539E48C0EB172A5A
+4E1972E9A042C2AA83DA48009A9122A20E50656A7CD0C39DBC39AF82A5CE87135192D57C
+E138FCB1880A5E7E52F67CF6649DBDF18A962646E114837B4506E4365774B6658DA5A41F
+8A12896053B89A3E8866D7168EBF87C2B5C4C56944D1EAB0708F402EA3408FF4B3B3FA7C
+7B81F2EEEA27EBC20E5DE28A30D2C62B8262186C0E21B02F211648391AEAEAA787DB95DB
+1A5676EB85CFFACC36C6C6C40865C624B7F4EB6E545E029408E7E0020E3C5ECC8CECA7CC
+713FCD9112706B84DEEF7B8DEE29BF5DC1B8A7E85BCF4BDEBAD8499D04C6F273377F84C3
+78D788AE522B482132D52157AAE68923F7458C1BBAD90FC7FF867389C451102534AE0D94
+82D430714D54A181CDEF2FDBCD65EAEC5AA30D400CCF4462A1C410D39B8B6CA63EDEA9E4
+401810415DC330E3DADC44307F82AE512EB9BDDC08FD1288B347E6BC40550D7953AA1A40
+51BF3F431E434FBF289D5B087350AE18A36D2C4780421DD066B3710EB696A989895969C0
+A214B16950C4FC8A9042F8303B257E279DE714D63E8D81911A3B3E2D198EA56D261CF2A8
+603D26FAB88226451F25E6DD3B280D7870D85107879346C5BAABE5870D0C59E738068268
+5DB85B098A4CB023F89BEDA052985DAAAE940E6A7697E7930AB37B7391B503EE37051835
+EB0AA7BFBE758E22AE6258F870FC6AE33F3959BD1D25C9DBD7D706A8C0AC4B5158FA7457
+842505D66EB12E926E2C609AD6603E1175C473E64B8CCE6DE6EC6E72A40E3E721ED679EB
+646B117F7FC988E144212E7D2F7A0EB4EBC0243DABAC2B90F43BF5FDDC2F0CBA4F2FD3D3
+1F13B62D063FE49C68BDF73D0A9D0894065FD264E5F5742394AF409E8868029C260A53C4
+16D2443025329F536E5D9BCE93DB2E40A64CC68347331E949456DE97FFFB6F421CF6BC41
+DC9318E77D1585A8E78CCBFE7A312D679FA419D2A0039107B0B54717A0DD3A9CC88AB287
+A9EF469AEFF799FE7AD7E37B931B3305B903F7F84F7C898A1ACD9E58D6AA27BC986F94DA
+F2EE0971A852A876A93B3C251809AAC4363FBC4AF5525418771A67362D29BE20EFFD8B80
+80A51ED9B4C2F64D54A2CAEAB9EAB005E984C4BB1FA3AA5C7A721063AF90AC3BB988F748
+705F987189A04B401F4EAEC587022426FEAEF156A16FC080E33916AEE00E9D43BF5040FB
+DBC60A157FF16D418D46F18F8B46CC9A58953261BB2AB697A5AA19B3B136915C1492FCCD
+3744FE95DDAC8FFAEFBF3B4D25420276B21D62492F2D6D252460D6704D95A618FC6DD50D
+F93996C59AA16A864E6F28A37C297E4181A838F8A6D7DC6BA78D27FC5A00A570FF31038B
+726840CD2F11D7B33FC95765D62176D0595FD2A7968EC27F9DB7D184755544503A56ABED
+E7F7AC8F810E056E3B5B94ECDD1F8FD605CBAA7D6F46E83B64AEAC251181407D98D2D296
+B38F5C025B1F47444A6E906865393E9B48006C6BB19291E1ADC062EF1E9A63642290D5DA
+A621AC38318BC76D2D72402FC34BBF0D5947731C275B8C00DB6B29F43ABF9B0467279E66
+810C9F2415EB0D075AC2B75F718344695B0DFE194247F96B6101B395B8D31050AC531FA8
+629511C7E054777D23B6EBE286C76EB411402D8519F1EA92F5C88360F282D7EF9DE76AE8
+092771E31E018C074C03D980DDB0F67108B2A69CC86DFD3DFD1B1348C34C1C900732A85F
+6AD040DBDF786E98B2C0389F76E026F6060D40103D818B9D58C977DF16F2AE57D568C475
+91D4FB1E687BB460198A41762AE18EAC94C0BED859ECB5E1A83776D9E1EE92648CA01144
+A6DF5E3A57F539E865E233F876513478EEF87F7072668CA0AB2A5C673F9EFD645265E3EA
+4D7FE2D6CC67B9A6599F2D46B2955E66D7F7B2B236FC8EE61F0C55D242A8FD6619217C82
+809CB760BFF3E2AC34185C684FF2090FEF318CD2E6789B3F8AFA5892B935FEF0ACCAC8DB
+91A62D6A85327BB0977F1EA5B6D5230B5932064948202C286D48D6AEB61AEC21006E68D9
+10699B559C1802E31D6CD27D3F99AB749ED5D26B8DD3675F179B2652E9E456B9C0FF78FC
+7818DAA1184E39901B5FD18B7648B4EAAF47D136359B02D5A3DB1614ECEEFD3CD8A9EFDE
+A7AF618FB13623559F8BA37F77959F1D43AFCE94556488FE8F38BC8BBC9DEB520D0CABC5
+332F31EDABAAE6AAB86EB4AD2A72DCC25CDEFF4A166936DDA50DA0E450F792D1F35E5D9D
+BF64EC892913E6EA41DE760891FFD4BF1564030770E4CB9ACA3DF00E382345AECAAB6CC8
+813881494687FDA495B23DBAFEEF10500EFAA982D67FD099B9643D0A34C60242363AE971
+4D80CCAE6A24DE4748C08D6429FCE1A49E9724F50E1E7BCB04B6538AA4C26F82B422C2D8
+8151AE7F3556714CD6B88C8F4C1FAEEEBDE9533734640EE9C6747936589B1E85D62C6D20
+5A3BFEF03A442AAF170B567494231F4998F357720A9920036B9A47BAB1F1DAB4482DDF19
+8F8C90B0AEE3AC15FE90587C467339FEFF575CD7A1468136EAEAC1CBC2972385CCEFC0D5
+43EF25F38073C924288A058094C0665C8B25B583C3122046984A8BB04CF01A0C9B59C3CD
+9F41FF85C3057C70E1FC4DA530E6103DF162AADD7E42AFC679D4F54FD158B93D21F371C4
+0439E23A20FB15544631C8EE260E9732903B05C1F335AC468B8A63452990ED3B03E74925
+383863AB9C6A9554E68A2BA2ACADC10288B509F72C7015048A6A2099A8EED7CDC5E974D1
+3657A48A0F78EE107C0BBA5BCB478D03F0FF917BF52A1B7E2388FA9E85BF71D0F4304AD2
+DCAA0EF2EC13F5A358FF97AA18EC2BF712CED32DEE592C1C038F58508741FE2CF68208F8
+7929B9748408055D45F4D91B63FB7D6644D29922C8DCD0683BA0A5E0F24A6092EB98F505
+3C4C3FCB89C7581994F6EA196A1CB662FFCDF38F19433A72529D3305CBADB2BF6D0304EC
+10EC6762A07EDED0520EB5D3A575EB3F7FE3FB089F52788459636DF7FC3FC2D5C57681F5
+2027F415EFD8B2FE03C06238B8B4DA7552C91756E38AF4C40D424B9A9E7CDFFD8DB7F911
+927FF986F53447C41486A97C451592525C2D1EE623EA4862E0642B2B1BF5886D66AEFC25
+71CCC17B24C0489B4D708216ACD958021EC55ABC1E186B2721A299F2CEA6788EAD32578C
+63EBDF35D785F68A950BF07BF8A8F21CB4410E013BC8E7AC45BCDA068782F3EC64F885EC
+E5D3337ABD3022342BF666425497F0A28A4EAABC8760465221797D8A1F41BF04F5F323BB
+D30F60ACD6CB474400AB9C9724B9D05F865207B435B0153B04066B6663890BC35957DAA8
+C78430B1A99545B53538E90490A24EC4BA6D11F8DD2F8E9B67447863B4C5C1D4E33E8886
+5AFE3CC14641156A0C7274A703EEF91295C715463CAFEDDA4BEC58E0076A7A7174299291
+563B766C169B96A711B109DCAFF5580178FAE8203A7E5699EDE0001349ECA40505D99360
+45BCCF19F182AE6605E377857A8435C3F081F007A4558D33AE13235801099A5D4B54FA84
+0B36166C244258B67ECCF0762B0A061D5AA77C6F8B7010DFCD2723D8FBBC501534700371
+B5D63390A44827D44BC5A801435305115FED22073B961333C101C82DA4080C4A1F33ACF8
+9364F8ACA3B7CE4FB70FA399C4CE8C4B451A43E8C3CF1F31AA0BEC220D0EAD3B731B7AD3
+40E4A07BB3CF7C5DB7E7666DF5015E6E5EF95614E986D177777AD2F943B298A5B36D96E6
+1617DF1654CDDC9C33E8D2AE7B38A46B85EFD5795BC44979DA5D05E3796164A329814BE8
+997615FB0829CEDE7137F01BD4CD1C14A7A2025589DFC8701B30915EFB23A0C7DB38C238
+0E0F2CBB98E15A9D70C35E5E5B5AF84A70A853846EEE5833A043C21B29ADFB3AA614E1CE
+8BCD1260FED0E470A9E7632C385D3CC86DD139991BFD3B7B299A634F671416C366953E9A
+9B86DFDD042A7C8A2300B6041B1DE17D71FD7C00839711FD11BDA35327F0B4C0F62227CC
+D4BBE8F6CC7BF4390EDFBEF02AB2CD25DC743E8B0A5A5165812E699FC0568C7B34212F4C
+380EF98C2B4E09CF52FCB7E628A029E07250AF06CA0B21351A67652F4033A17EDF6A6E2C
+4FCD41C469D8E4F6450CB798C0139A49440AA796113F383C5A7949D66CF627E9E76BD64E
+4014A8011CE2DA0DCAFAFD239293550AD1F489A580957C1D72C2C461A525CD2E07BB1CEF
+B4D858A2944692525791D8A52E6870F724DB0184881A6AC9DB8EAC22B232B35B16FC3B18
+8CA5DB5EB57208FA1A74118B4477B4D33A5C6CFD654DCAFCB5E8DB661EEC0187D6131C13
+D428F5E92C2A40EEC1C2B9E2D2046B20002073C2CFF6620B435DC182F8137BFE6534DE77
+F8DAA5D29A4F1D4E922511AA5B9C2AE9AB09A1900E4CC11EBD38DB471BA771552482251F
+12F68BB4C0A4126FB1E9F489B8D52CFC8AB14741E8C229B6DD3EAFDF43706DD1120B6FBD
+DEB45707A4F674B7941E1A3CFFA237199BA95CDD3E41567F0C9F958E3DD2E7A25C28AC30
+2B8531C1A017266166B85FDA4EE42F39492195260537970C8FD5F9DF83E48677D459D32E
+4C33739877E13CB3C7D22EC26F32C5A31E450824D630698FEB7100F72C0E5B1E8076F1B7
+9E46744794CBDEC623191BCC034261CC650812695E74AD2D13551F728FA9AEEF9A2B892F
+856833B07C67CF7833895BA5592DE8789EEC9AE94D7674633CFFC10414AAB855F642D9FD
+5AC7C55500355257564F027B10432F0BBA43D302AE8994F0CBB193101C55EEE682ED6BFD
+D38A70ED2FB18A0759EADA1D29D7946E10922D372D401B63E9F72D92A9F65967F735765D
+7B3E9747FE8754F2155A52271DAFFF975C2817C21D8023FB063261CD183F72C28AC3E8C7
+F9E486975746F387B2389161AED6B7F88E1A3B131DA350CF57D8FC730A71521AA25877F8
+F336BC7A01A082721037D5CF834E4553B64962BC5C3D62571D92FBBA7341AD15841A409E
+670C6494C6E95BF58006A0D0CCA66AB68ED5B9437CC878F1B839C1743520929FFD7F7F4E
+E626DB16A796B9A0406A82C34D53239C5AF96467DFFA23BC17F39AB0F1D4855AFA23A684
+DF745A19ED552B188F9EECF09FCBAE6C1FC1E338DB9D4CC28D0DEB42F5BCBAC1AA6DA213
+65C99ECAB683E891184D7FADFAAAFA89B5E5A864449734D327A025359B83400840A572AA
+F196908EA0AC78D85D322A2CE0EA9D412ABD17DC63A7A7DC93B7F914015C2CC4926B1F2E
+18D8809BE806C090603A3CA2C8183E5F70D663B97309614004E8E52923258A872C38A426
+B326354AC22013B1EC146544BB0DEB58C3FFEA132E8C92B7022D4478B78E77D3EB54CA1D
+A85F763517172AB76E3A4A867C78A08F44D458A1676F8B49799CB236542D5636D568FD42
+47FAE558CE8826CAC920FFD00573280BE454D34E791846DA224D7BFD9F52196F3E8E4F83
+0AF2DF3B8A8B70B4B3E7EF155080E8E19B612930D8F43576D975A24CC249B3973F998439
+1E3553CC9F6052FA5ED08FEACA14DE38272F5FACFE4CAB38C9107AD89497A6C177A21F8B
+67E933C9DC55F1F0CC55C5A326E16FDE212B6D0B82101A86914C4AB47B665B21190DEC7D
+C02F82ACE94087EFEB103AD67D88508B2A1D1B02956126A6E4DC9C80365EE91E95BFC2FA
+8AB834D57AC8345CB65941551FA62D990FF0DF46594BF4BA2344F7D4FA79D6800473BE84
+4B7B0A5743E585B5347FB98E8089F203031FAC82BA4FB727650D02F7DE0AB6DC062A2DB1
+C980F1B1E0780954F5EFBE3CD2DF6B140902313DE84B6439AFCA289A161C04494E093D3E
+D298D1661F51A0F56F870181637BFC6008749C61663B9D5FC619E438641909AF6E22A9E3
+0F567DF876114DDC7710FC610786D668D69519988228B54EDCE545F98423607C258E970A
+6BDB4BD5FC1D36C793DD9C25E86A71E599420D357FD1152F7108F4EF56BE2B91F6378DEF
+12DA4EF0D0DAF456B43F1FD216AA5F00939027671255787A3F527517E554295E69525B55
+BB3408E18DEA20FB8952B10462E45D69C26EF6EC32E2E4309BA9C8D1F99848D3A3C6A39B
+1EDFF6C134FE2E0312FFB1F2F27232B23CDA2F188F79A28B6CB4CFE386050482A881E8B3
+289EEF4F3581D03DAD889369892730D8A5F8ADDF7A7FB2EA735FAB74833392A6C6CFFAE7
+5EA712D2C1C42E77EA3347AF6F3520CF03B96A19288157822D857922C8F04489A6F1E9D9
+CA81CE3FB715E03E3FA0EDF2AC43948139AA4367F731B45C3F5494E56BFACC0AC5E3D561
+1CAF1CECE1B71A19DE3C1E4B7510737A4716BF974C335853E813B4B9B04129500C2F048B
+3F068D69598434678FE7FA6D40741342E871BBD6314C1B6A47D1473A7829EF90FA55A101
+6A52D522EC51BF3978F02ADFF0FA5BE19C1F3F4305933818D5B93158746C56CA07226909
+5177C54B656C4AF1CA762E14EA9F0FDA898149055BF37209253077DEA1FFE214117F4469
+7BAF52E59C35A1DDC43A64DF5018B1749242BD33A18B9D7DA885DD6D80C92EB2C36C93C2
+7ECADB351B15ECF9B468C95A6A4A3422F110FC2F241D531386B18853A1754BE541EE62CF
+1F7B521E6FA2D0CF41C471DA5198D35711B8FFB5EB59A1833A47EA31E0459FDFC9AAC803
+630A3EFFC617E1056C1BB5BD9A2480734ABDC7129C2D343915710E0984C1D994ED204EE7
+087ACF891B51969EC2A16B0976EABEA61C2CE83B61E965420F5C6042993D8F5DB6920D43
+2E96FCEB446FE8AB8F0671ACE4890D6BE4707C7AD21AA2761B275E0D0F898353CECA5185
+A8BD7BABD8DBB59DB6D7338078AC0A510F67190B03BBDC09081446B6EB825459C3A75C9E
+4240C3B4C3C997F39DDC37CDBA99A6CC886906562B335AA58306AA01EBEAB36906D7F8B0
+40E521F6C47B1428C5CC22A22A0CE5148139FC28C4A6BCEBCD1DA780A3D2315C825A71E9
+1831518F34DE29152018464B34C7787767483D513F0ADFF53F4F57DA78A8AF919FC0AB65
+C62FE12138548DA11FF91B7D5198D51F77DBD04E1F12CD683763A8E5107E0121C3EAA743
+92D6D093126FEC8E555E3E08D85E54F6416541AFD3002589B0DB54DD64A22FFE21EF74FE
+B9A88248ED5BBB2629E8958319628F9ECDE0A9E5529B9C21F5B0101378CF295E5CB380B1
+DB8087B210FAFE71CDF045AD170ACF9DF455671B4EDD3B81350061A18FD7435993EADCD0
+1A0BB5A9D990B99B57FD620C9660B2CDC5424176540C3C31F1C1BE5326503A42C01D0C09
+7147C40F66875446D53BC4E3CB29B882CB40517CFBC09D9CF87FF80C07ABC0771D30D788
+5147460E2DF1183407ECC0F0E5C2AC3A272568D6561B75834EA417AA75FA0C54AFC4AE87
+CB8836B96D8DCC255FD96A8ADB5E334DF0B396EA71E734946FBFC45BD4FAAE973D85A5BD
+EBBA51F5FFD736231E0CBD63E991ACE7C87A53A6C8051401CE9C53F57F32B2F1EACF73F5
+D69C2EDD31A7887CD705789222A8F46B192714EF046D10D8D419159681CAC9520756C6D7
+5F9F49A24CE942A166E2E597D76857BA59FB8F65751E198C50D055173A2F9F171E24009B
+408E9882896B09A55D94B0686DA96E01731079F4DB31F003F8B56D11D0B91E39F9920921
+EA5CF92D71DDE45A1E14A0FCE8578C4B5EBC98044808EC493547D80DBA8EEB1414DB86A2
+96A93B0148A3CEBDEEF8CF7CD0149FB2EAC58C7BE8E284E59798F1D79FA33B035E55F878
+5712565A1AAEA2ACEFA2C0F9398EA08ED2F51B0FD91CB15E8228A16ACEE9BE74BC238010
+A0500ACC6CD0BED9388B0216AA61631B728DEF2E2A9FFFA2C0241F5D18D653311B521D0B
+49B8EC26A4E6705853BCA916E16A1A8D6616A33FB80BCE31FAE56FD17F95C94EB322EC83
+FA54431D5CA70DF0290BC207ABF41A8374D7DADAAEF2417E7028735BF5C2EC0A21A7D32A
+FD38B947830D9103468F789E82A621EC9A1DEEEE9EF72AA3DE23A08EB9B7A6F8ED0C9E2F
+A6DAE58EB9C6F2E9A57D125F4AE52E19123F7B6191BFB446F17D3FEC75667975D8272291
+C50606FF556E2B049731F896E0052B07ECB12D715DEC3CBE5295F7E185B7AC3278286F7F
+FC9BC3061F5B8AD24EBAE97B59DEFC96F72C3F24286B843DBF9FD48353602A5E959956EB
+2B1BBD3BE8C12FFB8968E6C2AE89C8ADB9FB5EEC4EADC916DEFAF3ED07C9F8D525231613
+ED2B056D64FA028D9D68D24B5824EEF190D02236C0599D73C94C4FD67CB2809E760494A2
+389CDDF7AAFC9FA0D6FA6D193944F3A48C4955B69A5E191F966B74A26ACBB6FBCAE72B8C
+3166E6242F1517BCCF77A22F36D8ABD97BED4A02EA8A9A175F568C6E04F50CDEF8F73234
+A49355E50E0379FCBD168711C724016174E4FE358C4617C1F5FBBF8EB34FF552F4053009
+6E0B1333FAEE1F095EBD3E729AFE3DD361A3CA3CFC3BAF119166D68ACE92B6E2193D9F3F
+DC52BF0538693F074E18A04A52B5E6BA23790D5D8FDAD78F2A328979507EE8B934C8B0AC
+EF1BB8B1ABC07131BE9CC1CFF87E2C0CFDCA7E9BD8EFBB3FC6F0872C656344D0B1FB54A9
+691B795D0F531A64213A59F8362DAA0031B4F7E7A438BFB0A6F8B3442062D4A2AB4997D5
+8039186D38AE4AF7638DA1B06D3219B9170656FF40D3E87A196BDBF098C4D3561F02DF54
+DA502B7CDEB893239D8360F3D3CF260C5391A67F9EB2364B2CAE42F33C0B4F27EBD37306
+2ABA11C6FC4654F3083160E6E705FE67326907ABB08C221943D94ABB93FD3628C083024F
+5834841E480530A57F745E384B0447CACA50B861338F8C3641210BA3D36B9688D42A7CE1
+8407E2E6C094759AD78B3AB9FF77D863B4C4F35F3535558D36BEA39792AF50EE27B1A902
+FFA82A5DA380E1C7C10DF6194424D661977D52607AC40B6F2E9EB2FF0C1853C79A4064C9
+A489AAAA9DEE971D5D9B48C84D6662304442E49CBDA0CE0F9414C7BE5C75111276E6BC2A
+79213F1F2DF11E20BE2A27E5B2F0E310FB6533572E2302C714016CF5C49AA4AB24B925A2
+99E94DA03C390B979A6D5BC8298E38744139C864496FE67AE28EFBB37FACA0F94275EA5D
+FD07AC5717BC0F2D67F3B988CF0889C75B09DEEAC039E55F2A763D959463ADC09493B3C6
+092049B9A8A25A98B636158E4B29EB3352149DB4959AA74DF410E3806888851F80A3ACEE
+0B3CFAEBBCE4548FC09C72A102580A2F46FFB72B82CCA5C34B193F2AECE4A2B20FB08D71
+ACD5A1B3CFA32EB7275A5194AC70D884436E44BD3AB7439BC60E65615C96CA142095BD76
+B3E0A60CA6363D04B8897AE01976743951ECE9B77148459F8F9C541FF15D2DCBE19517DB
+765A7C08F3B8406AB0E10C68D261DAF5F59865C1AD9BF32733DBD5B91A289E8760E9EDF3
+C551A7FE4323F948ED1480383C06CB3BBC6EDBEFB13ACB4A026432292BB3C4811AADCCE7
+7666088DDD08A3A40AE06820EE16A3271CF985964E34BC291E46D47A7ADCB5F5D306DD47
+7C81173B9C5D816E326E5A40E7FE2CA9BB5BE03D28BBE4862E02A1EDD0334401D2C967E9
+BF458C964A75D22B4F487867C360E1797ACEDA3815F59D261B3BF6D2444117178642A374
+24D4B8AFF83C1359102430BE26C6ACCC15895091BBB8E215A74C3A1479A248608D16E47E
+587CC4819A23128D8AA62552B3488164171C4CEAA3CF93E1D97A796299B2E0E183BEA624
+3D831CBB001EB0FA242FD8C65A4D319EFA959EE42DA7D87D78E0A473F059E8340B28F471
+1710744E76294995C4AC8D9BAAA81C2883C833E42123A7A70BBF96B9DED346DBB2E176E4
+7BB82DD563996718DCA206403C1CB3EA5A282E2F34DE5646DC87CF71EDA280EECA2BBF42
+29F24DBF7B767C3AD158F10C2E00523922C62257B46BFFF3524A3E02557AA102583CCE0A
+1C57623A00CF6BA6CC0A6C9C3484013BE8013E80D4D78EB65CBA1DB54C6EE8CAD7105A50
+1A876D4B38F0869E74B161014E1D0E9BC3F257D056CD5AAA486A859FB5162C7D71115879
+B7E23696EB1D30EB61DE9BFA7F877E8DE184C36DF37DB81C4D9324E5C2DF64B37AA8C57A
+6B2D6F93019477DEAC998837D852CB7532B92E8E643402C4BFC797ED777AB5CB95E36C26
+4B634DBAB90F97A3C114698BC7E539DB368337BFEFA10826D45BD4492DA2393A4AA6EF91
+E76ED59680B82C9F5B5E947787BF82F2181EAB9B66C6F09697189C5A4427E6B687A534D1
+17F8CFA1B23DA79E004847DC2A7E1DFCEFF96B34F645497236F1098A92C87F1685DC77B5
+391D225A9869E67011C008824B1036114155E8E3A221FD3DA5270F6D4D6A1B219CE52ADC
+8FDEAF90EFDE1BE4F8F326D453D832170E192545DA39473393036AD1BA24E37D1FA6A4E9
+BAD111007A5D13F43C86FA9B63E16503763A45E9EF6B52819FC9E753D834C12D1AD23ADF
+A0C1EAC1F32ECACAAA64AF5B7D6F9646FCD3D52D5167D73B6D012D092AFACA114E87D05A
+C002041035AF7344599F6923DD9B1698842602987B479B03F30E6A8750288E06573DE486
+358272F3889A585A3441210057F7D47837C648B0463585E24B37D483E727E5E4EAF32619
+573A7EA1BCD50C11E459049594CCE80E3DE63A1883B2AF2E20CDB4EA09F4B97C66704BC1
+96298E9EF8525A583647E71897EACEEBFF88622A1949DCEE1F6775E0A55BF1DA15197DBF
+4FF318E49EB7E2CE31484750C4A208C77532CAEA62910D228D3E01553C089AC4A4234F91
+AD8667CDCA1C3E2F2A0C1ACB0581798EF9F0036306B85B92BC54261AB3B4D28396EDB866
+F1F9E60AFB59CAF06F28D5EC39679CFAEE36A38E99495407258C225C378C4880B7FDE4E0
+EED621F36ED7FE693975641970A70B6FF8C7CCEB32BE3648A062C62EE3A7226C97929019
+F255FCE2A9A28C34C8FB12CC205AF3F588D33502BE0075E6A618D75D4BFBF65309F91E69
+52CE0FB280CEE1B0BB60BBE844A29B1369D5AA63FDFEB74FA6350DCA61CD8F87B2278DBE
+62ED3C1F924AFD5121DD1B821FD4CE9A799CA16EA5119880737A4F810687562A50DCF3E7
+8D7399A1DB39A736A243D2054D1A0D981F18F73629A9CA6475BB78BD866C4C3FE386DF56
+197E8C70ED84D316B8CF4AD7F37CF5010BB85351EA20EBC64E4859C442B5363F56B7B119
+63FDF46D40D23DB35D36E3DA803C2F2C450BC01E82DCB7F133A70ED6CDF4235BE4E7EF9E
+555474947B5440EED43814341E034E8741F50985A113A8199E17EDC5999DFA2D112F9492
+F1D247D95AD5E611F886A96CCC8F10427525188107581AF003CFCAA4BEF02A577DFD3E45
+E79CB7ACB3D5B9540C6EC59D286CEB5C5C8A4E79285AB787A607E9B6E8FA220D5D58B958
+7640EE42C9520EBC1C1BA3594257D43D6C554ECB17539C8E982FE86F47EDB9AD33B52D74
+26F209F28304E57C8E229AA4DEB596D21168064EC0E4AEE1820F1314BE5441B99FCF9CC0
+666BFB47EB91807DC243121D4FB5DD29CF68BB9AF6CFEDCFA5B8337F29AA5B54AFA2ED42
+5AB8FA95295BE489A45BAA7C9BB774F08A0FE3A9868F89A2BB463C4C543F602FAC3C8611
+E8B6B5C1B29AC493AAB5786E89BD7451BB8D3AB4B3AAE6A7916CA9380D2DB25230987B73
+99E30346738CB89257031463D96EEA69E4727B0490A86DE6FF8C319E6E79364EAA4DF5A1
+520B595EB701B1AF615AD3B8385F3D8DE00F2777438D10F6FD30991AC30B4DD6269651F2
+6EEE839D511CAFD40ADB3514FE51AB1354C832568649CE7B3C3C2CBD4DFA1696970E8F4A
+9810135F543969BDB1B2105210CBD16EFE75304F9A5CD799AEA0CC8D437B7AD6229FFCB1
+F66F0358FDF5F65C1BA022F57700B1129A48539E32A6D459946DBC1FBDC3F1900B3052A6
+6A2BFB44109FBEF0180A483AEDCC52A78024F598270578EBE1DE295BF53E52C478236D9C
+DBF764BF79DAD6B76227034104A9AF167099744C112BA9A9DE9B21163182E5A44681A1A0
+DD8A022F65576037B329B412CA89078C88098E21666F2EBCDED17210838F1051001AD407
+84DBCE27E13A09099A73FD6B6C8A817094B5F0B4779A542DE3680725E52F7D5BAB9D1953
+9F55F3432F7008F556C360788C86D5DC0184B058761CFDF313178E7EC5657E52502F0693
+63F9AD4D423D6D1DB4191BFE15BF2310AE2C50A666C264A45C9B146069323466CA1338A9
+F2DAD720653201A8AAF5A8309C19995BA5593DB58CE2D74299C1C9731031631E4410B1EA
+EF8D5FD65178B296E5E70B7E4355010C1D30D6D72447D9DB0C411F029CA5C4046332739B
+B0D39FF254D33224B59927D2C320DF102403E07F671D5226C2EA58F32EB3F8B33B30497B
+9FA49B3E45115D794A11B3B6E2DDCD022349E21962EEBD89364D8995A8B16161C465DFFC
+E636633A59BFF4136270211F307D7C27E74B0180CE0181DBA2BB37D6DD83B127C774E2FF
+25C6C5CA55C102AAFB696BEBE5876C417D93A70ACFC0D10887BB06D58493122C0A2EEC1E
+1116414649174856406EB8EEF897A6366203499378C8B9206CBB161D19E2CF37DBE850F3
+6553BB2A10B5D951804A2A72A3E5A0AC8DDB41A885B9D8D4429D6DEBD268A117F7E65815
+155934613F411DEB0DFB0F9B898C6D1EB4C184B38BD006733EFBF02B16A119FB1AB988CE
+CF9629A4DE2012AF146B1FBF25173FDF1EF576AEF200D5EE9BB12B94A948A4B326882882
+EEF4615DBBF430AF3A6C347A0C39CF24D36D617A48D28585A3A556DF9C82A56722DF9FC9
+29880E1886B4881DA59E22F57BF5CEF678FE6A2DFA86E51DDFBEAF81EA60289282EEE8D0
+5EE47617EA6C977DECC9E6E66013EA801CA2363FDA836EDFD28FE70B2EDF8459401050FC
+289E4395C602B5E6A6A990E81B19361DA37669C941D137F8E6B4B1BF97F22E67725A351F
+D8EBC9647364402C3AF27377609454A4AE34E5C043239C0B97ED04477A48AC4898298C7A
+CE6EA3E74328E05C841116E53C84DC2917AFCDEBCD7D7ED9C2891F551C4F1126D3ED5C46
+231657E86B66646592DF79C158F0392A1C58FDFF7F723449AC482F588081F3E6D42A4CE1
+760A776A6F4C4CDBC323C0352798697C036AC9F90A4B36870DB2FF752F9542432736E527
+CCEA85C295C8A0351F0CCC86B62CFC7C99B7C13AE0E328CC42D1CF89D910CFD97F622ED7
+2DD441CB01D03ADBD0DA2577A0101986FD52529BA508AF5B7CC1D4A457EAF822A4B9AF8D
+66BF53E14197AB4BDEE0D9A650C722AF76E10638501BCF0796C5F6F1A1B8F4AEB9502759
+59C7EF5B8D1B4026521F8EB47B8EA178ACB66E87E28A1ACE88DF18CB71046428CD0B7449
+3E346BE9875EB00C952DDC82BEEDA34CFF8BE7914E16D344179C1F12DA2DC64D20D9B818
+7E0E3A24626697F95A2C74B04519D047313918A01C1AF3D9127751154426907A0E1E04B0
+02E46CDD467BB7509202AD439A337ACD5995CD122B07F731DB22A097037E0B4993A34656
+F92692A8A04D6E8C3D70C2471FFA14DFC654ACD0D2A42502B0EBA3B883E528457C582BC0
+38E1E6CCD23446586A450D91E5488FC8326E749B953EDAE14D9D97F296B8D7990E6685FD
+8483B21D9B3301FE3A8DB35C2C6257B6E45D7680251BF14F36FACE2B5247CFEAB63C9EF5
+B47E8432026B6C15A66DA2BC52BF24660BC5E84E2969F49935AE8521AB314E9C46F1A716
+D31A539AFEF32CEA65D6732AB07BC42C3B4DE0925A0BCEA26579B41705DB13037E2FCD10
+5C5FA3FCD54E9AB5E443A21BD1817D82A8156222D4D38FFFA8ED7A2CD981F01E0CC8825D
+25F1C70D72BD5600F937651227F22CDE5190D0A9322BFA098359780C4F7E4E27FEB3B141
+4BB4AF84D8EC1182899AB213097949DADDF66DBD6559BB74CE9A27CD7654CCFFA659B086
+12BF2DD821582BC08524E4C7FB038C3A7065E52F4D7C474A008743DC90DD84B0A9FF4B16
+48681F04F46711C93A6E7B08712EA1915DFC7757294CC94341CC79359AB1879C9A7A075C
+776DF87ECD4A3F81B781122F56519461F15E0E304DA5E4F639A53AB36382A1C980E7D440
+B6307620D2B42160DA97D3BA77FA13B8D92069589803770A25324AA116F5D45A5D000003
+FDD465BBC61B723DFF43065F7F88A918F26CE1B55A35F68CFE6EE6A78F8216B1132FEBA1
+5754476B4287B973A1BB756751B67A5E1EA859FFDCC84DC8CB9DC8B32F45D0CD1A0BF9E0
+738645709F130AE1A8DA3A2575AD2120AC645BF3135097E64FA7124877F4B957D6697E51
+97502858C5DAB54692A4B67F2AE3434EB0F28DC599A5C2690D4D5A4B23FC76023F8B86DB
+9FC7313E5D4EF525C6BD34AD8AA8CBEF212797BB262D44BE080F16FCB6646622050A1F8F
+69DE52C47525055939EB9C1DB65D814288ED7416E10E967E3C4888416549251953F57AA9
+AB89287ECC1F04384A6307C163512D4E0880EBE357ED4B6A2DAC70C30AFE95D244B7054A
+A0C08CF883CC64E353ADB882C5495618078F3041B5DAB48DF861017D1EC221DED98EDD12
+12C76FB26AF8842E47919C8482CDD245BA8FF002AB67C2461E2E8945157A58E1D2955C4F
+4C82FF53BCBDA62CC9D77C620A204F53680572F4EDA2D871FEC5BF41ED2CF7C874D1C9AE
+94067887AFE96364976D48E33DA3C5F12B38ECF443C1FCCE9EE5C9ADE0B6AA52B5806C70
+D8D908F14E85FA549B0C2EE0A087A72D37B30E299B59500C8322112BEDAD5094E0222546
+4EBB646132032CB8A01C8514776777143D10BD6871EF817D8642445634C37630A758F742
+97314958A6D935D0D55DE00C649FAAB272EF1E4C6CCADF0C20913DBF06D68620C6A6C238
+3CAAFB5911A7E232176E5B02D35338E44A95DC48FF54C138FAC908A471EA6E57DB8EB894
+FF6A2458B7A3A5D10AFF964ACEA75DD478505B2D1414401352220138172AB434EF358F1F
+2F3C7DDA3AE06F8FF9C6E1892903784F18D55A3E4537847B4072A9DD4BF2DC7AD25F4697
+69C5E2C5099E333CDDC535EB969F819095DC398FC3F571D5F858544B8DAC651E082F6A94
+810B5205F9E4511123CBAFAA7F73471295E3E1E2B94C37B7976A19DCACE25ADEAB5C0EC3
+EB063EB251838D478EFAA1E95E6CD15BF1B53E54C3F33411BA2078719615971F529F2A35
+341FF40C49C89C6E340DA0B1D225AF608BFB711F9DB1FD12E7E6D6EFB85C7D698316018D
+2694FE12C2E4D659F0ECFB2FC46E1E8A84A999E14D7217698819E5EECBCD1B6E67385D3E
+30AAA04398265C0A22472A5E9D7A9D0A4AD3161F7FE87734F4F3CBEB72502DCEFA534926
+18D803611D79FDA6CE6A3A35669BD891F4A27214D204EA629C0D59C02F27DDF6AC954911
+C50C4F7E2CF8DD533A20ACF5F78E2EB060926E86B5A6B9B989755AB91B68068D4B5033F1
+5EBE67F8D18A877549C0190BBDD63ACA08184A2391C556BF60A81E4938876BE7CC1FA0F5
+E65C2BF912E15857F6A08E214BF20EE4C85D0431236BD52353031FE7965C9C1C29BDA08B
+6B8CD63659DA18EFB40FA620113F1F10C7E26E95D60A7B78AD2F281586DFE788C6C688FB
+915185586C0C2D157702F908AD71EC0A220F56524ECF316124C0FABD44961A443415456B
+120EEF26A02E93BDF0EA5BF83A308E0D2DFF0C107BDD03EA426069B1B7206EF2022EAF3C
+95BDE0056A388A3CD08B6BAF40E95A16F97809979AE5AC68FFD906C2C2185850535DA2F1
+9AD7B46455E42F1206B84458A1417774BDAB25FF6EE1EFAADEE42054D39AD972C8B5243E
+550696933C6762F77F452C8F3CBFF930A57C99B2B48B2219467BD436560734655D3FD4BC
+FE9E80C07676BEB558A808E7D113E26B03DABE939BCE35E036791EF508102B8A3FC958F4
+301981D6368FFEED5B579CC62C37DB830CBA08FD4F7DA32F7639A3A144C0F99F50D82615
+7F11BDA72BE4F023557CED7A59B682C5F44E5198551AA89F005FC12F58F623F1DC6C3A70
+3CD886784BE4DB088D3733C3CB74ED1425658ECA6512DBFE463D9F609F3511133A39C307
+7A24ED73D1D11255545D1A50C85E9E57FAAA1647FB5E50514B8CE0C2B60B0F8C9967A04B
+23A3F5BC928592C65ADB6B7ADCBE3EDA91D4519E89C96E800C65867D76067C34AC0A7FF5
+1AD50609FA1F6490415C3B673DFF78FA269FAA382560D24FE430B32A1B7F679676E2C01C
+62FBC752BFC0B4E3AA27AF5A63C0918781C0F7B49D302300FC4BC98E9AC6D8DAD863461A
+FC578040B19475BC3CC20562CDDA73DD9F291144BA7F4F7ACB4A9CB0D7584B1E29A0CAA5
+314D3CDD226A094EA7B1446F16FA8848146C370578151349AC2461794C01EFF24D36FB25
+2F0333550AE2BB23A8FDDEEBFDC43825E675CF9E8FC0439C81DD20061F8A9690A5A760DF
+89BA40216B2CF74089334317F1BB3B2BEEA8EB31CB63811F5BB586CD4D3972431F44E45A
+5780312EDF7F1BD71DB837CA4C1C88BD7875D56ABE6354A77B58F7950730A8D883402E52
+F22ABB89B63776543969101757DA5DE3DCA264BD05A346E52221194F381213AE8B60238E
+1BD7380380845395B7F0197DFBAECCA882C9D6BAA8CEE870D37A0330F43779310006456B
+2C6BA59E361561EF3A9DFD6A91829C0A44A5326CA5C47F4C9385BAF25ED277849956409B
+E00750BDEC667C2928D5A24DBCFF9B3471AA03090A037EA6B23C0F020F9E615393EE85BD
+849CEE4F6BF49C684766D7DE715CBCD0393311A649E4C1CC1A14E77E174B90F009CDFF8D
+CA5756368A27CFA35F000B40A205246A067F16E3D84DBBDBF179B878A26369A03E31C7EC
+474E7CE6CE72FC7AD195294ABB952B904D843E27F301E19DFF016D6AF203B38E8445E9E5
+3323051DFE0DDA2536AC513D749344A959B2C22CC6BDCE98F61EAAB0D5BD1F1E480001FF
+A6E939EDF1E032E387768F4382F5CC0E91E5C35A327FEB3C7E0E4750BA5DF206802AB692
+BE02388CA17B93FD3AA20E052E117DA3C9ED16D01BF38CADD23D2BD737893B106E193F5C
+8C59630C04F16375A3AADC4E7B568295B6909ACFABA49406D887A91127B0AF34A6A58D6C
+45225931542FB24B0B410B3EC218C2F08D1335FAE0D4D353D056EA39FCCC09BC9B644ECB
+B8F69A4D97EA2BED24242DEBD643F4483BC629FDC63FF3AC408362AEEE9F8BE6AD3DBE0F
+4C599A43F5E1EE39E645857CD43413C7BB050C469FB8B157E9DA567335C168608406E3AE
+27D3E50466A417C4729C5F82BDEAF05CC2244BDDB7FAB28A2B3D97CC78E95D0A6DF496A4
+3363627E321FFEBF588563D0F4AB105DC05E065704BB4379504D69EB2EEAAF192EC71856
+7C4281C1962A2486B324FA17B84DFBE779C20A63E24792D8E76CD17354A3804226EEF3AE
+8A3CA1236D6B7570E1ECDF3A011C2525B265B63282303A9AEE485290E6DF9544C9996222
+3DA6A4432B8FBD64B3229D4CD758C387768A44036237B19E0CAE76A39356EC50067119B4
+08D36105EEEAA8F3E59712BF3B08CAF8D851C2D0E5756B3DE2508FF2DB995D71A53AC699
+9768415BDFBD3A031C52A5E765695D18103D37FC9D896F0D8C1586AF6A29CE4582880FE2
+FB7B3B89B7D1B8BA8F7D8FFC283002479456E702C75A08AEEF8BAAC8978F6CB9804A5441
+5FD8110C254C7A63CD1CD8B4E58228C228A2D9990628647F0EE9AE7135E81F87F81AC1AC
+3805F1E0C4AED27DFFB3B2A28A503DD5CCDC0E6773B6EEB58DCA7C9C677CC7BB273EDB91
+06D162499E6F41F7B4BA2ADC4363D68CC3A89DA2992094EDE35B5A20EBE7867484447F75
+0E48B2F984601503B093F90304EF1CFB20AFB9870A0809E5909DF886232FEC582FACB3F2
+AB51B542ACDA8DBB032539EC1BF7AF0127C572AA53D2135E03F2038B1A0D43CB4F9AF990
+B80655D4AA95563CC5EFC76B3C21A3DF2269E75F78DAFABA211FB199CE983E9A5388BC5A
+88026C016B56755BE3CC919D2E03B6D475BAA5A7A027A2A8C252B14D6A6A9A7AF37B7229
+F2C4F7FD2D7D65801D2CC7C987F2C0F22B0ADDB4946565F3474ED8283275C47F26E7AD0E
+53ADEE4F7C8AEE9C802F495F3A010F2DD6066D0FD0CA4DD8E6FB748860C4D38142BC6D84
+5DE92199B76EDDD4469083F6223EAB6D35980AD26BBFC6335A9E426EE68EC15E3B62F2E9
+429822BBC7E0746675C46A6769D5335962D40DFF069CA95ABF662C4C68D3C2E337FD5CFF
+991F8697E22FD450F4BF77F930884068E6E8AA7E5DC54772D623F32D33767E35CBAA16AB
+A87080486600F4B054594AD6415127ABB7CB72305E19270313A492F5F4CE4F69B8B3261A
+B1899F1DF297F74978773D52005032E2102A31F5C42EAA20F05CB9B9A35FFF40CB093D34
+672D9529A06436FCB364825347892A25C250DC3DF61A89A09F7E6B58A4867A53D6761134
+F32E4BE5EF9254D54F273FEC2139059C7501D5EFD38DE94B0C41EB82D83BC72415E92A94
+A7FE4E5E1B9F54103A53BA5FDE32702AED8BA0F6DB87F62F817EC35FCE9EC8858F726EFA
+F96018FAE7277DE068A266CCC71C172597759651F43D550E1887E3831F2F8EF363DA63F3
+53DE4258FCE8D5F1401D51BE0FF7AA1AE7CB057ECDBA61B43E7777CECB3E7C85E0B38808
+9EBDA5AC5E6EF735990D3AC572E26306BE740C6C1662541169BFA461454BE022AF1ED9CE
+AE5BBC435A3E6D8F50A634B6B4A407FD6ACB4EF76A0AA6A8764D6962FA0D9D42C56187E5
+46C62927EBB94B2C507B1E469203F05762024C33C656020664259865C556ED1D833BC652
+E55C18D0D8D4602DD41FEDE57D3BD29A1CC77FE6762DB2D2D20CE06D64CD2047D94B1AE8
+7209485194FF11C0027FCF7AD5C1B85881E36C486F60BEFDF88B86EA31351C181787DEF1
+94210B1761E9F2CF19E3BB8A8EFD838B2FF85CD448C6A0B8A43E3118F038F9D341C277B7
+31FB0A4189EFAD753A216CD60CA465662715E6823FB7C27BB1E458DBDFD989ACB3BDB2A5
+43939EA13D92A5D6B787FBF63C5EC68B696A0A2E39FDE7FB6865913A46ED4A5492EB6B2C
+7F62C489B3125B870865C64274E142BBD3AD4752982B4DAF3D62D81D0A7AC733B0F39597
+17AAFF1052F5EF2BE043AEDF45283A63E83018539881E97F6C5A6F3D03E84FCA414A5F60
+2330B372BDCB6CABCD7D246295D67D0FCFDA3C3590221A0BBC90B76FA26E9C8AEFE0FB0F
+FA4B7C829910E1CAB1451D7A4F8DA2CC2C0967573D4A7EFB909984E5DF9ED2A449D695E4
+C3C3F83F1798DA9F16EE2F78EED02C26EC5DF49116E8EB393D1A56468CCECF51FAC985DD
+C0CA2A38E4BCB570BB04D9AF306F9C8B367231D5EE0621ED60936D92F8F2D1207A8D1EB4
+14C1FFA806575BE31E2FB3B96A428E3DCAD48DCF9A09BA2CD1ED55A0399B8E5674445A93
+72ECF7FEB819EC226EF0CB577A4C9AE2A8D4D05BA134B4E117C97BD74338FB27BAC05127
+0F5E47B67E2BEE6AF6CB69460C634A4B961D195AE131B06BE269F93D68742CE744EEAA90
+7D2C755E5E84B7ABFA1B431B04C2A49FCA735500A7447D69270D09A04F38F4E11D0A6470
+65C2BA0AA35F3AD7B511A45AAE1DE04F5CF1C5A98FB345EB9B685971D6987D6DEE1A6500
+3226ECCA72908B277DD25AA6C29487D0902995FBA6F8464AB69E9421D7394B2E5795A9E9
+8D5F910BC8F8347D5E76FCF9EE4DAF130C41E241AE2B24732F9D6376527B09D838411455
+4C323AF165C8684C7A34A64110C11BE3DC042E0F82B4B2AE4604365558A5495E90F4BC0D
+26D2729F18F181488A3B9E75DE9E8D6624D57B1760C87B1E91564791396DB905E60D0489
+F61C0180614CE103884576B23E38D5FD049AA3CE256B6DDA6332738552A6BB7963149B55
+A6BBFEC89FC0EA338117B140690D04707FBF58525D459BC9E1D5EDB412DF574F8C140106
+5A9A64FB168E2C645836D17E924B0A61F4414480D218D6B1A903F62EDFF11AD4E3A2826E
+AD40F1C3EC10D3B2D05B838D65FD81893376953D15DFC3A5B5D18286544EDEFE78F9712A
+BA7FE55A98914DC7C1881D0792E1E54D6287263C0945D7B559C2C13F215AE909C8B495E2
+37BB0C19620B172BDD663851133620C2A081E795C138EC1F827399D096FC029E5C04E734
+084E46A6BB6EAE8141A5B4C8E0AF6BC168112480A1E38AACE497232F0007B22060FE1436
+18BED246A70C1B29DCC9FAC587493D41074B306BA6409A5D599ACA8436FD0E9B6DDA257A
+B8625561BBE68AF10578092A738747394B764311BE0372236210171ABE7DD93882618195
+0EEF4B93E798B8B39124A9E4C8E398BB36027E7CBAA317A3A464AFC0C286540C03405A36
+B6B14644295227727EC2A0BE3AF59E8DA5FF0CE0E66389C4C1B07499E6251C32ABF87B1A
+D37860914121C68BF48229925167937AEFB38B114A0DCA73C789F3DAAD7C96D64236E369
+9B453C7E9A747AC547C50CD6CE3CFC743D37D2F915B2BE2FF57BD1CA284827FA76308260
+293DCF5D93DECBDD2221B25E0DC9EDF2B8BB31D5773E4F40678A8E552798B9FC6F82E076
+FBEAF2B2020BF985E791E10DC5FB5C1FEF80C8E77F0E3955CC6B9BD161D86FF7260DE313
+D75953DB888567059696E8326BCE5ABB44C983368EF5F60C19989FDD0399239984FE1605
+B6FD97B9A8F8833814AE521E891B619BB444C1814E7B4D6FD5C5C5CEB727BBA8569AB128
+B0DF8FCC76982C335107E22D9BEF3FBF0DFEF15BF8282ABDBA8B996704E5F36B62CAB535
+7D533DAD1472179C6F708932D2633B4D1AD49356E3E0E61F0577500C24A35640372C33B1
+C33F320E0AE1A84F3C3043C6D52F994477CA1012D951E457C48186DA3080FA8954EB5106
+6D888C7D0FF0846124D4A229A0C2FFA7C09EDB6353989D8F9A52F2956E050244101F592D
+39B13AA4BC4102431798C939FD2C81205FE0393456521B6B5B5D2057F1E300AC147A40EB
+61A36388FBC5CC06936B456F1DDB41D642C3C9ABBCB46DB6BDC4A74DC3E8744FD33A3156
+A3DE1CA2D530908F8D2E5E5187203C1D66291D87311483F72C7FF3E752E77AE27AADBA7A
+5C88405905B5A2EC58D648331DF3F2F635A7ECE1B76DF81EEAA71B5A24A3D8775D8B0376
+3C83848F0F8E9CC18F6D300A5383A3F7ACFAD284235E74BD4F8A58203A55CBD3EE8C523D
+0709408ADFA5846E2DC04ED21B38DB15FE3761C759970712132060ED7FED6BB6A0DD0621
+AF682628864C5B5F594657F9B6D199DBF83B64CD8525865BB59E566E0B3E922C04A9715B
+9B25150FDC2A81B193AF873E9F9AC907E89A1EB2AAB9FF7AAF428454264C04F86D578D37
+64B2F1CEA0B6B4A2503D9B72B870147E904A0EE782DDECE99229F491B0BB8157E7C41AE7
+A84A3774107E4661F9288A7BE9CE5347B153618E88E5CE3F7B30EC832DDFDF4C23193409
+28970481F8451A0EAD71955275004AB7E4A146CFDDD3F1E45B76CDB369B9F982A78AFB89
+C021A17BAAF4385599E48235E1121EC3E13CE61EE2E24752E72D49CF9FDB81A754AAEA2B
+CBE955EF49DE15356FFC390F2C85A1253FD30EB628CB4932AB8CC5A75AEFE4D56EDE7481
+99745E2E0039D15B7A1D49FD740A4046A3C0E95407462C0F00E2014F4DC2B66A2DD74E82
+1A6625F96A2C8516C77F9F0D9173D624FEEC530A709B470AD87EA62341E53350F5C43B89
+83E56045054453A536A47450640F7539E28B383D11382D36DFEC87884768736323AC7C5B
+02407B70B322DEA952393FF3CDD8F36EBE575F3D316296D5D98EE8E38F3C802B6900EF99
+F86899A6945A28BDE5237387D9417FED1AE7D1F3B28593A3D4431711255F80E5665B0FDA
+49967E4488F1141755A18AFC8A0320AE93CA0EAB8DED6D728862AE32E5005B9E6A8720F5
+DECF0B57C351AC876D0F0A201840E1D9E66368C0F4E93BE479B668986FC326191D64C883
+5E9B0D3CE263C6CAC6843E59549F792DCB52B42580E1F3C0DB2A37E836351D73BD555612
+E9DF26FB30C2A94C9A3D92140FAF2116C52652E0937DA0810492B255130073C13462C885
+3FD4DB29CDE19E74BF81D7000FE18E23C60F46E8B845AE70A524BE92424BAC92F0EDDB4E
+C7DCF0B3D22D179558323A902613201BC760009739DBB468E159A5BED1BBEE0F462E7D21
+BC4E9C42138717E3BC955F33D6829B147F4A05832A8AAC18CDDF3DA9D643B66B2FB0CC18
+474E128B2CAD921EFBEF1647E132333458CD7012A29057E3015A2EADFB8ED9E25E1FCFA1
+5E432E016DB8299FC04D0F04F2B1A059917796F55F8D301D6A5830D897BE1A9552C8E461
+69B4C10040D68A8B8E7CCDAD8A20B02DDA725AF7227142ED19D0C8DFCC8EF1385EBF2359
+338560C219B9F8FF1527BB53A6B2D04784170EC7D8E63FE3D1D2AA7F8B9ADE42692BEDF1
+E64AC3EFF0B2BE0F05BCFF52F8BA8B428513D6647930BB0131E7D187D180840FCD960D87
+D05B56EDBA2E44533A588172A8390378ED1314F0DDA0044249CE7FCDA26E579CAFA6B2CE
+00A84427FE6562349790CC5F9F3704F760C2FF89EBA4A0E3DC9F9B834E69CA72614BBE45
+EFB6829EFFB816E392C447880DD7DBAEC0B0575B71E5A5F9FA8C5BC2CDF74B9DE1A5B47F
+EFE2C215050D6C03CA160C543958CD669AC3085996100C0A58EF6B42101B03DD13AECAEC
+33EFDFD8274400CB52FCC2D35A5B5960EAD833A086F5459A990A62FF7A07C7EE259C9665
+5CB8F9951ED9F6DA93DC7F1C7CAB87FA7C7017B416B18EC50024E13D09D5CF5C40AE4954
+963323EF197CEF05F83E85E245A1A802C84E74413D9B6721D067E62423C8A1F6DCF666C5
+138F13746D5EC2358AA6581A8516AA01F8CFC60E91D2E2459288A490E5ED53CA02F5D0AB
+880D58424E82F59466895E41820E1A9FE150F87E11534B13DF7219ABB9C988138EAE8648
+732469ADDD7AAEE6E40AEF08FFC87B524A0CA40EDB2B816309D20015B2630FFB8F33ED41
+08E907A583BF4AA71E35893975D0F60B2957140819F2C3372C50ADA5191915BAFF9228AC
+FA55AF551C4035FF4D133E776AE1AE868C76D5CDE98D906A9125566DAEC76622A718E2EB
+B5F1EFEE137DF93BD963CFD59CF2564A10517438153DCC93BBF3B14EC5BEE60BF3207995
+A3C41EC5B77F39356A18B2851588EF79C469451908CF6637877090297709FE6AF950C664
+A0A084974004413D0B760190B442023A3536DB6C1C5179D63D4686BE4990ECA5B4D1709D
+EDD9865676B34BE5CE285EE6D67C35EF0F32B6C86652ADD95D68F3CB499F545C3629294F
+9623BDAADE094A6D0AF1988C4C7C70771702A330B242357A2571318FF1C9CE79102AC914
+522A3DACC57C36E09FA533751541DA9442DA871D543681919A83687C3FD50947A3FBE483
+4D7114D96C7013EC038D2ADF7D78FEC37FDA8535FF45391F5C8B29600592C7BEF0ED3054
+E8644373E4E26E42504C880BDD9B4FB61619313B58C2CD35651667C89D448AA688FFE8E8
+ADAFC38332D0628C5E18506FE4CBE052F52ABD3A714505409D144E1D69B905C2CE3050BB
+72C7F82D04BD53CF133431B0530306CBFEF527C01B505DB41A046B0F0AA0D2556EE72624
+FFE029C07C3439A28C29EC9579F28CB9EC7D79066587D8913E3C63E1CAA1B004BB118E2C
+1662BC6C1098EE5FD989EF1A3F70C87D8EF3968161D873BE20EEF05107FB54B013C3A965
+B5911959E2C1B7F4C9CB1BCD4A178EFE4BA15335BBC5718CAFB17A054AD44553866DC045
+481DBB7EACCB7A94474603817DFD543BB9C8FFAEAE04F0EB167F119F2DD48796DD5DF83F
+2AA335362FE0D57382AF6C34F509B6F3A387D539F6E2700881899237606FBFE09ACD9B75
+8988B19A6B1B71EEDED01B6FD6E0815D0CE0B66AB24290B3EE43663724C2EED9B3E2F3D7
+D2809AFA7EFFB1E262168D5208809733694B07833CF922F74E36A535FAA5B7C219E54A18
+4AFCFFAFEF81FEE5ED4AEA2CE11FAF2959B0538C21A1C9CFB0D08E8B92A8A947B5269C78
+CA9D8F579C8FF2B078EA566982B4B7C0CFB7742C74B736CACBB86D07142AD2DDF061624F
+5758B001F11877A6E2C2153B467919ED2D7BC3E845C74C518BC491E1C1762D5FD25D4163
+A8531F93BCEE6815FF2FC9DF9B4015EBBA87FE9599090FEC705C314545E95F9559A4BAC9
+A80DC85F2C7E4F815936D2541BC5B8509C4AF6BC1083514255456832E339E1933AFD3C45
+C2FD8DD95CF737E2EB35606CF35DB047C84DC69997A953807264BD2A439442F293A39DEC
+5E8ED90F4E9541DD379F45A592D65AFC192FC8300E66C4CA3308401BB9E07EC7EFBD0CE0
+98382956F5413B69F6D76485DF08A56D33B2CEA5917B86E09D981A41BDF13F4C187936A5
+F4667EC3262BE4FAE49F01625EA227641A76B7EE77F6201FF1E3C5D6722A0835918A64E0
+0AF9213C8FC0494EE1675C1BDB04A60F004CB81BDC1D6044BA46B50110D941B492FFB95C
+DB8F4C2F1AA20CA271B66DEC3B3121D9D14D73E58C378858C5965E8A4CA13026E2DBD00F
+21379E6CA0F9AFD0F4098DDD4A06C4489F20704F9CF92E8FF179D2156647D7B73C460EFD
+8D0097C7B32E992FC4538CDB416C1ADFC7C7A56BFF1C5D6F9CCE732A742715AC4AAB0BCC
+8BA931A51848B9723DDD3BC92681B1AB88ABA239A2F8345043754B3637E9CDEF64347A40
+527BCFE8A57DC0743EFFE70677B1297679DFF329C0BB46429FE600A7138D75E6308C1F63
+F2FFE606104D73A267DD4D001E5AA1EA2CF3ABBF280F97E8094BE3B4EAA99F227CFFECC9
+25B5F2287F3C7CD5CC11217FEC66718AB3AEF9932DC90B821AF5924206F65124DB05536B
+F7D1CDBE422160654924A5AA1523CB61C6D3A4B5E2D185415C44FEAE6F6BB5D790CBC760
+3B6CA833838C72241BFB10CA957F6B81CFF583E2C6CE650DB645C955B3CF2C392BDE4B44
+EE325CD73E57DB15EC952AFC05A3F2A6D9ABD678E4A3C4A297E4FFB55B63A6A72EE5718C
+C8D3BFDEBF407A1B8E1A70DD4753F9E9EE0008DD9C7F27643D01CEA6E0F8706DCC2F489A
+A5A76024924814E86036D21C22D5F0A9C5AA93320F870C6C62A955E0B8833D9D3A8B8738
+256490399E82E08A25F12993CDFAF2F2A736F22C5E057DD8B990AF4588F37AD16295EA34
+3E52CDE626BDEB3D6DB7DB98BD43CDFA4C4EEF106563D009DD9A85DFE955ECBEE2293C22
+C9E50FEEA0A67A6FE708577AF44CD5BB89C2BD0464296D25C54924887DEE95FF1F4503FE
+2AB3EE5C8D7037826DE5D55DC8A18DE7C6E5F130F86E80BD4C4A13593DD1DAD46B149578
+51946DFF970EE04F41F7803BEB1DC2BF96381C739E4C1B63073557A670F78811D0DA505A
+92382561E983F041C2DEE96C80CEF616E09C10DC59380678367F86878A3E803F801B0322
+86F581546E298D94B7DDB72D3FDEF307BFAA038C56BC791F021509E872106840B5B9104A
+F52053C19AD11BEC2CE13406098A76B186780FCD0C6A9BA70F7A6DEA8BA3103337CDFFA7
+591F6C00D7F9BEBEA1BF1C1D5888FA921F061BD768799990CEF5630AC5B5018D54112263
+98380F4CC4C7C8A20A5555514256D58776282113FD259ECCDF2D83855937FF2E5E2DD432
+2C55DABDA75D4FE39C303096AF3C344834446C6CD074B8C12DCB5BC6C92840CAD7E00CDA
+E280353C951E25C48B6C36AC0615E12572022A4DDF54FFF9A12A6EF30C1BD81D2F0E00DA
+D0FB9B0B820B1E2CBC9D63F6A04530410F2575345AFEE9BFCB0671A73C6C241788BEBF61
+2FE10D70562CEF1AB2933B3039F0AB9C141CA2DB723014FD40F1BFD729E68DB8205962B8
+14A8DA42B3B43A68F2361724055614793A903915165E991827F5F2EA27D782A8EEE9EADD
+CA630AF9D84D76974460173CCCA6371992D9BC27D96B12A0EA6022BC0C1E94594DD227F5
+BB6B517180EFDDFC5CA7B6D52CCBF220CA1182FA51D494B453C7D92197A1E74456475999
+47BF121E6BAF9317AA1BCA2AA6A48B9D6E3064BDD129ABE0C0E7EE52EC92CFB4949AD406
+46F46A165EEC65873C4E444E8934A3911925294593543FD9F737C4273869B2E7C87A1364
+66E4A4D1EE4CFEE341C795F5DF4943BD8AEFF647A80AB9D2E62976D7940C88EF53E5EB3E
+687A20EA77601F9B97DA845948BD1B8FC719241374F969B865363CFA731370E05B499284
+B3ED0091C8FE62F54A6A4DDD47ED1A8B3E3BF68C690BBD91ECDFA0AFCBB9BE917D7B29CD
+E1B0B97E07A03542E75DB0F68AED23996D35EE3AD489D5EB321A5AB5DF3FE6CADA7BD702
+6688D17E3D1BCE6DA0D547D922CC007760D36D97126ADCE212A89560C3E1D5D0F690E4CD
+A7B02500FD69A4B618B7535D7AB867418A4411A73463E40C17874E04CED2A85185BDAE28
+BE765D4007259055DC3425641CBF16257BF3E231B1CDDAD9D6B7CADDFD03C90A609C0873
+CB017ACEFC617AE09BC16BF7A448AFD05208E2CE66746B378FE8840825CC873B3D9A5CCF
+1F240BCBA22BEBD45647E19BD16AC8A83242F005CE0493BFB5FBF1FA8A285354C7B97140
+7F93F3368D4B19A7DF048D8FD01D7BDF8BA2F15DEAF5CB8FF6DC2F340207469E61C45699
+03C0CA5B1AC398FF4A13226830645F0E976C12C15DEE2D44447ACDE2701A99193CB287F1
+0F1592DD4B419ECA43ACB269B8CAB4B4B385A5B16568957C49814302B9AC127FC08F4361
+7F9100077E4EDC78ECD8B5B87ABEB0D3D4A3BEA763F1BADCBEAFF2F22442BE97E344C2E0
+21213E30D5A3320DEF20756DD4666C83FD486ECD582090190D6754AB68274E513E279EAC
+A3DFB42EF2B5D89F0FA432D833978FA458238E58C624287D6AE0DAD995D954196A96CAE3
+3C194AB7F7D9E4E672293E45EEA0795161CE9AB8E843382182748D149C18B30CA8C3B2EC
+20EB83C335AFE94AD371EB467DD5F04B5E8B9133E1EEC0E27EAA8356AE2CFC615EAB83B0
+FE08522FF79D672FD34F662D774AFF495437228EA9BE9F49260CE6CABF57AF912E2383E9
+99BA0172440C71251049231E36E93D531BE78EAF18F10106F4762AEEB762CA9CC9445121
+704CF227B7C66D620F6AF47189B28A04F8A4A61745F11EB08D7A291EE19C0B319CC43003
+D446CDBB90E3C1C9B382F18A2260338D9770CA653EE6542A3FA402AEE5FBA7204AA081BC
+641E8DF49B48B5C5005DE7A58DE5E4CD454A485263432677315ECA1F431D01B79525EE77
+514FE6F13956F4A3B968BA20A3145100A1C519D1C3172925451E10FEEB273F37F1BBAEDC
+B3499EB4714C48E934F9D9F4A0ECC7D5B2F06546E96DEE450845C688CAF5C2FFDD1B1205
+38B62B195A18217EF6934023F3741EABC2416DD342E6A75276960B5407515E4E6569EE80
+3D5A84B3FE087C335C241D1EA86611F5EE25BA4AA272CE5F41162B2B831F91A594EA67E9
+AE40DABFCACEFB8E1525165690483A1855C98EF3A00AC4C85BCCDF01A325FCBF746920F6
+AE19EEAE7D42A6D059E249CBC6DB103182EC59028CCDED67B3FF1BBD9EB51809B4240475
+1DDA508FED2423EEFFD34561BCE26344E86D6DD589696D2A9C3F4951FA608E28457D50C5
+9EC9E36F9B84A7A138D853F5F10A7C96996591234EDD7436D9D4C5212D5C666A72121A5E
+62001753FBF161D53887F854B148F3A9962D9507F70234541F7CB6D2881D84773CFDF6A6
+A99642FEAF7BED91FB885D3AAD8332E77D553EBB30C43E1101BEF3036B2E43D96C25B481
+48E47B99AEDD53BF42E6F33275CE06B811F4D1604546C06AF0484927F25BA3955899AC32
+89CA7C64759106D6695FDDE1AED9CD6248550EE384EFDAD9E5BBC56F04A92E6B207D9934
+C1EB729F4373D437119E634BCB845EF8189C9C3467196B1F8A1AA653DD7BEFF642BD63C7
+A2C4B03E72A8836288BCF4AD3FF9513034B99B6671B1D3152FC3F4AA347C9D1106F98799
+37E4DD2A347FADDE00B03F9BD697BD05E9AF6486BC5BEEB264E24200ACCC576339120575
+32ADAA0C9B5A2947D52916148DCCB4EE39D366079A26A94BA2F35CE35AE3F761E7531CBC
+D05C5EB3012477B29B092C3AD78C276AF8BB8711A78649C235CB805145DFD06898B85CED
+96FF192BD9C8D4B4205780A691C2811F7B1C55ECFB19C20BEB66F3DD257B8D9354D5C45A
+FF8F6CDACDE33D795A7BF70A93AD990AFC27ACDDCF22E72B7ED94297B9C289FD9DF13B14
+3E9950833E3CFB93B1C32E6E5F5FA42A42C00832F2EDD016151DF45474FA6503C3A36E5A
+671858B2074F2E1C1AC2096A35B208C1117196C30F6C513BC8C941BE7E4924C249E45259
+3364688E449D301136691C11FFCA4445D28F0DB5A0C2F8B01066F8A0971E1CEE3D6A9EF9
+934119B0BE2D6349B64B56A86355B8B762138FE970839BC7CEBE0FE14604B8B9F502A494
+FED23F7D117B90BA6AB41653A1F15EA47B1E21577F5EC7BB5F4A64EA64D08B55C8AC98EE
+372A26D9A8DB940CEAE6236D67EA8460E5BA1078228FBF7E34C47D72F6C9130CD43FAC85
+859DD1AF5C37A8208A72B028B46DAE6FBFBE9CC13616B8D941EC5CFFA4B4965FF769A66C
+296A94F27429C794B0AFA1813F8E27BEA29580FC0AFDAEC56F29BE3D2C0361135691A978
+0A3F475567450AD6CA29D8A4A29A18F07ECA33FA57F14B1902BE1EE9A7C401985FB8A589
+5B18E8EE3C7A0C8140E1CF18E4B7C424F83DF0A6BFF8C2D8AFDA747F3F3CA1E5D8CD20A1
+F729DF63FAC2E538E8DE817AC33D62B26847970185D6239FD070CE89B109910540E21295
+9776B8102DB97A0DD77A606C708D06F8E7A86A604B80AA242506D62E06A241EB60325920
+FB78DFBE0BD352F1A91379833F81FE9CBB761A92444A11716AE3AB30CBC807A78C13B726
+9E775921A5D282161F46971BB3347D6F5575F2BFAE103A15F5BF0D74A30B7167FED89B75
+875D19400A4777F5474812EE5AB90E004263DE0FC63134E34E090C52398077FDF949B124
+831654AE213E3C93712DBF806C3DE1D22EF45C169C5A4E47638254284E8B2B779B6A516A
+CD9170017FBFC617B0D92532AA90DB8D6A7EC2F3AC5EC919FF8F7E2827BA7E940B4BC1B7
+56B1770F69C704F7E6A97F4867E1E3BC7E0B577D6C301EC0A50FA2FF47FED38DD7D221BC
+844AE7DAFD73129D7D907779E8B55A8B4EA9AD1188248AA357F351D706EB6E7673287849
+77CECC40640639DA3B950491C9FB76325237C4078ACAB896AAAFAB15DA7C7B4D2670D860
+2883B58B5D763E371BE6D13FF6915717CD0700DBEE67DD0DAE65E4067448CEC4088862CE
+486BBFE1F0361A16E6DC0F85BA30A78BB00C8CF3FF21E9AE269E17F3893B40EC3A01878E
+0E650DF6BF9A678396AD964EEC46CDD40D6732BAF47936D5128404B9A045F3881F6099EE
+7922D58DA51E486DB02E490085A4A3E601DA0859DD2E8E8292EBA51CDAAE6DCED107AD23
+68378DB95AFC6A5B05C96BE01BA5B2D6B8A115C5019928BD67E1D1A231CF63F702A7F748
+393A9EA20BB01571301F3DE76FDD2D93F762CB89871F82FD9DCC05E91E341C80DF825FF2
+FDE445EE728C3FBB3B7BAB428F1C6D994CD72842320F4E400805287939C8FDF05232B297
+5E3BFB9DA06DB6562E7F8D1232CB19BD3EE692104EEA46009354A32BCDF994DD82FBAA4F
+227319021E5F0EE0058F01F1B419FFF01B4DA7094F2D5EF3B9AED906810EAC5F2B4413C6
+F1C7FA494E0EA56319BB5BA1A926B1FB4F7FEBE3AE85FCFEB305F105FC1DA84EFDED75D7
+6BCA1BF8E68662328E2BEFD10CAE586857D8DAA16C0EE6DF8AD7FDF8CA99A3AC5FCD5BBD
+2E2865EF58E58BC6184C6087EF067EB472EEE025245AE808814CD2CA7B7E33F075BB0478
+96A71E8C8C9C7A082B6CDBB322CBA117FF297D4F4CF8E6FA1A2D076EA8DECECBD27689D9
+74A74F9DEC0FADA6409305B95343A007A4CCB78DC2377612F7C04CD8860C960D4EB61D13
+8A9819A485B1CC4039159EEAFEB594F2FFDE0735B49A0AB2734EC0FE87D3ABFF2095A184
+A41C5514771022204A6D0D3F392F3FF1C01454FA96479DDE8952BDA658210B1195A1EAB9
+525792ED8B8DF95DBC192BF406D49D7EEBCC1AA3E6FEC737EB1EDCCFA915C8B45897C565
+FF1BE63FF9DC12DDEC92B5E39EC11DBFFA8B1012B3C9AEFA118101444509167A4CF13464
+EB62885F2DEAED6154EEB8AEB2A95D6554717CB5CC29DBAD92CB4BD81C9D11B8246E38B5
+98C3DFD47BDACED9A939CE9FC8C9BD39F46E60F1D48A6928929A3C3B8EDAD4BDE5932DC9
+133FCA7C45559B75FB93D1EAB1C236A3B43CEF7C7A572EAEDCC71B5D22052996FAE34475
+7CA6D93D1001533237018E85FDCFB04FF00F9EE648945EBDA4A3434748F5EB70FA6554BC
+DE6A831D2CBF6AB499904BD207DA8FCBEADE21B8DA0EE1DF3D7365343F16BE297D830B7D
+A02EC14A573A32B5106E96EB16158099DB213FA7A8DE77A74F5E3F928054291D28A388F9
+7EA62877BA00E9B271FC9ECDFB57AFCBC6DC005E180A6F2770EC3FEB383D61710C16E048
+D33BA47AB2273968FF96611ADA50258C39BF8E04890B859273FC57B9729FFB92F5D5D5E0
+E72C67B29595A210FF474FD1277D1E8258BAD6494FC423A920B22DFB06CEC87C35762F4C
+480BAFA8F761121B8F4BD258B8BEF920405C48B7AE84C520FE63255F0DD2AEA324F695DC
+8B8EB130C92B26FC9CDA79959723445F6818A7B2F3A2D23282839BE2B4E7E1A5FE00DBC2
+4AE1CE5FBDE5E9B55AB9022AD26D8869A6A309A24B5C69054F5A123C6812F8189351A762
+0AB47E7FFED27D3DBF4E47D7C0DDA20070EDF69E9B8838497E5F4FFBB5B4CCB3141EB9CC
+8111D3B4E59EBBABF2B6673639B5BC2FE85CA772C2E9F39DFF68F56EC3E70A6E903ABCA3
+8548B0E3792DE06D607C2D29F2DFE66AAF62998FDD7E2E277E7E514DDD8DB912DA8DC810
+E23143F8173B822EDFAAF5E160D01C57BB1FA8DCDD5117114D846E8054771BB108467C1F
+DBA2CB6FF86C220F43AFC65A1042FCD3EC70F6C68DEF59039D2C9731A9D2C88666871ADA
+24C7861E9BF8940BD58FA5572A2F14D25A16B3389B6E66B974D988DE8E20AB4516A44C63
+311A6B797AD21E3E9741664C5B67C0A2CAF989D8E61D4972F4DEBEAC020BD19193145B31
+26A104008A7D85DB2B74833EDE91E88FBD3F481886B55B9705AC82F819A71EA4063C1845
+53B36DC34977F81DDAA8C76F4F6F98C1B8A4BC7404A5CF0307E9D9460144D62C072DCC10
+F4D8AE895E2EC000960F3AE22CD50A93852FA673DCCB48FEAB15828E49AFCC7922D2A026
+E26363C53364214FE58C4F87622005997AA840F69D6C9034BFC89CC38B17E293A827CC7C
+5023377F81672BD8494BEA95B3485ED6F9D8446E7C27FB368F4FDE124622982AE4EC0E98
+C0AD9986BB21929007AF1BD063ABECFDBD311DB67D0541BD8E9DA566583714419269D829
+2358E8B82F0418074814F5DE4D2484E114A39BE113D8409224E185C0B9BE3827D85D252B
+F93E4C619D157AFCEDAC588FB057440243BBC40E7D422A2B7D2929329AD50D2EC096E427
+1A171918DD56C07037207665B7EF312E69EAED5C8BCD2D4322BA501B83903D145E119162
+DFEE9D1335B6EAF330B784BACAA7171D5C6F3F4964CE148D764B69C6CD601B8DD253B34C
+0978336CB0C59CD8695E935430F8FC7A35A6C1899E79D6C5AD1FCB22DCE6310C0479F8C3
+C1ADB8DC90E8C507C2C4C8E121D0E16B696B4C3077CEB7EAC6FB4A662F70D019B4045757
+04F54AB3048598DFC61DC50812E9BB66FD1247940C3778E2CC13EFDD39C22CF888B31CD7
+C05CB19B1DCCCB19BC484AA1426B3D30D2E58F68992D1C0766B208B3C708F2E9D6CA85FB
+06B6D0AFB7D1BC43E33AB95EA1457161437D8C76BA25AC88E78B0267C0117CE7AF4D5237
+0E9D01384E9F6FCF67B5FC721B22841CACBD15DF3C6B2BEAAA2B181FA411E983A7D276B7
+E33BB6116958F1E3098E83050F4787B84C63B41112F590F7B68692AAE1CF21DA80A730EF
+5333DB0F9613C11F91E7949BAE4DB3C432D899B8E8D075C143E772030D4C46F9796EE773
+B1069912C16F5A2B64F5FB1137335CAF33A10049B0B6394A20A8C1DBCC7F49A12BEE7006
+5363EA5A0234B4D8E267A0766EF3949E477F3F591AD780FEAF19615F03EEA5E517F2CA0C
+2F09CD0EDE635C3B920A982E28372CEB798F3A0095A3F6C9AE7FC1796E303862954DF160
+585E08CC77F03979209CAB09B956F80A9C6D87CB88AEE60E4042A0033BE46433923C1170
+A68F05762D84BB52E6657F2426F542BAC3CE04C905B72DC2FF0EFCD50FAE3E5FC74EFF5B
+26EB29BC6110872AE9A33E08A6B6EAAB1740CDEEC74442F1DC25FE47B57B20FF3C8DA9F6
+CCF5C9BA08903D07794F86D7DC10ED561DF23EBFF0D54EC2992ECA86B4DA5BF152A1CBA0
+33AA55B84A96E345817806BAD4331B250FF7BE1F0807FA01C090A40B65E8046D8F20659F
+1E0BB401B2F82B9307181366C931772A282EE04BF177BC944073DC43B0D42FB186EDFBEF
+652668667B3B137650814189F1C1CCAF7C80CAA1C6609B4B74E18930392071C0FFFF2982
+C6D008BEB4CB8B16E21C0F6D75A8DBFCF1EC5753A7EB5AC899D171C75AA5D52653D8A0A0
+575CB143E1AA3D365D59163AB78F3BEB46D674ADD9259142849F4021B33416D51CDBBBC8
+88822B0C4A84D37B8FF00BF6F65E67715F83885F1E87D0061D50B453D93A0309269B74F8
+64888B411E3BBCC6F2BB03139B32AA9917F00DB44D39F1CF1A4A21949F1B10B7C66943A9
+AD09555CC3772F72D9876D6BD6360D349A21FC924829F5C921F44BDDC29AF45458491D3A
+A4261BA62F1CDD88C6F4112920D0C1350098289052FF4CA6DA35D928C51F34A13D10DABA
+F3743516A447376D2E02D6DBA11BFFFCAD09F1B8D01F0B90004482564CBE150B23D36690
+A360CEFCF863DCC7058C0708E049A364BB3347667FBC0B0D4CA71C2ECC03AFC0F1103980
+AEBF654B005950D0640C8A5705DEB0ACF9B4B91AAA2A05DAACA48FB26DD8595A402BC623
+97133DE22C4766E17D14F86735881D6B0280FF2D9D82BD38520447BAC343289144CAA794
+27303189DD741D98FABEF58119AE39D7220572BE89818C35AFC46201E4F85A4905618CBA
+E4A9EC59F50A60B47AB89D93E220DF8BCD4E1CB10D0D4647E1A53789C94EF573F6F8ABA5
+FA8A678C3D5FCF312722A9513A0DC2F59642F2E457FBC9E26E9BCF72374E600A30A525CE
+C738B4275C0B2BC912F6B112FF2038C349FA0847036D602A156E2638C30458FEBC56C7A7
+47E26D2069E7B51E8B4E93F0359CA1BF13722C1801D47D305CFF8ADDB265930E992C6225
+025DFFA53EA64D4102C6A9124F5542393E55EFC6B5413FA105159354AEDFA770E1D5021F
+1F42D974A59E9C2D4C99A02EF27F251282E7009FBF8C9647AE0366C821076123F8E002BC
+A8D71019CF9F139440F573F961B5A6A336D31FA0DAD8569024FD24106CFA5B4032A8A0B0
+CBFF0B32B1848D4C5923624A9FB8F2F0F6767F381CB8285378692D56F8990597C045AC76
+0D52081A7BEB9181882D567938C3D2958DFA9F35F89CC009A1BB32D5E67E6C37F93C83AF
+07DFDEA83CEFFDA469EAE1A8D60D494079F882DFD9B058755C5C5090075844AD0B3B48AE
+7A42EC8C31ECDF20CECD5384B7DC8B815C3E94D36ABBF4B4BBB5AC15659683A81C5F2A01
+BC31DE9F19A4EB72C3132E7049B3C689E836F47E95964544ADC99F463D14B2DADCCF2A04
+A6CCCD9D1128DDB14E7081E2F556FAA3D72FFE1CDA1ED5588F472D6739120BF3CF697628
+28EC1145E2539008ADFFA6502EDE870952BECD3B8DC89FD93190EEDFA25AC435ECC2AE0D
+283F5EBA090AAF4BB251612A0524509AC6540C0A492C8F4CD908B021957B6047A7D4D529
+1E250E4CD1B82A95DD44CD7FB2E3CB7C7227CEE38D873C83177687BAD169DD0439A858AB
+F9BFBFAE78BD973363EDCCB5B1562626188A179A9864D2D43B147854C36DFF7678B6A840
+046B4F1E97831192249558350FF93650E231C267BE361EE146B2B387968E06E3C296F24B
+8B940089A968EFEB9B9E35DBD29C430B8812A2688FB7461C1E402F4E62425127FF48BFA5
+9CFEDF9B1172D9980F723EBD6E03DC72174D9E3A0F60EC667097AD3AB5C1F0FBC5DF1864
+8C62AF849424AF931CFC9BEFC053E5A5EC6ACDF455E10A5E86F3FECB617995D6306A1E58
+FC22E150255676C7CACDDA6BA2B619180E50DFCE26B5B119E1E055247DC9549D952BD3BF
+23A897285FABBB0864C252224E45601CE683E0F5AC51D750B4AAD212B1A1C06C4724E6D0
+8C48D014FE1836155531C44D22F03FA6D7745C4FD9E654FB59D2870175D4697AE39D0623
+5D5D0EE1FB83176FB120E0FE1560D05EB100A30654389656FFD92D408A48836CF3AD86CF
+4D8FE20ABBA4A81C25C3ADC82674C2F5FDE43E44DC95D629A8378390EE791122C5FB8B63
+F52576144165342DC0589568B64F60A6DE0F0817ED594D7915928AB7274F88F7B00A0F92
+CD1E6B28E350C0E669A5CB3E7D739B1E7F499D058C2B740857EFEC21B5A27C4D9A7102A9
+4D83C9A1AC80116BA5C1B8F945123D0ADFEEEB2321AE39F9F5B6245466FCEF94114FEDBF
+B80A21C89672CE05D7228DB26B6EFAF042DEAC6302C6EE13524C323F37E09FF3721FC6BB
+FC034AFC9FC19075596890D4BC843EFD54C261588811EEC9E03C5CF4279DEB5742F2D6D1
+43E1B06B91329802187741F1C747E56B43221152139DB63D64CDAE5ABD38C506798C5F61
+3BD1387CA39A4673B588409F76EB3119BCBFD6C729F12A591108994DE8B91520C8A42BE7
+1E3816154F6B1B96642425C87ACEEEB2A7C0BAA62882FC75A67E8F26888AB3DD2E3A646B
+5BC524F62BC656FFA51E0BA9AC6019E71458DBABE1326D24CBB63E28C61DBCD8BD14D9CF
+DAC81090F9F7211DBE59BCA276B41EDB18CC205EF3ED506B876D372BFDE8BAED61AC3ABE
+1A9DBC3EB90FB8C6E1C9D6102F3FB5B3CCCF1C68FC413E6D9491E861A5260E67FE897984
+2244CEA6D398E887A14FA4A9227646BCA91ED2599F0D80747DFD6C86474C1299BACFA781
+02421C64743F14B96BC39A29463192EBBAD1AA3CDC0E21962266A4AC0043A6C84D09325C
+CA1F00DE32BD1E1120F815601C596286D5BC64735CB9B8D9D5E0828CE9630803A88D4E29
+7DD47A9703BF10E9DDB0819B102647964510D733F35E27D057C3915AA1CDAA45106DA9EB
+786D4971FBC26E878EF474E4537BEFAD2494654FE142829FF061B6F83F7E9B23A655C591
+EA1B0E1985C1E7584C8320C0D0244A903F7777AA9FD874C1DB8F5B22B1D3F4AF1DBC4DB0
+03DB4C110B83D58EB3D803BF7323EBFB0DB4C4C9D89D4E385942830A442DFAB6B9C26C4F
+39C4FC30E6164E0C8EB0D85BF11F7BCF57D3EE1F20E5C0ACB63363924782F7B57E148FE0
+14F8A67C2C450C58A6B7E6B58D48123103C3AD246A041C40FFFF5DA4249DAFD7C292C08A
+BF5312698C9EB54F5EDB4C4DBE899182BA860D0C77E3EF0F228C2F5825E21FED8A4C5440
+AAB7F1C7995EE223BF09C1FB1BB4682929C0A05E9DD10A5D7B4A648E9A378C8E30AC3C33
+DF1D2529070C612BE0BF562CC4BFC8126D577FE74ED819F580022A9BF379D486326E967D
+F76EBD4AC79920771AAE89405A6AE27D1C44D71FD3942CA7DF4B001FFD9F154411B2642C
+5AE2A86480E937D6B2C192F37059D6ED4E20557D5959CC4C93763E3349F643BD1066B274
+C571560015F0D59130B3D9BE2C8D943C12B1C853D31AE7504A447B403856EE66D3F77D71
+6F0894E66AA95EA670DAD1A828A550F28EDD3F8D4EDA2188C106A648107231E6A09EB9EC
+03F75944EB27B6427095C6FEEA055716C8AC90C15D6EB8AEFB55BA19C345FCB12EECCF91
+02DCE967AAD8EA44F9B4886F14DE12C567AD92231B7408351E796F4A8644036237B19E0C
+AE76A10822AE22E8DB704B9867B8494737E7BD339C5203514500D28658A7067D43EEFD37
+F88AEE8810D03A39C2C69B91365CE41983778A4220ECB3F23ECE7C15592A238890B9AB9A
+B199765A1260A76D74EEC0C30413758669007E9BA796A6981BE22D24D4DFDD618034FDBB
+FA61D6DEC38DD3FE3703E85D2A8D7C8B7B2EDB661C3F68FCDF094D74ECE7DC3749945087
+3CAD245C223C97D0C12B26165BBD2A0D0EFF03F67179C27A7480C5799CCE9CD1C86DF0C0
+498727AFD67926568B9A00DF31B47A7401DE6FC9FFCF81339145E62DD78C636FF3C26A28
+DDC8BA528426CF2E397D1787F481A08C8D98F12D27E0D4FCB721EDEC068EE7B7B0C39B1C
+D9D2D3F3F625096B2DB281E3C7686ADA685DF4A7A6C4F822EA23A9844758D32496D96ADB
+1187652CFCAA614F174A8A07D088813697B9DDDD91031D04BAAEEFA26593763C16AEDBAA
+226BDC2CCE9272EC9DB253EB68542160770F2613E9C3EC0A2D13F9F6B03C9B3A4187F81A
+FDE1FB680A4A27929B2E6094C5A29D67A27AFC361D1F0E120215FED1B3D1E3AB947813E2
+024C2B29BD7C4B5ADD49D0A314863704D480CBC6DA53D711CA0B690A31EC13E8AF4A9470
+C34D4E1C8BED6565DE53DF11FC68502781C9416A2E6E0238F3BC10DF46FF1CCCA43F25F3
+2693FED24DA478A70BF40AA5CBDA6358B6368813A91B70ABC87F89ED3CBD58B5B5E50E92
+2086F2766019960643E5240CB282C0EC493CAC8BF5DB9B8745F9633697A5023F6922F79C
+468678A74B4D00C3245966E812C85DF9847D754AF7E59887887C2DF8817C6FC2C1283EAF
+FBD175F14838398F17B52E14118955E4BE80F9A79CB45391B85C568C8B4C1B0BBFD0089A
+5C6BB47FC72A39BD3BAFA6D50BCE8128A1C21251C4FD8581CDA7F9CE4561D8FFFBF6EECF
+C9CD1B06064804076DA1242176DF1906D7AB5670F600F6C9E0286DFAF8514F30B38558AC
+2815A729B98785828620510F9B6AAD405FEC9AFF02BE021A15C9424E5F27517E31358FE9
+54013A254E0A6065FE9321FB934CC10A159326E3EE617D6308159B575FB9FB870A99C8EA
+F1D89C2D7D92755E78DF4B78EED7AEB299B856C4ED63CB9E54F656BB9707ACCAF2D0AE1E
+BE31F6A4C9D3AFC985F7D46ACE5007C6228234C43243CAF83AFE950E5CADBF215571840E
+4A6FA4B88AF154A5796B1E2D6FBB1FA6B94059EF4AA43857B6C1E84BAAEFE6C70BD6FCEC
+45139CBFCE7A78ABA7D4C4F905031F01699D326D87071D91E8E6E984015DBF482DCE7A89
+D379D8F8D5E69C9CEFA51E7FCE88CFA7798AC97894787A524CACE9FA24E2F5D23647CED4
+455E18A350EEE99F38727F8E85083176A134FEB5C528B8CE54293FB2A5CEC4998F525594
+A3CCC020CC97363A568DC2DBE16765C1EE3E53B517E3E695FAE9B648FC01F2B281D107B1
+0CFE53C8C9CAE51276F372B25B2BB28BCA086F50041853FE9AAC52A26AD3D9D723FAA243
+2D30253A15BBF6F7B944B01A26328F664C35DA031BCCC67AC369867807146E1E10D1D36F
+31651CB4F062593DEDF3B42EB0A1373BB07B7A47B9C059482EC096C7853A4FF58645D0C7
+AD91A8B242BFAC5DB4D51EA5ECCC4282A324D9D9BC0249CCB6A764281C8850264B863B1E
+39A6EF4FE2FBCFC6F0E6F6F1D63BF3D7F802CD61ECC1646D5CC778E665F241EEAFAF84DF
+328F14343ED8EB1C22B3CA00BF0A9762689E7429F83F37DAC72DA8BCA0749503B60208FE
+62E100B6254F87D28A89A7A1B6A1E54FF7B41596F53A34F1509ECAD7039E630156863AFD
+2908DE623F8286C7461BA5BC868F27B4B055CA4988A8C58C58FF87425A6183D16A7E89C3
+8A69D8A4410EA24EFF8E4FB3F2E759B8FE70D96E7B4A63C77EC395771E6273D7E41AC639
+4AEFE184F81D17F8C0C02E4DAB4CD556D650B6464DD551CEAC21E73D5D863C1A1D113CA1
+1DCC64C30204C00FD20936200A3526D124984B5B7486765B6104F168CA2F17F934464F41
+C147144D8EBD5EC889AAE78CE5EDFAC5D697792AFAFDE9F74D02105729805E375DA486BE
+DF86408776F6A640C163EEAF2AA2FA1A6FE36E3B639E189ED8FFA925140F07A9394F5884
+E2A907138F354FC4115960BF40D7934E47780E0B494E32F5AD57C2E127012B4B5DBB8768
+C7597CD5B7D0524F0DE48623151C057D2E3A84BF49A6523F6FEF85A5AEEA442BB1BF2CD2
+B3662879C95411278AD1695993C8DDCFAB849F0D119099C9393C4F822F9CE959D9394CAC
+B677B7628AC81BCA12584669322B4CB2782E76D374C59D06A744509765B44455ECFB19C2
+0BEB66F26536651D84FC0228634C29FE488A81C385600BCEA48E56CF035E198CECB97DC3
+D9F8335E85153F6375C94C3CF1CC3851B7B73A423412DAD9AF5AB434B222F3F7643A0705
+3B02F461DF9DC0ACCFB5DFF42C5957CABB64BD8C28EE3A0650EAF8A95C9F2E7117332F34
+B9F8E3220B46E7F5C8EDA1460E5D43408B988103C04FE88656E256E63D1041E31B51E5A8
+C4354540C282C295F55F094549D87E16DBC0BBFD68F106C69512C6419F211D9133B6E481
+1F6D24BD294F80C4492A5C1A0978B0EC6EA9078091BDA9E441C8BB88A3B825071628652E
+4D26B3BE8BBA3919027DC78F63B27086A1372BD149F42702AFADE2949A99AA6F61C4A5F0
+723A84F6FAEDDA07957539EBDB87CC7A6E55AEB4EC619834D2244F570B6CE01958608A31
+9B1AD5981DC21EC99F25B8B4B297337BF45E00FD206C82F5920A6DD7F8FECCE42FCE5846
+696AF2807BF5B269B1403F7D90EEB7A1B12B992E760D520712F3BE6847AB0EF41C781B07
+FC95B85235556073A71EDB1A758167FB9A7E55983A8DC6C542F3CFE9A07B90D24A01ABF3
+ABA9ABF1CA09E608A02E0F68B3925139A5E8ABDB02869BDCC3203275A1DD42B0FDE5147D
+2F140F80F8CDF7EBFF3A984D1D40F81C409901DE03AB808DE92852AEE353C8A245D3B23E
+B3031DF8CA3B52A199D07C825032F8F5FAE24996E405C4E3F052BA8CDA88247BCDA0A9B5
+78235CE1BC8EE3A9AB36B7692BACBB1BE11CFB1EA03D703E702E62883C1E6DD253DEAA94
+8705D7F6C3079E0478F424AB35FE451A30953BCEBF28DCDC97D7F8DE5CDF612A171B606C
+926757F899B0D03232862DED36C342A02E1D610B29ECD47AAA8234F948B91D48964B662C
+0AB664C4C89A70296852D42ED4E845E4B7031FF94D17124D5219EAF3193D4EC6FE021BA5
+DBBD69312086A63BAEEF2188A6F3D48EDD087814BA0663F31829C9B9ABCA9F06FB618124
+5E759DBF585684FC4567C54AB40341BFBA46C73C1F4EC0E11332226A6840A2BB920FDAC2
+F5FC2C7927D4BC9A6CB76B13BFDEC9E0E4FCB7E4CFAB06A87406201F37FC33EA345BB2F9
+44C98712728A81664441A800B33C859C20E7667FCE54BF571F889F1D62498A86EEDD8E74
+C2C08BC5792A480DE97D860F2E87BE8E42EE174D15400799007FC6AB19BDA5FE7394BB97
+3EE72A1A942FA9CF6E2712B182461FFC299BB16075AD3537C139F4F72B3CD7DEE40B034F
+A37EEA6A4FC1A2B303E1F2D294E771B5D0F2F3F46D495DEEBE8802C086AD378DF82F8F05
+B9AF509B732CADD952D306CAEA9A0ECC27F2AD0048FE150B63415BC3B24CE11029EE7E37
+B16A94C0A43127A9C083D4C056668394751D6ACF9E797F00167A37F25EF85DE2134D1A2E
+1E01EF7E356BAADAF4542103F4F5DF2BB0CC66251E1264EEA6A02C8259613907FACA99D5
+BEB878D83A59E487456453E9940EEB2785FACD1BAAE08DA6F6A4D533A88DC1FA97CCD604
+FB36D66CB11835349C3FE4A57003D007C0A052DEB51364FF5ED21512CDBC1715BE46369D
+AD4166EF29541A404416698AD04160AC017F65BE0B1965ABE560A00F4B2C7EECEC31925F
+B1B91467B3350EE50B45C49D78EE72995AE19097436F2080830339B60EFDBAFFFAF4EF62
+8A42A7F41592CD498B895DD58F9C849C236DD91B7E0B9AA21A00D9DF4347A3E94D1F830A
+955549AD79976EA302573BD064401B27268FD9FA545D780FB2149822881AFBCFACFF361B
+58D826EF8F8939A46C728B27D21F7A2E4D997B3AD9BC7140C433FC1A54E2789225F35530
+B2FE316A948CBDF7676703211BA6E501C06298FB21A08A1EE4987C35B9C10F0127F050A6
+7CE9B9E060EA79DD6C77B6C996C48C2C36F549EEDD489965E89E276314CB02BBA63870CE
+A73CAB91102BC67D87E86F0A84B5053B4F917A696C9098104A46EDAB1F9CE83DDABF2605
+5B090E61D9354176DE1525C40C6219FC364130C1E08FC831272844CEB39DE5C67C24F01C
+3562D91A7BACC6049D2C2BE9B2B3C5BB706D896BFEC61027CF1BA1B6781FF7F47116BB57
+2DCE573BD7DE84AE2A42A87F5C27ABB799ACF7DE538525EFD3818ABC52C1ACE130169AEB
+8507C9047FFFE458573CC8EFFFD95CF1BA876F33C754D874FBA9762E8750619E67C43140
+0D3ED8CE083F02103060B79FE4DE9B3742924D07E2FE3E6D7F7DB6F27C3306C67B0D040E
+EF0130AF6C433A333FF1EC69ECA8D79AA89F14CC9B28F89D4DFBA8BDDEF97FF90528A9D3
+890FB033E3785283D15C814E99E79E074004250B1EADF2909AA48448BD6CDC43D5E38C92
+99CA0E637BB128C222B53266828DD13467D973DAC09879C0E9F3009FFB2D4D66957D9CDD
+D26CF66D246A9D4BC2C0C40D1B225CBC0D5C8C721564C8068249EC5F0A349CBA7AB49D0B
+37D30C795CCBD53337915D8C9034C91A306363E3984D256D05884A5CD3B78D2A483128E6
+60C14DDFB9D1A6B37FD999EB5A3079AEE2D3DB55734D054C767017A041CF2B51E4CB154A
+BDFE3886BD2F98A54ABFBBA388FD2EF655AB7E88B41FD61857516F5CB4191CCF1371AF4F
+A5B2CDB9B0D74F95714D41DD58A36297C06BE8A8C3065CE5FD8ECDC8179E19C4F467AEED
+394E86A0EFB0D2A3E05C0E575BBAF02F82747D27A51DE2743913E86B0344F168956BB664
+BD30D718316882991A4C0218E8017F956070373A5DEBEDE67411BE87C19D8A42E8F24239
+2B3D9A994CEBFC0CCCFC45E07DEF9D5FAB2BE99A7A0B7A7EC854E971CC62EC09AEC5D188
+D7247F7D57DA3C4CB0AB713A8350ED86E663B3B3B66F092B10FEB49AFD28A83A63B76418
+D3AF646C5D383D250DDD91D73736956B4243D9A0219A6B77FB9D34AED5C4ED43E4DB4881
+AA69DECE9C8CC6C01D3255E540CE0F6156041899256AA6AF4ACAA6A60D03773BA51156AA
+A361C998132BD1050FFAAD4D696B2E556BA3608094A51A84B2462A5F1C6FE6AE5C193CBB
+B5C997DF647919A749A20EEA2EF6D34A3555D9B1BA56DEBE22EB08F852434CFF50DC754E
+AA1E83A1005DC490611A82CDC4488E775931BE83CD4646EC83B032FACBFB5A84E7E33D5B
+98C526C70848963D0AE6DDB2D56CF5BF1AB75B5667BD8355007AB0A070DCDAA7012AA4CE
+48CDD1EDC2459429E468E0854127FAE6EE3E2D34CA3C7CC542CD24140F12EEBF42000BFF
+7FCF52A29AFD55FD70AB512D7648D2DD36F0D5E701CCB7AD4B4C73C2E0FF74B558C4AD4E
+1E1BC87C9888140C7B4332850101D1646DC24673F50142355C89D9B87F2ED16C03AD82C6
+BF1E194743B28841B9D370955C2B2DA0B046333B488093FCF32B93E5B9DB3B1E1756D03D
+DD9B295F587AC2AAAA35230EA41EE039389D8B7C17026B63995D6C5C1C9EDEF078C9BE65
+FC60FDEEB999BC0BAD5B306271A1A1BC73391D10F9978BFD6CC1BA29F1D4F231F5719507
+8A82A3A4855E5BDB4BE8B8F474A4CE170FFD60FEB51F4C1BA020579D4BD1D81D28B76E47
+5E1A4BA980FA1FAB618F52DDE9B1699630BDD34545944506CC3E641F2711D1621D36258B
+578FE2CAC9A0EFE6029D0BEA127EC437B8FDB72F5087B043FFDEE7D7CE7210AF622F2FA4
+6554ABC7059D1B0B3D3A6FA2A8F2C15DF905D426F1DCD8776C3E3D04BAA1305806AA6F3A
+C75DAA095AA129DA9B8DB62960BDB8E2F842EF5F3AB686F908E319E8043CA8EDAAAF64A8
+5CF183159F99A04CAEB654497A7C03442DC2F35C144352D88BE16673EAABB76A34B7C791
+EF38A44A80CDE8C7DD8277FD1F1152EEC7C3388545D122239D0993A4CC4163FC6DFFA56F
+4A5B19DAED7563FB36EC5CB98C60A75D8FA273CE8E417A1729E21D4C736C1AEC16D54E66
+55E01B586646C1463A73F1E817EDC94B3846D3824997A842424AFB0021718E52BD31AC8C
+34085D44FD7C7CC4F5CDFEA12F605A42076BF39B71E4A909234FC5598C4876B006AB7F37
+0278BB0593FAC0E7D6C36FCFF3AF9CFAD1743051D0F23B444DC3BBB2D3C2AF38223E39FF
+74E66655B4DD4FAA17688D8FF4A24B9CEA2092B9C42E02DFA6D34897485202658F998619
+86CCE02B958B227576F39F5DE599DEE1681B95BC1B98852219F677097CE497772BF73585
+E7C24121D4D2BBA24742883A4BC887C64ED6DE155357EE03CE7325F95D104591666A61EF
+59E551C5901B5B24E5ABCBEBF32EA01AA7CDE00D51CBFF7AC5A6606ACA10EA81359F7CFA
+7DFC908BE028D7C9D409CFF036A54C772442CFBA12608E5E971A212ED4FC25460D73A07C
+6830BBC607C2A1C23DF996E82F8EA4DB890976D7679978A5A1068B9A6645B340B8CC5467
+36196A440FF83C3B25CAB41D3F44B80DAB56047017E8BF43F235B41431CD9E832F605EEA
+31625055747C8AC5FEBEE0C2EC6FA90D47DAFB600AC6C7679D9D79847EFBD5F93C879DDE
+D20F194F840C5A268641F6F27A938E51024892816DE601D39B360B34B91E3A655255A6BF
+9CA008AE95712B8EB725CEE49B316550BA5BF3C92ECDAC7397C581C7D69017BEB607B076
+25BB5A1973B40073E9A0D26A8CE4B4E2625003E500CD104E209ED94CDE3B804E19580E97
+090FDC23DF17DDE1CB5CF28D1B91F510F10A5B6FC4E247482ECBC794CE5CF4F520FFE8DD
+1FC19A628D7E3ACEC5D029329E9CA7DDA071B947DF1CC2E7E111EA40DAAED9CD6248550E
+E385EF0244F6DD567247BEF988C8FF3623B8721A995D41EAC818A2BEFBEFCE99E4CFDD85
+FBF5587D1B1E62C19AFD5B3E1F22DB3D673B98C16C7D4FE7275C48377934C11899BAB3F8
+3FDBA3B37D0FC35DF7D1287292342259844C81772959A755F4172604D4F2B60B726C4BE2
+96A44E71178AEE1E5C1A5E97D0B346111F522764A6AE6562631F64CFBE08B968765C1026
+C723ED07DC680622FD591759A326E059DD71A3E697F025772C9C7017B3ADCEA6D216D049
+671287831FA3814DD5411B51FA5C771EE5C5A849DFC70B2C2C80A49575C4792A1D971ED9
+290140A9F20470CCB974F1F5CCF8E9FF83E4B56A3095E9A78BEFECEB039115219AFF9C5F
+A63E3D2C9AAC7C47CD7CC472277F4DE78C887EE96B5BCAF140E7259C5E09A4D5658AC14E
+968B48659F2E007B8746868BA9778F96FCA14E16C3D86A40906F79C8E91A1B388F17FB19
+19E78072EE2611F74F53A3E482689A62AEE1EB5FF645896751618673E91B43DCDAEBE579
+2E4CF3C36E4E302DE0391F714BEC743643211C8D5D2DA0EB5BBA214980C0B022FBCB2983
+2FF3437CA4C18A37F2693461948B009AAC594C9F3B409A2EEA22126411BCF1A4251FF774
+BE39E94290D63CE8E31808CF9A573C4D261E4723632BB471E0D49D45F960AD304849B74B
+6BC329AD59E93D4C1EF7965BF25ED97F08ADDFD682BF6E81E60B6852DD3EE273EE6EAEC6
+31625A43875A70DB0C281545D8F10D19F501D319D58011889B15352D56570C7F92B1D98F
+AA26BA7731DBEA582F14AAD87C705A1A6497D7A9AD1EEDDBF49B05E5E0B053E80B7E2E9C
+9B27E4E2EEB0731ACC17694D23D9C9FF9795116728589744FCE0A5C7BB636AA2E4F920F1
+682110839593202BF0EF752A1141292C868C2E8B518D64C9D855E47E559B328C14D9A6A1
+EF3BB670191DF6D9AB70B09C20EAC75D617A04A6D876D05AE7AEEACCA024822E5407237D
+6AAF16F34832C3C0E36CD7AE9A5796E3F37AA9B3712856E74A701C096B28DE4B936A920E
+BF671293A23FE53F10B48602F6DDB024D4D4CF2CB6CF3A013F3E17641199F1F017632F03
+E32BE3F45DA8C94AFEA888FD665C1D9C24D9DBBD33A98F7931FD39F5C15333D9EB1A3703
+426535B430A75193119BBE0D85914BBF53DC3839BD53542DBF83BDCD96DFE6F46DAD9C5D
+CD08C57724CF32D397D218FB22C240292D67A995B5E931F25937ECF9774D7BC4DA93DFCE
+74645E1051C4C7365D7C2EA7D7DD82126D1B8DC2812B429B1A28CE435975C3E7A9B6A859
+960E534ADCA326150DA81F20E8BCF1B8F12E4C0D39C4DA5F7D891AB76A6A214E93E50C03
+BA91C36DECCE0E64ADB0E944D739D938B5F4F52C759648FA400D377D85506F7C02A223A1
+F38AAEF24765F55A98A53A9F04F5AE3E09C2A2EDF7FA01C5F38B06F73E90A45228711E74
+E81B05B91D307C761F15716DF10522079DB139343B1C595A83BAE1D5F24E00A38BBADD3A
+C89A6001E79C581DE17021A476D0CD581F74E87B578942C2CBC778F5BB357F55D1AEF07B
+CB0C9E1F8CA0D8DD4361CC7C68C54C5D5503A4377DBF2AC31E6E8DA53A1D60E983976266
+B4BA0B360F8B1A0E86D9F907B418BE354F780A725E7D0935F84FA2A56A0C505B8990489B
+F8B67F156A007489782057717F8EF97A0494BDAF5022B78A6B9A13A2831D9301E3E5D967
+BE0399A6233FF27CD899D43B0F58ED940BCF1B586D7A1EBE099ECFC9F8A77BBACBAFE881
+FD050C524266405F0205F9131B7ABE6FFDE05A5C270C0C335CD8916AAD09DA0D3B3E266D
+FB0C468A45B48EA8819FCCB41E6A9DD7085CDBC851EC43262FBE15CAC948CA246E6922BF
+02DF088175165D33BDA8D9345A23849E14E1E9146126157B1CA2D183685F587DD9AE2EC2
+DEF006C8358DE42E66D73ECCDE7CE2ACBFA40AA8615A29AE317B441C29DCC4C40ED521E7
+5E3CAA6DD1C9B4B6EF74487AF30C291C28ED1DB9A45F9880385AF026F6002C5CF0607454
+D280014B549C5B99BD2137AE09264C07E864F11C263A0199AAACEC723980B8B45453E2BC
+74D59DF25CC2B760D01FBE6D9ECBEC162E1EDAC8788A1177F5FFF2902B1A4CCEFBC81477
+D636F24F8DEBED98C5533DFD64D02381E0FAB7A24CFD748B1AB92022FE6089050B74C103
+0820B3B1F6672A9A99B023A834555B1CDC5F3F64FF96A03884FD1BB6E5A7DF8ED84A391E
+81F25E368915D8966DF37F80BF940791522166F14F6320D581E9DD5ADCFAC9B61F5E9C40
+81A35102EBBA1A6995E4DAE1E8451B657B584E59635F0B615AB2AB97BCF3D33CDDE2A59D
+E3E504151844B39BEA416D303DA1807C4B294270CDDF36B83EC0231D47897FF42F7CF5C8
+6DA6E51E94C0EC80C532DB0C481F79127551B32564AEC9DD45F51FBF7D3BD35F50E63D75
+CC0E720E24BF48A69142E1AFC9D619A7E4C5C9AB7CCDAF5885D14D977E4315AE7D0B681A
+7EC77122E25287FCB2F12005514EC061839A4076F3867C35E24AF259A702D237C84B4C1D
+08816A70566188DCBDAC42D2E00850CBF108BBAABBF4D4F0301AE7967385F3D670BCC124
+13875AEF37FB59EFC1EE8E1024578E048DF85D818441CEFEE30E906BB79216F60382549B
+A589AF5319458149E86A0E56EA3C28C96D2A07443D18223E133AEA95E26537B4F61A5C92
+B9107597DC6A11982BA5E4C207D1479F106B069EEEECC0A8B3717058D6B1FB1DE9495553
+7F55CEEAD74737909596D5FD3A7E0199BC23498BEF66A23B17FD9758CC949021C62E32F9
+3EE17CD8CB79EEF643B69555AE7AC503E1743A6727FD835E03E82D386A20ED1FBCCC974A
+FA0BFA13CCCA91E0FB6847145AAF807A4D416E3E4C54B824504A9ED2AFCE418395C5069F
+7ECF82EBADC0EF752CEF192909C5B0D6CFC8865EAE5827E5EF2F9BB17FF29C8D663F46D9
+18CD855B4C7EBFAD2FEBDECABC3E122364648EA8D4A392E58808702C5FE5C8EEDCC1C682
+72692FC6D5CB1F3047655F5A3615F7896580FEC224C8523FFC0EE1DC614E668B5882B7AB
+1FEF640BCD6AAAC3168E1C83BD968678A9F5DE2D2C97316E1B08A7F4FFF257DBC6D29526
+D2790DAACA281F6EDA7F439D074C51D4CF1947F8E90CEADD2E56B7C640B14BFF86CAA5B9
+A6BE872B75D8087A57C19916B3D1596D4A1D9DEC8AD44EF744E7194DCC82021BA2348545
+B4413065D72A181D589C979FA55549450B572624EE67D812FD1CD766BDEB5F8ACF5044FD
+EF44136F125AE3A5A85548FB8C60A43B691898B4F4F80275FACD943EB22B29BFCCF05B4D
+A62328F7D72DD290C3CE656571981F8F9AA311FFE07DFFD8B9395A7CEA7C7450B7C665B3
+DD932983D8AE00F2ED096086FE8E5F8E25B80B795EB6C4A3C3406496A8776659ED9B182A
+2FC3D864333D4DC6E0FA163DE9FFE2C5D481990E0751C8F13D2041637B95F0719136094F
+9748CAF59913544A5759A9518ADC1B2EC63F28E5F47EC402164321D0D2895B0153D42F8E
+55A0E82578611C2425D1A9C953E3E1224DE63D39EEC5CF63A41EC7BB85596539D6D3F630
+5B4946483E30038A1C0663866DC6B0C63D1EFC6FEF8D5B28554658AF8C948DF6C1330403
+7D65576B081BAB6F6C4FDB7196E67DB052FD91BF797D389406B201254F62F7EB7834502E
+5078EBBE2F282697F2AA8D038EE60A465ADD65E6206650ABA2A7C2B31524C76F39138A10
+202777EB4BAE5E9AFEC65A55172DC112FA9E2C6073C56BCEE67271D8E99CC40E9DFAD13C
+584E971DA0449F215E8F1E8CEBFBF73715B1086968804BF6FEF9A6860744FCE81C006B35
+F90A05769C8BC068D1CFA37052E9F06931D222020879B27BBAF58C765D353197BB698C3C
+D03B27FC74C449C86E64F03422E2B8EC2780BB30BBDC7A48FC6879109780664C28EACA64
+642979F58827FF1AC21654783A49E07E773876366655B68349D5CB4227C8709E7ADB09B0
+260E47A4792CAFBBD1908AD16175C9D3DCFCBC1BE71DD4A9E84FF2F69360A6962F378DBA
+B7C01107853AC79F69FDC012C2A2573CDD2EB8699D8161D0D21B4C50B5325BC9D659DCC9
+5EA45981C0DFF93FDFBE5D8A5E4F9A88F075B9BF1AE47179280022528E96F8BFDEB03275
+7ED96CDD83A0ADA2ECAD6AD4B460CC5F089D804F56D57543E8975B801C4F22D90F3E97AB
+3C9868CF9568B9F47FFA73B68977CFC06589FD18FC34994C8AFF73193CFDADAF2E24A333
+07728ADB529F4DD8EA6D1C4FAB4938B39E95491BF4202A936A02680427D520860612DEDB
+A937D1B87CE4DFE34FEFF06AFDE57C9F01DAD908DCB64E486F924BBC198AF29EB825D212
+AC14E31B1A219AE244730BBF12CD728EC3EE1FD764381CFE27701AE0163930F677A23F53
+7C79F4F23A8EB6400964C06033FB96DA30EF09F444619CA42F46925449E9724551A4632E
+5BFEDC512715695FB8735318140F7D1F171E49ACD761F2603E855E5B6D49A32752AE42BA
+92E2ADDF86B893F56A1288C10FE2AC83EDE41FFAFF1A5311B913CF6F238C2C42D3D0CB2D
+2D521D4C851F74D5A692609A070D1AEACDA947689152BA79ED859F46EE7B10835DC6BC03
+31885EEE255F3E7D20B642E07DD98159A918B3841F3AFE9904B38C757E3FB5498CBDFE74
+223B0BD876D22B8A5B528BE543541F09180414642E32DCE84F9F1412C266325AD5628F09
+F591F26CB14889958BAE6814AC7C0EB1168975581895499513A902E9E30A957E0B32B19C
+9DEBD6F10B69B1D35BF1CBF5FE05ABAE883936300F228D7D2ADC45AF742A606A5F05CE3C
+36E36DF0FAFAD8F393322D93028F9AF5478B0ED7F2F2C8877C54054FABE4AEEFF6819059
+D2790805631610AD8813C71E4A7F43368550BBBA9AF367FE9073A7D4D1AC7F031D4A788A
+18E1D01B0B5DCF8407FD4B8C301A0F94E50A48FAD55D2BF1D72FD2B4D8E3828404688ADA
+DF005A6288201DD2ED5F7039FCFDD234B041E71F94068A6A7FEB28B049A0DF076956A6DB
+3ECDA2D0E154138A124893C73122CC3B7C7A199F4D5562A551146D732CAC57163F27E583
+509C5C505228B6048A8C3A7906218C4ECE9A41441DA57C1F66F320F58DB5BC45F58C3F27
+4FB81F7DD4434092A13F61FC5CA0D89F9CC913B5C7FF10D2F18355BAAC15621B0EC8754A
+57D0C5023F7F3C02212B9718BA087328A6504FDCC0FA0586A1C6D666665AB36CB34F5F74
+C3F91227C521F98A77B922E1B06864B75F17923B304DC2C3149F6779B648D4F3F2EB3F6D
+6C4EB46113BF88B97C09DCC5297F9B53D80DD459898B2E673A336D7E026F5C13B1FC2D5F
+8756FA35609AF0EFADE8FAF9AAB28058FB9A448CF52605E4187426B406949255AD941A32
+5FE88D88A3429259FD549738C25812734C47662E710531E26C3BA6C2DD7CDDEB804C5C7F
+C35249884B837CC31B0A80EBDEDF2458A7D3F27C4A3FFB6AFE8422BE372424895F14AFBF
+4F8ED4988BD2DF5BFA430560CF19C49E1B07B1D543B3D37E81E27EAE240D596D077FFFA1
+50E254952CD2092268753862536CF46698363B838456A2FDB276401929F202B398B80BA6
+EEA7144EF42804BC002924B138130FB0DE47B8055CCF6A96DEA364E65B950AAEF89D2A73
+23B11D565002C2555ABEE48B34CC74E773EEDFD4D1BC07FAA0BCF6EE148D95854C91AFAB
+04E8980F2A3A5CB03219CE96355C922CA31AA16CA74EEA27ACE172C9454CBDC5493E5904
+14947063504C081A4CCFF9498A42D363C978D7DF59A3F058474CD2FAD53E4A2596D62BDA
+CDD65C94D0208D7989D41106576823FC013098414A098513D8ED94DEB781FC4B1B987213
+0C4E2D717AAFDC6D94EE55BABC4AE058877A06BBBBF5E83B2CC8E8B4859FDE9DF0077F0D
+6D7D5B632CD5C759F7699B2074D3E533FBF14DF109710145C638F3883512E956104CC671
+62B205DFAFC75C3D5D7842AEC255A29C9A29AA76F8C9D193E49490E6AB03A3F25B13D3F0
+2B95F8F24364BE7F84626113C2BADB6057F56EE6E4CBD55FE3B22FD9C60197AC3DF562EB
+879F2C62FAA8E144A9BC23D7FF84BF522BCBF0920D7D9F598B9A4EABE63EA76CAB34535A
+1DF49F512C5BEE4AD8C68E293B386A113574530E449E33742A34BE08992F2BE6054D730B
+EA7F6C8775514C48E271A1256B64137E376CB88298339414813553155C83A74E9D22F917
+411962FBC4C691A5E4FF64EB2EA3A750128D2A3D0913CF2B7F327C06540CC01D41C22737
+CDC0FCBFF1BF6DD4B1B253A8911A9D1CF01197BD3239570681330B94A47AF75A6980BD5D
+5D5175AD9555373B8B63B35426393D0CFCECD537763E1C3E3A842A2976463ACC0A055168
+53E925AC61CC74AD339F318243FDEE48514104892DAAB5D5B777BD20CFA76C4E60403A43
+27FA676E9095271092608CE91593DE4243C388DEB16E1633376F16948000D07A76789882
+BA597BA4098A1CC6D60DCD38A4F41759A2C2CA986EF651BF03A4C8AE6712BB475C5939FB
+0F0C4ACE451C53A5D2A6B2C084F579719AD5C48B4A06EC93612FA677F2717FA701BCF25C
+556767ECC376B2060F3EE55CCAE8E561ECE612B44B9ED0E72240DFD6D36AC1463657EF03
+7DD6B06142A4C5A174DD989F5BB7B41ABB4B9801B8962744B18E707EE7B55643DCB05C62
+01DC788585193407D82008F6642D9FF43146FF97876DC7DD1EE92225FA0EA0C386042EA5
+DCFB2B7C61847B0777DD263B5D3E202249D8FF2A5701602F43DBA67B2EA5401E16A84B5A
+D5B6E0399AFAEC0AAE19EDC931615B6552C453370F2D21780DEFC61B77641DCDA9F9E1EE
+62BBFE49ECF50C0D9A73A70B0FB37B78889482AA2228EB94B9E7CC88A29436ACEC4D56F3
+322CF2CE43C89CDA5216679ABB9816F99CF2FB8EBCF06144503666AC5FF172F00E3BDB1B
+22D759E2D2BEEE76449B801AD6C64353E50A33AFE3F5745B902AB1A190C54CAD7B40EF5E
+0F69127BACCCCA623CF59D2FFE248810C44CCDAC5968F82382849F2D999F3A424C69CB5E
+AF3597ABD9200531857C53C62F0F5F8EA71A43DEC859DEB91456E555AB91E5ED3802DA0A
+9143E6D4E9A80E5351882518F27E81CD1ED2D69BD09D014C19BD8C7FDEB0363975AD1171
+2CDB561F1A49594E942999CE5A73A11290EA18BBA9CAA98AC494DDE0E288819D9690E5EE
+5D0D0D9A51536F731EA99BCC2E8153ABE5E9918091D10EAE791B44AD334E1F19CE162400
+DD9B7E730F38F1BC94226E13736E7B6D5EC5ABF73F71A9B30C774A6B7F972452990A1621
+A426A11F775C6326B7575D3B5EEF7E66468D83E3B5944600E5B0974838E1D368A8DBC710
+D2578AB627AE475D6535A6FD68B7854FB173476742AE1A8C1AD70053FA6B956F0B714522
+4823FABE8E12501B9132736970696F083814B799D96B519913D69960A148CC1F878A5B88
+A311AE5E396CCF52B8099860E8B4852DD95A7186C5688E6382AACFE4FB254C689F9CA192
+817FC636B9A361E90E87C225E236E26C763B93410A575526A62D3AFEBC0CE6CD4EA1414F
+54E8354ECCD1140B5EBB6684DD81CA4B0E61A29C5EF62B4FACACAE3B3D65464290EFCE85
+37910FB28A8BCFB46931CF0E1382D85F952651606C93B24D1E307FAE0449C992727418DB
+83732FE7391E74301CA94F99C3E4A77DA02F8D791F40271093094308772683D13B8C923E
+BC517FFC4B8C1BD376D0C93172CBBBC503BA667F70492ECAE642412FA1887295916C421F
+E5F2D95E081EEEBCD4F7496A5BEBD4143C62C2AF43BA58C48137C323D945900FAB03164A
+895F3B49828820CF8FA89E6F33338F2FCD5C738EA0126B3AB7ABF498FD9EB786399D67DE
+4DE51189BF6AA4441CDF8E9E19BA071ABD8BA521A5DCE37262EE74CC23080B20E5A1940D
+BB53A32E645F5F3344089FFCA21269C3FA57A8E3A7C3ED52261339800F5A3EE2336E6FF6
+E41B53C934D15C89756CE9EB486582AB5C09B37592A3E7F5426DA4029D2D6D810AEE8AD3
+6766D99547ECD1379274629E0EA7C3871D7A2368C3FB76F9FB7199D83BA31343CAA814A6
+64F1ABFBDC68C9803233D6B10C9822192B1283E51B435702D70D8EFDCC42C6A38913BB59
+47001F0FB87BBE69C5E5363E4A593BEEDE12D5F54C2AD356ECA961FCCF0486A157421BFB
+449B3734AE03FA3CAF6B2AA336AB9BB702CBE185C5C8DA6B4AAFF31362EDF1A60F8F0F4D
+62C692EB78AC80EA040B37CCF322FDF6C56637D7B0610D5B2EC5BE220841669EC552F970
+78E04D47FDF6B211BD6A3F39C7C3C8968D64AC5EEAA165AA996DE24A9C02978150D28C1B
+07FD2A43C2E3DD6A1B5684773D31F2EDA66FAC0BDA7068052BA2E70FF89EA1A1B99439CF
+6D320C888AAC746F64C03B308C99D2EEEAF4B6094726F663A59530B70D7F67A99BA34DEB
+1B8A7478D1E6E65875E9645D6390229BE5EA2FD1EC6E57473A618FE1E0EBC5C21485A292
+C36280A70E553194BC95AED054EBF315C60FE7D12C23FB1F3E4A915CC6161584AEE81A07
+7C0EAE9F5E2398B4F983404ED787DDD26D08A5CFA489DD4BE2345342B453F8C2DCB4BA77
+69513125C871C7BD8A6C6FAA70967516FFB3BC3D518423ECD5DFE878E744A9F704415176
+620F17AD93F9909FF24F3139CA9003B388E338EADB983C8892B497D153131378BD1F3FAC
+D57F548ACBC61A1DFC687DC12D4D902A45CF6E8479721797CE335211365F1AD1C055C2E7
+E7B0713CFE3BB08EED2A8703B3AD9B9A0F24DDCD46AE4D30EB40AAECD6A0466DAD08F9B8
+EA52891D76B1382BF5641E500FE85AFC3A97F795B8E3041712F7880820A138288847EA4A
+94C40FF94E78F4587559841FAB2F50E715B7797602A8B9C7385FF6FAABA7DA6626AD4FC2
+509448EA6BD3CECEECB8A70179C5586DF558177F75FE3F2517A341A675113E6B750841DD
+A4061A125D69F09B8C20872DC775F3CCC06DCFDDB463A56387DD5123B580367C3A67D71D
+1E60DC141F7CF9F8B46693B9BB47BADC1E74D29F7549D5AB57F839B9AEA7E3E0CE9F6110
+F74869AC27C64CF325325D18101C86D2F9C79BCFDACBBF557C2633819D26128630F45262
+37BD2F0063E90094860935A4E87C05947BDB7CEEF8EF4BD7648D960A9BB74A4684609DA9
+B359D900FF96198D5DBCC9B84A51076E6378A3C5B3F886EAE9F950AAB3213168EF36BE84
+138BA6D178A2DB24A801A6698E01884BF4F6F8D3F8D8BDC5CC88FAD0584ED55FEE495B26
+24FBFEC83B1A0A46757E3C43A3D04047C4EEBB5DC35210C78DAA72DF5FA9635CBC94BE31
+6B4BD8C1DE8669296D8311D2569292CE69DFE2BA007BEA9669BBDFE6A6440DDA8A93DF64
+D440D729698C9727E8A7FE3FAEB580F702F0000A4D36F415F0CF7575ABDBC344EF7CB6B0
+8858D371B6B106079D1AA7AED2E1B45BE850EB1DADE12FEC2BA85536E35E9EDAF032210A
+332B94A06D65107FF9BB5B66294EE2A4864C4925A093BA6357E64AD574E116956A749D5B
+DB5EC795A8410686BFED320258BEB4594F301222B3609313FE6C4DF8CB2E11B34426AA7D
+E812A860C53374DD9A7090C989F1F3714FA209BBCA61574B93E759E653D42DEE0C69FF2E
+0AB90AC6955205CAFE8A83E4042823066363D36CC3B348F692CC94827E6D0FEE34B503A3
+E37DC8D05CC081AE135607D143048285DB5E06CAFD5810E66CFB5A47FEA632F68E300EDA
+367B1D90DE8C832DA83EA72D57BA7923F534D59AC1CB27473037A9C713F8CD2C02B13149
+B68D4A2540DEA6AA73CC3A589F84A4E9CCDE59AC934672670C04D8E9C982C164473E448D
+92DD301E2994E2F556995EB929E0A353B24BBA8AEE41A4A4D0FF000B197FCF942CBEF95F
+AA721D8962CF5130B6F1CE56EB9AAE73507256523BD4D583A81BCE7B623C30BFDB80BCAF
+C730F652648ACEF6BA6F42D524740D5BD0E17220DD9F2F5DF7AE5DB4337CB318B68E3669
+E75B8EB422B0A975B8E62ABAED2D4BEDD08CFADDFA76DDC8EE27845EF659AA896B9B90E4
+1FECA40FCA47147B00031C20BB312F6B826FAB1D1BADDB620140FF3D8EF0556218D86E2B
+C661E5BB77C4EFE0534CF06C4EDE5C498A389D0FAB806FCB419DBF6EFB09541BBAD55062
+F24641B65414BC956D57F032C6F45C83F158E464C575FBA68FB08B6F186BE3D074EE33AB
+C3FE23A412C67CDA23D8B7275A9319C07489BF90D9B739230B89306CF2D268FDC42FE1E2
+1C32DFBDEA941A0C24E0B26D965BCC6FAA74C2091D09A162B19D0DB6CE802E7706213EFA
+D8A0C39DC82700B9B0A0DFCA7BAFCFC3C510085689CD9A124784354235CE19A35CA93572
+10D99F168AC23A86668313A051DE78DFF7690372B15F212486E0289EF8C6EEB366B27D28
+E3C325C96B612601D41BFC68C9F7CB68C6CFBAFAA4C3CF1598EF60BECD7F0DC50BE31178
+B201F6BDD491398445616AEC7A8AF06DC23A8C0D1992973764382F335F05972514C080AD
+6179A98CAF788CF61EFB174D6A1A59B759AFFC238D38FBFC3695C22AC197EB56E5E826DA
+CDEE2E24AD8A6F2E4076D25854685547EF27B124CAA2AD667149B04D61A495218378A7F1
+F74EEA792E2894B66AA80EB4405B48D2C9B68C214B1E3EB691778F44A5CD77E53BC6D8C3
+31B711353DBBD676CA9723D2BAA4F186DE13D0254593DE1FC270416633B7BAD77F3AB1EF
+F6806FBEAC9832AE786D8DF71A3C3796F24C5D3589EBE3A69F0601F68AF841192637DB5E
+182B63B2F2E6C3ADD8C89CF75AAC89FFE13D4B393C112780B8B6BFC4022F55BDEA92CE33
+8BB59076396C0F3550BEA3E012ED589F3185B76CAB375FC91F1FC792113BAADD924FC8F8
+612391AD51848A1247D7F6CB21B0B6EFBF53A8B57B7965E81F35DDACF217B6DA1920117A
+1494C98253D66898A639447D470AF5D2637762B3E26C91985C244834B187C66DCA4251AF
+EC4D328F585E9A0CED90F06AC8B2F82E2ADD027967B0ACEB228CCF8E50B47D9F7B063FB2
+6BE3D8A37EBC51E42600184D487DDDFD148B513CAC750F15D24BB51D2A74E1D3F77D620B
+B7DE9F7F8771C72A38CB1D6509CA3415F4043E7C84800D566C464DF844B3C873397BF98E
+4E2476F87EF5BE10443DE1116CB40E63CA7C7A6B83979542E3EA139F87F788AF163F2253
+51984257ED29CC4F62BD8ADF466CE6850725AAEA8A0817E3FA43F990D4912FEA752AF86A
+A947E33A33BD8434F442A14C1DA6B6957451233DFB60545A4C55E96E7DA8B1BC73AC3E00
+3ECD370DBF6F56C759D415C5EE1D88B9132D1A5ED94D4AA6528B82C13EC322BA23163FBA
+5F8B0F045933BA8410B5E68400C676550762A5AEF88E342E4F2D7569B1E036424E44D848
+5602F2195AE10260FCCA8F529307B0DAFF4311750954D5068CE20D73BCF37471B71E66F5
+07BA946A89324661F53F815370594A68CF2469DD03C8F594F98CC0D5D66E19C3BB2B6B09
+68FB69F868C48C8B5F38AE3A08A0D815C81A39F726173BE3E2F7F4DFB51475690A6D51AE
+C1D06082ECDA0593758E3B92567964EFF51312F3540B3703099393A6C5EE2587C45EBE0E
+5BE4373BC6B7AE6BB223C25AE095E2CD7C9A0F7171F01E79876966283BD1E48518C44A25
+564C43E36DBBA32889F790D479AB963A68CA7A530043D4F120361DA8D1E54B1B6CB220B3
+FA4AD471B841F74874A6AC0979F59FD4E1753F6F398ADB32A48FDB29B331F1114D93FAD1
+72AC5D6B3AE79B5B5DE7ADA8E2D5D75E5E7EF091A860F735FFD2063F86536FB180FCCCE4
+EDB68703133712163FAA464009F54FC54640B5BC5EEE207C6C313C91E4BFFD3FB5557639
+46C1C4430BD05351A781476106B66A2D529D758C900DB2B8E7E26932A518298EC95585CB
+DE01041FBB760D8E9CEC693FD426568CBEF07268B2DE535A9EC6393D287A95AE769E586B
+C81E10192CDA98626F35CED669A036D309CC43D1E8F54960C1BAA84D84FF647E0AE26103
+4A6CA24625CF4A1221F1688C0D34B7E138F39E8D5F84092070DB16C03156E1C1DE19F542
+7F47C9C14D38483B3761BD33D2316B5CD29F71152276B3E7988C6B066A2DC37945F316F2
+EEB8A860F3F783635BA1D72ABB123D332C7460465398FD11927EE49347733269F09C44D2
+F5BD0EF0F543975E218423407431B51FFDA9EB72288EB168F0C626C58D557538703CEE6B
+3E2B59B7F0B82F77E0E6DDC30A4DC14DF3AA47B8D95C8ED10A5B09A96605EDAFCDE5F83B
+046BF9A03E245A0E813C39255689A870AD85838CAF2CFAE0C39BD0CAEB02500A7E477715
+A158AB59486CA84B1CAE512563B537E47B4EA6FB0DA9A75C6A49B81ED2414E7949E872E6
+D389F71D2C39FE58D26F183C0A860DA97235F8EF502B51A0E00D4F6C84B9075D29B82964
+645D16C472F8EAAD35B517096ACACBCE7ADF61C97BC85F0C874A9C6BA0918AF2FADFE547
+A2318CC85D8877062F7AE2B0466737C8B4AF82DA3CE6E401EC84F29425766C65FFFE01BE
+A5DBD33E00926031D2D007B57A0804EAC2449A3C040A4F96EC2CA3EE90FC61422C5A27E5
+11504521B84941C12DA66AF8BFCD060FCC8E30D27DE9DD77D82EF4EF554DC8B58DE701DE
+19A90DA6A83AE11D22AE69ED6A120D2206ADB561D064A306A16931E72455FFB6D45E4556
+7594CABC313272A7A5D36456E298E6B928FFF9E85F43E7A6A9EB5F755D115EC8C88C0D00
+2F56E5C021AD42966C3574C593B490E8C4AEE85B0BE4A0B8538E3179A4EBE17C07755EE0
+3311EAB644FB5530AD5D7EB8485261763D44F0CE2387684200A932F5997EB11C8345E2E6
+2739C93C04D8DAB6128CB2E16940E4018E3F2DB4B9F6590096B48FFF5D4D57C6AA957617
+8BF2C360ACBE246BB239C75127038F3B99DADA25C17BACCD2A0EA79DBEC6231B459F2F45
+3FCFD87D1C08BB9C1438046CF23C5224EAA60202EBB2968F179C2A9D3FC5C21CB03DC035
+8B128F82D0054355C049E3D30CFAD7CE739D7B0082DCC1A85815A26705E5A2F7ED8A058C
+01266DA53B09450DA749A0556FF3BDFCAA0DB485ECAC794B99D54DDEAB189E245947DDCF
+753157112D9711C8B0E9CB2A0CC905911CB208BC0CEECF696DADBC3FDA52F517CF14A2D8
+AC1BD5808E48F441407B4FBFBBB730DCFB4F6B83E6E9270565F3B44ACC3AF8E490195DCA
+C29B92E22C438F4C0CBC817C9D5CB4CB774566BB39DC946D56990656E129BBD32D3B182F
+E9259170BB1E2C206D58D9DDBE2AD5B0229CCC5C099D63659698A119BD0EA1EAE4EC8016
+A068BBD6E12CAE7BE719CF50C89775771DC30929CEA7962165B8EF4F9B8870BA699FE27B
+501A017199F9FDA638100DB6BB720A705E669E0B642ACE92095CB1AE8E9AFC781AE25A01
+D94C907023603BFE52A918A609755776E80B484FC89CE94160E31834D89E9756EC9BC8F3
+3F5EED8E1BE260D15B06A4354CD5F360618F42D8241892132BEA8D2AF291C05D6AB4D091
+9327FFE464C29DF3CBA44D17886667D917A02415127E161F648AD03A929CF60172E564F1
+04C3FC35DE0D712B474352BAFA351D400E2A5C677A9FE54AE1D69E60E1EC4E61BC63B18D
+7BEAC040E1AE7F2BD18B12033F542312C0F5FC5D4BB308DBC422D31B23E9F3C6A8CAF9C9
+93A437E5623E1CD188A222D012ABCD2CB103DCB511CD37E0156519788C69F70C6DAE4532
+4D29ED4089A440B981B8799C8F1AECC2095ED8469A60958D292FFFB1C0CD8784BB83C2BB
+E4CB5BED7E0DAF9F52AA01DC7EDC75E7B934021F647CED6A1358DA39103BE7195B83EFC0
+888BC8D7ECB6C6641CF06B0A2EC2D1FF03E5B5674F7D64E114C2FB4A0912C3996F68F66C
+47A36B6B1008837B739D68CE8BFDB7507914C3F74526FD99CD50BC81F56D5F4CE8CBF8E6
+67BED5E4F90A368974BC0126C8ED8AEFF491158A79CB5D79194DB86F26F5717A579600F6
+BE65B95F05459AF32E9A09EDAFDCAC2058EE749AAAEABD059F3EA3B02298C5E4A606D7B6
+2ACFF73EC76172430C4C653D56845840B1FA7F573A92EFE510CE45C93FDE497A59C9D416
+5C89DDB9BA2B41D2A22D9B710A9F9D70121B80CA81049C794FA81A3BDFBFAED17C99ACB2
+560537318D176C30E7B120DBCB0E40F71705D287E8E1BB77FB27C31C3E895090B77AD09E
+24687464D8CDD4217F75EA7591F68047ED541A12FC054866F4C039BAF6C8EA9A8122F582
+38EB911F5DB35E732E2A1D00123758E4C88D768E8A8A02CE462B23E0A2C2C240C60E9620
+1E46E1B03043723C3876F87CE5B7353D482137C704A2E05D506C1FCF8109630B73A61780
+F48205AAC3039318B30EDA425A1F667BA98A9DCA1D93582E5EDCD08984E642C50AFF5FE8
+7C48F760EF7EAFE4F880C0BE9136A92409D0D899905E1406732209140EC6EC2F784EBA4E
+D24D8352DEFBD75F3342A7E8325B331C928F3FE58F79D55C36C7EB53E38EF453E8E27C54
+5B2670831D33C6E29A6C5649BEC1779E756E6E4EF4190EF13264A2856F6815F9883361EB
+0BAE9A80C20F09BD918A683F65D4E8F84468E413C4C22314B7E83AB24AE76CFDD328A4E2
+86A1E99B8CF9BCEBAA31C0651FEDB9C21AADBE41CDBD0865E08519CF37E6D90891C47FA5
+082442992E7F362AD1F7DD31CDDC62D8702603911713CED659B8ABDF2F85A8D5740378A9
+E0CC15D56B50E8EF62510D2B936415C8C407A17430BDAF61C097563F64AF7523C5F69AA9
+4C1F86ED0EDC832FE2C3EA496F80DD63F092458B4A64E3DF20050BBDA06368548E3D2794
+7937627DB51895F300B90DE0972C101845C31B9211A5C462818C4A6BE36C03D270769693
+55B832AADD01AAA8A28D9B2EB59DC02EB07F0FA04A3BBC3C3A1D73AC073275BBC703C891
+69C950C5D410F4E1728F954C1A110ADC5A6DD35B062FEA8ADE023E0BD0B59AE447B33B48
+C30EDE1AA50085F59C27B0BD95D53826FE1DB3B59F637AC123B204D36667A8A6F9855863
+94AEB49AA808D77EBCECC418C2762649CC391A930E344C0755B8977EBB112F6085B67110
+E15FAB61CAD2627D5B1995DA0F54B311C3E1DA3AE5CEDBD4253B8499F9F4B00DB2BEB156
+8A71E2CFDBCED83CDD24574C841309A6895D1FD2999B215D1111970B9C3EE06D94E00450
+D569F93AC32DD1FE508DC8E76C3F736AD68E38EFC194D5B6880FCD6271AC8E2D8E51715E
+BE6B7082C41D424A7AF2933A962C9C90E517B155C092C51508CF7E5E26495D5A80BE84DC
+3A05E626D8207B145289335E865924350839CC4B9E98F56A534F9CEA280B700793028104
+B2CF192F4F098CB39D088855A2C1F4C004D063CB70D65D5BD7B458E1A7B211D0B788A2B7
+66BFC42BA4F5434120E804EC7E1FE26C72BC01DEDE3E64694C23643FE704565E97479E3F
+AE033C67E79B74D1CD3E161D2EC6E6FB95F669BAAAA59485B5BD69882B3BBB8E17EF4B13
+FE2CC6FC071A812A725B750F4067457CF70CB8A3EE94D1B949BCE646F8F4C801A49A2B92
+F97C1E82C5143ABEA592CB16AF5CD7A7B01A2741A12E8DD4014B0B90909A88FA9516AA2D
+6F4FAA6F5BE5453B1A58183FCAE0ECBF568CDF885FA153CDB1B5E72FB91E9AF1106FAB90
+555B0199BEC3E8F9090D7C0CA9DD24DDAA33CB661B1100077AC452934980F9D04045EC42
+47D596B4D8701BF499C6E9BDCE1FCEFD73B48540BC4E61CAE160A7F0281455BD0E3ACA66
+83CFA9C8A50482A44593A9DFD9B177280AF0A65A51EBCFB5880367ABEBA0F4F729BCBACC
+2235E8C7F5404E78BC2FB3830FD075421A1A2DF06317B98B684687C97184D46B95DBFE34
+0283BBB036EA36A4E497445419E0B785FDCD31D73034FB29525045D7043A5206AEF913EE
+D2ECE098B0264EA65CE2278E61B589C1F58F6F3024490F0C1DCED76B5B8E8EEE74CA281B
+5370405E9502F5C6771016066A13605554B39CECACCBC4FD31996FFE0A589CD26D0C1755
+055417AD597238DBB523C080345587DB48497E4C276152255A7DF67488DFD061A3716D58
+049859722DCAA99187F25155699DFD6BF9EA9F910CB33E6D262001EE40084E601979133E
+2B6280331533D90242458D20325973B75A597133FCA4BD2362BCD50D972F16E7BE86B1A6
+3BD08817679B78DA8BB0A9570B057C8DB40D94716A28CE6CE62FF4A43A635164EC0DF558
+C6B07719D64D6562B932E1F1F273CF5D52280107877110C2A4AAD740CC88D0FB4E692823
+5CCEC223BBB2468A49246D42119720F83646B2FB1EB16C0C717925E25C13EF0199475480
+E1E68033A2B00F6C736077272CDE872A71015887E1D72F2FECF004D403693267FCB31096
+56BF6370BE062187B5C4F181937BC9018AAD8660E37D97570F1E04D364716785DE6F5A5E
+3A2AE49774CD5D917AA141ADEC9E05A2392D68B1DBABD89678A8C37A000AFFA2D02205A5
+E2C1E344A9A5D66803878EC6D4A7780DE84FF1CB583E67E951D6CAE4C9B023B0078BB2B0
+AD41D8A9BBCABA5BBA075D9EE202EB2417E44DA54C3C98AB113A10BD0FC189915EEF8811
+95BE0D910C3203E848E77CF0C004814A4DB7A9C64C6DE6FCAF0CD249C0673FA12F82CB96
+9515E04CBCE66CF9DCAD5887B4DDF191AD3003386FAC3D3AFE0A50FFBF90AD29A94359D9
+A37330A401CCC581930C9B66C70C221A0014ABE2C510810DE51199491711215BA6589F11
+42788DB4F7A6DED472FE0C7F062AAD640CAA8028E5D03A6F80DEE5EDDAF71E6F3C26691D
+F06EFD2B57D7489DB6230F0BBBA02D4BC6D5658219E8C0A19EDA75A0F328FCACC7449029
+DB4095317383B0CFEB116C5F3C2BEEAF656F7061D365F09A7823FB405F9A0B709A3B1894
+FBBB3AD5370C6E66B8E8646515EB7F3352EFFE5ABC0369D1D8CF7B61A08D9BA5268C47A4
+AC7CC591FD0989BC9024671E6069D56DDAAC5090B0CA721B0321CB27ABC77C014031C594
+61E0E0C1A59B393E84ED5851E5E706A6D8C5584BBC03021ECBFD1B3BD4A7BFE34B63D945
+36C08D721D864166A2AB762E6743BA45BDB4BCD7780903D5BDB41BBD1362858AE2040493
+25C635050CFA48BF2490A5438ABE13C26FEA771CA0F11497F99A8F39AA58F1BE4AE198D4
+8FDCC6B23B1A04D6B5A5478209959FB1211DF9C86C9509D466EBD7A80A3E4250C81A6969
+98F34FA7603FC1693757F13489848448CD1CFFD3598131445D653264DAFC48E411DCAA59
+4540DBBB53E9671433227AFDAADF38C873002BDAB0AFBF4EF29621FD6D804EEDB844A368
+CDD3549525EFACEB70D1FB49D8FDE9EDFAFDFC37B667F7D7D1866BCE44BC943306B2A5FF
+95432CD800EE7883E88F6E12477DD74C904742368CF0AD58FB09E74057AD2D575B4D9051
+374C61877E3F2E6C97AAC2FA7E5F0C8AAC02EFB5266437B8C42060C100A03DFBE31DB0EC
+AFC94638966719D9531F82C1A82208CF9E2DC260E90FBE716A61A851970E4FA70FABBCD0
+97596D2ED81388090A8929983342B6ACE3D9BA11438FA0E0256FC5094AD6B98D67DD0111
+98AC041A642E63EA56DA0F19506DEA4A8EA3B8521D4FF1C6E15DA71122ECBA23B29C3D28
+714EF3B9100E4E27E1164FEC4A886D3411F56E3AD64BB9FC103A9FFDF90E149ACE70C27B
+05EA644C45F7A8BF07192F8AA3EB370BA68240A947735FE31CC4EBE9B9CDC1A3AAC0EF55
+89319B10365D0CE460F0796BCD6BF085AB89C9136BD1B090901A9813DC8CCE65BBDA41AC
+7AC790B88E1E232DDF98745BFA36EE1907A11CDCD9CB5A80DFC33DA659DCE25217D6290C
+06410CE9EEA16302075AB85C3CD18F6BA0193854BE1497F20C0F2D3DB2B5FF1B0A964C7F
+312C92012D29DA1E1AA00E7DB3361533CF6F2990675B2510E68BED9A40952F819D6C5A87
+9431A1831EB8C55C45520908773E762B43AEC4C0E6F8AE79286BB39DC4F3180737324B4A
+2D9E2F03F2CA60A9BF492338AE9321EA36B9A3225334189FEFF1A477198032C089DA2FA7
+EAE272B851F174E08E1881281DC89A582736B4D5605E6577E8CA7B4D4631C791EC2615F8
+46BB0DC1D5AC6C209EC4D9FE51C3F4481715758B32635805E34BC15F63130DC3A66AE2DF
+DA7CC457A6C3E42E8162CE26D5DEEFA7BAB2357B9511F07673CDA756D01F01F8D8B9B26E
+BCFE64C28F2838BBE16D5A6AD2668566123709FA3BEE0609A5C8FD36740E4AB3BE13459C
+A7F79375F9DA5A7ED3817275D2CEF9115C81B1BE435B99B10EF84996C7DFF5CA23BC771A
+DF9D62E2373A01D45AA235FB2A3722D5A8BEFD27F527AA444B045A2A257A93D97EB8DD8D
+E0ABEB9C649372DC931168E7CDF8DD85EADA16D489537BDE8CF979B45C2568F180AA800E
+95600EB3A03F6527A7BD3EBA196F34EE242791271F8A4FD965A0BD05F1CB72EB636222B6
+54B9458A7FE882EB64D19B431C810099CE3DC35351D4A760A57583BEC056C726FAEC77E6
+BF4D6836F0E8B27FFE1B2828ED9F2F0FA13C093298DD688BCFB639D54050F0DB216862A5
+0A6EE1EC79F3B519353904C1E6CEEBFF37D777D758463224CE2E0C3996920018F8EC8613
+1969ACCB6CDFF56F47A78E8D08CA21067C41A38FFF37DFA753F322F43A680CA7C64460ED
+8B03A363B506D870C2F656A966BFB84EFB6959C72412B205F1416ED928C37F22623AFB07
+50D0497C14FC02F304D706BEFED4B56D34D4A653F8AB86E191B2F2261172FA50A64174B8
+E746DB8D231D87084ACF5FFAC3B5BA0592588B8A10BEA53860CCEED8A210710CDEDDB45D
+699191DD1492B40B65A8C4702CBD3016C5A0C5F26AA97EB01DA7DF2B8A5EA01A5397F771
+79EBDC32D54C7EFFDC038DDE5737020D74D961ECCCA7582C3A2BE735F1E0FA057746861F
+B8B1773107CB645C5D8DB6AE04A000E56F95C8DA60F77DEBAB041FCC07898C70AE9FB2D1
+5E979E94445AF3F267986F9F289EB96380099CB35398B13F00A8FDB6CF7348298172D584
+A914BDC8AF5B39A1F0302F4CD7F365888EC4C7C869BA0B99611DF5B3F8F24018E597B77C
+A1A78C972A48B825B184712D68FE7885849D0CB88B1A7B9D01EB4F4A98B5B69C86E01853
+15DDAD9ACF478F7FBC8B658635D558123ADA61B7E35C03EE600F87B66D28516396C45B22
+0139B8B6E44F7A50CFAF80E2121344B4F03CF9FF2CE7897D507581FD7F02AE8E15BB171E
+916166B20174DA6D9BA406977EBC5D89CB9F0FF7BD1CB0F58696F4FF57EA29425672EDB7
+0B34F8FF66167D8EEFDF3175F63DD79BC899E3DB3906807737320079C0BD552006EEEBD2
+5FFE24B08C8B9D5CFEE0E1F697AA09618DF764EAF8CEC53759DE55645D05CB6F1633FAFA
+F83E420CD8447D789D5DC39A63B619647FCD7135A3DC051E8FDC04F792B4495A8AE3E35E
+D6812DBBECB868830AFDFF06A9709538E048A0E9FC1B2FAF5FF00CE2ED3C6D173D8032DE
+954F0B7470D5CE8C2B22ACE5B971F74073149E9135C7301CED0BB9648C267FE4331DFEC6
+12523DDD5DF43AB43172154751F99A2317471E53857BD8384EDB5F9CEC6B48E4FAF42B72
+0FBA280454BD80DF84A6665FE942C3B19076EE25423CC5DDB198ED8193AB35FCB6788DA4
+7F2D00A92F739C0D059A76E4F56B8CC09D7063BA5D043CC731A2A55964DDB33BDDCBAF91
+57FA3ACE9DF3E7778A07790DAEEAA116CC969F2A49993B06BD477281047777F3A75E7684
+4AA5A6D038449D6522221F12FAD05B911AC23B300747532C934B8A471609C255E8FD4D3C
+0AD02DE0474BFCCB4FAC61D1EF43CDC2ABB26F7B96CFE858AF82B3C4456E6DA31DD3D1E6
+453920C6B56676619185754CB8066252A984A8ECDF8435168F7F98044E8C8C7D3B28A790
+72BCF1894DA5EE803B7E06A0BEB032972D98EC6803999A508E08BD75362A9DD5CE820AA2
+3F79667FF9DE4BF57612F5B33FD999F8C1148C215806626956232797745583B1B56FACA8
+CA3691E19A861EDEE966DA549408A6385D504243B559523D4DC06B02884EAFC9D99EDDE9
+21E46DFC448545E80D8E3521BB8C42B52D8DDFC15DEA2A249B8A224F0AE452F69758F901
+BE323319FAF427A2DF9003C4AEADE4A6F19FF71C1AB9383BA4D10005602FDD7AE58FC5B1
+C44202379B1C86E35FACA728A85F4BFC4318FA48E8C0182BAFFF5DDFA51B6F6109967A76
+1980CE19EF048D2F0690BB74C68F98B2141921BC3B01EBA457492D6222BE0BC6D7A494A0
+96D9484538C495A5F5D39579B150C732D523D9AD8C8F8C540822A9855ED902F8DB1BED96
+9995C244B52C94FBD847929C9A4C1814C646FB5A6CC8DAF0E788DAC7BFCA216FD6EB7B55
+F2A01E5545BF8A2CB1DF18AB05E8F77E35059E06D315DED8D650D999C05C21696CECEB73
+0EA8BD240A1581D71C1B083C1AFF8E701E7702EC3D5199E298379888202D24C019BE9F54
+666E0F9391A45F76091727496321AE18652001BFABD2DCBAE69C621C83E85E5519B6CBF8
+3C33EF1EF681A1ADD8DE3FFD16440EBF73AD97144888A8F1309F12D630438580E52BC87C
+F7DB84CF99817018CF1289B722B55F5FDBD0309B5172A1B1AE7CA970208BA1455C06F62A
+807703D1D6FB1016A8CD363D1C381696215FADE2EF0343AF5D405B4F1936637CDFDF9325
+AECFE3BD7BA669D5D63AD7B2884F9D9312B8363038DF80387C24AD3E03C57944F058BE8C
+DC906FE4D19E01B93F0D3ADB683758F364E88C5E300A39D374DADF1D18404E2B59CC9DDE
+4EFA11D9D55348D991C86F8A75AC58D5782D0EF4364CB1D34FD472991A342619638E8378
+CEC69E4A4BE732DF2C2DB3555DC9C1D7C1C4C8A1F5F7B72753251A609EFC1C3FB17A725F
+5EBF92F51177EF02B2C579BC47C5A16641C10141B1A4B38A29C02F20870A307E94D529AC
+D4A04CFCA991E3D2A8CEB6491091C8EEA0212042AA7DE1A1757A8F4E2909631F3344B83C
+2D5AB78C8C5B1988D39AA40ADCFD2955D7F0E41352F5184CB06227FD7152C9E68C65C9AF
+583CC1F672288D206E8A0075857F6C13C9E2CA6427051518C45E11739EDC370A4E73EDFD
+B0BF96DCB3E0E6C21C01E8C4039DC261584B4AFFA42764AEDC90AE8106ECD360BAE94F56
+9FA98080AEC315A0530ECD43DB1D844D0B36DC932AF532002C169D939D0868383ABC32EE
+1A291E7467E2D0D2128F2C974967531CEDE65B800C400DD0FCCF4D2543BE3BE9229AE780
+CE7C4C5F7E9EBAFBAFC638CD6115E18F2FBFD826589E92BDAD21A2977544C96BDD812764
+56779B47BE2298633337C729C69579AD16DE1341A249F2C978C20FFC953DE6F488018677
+0F5473B0D00AF7A77CC6967726D53E1358F261990E72AA8CB5661DEB954266084A6D5D30
+71F53816787DF2631D7409ECD584F9D2092C45DB77A5EAFB9CD41ACFFCF8E98DCFBDCFA2
+F63A4E1A22900A79E3E72D4A520BA4CA759C329551FB2F290B2F9E286D854DB4BF8156EA
+7D49BE93FF4479147826C84F7457A6B52358BFD280367DF90C4AF107E2187A11E6C75CCE
+C7B3420FD6367736D3A3625CF516DBC94E5462B64B350589046DE9464935B6C568EBF9A9
+A047AF3655508CD704BD4964DC2B1051089FADDB170FE4BCAD75E5B8C9F4B1634708CC44
+0D1639A1C3D2B6932AC16E160B36E6723EFDFF0D06C0ECCC57998D6EE85C1F0FCB8B28AE
+001D1B07D5296B30837BBC27BB81A6576A3A8DCF9394C6709C34E52EFA0BB8F9478E0FF4
+B23B1068EE9B545CA529E639788F3F832BD7095610BFCA56D281F716A21CF534777B75EA
+78E5F70A166E375D85ACF78179DBEC637A163F95592DB239C60C435F5590BD4A75CD17C1
+5A93D41D105FAB94368F6E1041206764C6F4550670CAFECBAADB4CE9EEFFCCCEFFEB25F1
+0362BFB889F426819600199BA03D42E26F5AC38F29C97B6435D9F4F0FFCBA2DD51B08FB1
+C0199D09AD7BEDE07F78F2D104E17DA2A2994185B7B4E71339FE642B4E409410008B645E
+FA685E6A1DBD4DCF86A2CF4B43687532230B1B6E1897AFABAED92C9775E0034F400C9A9D
+CE0EB2B6A2E43854B6248B9D8E0390B77BA8E5154B0ABE0420D1EEAF41496DE7DD39FE88
+18644682FB10E13935F1E5B57117EC90D5169B6E41583F700089E0D6F94703CFA1188AB0
+94904E36D5EFACDB6691F78D08F7CEE33EEB48EFA753C8543E09C81AD0CF95D2AFC88434
+1AD4545B760D445F9985DA9558083B0D92179A8330F95F67EF0E0FFA4ACF84BDC3588508
+29FA3EC0D6EFB25C6DA8C8E75F1775E22F89B9E175B8012FA1DFBAB51D43BA41225A59E8
+255B73D1B1CE3D84A473A78D0C610B1D1C94B8969495A331392E8E79AB3984585EB7534C
+09158AE795014C75E21F7B60C94ACD5A4BAD7C99D123C1322C22420915CBA1BC50DAB9CB
+495C0F8E9041DC98EC151217570FA3C4ABCEEDC5556E4E484F627306BC4C460F484294BD
+D90F75D723731B430B9F551091C0356210725FC46F5E76857C45289270193F5BD359CA9A
+EB7444D35223B8784AFA57968819B4753CA735324DE965B0D409543E397393025BA73EAA
+1D29FECB9E0649DB6D4CA412D3729994C806DCB64531C64166CC2DD7FDC3925A364575F1
+3F7F612CEBFAD1A6E431C194475F4F4B63955E8D7D129D4A6ADB1552DF8EB970978E90A7
+30FE0D903CD5F436EEF1C085A483A5AFB0C32A33B54C8C1C957C4E9E53B786EC43A895FE
+2B948C8EF3EFF3DA823682B77BD3278A80F69FF6711C9344828839A8F7AEBFEEA49FC6C1
+FEF0FE92516FAD8DBBDD361A1008B705D53B76FC6F8ED493320BC4A38CB30EEC3C281962
+152096F7C40D2801686D58189BE0F577FFD60472A51EA9DE545EE3672CDE97C719CD3A3C
+D908AE5E52D0973908A4A280F283D92E9D3471A69083E19EF3F1CA88E5A8C832E34E6E9A
+D9DB67B621FA8B8A20FABDDDFAFBB7D6D96833DFA0286A82AD4DD43865EFBC1C205220B7
+6F0E36C8126651905D1876B22F1B62C0B0C13AD87B92A6DC9B82DC8ED5F1BBAB0EBBFFA1
+B709CC604723D211930D6054A3B891C1703D2B4F69F60FAD027281562FE8C3CC267C518E
+EF8652D79CDFE183ABF2558160151C60726539410B188D91A7505EF7943CB64034B3919A
+8BC17F18246ECD1DEA7C68716E506CC31C5EE78A0047E7A9968EC0162A3C6A9ECEECBAE3
+79CC15AEB6DA6B97AA7D7ABDAA59D579D8C64264832CB9E48C729D626004EDEFF2F31A0A
+A8EE539534BD5D33AF1F5A195ED202587F4BB03C540CE51F9BE163FD61A84D2016776ECC
+B2E4F586B004799111670CD19D2940C7D495B09731A51542BEA0119BEB6C1F360A757228
+955C4E54EF485D19608043A6BCE63901C4A45757C741F0922FD25225748D8B5DCF18F783
+E52DA72F9E7B67BE42544C4193465DD68ECE2A2176C5B0F1755A14E79682CE8A4633A3DE
+84323F17F8450A040F0BBF5774DFADDB41D3D8793AEE8AC21C77165A66FCD8FA80D3B815
+956A136299EA996DFC043540EE6C52278C7E5B56E4203198636C48079F714FF16043666B
+1406F65BD74BFAB307833530F1A6D83230DD3C98D23286EA295C4C9CBDA61A8CCCEE8DF2
+55E1831D38F2BD2CE640D2250C2200AF1B77971B2CD470810617F98227798A7B2BCB5547
+CACBB8B491E930C12A4AE282494FD1E63FAED1D0485C036ABF657EB19218F634DC0CEED9
+F254462F21F2C38BF4DF375C2F37EA200FC0738B968FF22338C99FD2F207045806303945
+683C0EDAFEE5615B231BF6038530C8D1421B381AFD705893135E094F027D0699069CF299
+C5AD5A101202346B87DB41883D457CF4C1DAB28F2C725D93FC088312D54E018CD774F632
+968A76A30D0F7086235D6718F03A2D3B60DB3F57BD594D01EC5C071D36E125CD75C4695D
+A525EED690070D8D7F64390DADC077610DCB7DD0DA704075C9CCC0A37CDDB82F3EFEA6D0
+F5DAD37BF393E24D9C19F4DBCD25A4FEC89F9CB7E370ECA3CBFCFDFFB1EBC83AD5A1244C
+4B0DF490872A27C23A05BBC75CC1D09557339C6974BEACA092C090F77102E6A7435173C1
+D0734FD9204741B478B0ED360EF16EE01398C9B543CCBF28694EFEDDB233E345BC896B5A
+4A1790BA62D924267EF243C7CA2E17920D71EB923304E64771BFCC91EE5D30FDDD97B29D
+4215B93E72DDBF91A51B549275E396ED15FC1E96AFCDC6A6F57882A4C43260655150CEBD
+1F8FC5D8C2F051EFC3040BB6B69BD810DE0C13DD521161322D569EA117EDE6AA85CC9010
+FE547AAA234D007EC9B5CD5C2197DADC5BDDEDF28DCAEE1AA30D2E5AA1393BD401E0CE65
+F66B5AF7DE98DB0B158F7D3DC188D4F1F22B9E2D1B4DC4F75181987F480FEB907A5125C3
+67BF50FB6D5BB417320399CA17DEF0821AEA419A57A45E5636EB55827319A6D7D2CDB0FB
+A6D4CCB1588B065399B07DC0ACCAA835E8CE811EDBEE192612BAF06394A4C8CA90A6551A
+897AAB108197FB6A2CBC312AD7810F72993398264E91E9CAA980BD868CD7AEFF164DE8AA
+CA4ACE445B95AFB8974D72A9CE0C0607C3010F73341D678E43A7F2587278BEDC6D1C31FB
+ACEAFE5783038156CBD568FE91565D973D965660FC5CC5F900142BBB72423370C3CBC87A
+94514AFFC08A8B9C7FA033D4A9DAC0805824BE8A5101AD288E12283E1BE3DCF5A854FC6A
+A150A083A9E40D321B0B8935E815D17ED89180F5CDCAFFE3E7CDCE2741F61C7B604974C0
+E189B279976B7A82933BFF8C45F2B1351D6CE5D29306F2F6226F0009D5C1D19C071B6908
+068AF44C40E29ADC89125184ACC3F8F6ACF3A693FB85435CA79835FB1B7EC52DFDE99CE9
+8B12AE0A67F00A3C8755FADDB436D1F5AC70A047B2238268BA7A8B1CC6F13CEDC5D79BB8
+CB34F2FEA24DFE9B6AAC7134D2378EBF724A0A13FB9DDC2D01E6DF8AB9249B20A0D0A7ED
+77B313E2AC365F666EECACF589B936E76C92904922F5D07F24B859FA5E1830EB572FE006
+A378C8DFAA292BF7F4AAA6B9636E9599E4084793EAF4F2AB0A97C947BA2355EEA7181352
+FF3F4DF44C16C484F76BAC0EEB4D7E90C280E21E28251B991CA4B4A3C2B41F20794A8E58
+1759F6B3FA46D56E82C98762E415E8F4AE50B026F12FFDD692251437C16BA22D9490D10C
+364890456DE77EC913544B50577BBAE1922A76CB7B9532A872589293304B6AFE3E538259
+71A6CB98A971F88A30D1934FB7B6EFB9D58E72AC27A82437246564092E158388975D03E2
+A2F9733569FF87B12228F9C00417D115A975625CF821ECCD2FAB46BCA310D0B4DAF30D5E
+4DE58B58D75032544D5602D978F858A2754172DD50DA566561DF40573791C85A6D954972
+F55C7EAB039399294DB289A13CB5DC37F1244254A2447B91E41CE53D325A2AAA4FE9D46E
+D177B4CA671F7ABF6B0C371C781EE21E82C7EDC548846D14E8242AF383311ACBBF9E6B96
+A6A3001063A4FBBCE1FC07FAAE6267CF988EBF8B8F0775316BDF763AD338D4BBAB3D0DAF
+D7C05BF99EFD08EF9BBDC1C807F0F8C4A37A0AE7AD59F75CA657E0C8973E0D1EA33DF61F
+69A5171A8A8EC550EB95721BFE8FCC4D9822C25528E156CDF46772D9328541049EF92B50
+6274028D7E07C3DD94E6594DD9BA33DA76F44167D80B5004B092FE5CB2AD83ECFDFB2883
+1155285C626DC553731FD46AB370F584EE2758BFC2A4B4A8DA7130C1703025206E36997E
+7988B5798281D069F2C97A7EB84AD8C02431AF5F25269FCA58032679D2C934AC30D24B1A
+4201D70BD71BA17F606F635ACAA45937CB9C512C26F3676C26892BA0ED8487204256D9C1
+772C40461F11EA42777538D692246E0D490867A26DC9EBEFB953294A44F3E3640BC23360
+7D0F99421C82D075580EC0AE7D8ECFE858260D6E879A2E919D52FB6A0CA8B2BF8DCFB778
+2A95426ADCC3E3B9BD2CB5A92D746317FCBA692594A5590699AEFC442CD6EA31EEB9B09D
+B06902B792E5E817EB6D0C4E049E7CF711E160E7F96E71D7E0F935F6BC9D201B99E20F32
+D3806F7B1A0CBE79AFE8A9920815E410B6D7A7D29AD5E80642E6E2EF7561A63660E8C87F
+3EA82F0DA1BEAC8F052E31C7F0195D0B749E3DE97BD313CA2F1C333400E914652AB1E794
+B32A0B1AC4A749C6816AAD092EE33496689F599524F4A766EA879AEB67109110355072BE
+07626D811B792D98BEDE20EC32B29197115635984434B997AA14F8CC320734D6BD53D9F2
+050F4258E8813CE0A5AB91BB186646247A6B79BDDDDD5B38E3BFBD1F0815B8B36984300C
+9902EFBA74EDC22874B62A562695ED8DB92809B57472DAFD05713FD120F54A5EA196F37A
+51097C42AF6AEE8FC537B5693BA9EFE15ACFA517C3A175409E802007644C285E12794E4B
+70A59914BC028E61B341DC1B16A1AC557405023286A8C1B2EA05D25B869688585B24FD62
+806473035E23AC93C02BA98CD41F3EF6309788C7CE6ABEF3FA01A6402F552AF457D2434B
+7F7B990D81CB36E1C7626983060BC478B6598219B0F45E6B45B6C2ADF7EA53AC7380CE25
+EF7F502FCF000915312FD2FDD0C444D7C8859A6168FAC209C3D08811E86DC6D55D0E81F8
+A7BA79CC58F4BA171BD4EBC8D249273CC14E263CA244A828A50E8AF73230A5AE6B71C26F
+1CF2A338AB5A0859BE7D8EFA8C429A8D2930AC8E786D433925954EAAF92D76D43A69F89C
+68A6F5A4FFA266B78B8724B96E32A1200A3B8E8344B4CBDE670D0E52380C1BE643D1CA71
+CE58EBF2FE1C75D262544B339ACD1E6DE9C7530B124A0D1528AB986F260A6B8A457FE617
+5387D9919B9A666D672D57757B2C7BD4B3745CC3FC38DE2C6AE6E0C4DD8A5F1EFAB5EF22
+E74CB9EEC474E60D721705754DDBE3A042C91E5C05F395473091AEE1FAF63366FD0C6550
+481E510BDEB64D2632276AA0AE351B33100EF95E824EB0895CA0395BF5FD5717B613023C
+E68586F7233F1DDADC283CC058C8CAB8BF8F1544AA00CA11886639B49ADDE6E7F97409EB
+E07EA5484E805D60AFD1DA1010445983CCE25D189EA960F316C6246A733ED172276716E9
+7FF67D35A32C9456DB12F414475593AF50F317E1B124DD6E9E11EBB19A1A99680B863263
+8052F56890B81345C96D0409528CB5424DA85EBB4EFDB38BAC6BCC99080AEC5975D0F756
+2F794F3411D752E277F6C9264E0F1355676C1C26582165E9E199D802267E3A5B7EC77699
+11D3F51F00B3BE4D169271CA8112E9014AC4C181A7B148442D5D48969E21A2C20CBC4EEE
+6D9F8A9CD3BEDD49B3417C0318A4BA80563E956A7C2D76E034739488F1CB71669A31DD10
+5FD225909E1884421697CBD8BD34DE4D55C707B63D6C47105F962F2DA3517C812852AF34
+197089DE6A1E896EE7FFB2DB08263ABB6DA106E9EFE5AAFB4FEBDB83449B8EE0B27B2E02
+1043BDE89E508911FC590BF0866AF0547F81625957A74D7F97BE8A02D7046252D02FF949
+6C65323324281D53ED876E404A12034616B8B88066B0D8E557CED8305A1055779EF57122
+09EFD13D4AA2D81923586F394A86683D68CF041E6BA44A88F5AEF6783B8977B7E7E74AE5
+B0F754B7E5A4B432656BFB6520592278392B6FCD23EBB382E4B22A5E17334C12E8B453AF
+6630AC919D72FDFDA3350115B7132F697BD515466FA9078D16CDBEAECB3AC0DA3E64A3C2
+6E49271C506340787417FD4F544CDF1FD73C05F55F6BCF282AF24A851C73B80F688404A0
+CA2C0EAB1413334641D6D193E071BAECEF09FDD87FE9118CE53C39396BD57F52718CA7C6
+0A3057EE18EB906C70553C52AB5958F781524290E7FBFB3C216AB0F35108E9FD848BA527
+EB1891F1BBB0C8B6D01F7D57E03AE54E71E65282B50409DF5503613AC169A8746945453A
+D5099BF8BBA869006B66302F7D975FD5AA384ACC6226710E8A15DF391973EE09EAC80BC2
+5C8777D40C1065B4FD427453D7FC261897C7C5D2410310453ACC393BC81827C3E15ADF53
+A825E31291E306A3ABC016A1249AA07D18346ABEA3DC76E732DAC5A4259E17D9DE209A91
+9710DCA830F5829989038EADE6D9D7A6AA3B3EA2090351128CE2B9F11C8A7B54F2E82D94
+430F11A4E421FA8C0849BC5E9D57990DDBB83184504DD1DF525E30959C5B67A0A2008B43
+E3DB88515929DFF85DF9A0402607095228022AB71BA2E75FA8A1D45DC272FA910F97DE86
+D6E7013FB3136C866FC4D31D789307331268AA87D12593D9E1855759CEC5BCE0CE7298B7
+CC5A4E83FEF3E2BD5222C904358AEE8CA136F8CE1A720B034F81EDF411A73C3C6F4D03CC
+FE01AF08EF8256E86E45927856FE0FC1AAF694D6F332AB433EDEC0993487D294EA464523
+EDF4F00EDAF495065A65D19B33AB486D7E1CA933DE0471DAFAB1B714386C2837B82DF775
+FC4DBDCA5EEDCB1A979FF033715A5213E6ED79240922B49CCAA022CA5641039EBF9D2C19
+691DFC2A08E168B647E52AC21A3BA210D9274110A7DBD85C1F5505C4C41A6F150D74E383
+7202D188CB1A3E641A55C622296B21EB508F98FF81382B7CEE97BB3941F3C8C2F32BA87F
+E30C02EF3273F9EA8E3758297FF182CC86A50A6111073F822B3A575AE0A4AE6D52010F9E
+F41CF4A0786243375E54CBE3D3B3DBFA0040F75E786F608612FF4F26420D3C2B094FC89E
+3F713ABAA023A11B641F1991D0538083201B75C331592BD8F7993ABDA6F4BCC700CF1D7B
+5AA9EA0C368B4802EE63BF4B0A87256C2F359DC6AAF1D309D564F14C51730E022F34550C
+BF17F9E6BA8C32C43A5E6219654E3D86652DD3B5B6EBBE9E13F89F8F4540CAFCDA356A25
+EC65C864838888FA5410A748750E3988D4025F7B4B58E5B4D6CACC06B1A7C23DFAABE9A4
+B713BAFD555A8B56A7ACCE6C938C90D9D56758ADB864CF1843CB4CF30FF3707B7D68A128
+DD96D4E4D0C3394E26B24884B92F581977349261D9F1715ADBC770ED568025C062CE421E
+59257886FF2D345302B77E8D3F670245730B15C65B6DF6BB0131C2672478617F34DD1F95
+B128F3ACAFDC3B142EC3C616F696D896ED8D9B4676705E62F36A586377A1F2670227F9C8
+8F5098DCE903AC66CAE4AD73FA40C3A9C20BD0C1DDC1E56407608F9414D93B1F313BA0CD
+0D13469BC9E9D91E6114B16C5F58EB724676510EE3B6311F3636230C34ED1F88ABC92134
+C2D72FD3AA1DB6DAFDCC2B737C6F600DF8BDB7251745FC6102E8160E6B1467DAE43CA636
+77CA338FC4AF69FB3708D8ACB1258B322BFCCECB137FC0303737FFFB2020DDBFF441EB06
+7A9F3C6891AB53DE82C445C74F639066095685A789BCE4AA8C6BAF568813667966E1107D
+102E4120E7A3CB7CB92E2166C447C2A47DE17D96F1A7AD593D19BDF3AFB5772B8C99CF49
+F8336F044789DA803F3F92850879733E3BBCE8228B34648D22925C2C1A373C19FB30685F
+09363E8988D80AFE1FF94A4DF9B0D809EA104E66881D6F34DC4A021E397D3F047439D3B7
+E1DF9790F7F7014B43C06162891E0232149216B0653062C72E1A1095ACB9DF7B30F3CCC2
+56504C2FFA721F5A2229D768DD5023FB30559071AAC26B10BC71B3A24B700F8C9C9813C2
+1CE25548C3FE8FF540352A87F80FAE7A4DAEB42C64EAEE30EA8C01F2BC0363C9A0417B26
+365CFDAC4BFF60FAE59ED64DA5526361714983A3F27920CDF6CD6280173FD4CB664164D3
+C89902F2B6C23A0204C701DC9C8E0C85128669FF4E4080791EA1ECE0C6DACB98D03E1180
+60C2D66042453B28F281232D6C439C8D6AAF80757CCA4172B6B1865DD80EE2A7D54D6E82
+B97DD92132E0E2F18AA70CFECF4EA852B80D87892E7801F6AFD4D421D44603400D6D782F
+9ED90B43FF0ECB0A71EC12833D9D8C4F25CD8D026226352285918402479A46F18A83398F
+32894FEE3DFE6BB68DC9868A191B5DCF7C9A46AE0208C2172E89C0751555B4205643F1B2
+9726D061FC5C1F5FBEA55A8701B65A17090A86EE0455E599188936D2FFEEEADD19E866F6
+EC521E0C5126CAED1EC99A9CC44AF6D2C5A6C6454568D27F38A471EA072997678FC8C790
+C44E45B3354502C0C8EF57267647709B763B503DA5B19B5D8C53DB71D94B19953081DC6D
+58B08211F69347587D53442A626F8863544C8717BB4FF7D840EF2DF3617E08F6AD0EC07A
+1B0377F668B06966F856997FE4BC71CE24DD3DDE7C027C5A5D9C76BF5C1A84DABF339777
+11F71F47509183EBBF24CB0A64457F6B73C1BB7E05747E9A21ED1F7619414EA2EC807657
+30851A6578EEC152362460CA0BBA3A06EDCFEA89DAA3840F8C342B85B3A41A00710C1F01
+8C525668CB59B5E374378B692B287BF36BDE49FD1BB17D002DB0EF2A59D9EEE8606924D4
+1DA07581F4498B1B959C1C77AA438231A57200989277831A4E577259813AF4BD6191D96E
+239DF2D5A2514000CCEE710ADBA167488020779D58F3019282F025C8C701498F0E5B54F4
+D0CA61777DB58FD9A4857C5D10EC01BAF50838F73D6F4608E942D62675448A41DB8A3CEB
+E1462EEE5C992CAF48A9A827AD358A01CA8E7E706C9E61DBC463A3F7886B5FB2183AD0E2
+FD22B8054403A6579076FF5C5C516997BF60CDCEB6BB96926FBF32D3C82015974D73DACE
+B8790B2B69CBB092C6A785F29433AAFEFD900F5BD5CD0D4D388099946EC6D707DE3ABBD4
+8BD9CC0CF9CC8EAAEE178F7D78CF4C8B56EC60CBBF1D572B0FD8A46B23373A33E0053C5C
+6153C5D013FFB7E1A7BFF480E8617EE8F6A07DF9B7AB257464F6CC5825A665FFAD873AB7
+1DDD33A722C56121E99F5C23F3B32CEEF37DDD05770A8B51D57E79CBCE14B2B00ECD5091
+EEFBED37A7CD5D8F12D54EA12F6F4AE18BCEB0C41002F6E48FC02F558012862F8D59DF68
+8F60B3AE08F7CF8366C2DBF410312359D1F5150CE9EE5B7BD8FB9907F5E8BF53ED526205
+1AF60A0FB92ECB64340B3C61DAB84C3E6220E8FCF01CA450CEFA38440F040F7D1FA5EDB4
+C6F5535BB39C3284D72E7B5C85BCE29E99F119B2C734BF68DF06D8BB1F41B1BF7CDDC5F7
+6C07A4C934FED2AFADFEA56E305A2935FFC300369C19F0C3838FD726D87312162DA748C3
+DD66AE4F25307C200CDC6700ECE97C222F9B91E4ADD0F9E24F591A6D427F7DC17841CFB2
+49F9A169AAB6A05C60FAFC894F9239B520D45F740742F342B3BEA80AA743E6123DBA5FFC
+87CAC6BB57F72341BA163E13821BC41D992C607C788600EEE1B7703C558018C9887EE152
+DCC9E71A77EC436898A90AB1A5CC748D6A89C49BC8619E4A58D170238A1FCF71F28F8D1B
+E7E33870864681DBBBAF4E458C421778ADD828E733BDA4A9A0A27E2FB33C199290425662
+897E64DCFA7EEB5A6FC24FF25C04A0788F59D444BA7B4493B594D09EB931ECC044990A0E
+411269685C147DC761A2F93193B3737B8E985C505F43D0CE62AC4DA459EB208ABB4470D2
+099B24347797F3026BBD2E3DD610543F2AF738B9A3CBD06906F67BB62E1EEBECFF0AED14
+29EE6C008CCF16F8E4A2A4F98F0AE73C3D4D8D35BF4290F0728F1D5DC264A07A967230E8
+306A264166C86CA8B9D3A007368DEB328E9C22DF8F3E63FAA96AD827E0FFA338F6F1D8B1
+65F3E9A1C5A38B999E2EC835856F53F4493D36CB24C8150E7D723F4E5363EAED10166DB8
+742AC6B78EDDABA1907869D9ADC125A94BAA2ABE18776069AA2E35F39CE3940CB636D380
+552AFB3D54F7ED1170BB0A840FA9BB57396477641C39D845E342D8370B5A646E23AED83C
+240BD145EEFAAF79D60A8198B7CE2DB014857A24C5F5DFEBE7ECE00A8C0CFBA80CF73D6C
+1EAAD400835DD72B10B3167C1ACECCD487B200720AFCFD6931431328BCE37BFFE939C8AE
+70B611062817FF2B1D577D9684BF9BBCDF2E6218B6F2E8283481690FA892AB116D3840E0
+DAFC0640E805BBF2B81AE0B9AB3400731D6556E71D140EB38E5BA7786528E7487E9CC982
+FA92E0D4AA34264AE12072AD8EF88D93488195E805A31067202B0D218937C2D19A0C092F
+4EFC2C146B3DD27071536D5EA66AE1D8505B0F1DDA06B2AEC8D3A67EDD555D7F76CA8411
+B7E867BF61544FC5D7A8E2ECF1CD3F391A7350E3C97C4FF4F596734CEEAB789C14857330
+D3AF0A0E2F1A3AE3E0B65B50C31F7EF52AB26FA679211624950E407AB54D83D99261A6D0
+23693564E148A402D5439D5B5681F5242B42D7E8BD6C7E33D26959C6002AEF7C3E2CC775
+8F405311E457E547FDE019EA28D740522E3461B430AEED1AE41C486470EA5B1AEFBA03C4
+EC0F2C73550537A3B46FF97CB76E2A98F68094C3FB4E8B7364BCEF2C18E7EFE377B8FF97
+CC4C1EB62C4F230571B1CA03E280C1990693CCC0BFC47D21421F56E1D3E7A522D3A872BD
+A0B951E33C4EDE7121C5BC3063BD0C3BBFB1352131100113E9B856DD0F19B3BC9C6DCD54
+143F7ABFFC7500959E2995C51BB0B6AAB28D8185696CCA65B5BB9C3985BF2D12E4BD27E9
+E79029C53591E23C50E06ADF3BB4F98D877F98167C20E0A0776B609A67C1B802F0C2676C
+75999F8F023DD34C0634F33FBEAE8FFC7F91D9082307010C89DB273D5A147624D52E9761
+87D67B4D4764CC53B7892EFAEC9914A6DA75EF294CCFDA17168033B134EC6A4BC8EED61E
+1073160126895E9B58E910E955749B542DE02ADD7601078C285EA8A95FA60C76BFB24A73
+9125B614EF3EA154A674E5A4383296D343B381567B8E5C2B4AF647583C19B2F90672101F
+B3E96C51939259583F7B4742E7D5AFDC1134B7EF6C8E1017F5D7BFF8D198F61F40AE39FE
+CDD1621A1531D4330992386DB344499C3522BA7DB5496B4D1512D600C21737BC450AD301
+68216F69C137698D2A7D3539C575050877E74DA6424172D90B9478AA7FB3FA874CD39880
+1951E6311252E52F450DEAF8F4F43BE22E794C6372225B0413B30C008571224C3DAE2912
+A8EC019086832BFC35BF2948B92AD9603368ABA089D26C81F300913AF01884894AE2391E
+90C6FE04564A0F358652B3D728815DECE79C4BB764E8472E6EF57289BD4C2FB55376FCCC
+DAB1BCAA44A8221CF78BF47FAFA0E084FA526D273D5708C2C325D7819B43B909501C5C1C
+2988783207C97ED08334E38DF8629E74429321A8AE40C5B7AB2518B635373EE729EFF1CD
+167439EBD3B8A9FF31333FB31EE51DFAE0779A0BB2D2BC1BF646FA9E8427806504FA5CDB
+F92213468F16E33A361119123A4CD9A104AF8C0609B7D803954284A539E234D148FD9E49
+900D268B31B0B1B6DD2C97851A06164A8495A5175BC458A2DC04D44BE77A7890468A3F94
+8A2E400DBDD416CD976D339D6425E877D0B692DD7EA0FDBBFC71CDFDC38006EDBC3DD73B
+96FC687852AB24B8825360820BB15E99AAF10E9759908B93FA589EB69A74F5FC61C8C935
+25F6189A4123FCE30B9FC1E5F9BB51669D61F2B82E4FBE3CEFCD7892CB54B11C15BEB431
+CDDFC486EA93F7CD39267392A3956F99C759D415A72B2AE6F2A8B427E2EB479559AB3331
+F0463FFAB004A9CC3A2C830507F77705A0A003E6583A45F1F3C18D831A22DAEFFBF618DC
+638F27C0624D919C3D977CCD5B5CE3D78F701EC94359700A5A6E63D6B153C90AEE40A179
+26B8D5E04E297CD2410660235A4EF0EB699975066A903C16A109F1505875AD4BFDEBA9D9
+603085A69AD0414C900344F44E200138C44DA104B499DA59A1BBBCF997093FD5B087282A
+0474BF39261B447389C05EA90C4691E3A50D85BDE800CF6EE2F02397AA614B2601462693
+C3B7C02534561C507F15E2E8C6A61CB89CDAAD10268F0B3B66F6B961C22AE18AE938221D
+B9240C017B6C4DE35479CF560C8BDA7C544421A7DD5E38A3B3197C8F2B2A2028C75D5CFE
+F0D492F43D940891E3F9B9DF236B1906F0EDC51E2CA62EA6835F9D177E4B987682FA691A
+25B519E2382A6270E773A368E5F41559BA207767AC4F683E890266B3C288CC161AA9E934
+E004918E1FA9DD24EFFBD51F8F972192955611E984E91F005F66762E1004871640CC9836
+47D881FF44388AC1DD83619E69C14766FFA6364528F0AC274FB4918B9A38589EC3183B1E
+FA70F14FE3F944C25F7BEDB0A1D83E736A9426CACDAC1EBA619370323ED98BF4A25DD57F
+AEAA0DCA92943353E8A7D1FAA4A3AED0DA549AD09FF65CBE32908A96AC62ED9CFFE5E8E4
+6ADEBACDAD2AEF717B1C04C29029E0D60A9FE7AB39F765B4BC4854CFEF28F61F754A2D64
+CBDD56AB89AC03BA9A6E59615C17E90EF9BB6471ACA49AC6C9531C18ED62426BAACF2F99
+0403F684753BD45C24696E1FB37479A4DEAE454B11B172F802B47C5AB1AC1A837B4F1343
+6D109F93B8A4AA4FC2CFDB1A5B5E3EEFE7C18EAF3E8BD7C99DD3E09CF945C228DF68D19F
+19A399202AD704DA3D633FD76B37868F5C804509017A0010EA39D7210BDAC62D71A4FBB4
+334E76C7558D77FDD3E3F3701504E36F2ECFF8E4BE528A4D0D92373AAB7FADCD314F63B4
+8C35F104EFEECA1A7127063D281F667F651247C37405BB29DBE2A77742EF143E12F0DC64
+F072E54960C20F7B0A62F18E048092C4DB57169D0BDA439AFF7F095ABB81369FBF9B1F6E
+268D400B47FDA3E070D397447312958AF5B4DEE695734CBBCD0D493F089856C658A5129D
+E77DE245A95FEF92FB433D67F69684B638ABB1C7CEBD0A6F72709630916E95B7B3614EC9
+D98E29EFAB4A157410497D167789AE972A7D99D372AACEBF937F1E1EF39EA6B4BBDDB1F5
+3D7E7ED8BFE5187069F024F3CFB1E8BE86A5412BB939699231A34DA21799B6B86EC5FE0B
+18E31BA072CD784822DA5F4F57627D2173244C47960AE2C4E0168997DEDD21AA889CC095
+E003A451D0B0AD4F349F0982E1D55EEF9CF502AEC68C3E31D7AC51ECAFB49479E86FA772
+CDF4E03F40BA9B7F633B6D712213AF0E83F92053F4C2453CF83DD6B2984D67BF5BFF1BF2
+95A132969CB878802274448AA25980A80A122C89CD4E4B315BE44B7EFCD570A1AB516961
+948B01E0CA0749CFF014376306282E08158A1BD2731976B18A1AD9F1F67835A790B0FEC8
+4047AC986000BD00009DD364A7DB871B7EADD2AEF8721F61910834DDB5042DA7AC4AFD08
+0DA7EBFC2C8D80F27C15875725D497112794807148E4E20ADE82A6F02AB409867A2939E4
+1D02DFA59B00EC7E002D047B815BEE9B4EB65A5AB427DC66F0F778E84A67DB09517660C6
+B79A104D9F22B69F980AA84F3D1B9E662F923223FE02D096D6CB1D2E4AC822B03A620626
+F5CE0C5EF4CC6C6E9AD57DFA12700A54183ECCE30F90680FCC0C713AC709C0E5804FFBD0
+CB825D78D828669EC7EBAAB5031327FE021479C6D2F9C0F617300EFA27ACBC3E5B8EAD5E
+5A263AC2D0548914CA988BDD9C0E9E58C48300DB405CAC94111377258D38246D183F1D60
+E5545C08BD85E161D76184764988DAB237B565CFF214FEFCE9BF3054EF8875B0412C9E05
+599E588EF7ABB8630090AF20D5819E8877B16E2BC606AEDBB0C8BC35F7FFF546421B2CE5
+E2B51E0A9AB2357A2A50959E6CE324DBADEC91EC3492E646EFF6264C6B7F4DB590322968
+AF94A25E9BF6E51C931CD9AC6A90A7AD75FD5CB2850C81AF77F793D626F5EE883D86DD54
+71D8DCEA6669D987625FEC2A4C2AA58E90A230906AAD5632B3E3F33719FC19DE975F868C
+462B327AF7D6592919E2C8932E44DFCB46A4B2A5A6D96237A4E8B5EFED131396276A3042
+05775E93A569CAAE47817DE62AC6256A9B0D103B414722AE32A06CDA8422DC3A34DF2677
+B332CD0190161CFA238481DD1632D160B4B6AD28E04B1E949128EDD4E372E913FA3F5FC6
+43A2C24BFE1E8FF9B6A582F540856A50954D5571AC8DB4269D2B037678FDEB84E8C70C60
+39B1F63BD52123610E4560AA8D8D0F1B0B0C256D1D23A6C6A3AB8320EFAABAF1A0B2998A
+F723773A70C6F6E45CD115A94C070C1B36A53EE84BB3207326B3431FE358F833DE09D2CF
+E7976B2946718E4A4710EF52086F51223E5D202BDDBC68606FAF614E987E38A3AA9AF67A
+F35215D0746FBAF60B32FA38C22D322D92C422FA7E7D2D53B3E7AEC868C5DE11FFB9DF72
+D7CCCB8CDA57C807D0A0D13B81A3F277B9F8C081C75E9235692522705CD1B0332CD2159D
+0C32019D6E641FAC95ED305AD7F3ED8F1D31E9E8A157B09907DADADBE6682D2E049E91D1
+D06015514B6739432EA867944679A1218446BDE2525232C419C6FAEA60F2C135148C0474
+192C230B0036356304D76978F7D8F2B72639DFD915FC55F5706F7E5DC7C600915B67DA70
+D4211AE779DC9B819918BF73BAE3DB009BDC754AB939677B7E886810F774215EED727A5D
+F6579EB119929C4055CC20EC7AB5536FD423A8378B26391C4F97D17448F8D717F2FCB737
+2DB82025DA86C9825B81084F819727C3624E272D67C135FF1893C0EB88BCB8A8CE25EBD6
+186F90DD533640EE813244EC69E327533BA9AFA4D8705A642FD2AB152E3CA66FE41D238B
+6949BA1EA2D5F08AEA4930AD1C6D02CB881241EEE346BEB371D039D25AAD50CFA9BEB39D
+2E8DDEB7868087D0EFEF6C20D4EDBF355406C2B039CC45DB6DE432E9EEFB2668BB53C1B2
+7E749B0F201ED1431779E47CDC6C90237B2C5A4C0AFCB03B364E2561BAC71210B8505282
+999F39F74A5DA57018360B4D3E55F8585EBA6BF369431D29C3240015D8A195680CCD0710
+34A2693FD94B2AF985E9A10E6CD32F709CE158687BD40CC49BFFC2C3DDBABD6C374B8F7D
+770F48529CEB79D44B2D0C98844149CD6804C63F38CE58B82DDED016A9B35F608EA8448C
+0E3C6A6D4A8437DBAA08094B447B09FAA687BEDDA7CCDBBE0865EF3DBE7A00E57ACEC2A2
+D66C90C6A37264D6AC8926BB51311C8FB806A1F39597FB5781887A4EA73E48BC94C81D90
+FA1CDEC208506787F5E1BE400A38A0598E71B1AD775E8117ECA54CC7A355233CD78B9D40
+6BC5256872F3B627BDE320BE6912BD5013FD45038AA6DDBE45313F2A94870F87D8B2863F
+CCFDF0D299F6D734A29024FE772A8BDE480376153AF952E56C8D463778ED9EB31A43C32B
+6D1ED0ED819FA9BAF378744A9AE3C4A955589EB87734748BC4C30CE3FFE57CF2B2584DAA
+616E8F729E279FFC66FF01DE061E9DB12F51A3778281AD1DFE0D7F40A1BD342C9B6BB0BC
+F94ABDD905219E845FFFB4039857878679451CE042436CD409801710A41A3407A9ED7C80
+1684C0A4A4B717705B045270779AF3B7F1A795FA01574CCDB61CC775A31EB88A26C039C7
+B4AE6D7C0C73885E3EC88BE9C5BD8D1043CC432709943BB88B3A0AAC06BED41EB4DEE7CC
+93868D5C1E4A9836467C3105B9D5A2222955B6A3605B874F5569089A1612DB451662B03F
+5D6275517A26245179414C1AD063B4BB47F93019F650E5276C39BF6EA71463BE9527E942
+B463AEAD413D5934D4AFF2F8E895AE6022A73F47AE8C83ADD1B6FABD2F38BDE0EB50E99B
+ADB77A8032140C29566A88F1ABA4E912718868AC381D512FA80AB6B43C3629D4E9753EE1
+7A72DEC1423495F7E40562B206EEE6970FE1DC8FD286F7C2A60101CCC3CE18DF05CA5435
+E8FCF6897DBF56742951C81FBFE0A8335284B0259C82AC73E7644A8164606A641A43BFCA
+58D8DC358208A8BEB4F2D98C9CBCEACA89B04AC98C18537E6399B5484E654C55D730EE0A
+E4059831123C8C614D8D50F6C29387247D2DE7F1B270FFB9BE9C2133E2B15382869013A5
+25FACDA829989A56E2902B0CCBB2F42FF9CA920E0D2BC2FB773BC0CEAE32AB65046D17E9
+4FDF827BC6C60A8661571ED5B7242E0C74A343FF5EE28F00647A877D23E9A3E1F24004C6
+8FF547FE0C48D356C98C4D6512BDA0F26880B980F93A457B39D3F79523AA7E32199431FA
+2A36735C50AC2AF5FFEE1DB2FA363365F10C26DE1CBA11C45B14D83941D24D9C1AB7CF51
+F4361D5683E9A3B44F8311AB3AE940A9D02129197D41EE3455DF3213E5C2D66AD72CB1D5
+CC8E29D27299823EC21964B920ECED6B32DD7495695F3207C0663F22B8DC8E22EEDBAE5B
+3A5EF119F6F883CAC0889B65E6957AEECD821E491CA668403A8AF6EE142B6A03B2EE17D0
+5F46A1F43B121EB999B8A444590B6E3F3A8AFC1BD72136AF61041C8A79D68BCBDE1CE9B3
+FA1B8FEB5F4DA590F899ABCAB9112C90DB2960A82371CC09CAE3B790594834972F619D2B
+AFEB539C8DE3B106EA6853666AA57E2A7022D31ECDE666B4E64A61D9A13F153976E5F99E
+1E66C5370D7AD565EE1DE57D3A879AF2832A9EAF57D80F257EB3018D0E7DA82967712BC6
+B70E7377E8EC3EF6E070EA8228705527176EB0C80323D60959075FD646CBF149D2C9839A
+EEC0FA00BDB6F3A005050C811AC487014D09D375B21D3D99353C66EB5E6FAA8A672CE999
+1EE72A97BAD7097E5E5A5AFD3A54EBAE679AE91CD844706AFC1CE799A091C742E6F02906
+6A9AAD8AE0D9907AC4B5E114979E042E5B0B6FD33B4654A281D3487E5017D8FBB0F7AE7F
+AB515C4A491E75038122EBC2AF0DD23374D0BCAD556CCA7519AD6D903D33FED345606B11
+25872988B90862209B58D6D51E60465561600BFCE587F8D02FF2E9496973139C235F0DC2
+CCF85B449A5596C7C62E38FEE50F8E90E8ADFDF779F3E6D839706B3AEBA05F01EB4A410A
+45763F8830247C200261414F00A6431E5D514FD032764B0D5284DC3ECC2F8BE42D633796
+ECFFB3C0A184B3F40746192580ECD59F65B4D1C77BF96AA191C7F89FB5C5A05FCB554647
+249F35DBAAFA3E5AA7A5E59042F9D723FED4273AF9970B100F0588F753FCF79CE83C8F11
+7C1991FA2CFB93BE4A4A7BA707FB13B4AF584228A59404FAFD4B00146B245D3AF0084808
+9340FD1DDA2B1115225CC9248F68407D727B0DE5BD0A7E192DE2C59DCF0BE310A758A213
+60F582B48358F4FA9C935A2259CDE70C2409489A4B851CBF4A39FE6494C96A974CC75A8F
+468278E2C9A7FF4B4C9DA8947B05A2AB2E1DA2D3371DEE936B5FB820EF4F9F105EDDABAB
+3943BF281194B6F7D1C62C0FAEA32E4CF270EC1ACD134FEFDB92F3CCBFE6FE9E402A77D4
+509334AD234D37FBCAD0087D03F294362A97C0CAED05336D9766C61320CC8C6F66502C85
+D17345B3C855B2057E268BBE95084913E0F2A2365D46AB7BF30B2839E6D92EC3E9594041
+304EAE0924D66A9033C956587BD1941C6EB59126F22C24A82716DAA7EE70A82B6B695010
+4CD82D6984F0C91F680E6F2DBE5B1439BBA8785E0213357BBAB759873290B727D6F1CE5E
+A39CDE18483E2573EEBA0706DCA9FCB067534F312BDA82C4BD965419BBA8FBC9329FB2E5
+4AAE16C98D83CA7F6FCE27E2B7CF0B47BF9F92C4F38DEBE544F3E2C94D1A0ED5026B5E2A
+105F68D891AF0FA2DB27BB5C497B31834CB7D9FFF0193AB1ECF5B41D3AC1360246922D04
+55A71E64556C56E5AA77677E84746E2180BDBCBEBB09796D19F0BE57AE977FB552BBB85A
+8AE916A16888F51747CB2F27A71FC23036FB42DDDC2BE60E7647263EDBB441D45D62AF37
+258298F5D45DB77A06445AA844B39ACF5A36853A5B1688DB1EA540B2DF8DD3A93F3AFBFF
+8047EC7CDE8E04A21E19296096DC1139C42DE3F40568FC94B47EBB6A5655E4B2A398C307
+93E0EB24CF4D135461FD45DD5C56972CB4AACD9AE2A8F5326D965E3F9CE7CD0004BC6A52
+2BC1FF39705F8147627322F7D52FE97B70FF78D46667A108857F5FFAE12E9134E31BAB4D
+3BD0C9CBD00A36274B303CD8D0A0DCA6A86E4416E7D531C55972F97A51A78E0D5D2C0852
+2BA3A76187125BAA2874938AB01D8229C1A99F48F8DCC34C592121F9C3F6D80DA1564CD8
+8A1B058F57BBBAA330DD222B151C2A6D7793C40D41AF0F3AB36E18CC853AE0D262489E78
+386175955BB31264688CE572F005BF629B68EFBC09342F06CA38EE533BC3FC568B95CC5E
+9D7FB254D269C76C7E64B068CE2B163A335CF8D07E7981690008A85C519B612DA1ADB184
+DD9C9AC58730E4E3B33ED3C5C075A9AF10678244EC084642D930AB54618CBB26F1E127BA
+BEF7E978CEC26870B8BF35DD6720E334F9C49FBAE6C8F31247CC371FE431C7FFA792522D
+22EBACF4CF9A32D320F453D6648EEFB9354D4AC6F75A5C25C7B7285503DBE7E6A1D389B4
+FDD737BCA48D122D07454D554759FD4B7370235079AA33DD1DB1F64BCE7AD09464F52E6D
+2407B8782ED4AD613B1216B432C11535BF8BFD7478C490B509429197097F63796410A283
+8906FA444B06337B5B77D6C8398DC9F7D50C17B12A897DF89EB08C3A12C624901972618E
+1C3AE8EAE6371928EED78E2394F36737050FE39231A0E7E2D4A1316C001DCC2D6A4EF4CB
+EC0D77EA40A9BE7EA79983BBEE6668E875C3666B0EC85A015B704B0B8CE6A1F4C45331C3
+E3C99E86075382BA082DD2A82A6BF705F0DD51EDA6691DCE2492B2F0D7331B2408E54B98
+648B3E00A2139BA12618AB474376B78E681785FBA88AD903BF86DC75A6EF5DD213E68B8F
+CCD12AE39C1578E28D8448CE529AAC0090408C63E29DAFB4422F9E0EB1161FBCBC2B15E7
+17BE2EA9CE466BDD9175EA4EAC722F95568EFC252FF549A2AC693ECE0825FFA44C363C75
+72B1CACD52C675381E6ED842204C2FBCA2121FF015496059BF9F475DBABD94F4338F0E82
+0BE2F5F4D4D901A71E2AF8C69D064C6A3EC85A138252DD716AA2A6C620EB728B74E9E8ED
+22EB467C997CBF24ED879DFC6BFE819D30813C114DB6373C3D904FBCADBC173961C467B2
+8E7C999F402AE50B42879D9CF92B30CA797609C81614CB59BB0ACBB1B034890B20861023
+E010C1E4334B7C36CDC0C40D1B23D580549CF16AABB5CA28A074A4D3863DFBCBA8D420C4
+9A7612F40DCC699CEF1D8735326878AC45A96467D052C6AA1B8721F8B68E8C55046EDD27
+AAC712B02FE85C04CF30CFD0530CCBA51EF83DAF82169854BABBF3C51E0E5CB5E88830A4
+83152F533D2DAC1F2C442DF22D83520D45D02EFEB278BE64AED7FCC3FAA9B628A5F23D40
+160678724AC1404D0EC9E4E227665E0C35998E99BEEAC4CA31F10C79A7039BF23BEFC89F
+1C0D2F411EB09457695BAFCECF0B864715013E3B5CDEFCD25BF5D94925B0295AEFB6A66F
+64EDE7F1C6BFBE272E18CFAE42DEC72D4D34077CAFEBBAB5B8261F70160C85F60705C2B1
+C0D2621B39DFD47305D35B06258357723A88953647D192B25418F40853C9B331D7EEDE19
+F5ABFE7EB4641095AA691F421E154E95E18A4D5B37EDEA898053336EB45D6F583A80A774
+C2A4E9F15678CC490056E5B4D8682B0ED128A668BD67E89617F90ED5E98078E663649900
+D2DC4DFE038AA9CB5F8495C69612A0A4A385178EAB411BC6420B898B3638CAF8FDE102DE
+6CCE256014BB0B506B11239F790C483C6A87D00C776B2B2FC280379A6E82FDF2D937DA0F
+37F96DE844248F069168B0B280D941D093CA593EC93A7491AA807ED4134C94A026A50EDA
+10F8F7ED818493093632300DDB66018D9C4555C3C692B0E8104C93424BDE50B32FFF510E
+F1E4DD241B1B93D6B32ECE71419F07C3408FFA1C3ED5071B85E22B22C91651D9FEED1DA9
+CA7DB77DD42ADB28626941830FAA8C745F92D22A6A3D97874ECA8ED490B5C63C749AFFD1
+B609AEDC3CA96DF51681E03FA1C801D0C0D8EAB1664FA0EC2D8A77E4414917F696A19F40
+A680151A919F2AD79FE35B3272C6775B6900397CC15C33F9D116CD5701AEEFA4016D9CE0
+AF09848FE364721F01BBB0561B3828E526D1D3CDCA99DDBEA5587A4A48EBF45FA797F33D
+422BB5D1015F707AF04D3617185AFD13D12FFF78256595BD34A6094A3CFA3F18AFC7E848
+0DC7B0B454EB7B58CA90F82A6A6CAAD20C880E5005B68B898BF7AF03CCEDA6CBD2BC427C
+CCFB3ECEF07DFD7BB3C23EC5C180F6121B32EAAB677094FD56B84512EFCB89F193772312
+1940F78E8A5B900B85C7388F661655A5A0759B260D94589AB203770A2108CD7EBB88F037
+6B1F9B8C08C50F52C3A6ABCA49F3DF63068A3EDD91C9637E86BC51EF847897A85F2F2A3B
+7EB39C4756EE6B383AF3F6778A9C2FA81A0167B75A10ACCC9068A526CA5BC490A66BC2D7
+803B43C9B1B8DC5405672C3232D2BF2FE3F41955BC0B877D5ECFBF165D7072986D76C51A
+01A9E07DE62B9C11E3B8B92B3E7BD11AB6DA4181A4CA9FA46170F50E12B1C76A26CD6631
+C6BBCFF56D203BB9BFD56A21747257D7DABAC4BCF9744CBFCE02127E3A5D84E8DFDDBE6B
+8FAABBBD199F7DCDB6315DA361A57A253CBD4FA54C6AA0036D1AABCC08D3545FEA8029B8
+AB86D8B043073383C2543B19453FA5A8566A98E98793B7010281457F84063B9AC478C023
+7F8EC45EF7631DC82EABC831F09FF782734D3F0588C5EF3BA88EA28D1F13C7E0C7393AAD
+14F9929089EEED6E10B8054B81069422C677658260DDED3F4C0E8EFF58B1B28B0FAC1C3B
+43F4C5A8ED971FDEBF5D5DF194472935E99F174541FD2F31B98A85C8DF2ECB1428CF6EDC
+FFD9BEA46D244085B4BA6D1A9AA5F02F07704B251D0A369171CC76FE61535B1124DDB829
+971DDCF9DF5A981EED2136AA8441F457F0FE2B6943BF494B4C0FA7FB833D6CC45957B7A7
+03306DF85DFA352FCAD0B729788E018E375198A3585971ABA560E0AB391BE438BDBA8D66
+3A888D370D43C97DEFCF6C188AE3FE88E414C758856CDA37D8DBAA76E52C9C5935A36A69
+2C413F3EAB4CA77BCC38A66A1EE77237853F3FB438EE722106ABE3A843D8C57CCF123115
+46DCDD036F50B34716B2ED9ED76695A3B4CE5F8951E67A40A6CCE28862511F8E62899188
+1A2DADDC633FD26239B953048C94D5824400C5C03D3AAB4383FFF49210DF9F8C53B97489
+6E07B2F10B347428EA45082C47B6272B20083AD1D268D63C62BDDCC1FF4A61CFFF5D633B
+22D124A7903C5055BECE4A063918FED19D1E447B82945AE2E3D4F34769A74B28194CB1BB
+46F68FA01A5F1BE25ACB872BFE0DA6BD6727655C0EE5502D87C79EE703A250EE56C17C87
+1AC6DF9C978623970D82B1C11A39012CAC0118E0209D6377F13654A5AD0DD0EE7096776D
+7FE3F7BB59E17314209A1844160021A1315E6BA2D2ED6FF4930EF270C2942542780BD6A7
+999B988082325FEB98795BA88E5AD7084D611EE8621F8ED01B99FBE3136415408F4E79CF
+9FD22D7B42612F15BDD870F32D347C74C36AF75DF8C0CB24F5DFBC12DF80B8C28C226FD3
+E528499F85FF386B8DF6CF0794CF2357041E52D04330164648CA505B984A1FBDD0D520F4
+D3935ABFC8584062BE801C0BFD508D6EC1B17C6DA0468D5C29C689CB48A3648B7A2C9184
+572FBC9ED0210074A8CD67D3A327F2A74725D85A30E48BB112CDDACF9CA39A49339DE8D2
+9F57E2FCCE3A98EC801EEDE7C8C441ED8432097E45351A6B30FCA3E9E13FCD8215AE3000
+870C25F919032EC2F2281E374F2F44C0FF8331698176696BDC40DD319408A23947ED6EDF
+3C27C3BEDAC97881949D48F9E2D89EF0FA2833D1EAAF0E2D03DFC3A8AED70CBDCBC62B1E
+944772939ED11FE5D515539AC8D5F7D736EBB8DD21C74A85B33E106EA2D46FFE7F453497
+CBE13D0EB95F32F9F4CE107610505D97B3D8622CE803A797C294243895634B3C1E70CC39
+E2455C84D595DA52C8C636EAC5443C1145F5F6549F9D5896BE5F0F7685A099241BABDDFE
+C0D5D570DFEC4481427B6ECB8E1AB29EE64D21EC00DD51EA86B8281BC340F04BAD714E6A
+84B9B88FA9D52E5B7D9B00ABCBCD2A2ACADFF22FB0DB9CBE5A90282AEE00717372ECDD4F
+120C89E72239904CE4C771AE2D7DF8761B0CDED2B10E0CEDFD2F86A54543FA68CE5296C6
+DE6EDAD5B6CE3F0419984D65369C9FB5C4AE5F2CDD942352AAA7E89787FE55AA83AC3BB3
+8036C8B44D20C3473EF40689503887D36EB9367838EB147EF567338A566640B37A895306
+1F0C62ACF095B341820B61AD31ACC8DF9E60B7CCB736E8E0ABFFC63909255E28ED704F6D
+3AF292DAD718D983440495F2E51B9CE803F6FD6A66FC5458D9AC5B03BA59F490F5AAF45E
+F949DE165516FAD517EDEFE8E3753A6FEF34A7871ADA61B1FA0E1899B87ACA851A7ADFE0
+EEA77B1DF073BE2D8D54B30DB766B3D7C88EB2822404A06DD30B0DED3ADC4668E8A70F15
+83917C4E826F8441082C60B275D89AD608014B986AD89A313BB45C3336027C03DCD13FF6
+0A8E1E2266BBA448217E752E596E604BCD2FA1A98C714C87AC1EDCAC1009CCF46BA9B301
+507EB9016B6B459C15CBD3FFE55DDFFBBE1F277BA49AE954D985BA71F4C77322C03DEF51
+E3D1B16DCF6EB9844C510E83302F5C4D39C259A842A9F910D021D1D2FB340CF92562B263
+21664DAFAD527B45676990DD06804206A1DB5DECF23EC89CF274EF252F8194B8FD8103B8
+748BEFEE602CF90E273A1E2E7F03AF6B9509AA01B9DDAC1DD9ED22271F365E0A796B46E5
+E8CAA5D5BF124D6B63BE729A079B1FC0A70A28613862E2DD8D2170B6D926F6E1B88B316F
+6D093A86DEA4ED43E84EBC9C588F6CCDE14AE5280082F1A18597EA786892085424767CD6
+110DF609D96B8781299AE22432A62C4635E9D27E7F21C3A22F4C78505BF0C4195EAB391D
+0EF8379C657EF7494BFB625BF296844570C92D72C94C0D188868B0AB7DA7C426B6307140
+E21D0A3B69F321304AC317DA1D810EF9960EDC112AFA6E3761AE1687696027074C5A046F
+2168B689932B5D0E171232D6C49A2AEA1CDFA9783E1D2CE3955B7740C9BB85D832E8163A
+3358A81CF56692C0301AE565BB09B61705E10B0D5B69882D47F5E15D59113736BF9D903E
+04D344E866B994C93409B131A301879CD1DEAA7310F30BD2221FDD15EAD9F7E7CDC48481
+5548A1D0E62A7FAD0E90AA03365EFA1DCA04E6E441B34C1BD981E767E48B9D1B20DE6E77
+D58FEE1B86825C985D71B4782B8E085EC887C80BEDAF919B5B8CF02DF26E11524D63948F
+3429AF8F08DD26E955FDC63C39D505A3C9C8F065DB664F19C41856A1A9A0887EFA41FADB
+E52CBB441F0DB71CBFE986B620BDDBDE7F85C0FE655DFC28A59744AA00B66F4AD3C686C9
+420E051F72665F1F3C5C5B08ABFF577FDE0ABE0F1A6B46348C7D4632CFEABC95BC111A0D
+ACA548A6187ACC0CCFA8E5723747EBD5E63F72D972FDD4D8741968594F1F8565B5595E81
+2F884090C0EB914F8DAF31C7F865674D99C70824DBA11EA003B59E23AD2E596B9647A567
+FF7FD20814FD8D4B3668A88AAE08FF525A39A7E91E997129177CC96D78745E418CB87265
+A28295233A4F5DE6A415C8BDB2D120C1F145DD18C47B765AE0AD7E2E8A8515028572CFB4
+7CD2F3BBAAFDC5EFD9BCB47C4C44AD3A958C54DF9FACDAAD09CA6E94EB2F0EEDAE9DFEA2
+22AA165D6CFF5E8499CEE12103D7D5E5751CDACD7199CF4AE83E66A2E26CAD79518FC638
+41F023465A7DD24710518A720589E97E6160E94A9F72AE07E5D38601419771CA305ED509
+3A047AFF3B754614C0331D3AFEBE887CE7EC87D88DB464373B378916899645759B3A7C85
+EDE542FE3D7138813DAACA34C5151D98050B0D4634B464F2BA3B1D3F876BFA845ECE93BD
+E337EF5C78640D705AE513D0684745EB6B77B50D1322BEFB3E448B37331C834E18095890
+C4EAC729A07E6C88C704F9FC8C44037E5F7EAFBC179BA1E77066B33B43320B35165359C1
+021FF17F5E2F6C1870B77A4D674FF4A378637F7A3F9E92C65529548551781FE272D70D8E
+14F1B1C2FF62D35FF4589DF03DB2618EA1309B39C87BB37FABD4534B2AA6BCEC258EC9F1
+F292ACBD3580479C04C1EA98A55964A20A6446339338D591C72F610612A779AA451BB024
+AD0DB1851E317561708341C44020A20A94E58D615450ED196DDFEE16140CC6A9B610E5DE
+CA7EF18D8996F565581B5D5C8159B00D56FE0F42808ECF84510738B64636EF37C24D958E
+EEF84069CC9ADDB3B15493990E9EF861964C7DDE1135573D571C9AA4DBE8AB5AD2F96114
+2C6D620F82AB1ED333EC8395FF4542AD13F05FE24EC11973ACDE42D368F085B89E6C4C15
+84CB889D656F82E9AEE0D81BCF0855B399A3991F35FD7E291F415DEF1EF17C86085E01F0
+6993C328999DABF1954C4B238FDEB6E2142017C7586E5976B5B3DCCA64A3F671E3A6975F
+092C49A7E9EAAB07C6DEA2B4C55DC64C7AA4C0F9D7F10ADE5114ED76E9FEE72714102609
+497A1F8298BDEB5DEA75CF741D15AA43256B02ED65E78968E815B7A0AC16F865BAB299C4
+7213C86CCB16D63E32E78F062E80B469124A4B376BD9C88B6788BD988B7053B7398BFF50
+95A3EFC7159B9CEDC45FCDF725DF5BE9FAE4EA186747811590D85A472EBCAD72948E9726
+25A883CA2075A547BDFA499A343595131642A54FE0DA3FACC96EB216EF523C01194C6D4D
+DBA2E26A9BBF2F00D9AD617925A828B35E8CD66BBED351D39730775CF304EAC07BAE0466
+FD76ECDBC4116B805B50D6F90F4FD1916AA9A951B25F18C3AA62A70F56B547C832262B24
+EDF34BC0D28C8369EAB30E070496721223FA979B2BC6CF08883DB6684054025CE92653A6
+CF3D12B0ECC394CB5BDCBCD7C953818F0397EE80F6634A84E78BC98843D672EA86F92203
+E608FD89C0E19169E44A5A8A08D2A6F32A71D15750D5C2CBB313690C59325FAB53EA262C
+587E0CF8E15CBB9E6294BB2C30BC3DCBFB4CD08D364146128E990B54E491BB7BA53D9333
+8CC788085D0E547E3A5FED63E4B5EFC268F640F438EEBBE4B90CC2D6747D0A2827944F58
+30FFD4AF01DFC4369AB7388C5CF5B8B0581B7CD25BE3D064D2A5B51DFF9576BD4FA52898
+A5D8C0B6419CDDB6D6805B8F8B0A7D53070BA86869F973BA8E10AB95EE4738928BF32DEA
+FD1677DB35179BA3376595E822DAA9958250444740AAA9230D575C43BC741C8ED4156254
+D77905D4018F2C041FD2EDC837B7D018B7DD1D609E7BFFD2519698763150080393843A9C
+673E049ABE39D32DEABA7F9462D67B4FC496ACBB12C902CDA44610A72780E6D5D8CB5918
+7CF9CD9CCE59B3F21DA9B6B45E7D759619B73D4A2325966E0C3F9BBCDF866CFA60FE8FA8
+2299FB1418B210B03EC973DADFC75C40CA67738E8692D71817700250DD443960EF3AECD9
+F5BC2672F9214B844BCD3163226B541CE3BE00453A4B16BCC61CE7F16631B3453E16ED20
+653D21FA9B6DCDDD2611A7668AD231474BF51E7DDC015757BE0BBEEF97DF7915BE3322C3
+D0D978F40F393869F6CFA098A4AA677DA440E2E24A33162E02E7FB52B73DFB9A236A2736
+6427F4A0E1414C6205C12A370C7698A8BCF70B6F7BC71ED364A67D030D1C3C00142C5B16
+54872B3001899B4FB945ABB1E8B0D98F9818F587484526094134FED3B4D1F36093F44AA0
+BE87DEA861648E7D4E84C38A318AC56D1B18081B600D7DF6B9F952911A13C41EDEFED728
+E87E9A69E79D5BDA2E363EEA0555BCC3914E056A1BF1485F47A8FC70481C32F2B91AA6F9
+BF6373F40AA65097ADF1504167FC01C2EB80A3353786820FED7AEE65B7733382656C081F
+130873C93D336BA0E612C0BAB390DC5D4ABDC50A6A63785666A09B0A6E1E7BBB56C8C96E
+543309768522DD5F1C2B665BD9D50A6D9C1409C52067495249AF0BBED5B89A9698EB3371
+3CB75FB79110256AD17789C386D1D1E3E7946DF2DD30C07907219BC18D6D40F5AF1A701A
+AFFA0AE4CF2A31C5E36D0C70308F50B57EDB152D6A2DD8726E11469B3D7FCB496CF5DD82
+10598624EA226416B45DBCA4D07CC089044BF0E9589347CC99AEB66116FB1211DCAC0D9E
+E29853877C57C1C7E254BDCDA3BDAE20780D4053CBF6EAE9FBF332E877B6E2C84656A997
+3D0938F741825ABD94DBF4DFB19132C396E2A642E8F7DAFDC572F573C4FB36C54A2D0152
+518F65DF646E5F73DB11585AB76BA7B94E7A3E4B9FFDE87864D63C5AC34B0073661E2657
+96D7FADA064848D323823DC090DF482C3F867081CF29CD593A203DB70C1A560FBDF1C2C5
+37D16B8CEE77C6FDFF7EA4329D7D8C35BC950B5CB3664BE19D1E18A78148759DAE55A012
+61F8B88D398E1DCFBCBC278A35C85E82BF780E61ECB37A3569060EE84EFCF3AE82728322
+0C62E96735DAC5A1AFD0E85B6FB6D6EA1CC911478218F53C7B67FD2CBCE020329AF184D2
+9039E9CBB3EF9B992F419ADB0E80FD1BE25C7DAFC45A328FC5E344522550E196565F0CD6
+1704433B64CBC07CE0808E6FE9B1EF9775A33E7D9EC4B74FFC7503DB8C40814A0768CF92
+ABE5D5B6908EB25222417C067AC7B9CAFFE8FBFEBF7082A9620BF66F0C9D1F165B3C50AC
+47065158436462705A4C9219CF891DB652DDC6138FB89E8E5B4429DF29E739C07FF0B566
+D19744FA9A47EF868AF340FB05859081B5F31A062CB34E40F9AEE43B453270A4F0D2F59A
+CB81348CAE615F5CDF08BE43492AA8BAAE752CF2838AEBBDD0D8F2EE903230DAB469CF27
+7B2DB646A67A0008154A39BBC51F7F79D8E5A348FDF033824A7D11983BFAED14CC2DA518
+64B50BF8F7624CF6EE17729539A9F6FC3DF6B4FF2C78EC0B92D28B316BA9103532D3F59D
+CEA932958988CFAE6FFA28C4B5A74BFCE0FA509F363ECAA6D814C5F6AD045C940ACC0BE9
+0C7AADE4968ED804C79F860B5B09FB865B863E4EE1B934F0B7BC296F20B31A761C7B5D5D
+1DBE41EE0664AA22FCCC1A93CA883171E707B54E129A182BA5FF7F3C45DBF12A016563EF
+8F78F7A990CEFE7D6E20A9A46C7CA711CBE2B0CD4F15C200379E53B1F3754C7075D0983A
+6F9998E0FD694D363E09019CA3471BC99FADB23C799EBE99B7AEC576A5CAB6BDC1BA7E3B
+900A284E5A75A3CB209E8C844D90A91277AE5BE3AB94BE6823809074C59305702E9AECC8
+A80E49BB182CB95F969256A3F3FEF9ED2449D501A938146C0E0DE4CC2BFBC8E0EDD83F04
+7FBC7F528FC80878F4174652124334C3F95A22F96A4B9C855450E6823E27E7A2D8CCAB12
+45B05BFE7B4DFF678D2BFC0ABF095647D333343C28770820B7DD291DE338F78A383E2593
+B49D4A45B6E3812BB33656A4E3433439DECB0E1B4D367A0F7E417B30CA9ED772325BADEE
+C0D2A4E7B999076164C568A8C47039E50E569488022947A6D20CE3D10FB3E407C5420618
+1CBC140842973AEBA2CEFCC58A8DF085C072073F6C9C8C2FF9869C75DE00585D99AD74DC
+55825B87D3F53852D58D18C7B4E9A71BBC3D578BDED341916050AB75ABB7590047DB7442
+7114E5C520FAE30F67C9E8C47AE19A6CA44F657DE2357BB8D3A98A5445B6009A44917F79
+0651DF6F53A980484BA5448C863B8EE7CF2C4ACBF7E682CF23B541D8F379456A211CED10
+7241ED8302F9CBE15B05A026250C798CB8226DF10234D96F83FC376EE5E8730BEACAE373
+B16E2D1DA54CB056376ABE992968A95DD37BE7338BF9DD4333840C9743245DA8E24DC8A8
+0D00B82196938D4310606240A63853143DA078DDF745D37FD82DD342B41910C616AEA6BC
+88458BF6BB2F133863FFD0FCF2C8621B97A560277300F8824835D5C819A2F54D0720F2ED
+4008F013160E280B1DA3B4977AF11CD4AFCA9ED952F923E50BEE73E6424D1CB3544F0592
+8B9EBBCE7BA10E456A6F8A7AA1B8F57457F5B1D2E35C0D4A93AD5C3FEE0FAD8365C9EAFD
+F3473E5880CDD59948E749081B48B0E5FE64842D59252DEDBBB081E9E5293E16E4B4989C
+5504D9A1C147E31ED2D99E4AB0596813241BFD04A6F0E431143ED622F18CA7D7BB7E8C1E
+8396148304A2A4AF98E5C3CB70440CF8FE6EE8B6770940D81314E5A89B81E506556F6856
+ABC8CEDC9254E0BB63E476288C827223C61D731EDDCC0D3B9BCEAEBF44E70A931005408C
+E19FF7BEBA650BC27255890DFCA9797045A4E9D7C85EFB9952D373A29880B90607063A6D
+22D03D77A791518D3B1ECA110034FBAD8973A5E78D41F0C6EC8CEADA767E09071B77D4BA
+69B8C2ED90FF525191EF9E30892041D6DD51A8E3F3226AFF0F65385729860CAE2CA8BBBB
+AD3064373485C2874CA41CC3632EBBDD149641322F545C4A4B74C7E6A33C9018EBEBBB84
+F35E20F0D738D020DCEE2FCE039AB0A499E8FDA88D633B885B9FDF848BA88C39957891EF
+9AB10433AA4846D38116B21A9B255388A5FA0DE3DA97FC2FF8736B8138612589CD663241
+C7AF4C34751A0FBF288807D77DF8AAB9E1FEDB3CD6EAB8834EF2AB217E9FE91E3EDF9FCD
+D364BF0554FAD5363CDB864C9219ABF4A2957B42580BDA7176AAE50D5A2D90F153EB4A29
+B93CC392F64F4CC0022CCAF90712FD37DE74993748B50287334F16C29F59CA5097C486CB
+9FB47626BB3D045FBACA3504A2BE1570CA1A309CAC28576F3B8A3D02AAF75A2C9E6A752D
+D5EE812BE3A719B4F9E51BBB8102FAD3A183FF972DCD493FC5FF12703A74319B17503543
+4B3C6F7B8505D1ACD89413E6D0DDEAE01AB0F3BD05526B8F0CD0EE6277DAF840FCC4A8DF
+8C8481340360ADF8C6BDA890C23EB9DDB5EC414C7E1E15A314D24536FCB2407A364BA612
+597F567322957FC05D8FA5FCEA086A64AD53E5BFE5B01A2B628C1DE86683F35B3C253E71
+77C9297F82AD392C44EE6BD4EB913C1788F2FDA965480397AD15C89BA695887E5B275067
+DEAF0A265D27A5AB46975C3F7418E071ABD6294DAEAF1CC56AB91AD5C7924253C064D89D
+CB4B1C3BBA6CA13B424EE0A2864792ED7F43C671C8E876CFBA9DAD87EBE6EE19C9A51E4C
+5DBFBDA48B08E4219EC6BF39430A571B9BBEFFF495AF17A3295C539739FEFD41E1989C2C
+B4C1D67599D5B02D746EDE8CE012DBEA270405183719E8F042D8955FD69E0657B7A032C4
+94716345269E9A252657D9AE5DA139E046F3160CE35BCBD2B6078961DD0E05328D067E7D
+49C9FD16D18B0505EEE84491E642A001753ECF3FE0EE658A836B26CBA9B25A247023AA60
+3FA2D405E3C98A469760C25DE2AA823C5932641DA048BB12D8E10073A438485A4A83B549
+269D29153EC3FBD85EEE7754F069FBCA824C7797D407C5E90B734BE22DCC9BDBAAA65F04
+6EF1FB47DEA138DDBE4626C243488EB96C90E9A4F3EA849B65D64A811F49B6D3279683BA
+62B1A1CE1A63E06C86EDCA36D636E226E6F24C8E9B45615CD3D451DD627D2B54858EAB1D
+0B44D2217F0204A34E6E96CB904A55007C89D993298EAFFB26BCD75CD2C1682BACB37160
+6D13ED0E3DC4970FE247FE9D8F20765E168F413D00CA6A6C8CD6CC68A1701A10AF7FB2FE
+C4C80722F17559BD3654A0B109FD2DD22FC0597E82E7CBC56959B22A0D2F11B9EA97B913
+D1D35AD65730443000C90C6DDAE99559C2E7D976F4F94768AB6A96DB020E21D0B6407044
+327F00B7C9130E01E29D7C52E8131C5F512CA7ECF63C3EAE09D5E0587AD0D3E885B3A658
+E152F292D70AEE1EC97DBA420923BDB4D3590046417C275F824BB0FF3ACF5E6557291744
+93867A81AAB9E7AE3B569E7D5D40A392C60BA688DEF601C609E3A3725836CEDDF6A6E89D
+4D724E643272C32DACD22B4101EB465F5E8B947AE7467CCEFFF05AF905698619A5C48759
+B3EC542929097D900BA51DAC763CC90CA946BBF9C98F80AE821DB640BE55ED986B236875
+8FB189174DB8F03B595C6CB0B34B6759077904FD5F6D76445969D29A1B05293DE0E7742B
+806F7DEE108B033FECC950EC5A979734CB61EABC182A599B0648B2684AA8B5A0BA4DEA11
+0271ECDD714EB3053B1120F9D46856BCD4B72A2DAC8064D748891589063704194E68D04C
+38A71F4B6E1C5BEE46303BDFBFCD78B621359A4013557D5ABF7C4E46229E7E92C2BD8B4C
+3451EDCBD6989A559F3097A15B2682BC562648DB2C080560116AFA798C71526FB331C39D
+36896D1F0AB5637510760C2DFB040A9168D9319FCC732B7B4216BA792E3AEE7EC3A122DE
+C7DD36A07020CB190DAF2B7E764D1B5EF49043E5E608A3BA600CC7192029D0FBD847A287
+E57625566249C92BB84294B63CEFDF8D8F830EECFF4443AD3F15CE3954E27DF640A86AB7
+388E09B7EA94270272CAD6378821CD28E8EE881E095DA9E7905C1F5C3FC566DB4C06929E
+8241846B82287A0542F0A833B399B96A650B25F89BEAEB204A4DD4EF3FAA81DB49647AAC
+E1DEF876E4E79235489044E9DD13368B07C21636714198C7308EB329E682EB8A5E46DF65
+207216EADE9CBAB94E694BB5CDD246B535B406E9A8D8C4E9003B73B37FE4541468734A71
+38023D93CE8693A395C6B7565D205764B5FB9A44EEB1762A94D0B77A17FFB5319D8278D8
+FCC8F47562B918630C40FA05695D9DF6FCDA05AC944DF27C6AEB954CF9F24D4F23482BC1
+94E4F4292172752ADC49ABE6F171C87AE1D68318E1838FE84B90BAD2DAF96BF9321FC549
+F5E8BBD57340BED4339EAD8DDA6D5A78E31899B924F1A06445BFD307AB87A355A857749D
+3E24FAA3784C3BF9D48ABF07325D30D5AD9772BC0192F505721361A29A007698F653329A
+88050692B089F991BD2FFEBC915C3CAB1E35D3056C1166C15372DB191A77643A4D285865
+537AF209AC8BFDC70EB0597331E43D88013CC7986C90BCBC9AC764E2AB305E8908862D46
+6E70F75B18C409F4F7A9436FA78C1D9C05FDC0F79A0E01192A8BE7205D020A6681CB8B27
+62D59233D4D26AF4F60977AD96CEE729D75CEAC0B2BDEA67DD6B3D970428FA9F3875BECA
+74418271EA0B84156AE2176F74F364135315723E15FC5F1BA8C89F6361A25ECFA7E600A5
+77B16CC9159507B7A8F06B54B431A719EC6845677157A5C27E1298865E8209B1800C8219
+995270CF921B3166439B76A366813473960D29968A2917766012995C17D066646C062818
+FF28DB066FEB70F029898B7736FB55D7F90F3B3054ECA6048862044187D4BE8FE6489811
+EE12FD90B61F4C738278F898A930BB235DEA768D360954857E0C5DE6499096FBCB18DF2B
+AE9400792205D0906BBAA1594286E60D24CBA063332647A4E34220595F3134DE281B8DC3
+AF1FED5624C584FC145582C89337A7C3FD1B43F3E3DC28EE4B73668E0E69280B820DDFA7
+0EB1FCA14EBFB5CA3651A9378C897D953C9433299FD18E6C38F5EF801B7E4E5B468C1D70
+31E77BDB6760F548598DCF9940E127A689F0FBDE7FBCB3D1E969784BA2967023CEEAD3A7
+F1E3B9BA65BB39EDBCD99209D827DB055B450BAC0850703D902D042863A377B71C40E002
+D84A4837D967A978DDD8E1413E6C20E0D61FEA08E11B8E5A704E6604B1E24D4CD9629FA5
+9091038AEDA4BA5CC3B43F63F8B9DEF22E4B073D29F7E952FB2785D3B78756CD30028E06
+C09DA322282625F7409563DFAF8D5E2DE118D5345A0A3874FE05FC974A02EC81574D5334
+8AD212A2691ED9838CF4BB5BABCAF8961AC7CCE88DE1A6D1C7B0E42451D0DB3E124CC9A1
+ADA239A95CCCA5901AF75FD35D1E8EAE9685992C0AB325CB176A378D2217BCA3EB733C8A
+7B90B007644D317F8CAFB324A21552F8E7CA822EED2968BCC9C22261150BD2D4B8FA39D1
+FFDB8F77B5376613CF8DFF537C00473B06CE4CBB547949CBF23F35007D653BC635823368
+6F71B0E7DF52CFA687F4DDB7C5573062CC5C6B86B2B983EA0180149F2BDE739165DC2BF0
+55E58DAB9C6FCCDDA633B29652E768B1B3F5350B204540F696F04097CB0821A809FF509B
+8D80BA4E00A969C8AA3B3ABC83060AB8206D97FC5996EE275C86441F41CC502FE049A1AF
+49DC38E18D7F2816C2223287EDCE7FC7D0DACDDF23A7D7A1A12553ACA1E4A17786FBAC13
+AC7D5F2D6B0212E1A11C92766CB9A1A2DE5C36BADF219E048E54F9F858ED2B16A41CC7FE
+EBF8F0467C35DBEBC181A7717A896BC532BB5637C09C82FB736F3E2D0E8DFE0AE948AEBA
+61FB416B34303F3A03D7C85AC39FF13AF3E02DC50AB98C932F657C1E30E2333B731A1FA7
+357E2297EE561A22DB05CF00BCA2C2253C88D975091906BF383F7E90744C79ED66618068
+8AD8672F7A2AF1DC0F9ABDAD87C5F910784DFD5C20A5CE6D3A787F198C692A4A5E0D956C
+6F131BE99CA3B91884DF65254CE95939A7602F7D919258B66EADD9AFEA7032173D241C7A
+076C2055BD7F2748DEF24449FD8CBB0C198F5B6F088CC1DC79F57964CE5BD1F4AABCE071
+B3F4A230C84AD84E5E21381130ED5CB7E1A99DBEDB7ADCC18B020B18C964C1B6AF3EC321
+74BE97FDFE3D9B9A07E206A672ABA48DDC5BCEBFB120524AAF3C1DBC09AB48D233B2D431
+849CCDB7AE3D1CB7E35CF38D316AE918043415ACC39B181972AD510AF79B6BE2C7F34BCA
+77E4C98ED9E3ECDFF5C818609A9AB1704A7827BB8557081F0E72F3CE5353FDEB642DFAB1
+AB7C9B8BAF92428F662D8BA2C3EDA7E378A20C66AD9EFB538C27C383C22B81B4714B7A0F
+E80734376749C3F101F8B77C5E2DE3F42222262F4EB36609CBD2745A132E9414A86A5911
+5EE78290ED89733219409B45583DBA2A20120DA0D7E3CF78A923A7213A35416B4001C5B4
+AB17DE5863848A4D6079C5B15849033AC9F742AB0BFAE4990B0A201968BEB5010F012F69
+009A467A051F7D5A31F984F2457A6447BBD9A2141ADF5697265F6033D7CE1AF05DDEBF25
+2B1D680D67565B335D5B2A920F1F31BA910739CCE284DFD9E4C89BDA590D4992714E709C
+F1B075B840A9B8663D5E40B2FFA2D28112D8AEF91EDDB601F0C56F02AE9FC2136452592C
+EA4DF7B2D3BB4AEA9F08BF1A95439FDB48A79E4A24089AB48451791E378E37D1E2AD2BE5
+AAEB8035B3712FFC1EF7B422085D2200FBB18B75DD871D55B5F49C612CCEC0782EE24E47
+5DD1F16BFFA9418C260C15B0CF172AE965AC3681734049F85D061495DAE8C15C936FB620
+46F8144BF000189C99374484889142B3C86A79447728DC2C439AB896735CCB5EB955E4F1
+C273FD370FCB000B9A9DB8717B121628EE841364A09B886E8EF1CDE210D23DB828AF3805
+2033A4A08094372F69B8501BF2BA8BC75FFC9547F6C505E2D27D0D6DB9809882276CB2A6
+D0459FAB4CAC0926E0CA002AD074D06D1CD226EC1AD67390BF6BF390804B9FDF7CBFC6BB
+DE7FCE4BF06EF3B3B588237525119295337524AA7B358CB26526D74D1D106339AEBFD515
+23A529842693497B80EEE39371C0AC636A5720C7B77014A4081ADF6643A0C2A70A69E66F
+8D7822E21E59AC6DD1DE1B6639DDA062E93C070D77E1D0F8E87D3BA4E2C1AA00AF4DB5A0
+A49CD42636F0CD025A3618D9EDBBED9D81BD56B0C05D37E953ACC253AF40678503C96DA6
+F9AECB9B1C516B0C8A474AB0644F473A1E03F1948C8619A267859A974F4D53EB3D8E4AB2
+E8B4F451906AEA9AB2B3F181934A3F9C5B6522A08F9D1A4B707D65E449FF6F5763CF391A
+8AAD004CB1D00E7AFDEEF1C233B40AD60E07E547BF1EA3587E02F0AB1835CA4D3854E21C
+99257007DC05B9F0A360A33A1A01B687DE28B6DAA7E6AB705774F0A74BFF8ED906221417
+57FC8332EE1C7C455391873F330CF5C1A6DE419BE2D3EEBAE03A093A9532D9E573AF039D
+7D6D30507DEDF78E5F54D7563609764901532F1DA58C71AE0BB91B4983F690684E96C872
+1F342A1BFE227FFC66370EB4EDAFDEB04724B1EBA08B98A065F85D8418715E1A2514094F
+509859A7216714E95CAC04CA8075E7550C5E31683BF9B8505117FEAEF7D90F1EBEE34B50
+4063836D3DBBA889C62D3D3B9FA3A8539C97458EB4321FC4819E17D97D78BFAFFF02B4C6
+FC077ADFF7DB95F24933E719249EBE355FE658E0B6E047D82BF5998A38B46DF18DB516E8
+FD312D2AEA1121D19799D4A563A57FFF348938BD78C61114F5027992E3B799495BCCEF6F
+C11B4814D21395885C3C513BB1175AB06C0C9849F70A97321E03EDAD87CA3DB3597517A6
+8E6FCEF5B7FB0F0FF6E850A12E7D0B61F0CD0AB34A3F18F1F57DBB2139E45E06E22B67F3
+8EC6623DF246D23671039A780830700AD81AB79766CC5845F1C6E308FEB4C28CBD47011E
+721B99BBD4FE7205926F34CCFEE1079CC5AE29565CB988A7866E1FB1511F8F767C2FCAFC
+9E6DD01F2D405C2D134153E0EE560C0806D97E9EFFE3F1A917B8E9C724467EB3782B64B0
+EA710D3652A7C45D17B69CBC0546748DF65995B013DB39641B7D41C55E125C47851B3AB1
+C4EA79BD7AD82C22EF5CB7CD4279EFC7159B9CEDC45FCF6486CDBCF9FA4A6F8C06F0B279
+78088E3BE61B3BE591F30DA27E485EC135FDDC6E030B24F070813ED3EE81644C1519094B
+4AE7AFB0C309C6C5CBDE455A8684678BC570C8A98C2D7137284564FF030EE9E889035A28
+7407BB10CC7C115C8CF9E0D017E6CD39C809F7959DBFC58CA22325C90FD6415A1288416C
+4A57B12F12ED6DAC527AEB10E140F4AD21DBABD6AC669BCA7B42A671D90BFFC4017C9065
+48D0A80CB89889612082C0D2F9C604ED1299BC9522A1142133E1019BE1EA89F4B7F624E4
+908A131EA170149CCC1D5CDD33614DEDE82BE805D8C24157BE07E01B31B4824024F95127
+B0BBC46F1E8F3160F7B542A56BD6821E1B5E3EFB71D2F4C8AC12D6B5E7465ECBB444B86F
+66CFA5FB9D813C2E0080DB20877368A5188751D30CB37230717ABA692B603C2A519C3AAA
+8FE2DD3ECC4E6E0534D76135FA341BD0B6A928061F34D20FCC2FE519E05932CDDBBAD865
+F2F1131ED566D18FE9AE48A97D2143DDDC1F6DC058B17AD84BE0A9FBE26E0EBCBAE29A3E
+F88806BC577FE1D1981788024A37CD48FA5064C6827B83CF7EE72EE4759DA3CF09730A3E
+D1A9D3FD9D1EA6FEF933EB59FFCB1939EAFD2A608C62CF3A762C618AC9163733DD69DC37
+BECC68A8923A6911D28A33694D62D17A7166406C87CCF32C4E03A0D0D2D6D756DAB909E3
+90AF3AF7FD974A4D1AC3E1694A7F1A9F834146C6251C840B53E0A99EA55B24DC165ACD1B
+024FC6A275FD4A18FB9886C2E5717F7148E50AE971FB3CFA8DA8F884586847995C1C5A89
+CED3AD92AE4573589BBA45F915E8618153C9100D0FBF6915A1C054ECA32D0DFCA2061734
+462A6959852885C1A3F445D162610E754A09082EB5730806B347388C51D6E1DE29A8C51D
+81F8C346F6BD5BC45B3A55C7C403DDE7AC29477DE758814A46F46956F93E078AC6563A01
+33105BFA6CC2F383751A65476010EEF6D11C7E174BFDB614707567A9D36432E487CE74D8
+2CFE99A95DD7893DBBCFA322C74C97CE4D6B69967058D11A90A6FDFC3AA4CC689CCAFA05
+479CB1D0813C9811B3F2E22F6516691E4F48D5D995C068A5468759F07DD37A7F64F43873
+8BD9FA76594181BBDE24AF2891ABB676570A6E7B375813C2AB7B69CF284B4E933BCE09C9
+1466ECD50709254E8EB0299A973B0441CAE4265F1098C8A75BCA905D65678AA757A9FD66
+520EA824B0BFB4BF160F3D4A05DF6F645B58A2E8026E67E10924FF47590FF87112D94166
+B43FA59720A4D24C21AD1D8C251229D75D58CB7F175E0EA60941E234FDD101D93DC8E849
+F64388A8F22444434F06D978CE9D3F55DE959480E786B29E0C9699C80CC21BED8063E7D6
+921F0B5A5BD03D263C2EF791AC66F28C9C822270D365B0D68FE04E4DF67FB4A6CB7F0F55
+D39F6A409FBDB4EF342862CA803C20AAB87AEAEFCD0B803456B62E37FD2D75FBF2B2622F
+D698EF4412169992E66541C19915428F9A9E24D38AEADA0EC683AB33FB08D5E6BD781C8C
+1EA5FF9955D624949692A720CB8ED7FC5E82DBC3CE93ADB4770FB9944696836D44BC6CE0
+CD22B01302890DDD6844D38BCEF8F974C6917D6094EF8FC2E419A8BA63D7967278E40B87
+9DE14620B1E7A878D7445C1A3132E3D138D01A52590F9178222003F4E002F576F796D60E
+D1F34AE52F9C0C51678D225C1F45D3D550895FC95F05088C3374DD38F26FF3990BA00BB9
+D153A753FC3AAEC15F714C525093578489F1AE3130852BBF7BAA096CBBB6A37C7B33B67D
+29EC19584F6F24B8C833FB3FB4FEEE33678CC083F63FBE87F550DECE5D5FC185040FC945
+310DB7C19A574DB4E48C5E0013851492878D5FC17A51A13F2F6DEEE07A781F6119E01ECB
+1AD758A1B2FD6C65C59EB6BB62231F8151392ED4D329B5567FC230849AEDB6F58B97B279
+F6E56F7E4E7EF13E7804FF41229967BDF83FA1380283F680D61CB19ABAD017D15CEC79F4
+6A7A8E251E4EB60E511A7DFBBFD8595D6F7075032A58D71B71F8E4567FF814F69F66639E
+7B120B8A20E400FCD1488FEA517976A95EF82E094DBB364557E62CB5A03F8E3BE18C634B
+E6A1040FAFCEDA860E528E34E90D6B7F8F901C7AEA28C50B3079CAE122143A25A0BD2123
+7BB6FEC3E033DCAA237A3EBBE1D0E911970D1D71381996A4707B20DA9A2D20869D59DB96
+1AE24AA3FE9D06C0A4CF84BF472FDD5277EF9EA5A4715B36CF1E62AED97BA0EBB452D451
+38F142ABFAC62D8717321A6590FA24C6E8DD68E0F0C27B87814D46F4A1618B0811E08D81
+C7427BACA3AF57286E8817E580C3BEEC86CE66852F1A57A915B8764556D9C4DFC0669803
+67F12EF9717AEE5529B1EBFF843880202DF9FC3C4ECF79F8B719664EEF8DCA45AA82A570
+C6A1DA3E22261D7CAFD405907C3C8AFAE30FEC0259F57587EC3DFC371EA8C3E25693EDB8
+E80729AD716760E36D6D92235EE5BDAAEBE5ACB809EEB006F29DEB56DDB0E3FF00B425FF
+73D77E4F994E6BE43DA1CC4FD8B4C843D8CBFA0B0966B29031AD7D6C01E15B75B8E61CC9
+531DB42DB43CB9CD37CA4AFDEC8D6728D03DB087B3FB161FC96748E6A55152A5F005364B
+5A0AE7EEB1B3E3D38C8B1BABB1F9C344D068C2BB98248FE521A7899D9AE2812514521396
+CC0F175198A9615EB51C01ABA9B000FC5D6456634F91C7DCBE342F18EB6432AAA75FB45C
+B3AC79057E2FCC9CC79FE88EA6579A294E2AC96E244209BED51FC9B8D00F7EAA3183BA5C
+D3463F83145C525B670A7A67297FBF6B34919F77A4063C1845551F85EE755D53EBE6C9A7
+CE9A24019CAD04032BDB44430CA97A4B574A89B95D83E0A3E2E21A8970111FD266F95F36
+743565013BECF27B99684A4120F430E323412B381CC550771BEFEBFD71D73B6C7771C560
+D033AE406AE277A4B1D0FBCE0D59F4FEE4FCAE2195BECB28B29FED27022E7A05C599E07D
+B0CE481F24C68525908E473F022FFBAD081DB6021F0A98F54A23C00902D48179B6D18B37
+C286C93ACEDAB0C4179AB2FEE45B5950201C193556365105F17A4C8488E28414B442EB7A
+AE197EA046CBBBA323AFD42C3D59F53884DB9DE06321A39B323D8B4F8AB8A8BC1FD12F65
+8DDC53C4BE2F32969B99C69A40B6F03A7D3F420A216793C38FD63750FBC920500DCDBE95
+47CEE353B92E349486ABF8B4E21010930BC99AB8A3E66BD5DE36CFA4F0F21BACD0695B48
+15B4FE6452A63C86AD9BC9516B0836C307F32224F5F66235F1FBC5F9ADB278717EEE4ED3
+696864FD711E3176BCEA18DA7742AEB2429AF8247289064406E4DAAAD060BC65823DF714
+C806D043DC39D0E52DAFC28B716306F8219A930A554500380D88D1E7565D8660DBECB506
+19156FF900B9C1D84988743B3DD88DCD0E0C8DC5B8F9E073844EF0B1B5DC05B7E2C9D4F4
+9C22DE81353FC68AB7143EC0C43B32E4E6F67B133044EC8EC9A1EF0C68EA50AE06E849A8
+D526C9508D2077AEBFE4CB21C8DA07E6DA12D8547265B281B5961CA6637B23DEED35CDDB
+E59E49582F90D0B7DD7D6E883BFB4F1B64CCFD1B9D318B93A4482C79582D1D0F5DE00E7D
+17B243B95A5A0D360CEC907363468E41461729DE4D55B34972E5B9FD23D9188C6DFF5E2D
+42FB4691F0F5954312E1E097284A4628C4C6AC0CCC965853ED10D5C522CE870E07245FF1
+0BF7EB448F8CB177106C6D1D8096AE12CDB48AD60307BE2AA629EC08A8D1C1A3AF766FBC
+FFF03B508B6071B129BF38608ACD4AC7FE4B4EAE7122F8AFFA8A2F250AA60A450C46B31B
+543AE5631733AACCD60FC4183892DB55FD7C1F46A5B9402297B4D500F0FD86EFEA5C9ADA
+C026F8DB8CE89D742260CF96E577311E9C7F9142E78D0943EDC16BCB40BB95688725A404
+668C6896F5BA8987F84C59888EF548F9D196EB3384A1460C70FA59218729981B74F31A41
+A54828246BE9668CE317F7C1456872B0F85688AC836F51596CA2951EA3157F9B0CADA130
+BB802A9588D8C582B14304DC7787F57DFA932EECCBDCCF0CE13C402E3DE01935C54F3040
+8F4253D284895E7C575FBEA90FD8F00783CEE883EDA4D0A92E7CBCFC4430192BF67154A3
+881881DE376AB433E221912431261321B91987BCB5CC568794F380F9FC1BC98E9786DD14
+E3F24BD94080AB57339A55FFD65B485D4748897DBBF43070D88553A707D15D95F9110508
+33465C1E70BBFF37ED3BFB7D48CF702D17EC742B721E05F95A5A47920EAAE790916091CD
+F39934C6EEEED9D8B3861A1635FDFFC6C3D041585C99B6D26C151A19E390529099EF1EBD
+8B41B4A120A29EF3971695DB3DC0E502563F255C4417D8A6DE95183D85A4E8E4F1485E9E
+0C47D00646DF5A13F23B5E3F04E7E50FA01979E8F3E35C0D81873D7BD525FBC75B0BB6B2
+8EEBC4CC99E8818F74B4D3DB49CF14205690405D436E18C29421EEAD4DE38732B0D3E57B
+43C5316A8D5AB50682F294ABE36FFA2218578FDBFFE3A46C47A725BCB0098E4CF54786AC
+4D6198A4B6803DFD63FDC61A5C254BCBA47F93BF39B812031AF24312DF977A0534D9DAC7
+44F8D8E426B4E5AED03F5215AD4A86AB17D6E2FE21D6EB8972EEC37C9A3E06A5FFF10A5A
+79D25BF4A8C4348EBD8E8E7495E44B41FDF9D2CE5AECECD195C150978EF3B77BFE7154DF
+6528F0FE6257F4C68B1A0F9909D2C435B3373953C9D205ED0E6EE0CFCBCC8E8469119570
+B281574D8F7C3296A22C59F6B641399510B32D4F4AA8DE028684FA2F8B26D50416B2D502
+9A9FA40D31DA08EF7F353B9035AB86EC52C38C7CC8B530511693F1F5995912DC77CF4449
+651F20CF99A62114A99F726B6B0179A178143960FAB960FF8B17131A5D2CE8CB68CD82F5
+F4898E7B95570D1C9B3A7C05A6A8ADFC4E562F838CC4519B0ABB0CE1D1F03C877A7C3BF0
+E79BCABA564A6DE3B4E07F6B168BA76CF0F99592907FF8D39D043217D11C3528C2DD1B0C
+9842DD25A3BD4D74A44896E3895838C1FC15B6CCB53AF0F77D90D0C89146599ED57EB49C
+406FDAA9C01973F6AB1A1F01CE9CE5F443D2C43B126CED5E85508EDC4E501BAD7CA233F4
+3FC05F081AB1E6ACDC18350F71962E1BCED0A2B977C81978DB964E8E639A9027BF73DE95
+B377B87FA4103B2C709889225C2B00E1D3CFEEA964FED09ED2EDA050077F9C67BC3249E9
+3A808D18DEC87145B95E183959C59F315F3596B5C4A1BAB22D9C5155780509D80CF440A1
+17F5BAFB235E21A80A6804AE06A220DC3885BFE83BE0CA825EAB4E01ED27B5C8AB2946B0
+75E2BEC782AEECACACD402080FFC9F5E4E6EFED6765D6E98E6F937E1065D7FDEC9085981
+8500B284776417D41B9B38C906318FD60AE7ADA311FB5C1B56FD51DA4C7D6E2A68612EE5
+DBB948934F54118B1AD5534F81064AB312BF330CA0825A27E4FCF30AE5B6A9AF2D82C02C
+81862DFF21E98A9393E3E2CD13D06DE8069286DD6B64D7D27B137CC0EC6AE7DA06DC4C79
+298FE94B4778C8622A10219C15E907C79D52842AF74B1965DA2E076528281B823A032003
+9273EE36393A89CBA9B3E3650D5D9DBF5FB8CFEC285EE9A380E13F560D87DDE6B8EFD0E7
+2EC1976B0E01225D647D488F0E014590D2EE558556EEA1A8D1F2362A15E1FE1949EB3859
+EBCCE83645EF89206A251F34EE9FF06577D83000D4416EC339AEB8E1DFA2FF09AA4EE8F9
+6406633150D3A961FB26F9C87B5070706556EC17CF50D8932F034D1577344D5FC7492997
+AB2916B5B30AC8895146213F8E22B0682E0EF9B3A1F0B92679633492DAD334A721E8CFE3
+4742C7AE2A5DB314946318BA88EAD5471B7A2B7BB9D450DB9F98C7C2B72C500C017B75E2
+EAE47AB6BA4F19E5A3697982CF8E1180E707AA10ECA5DBDA7F970B8114F06B3CCD6A96CF
+50161FE8D8B3F9DE841BB5FA5CFC991699A4C4515987E1B9ECF77AB9D43A0557556E4CD5
+29D8B63CA121A22404A83D065314330C9F224F5101422F134D1E5E82C4BAE1A5D7D9299D
+81235ECCD9BE31E4893CCBC03A4B18EA61169A6A022A2CFE1B1C630C8CDA78F09761F309
+E5069EFC1A558765F59B95A39CE7669D857C639278F42F4BCFB79945BC95E66899D74EF7
+867500B5CB39F1767AC3CCD96553297370BBD603C72B1357BB603B0C4CBD7DB292B1192F
+C63A5C52E99E0F2EDCC5EA8B328465A93234580841844D55F59D986D9523F6CD757B6F71
+9529ACD09969C4EE8F7C5855AD684F7DA217DE4539FEE91276E0B40A4933AC4592C3ADB4
+CFCA40C13D3A3B8366A6C34E9C3554D5A701B9F52D8A4D8CE3D68FAD167213BC1166988C
+A411BC1CFF95AEC0F2076BA7660B61F31806DE2193D37ECAE97C75DC687BF3F9A05391C9
+9F33DBC311B5E91204AD51515D2734F60CA6775FF78B12CC06F93F5E913759B7D6237779
+2DFA2233312C1F111164D6769950718C844769E706A6DE011485B1917E0270D952A7D8F0
+D014B6CFC189725A3375049801FA7483C4FFF15C41F2A356220B69280A1DF1804F2CB6F2
+BEE604E9E2D0E83FF1337469DF1D8F23CA9F9A03724B1B2510F5B50574D137DA0A7AB813
+9B39BCDF66A230C0A9A0205DC7CDA4DDD438319C5228CA50818DCE5A480D81B0427790CE
+DE0628349AE01A4C7BE7D297F9F8B0E73CCE497D5D314B606A3EF0556DAFFBB4CE156503
+D2C4556A6C0B4FAD4C9D18FDBDB96FE15F295EE8397FAEC99D3E8F3DB2EDA4F6372F967F
+6D191FF333A711632F3B116682B0417A015E8F6836D8860C754C7D653A060BA4B57B2F7B
+D67E572CF68F8F520F38D7E85B05AB8F59D761E84458AF996643C3E2A09B79C6C4D9311E
+E417972B7F50F34542FB944449DD7C7F2D3E8791682B68CF80AACEA190B759409D21D90B
+AAF175CD0E9CE46C991CBDEB5D0F5B42DB39A695C652EBF7F516921FDB94F5185C571352
+C876BF794EB6CD5FFE4C00322ABFDC8723A6996299CF8C5ACC344A5F6DF9016743573743
+F4A8BF6D558F5B2E83A9300931D463823EF9CE7F8B1F0328F2FA5A9D7204B8230A2129E0
+E6AE48F20CCD8A916238A86DD1D90842DA1778631D9F28F4F99B260270B043F0BEF59A04
+53F02DBC5B95F2D0A443558C08C208E53EE666949DA618BB662A88F127F4BAC83D1E0C92
+22EAB9CDB220326437E81DEA29C87F5427B12967A2D992A4BFBFE827B56AFF9BF3AFD54C
+A7140969573DC36B082DFF214A7C0C8DBC4E7B4F460EA0E2BD5EB1AA05742D9B876F7F51
+66C5CEC72FC1D139D35D0F2775F224F7D6BB80408BE2435643139B6D8EEB3E44B72DB0B9
+F3AD552F8AD3CB27933E47EA631CB6A3EB5A4062B23D58D389F81723461C0411FB0E4BD9
+FE3A285E4EEA6B48464399F263670543EAD61837706BAAC453D97D1823EEF6421E96D555
+94259BD41D2F5E690EB4A6D3C631B09894EFE7EED8AC0242C3C104DCCEAE655B7E369CE4
+875BAD3D3064DAD024A095B6C9254DE2B74CFEED126D92A893AE983CCAE1476BA30AA08A
+D7C5520EC6FE1B0218C21EA4D03CA11CCEE9BFB5052EF315E2931536932BAAF020F67A7A
+4457E1FBDD4FFD77C1E42A2E18759648347A8C020BFA71F6A4D1A546006D819E101139D5
+2D03A9C9242B3B6E28334228077CC3D38FC3C45D7263FEAF9CA1B910B05019CA4AC29E56
+07C0E13C9C983B6982376942825B71C13A1D5F44092818188F908975DA850C22FBF522D1
+CFE4F8EC59FBF21B8B4D219EEF9D37A0EC3B764D8B3B10C993275FF6497BDD7847971373
+5FA4CABF8FD7C34AEE2270A0A1CF6727CDDA6871EBAFF60BCF92F244DF09204E881FD16A
+57EFFAE0C035C7E6781C813B8957170984F785A6C77093D03DCFE41758A1071C198AEC95
+7D25B2F47E46879764EA885E581B29D10DC38C123525099BA156FC2973390B3C707719AF
+6682E88C0B45FB32530A30637315580B13E2F9A7C9B4AA0E3F64A9C7C47C36E0E129865E
+72AFC8F9CDA9AEDBB582398DEF4C2AE45F7DDBB82D30BED99B351FD22DE60FFCF1EAA876
+79032F7B5618BE3A68C96E58D0623D8519D561291863992464F5260099B154D0A27FDEDB
+13E52DD04E920DDCC5641C322E39BAEFB9539C3C5DF914BF19456F2B98A9E4471559201D
+4C1AD09C4716BD18934E46C8858A9576DA44A3F4620C787E98E905097F71E76B7D31DD2D
+7325A9959FCD3EF8B6F06FC2FEA8F39FE4FD14B9786517A764D382B1BD16B3C1AE953A53
+0ECCEBA3930F210269146634B1096B6563C247C62F322364AD3C5F020CF5F00AC282B362
+91EAB1D8B621F62042042A134F4EABD78521E2619B04655F7CCEFA652A4BF5FB405146AF
+585C222CA85EEA9D14838E69CCC6A03449429DE0ADE882D417902FBE56C5F92E786B1493
+E7C092F4B40B40F652D82ACB813A64166BCC3393F4C77C621B0D9B9EBFB2B411A668A3EE
+D61A5662BA0ADDA4C9D927C81844A71E91432B30CEF09B8EAAAFB1026904267D31E834AB
+54E61219BE4DBAD15E8808EED8FE8B4873F823373765C9D9B674D4EDFEB6CFA101F39C63
+3A8C6A2E13ABB47C32A29002AC3983D57A599078E79B5A17848ECE3DAB14371B86389C47
+A7D6B52E41F45EF2E5B3E0C76BF5FD0D41765329FBA1C3E44EEECB930F1FEA2188B0BADA
+7BCE500CF6770E5F8DFDFC439FAC936785DBD12390215AF07AC44EFFEA6A12C87D7082D5
+5ECD27132E6CBBBB850D13A67381BF48784FF4482C5FAE5957542FCF29FD494BE3C5A681
+D70552B3AFF49928DE96A184D22B46F0237D07228C8095010E37B31F195CB4C85590B915
+CA29156E39DC6B4F11FA87F2DB4833737F74BFFF912D6F3F8FEE288842FA57FB9560C4B5
+D16C84A6FFE967F57DC4531F180DC43AE00B5584D4D7B0CEB7B64741EE2DCCDEF8382DCF
+1EAB958172492BB0CF838D5AF8F7A8FFF679CD3924407AA431CB1958DA9FD06C941D3A69
+8E821952A81429500FDA25379D86AFA13E46E357CA7BA0E4C588FD3E6E966B07DE208EC2
+9D63FDC11A1C2D127B226E114CBB05F06FAB72E7524D66AB4FD999F4F69E28D5BD258ED8
+2D59E1854E58A9E6A3B4B2840298CF0711576AE263F3CF352286CE5365E1EDED67D9A53B
+4335790E697089D2B3DF05A802901219046820C284BA805F84328816CFF64F9E7232C1D0
+487707FD5D67FC0589B147867CE05AF7716FC3559A9A3231986D5EA605397E2307F65CAA
+8F389133DDD269DE52AF45D447654FBAFB016A165FECC2F9FA4DC9387D23FF14E3064957
+EC3328DB41167FFBF109AEB10B1201FD67D7A93979AC69AB1C1BE4737E33284CF4B513B7
+9EEFA74438F9A93A05CE0F50E25ECF703CAD53D40C60609229E675D9725E6706A6140E8C
+76F68937D732F8041F1C52472CFD28A5644DB08DE9FE4ACCC37DFD3A367C4D2836072FF4
+EEF4B5322641BCDAC7F7417D2CB77CD19F3B04AEB4FCFEC6CB64E9EDAEB91BDEB95B43DB
+3422BE67905E5962B52822F2D479F268C0799E8DA50B81CF4157F912FBAA9B9661A1C8BE
+2193B313D38F5CBD6DFEE25B302A1FAE00187CA5BDB676E117156EDC513CD582D510C2B3
+07FA6634B3422471FE7DDB241BEF8F1B5F71FBF84F92334DADFAAF42602F293F9AA79D56
+270F30B2DFEAFF528503B9D85183498A4414F9F33D252DEC32463CBCAB6AC4EC32B064A2
+74152B6F88E2022F8804DD24FC37B97FA746BCDE9CBBDABCC8203744C8F28ECD876215B2
+A12BC3BB65351F78114D4A7E05E62D7146C7803AB7249CA18FC045C8F0A84E93968E917C
+B915ADB58A2118C0742E7C9E1FCC9555F8ABD9B10F3312FF4D079E1CE326F26385AF7B8E
+16F2A535616B0F61DB5A12B94C3246C151BF65E7EA59B974AE8E55F76D3B555C04515750
+6B667016DA4D6B8D7EB1692C3719CB9D9FF92AD8246C5B9A73B6AE7BCC02D5C2C49AE649
+95021F3146C2FF63D8460BD88DB23B3C3663B08FF1EA8D0813F1746B5B0DAD26C348125F
+1C7063B40B2A8A4FD741C56012BF1D706B606774408BF8D74F2D479E75FE7DF5C2CEF510
+9752943338E3562111624231F5A0DC033E5F6DA8284EE934D972DB28C5A7967A4F3F31A4
+19E37BBA1D337849E72298918BB4E9F189D2B8D8FF00CF5B5B80809868790F816CD6E548
+E33675BD1B45E8208CD2A2D5A13BB0789116DC276E02F3404FD0CE2CB5DFBC84C659D3F9
+25DB774E1BF405E6DD27F067DB753E2DCF790E20D435F270E1FD9D1349653AD3EAE3FF84
+E69B15A05B5D0E06D7FFD0897269189D7BC8C335509D97E34322EA06C42B340754A36E82
+B176B35C6418F49628A312DAA81AF838D176C5C63C6B1A85CDF4D94ACDC1EB3464D79876
+E7B09DE48A4CA370084F1D3430FE73A760CF0CE94DDF4176FD562ED8F4268CB27F459C79
+1D50BD0E0907E3B616897A50CE60A58312482C0DB2457B26CA78D9FAC86EF3B9556484F9
+5321E10590BFAE29AB94BD2308A623A31BF183112B12E2080BC845974D6EE4FA4D953187
+29A56B2915D21BCBC5B51AE3D1A2515AA25C36705C904C98909AEE28C7E8606906DD725A
+96865656A0E415E46ECA4DC4504841E36F58EA509AF09969DB417BE604F340A86C3961B5
+20A0A371A51F50441E1334FCC4F99F8AAA1979DE69E36EFF3851953DCACC1F3F00A8FDB6
+DCF1FC33D00039FE8823E8E330EDCF6C9E0224FC37F58A1FEE03CFF3AFD6D078C0577F78
+A7AD3A159B5762D4CE6F415D1443C9A3ED49B79E9D15A1092616C60F7F154C41AB5AE851
+CF1AAE7EC450A1B42EC56020C1957DF721025FC16ABECA7C2AB56B262B2836BB8B733C93
+A988E3A7B13562DCEAC8B1BC4F5A4C4D1C9593CB23F774F87083D1992032DA5E8B3E7BA9
+17F7FEE9E06DF93CAA125C006226603DCB6E7233286717EA9635023333B7356F18D44ED0
+3E2987676B12B19C86504AE4F1236C0C5BBB53118F78BCFD8935C37F1CA064897B7440CE
+B91A90B0307F8BB33D3806BCC5169F4630A34B25A3A1BA5C6C7662CC6F5A8F2461EF356F
+D26639668CEEA279C9511EDE928BB0198C067E4569ED73007409EB690163D7F03A9882D4
+61797D1997E9CA4F68A3CE48F0E20204D584A40EFA4EAD227A5EEA5CDAA8E3DEABF75771
+35CD86D3334CEA734818EC9F31AD745D3586CD735E53C68B20E03822911D741DF3E0CF86
+D4C819A1DF09A64EC8FB01B145078FBC1518A237D89B2A2474D4EF25AD60CD4D8C4432FF
+BF6B84D410BA9EA4C7FB49F5838FC7A221FECB44AB0953B04E91AE2751D5B198D2447033
+8A16881965412EED6997A5021C9F84918A7B2CE55A39BAFD148E93AC5EE3A6CD3D8028DC
+501C47CAE20F352DC1181B497D55C2D403BF86F6FA5E91AE679AAD7E2DD91A278F11C897
+D20FD00994DA49BC4FB15B4A558A7327A910C70CCC2F12F59FE25B658AFF04AD11BC5A72
+83162DBB903FFEDA6C7FFC1E1F113D04058B821EDABB8F696B8EBF15EC891748FAD918C5
+2659BABEED633C677820F8202573215CF5BF90AAA536A04F2DF0DC3446BFA1701D8C73E5
+5697ACC105A6344FDCB9182AAA936E2B126EA2890D8736A771A9B635F82EA3E4F12E47D9
+AB1FC88C67B1A77569B1527D6B6187440285830ECDD53ADCA4403F0CA93DC06EA1524E12
+6555E462F11E763CBCA61EA1A9342C08ABE76C0407516F7B6D513FB300B9DE7C8575EC97
+7BECCDAA9EC93912CBBD2B7684B7FA0B629F5AAA9C14F900D0E4EB2757A5DBCA38D6A394
+56D05CC1266196CE556DD31CCC1A680EA089036A1EE6B7F7F2A6EB4A840308E840ABE9D2
+9F8C2965D7D4DE1990CF023C167879DE0F3233F580C3A2D0B02954D4966057B4B395531B
+13134089D7451000B666A1F2A3B27C90B8AB6FDC5B031B42B78B48E5FF6D7F7D8CBF7BE7
+A1FD41AB5375C32B7E555A841398A179727A1C3D43E8041B947143FE064DD63DCAE719B6
+E3062FF1887055947F52C9698E0E90E5B513035C27BA2AF8B894CEC9EB5210F253186228
+D032F0A7EB70EBCF330934BF4A67E7D0578A07DDD7AE1BD0A09429AB0506624BA7706226
+6A0C74774D719784AF63800E4645F87B9501284F520F1A6C227352AA02610A0BF6E22690
+E80CB992CC7571DED845A977EA587C8DBA848BFDA8A56A91AC3A557CA854CA5A9DCF6F8C
+5F74E410D931813C9C1BD13C149487698E6ABD0E76DA1FFC2BB2F87E75BEB45D832DD848
+81C2E8E0DA3C6D6418CE51F2B9324E088237A409598A00DDFA7476624D09700EBA0D6596
+442CBA2AFECE65606A6096CF28EBB0DC220321C957DD945B013E65767F92863B81EF8CA3
+F4390DC808E6F3DF8EFFEC921864CB9747B9714F5FA0175A5EA76117A3F419E41CE92ECF
+F38075431280F1F07096D7D51C099008A7333FCB753AA197F6F478CD9FA08095201BFB49
+C730E6311B81CFE93DF048C22AFF36463E02C754617602386737D8D97F007DF72435B482
+484DB3D9CDAF19213237277A5A4A2347F710B5C511174BDBB2EDD777743B124FDC0A05B3
+9BBA2624A568F2A4F08D21BF09FC9F4F8F187DC737A9A70C395F704FC5BDC781D3873824
+AE002C539F947220C74026D51931108DE43577304904510D235B9BF6BABDF1D45F16E903
+EF183B601A878F1A249B80EE07C8AAAE024E596C8AB73D3558B3A8DE863B04FCB8C436CA
+888D0260B3EE5A70EB5917A1DA220E7F63EB5ABF673D02E5D802CB6B805F64654BD4F719
+A405854E9E9128ADECB09E0244B553217CE6C1A8CFACF44A8F8959A1A6DAE6BC7B7B86A0
+27F51703158974DD01764BD8BB9E3108AA9A1BC730BF67B4BCDBAD65F5BB4A12955FCA55
+A2D430871FA069C9EFFF40DD833A0A63B7C03523180C8527F9873B2B74E799C7996B1A3A
+54F5937D5A5A44E495E69C9D13E6DA6BB5750C409E1025D684658FB3B244D45823B2B508
+8AD28DBA806B892C4030420B2C01713AF6F53BAB4BF14078E1A37EC89DFDEBB611EE4B45
+6262274BCF70198724C7B8D8C0839C5C9553E1CE28A8A7470FA77ADF72D500CD08B08C28
+F663A025D325CC90BB3E0A5D5381620D1F3139B9995EA0190CBB8C4E18CAAD4DF6291C96
+8C7E0282089E9A228D57A23A6220691A6C6B904A2E9A6385E5B39FB2D507704128DBFF56
+11DAE32DB6F955A7FFD606FE933A08
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
diff --git a/scripts/LinuxManBook/devpdf/download b/scripts/LinuxManBook/devpdf/download
new file mode 100644
index 000000000..e230c8213
--- /dev/null
+++ b/scripts/LinuxManBook/devpdf/download
@@ -0,0 +1 @@
+ Tinos Tinos.pfa
diff --git a/scripts/LinuxManBook/en.tmac b/scripts/LinuxManBook/en.tmac
new file mode 100644
index 000000000..441ca2997
--- /dev/null
+++ b/scripts/LinuxManBook/en.tmac
@@ -0,0 +1,77 @@
+.\" English localization for groff
+.\"
+.\" Copyright (C) 2021-2022 Free Software Foundation, Inc.
+.\" Written by G. Branden Robinson <g.branden.robinson.@gmail.com>
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff 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.
+.\"
+.\" groff 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
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" Please send comments to groff@gnu.org.
+.
+.do nr *groff_en_tmac_C \n[.cp]
+.cp 0
+.
+.
+.\" If changing from an existing locale, we need to preserve the state
+.\" of the "suppress hyphenation before a page location trap" bit.
+.nr locale*use-trap-hyphenation-mode 0
+.if d locale \
+. if \n[.hy]=\n[\*[locale]*hyphenation-mode-trap] \
+. nr locale*use-trap-hyphenation-mode 1
+.
+.
+.ds locale english\"
+.
+.ss 12
+.
+.\" Set up hyphenation.
+.
+.\" English hyphenation (\lefthyphenmin=2, \righthyphenmin=3)
+.nr \*[locale]*hyphenation-mode-base 4
+.nr \*[locale]*hyphenation-mode-trap 6
+.
+.ie \n[locale*use-trap-hyphenation-mode] \
+. hy \n[\*[locale]*hyphenation-mode-trap]
+.el \
+. hy \n[\*[locale]*hyphenation-mode-base]
+.
+.rr locale*use-trap-hyphenation-mode
+.
+.hla en
+.hpf hyphen.en
+.hpfa hyphenex.en
+.
+.
+.\" man package
+.if d an \
+. an*reset-hyphenation-mode
+.
+.
+.\" me package
+.if d @R \{\
+. ds _td_format \\*(mo \\n(dy, \\n(y4\"
+. ld
+.\}
+.
+.
+.cp \n[*groff_en_tmac_C]
+.do rr *groff_en_tmac_C
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/scripts/LinuxManBook/gropdf b/scripts/LinuxManBook/gropdf
new file mode 100644
index 000000000..8474e583f
--- /dev/null
+++ b/scripts/LinuxManBook/gropdf
@@ -0,0 +1,3710 @@
+#!/bin/perl -w
+#
+# gropdf : PDF post processor for groff
+#
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.myzen.co.uk> (and KUBO Koichi)
+#
+
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+use strict;
+use Getopt::Long qw(:config bundling);
+use Encode;
+
+my $use_suppl_font = 1;
+my $use_unicode_bookmark = 1;
+
+use constant
+{
+ WIDTH => 0,
+ CHRCODE => 1,
+ PSNAME => 2,
+ ASSIGNED => 3,
+ USED => 4,
+ SUPPL => 5,
+};
+
+my $gotzlib=0;
+
+my $rc = eval
+{
+ require Compress::Zlib;
+ Compress::Zlib->import();
+ 1;
+};
+
+if($rc)
+{
+ $gotzlib=1;
+}
+else
+{
+ Msg(0,"Perl module Compress::Zlib not available - cannot compress this pdf");
+}
+
+my %cfg;
+
+$cfg{GROFF_VERSION}='1.22.4';
+$cfg{GROFF_FONT_PATH}='/usr/share/groff/site-font:/usr/share/groff/1.22.4/font:/usr/lib/font';
+$cfg{RT_SEP}=':';
+binmode(STDOUT);
+
+my @obj; # Array of PDF objects
+my $objct=0; # Count of Objects
+my $fct=0; # Output count
+my %fnt; # Used fonts
+my $lct=0; # Input Line Count
+my $src_name='';
+my %env; # Current environment
+my %fontlst; # Fonts Loaded
+my $rot=0; # Portrait
+my %desc; # Contents of DESC
+my %download; # Contents of downlopad file
+my $pages; # Pointer to /Pages object
+my $devnm='devpdf';
+my $cpage; # Pointer to current pages
+my $cpageno=0; # Object no of current page
+my $cat; # Pointer to catalogue
+my $dests; # Pointer to Dests
+my @mediabox=(0,0,595,842);
+my @defaultmb=(0,0,595,842);
+my $stream=''; # Current Text/Graphics stream
+my $cftsz=10; # Current font sz
+my $cft; # Current Font
+my $cftsup=0; # Current Font (supplemental)
+my $lwidth=1; # current linewidth
+my $linecap=1;
+my $linejoin=1;
+my $textcol=''; # Current groff text
+my $fillcol=''; # Current groff fill
+my $curfill=''; # Current PDF fill
+my $strkcol='';
+my $curstrk='';
+my @lin=(); # Array holding current line of text
+my @ahead=(); # Buffer used to hol the next line
+my $mode='g'; # Graphic (g) or Text (t) mode;
+my $xpos=0; # Current X position
+my $ypos=0; # Current Y position
+my $tmxpos=0;
+my $kernadjust=0;
+my $curkern=0;
+my $widtbl; # Pointer to width table for current font size
+my $origwidtbl; # Pointer to width table
+my $krntbl; # Pointer to kern table
+my $matrix="1 0 0 1";
+my $whtsz; # Current width of a space
+my $poschg=0; # V/H pending
+my $fontchg=0; # font change pending
+my $tnum=2; # flatness of B-Spline curve
+my $tden=3; # flatness of B-Spline curve
+my $linewidth=40;
+my $w_flg=0;
+my $nomove=0;
+my $pendmv=0;
+my $gotT=0;
+my $suppress=0; # Suppress processing?
+my %incfil; # Included Files
+my @outlev=([0,undef,0,0]); # Structure pdfmark /OUT entries
+my $curoutlev=\@outlev;
+my $curoutlevno=0; # Growth point for @curoutlev
+my $Foundry='';
+my $xrev=0; # Reverse x direction of font
+my $matrixchg=0;
+my $wt=-1;
+my $thislev=1;
+my $mark=undef;
+my $suspendmark=undef;
+
+
+
+my $n_flg=1;
+my $pginsert=-1; # Growth point for kids array
+my %pgnames; # 'names' of pages for switchtopage
+my @outlines=(); # State of Bookmark Outlines at end of each page
+my $custompaper=0; # Has there been an X papersize
+my $textenccmap=''; # CMap for groff text.enc encoding
+my @XOstream=();
+my @PageAnnots={};
+my $noslide=0;
+my $transition={PAGE => {Type => '/Trans', S => '', D => 1, Dm => '/H', M => '/I', Di => 0, SS => 1.0, B => 0},
+ BLOCK => {Type => '/Trans', S => '', D => 1, Dm => '/H', M => '/I', Di => 0, SS => 1.0, B => 0}};
+my $firstpause=0;
+my $present=0;
+
+$noslide=1 if exists($ENV{GROPDF_NOSLIDE}) and $ENV{GROPDF_NOSLIDE};
+
+my %ppsz=( 'ledger'=>[1224,792],
+ 'legal'=>[612,1008],
+ 'letter'=>[612,792],
+ 'a0'=>[2384,3370],
+ 'a1'=>[1684,2384],
+ 'a2'=>[1191,1684],
+ 'a3'=>[842,1191],
+ 'a4'=>[595,842],
+ 'a5'=>[420,595],
+ 'a6'=>[297,420],
+ 'a7'=>[210,297],
+ 'a8'=>[148,210],
+ 'a9'=>[105,148],
+ 'a10'=>[73,105],
+ 'isob0'=>[2835,4008],
+ 'isob1'=>[2004,2835],
+ 'isob2'=>[1417,2004],
+ 'isob3'=>[1001,1417],
+ 'isob4'=>[709,1001],
+ 'isob5'=>[499,709],
+ 'isob6'=>[354,499],
+ 'c0'=>[2599,3677],
+ 'c1'=>[1837,2599],
+ 'c2'=>[1298,1837],
+ 'c3'=>[918,1298],
+ 'c4'=>[649,918],
+ 'c5'=>[459,649],
+ 'c6'=>[323,459] );
+
+my $ucmap=<<'EOF';
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (Adobe)
+/Ordering (UCS)
+/Supplement 0
+>> def
+/CMapName /Adobe-Identity-UCS def
+/CMapType 2 def
+1 begincodespacerange
+<0000> <FFFF>
+endcodespacerange
+2 beginbfrange
+<008b> <008f> [<00660066> <00660069> <0066006c> <006600660069> <00660066006C>]
+<00ad> <00ad> <002d>
+endbfrange
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+EOF
+
+my $fd;
+my $frot;
+my $fpsz;
+my $embedall=0;
+my $debug=0;
+my $version=0;
+my $stats=0;
+my $unicodemap;
+my @idirs;
+
+#Load_Config();
+
+GetOptions("F=s" => \$fd, 'I=s' => \@idirs, 'l' => \$frot, 'p=s' => \$fpsz, 'd!' => \$debug, 'v' => \$version, 'version' => \$version, 'e' => \$embedall, 'y=s' => \$Foundry, 's' => \$stats, 'u:s' => \$unicodemap);
+
+unshift(@idirs,'.');
+
+if ($version)
+{
+ print "GNU gropdf (groff) version $cfg{GROFF_VERSION}\n";
+ exit;
+}
+
+if (defined($unicodemap))
+{
+ if ($unicodemap eq '')
+ {
+ $ucmap='';
+ }
+ elsif (-r $unicodemap)
+ {
+ local $/;
+ open(F,"<$unicodemap") or die "gropdf: Failed to open '$unicodemap'";
+ ($ucmap)=(<F>);
+ close(F);
+ }
+ else
+ {
+ Msg(0,"Failed to find '$unicodemap' - ignoring");
+ }
+}
+
+# Search for 'font directory': paths in -f opt, shell var GROFF_FONT_PATH, default paths
+
+my $fontdir=$cfg{GROFF_FONT_PATH};
+$fontdir=$ENV{GROFF_FONT_PATH}.$cfg{RT_SEP}.$fontdir if exists($ENV{GROFF_FONT_PATH});
+$fontdir=$fd.$cfg{RT_SEP}.$fontdir if defined($fd);
+
+$rot=90 if $frot;
+$matrix="0 1 -1 0" if $frot;
+
+LoadDownload();
+LoadDesc();
+
+my $unitwidth=$desc{unitwidth};
+my $papersz=$desc{papersize};
+$papersz=lc($fpsz) if $fpsz;
+
+$env{FontHT}=0;
+$env{FontSlant}=0;
+MakeMatrix();
+
+if (substr($papersz,0,1) eq '/' and -r $papersz)
+{
+ if (open(P,"<$papersz"))
+ {
+ while (<P>)
+ {
+ chomp;
+ s/# .*//;
+ next if $_ eq '';
+ $papersz=$_;
+ last
+ }
+
+ close(P);
+ }
+}
+
+if ($papersz=~m/([\d.]+)([cipP]),([\d.]+)([cipP])/)
+{
+ @defaultmb=@mediabox=(0,0,ToPoints($3,$4),ToPoints($1,$2));
+}
+elsif (exists($ppsz{$papersz}))
+{
+ @defaultmb=@mediabox=(0,0,$ppsz{$papersz}->[0],$ppsz{$papersz}->[1]);
+}
+
+my (@dt)=localtime($ENV{SOURCE_DATE_EPOCH} || time);
+my $dt=PDFDate(\@dt);
+
+my %info=('Creator' => "(groff version $cfg{GROFF_VERSION})",
+ 'Producer' => "(gropdf version $cfg{GROFF_VERSION})",
+ 'ModDate' => "($dt)",
+ 'CreationDate' => "($dt)");
+
+while (<>)
+{
+ chomp;
+ s/\r$//;
+ $lct++;
+
+ do # The ahead buffer behaves like 'ungetc'
+ {{
+ if (scalar(@ahead))
+ {
+ $_=shift(@ahead);
+ }
+
+
+ my $cmd=substr($_,0,1);
+ next if $cmd eq '#'; # just a comment
+ my $lin=substr($_,1);
+
+ while ($cmd eq 'w')
+ {
+ $cmd=substr($lin,0,1);
+ $lin=substr($lin,1);
+ $w_flg=1 if $gotT;
+ }
+
+ $lin=~s/^\s+//;
+# $lin=~s/\s#.*?$//; # remove comment
+ $stream.="\% $_\n" if $debug;
+
+ do_x($lin),next if ($cmd eq 'x');
+ next if $suppress;
+ do_p($lin),next if ($cmd eq 'p');
+ do_f($lin),next if ($cmd eq 'f');
+ do_s($lin),next if ($cmd eq 's');
+ do_m($lin),next if ($cmd eq 'm');
+ do_D($lin),next if ($cmd eq 'D');
+ do_V($lin),next if ($cmd eq 'V');
+ do_v($lin),next if ($cmd eq 'v');
+ do_t($lin),next if ($cmd eq 't');
+ do_u($lin),next if ($cmd eq 'u');
+ do_C($lin),next if ($cmd eq 'C');
+ do_c($lin),next if ($cmd eq 'c');
+ do_N($lin),next if ($cmd eq 'N');
+ do_h($lin),next if ($cmd eq 'h');
+ do_H($lin),next if ($cmd eq 'H');
+ do_n($lin),next if ($cmd eq 'n');
+
+ my $tmp=scalar(@ahead);
+ }} until scalar(@ahead) == 0;
+
+}
+
+exit 0 if $lct==0;
+
+if ($cpageno > 0)
+{
+ my $trans='BLOCK';
+
+ $trans='PAGE' if $firstpause;
+
+ if (scalar(@XOstream))
+ {
+ MakeXO() if $stream;
+ $stream=join("\n",@XOstream)."\n";
+ }
+
+ my %t=%{$transition->{$trans}};
+ $cpage->{MediaBox}=\@mediabox if $custompaper;
+ $cpage->{Trans}=FixTrans(\%t) if $t{S};
+
+ if ($#PageAnnots >= 0)
+ {
+ @{$cpage->{Annots}}=@PageAnnots;
+ }
+
+ PutObj($cpageno);
+ OutStream($cpageno+1);
+}
+
+$cat->{PageMode}='/FullScreen' if $present;
+
+PutOutlines(\@outlev);
+
+PutObj(1);
+
+my $info=BuildObj(++$objct,\%info);
+
+PutObj($objct);
+
+foreach my $fontno (keys %fontlst)
+{
+ my $o=$fontlst{$fontno}->{FNT};
+
+ foreach my $ch (@{$o->{NO}})
+ {
+ my $psname=$o->{NAM}->{$ch->[1]}->[PSNAME] || '/.notdef';
+ my $wid=$o->{NAM}->{$ch->[1]}->[WIDTH] || 0;
+
+ push(@{$o->{DIFF}},$psname);
+ push(@{$o->{WIDTH}},$wid);
+ last if $#{$o->{DIFF}} >= 255;
+ }
+ unshift(@{$o->{DIFF}},0) if !$use_suppl_font;
+ my $p=GetObj($fontlst{$fontno}->{OBJ});
+
+ if (exists($p->{LastChar}) and $p->{LastChar} > 255)
+ {
+ $p->{LastChar} = 255;
+ splice(@{$o->{DIFF}},256);
+ splice(@{$o->{WIDTH}},256);
+ }
+
+ if ($use_suppl_font) {
+ my $fnt = $o;
+ while ($fnt = $fnt->{NEXT}) {
+ my (@d, @w);
+
+ foreach my $cn (0..255) {
+ my $ch = $fnt->{NO}->[$cn + $fnt->{SUPPL} * 256];
+ if ($ch && $ch->[1] && $fnt->{NAM}->{$ch->[1]}->[USED]) {
+ push @d, $fnt->{NAM}->{$ch->[1]}->[PSNAME] || '/.notdef';
+ push @w, $fnt->{NAM}->{$ch->[1]}->[WIDTH] || 0;
+ } else {
+ push @d, '/.notdef';
+ push @w, 0;
+ }
+ }
+
+ my $obj = BuildObj($objct + 1, {
+ %{$p}{qw/Type Subtype BaseFont FontDescriptor/},
+ Widths => \@w,
+ FirstChar => 0,
+ LastChar => 255,
+ Encoding => BuildObj($objct + 2, {
+ Type => '/Encoding',
+ Differences => \@d,
+ }),
+ });
+ $objct += 2;
+
+ my $q = GetObj(2);
+ $q->{Resources}->{Font}->{$fnt->{NM}.'.'.$fnt->{SUPPL}} = $obj;
+ }
+ }
+}
+
+foreach my $o (3..$objct)
+{
+ PutObj($o) if (!exists($obj[$o]->{XREF}));
+}
+
+#my $encrypt=BuildObj(++$objct,{'Filter' => '/Standard', 'V' => 1, 'R' => 2, 'P' => 252});
+#PutObj($objct);
+PutObj(2);
+
+my $xrefct=$fct;
+
+$objct+=1;
+print "xref\n0 $objct\n0000000000 65535 f \n";
+
+foreach my $xr (@obj)
+{
+ next if !defined($xr);
+ printf("%010d 00000 n \n",$xr->{XREF});
+}
+
+print "trailer\n<<\n/Info $info\n/Root 1 0 R\n/Size $objct\n>>\nstartxref\n$fct\n\%\%EOF\n";
+print "\% Pages=$pages->{Count}\n" if $stats;
+
+
+sub MakeMatrix
+{
+ my $fontxrev=shift||0;
+ my @mat=($frot)?(0,1,-1,0):(1,0,0,1);
+
+ if (!$frot)
+ {
+ if ($env{FontHT} != 0)
+ {
+ $mat[3]=sprintf('%.3f',$env{FontHT}/$cftsz);
+ }
+
+ if ($env{FontSlant} != 0)
+ {
+ my $slant=$env{FontSlant};
+ $slant*=$env{FontHT}/$cftsz if $env{FontHT} != 0;
+ my $ang=rad($slant);
+
+ $mat[2]=sprintf('%.3f',sin($ang)/cos($ang));
+ }
+
+ if ($fontxrev)
+ {
+ $mat[0]=-$mat[0];
+ }
+ }
+
+ $matrix=join(' ',@mat);
+ $matrixchg=1;
+}
+
+sub PutOutlines
+{
+ my $o=shift;
+ my $outlines;
+
+ if ($#{$o} > 0)
+ {
+ # We've got Outlines to deal with
+ my $openct=$curoutlev->[0]->[2];
+
+ while ($thislev-- > 1)
+ {
+ my $nxtoutlev=$curoutlev->[0]->[1];
+ $nxtoutlev->[0]->[2]+=$openct if $curoutlev->[0]->[3]==1;
+ $openct=0 if $nxtoutlev->[0]->[3]==-1;
+ $curoutlev=$nxtoutlev;
+ }
+
+ $cat->{Outlines}=BuildObj(++$objct,{'Count' => abs($o->[0]->[0])+$o->[0]->[2]});
+ $outlines=$obj[$objct]->{DATA};
+ }
+ else
+ {
+ return;
+ }
+
+ SetOutObj($o);
+
+ $outlines->{First}=$o->[1]->[2];
+ $outlines->{Last}=$o->[$#{$o}]->[2];
+
+ LinkOutObj($o,$cat->{Outlines});
+}
+
+sub SetOutObj
+{
+ my $o=shift;
+
+ for my $j (1..$#{$o})
+ {
+ my $ono=BuildObj(++$objct,$o->[$j]->[0]);
+ $o->[$j]->[2]=$ono;
+
+ SetOutObj($o->[$j]->[1]) if $#{$o->[$j]->[1]} > -1;
+ }
+}
+
+sub LinkOutObj
+{
+ my $o=shift;
+ my $parent=shift;
+
+ for my $j (1..$#{$o})
+ {
+ my $op=GetObj($o->[$j]->[2]);
+
+ $op->{Next}=$o->[$j+1]->[2] if ($j < $#{$o});
+ $op->{Prev}=$o->[$j-1]->[2] if ($j > 1);
+ $op->{Parent}=$parent;
+
+ if ($#{$o->[$j]->[1]} > -1)
+ {
+ $op->{Count}=$o->[$j]->[1]->[0]->[2]*$o->[$j]->[1]->[0]->[3];# if exists($op->{Count}) and $op->{Count} > 0;
+ $op->{First}=$o->[$j]->[1]->[1]->[2];
+ $op->{Last}=$o->[$j]->[1]->[$#{$o->[$j]->[1]}]->[2];
+ LinkOutObj($o->[$j]->[1],$o->[$j]->[2]);
+ }
+ }
+}
+
+sub GetObj
+{
+ my $ono=shift;
+ ($ono)=split(' ',$ono);
+ return($obj[$ono]->{DATA});
+}
+
+
+
+sub PDFDate
+{
+ my $dt=shift;
+ return(sprintf("D:%04d%02d%02d%02d%02d%02d%+03d'00'",$dt->[5]+1900,$dt->[4]+1,$dt->[3],$dt->[2],$dt->[1],$dt->[0],( localtime time() + 3600*( 12 - (gmtime)[2] ) )[2] - 12));
+}
+
+sub ToPoints
+{
+ my $num=shift;
+ my $unit=shift;
+
+ if ($unit eq 'i')
+ {
+ return($num*72);
+ }
+ elsif ($unit eq 'c')
+ {
+ return int($num*72/2.54);
+ }
+ elsif ($unit eq 'm') # millimetres
+ {
+ return int($num*72/25.4);
+ }
+ elsif ($unit eq 'p')
+ {
+ return($num);
+ }
+ elsif ($unit eq 'P')
+ {
+ return($num*6);
+ }
+ elsif ($unit eq 'z')
+ {
+ return($num/$unitwidth);
+ }
+ else
+ {
+ Msg(1,"Unknown scaling factor '$unit'");
+ }
+}
+
+sub Load_Config
+{
+ open(CFG,"<gropdf_config") or die "Can't open config file: $!";
+
+ while (<CFG>)
+ {
+ chomp;
+ my ($key,$val)=split(/ ?= ?/);
+
+ $cfg{$key}=$val;
+ }
+
+ close(CFG);
+}
+
+sub LoadDownload
+{
+ my $f;
+ my $found=0;
+
+ my (@dirs)=split($cfg{RT_SEP},$fontdir);
+
+ foreach my $dir (@dirs)
+ {
+ $f=undef;
+ OpenFile(\$f,$dir,"download");
+ next if !defined($f);
+ $found++;
+
+ while (<$f>)
+ {
+ chomp;
+ s/#.*$//;
+ next if $_ eq '';
+ my ($foundry,$name,$file)=split(/\t+/);
+ if (substr($file,0,1) eq '*')
+ {
+ next if !$embedall;
+ $file=substr($file,1);
+ }
+
+ $download{"$foundry $name"}=$file;
+ }
+
+ close($f);
+ }
+
+ Msg(1,"Failed to open 'download'") if !$found;
+}
+
+sub OpenFile
+{
+ my $f=shift;
+ my $dirs=shift;
+ my $fnm=shift;
+
+ if (substr($fnm,0,1) eq '/' or substr($fnm,1,1) eq ':') # dos
+ {
+ return if -r "$fnm" and open($$f,"<$fnm");
+ }
+
+ my (@dirs)=split($cfg{RT_SEP},$dirs);
+
+ foreach my $dir (@dirs)
+ {
+ last if -r "$dir/$devnm/$fnm" and open($$f,"<$dir/$devnm/$fnm");
+ }
+}
+
+sub LoadDesc
+{
+ my $f;
+
+ OpenFile(\$f,$fontdir,"DESC");
+ Msg(1,"Failed to open 'DESC'") if !defined($f);
+
+ while (<$f>)
+ {
+ chomp;
+ s/#.*$//;
+ next if $_ eq '';
+ my ($name,$prms)=split(' ',$_,2);
+ $desc{lc($name)}=$prms;
+ }
+
+ close($f);
+}
+
+sub rad { $_[0]*3.14159/180 }
+
+my $InPicRotate=0;
+
+sub do_x
+{
+ my $l=shift;
+ my ($xcmd,@xprm)=split(' ',$l);
+ $xcmd=substr($xcmd,0,1);
+
+ if ($xcmd eq 'T')
+ {
+ Msg(0,"Expecting a pdf pipe (got $xprm[0])") if $xprm[0] ne substr($devnm,3);
+ }
+ elsif ($xcmd eq 'f') # Register Font
+ {
+ $xprm[1]="${Foundry}-$xprm[1]" if $Foundry ne '';
+ LoadFont($xprm[0],$xprm[1]);
+ }
+ elsif ($xcmd eq 'F') # Source File (for errors)
+ {
+ $env{SourceFile}=$xprm[0];
+ }
+ elsif ($xcmd eq 'H') # FontHT
+ {
+ $xprm[0]/=$unitwidth;
+ $xprm[0]=0 if $xprm[0] == $cftsz;
+ $env{FontHT}=$xprm[0];
+ MakeMatrix();
+ }
+ elsif ($xcmd eq 'S') # FontSlant
+ {
+ $env{FontSlant}=$xprm[0];
+ MakeMatrix();
+ }
+ elsif ($xcmd eq 'i') # Initialise
+ {
+ if ($objct == 0)
+ {
+ $objct++;
+ @defaultmb=@mediabox;
+ BuildObj($objct,{'Pages' => BuildObj($objct+1,
+ {'Kids' => [],
+ 'Count' => 0,
+ 'Type' => '/Pages',
+ 'Rotate' => $rot,
+ 'MediaBox' => \@defaultmb,
+ 'Resources' =>
+ {'Font' => {},
+ 'ProcSet' => ['/PDF', '/Text', '/ImageB', '/ImageC', '/ImageI']}
+ }
+ ),
+ 'Type' => '/Catalog'});
+
+ $cat=$obj[$objct]->{DATA};
+ $objct++;
+ $pages=$obj[2]->{DATA};
+ Put("%PDF-1.4\n\x25\xe2\xe3\xcf\xd3\n");
+ }
+ }
+ elsif ($xcmd eq 'X')
+ {
+ # There could be extended args
+ do
+ {{
+ LoadAhead(1);
+ if (substr($ahead[0],0,1) eq '+')
+ {
+ $l.="\n".substr($ahead[0],1);
+ shift(@ahead);
+ }
+ }} until $#ahead==0;
+
+ ($xcmd,@xprm)=split(' ',$l);
+ $xcmd=substr($xcmd,0,1);
+
+ if ($xprm[0]=~m/^(.+:)(.+)/)
+ {
+ splice(@xprm,1,0,$2);
+ $xprm[0]=$1;
+ }
+
+ my $par=join(' ',@xprm[1..$#xprm]);
+
+ if ($xprm[0] eq 'ps:')
+ {
+ if ($xprm[1] eq 'invis')
+ {
+ $suppress=1;
+ }
+ elsif ($xprm[1] eq 'endinvis')
+ {
+ $suppress=0;
+ }
+ elsif ($par=~m/exec gsave currentpoint 2 copy translate (.+) rotate neg exch neg exch translate/)
+ {
+ # This is added by gpic to rotate a single object
+
+ my $theta=-rad($1);
+
+ IsGraphic();
+ my ($curangle,$hyp)=RtoP($xpos,GraphY($ypos));
+ my ($x,$y)=PtoR($theta+$curangle,$hyp);
+ $stream.="q\n".sprintf("%.3f %.3f %.3f %.3f %.3f %.3f cm",cos($theta),sin($theta),-sin($theta),cos($theta),$xpos-$x,GraphY($ypos)-$y)."\n";
+ $InPicRotate=1;
+ }
+ elsif ($par=~m/exec grestore/ and $InPicRotate)
+ {
+ IsGraphic();
+ $stream.="Q\n";
+ $InPicRotate=0;
+ }
+ elsif ($par=~m/exec (\d) setlinejoin/)
+ {
+ IsGraphic();
+ $linejoin=$1;
+ $stream.="$linejoin j\n";
+ }
+ elsif ($par=~m/exec (\d) setlinecap/)
+ {
+ IsGraphic();
+ $linecap=$1;
+ $stream.="$linecap J\n";
+ }
+ elsif ($par=~m/exec %%%%PAUSE/i and !$noslide)
+ {
+ my $trans='BLOCK';
+
+ if ($firstpause)
+ {
+ $trans='PAGE';
+ $firstpause=0;
+ }
+ MakeXO();
+ NewPage($trans);
+ $present=1;
+ }
+ elsif ($par=~m/exec %%%%BEGINONCE/)
+ {
+ if ($noslide)
+ {
+ $suppress=1;
+ }
+ else
+ {
+ my $trans='BLOCK';
+
+ if ($firstpause)
+ {
+ $trans='PAGE';
+ $firstpause=0;
+ }
+ MakeXO();
+ NewPage($trans);
+ $present=1;
+ }
+ }
+ elsif ($par=~m/exec %%%%ENDONCE/)
+ {
+ if ($noslide)
+ {
+ $suppress=0;
+ }
+ else
+ {
+ MakeXO();
+ NewPage('BLOCK');
+ $cat->{PageMode}='/FullScreen';
+ pop(@XOstream);
+ }
+ }
+ elsif ($par=~m/\[(.+) pdfmark/)
+ {
+ my $pdfmark=$1;
+ $pdfmark=~s((\d{4,6}) u)(sprintf("%.1f",$1/$desc{sizescale}))eg;
+ $pdfmark=~s(\\\[u00(..)\])(chr(hex($1)))eg;
+
+ if ($pdfmark=~m/(.+) \/DOCINFO/)
+ {
+ my @xwds=split(' ',"<< $1 >>");
+ my $docinfo=ParsePDFValue(\@xwds);
+
+ foreach my $k (keys %{$docinfo})
+ {
+ $info{$k}=$docinfo->{$k} if $k ne 'Producer';
+ }
+ }
+ elsif ($pdfmark=~m/(.+) \/DOCVIEW/)
+ {
+ my @xwds=split(' ',"<< $1 >>");
+ my $docview=ParsePDFValue(\@xwds);
+
+ foreach my $k (keys %{$docview})
+ {
+ $cat->{$k}=$docview->{$k} if !exists($cat->{$k});
+ }
+ }
+ elsif ($pdfmark=~m/(.+) \/DEST/)
+ {
+ my @xwds=split(' ',"<< $1 >>");
+ my $dest=ParsePDFValue(\@xwds);
+ foreach my $v (@{$dest->{View}})
+ {
+ $v=GraphY(abs($v)) if substr($v,0,1) eq '-';
+ }
+ unshift(@{$dest->{View}},"$cpageno 0 R");
+
+ if (!defined($dests))
+ {
+ $cat->{Dests}=BuildObj(++$objct,{});
+ $dests=$obj[$objct]->{DATA};
+ }
+
+ my $k=substr($dest->{Dest},1);
+ $dests->{$k}=$dest->{View};
+ }
+ elsif ($pdfmark=~m/(.+) \/ANN/)
+ {
+ my $l=$1;
+ $l=~s/Color/C/;
+ $l=~s/Action/A/;
+ $l=~s/Title/T/;
+ $l=~s'/Subtype /URI'/S /URI';
+ my @xwds=split(' ',"<< $l >>");
+ my $annotno=BuildObj(++$objct,ParsePDFValue(\@xwds));
+ my $annot=$obj[$objct];
+ $annot->{DATA}->{Type}='/Annot';
+ FixRect($annot->{DATA}->{Rect}); # Y origin to ll
+ FixPDFColour($annot->{DATA});
+ push(@PageAnnots,$annotno);
+ }
+ elsif ($pdfmark=~m/(.+) \/OUT/)
+ {
+ my $t=$1;
+ $t=~s/\\\) /\\\\\) /g;
+ $t=~s/\\e/\\\\/g;
+ $t=~m/(^.*\/Title \()(.*)(\).*)/;
+ my ($pre,$title,$post)=($1,$2,$3);
+ if ($use_unicode_bookmark &&
+ $title =~ s/\\\[u([0-9A-F_]+)\]/join(
+ '', map { pack "U", hex } split '_', $1
+ )/eg) {
+ $title = join '', map sprintf("\\%o", $_),
+ unpack "C*", encode("utf16", $title);
+ }
+ $title=~s/(?<!\\)\(/\\\(/g;
+ $title=~s/(?<!\\)\)/\\\)/g;
+ my @xwds=split(' ',"<< $pre$title$post >>");
+ my $out=ParsePDFValue(\@xwds);
+
+ my $this=[$out,[]];
+
+ if (exists($out->{Level}))
+ {
+ my $lev=abs($out->{Level});
+ my $levsgn=sgn($out->{Level});
+ delete($out->{Level});
+
+ if ($lev > $thislev)
+ {
+ my $thisoutlev=$curoutlev->[$#{$curoutlev}]->[1];
+ $thisoutlev->[0]=[0,$curoutlev,0,$levsgn];
+ $curoutlev=$thisoutlev;
+ $curoutlevno=$#{$curoutlev};
+ $thislev++;
+ }
+ elsif ($lev < $thislev)
+ {
+ my $openct=$curoutlev->[0]->[2];
+
+ while ($thislev > $lev)
+ {
+ my $nxtoutlev=$curoutlev->[0]->[1];
+ $nxtoutlev->[0]->[2]+=$openct if $curoutlev->[0]->[3]==1;
+ $openct=0 if $nxtoutlev->[0]->[3]==-1;
+ $curoutlev=$nxtoutlev;
+ $thislev--;
+ }
+
+ $curoutlevno=$#{$curoutlev};
+ }
+
+# push(@{$curoutlev},$this);
+ splice(@{$curoutlev},++$curoutlevno,0,$this);
+ $curoutlev->[0]->[2]++;
+ }
+ else
+ {
+ # This code supports old pdfmark.tmac, unused by pdf.tmac
+ while ($curoutlev->[0]->[0] == 0 and defined($curoutlev->[0]->[1]))
+ {
+ $curoutlev=$curoutlev->[0]->[1];
+ }
+
+ $curoutlev->[0]->[0]--;
+ $curoutlev->[0]->[2]++;
+ push(@{$curoutlev},$this);
+
+
+ if (exists($out->{Count}) and $out->{Count} != 0)
+ {
+ push(@{$this->[1]},[abs($out->{Count}),$curoutlev,0,sgn($out->{Count})]);
+ $curoutlev=$this->[1];
+
+ if ($out->{Count} > 0)
+ {
+ my $p=$curoutlev;
+
+ while (defined($p))
+ {
+ $p->[0]->[2]+=$out->{Count};
+ $p=$p->[0]->[1];
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ elsif (lc($xprm[0]) eq 'pdf:')
+ {
+ if (lc($xprm[1]) eq 'import')
+ {
+ my $fil=$xprm[2];
+ my $llx=$xprm[3];
+ my $lly=$xprm[4];
+ my $urx=$xprm[5];
+ my $ury=$xprm[6];
+ my $wid=$xprm[7];
+ my $hgt=$xprm[8]||-1;
+ my $mat=[1,0,0,1,0,0];
+
+ if (!exists($incfil{$fil}))
+ {
+ if ($fil=~m/\.pdf$/)
+ {
+ $incfil{$fil}=LoadPDF($fil,$mat,$wid,$hgt,"import");
+ }
+ elsif ($fil=~m/\.swf$/)
+ {
+ my $xscale=$wid/($urx-$llx+1);
+ my $yscale=($hgt<=0)?$xscale:($hgt/($ury-$lly+1));
+ $hgt=($ury-$lly+1)*$yscale;
+
+ if ($rot)
+ {
+ $mat->[3]=$xscale;
+ $mat->[0]=$yscale;
+ }
+ else
+ {
+ $mat->[0]=$xscale;
+ $mat->[3]=$yscale;
+ }
+
+ $incfil{$fil}=LoadSWF($fil,[$llx,$lly,$urx,$ury],$mat);
+ }
+ else
+ {
+ Msg(0,"Unknown filetype '$fil'");
+ return undef;
+ }
+ }
+
+ if (defined($incfil{$fil}))
+ {
+ IsGraphic();
+ if ($fil=~m/\.pdf$/)
+ {
+ my $bbox=$incfil{$fil}->[1];
+ my $xscale=d3($wid/($bbox->[2]-$bbox->[0]+1));
+ my $yscale=d3(($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1]+1)));
+ $wid=($bbox->[2]-$bbox->[0])*$xscale;
+ $hgt=($bbox->[3]-$bbox->[1])*$yscale;
+ $ypos+=$hgt;
+ $stream.="q $xscale 0 0 $yscale ".PutXY($xpos,$ypos)." cm";
+ $stream.=" 0 1 -1 0 0 0 cm" if $rot;
+ $stream.=" /$incfil{$fil}->[0] Do Q\n";
+ }
+ elsif ($fil=~m/\.swf$/)
+ {
+ $stream.=PutXY($xpos,$ypos)." m /$incfil{$fil} Do\n";
+ }
+ }
+ }
+ elsif (lc($xprm[1]) eq 'pdfpic')
+ {
+ my $fil=$xprm[2];
+ my $flag=uc($xprm[3]||'-L');
+ my $wid=GetPoints($xprm[4])||-1;
+ my $hgt=GetPoints($xprm[5]||-1);
+ my $ll=GetPoints($xprm[6]||0);
+ my $mat=[1,0,0,1,0,0];
+
+ if (!exists($incfil{$fil}))
+ {
+ $incfil{$fil}=LoadPDF($fil,$mat,$wid,$hgt,"pdfpic");
+ }
+
+ if (defined($incfil{$fil}))
+ {
+ IsGraphic();
+ my $bbox=$incfil{$fil}->[1];
+ $wid=($bbox->[2]-$bbox->[0]) if $wid <= 0;
+ my $xscale=d3($wid/($bbox->[2]-$bbox->[0]));
+ my $yscale=d3(($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1])));
+ $xscale=($wid<=0)?$yscale:$xscale;
+ $xscale=$yscale if $yscale < $xscale;
+ $yscale=$xscale if $xscale < $yscale;
+ $wid=($bbox->[2]-$bbox->[0])*$xscale;
+ $hgt=($bbox->[3]-$bbox->[1])*$yscale;
+
+ if ($flag eq '-C' and $ll > $wid)
+ {
+ $xpos=int(($ll-$wid)/2);
+ }
+ elsif ($flag eq '-R' and $ll > $wid)
+ {
+ $xpos=$ll-$wid;
+ }
+
+ $ypos+=$hgt;
+ $stream.="q $xscale 0 0 $yscale ".PutXY($xpos,$ypos)." cm";
+ $stream.=" 0 1 -1 0 0 0 cm" if $rot;
+ $stream.=" /$incfil{$fil}->[0] Do Q\n";
+ }
+ }
+ elsif (lc($xprm[1]) eq 'xrev')
+ {
+ $xrev=!$xrev;
+ }
+ elsif (lc($xprm[1]) eq 'markstart')
+ {
+ $mark={'rst' => ($xprm[2]+$xprm[4])/$unitwidth, 'rsb' => ($xprm[3]-$xprm[4])/$unitwidth, 'xpos' => $xpos-($xprm[4]/$unitwidth),
+ 'ypos' => $ypos, 'lead' => $xprm[4]/$unitwidth, 'pdfmark' => join(' ',@xprm[5..$#xprm])};
+ }
+ elsif (lc($xprm[1]) eq 'markend')
+ {
+ PutHotSpot($xpos) if defined($mark);
+ $mark=undef;
+ }
+ elsif (lc($xprm[1]) eq 'marksuspend')
+ {
+ $suspendmark=$mark;
+ $mark=undef;
+ }
+ elsif (lc($xprm[1]) eq 'markrestart')
+ {
+ $mark=$suspendmark;
+ $suspendmark=undef;
+ }
+ elsif (lc($xprm[1]) eq 'pagename')
+ {
+ if ($pginsert > -1)
+ {
+ $pgnames{$xprm[2]}=$pages->{Kids}->[$pginsert];
+ }
+ else
+ {
+ $pgnames{$xprm[2]}='top';
+ }
+ }
+ elsif (lc($xprm[1]) eq 'switchtopage')
+ {
+ my $ba=$xprm[2];
+ my $want=$xprm[3];
+
+ if ($pginsert > -1)
+ {
+ if (!defined($want) or $want eq '')
+ {
+ # no before/after
+ $want=$ba;
+ $ba='before';
+ }
+
+ if (!defined($ba) or $ba eq '' or $want eq 'bottom')
+ {
+ $pginsert=$#{$pages->{Kids}};
+ }
+ elsif ($want eq 'top')
+ {
+ $pginsert=-1;
+ }
+ else
+ {
+ if (exists($pgnames{$want}))
+ {
+ my $ref=$pgnames{$want};
+
+ if ($ref eq 'top')
+ {
+ $pginsert=-1;
+ }
+ else
+ {
+ FIND: while (1)
+ {
+ foreach my $j (0..$#{$pages->{Kids}})
+ {
+ if ($ref eq $pages->{Kids}->[$j])
+ {
+ if ($ba eq 'before')
+ {
+ $pginsert=$j-1;
+ last FIND;
+ }
+ elsif ($ba eq 'after')
+ {
+ $pginsert=$j;
+ last FIND;
+ }
+ else
+ {
+ Msg(0,"Parameter must be top|bottom|before|after not '$ba'");
+ last FIND;
+ }
+ }
+
+ }
+
+ Msg(0,"Can't find page ref '$ref'");
+ last FIND
+
+ }
+ }
+ }
+ else
+ {
+ Msg(0,"Can't find page named '$want'");
+ }
+ }
+
+ if ($pginsert < 0)
+ {
+ ($curoutlev,$curoutlevno,$thislev)=(\@outlev,0,1);
+ }
+ else
+ {
+ ($curoutlev,$curoutlevno,$thislev)=(@{$outlines[$pginsert]});
+ }
+ }
+ }
+ elsif (lc($xprm[1]) eq 'transition' and !$noslide)
+ {
+ if (uc($xprm[2]) eq 'PAGE' or uc($xprm[2] eq 'SLIDE'))
+ {
+ $transition->{PAGE}->{S}='/'.ucfirst($xprm[3]) if $xprm[3] and $xprm[3] ne '.';
+ $transition->{PAGE}->{D}=$xprm[4] if $xprm[4] and $xprm[4] ne '.';
+ $transition->{PAGE}->{Dm}='/'.$xprm[5] if $xprm[5] and $xprm[5] ne '.';
+ $transition->{PAGE}->{M}='/'.$xprm[6] if $xprm[6] and $xprm[6] ne '.';
+ $xprm[7]='/None' if $xprm[7] and uc($xprm[7]) eq 'NONE';
+ $transition->{PAGE}->{Di}=$xprm[7] if $xprm[7] and $xprm[7] ne '.';
+ $transition->{PAGE}->{SS}=$xprm[8] if $xprm[8] and $xprm[8] ne '.';
+ $transition->{PAGE}->{B}=$xprm[9] if $xprm[9] and $xprm[9] ne '.';
+ }
+ elsif (uc($xprm[2]) eq 'BLOCK')
+ {
+ $transition->{BLOCK}->{S}='/'.ucfirst($xprm[3]) if $xprm[3] and $xprm[3] ne '.';
+ $transition->{BLOCK}->{D}=$xprm[4] if $xprm[4] and $xprm[4] ne '.';
+ $transition->{BLOCK}->{Dm}='/'.$xprm[5] if $xprm[5] and $xprm[5] ne '.';
+ $transition->{BLOCK}->{M}='/'.$xprm[6] if $xprm[6] and $xprm[6] ne '.';
+ $xprm[7]='/None' if $xprm[7] and uc($xprm[7]) eq 'NONE';
+ $transition->{BLOCK}->{Di}=$xprm[7] if $xprm[7] and $xprm[7] ne '.';
+ $transition->{BLOCK}->{SS}=$xprm[8] if $xprm[8] and $xprm[8] ne '.';
+ $transition->{BLOCK}->{B}=$xprm[9] if $xprm[9] and $xprm[9] ne '.';
+ }
+
+ $present=1;
+ }
+ }
+ elsif (lc(substr($xprm[0],0,9)) eq 'papersize')
+ {
+ my ($px,$py)=split(',',substr($xprm[0],10));
+ $px=GetPoints($px);
+ $py=GetPoints($py);
+ @mediabox=(0,0,$px,$py);
+ my @mb=@mediabox;
+ $matrixchg=1;
+ $custompaper=1;
+ $cpage->{MediaBox}=\@mb;
+ }
+ }
+}
+
+sub FixPDFColour
+{
+ my $o=shift;
+ my $a=$o->{C};
+ my @r=();
+ my $c=$a->[0];
+
+ if ($#{$a}==3)
+ {
+ if ($c > 1)
+ {
+ foreach my $j (0..2)
+ {
+ push(@r,sprintf("%1.3f",$a->[$j]/0xffff));
+ }
+
+ $o->{C}=\@r;
+ }
+ }
+ elsif (substr($c,0,1) eq '#')
+ {
+ if (length($c) == 7)
+ {
+ foreach my $j (0..2)
+ {
+ push(@r,sprintf("%1.3f",hex(substr($c,$j*2+1,2))/0xff));
+ }
+
+ $o->{C}=\@r;
+ }
+ elsif (length($c) == 14)
+ {
+ foreach my $j (0..2)
+ {
+ push(@r,sprintf("%1.3f",hex(substr($c,$j*4+2,4))/0xffff));
+ }
+
+ $o->{C}=\@r;
+ }
+ }
+}
+
+sub PutHotSpot
+{
+ my $endx=shift;
+ my $l=$mark->{pdfmark};
+ $l=~s/Color/C/;
+ $l=~s/Action/A/;
+ $l=~s'/Subtype /URI'/S /URI';
+ $l=~s(\\\[u00(..)\])(chr(hex($1)))eg;
+ my @xwds=split(' ',"<< $l >>");
+ my $annotno=BuildObj(++$objct,ParsePDFValue(\@xwds));
+ my $annot=$obj[$objct];
+ $annot->{DATA}->{Type}='/Annot';
+ $annot->{DATA}->{Rect}=[$mark->{xpos},$mark->{ypos}-$mark->{rsb},$endx+$mark->{lead},$mark->{ypos}-$mark->{rst}];
+ FixPDFColour($annot->{DATA});
+ FixRect($annot->{DATA}->{Rect}); # Y origin to ll
+ push(@PageAnnots,$annotno);
+}
+
+sub sgn
+{
+ return(1) if $_[0] > 0;
+ return(-1) if $_[0] < 0;
+ return(0);
+}
+
+sub FixRect
+{
+ my $rect=shift;
+
+ return if !defined($rect);
+ $rect->[1]=GraphY($rect->[1]);
+ $rect->[3]=GraphY($rect->[3]);
+}
+
+sub GetPoints
+{
+ my $val=shift;
+
+ $val=ToPoints($1,$2) if ($val and $val=~m/(-?[\d.]+)([cipnz])/);
+
+ return $val;
+}
+
+# Although the PDF reference mentions XObject/Form as a way of incorporating an external PDF page into
+# the current PDF, it seems not to work with any current PDF reader (although I am told (by Leonard Rosenthol,
+# who helped author the PDF ISO standard) that Acroread 9 does support it, empiorical observation shows otherwise!!).
+# So... do it the hard way - full PDF parser and merge required objects!!!
+
+# sub BuildRef
+# {
+# my $fil=shift;
+# my $bbox=shift;
+# my $mat=shift;
+# my $wid=($bbox->[2]-$bbox->[0])*$mat->[0];
+# my $hgt=($bbox->[3]-$bbox->[1])*$mat->[3];
+#
+# if (!open(PDF,"<$fil"))
+# {
+# Msg(0,"Failed to open '$fil'");
+# return(undef);
+# }
+#
+# my (@f)=(<PDF>);
+#
+# close(PDF);
+#
+# $objct++;
+# my $xonm="XO$objct";
+#
+# $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($objct,{'Type' => '/XObject',
+# 'Subtype' => '/Form',
+# 'BBox' => $bbox,
+# 'Matrix' => $mat,
+# 'Resources' => $pages->{'Resources'},
+# 'Ref' => {'Page' => '1',
+# 'F' => BuildObj($objct+1,{'Type' => '/Filespec',
+# 'F' => "($fil)",
+# 'EF' => {'F' => BuildObj($objct+2,{'Type' => '/EmbeddedFile'})}
+# })
+# }
+# });
+#
+# $obj[$objct]->{STREAM}="q 1 0 0 1 0 0 cm
+# q BT
+# 1 0 0 1 0 0 Tm
+# .5 g .5 G
+# /F5 20 Tf
+# (Proxy) Tj
+# ET Q
+# 0 0 m 72 0 l s
+# Q\n";
+#
+# # $obj[$objct]->{STREAM}=PutXY($xpos,$ypos)." m ".PutXY($xpos+$wid,$ypos)." l ".PutXY($xpos+$wid,$ypos+$hgt)." l ".PutXY($xpos,$ypos+$hgt)." l f\n";
+# $obj[$objct+2]->{STREAM}=join('',@f);
+# PutObj($objct);
+# PutObj($objct+1);
+# PutObj($objct+2);
+# $objct+=2;
+# return($xonm);
+# }
+
+sub LoadSWF
+{
+ my $fil=shift;
+ my $bbox=shift;
+ my $mat=shift;
+ my $wid=($bbox->[2]-$bbox->[0])*$mat->[0];
+ my $hgt=($bbox->[3]-$bbox->[1])*$mat->[3];
+ my (@path)=split('/',$fil);
+ my $node=pop(@path);
+
+ if (!open(PDF,"<$fil"))
+ {
+ Msg(0,"Failed to open '$fil'");
+ return(undef);
+ }
+
+ my (@f)=(<PDF>);
+
+ close(PDF);
+
+ $objct++;
+ my $xonm="XO$objct";
+
+ $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($objct,{'Type' => '/XObject', 'BBox' => $bbox, 'Matrix' => $mat, 'FormType' => 1, 'Subtype' => '/Form', 'Length' => 0, 'Type' => "/XObject"});
+ $obj[$objct]->{STREAM}='';
+ PutObj($objct);
+ $objct++;
+ my $asset=BuildObj($objct,{'EF' => {'F' => BuildObj($objct+1,{})},
+ 'F' => "($node)",
+ 'Type' => '/Filespec',
+ 'UF' => "($node)"});
+
+ PutObj($objct);
+ $objct++;
+ $obj[$objct]->{STREAM}=join('',@f);
+ PutObj($objct);
+ $objct++;
+ my $config=BuildObj($objct,{'Instances' => [BuildObj($objct+1,{'Params' => { 'Binding' => '/Background'}, 'Asset' => $asset})],
+ 'Subtype' => '/Flash'});
+
+ PutObj($objct);
+ $objct++;
+ PutObj($objct);
+ $objct++;
+
+ my ($x,$y)=split(' ',PutXY($xpos,$ypos));
+
+ push(@{$cpage->{Annots}},BuildObj($objct,{'RichMediaContent' => {'Subtype' => '/Flash', 'Configurations' => [$config], 'Assets' => {'Names' => [ "($node)", $asset ] }},
+ 'P' => "$cpageno 0 R",
+ 'RichMediaSettings' => { 'Deactivation' => { 'Condition' => '/PI',
+ 'Type' => '/RichMediaDeactivation'},
+ 'Activation' => { 'Condition' => '/PV',
+ 'Type' => '/RichMediaActivation'}},
+ 'F' => 68,
+ 'Subtype' => '/RichMedia',
+ 'Type' => '/Annot',
+ 'Rect' => "[ $x $y ".($x+$wid)." ".($y+$hgt)." ]",
+ 'Border' => [0,0,0]}));
+
+ PutObj($objct);
+
+ return $xonm;
+}
+
+sub OpenInc
+{
+ my $fn=shift;
+ my $fnm=$fn;
+ my $F;
+
+ if (substr($fnm,0,1) eq '/' or substr($fnm,1,1) eq ':') # dos
+ {
+ if (-r $fnm and open($F,"<$fnm"))
+ {
+ return($F,$fnm);
+ }
+ }
+ else
+ {
+ foreach my $dir (@idirs)
+ {
+ $fnm="$dir/$fn";
+
+ if (-r "$fnm" and open($F,"<$fnm"))
+ {
+ return($F,$fnm);
+ }
+ }
+ }
+
+ return(undef,$fn);
+}
+
+sub LoadPDF
+{
+ my $pdfnm=shift;
+ my $mat=shift;
+ my $wid=shift;
+ my $hgt=shift;
+ my $type=shift;
+ my $pdf;
+ my $pdftxt='';
+ my $strmlen=0;
+ my $curobj=-1;
+ my $instream=0;
+ my $cont;
+ my $adj=0;
+ my $keepsep=$/;
+
+ my ($PD,$PDnm)=OpenInc($pdfnm);
+
+ if (!defined($PD))
+ {
+ Msg(0,"Failed to open PDF '$pdfnm'");
+ return undef;
+ }
+
+ my $hdr=<$PD>;
+
+ $/="\r",$adj=1 if (length($hdr) > 10);
+
+ while (<$PD>)
+ {
+ chomp;
+
+ s/\n//;
+
+ if (m/endstream(\s+.*)?$/)
+ {
+ $instream=0;
+ $_="endstream";
+ $_.=$1 if defined($1)
+ }
+
+ next if $instream;
+
+ if (m'/Length\s+(\d+)(\s+\d+\s+R)?')
+ {
+ if (!defined($2))
+ {
+ $strmlen=$1;
+ }
+ else
+ {
+ $strmlen=0;
+ }
+ }
+
+ if (m'^(\d+) \d+ obj')
+ {
+ $curobj=$1;
+ $pdf->[$curobj]->{OBJ}=undef;
+ }
+
+ if (m'stream\s*$' and ! m/^endstream/)
+ {
+ if ($curobj > -1)
+ {
+ $pdf->[$curobj]->{STREAMPOS}=[tell($PD)+$adj,$strmlen];
+ seek($PD,$strmlen,1);
+ $instream=1;
+ }
+ else
+ {
+ Msg(0,"Parsing PDF '$pdfnm' failed");
+ return undef;
+ }
+ }
+
+ $pdftxt.=$_.' ';
+ }
+
+ close($PD);
+
+ open(PD,"<$PDnm");
+# $pdftxt=~s/\]/ \]/g;
+ my (@pdfwds)=split(' ',$pdftxt);
+ my $wd;
+
+ while ($wd=nextwd(\@pdfwds),length($wd))
+ {
+ if ($wd=~m/\d+/ and defined($pdfwds[1]) and $pdfwds[1]=~m/^obj(.*)/)
+ {
+ $curobj=$wd;
+ shift(@pdfwds); shift(@pdfwds);
+ unshift(@pdfwds,$1) if defined($1) and length($1);
+ $pdf->[$curobj]->{OBJ}=ParsePDFObj(\@pdfwds);
+ }
+ elsif ($wd eq 'trailer' and !exists($pdf->[0]->{OBJ}))
+ {
+ $pdf->[0]->{OBJ}=ParsePDFObj(\@pdfwds);
+ }
+ else
+ {
+# print "Skip '$wd'\n";
+ }
+ }
+
+ my $catalog=${$pdf->[0]->{OBJ}->{Root}};
+ my $page=FindPage(1,$pdf);
+ my $xobj=++$objct;
+
+ # Load the streamas
+
+ foreach my $o (@{$pdf})
+ {
+ if (exists($o->{STREAMPOS}))
+ {
+ my $l;
+
+ $l=$o->{OBJ}->{Length} if exists($o->{OBJ}->{Length});
+
+ $l=$pdf->[$$l]->{OBJ} if (defined($l) && ref($l) eq 'OBJREF');
+
+ Msg(1,"Unable to determine length of stream \@$o->{STREAMPOS}->[0]") if !defined($l);
+
+ sysseek(PD,$o->{STREAMPOS}->[0],0);
+ Msg(0,'Failed to read all the stream') if $l != sysread(PD,$o->{STREAM},$l);
+
+ if ($gotzlib and exists($o->{OBJ}->{'Filter'}) and $o->{OBJ}->{'Filter'} eq '/FlateDecode')
+ {
+ $o->{STREAM}=Compress::Zlib::uncompress($o->{STREAM});
+ delete($o->{OBJ }->{'Filter'});
+ }
+ }
+ }
+
+ close(PD);
+
+ # Find BBox
+ my $BBox;
+ my $insmap={};
+
+ foreach my $k (qw( MediaBox ArtBox TrimBox BleedBox CropBox ))
+ {
+ $BBox=FindKey($pdf,$page,$k);
+ last if $BBox;
+ }
+
+ $BBox=[0,0,595,842] if !defined($BBox);
+
+ $wid=($BBox->[2]-$BBox->[0]+1) if $wid==0;
+ my $xscale=d3(abs($wid)/($BBox->[2]-$BBox->[0]+1));
+ my $yscale=d3(($hgt<=0)?$xscale:(abs($hgt)/($BBox->[3]-$BBox->[1]+1)));
+ $hgt=($BBox->[3]-$BBox->[1]+1)*$yscale;
+
+ if ($type eq "import")
+ {
+ $mat->[0]=$xscale;
+ $mat->[3]=$yscale;
+ }
+
+ # Find Resource
+
+ my $res=FindKey($pdf,$page,'Resources');
+ my $xonm="XO$xobj";
+
+ # Map inserted objects to current PDF
+
+ MapInsValue($pdf,$page,'',$insmap,$xobj,$pdf->[$page]->{OBJ});
+#
+# Many PDFs include 'Resources' at the 'Page' level but if 'Resources' is held at a higher level (i.e 'Pages')
+# then we need to include its objects as well.
+#
+ MapInsValue($pdf,$page,'',$insmap,$xobj,$res) if !exists($pdf->[$page]->{OBJ}->{Resources});
+
+ # Copy Resources
+
+ my %incres=%{$res};
+
+ $incres{ProcSet}=['/PDF', '/Text', '/ImageB', '/ImageC', '/ImageI'];
+
+ ($mat->[4],$mat->[5])=split(' ',PutXY($xpos,$ypos));
+ $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($xobj,{'Type' => '/XObject', 'BBox' => $BBox, 'Name' => "/$xonm", 'FormType' => 1, 'Subtype' => '/Form', 'Length' => 0, 'Type' => "/XObject", 'Resources' => \%incres});
+
+ BuildStream($xobj,$pdf,$pdf->[$page]->{OBJ}->{Contents});
+
+ $/=$keepsep;
+ return([$xonm,$BBox] );
+}
+
+sub BuildStream
+{
+ my $xobj=shift;
+ my $pdf=shift;
+ my $val=shift;
+ my $strm='';
+ my $objs;
+ my $refval=ref($val);
+
+ if ($refval eq 'OBJREF')
+ {
+ push(@{$objs}, $val);
+ }
+ elsif ($refval eq 'ARRAY')
+ {
+ $objs=$val;
+ }
+ else
+ {
+ Msg(0,"unexpected 'Contents'");
+ }
+
+ foreach my $o (@{$objs})
+ {
+ $strm.="\n" if $strm;
+ $strm.=$pdf->[$$o]->{STREAM} if exists($pdf->[$$o]->{STREAM});
+ }
+
+ $obj[$xobj]->{STREAM}=$strm;
+}
+
+
+sub MapInsHash
+{
+ my $pdf=shift;
+ my $o=shift;
+ my $insmap=shift;
+ my $parent=shift;
+ my $val=shift;
+
+
+ foreach my $k (keys(%{$val}))
+ {
+ MapInsValue($pdf,$o,$k,$insmap,$parent,$val->{$k}) if $k ne 'Contents';
+ }
+}
+
+sub MapInsValue
+{
+ my $pdf=shift;
+ my $o=shift;
+ my $k=shift;
+ my $insmap=shift;
+ my $parent=shift;
+ my $val=shift;
+ my $refval=ref($val);
+
+ if ($refval eq 'OBJREF')
+ {
+ if ($k ne 'Parent')
+ {
+ if (!exists($insmap->{IMP}->{$$val}))
+ {
+ $objct++;
+ $insmap->{CUR}->{$objct}=$$val;
+ $insmap->{IMP}->{$$val}=$objct;
+ $obj[$objct]->{DATA}=$pdf->[$$val]->{OBJ};
+ $obj[$objct]->{STREAM}=$pdf->[$$val]->{STREAM} if exists($pdf->[$$val]->{STREAM});
+ MapInsValue($pdf,$$val,'',$insmap,$o,$pdf->[$$val]->{OBJ});
+ }
+
+ $$val=$insmap->{IMP}->{$$val};
+ }
+ else
+ {
+ $$val=$parent;
+ }
+ }
+ elsif ($refval eq 'ARRAY')
+ {
+ foreach my $v (@{$val})
+ {
+ MapInsValue($pdf,$o,'',$insmap,$parent,$v)
+ }
+ }
+ elsif ($refval eq 'HASH')
+ {
+ MapInsHash($pdf,$o,$insmap,$parent,$val);
+ }
+
+}
+
+sub FindKey
+{
+ my $pdf=shift;
+ my $page=shift;
+ my $k=shift;
+
+ if (exists($pdf->[$page]->{OBJ}->{$k}))
+ {
+ my $val=$pdf->[$page]->{OBJ}->{$k};
+ $val=$pdf->[$$val]->{OBJ} if ref($val) eq 'OBJREF';
+ return($val);
+ }
+ else
+ {
+ if (exists($pdf->[$page]->{OBJ}->{Parent}))
+ {
+ return(FindKey($pdf,${$pdf->[$page]->{OBJ}->{Parent}},$k));
+ }
+ }
+
+ return(undef);
+}
+
+sub FindPage
+{
+ my $wantpg=shift;
+ my $pdf=shift;
+ my $catalog=${$pdf->[0]->{OBJ}->{Root}};
+ my $pages=${$pdf->[$catalog]->{OBJ}->{Pages}};
+
+ return(NextPage($pdf,$pages,\$wantpg));
+}
+
+sub NextPage
+{
+ my $pdf=shift;
+ my $pages=shift;
+ my $wantpg=shift;
+ my $ret;
+
+ if ($pdf->[$pages]->{OBJ}->{Type} eq '/Pages')
+ {
+ foreach my $kid (@{$pdf->[$pages]->{OBJ}->{Kids}})
+ {
+ $ret=NextPage($pdf,$$kid,$wantpg);
+ last if $$wantpg<=0;
+ }
+ }
+ elsif ($pdf->[$pages]->{OBJ}->{Type} eq '/Page')
+ {
+ $$wantpg--;
+ $ret=$pages;
+ }
+
+ return($ret);
+}
+
+sub nextwd
+{
+ my $pdfwds=shift;
+
+ my $wd=shift(@{$pdfwds});
+
+ return('') if !defined($wd);
+
+ if ($wd=~m/^(.*?)(<<|>>|(?:(?<!\\)\[|\]))(.*)/)
+ {
+ if (defined($1) and length($1))
+ {
+ unshift(@{$pdfwds},$3) if defined($3) and length($3);
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ else
+ {
+ unshift(@{$pdfwds},$3) if defined($3) and length($3);
+ $wd=$2;
+ }
+ }
+
+ return($wd);
+}
+
+sub ParsePDFObj
+{
+
+ my $pdfwds=shift;
+ my $rtn;
+ my $wd;
+
+ while ($wd=nextwd($pdfwds),length($wd))
+ {
+ if ($wd eq 'stream' or $wd eq 'endstream')
+ {
+ next;
+ }
+ elsif ($wd eq 'endobj' or $wd eq 'startxref')
+ {
+ last;
+ }
+ else
+ {
+ unshift(@{$pdfwds},$wd);
+ $rtn=ParsePDFValue($pdfwds);
+ }
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFHash
+{
+ my $pdfwds=shift;
+ my $rtn={};
+ my $wd;
+
+ while ($wd=nextwd($pdfwds),length($wd))
+ {
+ if ($wd eq '>>')
+ {
+ last;
+ }
+
+ my (@w)=split('/',$wd,3);
+
+ if ($w[0])
+ {
+ Msg(0,"PDF Dict Key '$wd' does not start with '/'");
+ exit 1;
+ }
+ else
+ {
+ unshift(@{$pdfwds},"/$w[2]") if $w[2];
+ $wd=$w[1];
+ (@w)=split('\(',$wd,2);
+ $wd=$w[0];
+ unshift(@{$pdfwds},"($w[1]") if defined($w[1]);
+ (@w)=split('\<',$wd,2);
+ $wd=$w[0];
+ unshift(@{$pdfwds},"<$w[1]") if defined($w[1]);
+
+ $rtn->{$wd}=ParsePDFValue($pdfwds);
+ }
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFValue
+{
+ my $pdfwds=shift;
+ my $rtn;
+ my $wd=nextwd($pdfwds);
+
+ if ($wd=~m/^\d+$/ and $pdfwds->[0]=~m/^\d+$/ and $pdfwds->[1]=~m/^R(\]|\>|\/)?/)
+ {
+ shift(@{$pdfwds});
+ if (defined($1) and length($1))
+ {
+ $pdfwds->[0]=substr($pdfwds->[0],1);
+ }
+ else
+ {
+ shift(@{$pdfwds});
+ }
+ return(bless(\$wd,'OBJREF'));
+ }
+
+ if ($wd eq '<<')
+ {
+ return(ParsePDFHash($pdfwds));
+ }
+
+ if ($wd eq '[')
+ {
+ return(ParsePDFArray($pdfwds));
+ }
+
+ if ($wd=~m/(.*?)(\(.*)$/)
+ {
+ if (defined($1) and length($1))
+ {
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ else
+ {
+ return(ParsePDFString($wd,$pdfwds));
+ }
+ }
+
+ if ($wd=~m/(.*?)(\<.*)$/)
+ {
+ if (defined($1) and length($1))
+ {
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ else
+ {
+ return(ParsePDFHexString($wd,$pdfwds));
+ }
+ }
+
+ if ($wd=~m/(.+?)(\/.*)$/)
+ {
+ if (defined($2) and length($2))
+ {
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ }
+
+ return($wd);
+}
+
+sub ParsePDFString
+{
+ my $wd=shift;
+ my $rtn='';
+ my $pdfwds=shift;
+ my $lev=0;
+
+ while (length($wd))
+ {
+ $rtn.=' ' if length($rtn);
+
+ while ($wd=~m/(?<!\\)\(/g) {$lev++;}
+ while ($wd=~m/(?<!\\)\)/g) {$lev--;}
+
+
+ if ($lev<=0 and $wd=~m/^(.*?\))([^)]+)$/)
+ {
+ unshift(@{$pdfwds},$2) if defined($2) and length($2);
+ $wd=$1;
+ }
+
+ $rtn.=$wd;
+
+ last if $lev <= 0;
+
+ $wd=nextwd($pdfwds);
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFHexString
+{
+ my $wd=shift;
+ my $rtn='';
+ my $pdfwds=shift;
+ my $lev=0;
+
+ if ($wd=~m/^(<.+?>)(.*)/)
+ {
+ unshift(@{$pdfwds},$2) if defined($2) and length($2);
+ $rtn=$1;
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFArray
+{
+ my $pdfwds=shift;
+ my $rtn=[];
+ my $wd;
+
+ while (1)
+ {
+ $wd=ParsePDFValue($pdfwds);
+ last if $wd eq ']' or length($wd)==0;
+ push(@{$rtn},$wd);
+ }
+
+ return($rtn);
+}
+
+sub Msg
+{
+ my ($lev,$msg)=@_;
+
+ print STDERR "$env{SourceFile}: " if exists($env{SourceFile});
+ print STDERR "$msg\n";
+ exit 1 if $lev;
+}
+
+sub PutXY
+{
+ my ($x,$y)=(@_);
+
+ if ($frot)
+ {
+ return(d3($y)." ".d3($x));
+ }
+ else
+ {
+ $y=$mediabox[3]-$y;
+ return(d3($x)." ".d3($y));
+ }
+}
+
+sub GraphY
+{
+ my $y=shift;
+
+ if ($frot)
+ {
+ return($y);
+ }
+ else
+ {
+ return($mediabox[3]-$y);
+ }
+}
+
+sub Put
+{
+ my $msg=shift;
+
+ print $msg;
+ $fct+=length($msg);
+}
+
+sub PutObj
+{
+ my $ono=shift;
+ my $msg="$ono 0 obj ";
+ $obj[$ono]->{XREF}=$fct;
+ if (exists($obj[$ono]->{STREAM}))
+ {
+ if ($gotzlib && !$debug && !exists($obj[$ono]->{DATA}->{'Filter'}))
+ {
+ $obj[$ono]->{STREAM}=Compress::Zlib::compress($obj[$ono]->{STREAM});
+ $obj[$ono]->{DATA}->{'Filter'}='/FlateDecode';
+ }
+
+ $obj[$ono]->{DATA}->{'Length'}=length($obj[$ono]->{STREAM});
+ }
+ PutField(\$msg,$obj[$ono]->{DATA});
+ PutStream(\$msg,$ono) if exists($obj[$ono]->{STREAM});
+ Put($msg."endobj\n");
+}
+
+sub PutStream
+{
+ my $msg=shift;
+ my $ono=shift;
+
+ # We could 'flate' here
+ $$msg.="stream\n$obj[$ono]->{STREAM}endstream\n";
+}
+
+sub PutField
+{
+ my $pmsg=shift;
+ my $fld=shift;
+ my $term=shift||"\n";
+ my $typ=ref($fld);
+
+ if ($typ eq '')
+ {
+ $$pmsg.="$fld$term";
+ }
+ elsif ($typ eq 'ARRAY')
+ {
+ $$pmsg.='[';
+ foreach my $cell (@{$fld})
+ {
+ PutField($pmsg,$cell,' ');
+ }
+ $$pmsg.="]$term";
+ }
+ elsif ($typ eq 'HASH')
+ {
+ $$pmsg.='<< ';
+ foreach my $key (sort keys %{$fld})
+ {
+ $$pmsg.="/$key ";
+ PutField($pmsg,$fld->{$key});
+ }
+ $$pmsg.=">>$term";
+ }
+ elsif ($typ eq 'OBJREF')
+ {
+ $$pmsg.="$$fld 0 R$term";
+ }
+}
+
+sub BuildObj
+{
+ my $ono=shift;
+ my $val=shift;
+
+ $obj[$ono]->{DATA}=$val;
+
+ return("$ono 0 R ");
+}
+
+sub LoadFont
+{
+ my $fontno=shift;
+ my $fontnm=shift;
+ my $ofontnm=$fontnm;
+
+ return $fontlst{$fontno}->{OBJ} if (exists($fontlst{$fontno}));
+
+ my $f;
+ OpenFile(\$f,$fontdir,"$fontnm");
+
+ if (!defined($f) and $Foundry)
+ {
+ # Try with no foundry
+ $fontnm=~s/.*?-//;
+ OpenFile(\$f,$fontdir,$fontnm);
+ }
+
+ Msg(1,"Failed to open font '$ofontnm'") if !defined($f);
+
+ my $foundry='';
+ $foundry=$1 if $fontnm=~m/^(.*?)-/;
+ my $stg=1;
+ my %fnt;
+ my @fntbbox=(0,0,0,0);
+ my $capheight=0;
+ my $lastchr=0;
+ my $lastnm;
+ my $t1flags=0;
+ my $fixwid=-1;
+ my $ascent=0;
+ my $charset='';
+
+ $fnt{NM} = 'F'.$fontno;
+ $fnt{SUPPL} = 0;
+ my @remap = (128..138, 145..255); # ignore ligatures. see text.enc.
+ $fnt{REMAP} = \@remap;
+ my @used;
+ $used[$_] = 1 for 0..255;
+ $used[$_] = 0 for @remap;
+
+ while (<$f>)
+ {
+ chomp;
+
+ s/^ +//;
+ s/^#.*// if $stg == 1;
+ next if $_ eq '';
+
+ if ($stg == 1)
+ {
+ my ($key,$val)=split(' ',$_,2);
+
+ $key=lc($key);
+ $stg=2,next if $key eq 'kernpairs';
+ $stg=3,next if lc($_) eq 'charset';
+
+ $fnt{$key}=$val
+ }
+ elsif ($stg == 2)
+ {
+ $stg=3,next if lc($_) eq 'charset';
+
+ my ($ch1,$ch2,$k)=split;
+# $fnt{KERN}->{$ch1}->{$ch2}=$k;
+ }
+ else
+ {
+ my (@r)=split;
+ my (@p)=split(',',$r[1]);
+
+ if ($r[1] eq '"')
+ {
+ $fnt{NAM}->{$r[0]}=$fnt{NAM}->{$lastnm};
+ next;
+ }
+
+ $r[0]='u0020' if $r[3] == 32;
+ $r[0]="u00".hex($r[3]) if $r[0] eq '---';
+# next if $r[3] >255;
+ if ($fnt{NAM}->{$r[0]}) {
+ #Msg(0, "$r[0], $r[3], /$r[4] - dup in $ofontnm") if $debug;
+ next;
+ }
+ $fnt{NAM}->{$r[0]}=[$p[0],$r[3],'/'.$r[4],$r[3],0];
+ $fnt{NAM}->{$r[0]}->[SUPPL] = 0;
+ $fnt{NAM}->{$r[0]}->[USED] = $used[$r[3]];
+ $fnt{NO}->[$r[3]]=[$r[0],$r[0]];
+ $lastnm=$r[0];
+ $lastchr=$r[3] if $r[3] > $lastchr;
+ $fixwid=$p[0] if $fixwid == -1;
+ $fixwid=-2 if $fixwid > 0 and $p[0] != $fixwid;
+
+ $fntbbox[1]=-$p[2] if defined($p[2]) and -$p[2] < $fntbbox[1];
+ $fntbbox[2]=$p[0] if $p[0] > $fntbbox[2];
+ $fntbbox[3]=$p[1] if defined($p[1]) and $p[1] > $fntbbox[3];
+ $ascent=$p[1] if defined($p[1]) and $p[1] > $ascent and $r[3] >= 32 and $r[3] < 128;
+ $charset.='/'.$r[4] if defined($r[4]);
+ $capheight=$p[1] if length($r[4]) == 1 and $r[4] ge 'A' and $r[4] le 'Z' and $p[1] > $capheight;
+ }
+ }
+
+ close($f);
+
+ foreach my $j (0..$lastchr)
+ {
+ $fnt{NO}->[$j]=['',''] if !defined($fnt{NO}->[$j]);
+ }
+
+ my $fno=0;
+ my $slant=0;
+ $fnt{DIFF}=[];
+ $fnt{WIDTH}=[];
+ $fnt{NAM}->{''}=[0,-1,'/.notdef',-1,0];
+ $fnt{NAM}->{''}->[SUPPL] = 0;
+ $slant=-$fnt{'slant'} if exists($fnt{'slant'});
+ $fnt{'spacewidth'}=700 if !exists($fnt{'spacewidth'});
+
+ $t1flags|=2**0 if $fixwid > -1;
+ $t1flags|=(exists($fnt{'special'}))?2**2:2**5;
+ $t1flags|=2**6 if $slant != 0;
+ my $fontkey="$foundry $fnt{internalname}";
+
+ if (exists($download{$fontkey}))
+ {
+ # Not a Base Font
+ my ($l1,$l2,$l3,$t1stream)=GetType1($download{$fontkey});
+ Msg(0,"Incorrect font format for '$fontkey' ($l1)") if !defined($t1stream);
+ $fno=++$objct;
+ $fontlst{$fontno}->{OBJ}=BuildObj($objct,
+ {'Type' => '/Font',
+ 'Subtype' => '/Type1',
+ 'BaseFont' => '/'.$fnt{internalname},
+ 'Widths' => $fnt{WIDTH},
+ 'FirstChar' => 0,
+ 'LastChar' => $lastchr,
+ 'Encoding' => BuildObj($objct+1,
+ {'Type' => '/Encoding',
+ 'Differences' => $fnt{DIFF}
+ }
+ ),
+ 'FontDescriptor' => BuildObj($objct+2,
+ {'Type' => '/FontDescriptor',
+ 'FontName' => '/'.$fnt{internalname},
+ 'Flags' => $t1flags,
+ 'FontBBox' => \@fntbbox,
+ 'ItalicAngle' => $slant,
+ 'Ascent' => $ascent,
+ 'Descent' => $fntbbox[1],
+ 'CapHeight' => $capheight,
+ 'StemV' => 0,
+# 'CharSet' => "($charset)",
+ 'FontFile' => BuildObj($objct+3,
+ {'Length1' => $l1,
+ 'Length2' => $l2,
+ 'Length3' => $l3
+ }
+ )
+ }
+ )
+ }
+ );
+
+ $objct+=3;
+ $fontlst{$fontno}->{NM}='/'.$fnt{NM};
+ $pages->{'Resources'}->{'Font'}->{$fnt{NM}}=$fontlst{$fontno}->{OBJ};
+ $fontlst{$fontno}->{FNT}=\%fnt;
+ $obj[$objct]->{STREAM}=$t1stream;
+
+ }
+ else
+ {
+ $fno=++$objct;
+ $fontlst{$fontno}->{OBJ}=BuildObj($objct,
+ {'Type' => '/Font',
+ 'Subtype' => '/Type1',
+ 'BaseFont' => '/'.$fnt{internalname},
+ 'Widths' => $fnt{WIDTH},
+ 'FirstChar' => 0,
+ 'LastChar' => $lastchr,
+ 'Encoding' => BuildObj($objct+1,
+ {'Type' => '/Encoding',
+ 'Differences' => $fnt{DIFF}
+ }
+ ),
+ 'FontDescriptor' => BuildObj($objct+2,
+ {'Type' => '/FontDescriptor',
+ 'FontName' => '/'.$fnt{internalname},
+ 'Flags' => $t1flags,
+ 'FontBBox' => \@fntbbox,
+ 'ItalicAngle' => $slant,
+ 'Ascent' => $ascent,
+ 'Descent' => $fntbbox[1],
+ 'CapHeight' => $capheight,
+ 'StemV' => 0,
+ 'CharSet' => "($charset)",
+ }
+ )
+ }
+ );
+
+ $objct+=2;
+ $fontlst{$fontno}->{NM}='/'.$fnt{NM};
+ $pages->{'Resources'}->{'Font'}->{$fnt{NM}}=$fontlst{$fontno}->{OBJ};
+ $fontlst{$fontno}->{FNT}=\%fnt;
+ }
+
+ if (defined($fnt{encoding}) and $fnt{encoding} eq 'text.enc' and $ucmap ne '')
+ {
+ if ($textenccmap eq '')
+ {
+ $textenccmap = BuildObj($objct+1,{});
+ $objct++;
+ $obj[$objct]->{STREAM}=$ucmap;
+ }
+ $obj[$fno]->{DATA}->{'ToUnicode'}=$textenccmap;
+ }
+
+# PutObj($fno);
+# PutObj($fno+1);
+# PutObj($fno+2) if defined($obj[$fno+2]);
+# PutObj($fno+3) if defined($obj[$fno+3]);
+}
+
+sub GetType1
+{
+ my $file=shift;
+ my ($l1,$l2,$l3); # Return lengths
+ my ($head,$body,$tail); # Font contents
+ my $f;
+
+ OpenFile(\$f,$fontdir,"$file");
+ Msg(1,"Failed to open '$file'") if !defined($f);
+
+ $head=GetChunk($f,1,"currentfile eexec");
+ $body=$tail='';
+ $body=GetChunk($f,2,"00000000") if !eof($f);
+ $tail=GetChunk($f,3,"cleartomark") if !eof($f);
+
+ $l1=length($head);
+ $l2=length($body);
+ $l3=length($tail);
+
+ return($l1,$l2,$l3,"$head$body$tail");
+}
+
+sub GetChunk
+{
+ my $F=shift;
+ my $segno=shift;
+ my $ascterm=shift;
+ my ($type,$hdr,$chunk,@msg);
+ binmode($F);
+ my $enc="ascii";
+
+ while (1)
+ {
+ # There may be multiple chunks of the same type
+
+ my $ct=read($F,$hdr,2);
+
+ if ($ct==2)
+ {
+ if (substr($hdr,0,1) eq "\x80")
+ {
+ # binary chunk
+
+ my $chunktype=ord(substr($hdr,1,1));
+ $enc="binary";
+
+ if (defined($type) and $type != $chunktype)
+ {
+ seek($F,-2,1);
+ last;
+ }
+
+ $type=$chunktype;
+ return if $chunktype == 3;
+
+ $ct=read($F,$hdr,4);
+
+ Msg(1,"Failed to read binary segment length"), return if $ct != 4;
+
+ my $sl=unpack('V',$hdr);
+ my $data;
+ my $chk=read($F,$data,$sl);
+
+ Msg(1 ,"Failed to read binary segment"), return if $chk != $sl;
+
+ $chunk.=$data;
+ }
+ else
+ {
+ # ascii chunk
+
+ my $hex=0;
+ seek($F,-2,1);
+ my $ct=0;
+
+ while (1)
+ {
+ my $lin=<$F>;
+
+ last if !$lin;
+
+ $hex=1,$enc.=" hex" if $segno == 2 and !$ct and $lin=~m/^[A-F0-9a-f]{4,4}/;
+
+ if ($segno !=2 and $lin=~m/^(.*$ascterm\n?)(.*)/)
+ {
+ $chunk.=$1;
+ seek($F,-length($2)-1,1) if $2;
+ last;
+ }
+ elsif ($segno == 2 and $lin=~m/^(.*?)($ascterm.*)/)
+ {
+ $chunk.=$1;
+ seek($F,-length($2)-1,1) if $2;
+ last;
+ }
+
+ chomp($lin), $lin=pack('H*',$lin) if $hex;
+ $chunk.=$lin; $ct++;
+ }
+
+ last;
+ }
+ }
+ else
+ {
+ push(@msg,"Failed to read 2 header bytes");
+ }
+ }
+
+ return $chunk;
+}
+
+sub OutStream
+{
+ my $ono=shift;
+
+ IsGraphic();
+ $stream.="Q\n";
+ $obj[$ono]->{STREAM}=$stream;
+ $obj[$ono]->{DATA}->{Length}=length($stream);
+ $stream='';
+ PutObj($ono);
+}
+
+sub do_p
+{
+ my $trans='BLOCK';
+
+ $trans='PAGE' if $firstpause;
+ NewPage($trans);
+ @XOstream=();
+ @PageAnnots=();
+ $firstpause=1;
+}
+
+sub FixTrans
+{
+ my $t=shift;
+ my $style=$t->{S};
+
+ if ($style)
+ {
+ delete($t->{Dm}) if $style ne '/Split' and $style ne '/Blinds';
+ delete($t->{M}) if !($style eq '/Split' or $style eq '/Box' or $style eq '/Fly');
+ delete($t->{Di}) if !($style eq '/Wipe' or $style eq '/Glitter' or $style eq '/Fly' or $style eq '/Cover' or $style eq '/Uncover' or $style eq '/Push') or ($style eq '/Fly' and $t->{Di} eq '/None' and $t->{SS} != 1);
+ delete($t->{SS}) if !($style eq '/Fly');
+ delete($t->{B}) if !($style eq '/Fly');
+ }
+
+ return($t);
+}
+
+sub NewPage
+{
+ my $trans=shift;
+ # Start of pages
+
+ if ($cpageno > 0)
+ {
+ if ($#XOstream>=0)
+ {
+ MakeXO() if $stream;
+ $stream=join("\n",@XOstream,'');
+ }
+
+ my %t=%{$transition->{$trans}};
+ $cpage->{MediaBox}=\@mediabox if $custompaper;
+ $cpage->{Trans}=FixTrans(\%t) if $t{S};
+
+ if ($#PageAnnots >= 0)
+ {
+ @{$cpage->{Annots}}=@PageAnnots;
+ }
+
+ PutObj($cpageno);
+ OutStream($cpageno+1);
+ }
+
+ $cpageno=++$objct;
+
+ my $thispg=BuildObj($objct,
+ {'Type' => '/Page',
+ 'Group' => {'CS' => '/DeviceRGB', 'S' => '/Transparency'},
+ 'Parent' => '2 0 R',
+ 'Contents' => [ BuildObj($objct+1,
+ {'Length' => 0}
+ ) ],
+ }
+ );
+
+ splice(@{$pages->{Kids}},++$pginsert,0,$thispg);
+ splice(@outlines,$pginsert,0,[$curoutlev,$#{$curoutlev}+1,$thislev]);
+
+ $objct+=1;
+ $cpage=$obj[$cpageno]->{DATA};
+ $pages->{'Count'}++;
+ $stream="q 1 0 0 1 0 0 cm\n$linejoin J\n$linecap j\n0.4 w\n";
+ $stream.=$strkcol."\n", $curstrk=$strkcol if $strkcol ne '';
+ $mode='g';
+ $curfill='';
+# @mediabox=@defaultmb;
+}
+
+sub MakeXO
+{
+ $stream.="%mode=$mode\n";
+ IsGraphic();
+ $stream.="Q\n";
+ my $xobj=++$objct;
+ my $xonm="XO$xobj";
+ $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($xobj,{'Type' => '/XObject', 'BBox' => \@mediabox, 'Name' => "/$xonm", 'FormType' => 1, 'Subtype' => '/Form', 'Length' => 0, 'Type' => "/XObject"});
+ $obj[$xobj]->{STREAM}=$stream;
+ $stream='';
+ push(@XOstream,"q") if $#XOstream==-1;
+ push(@XOstream,"/$xonm Do");
+}
+
+sub do_f
+{
+ my $par=shift;
+ my $fnt=$fontlst{$par}->{FNT};
+
+# IsText();
+ $cft="$par";
+ $cftsup=0;
+ $fontchg=1;
+# $stream.="/F$cft $cftsz Tf\n" if $cftsz;
+ $widtbl=CacheWid($par);
+ $origwidtbl=[];
+
+ foreach my $w (@{$fnt->{NO}})
+ {
+ push(@{$origwidtbl},$fnt->{NAM}->{$w->[1]}->[WIDTH]);
+ }
+
+# $krntbl=$fnt->{KERN};
+}
+
+sub CacheWid
+{
+ my $par=shift;
+
+ if (!defined($fontlst{$par}->{CACHE}->{$cftsz}))
+ {
+ $fontlst{$par}->{CACHE}->{$cftsz}=BuildCache($fontlst{$par}->{FNT});
+ }
+
+ return($fontlst{$par}->{CACHE}->{$cftsz});
+}
+
+sub BuildCache
+{
+ my $fnt=shift;
+ my @cwid;
+ $origwidtbl=[];
+
+ foreach my $w (@{$fnt->{NO}})
+ {
+ my $wid=(defined($w) and defined($w->[1]))?$fnt->{NAM}->{$w->[1]}->[WIDTH]:0;
+ push(@cwid,$wid*$cftsz);
+ push(@{$origwidtbl},$wid);
+ }
+
+ return(\@cwid);
+}
+
+sub IsText
+{
+ if ($mode eq 'g')
+ {
+ $xpos+=$pendmv/$unitwidth;
+ $stream.="q BT\n$matrix ".PutXY($xpos,$ypos)." Tm\n";
+ $poschg=0;
+ $fontchg=0;
+ $pendmv=0;
+ $matrixchg=0;
+ $tmxpos=$xpos;
+ $stream.=$textcol."\n", $curfill=$textcol if $textcol ne $curfill;
+ if (defined($cft))
+ {
+ $whtsz=$fontlst{$cft}->{FNT}->{spacewidth}*$cftsz;
+ $stream.="/F$cft";
+ $stream.=".$cftsup" if $cftsup;
+ $stream.=" $cftsz Tf\n";
+ }
+ $stream.="$curkern Tc\n";
+ }
+
+ if ($poschg or $matrixchg)
+ {
+ PutLine(0) if $matrixchg;
+ $stream.="$matrix ".PutXY($xpos,$ypos)." Tm\n", $poschg=0;
+ $tmxpos=$xpos;
+ $matrixchg=0;
+ $stream.="$curkern Tc\n";
+ }
+
+ if ($fontchg)
+ {
+ PutLine(0);
+ if (defined($cft))
+ {
+ $whtsz=$fontlst{$cft}->{FNT}->{spacewidth}*$cftsz;
+ $stream.="/F$cft";
+ $stream.=".$cftsup" if $cftsup;
+ $stream.=" $cftsz Tf\n";
+ $fontchg=0;
+ }
+ }
+
+ $mode='t';
+}
+
+sub IsGraphic
+{
+ if ($mode eq 't')
+ {
+ PutLine();
+ $stream.="ET Q\n";
+ $xpos+=($pendmv-$nomove)/$unitwidth;
+ $pendmv=0;
+ $nomove=0;
+ $stream.=$strkcol."\n", $curstrk=$strkcol if $strkcol ne $curstrk;
+ $curfill=$fillcol;
+ }
+ $mode='g';
+}
+
+sub do_s
+{
+ my $par=shift;
+ $par/=$unitwidth;
+
+ if ($par != $cftsz and defined($cft))
+ {
+ PutLine();
+ $cftsz=$par;
+ Set_LWidth() if $lwidth < 1;
+# $stream.="/F$cft $cftsz Tf\n";
+ $fontchg=1;
+ $widtbl=CacheWid($cft);
+ }
+ else
+ {
+ $cftsz=$par;
+ Set_LWidth() if $lwidth < 1;
+ }
+}
+
+sub Set_LWidth
+{
+ IsGraphic();
+ $stream.=((($desc{res}/(72*$desc{sizescale}))*$linewidth*$cftsz)/1000)." w\n";
+ return;
+}
+
+sub do_m
+{
+ # Groff uses /m[] for text & graphic stroke, and /M[] (DF?) for graphic fill.
+ # PDF uses G/RG/K for graphic stroke, and g/rg/k for text & graphic fill.
+ #
+ # This means that we must maintain g/rg/k state separately for text colour & graphic fill (this is
+ # probably why 'gs' maintains separate graphic states for text & graphics when distilling PS -> PDF).
+ #
+ # To facilitate this:-
+ #
+ # $textcol = current groff stroke colour
+ # $fillcol = current groff fill colour
+ # $curfill = current PDF fill colour
+
+ my $par=shift;
+ my $mcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $par=~s/^ +//;
+
+# IsGraphic();
+
+ $textcol=set_col($mcmd,$par,0);
+ $strkcol=set_col($mcmd,$par,1);
+
+ if ($mode eq 't')
+ {
+ PutLine();
+ $stream.=$textcol."\n";
+ $curfill=$textcol;
+ }
+ else
+ {
+ $stream.="$strkcol\n";
+ $curstrk=$strkcol;
+ }
+}
+
+sub set_col
+{
+ my $mcmd=shift;
+ my $par=shift;
+ my $upper=shift;
+ my @oper=('g','k','rg');
+
+ @oper=('G','K','RG') if $upper;
+
+ if ($mcmd eq 'd')
+ {
+ # default colour
+ return("0 $oper[0]");
+ }
+
+ my (@c)=split(' ',$par);
+
+ if ($mcmd eq 'c')
+ {
+ # Text CMY
+ return(d3($c[0]/65535).' '.d3($c[1]/65535).' '.d3($c[2]/65535)." 0 $oper[1]");
+ }
+ elsif ($mcmd eq 'k')
+ {
+ # Text CMYK
+ return(d3($c[0]/65535).' '.d3($c[1]/65535).' '.d3($c[2]/65535).' '.d3($c[3]/65535)." $oper[1]");
+ }
+ elsif ($mcmd eq 'g')
+ {
+ # Text Grey
+ return(d3($c[0]/65535)." $oper[0]");
+ }
+ elsif ($mcmd eq 'r')
+ {
+ # Text RGB0
+ return(d3($c[0]/65535).' '.d3($c[1]/65535).' '.d3($c[2]/65535)." $oper[2]");
+ }
+}
+
+sub do_D
+{
+ my $par=shift;
+ my $Dcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+
+ IsGraphic();
+
+ if ($Dcmd eq 'F')
+ {
+ my $mcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $par=~s/^ +//;
+
+ $fillcol=set_col($mcmd,$par,0);
+ $stream.="$fillcol\n";
+ $curfill=$fillcol;
+ }
+ elsif ($Dcmd eq 'f')
+ {
+ my $mcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $par=~s/^ +//;
+ ($par)=split(' ',$par);
+
+ if ($par >= 0 and $par <= 1000)
+ {
+ $fillcol=set_col('g',int((1000-$par)*65535/1000),0);
+ }
+ else
+ {
+ $fillcol=lc($textcol);
+ }
+
+ $stream.="$fillcol\n";
+ $curfill=$fillcol;
+ }
+ elsif ($Dcmd eq '~')
+ {
+ # B-Spline
+ my (@p)=split(' ',$par);
+ my ($nxpos,$nypos);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ $stream.=PutXY($xpos,$ypos)." m\n";
+ $xpos+=($p[0]/2);
+ $ypos+=($p[1]/2);
+ $stream.=PutXY($xpos,$ypos)." l\n";
+
+ for (my $i=0; $i < $#p-1; $i+=2)
+ {
+ $nxpos=(($p[$i]*$tnum)/(2*$tden));
+ $nypos=(($p[$i+1]*$tnum)/(2*$tden));
+ $stream.=PutXY(($xpos+$nxpos),($ypos+$nypos))." ";
+ $nxpos=($p[$i]/2 + ($p[$i+2]*($tden-$tnum))/(2*$tden));
+ $nypos=($p[$i+1]/2 + ($p[$i+3]*($tden-$tnum))/(2*$tden));
+ $stream.=PutXY(($xpos+$nxpos),($ypos+$nypos))." ";
+ $nxpos=(($p[$i]-$p[$i]/2) + $p[$i+2]/2);
+ $nypos=(($p[$i+1]-$p[$i+1]/2) + $p[$i+3]/2);
+ $stream.=PutXY(($xpos+$nxpos),($ypos+$nypos))." c\n";
+ $xpos+=$nxpos;
+ $ypos+=$nypos;
+ }
+
+ $xpos+=($p[$#p-1]-$p[$#p-1]/2);
+ $ypos+=($p[$#p]-$p[$#p]/2);
+ $stream.=PutXY($xpos,$ypos)." l\nS\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'p' or $Dcmd eq 'P')
+ {
+ # Polygon
+ my (@p)=split(' ',$par);
+ my ($nxpos,$nypos);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ $stream.=PutXY($xpos,$ypos)." m\n";
+
+ for (my $i=0; $i < $#p; $i+=2)
+ {
+ $xpos+=($p[$i]);
+ $ypos+=($p[$i+1]);
+ $stream.=PutXY($xpos,$ypos)." l\n";
+ }
+
+ if ($Dcmd eq 'p')
+ {
+ $stream.="s\n";
+ }
+ else
+ {
+ $stream.="f\n";
+ }
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'c')
+ {
+ # Stroke circle
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[0]);
+ $stream.="s\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'C')
+ {
+ # Fill circle
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[0]);
+ $stream.="f\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'e')
+ {
+ # Stroke ellipse
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[1]);
+ $stream.="s\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'E')
+ {
+ # Fill ellipse
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[1]);
+ $stream.="f\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'l')
+ {
+ # Line To
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ $stream.=PutXY($xpos,$ypos)." m\n";
+ $xpos+=$p[0];
+ $ypos+=$p[1];
+ $stream.=PutXY($xpos,$ypos)." l\n";
+
+ $stream.="S\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 't')
+ {
+ # Line Thickness
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ # $xpos+=$p[0]*100; # WTF!!!
+ #int lw = ((font::res/(72*font::sizescale))*linewidth*env->size)/1000;
+ $p[0]=(($desc{res}/(72*$desc{sizescale}))*$linewidth*$cftsz)/1000 if $p[0] < 0;
+ $lwidth=$p[0];
+ $stream.="$p[0] w\n";
+ $poschg=1;
+ $xpos+=$lwidth;
+ }
+ elsif ($Dcmd eq 'a')
+ {
+ # Arc
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+ my $rad180=3.14159;
+ my $rad360=$rad180*2;
+ my $rad90=$rad180/2;
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+
+ # Documentation is wrong. Groff does not use Dh1,Dv1 as centre of the circle!
+
+ my $centre=adjust_arc_centre(\@p);
+
+ # Using formula here : http://www.tinaja.com/glib/bezcirc2.pdf
+ # First calculate angle between start and end point
+
+ my ($startang,$r)=RtoP(-$centre->[0],$centre->[1]);
+ my ($endang,$r2)=RtoP(($p[0]+$p[2])-$centre->[0],-($p[1]+$p[3]-$centre->[1]));
+ $endang+=$rad360 if $endang < $startang;
+ my $totang=($endang-$startang)/4; # do it in 4 pieces
+
+ # Now 1 piece
+
+ my $x0=cos($totang/2);
+ my $y0=sin($totang/2);
+ my $x3=$x0;
+ my $y3=-$y0;
+ my $x1=(4-$x0)/3;
+ my $y1=((1-$x0)*(3-$x0))/(3*$y0);
+ my $x2=$x1;
+ my $y2=-$y1;
+
+ # Rotate to start position and draw 4 pieces
+
+ foreach my $j (0..3)
+ {
+ PlotArcSegment($totang/2+$startang+$j*$totang,$r,$xpos+$centre->[0],GraphY($ypos+$centre->[1]),$x0,$y0,$x1,$y1,$x2,$y2,$x3,$y3);
+ }
+
+ $xpos+=$p[0]+$p[2];
+ $ypos+=$p[1]+$p[3];
+
+ $poschg=1;
+ }
+}
+
+sub deg
+{
+ return int($_[0]*180/3.14159);
+}
+
+sub adjust_arc_centre
+{
+ # Taken from geometry.cpp
+
+ # We move the center along a line parallel to the line between
+ # the specified start point and end point so that the center
+ # is equidistant between the start and end point.
+ # It can be proved (using Lagrange multipliers) that this will
+ # give the point nearest to the specified center that is equidistant
+ # between the start and end point.
+
+ my $p=shift;
+ my @c;
+ my $x = $p->[0] + $p->[2]; # (x, y) is the end point
+ my $y = $p->[1] + $p->[3];
+ my $n = $x*$x + $y*$y;
+ if ($n != 0)
+ {
+ $c[0]= $p->[0];
+ $c[1] = $p->[1];
+ my $k = .5 - ($c[0]*$x + $c[1]*$y)/$n;
+ $c[0] += $k*$x;
+ $c[1] += $k*$y;
+ return(\@c);
+ }
+ else
+ {
+ return(undef);
+ }
+}
+
+
+sub PlotArcSegment
+{
+ my ($ang,$r,$transx,$transy,$x0,$y0,$x1,$y1,$x2,$y2,$x3,$y3)=@_;
+ my $cos=cos($ang);
+ my $sin=sin($ang);
+ my @mat=($cos,$sin,-$sin,$cos,0,0);
+ my $lw=$lwidth/$r;
+
+ $stream.="q $r 0 0 $r $transx $transy cm ".join(' ',@mat)." cm $lw w $x0 $y0 m $x1 $y1 $x2 $y2 $x3 $y3 c S Q\n";
+}
+
+sub DrawCircle
+{
+ my $hd=shift;
+ my $vd=shift;
+ my $hr=$hd/2/$unitwidth;
+ my $vr=$vd/2/$unitwidth;
+ my $kappa=0.5522847498;
+ $hd/=$unitwidth;
+ $vd/=$unitwidth;
+
+
+ $stream.=PutXY(($xpos+$hd),$ypos)." m\n";
+ $stream.=PutXY(($xpos+$hd),($ypos+$vr*$kappa))." ".PutXY(($xpos+$hr+$hr*$kappa),($ypos+$vr))." ".PutXY(($xpos+$hr),($ypos+$vr))." c\n";
+ $stream.=PutXY(($xpos+$hr-$hr*$kappa),($ypos+$vr))." ".PutXY(($xpos),($ypos+$vr*$kappa))." ".PutXY(($xpos),($ypos))." c\n";
+ $stream.=PutXY(($xpos),($ypos-$vr*$kappa))." ".PutXY(($xpos+$hr-$hr*$kappa),($ypos-$vr))." ".PutXY(($xpos+$hr),($ypos-$vr))." c\n";
+ $stream.=PutXY(($xpos+$hr+$hr*$kappa),($ypos-$vr))." ".PutXY(($xpos+$hd),($ypos-$vr*$kappa))." ".PutXY(($xpos+$hd),($ypos))." c\n";
+ $xpos+=$hd;
+
+ $poschg=1;
+}
+
+sub FindCircle
+{
+ my ($x1,$y1,$x2,$y2,$x3,$y3)=@_;
+ my ($Xo, $Yo);
+
+ my $x=$x2+$x3;
+ my $y=$y2+$y3;
+ my $n=$x**2+$y**2;
+
+ if ($n)
+ {
+ my $k=.5-($x2*$x + $y2*$y)/$n;
+ return(sqrt($n),$x2+$k*$x,$y2+$k*$y);
+ }
+ else
+ {
+ return(-1);
+ }
+
+}
+
+sub PtoR
+{
+ my ($theta,$r)=@_;
+
+ return($r*cos($theta),$r*sin($theta));
+}
+
+sub RtoP
+{
+ my ($x,$y)=@_;
+
+ return(atan2($y,$x),sqrt($x**2+$y**2));
+}
+
+sub PutLine
+{
+
+ my $f=shift;
+
+ IsText() if !defined($f);
+
+ return if (scalar(@lin) == 0) or (!defined($lin[0]->[0]) and $#lin == 0);
+
+# $stream.="% --- wht=$whtsz, pend=$pendmv, nomv=$nomove\n" if $debug;
+ $pendmv-=$nomove;
+ $lin[$#lin]->[1]=-$pendmv/$cftsz if ($pendmv != 0);
+
+ foreach my $wd (@lin)
+ {
+ next if !defined($wd->[0]);
+ $wd->[0]=~s/\\/\\\\/g;
+ $wd->[0]=~s/\(/\\(/g;
+ $wd->[0]=~s/\)/\\)/g;
+ $wd->[0]=~s/!\|!\|/\\/g;
+ $wd->[1]=d3($wd->[1]);
+ }
+
+ if (0)
+ {
+ if (scalar(@lin) == 1 and (!defined($lin[0]->[1]) or $lin[0]->[1] == 0))
+ {
+ $stream.="($lin[0]->[0]) Tj\n";
+ }
+ else
+ {
+ $stream.="[";
+
+ foreach my $wd (@lin)
+ {
+ $stream.="($wd->[0]) " if defined($wd->[0]);
+ $stream.="$wd->[1] " if defined($wd->[1]) and $wd->[1] != 0;
+ }
+
+ $stream.="] TJ\n";
+ }
+ }
+ else
+ {
+ if (scalar(@lin) == 1 and (!defined($lin[0]->[1]) or $lin[0]->[1] == 0))
+ {
+ $stream.="0 Tw ($lin[0]->[0]) Tj\n";
+ }
+ else
+ {
+ if ($wt>=-1 or $#lin == 0 or $lin[0]->[1]>=0)
+ {
+ $stream.="0 Tw [";
+
+ foreach my $wd (@lin)
+ {
+ $stream.="($wd->[0]) " if defined($wd->[0]);
+ $stream.="$wd->[1] " if defined($wd->[1]) and $wd->[1] != 0;
+ }
+
+ $stream.="] TJ\n";
+ }
+ else
+ {
+ # $stream.="\%dg 0 Tw [";
+ #
+ # foreach my $wd (@lin)
+ # {
+ # $stream.="($wd->[0]) " if defined($wd->[0]);
+ # $stream.="$wd->[1] " if defined($wd->[1]) and $wd->[1] != 0;
+ # }
+ #
+ # $stream.="] TJ\n";
+ #
+ # my $wt=$lin[0]->[1]||0;
+
+ # while ($wt < -$whtsz/$cftsz)
+ # {
+ # $wt+=$whtsz/$cftsz;
+ # }
+
+ $stream.=sprintf( "%.3f Tw ",-($whtsz+$wt*$cftsz)/$unitwidth-$curkern );
+ if (!defined($lin[0]->[0]) and defined($lin[0]->[1]))
+ {
+ $stream.="[ $lin[0]->[1] (";
+ shift @lin;
+ }
+ else
+ {
+ $stream.="[(";
+ }
+
+ foreach my $wd (@lin)
+ {
+ my $wwt=$wd->[1]||0;
+
+ while ($wwt <= $wt+.1)
+ {
+ $wwt-=$wt;
+ $wd->[0].=' ';
+ }
+
+ if (abs($wwt) < .1 or $wwt == 0)
+ {
+ $stream.="$wd->[0]" if defined($wd->[0]);
+ }
+ else
+ {
+ $wwt=sprintf("%.3f",$wwt);
+ $stream.="$wd->[0]) $wwt (" if defined($wd->[0]);
+ }
+ }
+ $stream.=")] TJ\n";
+ }
+ }
+ }
+
+ @lin=();
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+ $nomove=0;
+ $wt=-1;
+}
+
+sub d3
+{
+ return(sprintf("%.3f",shift || 0));
+}
+
+sub LoadAhead
+{
+ my $no=shift;
+
+ foreach my $j (1..$no)
+ {
+ my $lin=<>;
+ chomp($lin);
+ $lin=~s/\r$//;
+ $lct++;
+
+ push(@ahead,$lin);
+ $stream.="%% $lin\n" if $debug;
+ }
+}
+
+sub do_V
+{
+ my $par=shift;
+
+ if ($mode eq 't')
+ {
+ PutLine();
+ }
+ else
+ {
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+ }
+
+ $ypos=$par/$unitwidth;
+
+ LoadAhead(1);
+
+ if (substr($ahead[0],0,1) eq 'H')
+ {
+ $xpos=substr($ahead[0],1)/$unitwidth;
+
+ $nomove=$pendmv=0;
+ @ahead=();
+
+ }
+
+ $poschg=1;
+}
+
+sub do_v
+{
+ my $par=shift;
+
+ PutLine() if $mode eq 't';
+
+ $ypos+=$par/$unitwidth;
+
+ $poschg=1;
+}
+
+sub TextWid
+{
+ my $txt=shift;
+ my $sup=shift;
+ my $fnt=shift;
+ my $w=0;
+ my $ck=0;
+
+ foreach my $c (split('',$txt))
+ {
+ my $cn=ord($c);
+ $cn+=$sup*256;
+ $widtbl->[$cn]=$origwidtbl->[$cn]*$cftsz if !defined($widtbl->[$cn]);
+ $w+=$widtbl->[$cn];
+ }
+
+ $ck=length($txt)*$curkern;
+
+ return(($w/$unitwidth)+$ck);
+}
+
+sub do_t
+{
+ my $par=shift;
+ my $fnt=$fontlst{$cft}->{FNT};
+ my $sup = shift || 0;
+ $fontchg=1 if $cftsup != $sup;
+ $cftsup = $sup;
+
+ if ($kernadjust != $curkern)
+ {
+ PutLine();
+ $stream.="$kernadjust Tc\n";
+ $curkern=$kernadjust;
+ }
+
+ my $par2=$par;
+ $par2=~s/^!\|!\|(\d\d\d)/chr(oct($1))/e;
+
+ foreach my $j (0..length($par2)-1)
+ {
+ my $cn=ord(substr($par2,$j,1));
+ $cn+=$sup*256;
+ my $chnm=$fnt->{NO}->[$cn]->[1];
+
+ if (!$fnt->{NAM}->{$chnm}->[USED])
+ {
+ my ($cn2, $sup2) = RemapChr($cn, $fnt, $chnm);
+ $stream.="% MMM Remap $cn,$sup to $cn2,$sup2\n" if $debug;
+ Msg(0, "got: $fnt->{NM}.$sup2; expected: $fnt->{NM}.$sup\n") if $sup != $sup2;
+
+ #if ($cn2)
+ {
+ substr($par2,$j,1)=chr($cn2);
+
+ if ($par=~m/^!\|!\|(\d\d\d)/)
+ {
+ substr($par,4,3)=sprintf("%03o",$cn2);
+ }
+ else
+ {
+ substr($par,$j,1)=chr($cn2);
+ }
+ }
+ }
+ }
+ my $wid=TextWid($par2,$sup,$fnt);
+
+ $par=reverse(split('',$par)) if $xrev and $par!~m/^!\|!\|(\d\d\d)/;
+
+ if ($n_flg and defined($mark))
+ {
+ $mark->{ypos}=$ypos;
+ $mark->{xpos}=$xpos;
+ }
+
+ $n_flg=0;
+ IsText();
+
+ $xpos+=$wid;
+ $xpos+=($pendmv-$nomove)/$unitwidth;
+
+ $stream.="% == '$par'=$wid 'xpos=$xpos\n" if $debug;
+
+ # $pendmv = 'h' move since last 't'
+ # $nomove = width of char(s) added by 'C', 'N' or 'c'
+ # $w-flg = 'w' seen since last t
+
+ if ($fontchg)
+ {
+ PutLine();
+ if (defined($cft))
+ {
+ $whtsz=$fontlst{$cft}->{FNT}->{spacewidth} * $cftsz;
+ $stream.="/F$cft";
+ $stream.=".$cftsup" if $cftsup;
+ $stream.=" $cftsz Tf\n";
+ $fontchg=0;
+ }
+ }
+
+ $gotT=1;
+
+ $stream.="% --- wht=$whtsz, pend=$pendmv, nomv=$nomove\n" if $debug;
+
+# if ($w_flg && $#lin > -1)
+# {
+# $lin[$#lin]->[0].=' ';
+# $pendmv-=$whtsz;
+# $dontglue=1 if $pendmv==0;
+# }
+
+ $wt=-$pendmv/$cftsz if $w_flg and $wt==-1;
+ $pendmv-=$nomove;
+ $nomove=0;
+ $w_flg=0;
+
+ if ($xrev)
+ {
+ PutLine(0) if $#lin > -1;
+ MakeMatrix(1);
+ $stream.="$matrix ".PutXY($xpos,$ypos)." Tm\n", $poschg=0;
+ $stream.="$curkern Tc\n";
+ $stream.="0 Tw ";
+ $stream.="($par) Tj\n";
+ MakeMatrix();
+ $stream.="$matrix ".PutXY($xpos,$ypos)." Tm\n", $poschg=0;
+ $matrixchg=0;
+ $stream.="$curkern Tc\n";
+ return;
+ }
+
+ if ($pendmv)
+ {
+ if ($#lin == -1)
+ {
+ push(@lin,[undef,-$pendmv/$cftsz]);
+ }
+ else
+ {
+ $lin[$#lin]->[1]=-$pendmv/$cftsz;
+ }
+
+ push(@lin,[$par,undef]);
+# $xpos+=$pendmv/$unitwidth;
+ $pendmv=0
+ }
+ else
+ {
+ if ($#lin == -1)
+ {
+ push(@lin,[$par,undef]);
+ }
+ else
+ {
+ $lin[$#lin]->[0].=$par;
+ }
+ }
+}
+
+sub do_u
+{
+ my $par=shift;
+
+ $par=m/([+-]?\d+) (.*)/;
+ $kernadjust=$1/$unitwidth;
+ do_t($2);
+ $kernadjust=0;
+}
+
+sub do_h
+{
+ $pendmv+=shift;
+}
+
+sub do_H
+{
+ my $par=shift;
+
+ if ($mode eq 't')
+ {
+ PutLine();
+ }
+ else
+ {
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+ }
+
+ my $newx=$par/$unitwidth;
+ $stream.=sprintf("%.3f",$newx-$tmxpos)." 0 Td\n" if $mode eq 't';
+ $tmxpos=$xpos=$newx;
+ $pendmv=$nomove=0;
+}
+
+sub do_C
+{
+ my $par=shift;
+
+ do_t(FindChar($par));
+ $nomove=$fontlst{$cft}->{FNT}->{NAM}->{$par}->[WIDTH]*$cftsz ;
+}
+
+sub FindChar
+{
+ my $chnm=shift;
+ my $fnt=$fontlst{$cft}->{FNT};
+
+ if (exists($fnt->{NAM}->{$chnm}))
+ {
+ my ($ch,$sup,$used)=@{$fnt->{NAM}->{$chnm}}[ASSIGNED,SUPPL,USED];
+ ($ch,$sup) = RemapChr($ch,$fnt,$chnm) if !$used;
+ return ($ch<32)? sprintf("!|!|%03o",$ch) : chr($ch), $sup;
+ }
+ else
+ {
+ return(' ');
+ }
+}
+
+sub RemapChr
+{
+ my $ch=shift;
+ my $fnt=shift;
+ my $chnm=shift;
+ my $unused;
+
+ if ($use_suppl_font) {
+
+ while (defined(my $un = shift @{$fnt->{REMAP}})) {
+ my $ux = $un + $fnt->{SUPPL} * 256;
+ my $glyph = $fnt->{NO}->[$ux]->[1];
+ $unused = $un, last if !$glyph || !$fnt->{NAM}->{$glyph}->[USED];
+ }
+
+ if (!defined $unused) {
+ if (!$fnt->{NEXT}) {
+ my $fnt2 = {
+ %{$fnt}{qw/NM NO NAM/},
+ SUPPL => $fnt->{SUPPL} + 1,
+ REMAP => [ 0..31, 33..255 ],
+ };
+ $fnt->{NEXT} = $fnt2;
+ }
+ return RemapChr($ch, $fnt->{NEXT}, $chnm);
+ }
+
+ my $ux = $unused + $fnt->{SUPPL} * 256;
+ my $glyph = $fnt->{NO}->[$ux]->[1];
+ delete($fontlst{$cft}->{CACHE}->{$cftsz});
+ @{$fnt->{NAM}->{$chnm}}[ASSIGNED, SUPPL, USED] = ($unused, $fnt->{SUPPL}, 1);
+ $fnt->{NO}->[$ux]->[1] = $chnm;
+ $widtbl = CacheWid($cft);
+
+ $stream .= "% AAA Assign $chnm ($ch) to $unused ($fnt->{SUPPL})\n" if $debug;
+
+ $ch = $unused;
+ return ($ch, $fnt->{SUPPL});
+ }
+
+ foreach my $un (0..$#{$fnt->{NO}})
+ {
+ next if $un >= 139 and $un <= 144;
+ $unused=$un,last if $fnt->{NO}->[$un]->[1] eq '';
+ }
+
+ if (!defined $unused)
+ {
+ foreach my $un (128..255)
+ {
+ next if $un >= 139 and $un <= 144;
+ my $glyph=$fnt->{NO}->[$un]->[1];
+ $unused=$un,last if $fnt->{NAM}->{$glyph}->[USED] == 0;
+ }
+ }
+
+ if (defined $unused && $unused <= 255)
+ {
+ my $glyph=$fnt->{NO}->[$unused]->[1];
+ delete($fontlst{$cft}->{CACHE}->{$cftsz});
+ $fnt->{NAM}->{$chnm}->[ASSIGNED]=$unused;
+ $fnt->{NO}->[$unused]->[1]=$chnm;
+ $widtbl=CacheWid($cft);
+
+ $stream.="% AAA Assign $chnm ($ch) to $unused\n" if $debug;
+
+ $ch=$unused;
+ return($ch,0);
+ }
+ else
+ {
+ Msg(0,"Too many glyphs used in font '$cft'");
+ return(32,0);
+ }
+}
+
+sub do_c
+{
+ my $par=shift;
+
+ push(@ahead,substr($par,1));
+ $par=substr($par,0,1);
+ my $ch=ord($par);
+ do_N($ch);
+}
+
+sub do_N
+{
+ my $par=shift;
+ my $fnt=$fontlst{$cft}->{FNT};
+
+ if (!defined($fnt->{NO}->[$par]))
+ {
+ Msg(0,"No chr($par) in font $fnt->{internalname}");
+ return;
+ }
+
+ my $chnm=$fnt->{NO}->[$par]->[0];
+ do_C($chnm);
+}
+
+sub do_n
+{
+ $gotT=0;
+ PutLine(0);
+ $pendmv=$nomove=0;
+ $n_flg=1;
+ @lin=();
+ PutHotSpot($xpos) if defined($mark);
+}
+
+
+1;
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: CPerl
+# End:
diff --git a/scripts/LinuxManBook/hyphen.en b/scripts/LinuxManBook/hyphen.en
new file mode 100644
index 000000000..bd9b757d8
--- /dev/null
+++ b/scripts/LinuxManBook/hyphen.en
@@ -0,0 +1,5018 @@
+% title: Hyphenation patterns for American English
+% copyright: Copyright (C) 1990, 2004, 2005 Gerard D.C. Kuiken
+% notice: This file is part of the hyph-utf8 package.
+% See http://www.hyphenation.org/tex for more information.
+% language:
+% name: English, American spelling
+% tag: en-us
+% version: 2005-05-30
+% authors:
+% -
+% name: Gerard D.C. Kuiken
+% licence:
+% text: >
+% Copying and distribution of this file, with or without modification,
+% are permitted in any medium without royalty provided the copyright
+% notice and this notice are preserved.
+% hyphenmins:
+% typesetting:
+% left: 2
+% right: 3
+% changes:
+% March 1, 1990 Initial release
+% May 30, 2005 Added copyright notice, no patterns change.
+% texlive:
+% encoding: ascii
+% babelname: usenglishmax
+% legacy_patterns: ushyphmax.tex
+% message: Hyphenation patterns for American English
+% package: english
+% known_bugs:
+% de-mo-c-rat: 'instead of dem-o-crat (see GitHub issue #15)'
+% ==========================================
+%
+% ushyphmax.tex -- patterns for more hyphenation pattern memory (12000+).
+% Also known as ushyphen.max.
+%
+% Needs extended pattern memory.
+% Hyphenation trie becomes 7283 with 377 ops.
+%
+% These patterns are based on the Hyphenation Exception Log
+% published in TUGboat, Volume 10 (1989), No. 3, pp. 337-341,
+% and a large number of incorrectly hyphenated words not yet published.
+% If added to Liang's before the closing bracket } of \patterns,
+% the patterns run errorfree as far as known at this moment.
+%
+% These patterns find all admissible hyphens of the words in
+% the Exception Log. ushyph2.tex is a smaller set.
+%
+% Please send bugs or suggestions to tex-live (at) tug.org.
+%
+% 2005-05-30 (karl): in the past, ushyphmax.tex was a file containing
+% only the additional patterns, without the \patterns command, etc.
+% This turned out not to be very useful, since in practice the TeX
+% distributions need one self-contained file for a language. Therefore,
+% ushyphmax.tex now contains both the additional patterns from
+% Dr. Kuiken, and the original patterns and hyphenations from Knuth's
+% hyphen.tex.
+%
+% The Plain TeX hyphenation tables.
+\patterns{ % just type <return> if you're not using INITEX
+.ach4
+.ad4der
+.af1t
+.al3t
+.am5at
+.an5c
+.ang4
+.ani5m
+.ant4
+.an3te
+.anti5s
+.ar5s
+.ar4tie
+.ar4ty
+.as3c
+.as1p
+.as1s
+.aster5
+.atom5
+.au1d
+.av4i
+.awn4
+.ba4g
+.ba5na
+.bas4e
+.ber4
+.be5ra
+.be3sm
+.be5sto
+.bri2
+.but4ti
+.cam4pe
+.can5c
+.capa5b
+.car5ol
+.ca4t
+.ce4la
+.ch4
+.chill5i
+.ci2
+.cit5r
+.co3e
+.co4r
+.cor5ner
+.de4moi
+.de3o
+.de3ra
+.de3ri
+.des4c
+.dictio5
+.do4t
+.du4c
+.dumb5
+.earth5
+.eas3i
+.eb4
+.eer4
+.eg2
+.el5d
+.el3em
+.enam3
+.en3g
+.en3s
+.eq5ui5t
+.er4ri
+.es3
+.eu3
+.eye5
+.fes3
+.for5mer
+.ga2
+.ge2
+.gen3t4
+.ge5og
+.gi5a
+.gi4b
+.go4r
+.hand5i
+.han5k
+.he2
+.hero5i
+.hes3
+.het3
+.hi3b
+.hi3er
+.hon5ey
+.hon3o
+.hov5
+.id4l
+.idol3
+.im3m
+.im5pin
+.in1
+.in3ci
+.ine2
+.in2k
+.in3s
+.ir5r
+.is4i
+.ju3r
+.la4cy
+.la4m
+.lat5er
+.lath5
+.le2
+.leg5e
+.len4
+.lep5
+.lev1
+.li4g
+.lig5a
+.li2n
+.li3o
+.li4t
+.mag5a5
+.mal5o
+.man5a
+.mar5ti
+.me2
+.mer3c
+.me5ter
+.mis1
+.mist5i
+.mon3e
+.mo3ro
+.mu5ta
+.muta5b
+.ni4c
+.od2
+.odd5
+.of5te
+.or5ato
+.or3c
+.or1d
+.or3t
+.os3
+.os4tl
+.oth3
+.out3
+.ped5al
+.pe5te
+.pe5tit
+.pi4e
+.pio5n
+.pi2t
+.pre3m
+.ra4c
+.ran4t
+.ratio5na
+.ree2
+.re5mit
+.res2
+.re5stat
+.ri4g
+.rit5u
+.ro4q
+.ros5t
+.row5d
+.ru4d
+.sci3e
+.self5
+.sell5
+.se2n
+.se5rie
+.sh2
+.si2
+.sing4
+.st4
+.sta5bl
+.sy2
+.ta4
+.te4
+.ten5an
+.th2
+.ti2
+.til4
+.tim5o5
+.ting4
+.tin5k
+.ton4a
+.to4p
+.top5i
+.tou5s
+.trib5ut
+.un1a
+.un3ce
+.under5
+.un1e
+.un5k
+.un5o
+.un3u
+.up3
+.ure3
+.us5a
+.ven4de
+.ve5ra
+.wil5i
+.ye4
+4ab.
+a5bal
+a5ban
+abe2
+ab5erd
+abi5a
+ab5it5ab
+ab5lat
+ab5o5liz
+4abr
+ab5rog
+ab3ul
+a4car
+ac5ard
+ac5aro
+a5ceou
+ac1er
+a5chet
+4a2ci
+a3cie
+ac1in
+a3cio
+ac5rob
+act5if
+ac3ul
+ac4um
+a2d
+ad4din
+ad5er.
+2adi
+a3dia
+ad3ica
+adi4er
+a3dio
+a3dit
+a5diu
+ad4le
+ad3ow
+ad5ran
+ad4su
+4adu
+a3duc
+ad5um
+ae4r
+aeri4e
+a2f
+aff4
+a4gab
+aga4n
+ag5ell
+age4o
+4ageu
+ag1i
+4ag4l
+ag1n
+a2go
+3agog
+ag3oni
+a5guer
+ag5ul
+a4gy
+a3ha
+a3he
+ah4l
+a3ho
+ai2
+a5ia
+a3ic.
+ai5ly
+a4i4n
+ain5in
+ain5o
+ait5en
+a1j
+ak1en
+al5ab
+al3ad
+a4lar
+4aldi
+2ale
+al3end
+a4lenti
+a5le5o
+al1i
+al4ia.
+ali4e
+al5lev
+4allic
+4alm
+a5log.
+a4ly.
+4alys
+5a5lyst
+5alyt
+3alyz
+4ama
+am5ab
+am3ag
+ama5ra
+am5asc
+a4matis
+a4m5ato
+am5era
+am3ic
+am5if
+am5ily
+am1in
+ami4no
+a2mo
+a5mon
+amor5i
+amp5en
+a2n
+an3age
+3analy
+a3nar
+an3arc
+anar4i
+a3nati
+4and
+ande4s
+an3dis
+an1dl
+an4dow
+a5nee
+a3nen
+an5est.
+a3neu
+2ang
+ang5ie
+an1gl
+a4n1ic
+a3nies
+an3i3f
+an4ime
+a5nimi
+a5nine
+an3io
+a3nip
+an3ish
+an3it
+a3niu
+an4kli
+5anniz
+ano4
+an5ot
+anoth5
+an2sa
+an4sco
+an4sn
+an2sp
+ans3po
+an4st
+an4sur
+antal4
+an4tie
+4anto
+an2tr
+an4tw
+an3ua
+an3ul
+a5nur
+4ao
+apar4
+ap5at
+ap5ero
+a3pher
+4aphi
+a4pilla
+ap5illar
+ap3in
+ap3ita
+a3pitu
+a2pl
+apoc5
+ap5ola
+apor5i
+apos3t
+aps5es
+a3pu
+aque5
+2a2r
+ar3act
+a5rade
+ar5adis
+ar3al
+a5ramete
+aran4g
+ara3p
+ar4at
+a5ratio
+ar5ativ
+a5rau
+ar5av4
+araw4
+arbal4
+ar4chan
+ar5dine
+ar4dr
+ar5eas
+a3ree
+ar3ent
+a5ress
+ar4fi
+ar4fl
+ar1i
+ar5ial
+ar3ian
+a3riet
+ar4im
+ar5inat
+ar3io
+ar2iz
+ar2mi
+ar5o5d
+a5roni
+a3roo
+ar2p
+ar3q
+arre4
+ar4sa
+ar2sh
+4as.
+as4ab
+as3ant
+ashi4
+a5sia.
+a3sib
+a3sic
+5a5si4t
+ask3i
+as4l
+a4soc
+as5ph
+as4sh
+as3ten
+as1tr
+asur5a
+a2ta
+at3abl
+at5ac
+at3alo
+at5ap
+ate5c
+at5ech
+at3ego
+at3en.
+at3era
+ater5n
+a5terna
+at3est
+at5ev
+4ath
+ath5em
+a5then
+at4ho
+ath5om
+4ati.
+a5tia
+at5i5b
+at1ic
+at3if
+ation5ar
+at3itu
+a4tog
+a2tom
+at5omiz
+a4top
+a4tos
+a1tr
+at5rop
+at4sk
+at4tag
+at5te
+at4th
+a2tu
+at5ua
+at5ue
+at3ul
+at3ura
+a2ty
+au4b
+augh3
+au3gu
+au4l2
+aun5d
+au3r
+au5sib
+aut5en
+au1th
+a2va
+av3ag
+a5van
+ave4no
+av3era
+av5ern
+av5ery
+av1i
+avi4er
+av3ig
+av5oc
+a1vor
+3away
+aw3i
+aw4ly
+aws4
+ax4ic
+ax4id
+ay5al
+aye4
+ays4
+azi4er
+azz5i
+5ba.
+bad5ger
+ba4ge
+bal1a
+ban5dag
+ban4e
+ban3i
+barbi5
+bari4a
+bas4si
+1bat
+ba4z
+2b1b
+b2be
+b3ber
+bbi4na
+4b1d
+4be.
+beak4
+beat3
+4be2d
+be3da
+be3de
+be3di
+be3gi
+be5gu
+1bel
+be1li
+be3lo
+4be5m
+be5nig
+be5nu
+4bes4
+be3sp
+be5str
+3bet
+bet5iz
+be5tr
+be3tw
+be3w
+be5yo
+2bf
+4b3h
+bi2b
+bi4d
+3bie
+bi5en
+bi4er
+2b3if
+1bil
+bi3liz
+bina5r4
+bin4d
+bi5net
+bi3ogr
+bi5ou
+bi2t
+3bi3tio
+bi3tr
+3bit5ua
+b5itz
+b1j
+bk4
+b2l2
+blath5
+b4le.
+blen4
+5blesp
+b3lis
+b4lo
+blun4t
+4b1m
+4b3n
+bne5g
+3bod
+bod3i
+bo4e
+bol3ic
+bom4bi
+bon4a
+bon5at
+3boo
+5bor.
+4b1ora
+bor5d
+5bore
+5bori
+5bos4
+b5ota
+both5
+bo4to
+bound3
+4bp
+4brit
+broth3
+2b5s2
+bsor4
+2bt
+bt4l
+b4to
+b3tr
+buf4fer
+bu4ga
+bu3li
+bumi4
+bu4n
+bunt4i
+bu3re
+bus5ie
+buss4e
+5bust
+4buta
+3butio
+b5uto
+b1v
+4b5w
+5by.
+bys4
+1ca
+cab3in
+ca1bl
+cach4
+ca5den
+4cag4
+2c5ah
+ca3lat
+cal4la
+call5in
+4calo
+can5d
+can4e
+can4ic
+can5is
+can3iz
+can4ty
+cany4
+ca5per
+car5om
+cast5er
+cas5tig
+4casy
+ca4th
+4cativ
+cav5al
+c3c
+ccha5
+cci4a
+ccompa5
+ccon4
+ccou3t
+2ce.
+4ced.
+4ceden
+3cei
+5cel.
+3cell
+1cen
+3cenc
+2cen4e
+4ceni
+3cent
+3cep
+ce5ram
+4cesa
+3cessi
+ces5si5b
+ces5t
+cet4
+c5e4ta
+cew4
+2ch
+4ch.
+4ch3ab
+5chanic
+ch5a5nis
+che2
+cheap3
+4ched
+che5lo
+3chemi
+ch5ene
+ch3er.
+ch3ers
+4ch1in
+5chine.
+ch5iness
+5chini
+5chio
+3chit
+chi2z
+3cho2
+ch4ti
+1ci
+3cia
+ci2a5b
+cia5r
+ci5c
+4cier
+5cific.
+4cii
+ci4la
+3cili
+2cim
+2cin
+c4ina
+3cinat
+cin3em
+c1ing
+c5ing.
+5cino
+cion4
+4cipe
+ci3ph
+4cipic
+4cista
+4cisti
+2c1it
+cit3iz
+5ciz
+ck1
+ck3i
+1c4l4
+4clar
+c5laratio
+5clare
+cle4m
+4clic
+clim4
+cly4
+c5n
+1co
+co5ag
+coe2
+2cog
+co4gr
+coi4
+co3inc
+col5i
+5colo
+col3or
+com5er
+con4a
+c4one
+con3g
+con5t
+co3pa
+cop3ic
+co4pl
+4corb
+coro3n
+cos4e
+cov1
+cove4
+cow5a
+coz5e
+co5zi
+c1q
+cras5t
+5crat.
+5cratic
+cre3at
+5cred
+4c3reta
+cre4v
+cri2
+cri5f
+c4rin
+cris4
+5criti
+cro4pl
+crop5o
+cros4e
+cru4d
+4c3s2
+2c1t
+cta4b
+ct5ang
+c5tant
+c2te
+c3ter
+c4ticu
+ctim3i
+ctu4r
+c4tw
+cud5
+c4uf
+c4ui
+cu5ity
+5culi
+cul4tis
+3cultu
+cu2ma
+c3ume
+cu4mi
+3cun
+cu3pi
+cu5py
+cur5a4b
+cu5ria
+1cus
+cuss4i
+3c4ut
+cu4tie
+4c5utiv
+4cutr
+1cy
+cze4
+1d2a
+5da.
+2d3a4b
+dach4
+4daf
+2dag
+da2m2
+dan3g
+dard5
+dark5
+4dary
+3dat
+4dativ
+4dato
+5dav4
+dav5e
+5day
+d1b
+d5c
+d1d4
+2de.
+deaf5
+deb5it
+de4bon
+decan4
+de4cil
+de5com
+2d1ed
+4dee.
+de5if
+deli4e
+del5i5q
+de5lo
+d4em
+5dem.
+3demic
+dem5ic.
+de5mil
+de4mons
+demor5
+1den
+de4nar
+de3no
+denti5f
+de3nu
+de1p
+de3pa
+depi4
+de2pu
+d3eq
+d4erh
+5derm
+dern5iz
+der5s
+des2
+d2es.
+de1sc
+de2s5o
+des3ti
+de3str
+de4su
+de1t
+de2to
+de1v
+dev3il
+4dey
+4d1f
+d4ga
+d3ge4t
+dg1i
+d2gy
+d1h2
+5di.
+1d4i3a
+dia5b
+di4cam
+d4ice
+3dict
+3did
+5di3en
+d1if
+di3ge
+di4lato
+d1in
+1dina
+3dine.
+5dini
+di5niz
+1dio
+dio5g
+di4pl
+dir2
+di1re
+dirt5i
+dis1
+5disi
+d4is3t
+d2iti
+1di1v
+d1j
+d5k2
+4d5la
+3dle.
+3dled
+3dles.
+4dless
+2d3lo
+4d5lu
+2dly
+d1m
+4d1n4
+1do
+3do.
+do5de
+5doe
+2d5of
+d4og
+do4la
+doli4
+do5lor
+dom5iz
+do3nat
+doni4
+doo3d
+dop4p
+d4or
+3dos
+4d5out
+do4v
+3dox
+d1p
+1dr
+drag5on
+4drai
+dre4
+drea5r
+5dren
+dri4b
+dril4
+dro4p
+4drow
+5drupli
+4dry
+2d1s2
+ds4p
+d4sw
+d4sy
+d2th
+1du
+d1u1a
+du2c
+d1uca
+duc5er
+4duct.
+4ducts
+du5el
+du4g
+d3ule
+dum4be
+du4n
+4dup
+du4pe
+d1v
+d1w
+d2y
+5dyn
+dy4se
+dys5p
+e1a4b
+e3act
+ead1
+ead5ie
+ea4ge
+ea5ger
+ea4l
+eal5er
+eal3ou
+eam3er
+e5and
+ear3a
+ear4c
+ear5es
+ear4ic
+ear4il
+ear5k
+ear2t
+eart3e
+ea5sp
+e3ass
+east3
+ea2t
+eat5en
+eath3i
+e5atif
+e4a3tu
+ea2v
+eav3en
+eav5i
+eav5o
+2e1b
+e4bel.
+e4bels
+e4ben
+e4bit
+e3br
+e4cad
+ecan5c
+ecca5
+e1ce
+ec5essa
+ec2i
+e4cib
+ec5ificat
+ec5ifie
+ec5ify
+ec3im
+eci4t
+e5cite
+e4clam
+e4clus
+e2col
+e4comm
+e4compe
+e4conc
+e2cor
+ec3ora
+eco5ro
+e1cr
+e4crem
+ec4tan
+ec4te
+e1cu
+e4cul
+ec3ula
+2e2da
+4ed3d
+e4d1er
+ede4s
+4edi
+e3dia
+ed3ib
+ed3ica
+ed3im
+ed1it
+edi5z
+4edo
+e4dol
+edon2
+e4dri
+e4dul
+ed5ulo
+ee2c
+eed3i
+ee2f
+eel3i
+ee4ly
+ee2m
+ee4na
+ee4p1
+ee2s4
+eest4
+ee4ty
+e5ex
+e1f
+e4f3ere
+1eff
+e4fic
+5efici
+efil4
+e3fine
+ef5i5nite
+3efit
+efor5es
+e4fuse.
+4egal
+eger4
+eg5ib
+eg4ic
+eg5ing
+e5git5
+eg5n
+e4go.
+e4gos
+eg1ul
+e5gur
+5egy
+e1h4
+eher4
+ei2
+e5ic
+ei5d
+eig2
+ei5gl
+e3imb
+e3inf
+e1ing
+e5inst
+eir4d
+eit3e
+ei3th
+e5ity
+e1j
+e4jud
+ej5udi
+eki4n
+ek4la
+e1la
+e4la.
+e4lac
+elan4d
+el5ativ
+e4law
+elaxa4
+e3lea
+el5ebra
+5elec
+e4led
+el3ega
+e5len
+e4l1er
+e1les
+el2f
+el2i
+e3libe
+e4l5ic.
+el3ica
+e3lier
+el5igib
+e5lim
+e4l3ing
+e3lio
+e2lis
+el5ish
+e3liv3
+4ella
+el4lab
+ello4
+e5loc
+el5og
+el3op.
+el2sh
+el4ta
+e5lud
+el5ug
+e4mac
+e4mag
+e5man
+em5ana
+em5b
+e1me
+e2mel
+e4met
+em3ica
+emi4e
+em5igra
+em1in2
+em5ine
+em3i3ni
+e4mis
+em5ish
+e5miss
+em3iz
+5emniz
+emo4g
+emoni5o
+em3pi
+e4mul
+em5ula
+emu3n
+e3my
+en5amo
+e4nant
+ench4er
+en3dic
+e5nea
+e5nee
+en3em
+en5ero
+en5esi
+en5est
+en3etr
+e3new
+en5ics
+e5nie
+e5nil
+e3nio
+en3ish
+en3it
+e5niu
+5eniz
+4enn
+4eno
+eno4g
+e4nos
+en3ov
+en4sw
+ent5age
+4enthes
+en3ua
+en5uf
+e3ny.
+4en3z
+e5of
+eo2g
+e4oi4
+e3ol
+eop3ar
+e1or
+eo3re
+eo5rol
+eos4
+e4ot
+eo4to
+e5out
+e5ow
+e2pa
+e3pai
+ep5anc
+e5pel
+e3pent
+ep5etitio
+ephe4
+e4pli
+e1po
+e4prec
+ep5reca
+e4pred
+ep3reh
+e3pro
+e4prob
+ep4sh
+ep5ti5b
+e4put
+ep5uta
+e1q
+equi3l
+e4q3ui3s
+er1a
+era4b
+4erand
+er3ar
+4erati.
+2erb
+er4bl
+er3ch
+er4che
+2ere.
+e3real
+ere5co
+ere3in
+er5el.
+er3emo
+er5ena
+er5ence
+4erene
+er3ent
+ere4q
+er5ess
+er3est
+eret4
+er1h
+er1i
+e1ria4
+5erick
+e3rien
+eri4er
+er3ine
+e1rio
+4erit
+er4iu
+eri4v
+e4riva
+er3m4
+er4nis
+4ernit
+5erniz
+er3no
+2ero
+er5ob
+e5roc
+ero4r
+er1ou
+er1s
+er3set
+ert3er
+4ertl
+er3tw
+4eru
+eru4t
+5erwau
+e1s4a
+e4sage.
+e4sages
+es2c
+e2sca
+es5can
+e3scr
+es5cu
+e1s2e
+e2sec
+es5ecr
+es5enc
+e4sert.
+e4serts
+e4serva
+4esh
+e3sha
+esh5en
+e1si
+e2sic
+e2sid
+es5iden
+es5igna
+e2s5im
+es4i4n
+esis4te
+esi4u
+e5skin
+es4mi
+e2sol
+es3olu
+e2son
+es5ona
+e1sp
+es3per
+es5pira
+es4pre
+2ess
+es4si4b
+estan4
+es3tig
+es5tim
+4es2to
+e3ston
+2estr
+e5stro
+estruc5
+e2sur
+es5urr
+es4w
+eta4b
+eten4d
+e3teo
+ethod3
+et1ic
+e5tide
+etin4
+eti4no
+e5tir
+e5titio
+et5itiv
+4etn
+et5ona
+e3tra
+e3tre
+et3ric
+et5rif
+et3rog
+et5ros
+et3ua
+et5ym
+et5z
+4eu
+e5un
+e3up
+eu3ro
+eus4
+eute4
+euti5l
+eu5tr
+eva2p5
+e2vas
+ev5ast
+e5vea
+ev3ell
+evel3o
+e5veng
+even4i
+ev1er
+e5verb
+e1vi
+ev3id
+evi4l
+e4vin
+evi4v
+e5voc
+e5vu
+e1wa
+e4wag
+e5wee
+e3wh
+ewil5
+ew3ing
+e3wit
+1exp
+5eyc
+5eye.
+eys4
+1fa
+fa3bl
+fab3r
+fa4ce
+4fag
+fain4
+fall5e
+4fa4ma
+fam5is
+5far
+far5th
+fa3ta
+fa3the
+4fato
+fault5
+4f5b
+4fd
+4fe.
+feas4
+feath3
+fe4b
+4feca
+5fect
+2fed
+fe3li
+fe4mo
+fen2d
+fend5e
+fer1
+5ferr
+fev4
+4f1f
+f4fes
+f4fie
+f5fin.
+f2f5is
+f4fly
+f2fy
+4fh
+1fi
+fi3a
+2f3ic.
+4f3ical
+f3ican
+4ficate
+f3icen
+fi3cer
+fic4i
+5ficia
+5ficie
+4fics
+fi3cu
+fi5del
+fight5
+fil5i
+fill5in
+4fily
+2fin
+5fina
+fin2d5
+fi2ne
+f1in3g
+fin4n
+fis4ti
+f4l2
+f5less
+flin4
+flo3re
+f2ly5
+4fm
+4fn
+1fo
+5fon
+fon4de
+fon4t
+fo2r
+fo5rat
+for5ay
+fore5t
+for4i
+fort5a
+fos5
+4f5p
+fra4t
+f5rea
+fres5c
+fri2
+fril4
+frol5
+2f3s
+2ft
+f4to
+f2ty
+3fu
+fu5el
+4fug
+fu4min
+fu5ne
+fu3ri
+fusi4
+fus4s
+4futa
+1fy
+1ga
+gaf4
+5gal.
+3gali
+ga3lo
+2gam
+ga5met
+g5amo
+gan5is
+ga3niz
+gani5za
+4gano
+gar5n4
+gass4
+gath3
+4gativ
+4gaz
+g3b
+gd4
+2ge.
+2ged
+geez4
+gel4in
+ge5lis
+ge5liz
+4gely
+1gen
+ge4nat
+ge5niz
+4geno
+4geny
+1geo
+ge3om
+g4ery
+5gesi
+geth5
+4geto
+ge4ty
+ge4v
+4g1g2
+g2ge
+g3ger
+gglu5
+ggo4
+gh3in
+gh5out
+gh4to
+5gi.
+1gi4a
+gia5r
+g1ic
+5gicia
+g4ico
+gien5
+5gies.
+gil4
+g3imen
+3g4in.
+gin5ge
+5g4ins
+5gio
+3gir
+gir4l
+g3isl
+gi4u
+5giv
+3giz
+gl2
+gla4
+glad5i
+5glas
+1gle
+gli4b
+g3lig
+3glo
+glo3r
+g1m
+g4my
+gn4a
+g4na.
+gnet4t
+g1ni
+g2nin
+g4nio
+g1no
+g4non
+1go
+3go.
+gob5
+5goe
+3g4o4g
+go3is
+gon2
+4g3o3na
+gondo5
+go3ni
+5goo
+go5riz
+gor5ou
+5gos.
+gov1
+g3p
+1gr
+4grada
+g4rai
+gran2
+5graph.
+g5rapher
+5graphic
+4graphy
+4gray
+gre4n
+4gress.
+4grit
+g4ro
+gruf4
+gs2
+g5ste
+gth3
+gu4a
+3guard
+2gue
+5gui5t
+3gun
+3gus
+4gu4t
+g3w
+1gy
+2g5y3n
+gy5ra
+h3ab4l
+hach4
+hae4m
+hae4t
+h5agu
+ha3la
+hala3m
+ha4m
+han4ci
+han4cy
+5hand.
+han4g
+hang5er
+hang5o
+h5a5niz
+han4k
+han4te
+hap3l
+hap5t
+ha3ran
+ha5ras
+har2d
+hard3e
+har4le
+harp5en
+har5ter
+has5s
+haun4
+5haz
+haz3a
+h1b
+1head
+3hear
+he4can
+h5ecat
+h4ed
+he5do5
+he3l4i
+hel4lis
+hel4ly
+h5elo
+hem4p
+he2n
+hena4
+hen5at
+heo5r
+hep5
+h4era
+hera3p
+her4ba
+here5a
+h3ern
+h5erou
+h3ery
+h1es
+he2s5p
+he4t
+het4ed
+heu4
+h1f
+h1h
+hi5an
+hi4co
+high5
+h4il2
+himer4
+h4ina
+hion4e
+hi4p
+hir4l
+hi3ro
+hir4p
+hir4r
+his3el
+his4s
+hith5er
+hi2v
+4hk
+4h1l4
+hlan4
+h2lo
+hlo3ri
+4h1m
+hmet4
+2h1n
+h5odiz
+h5ods
+ho4g
+hoge4
+hol5ar
+3hol4e
+ho4ma
+home3
+hon4a
+ho5ny
+3hood
+hoon4
+hor5at
+ho5ris
+hort3e
+ho5ru
+hos4e
+ho5sen
+hos1p
+1hous
+house3
+hov5el
+4h5p
+4hr4
+hree5
+hro5niz
+hro3po
+4h1s2
+h4sh
+h4tar
+ht1en
+ht5es
+h4ty
+hu4g
+hu4min
+hun5ke
+hun4t
+hus3t4
+hu4t
+h1w
+h4wart
+hy3pe
+hy3ph
+hy2s
+2i1a
+i2al
+iam4
+iam5ete
+i2an
+4ianc
+ian3i
+4ian4t
+ia5pe
+iass4
+i4ativ
+ia4tric
+i4atu
+ibe4
+ib3era
+ib5ert
+ib5ia
+ib3in
+ib5it.
+ib5ite
+i1bl
+ib3li
+i5bo
+i1br
+i2b5ri
+i5bun
+4icam
+5icap
+4icar
+i4car.
+i4cara
+icas5
+i4cay
+iccu4
+4iceo
+4ich
+2ici
+i5cid
+ic5ina
+i2cip
+ic3ipa
+i4cly
+i2c5oc
+4i1cr
+5icra
+i4cry
+ic4te
+ictu2
+ic4t3ua
+ic3ula
+ic4um
+ic5uo
+i3cur
+2id
+i4dai
+id5anc
+id5d
+ide3al
+ide4s
+i2di
+id5ian
+idi4ar
+i5die
+id3io
+idi5ou
+id1it
+id5iu
+i3dle
+i4dom
+id3ow
+i4dr
+i2du
+id5uo
+2ie4
+ied4e
+5ie5ga
+ield3
+ien5a4
+ien4e
+i5enn
+i3enti
+i1er.
+i3esc
+i1est
+i3et
+4if.
+if5ero
+iff5en
+if4fr
+4ific.
+i3fie
+i3fl
+4ift
+2ig
+iga5b
+ig3era
+ight3i
+4igi
+i3gib
+ig3il
+ig3in
+ig3it
+i4g4l
+i2go
+ig3or
+ig5ot
+i5gre
+igu5i
+ig1ur
+i3h
+4i5i4
+i3j
+4ik
+i1la
+il3a4b
+i4lade
+i2l5am
+ila5ra
+i3leg
+il1er
+ilev4
+il5f
+il1i
+il3ia
+il2ib
+il3io
+il4ist
+2ilit
+il2iz
+ill5ab
+4iln
+il3oq
+il4ty
+il5ur
+il3v
+i4mag
+im3age
+ima5ry
+imenta5r
+4imet
+im1i
+im5ida
+imi5le
+i5mini
+4imit
+im4ni
+i3mon
+i2mu
+im3ula
+2in.
+i4n3au
+4inav
+incel4
+in3cer
+4ind
+in5dling
+2ine
+i3nee
+iner4ar
+i5ness
+4inga
+4inge
+in5gen
+4ingi
+in5gling
+4ingo
+4ingu
+2ini
+i5ni.
+i4nia
+in3io
+in1is
+i5nite.
+5initio
+in3ity
+4ink
+4inl
+2inn
+2i1no
+i4no4c
+ino4s
+i4not
+2ins
+in3se
+insur5a
+2int.
+2in4th
+in1u
+i5nus
+4iny
+2io
+4io.
+ioge4
+io2gr
+i1ol
+io4m
+ion3at
+ion4ery
+ion3i
+io5ph
+ior3i
+i4os
+io5th
+i5oti
+io4to
+i4our
+2ip
+ipe4
+iphras4
+ip3i
+ip4ic
+ip4re4
+ip3ul
+i3qua
+iq5uef
+iq3uid
+iq3ui3t
+4ir
+i1ra
+ira4b
+i4rac
+ird5e
+ire4de
+i4ref
+i4rel4
+i4res
+ir5gi
+ir1i
+iri5de
+ir4is
+iri3tu
+5i5r2iz
+ir4min
+iro4g
+5iron.
+ir5ul
+2is.
+is5ag
+is3ar
+isas5
+2is1c
+is3ch
+4ise
+is3er
+3isf
+is5han
+is3hon
+ish5op
+is3ib
+isi4d
+i5sis
+is5itiv
+4is4k
+islan4
+4isms
+i2so
+iso5mer
+is1p
+is2pi
+is4py
+4is1s
+is4sal
+issen4
+is4ses
+is4ta.
+is1te
+is1ti
+ist4ly
+4istral
+i2su
+is5us
+4ita.
+ita4bi
+i4tag
+4ita5m
+i3tan
+i3tat
+2ite
+it3era
+i5teri
+it4es
+2ith
+i1ti
+4itia
+4i2tic
+it3ica
+5i5tick
+it3ig
+it5ill
+i2tim
+2itio
+4itis
+i4tism
+i2t5o5m
+4iton
+i4tram
+it5ry
+4itt
+it3uat
+i5tud
+it3ul
+4itz.
+i1u
+2iv
+iv3ell
+iv3en.
+i4v3er.
+i4vers.
+iv5il.
+iv5io
+iv1it
+i5vore
+iv3o3ro
+i4v3ot
+4i5w
+ix4o
+4iy
+4izar
+izi4
+5izont
+5ja
+jac4q
+ja4p
+1je
+jer5s
+4jestie
+4jesty
+jew3
+jo4p
+5judg
+3ka.
+k3ab
+k5ag
+kais4
+kal4
+k1b
+k2ed
+1kee
+ke4g
+ke5li
+k3en4d
+k1er
+kes4
+k3est.
+ke4ty
+k3f
+kh4
+k1i
+5ki.
+5k2ic
+k4ill
+kilo5
+k4im
+k4in.
+kin4de
+k5iness
+kin4g
+ki4p
+kis4
+k5ish
+kk4
+k1l
+4kley
+4kly
+k1m
+k5nes
+1k2no
+ko5r
+kosh4
+k3ou
+kro5n
+4k1s2
+k4sc
+ks4l
+k4sy
+k5t
+k1w
+lab3ic
+l4abo
+laci4
+l4ade
+la3dy
+lag4n
+lam3o
+3land
+lan4dl
+lan5et
+lan4te
+lar4g
+lar3i
+las4e
+la5tan
+4lateli
+4lativ
+4lav
+la4v4a
+2l1b
+lbin4
+4l1c2
+lce4
+l3ci
+2ld
+l2de
+ld4ere
+ld4eri
+ldi4
+ld5is
+l3dr
+l4dri
+le2a
+le4bi
+left5
+5leg.
+5legg
+le4mat
+lem5atic
+4len.
+3lenc
+5lene.
+1lent
+le3ph
+le4pr
+lera5b
+ler4e
+3lerg
+3l4eri
+l4ero
+les2
+le5sco
+5lesq
+3less
+5less.
+l3eva
+lev4er.
+lev4era
+lev4ers
+3ley
+4leye
+2lf
+l5fr
+4l1g4
+l5ga
+lgar3
+l4ges
+lgo3
+2l3h
+li4ag
+li2am
+liar5iz
+li4as
+li4ato
+li5bi
+5licio
+li4cor
+4lics
+4lict.
+l4icu
+l3icy
+l3ida
+lid5er
+3lidi
+lif3er
+l4iff
+li4fl
+5ligate
+3ligh
+li4gra
+3lik
+4l4i4l
+lim4bl
+lim3i
+li4mo
+l4im4p
+l4ina
+1l4ine
+lin3ea
+lin3i
+link5er
+li5og
+4l4iq
+lis4p
+l1it
+l2it.
+5litica
+l5i5tics
+liv3er
+l1iz
+4lj
+lka3
+l3kal
+lka4t
+l1l
+l4law
+l2le
+l5lea
+l3lec
+l3leg
+l3lel
+l3le4n
+l3le4t
+ll2i
+l2lin4
+l5lina
+ll4o
+lloqui5
+ll5out
+l5low
+2lm
+l5met
+lm3ing
+l4mod
+lmon4
+2l1n2
+3lo.
+lob5al
+lo4ci
+4lof
+3logic
+l5ogo
+3logu
+lom3er
+5long
+lon4i
+l3o3niz
+lood5
+5lope.
+lop3i
+l3opm
+lora4
+lo4rato
+lo5rie
+lor5ou
+5los.
+los5et
+5losophiz
+5losophy
+los4t
+lo4ta
+loun5d
+2lout
+4lov
+2lp
+lpa5b
+l3pha
+l5phi
+lp5ing
+l3pit
+l4pl
+l5pr
+4l1r
+2l1s2
+l4sc
+l2se
+l4sie
+4lt
+lt5ag
+ltane5
+l1te
+lten4
+ltera4
+lth3i
+l5ties.
+ltis4
+l1tr
+ltu2
+ltur3a
+lu5a
+lu3br
+luch4
+lu3ci
+lu3en
+luf4
+lu5id
+lu4ma
+5lumi
+l5umn.
+5lumnia
+lu3o
+luo3r
+4lup
+luss4
+lus3te
+1lut
+l5ven
+l5vet4
+2l1w
+1ly
+4lya
+4lyb
+ly5me
+ly3no
+2lys4
+l5yse
+1ma
+2mab
+ma2ca
+ma5chine
+ma4cl
+mag5in
+5magn
+2mah
+maid5
+4mald
+ma3lig
+ma5lin
+mal4li
+mal4ty
+5mania
+man5is
+man3iz
+4map
+ma5rine.
+ma5riz
+mar4ly
+mar3v
+ma5sce
+mas4e
+mas1t
+5mate
+math3
+ma3tis
+4matiza
+4m1b
+mba4t5
+m5bil
+m4b3ing
+mbi4v
+4m5c
+4me.
+2med
+4med.
+5media
+me3die
+m5e5dy
+me2g
+mel5on
+mel4t
+me2m
+mem1o3
+1men
+men4a
+men5ac
+men4de
+4mene
+men4i
+mens4
+mensu5
+3ment
+men4te
+me5on
+m5ersa
+2mes
+3mesti
+me4ta
+met3al
+me1te
+me5thi
+m4etr
+5metric
+me5trie
+me3try
+me4v
+4m1f
+2mh
+5mi.
+mi3a
+mid4a
+mid4g
+mig4
+3milia
+m5i5lie
+m4ill
+min4a
+3mind
+m5inee
+m4ingl
+min5gli
+m5ingly
+min4t
+m4inu
+miot4
+m2is
+mis4er.
+mis5l
+mis4ti
+m5istry
+4mith
+m2iz
+4mk
+4m1l
+m1m
+mma5ry
+4m1n
+mn4a
+m4nin
+mn4o
+1mo
+4mocr
+5mocratiz
+mo2d1
+mo4go
+mois2
+moi5se
+4mok
+mo5lest
+mo3me
+mon5et
+mon5ge
+moni3a
+mon4ism
+mon4ist
+mo3niz
+monol4
+mo3ny.
+mo2r
+4mora.
+mos2
+mo5sey
+mo3sp
+moth3
+m5ouf
+3mous
+mo2v
+4m1p
+mpara5
+mpa5rab
+mpar5i
+m3pet
+mphas4
+m2pi
+mpi4a
+mp5ies
+m4p1in
+m5pir
+mp5is
+mpo3ri
+mpos5ite
+m4pous
+mpov5
+mp4tr
+m2py
+4m3r
+4m1s2
+m4sh
+m5si
+4mt
+1mu
+mula5r4
+5mult
+multi3
+3mum
+mun2
+4mup
+mu4u
+4mw
+1na
+2n1a2b
+n4abu
+4nac.
+na4ca
+n5act
+nag5er.
+nak4
+na4li
+na5lia
+4nalt
+na5mit
+n2an
+nanci4
+nan4it
+nank4
+nar3c
+4nare
+nar3i
+nar4l
+n5arm
+n4as
+nas4c
+nas5ti
+n2at
+na3tal
+nato5miz
+n2au
+nau3se
+3naut
+nav4e
+4n1b4
+ncar5
+n4ces.
+n3cha
+n5cheo
+n5chil
+n3chis
+nc1in
+nc4it
+ncour5a
+n1cr
+n1cu
+n4dai
+n5dan
+n1de
+nd5est.
+ndi4b
+n5d2if
+n1dit
+n3diz
+n5duc
+ndu4r
+nd2we
+2ne.
+n3ear
+ne2b
+neb3u
+ne2c
+5neck
+2ned
+ne4gat
+neg5ativ
+5nege
+ne4la
+nel5iz
+ne5mi
+ne4mo
+1nen
+4nene
+3neo
+ne4po
+ne2q
+n1er
+nera5b
+n4erar
+n2ere
+n4er5i
+ner4r
+1nes
+2nes.
+4nesp
+2nest
+4nesw
+3netic
+ne4v
+n5eve
+ne4w
+n3f
+n4gab
+n3gel
+nge4n4e
+n5gere
+n3geri
+ng5ha
+n3gib
+ng1in
+n5git
+n4gla
+ngov4
+ng5sh
+n1gu
+n4gum
+n2gy
+4n1h4
+nha4
+nhab3
+nhe4
+3n4ia
+ni3an
+ni4ap
+ni3ba
+ni4bl
+ni4d
+ni5di
+ni4er
+ni2fi
+ni5ficat
+n5igr
+nik4
+n1im
+ni3miz
+n1in
+5nine.
+nin4g
+ni4o
+5nis.
+nis4ta
+n2it
+n4ith
+3nitio
+n3itor
+ni3tr
+n1j
+4nk2
+n5kero
+n3ket
+nk3in
+n1kl
+4n1l
+n5m
+nme4
+nmet4
+4n1n2
+nne4
+nni3al
+nni4v
+nob4l
+no3ble
+n5ocl
+4n3o2d
+3noe
+4nog
+noge4
+nois5i
+no5l4i
+5nologis
+3nomic
+n5o5miz
+no4mo
+no3my
+no4n
+non4ag
+non5i
+n5oniz
+4nop
+5nop5o5li
+nor5ab
+no4rary
+4nosc
+nos4e
+nos5t
+no5ta
+1nou
+3noun
+nov3el3
+nowl3
+n1p4
+npi4
+npre4c
+n1q
+n1r
+nru4
+2n1s2
+ns5ab
+nsati4
+ns4c
+n2se
+n4s3es
+nsid1
+nsig4
+n2sl
+ns3m
+n4soc
+ns4pe
+n5spi
+nsta5bl
+n1t
+nta4b
+nter3s
+nt2i
+n5tib
+nti4er
+nti2f
+n3tine
+n4t3ing
+nti4p
+ntrol5li
+nt4s
+ntu3me
+nu1a
+nu4d
+nu5en
+nuf4fe
+n3uin
+3nu3it
+n4um
+nu1me
+n5umi
+3nu4n
+n3uo
+nu3tr
+n1v2
+n1w4
+nym4
+nyp4
+4nz
+n3za
+4oa
+oad3
+o5a5les
+oard3
+oas4e
+oast5e
+oat5i
+ob3a3b
+o5bar
+obe4l
+o1bi
+o2bin
+ob5ing
+o3br
+ob3ul
+o1ce
+och4
+o3chet
+ocif3
+o4cil
+o4clam
+o4cod
+oc3rac
+oc5ratiz
+ocre3
+5ocrit
+octor5a
+oc3ula
+o5cure
+od5ded
+od3ic
+odi3o
+o2do4
+odor3
+od5uct.
+od5ucts
+o4el
+o5eng
+o3er
+oe4ta
+o3ev
+o2fi
+of5ite
+ofit4t
+o2g5a5r
+og5ativ
+o4gato
+o1ge
+o5gene
+o5geo
+o4ger
+o3gie
+1o1gis
+og3it
+o4gl
+o5g2ly
+3ogniz
+o4gro
+ogu5i
+1ogy
+2ogyn
+o1h2
+ohab5
+oi2
+oic3es
+oi3der
+oiff4
+oig4
+oi5let
+o3ing
+oint5er
+o5ism
+oi5son
+oist5en
+oi3ter
+o5j
+2ok
+o3ken
+ok5ie
+o1la
+o4lan
+olass4
+ol2d
+old1e
+ol3er
+o3lesc
+o3let
+ol4fi
+ol2i
+o3lia
+o3lice
+ol5id.
+o3li4f
+o5lil
+ol3ing
+o5lio
+o5lis.
+ol3ish
+o5lite
+o5litio
+o5liv
+olli4e
+ol5ogiz
+olo4r
+ol5pl
+ol2t
+ol3ub
+ol3ume
+ol3un
+o5lus
+ol2v
+o2ly
+om5ah
+oma5l
+om5atiz
+om2be
+om4bl
+o2me
+om3ena
+om5erse
+o4met
+om5etry
+o3mia
+om3ic.
+om3ica
+o5mid
+om1in
+o5mini
+5ommend
+omo4ge
+o4mon
+om3pi
+ompro5
+o2n
+on1a
+on4ac
+o3nan
+on1c
+3oncil
+2ond
+on5do
+o3nen
+on5est
+on4gu
+on1ic
+o3nio
+on1is
+o5niu
+on3key
+on4odi
+on3omy
+on3s
+onspi4
+onspir5a
+onsu4
+onten4
+on3t4i
+ontif5
+on5um
+onva5
+oo2
+ood5e
+ood5i
+oo4k
+oop3i
+o3ord
+oost5
+o2pa
+ope5d
+op1er
+3opera
+4operag
+2oph
+o5phan
+o5pher
+op3ing
+o3pit
+o5pon
+o4posi
+o1pr
+op1u
+opy5
+o1q
+o1ra
+o5ra.
+o4r3ag
+or5aliz
+or5ange
+ore5a
+o5real
+or3ei
+ore5sh
+or5est.
+orew4
+or4gu
+4o5ria
+or3ica
+o5ril
+or1in
+o1rio
+or3ity
+o3riu
+or2mi
+orn2e
+o5rof
+or3oug
+or5pe
+3orrh
+or4se
+ors5en
+orst4
+or3thi
+or3thy
+or4ty
+o5rum
+o1ry
+os3al
+os2c
+os4ce
+o3scop
+4oscopi
+o5scr
+os4i4e
+os5itiv
+os3ito
+os3ity
+osi4u
+os4l
+o2so
+os4pa
+os4po
+os2ta
+o5stati
+os5til
+os5tit
+o4tan
+otele4g
+ot3er.
+ot5ers
+o4tes
+4oth
+oth5esi
+oth3i4
+ot3ic.
+ot5ica
+o3tice
+o3tif
+o3tis
+oto5s
+ou2
+ou3bl
+ouch5i
+ou5et
+ou4l
+ounc5er
+oun2d
+ou5v
+ov4en
+over4ne
+over3s
+ov4ert
+o3vis
+oviti4
+o5v4ol
+ow3der
+ow3el
+ow5est
+ow1i
+own5i
+o4wo
+oy1a
+1pa
+pa4ca
+pa4ce
+pac4t
+p4ad
+5pagan
+p3agat
+p4ai
+pain4
+p4al
+pan4a
+pan3el
+pan4ty
+pa3ny
+pa1p
+pa4pu
+para5bl
+par5age
+par5di
+3pare
+par5el
+p4a4ri
+par4is
+pa2te
+pa5ter
+5pathic
+pa5thy
+pa4tric
+pav4
+3pay
+4p1b
+pd4
+4pe.
+3pe4a
+pear4l
+pe2c
+2p2ed
+3pede
+3pedi
+pedia4
+ped4ic
+p4ee
+pee4d
+pek4
+pe4la
+peli4e
+pe4nan
+p4enc
+pen4th
+pe5on
+p4era.
+pera5bl
+p4erag
+p4eri
+peri5st
+per4mal
+perme5
+p4ern
+per3o
+per3ti
+pe5ru
+per1v
+pe2t
+pe5ten
+pe5tiz
+4pf
+4pg
+4ph.
+phar5i
+phe3no
+ph4er
+ph4es.
+ph1ic
+5phie
+ph5ing
+5phisti
+3phiz
+ph2l
+3phob
+3phone
+5phoni
+pho4r
+4phs
+ph3t
+5phu
+1phy
+pi3a
+pian4
+pi4cie
+pi4cy
+p4id
+p5ida
+pi3de
+5pidi
+3piec
+pi3en
+pi4grap
+pi3lo
+pi2n
+p4in.
+pind4
+p4ino
+3pi1o
+pion4
+p3ith
+pi5tha
+pi2tu
+2p3k2
+1p2l2
+3plan
+plas5t
+pli3a
+pli5er
+4plig
+pli4n
+ploi4
+plu4m
+plum4b
+4p1m
+2p3n
+po4c
+5pod.
+po5em
+po3et5
+5po4g
+poin2
+5point
+poly5t
+po4ni
+po4p
+1p4or
+po4ry
+1pos
+pos1s
+p4ot
+po4ta
+5poun
+4p1p
+ppa5ra
+p2pe
+p4ped
+p5pel
+p3pen
+p3per
+p3pet
+ppo5site
+pr2
+pray4e
+5preci
+pre5co
+pre3em
+pref5ac
+pre4la
+pre3r
+p3rese
+3press
+pre5ten
+pre3v
+5pri4e
+prin4t3
+pri4s
+pris3o
+p3roca
+prof5it
+pro3l
+pros3e
+pro1t
+2p1s2
+p2se
+ps4h
+p4sib
+2p1t
+pt5a4b
+p2te
+p2th
+pti3m
+ptu4r
+p4tw
+pub3
+pue4
+puf4
+pul3c
+pu4m
+pu2n
+pur4r
+5pus
+pu2t
+5pute
+put3er
+pu3tr
+put4ted
+put4tin
+p3w
+qu2
+qua5v
+2que.
+3quer
+3quet
+2rab
+ra3bi
+rach4e
+r5acl
+raf5fi
+raf4t
+r2ai
+ra4lo
+ram3et
+r2ami
+rane5o
+ran4ge
+r4ani
+ra5no
+rap3er
+3raphy
+rar5c
+rare4
+rar5ef
+4raril
+r2as
+ration4
+rau4t
+ra5vai
+rav3el
+ra5zie
+r1b
+r4bab
+r4bag
+rbi2
+rbi4f
+r2bin
+r5bine
+rb5ing.
+rb4o
+r1c
+r2ce
+rcen4
+r3cha
+rch4er
+r4ci4b
+rc4it
+rcum3
+r4dal
+rd2i
+rdi4a
+rdi4er
+rdin4
+rd3ing
+2re.
+re1al
+re3an
+re5arr
+5reav
+re4aw
+r5ebrat
+rec5oll
+rec5ompe
+re4cre
+2r2ed
+re1de
+re3dis
+red5it
+re4fac
+re2fe
+re5fer.
+re3fi
+re4fy
+reg3is
+re5it
+re1li
+re5lu
+r4en4ta
+ren4te
+re1o
+re5pin
+re4posi
+re1pu
+r1er4
+r4eri
+rero4
+re5ru
+r4es.
+re4spi
+ress5ib
+res2t
+re5stal
+re3str
+re4ter
+re4ti4z
+re3tri
+reu2
+re5uti
+rev2
+re4val
+rev3el
+r5ev5er.
+re5vers
+re5vert
+re5vil
+rev5olu
+re4wh
+r1f
+rfu4
+r4fy
+rg2
+rg3er
+r3get
+r3gic
+rgi4n
+rg3ing
+r5gis
+r5git
+r1gl
+rgo4n
+r3gu
+rh4
+4rh.
+4rhal
+ri3a
+ria4b
+ri4ag
+r4ib
+rib3a
+ric5as
+r4ice
+4rici
+5ricid
+ri4cie
+r4ico
+rid5er
+ri3enc
+ri3ent
+ri1er
+ri5et
+rig5an
+5rigi
+ril3iz
+5riman
+rim5i
+3rimo
+rim4pe
+r2ina
+5rina.
+rin4d
+rin4e
+rin4g
+ri1o
+5riph
+riph5e
+ri2pl
+rip5lic
+r4iq
+r2is
+r4is.
+ris4c
+r3ish
+ris4p
+ri3ta3b
+r5ited.
+rit5er.
+rit5ers
+rit3ic
+ri2tu
+rit5ur
+riv5el
+riv3et
+riv3i
+r3j
+r3ket
+rk4le
+rk4lin
+r1l
+rle4
+r2led
+r4lig
+r4lis
+rl5ish
+r3lo4
+r1m
+rma5c
+r2me
+r3men
+rm5ers
+rm3ing
+r4ming.
+r4mio
+r3mit
+r4my
+r4nar
+r3nel
+r4ner
+r5net
+r3ney
+r5nic
+r1nis4
+r3nit
+r3niv
+rno4
+r4nou
+r3nu
+rob3l
+r2oc
+ro3cr
+ro4e
+ro1fe
+ro5fil
+rok2
+ro5ker
+5role.
+rom5ete
+rom4i
+rom4p
+ron4al
+ron4e
+ro5n4is
+ron4ta
+1room
+5root
+ro3pel
+rop3ic
+ror3i
+ro5ro
+ros5per
+ros4s
+ro4the
+ro4ty
+ro4va
+rov5el
+rox5
+r1p
+r4pea
+r5pent
+rp5er.
+r3pet
+rp4h4
+rp3ing
+r3po
+r1r4
+rre4c
+rre4f
+r4reo
+rre4st
+rri4o
+rri4v
+rron4
+rros4
+rrys4
+4rs2
+r1sa
+rsa5ti
+rs4c
+r2se
+r3sec
+rse4cr
+rs5er.
+rs3es
+rse5v2
+r1sh
+r5sha
+r1si
+r4si4b
+rson3
+r1sp
+r5sw
+rtach4
+r4tag
+r3teb
+rten4d
+rte5o
+r1ti
+rt5ib
+rti4d
+r4tier
+r3tig
+rtil3i
+rtil4l
+r4tily
+r4tist
+r4tiv
+r3tri
+rtroph4
+rt4sh
+ru3a
+ru3e4l
+ru3en
+ru4gl
+ru3in
+rum3pl
+ru2n
+runk5
+run4ty
+r5usc
+ruti5n
+rv4e
+rvel4i
+r3ven
+rv5er.
+r5vest
+r3vey
+r3vic
+rvi4v
+r3vo
+r1w
+ry4c
+5rynge
+ry3t
+sa2
+2s1ab
+5sack
+sac3ri
+s3act
+5sai
+salar4
+sal4m
+sa5lo
+sal4t
+3sanc
+san4de
+s1ap
+sa5ta
+5sa3tio
+sat3u
+sau4
+sa5vor
+5saw
+4s5b
+scan4t5
+sca4p
+scav5
+s4ced
+4scei
+s4ces
+sch2
+s4cho
+3s4cie
+5scin4d
+scle5
+s4cli
+scof4
+4scopy
+scour5a
+s1cu
+4s5d
+4se.
+se4a
+seas4
+sea5w
+se2c3o
+3sect
+4s4ed
+se4d4e
+s5edl
+se2g
+seg3r
+5sei
+se1le
+5self
+5selv
+4seme
+se4mol
+sen5at
+4senc
+sen4d
+s5ened
+sen5g
+s5enin
+4sentd
+4sentl
+sep3a3
+4s1er.
+s4erl
+ser4o
+4servo
+s1e4s
+se5sh
+ses5t
+5se5um
+5sev
+sev3en
+sew4i
+5sex
+4s3f
+2s3g
+s2h
+2sh.
+sh1er
+5shev
+sh1in
+sh3io
+3ship
+shiv5
+sho4
+sh5old
+shon3
+shor4
+short5
+4shw
+si1b
+s5icc
+3side.
+5sides
+5sidi
+si5diz
+4signa
+sil4e
+4sily
+2s1in
+s2ina
+5sine.
+s3ing
+1sio
+5sion
+sion5a
+si2r
+sir5a
+1sis
+3sitio
+5siu
+1siv
+5siz
+sk2
+4ske
+s3ket
+sk5ine
+sk5ing
+s1l2
+s3lat
+s2le
+slith5
+2s1m
+s3ma
+small3
+sman3
+smel4
+s5men
+5smith
+smol5d4
+s1n4
+1so
+so4ce
+soft3
+so4lab
+sol3d2
+so3lic
+5solv
+3som
+3s4on.
+sona4
+son4g
+s4op
+5sophic
+s5ophiz
+s5ophy
+sor5c
+sor5d
+4sov
+so5vi
+2spa
+5spai
+spa4n
+spen4d
+2s5peo
+2sper
+s2phe
+3spher
+spho5
+spil4
+sp5ing
+4spio
+s4ply
+s4pon
+spor4
+4spot
+squal4l
+s1r
+2ss
+s1sa
+ssas3
+s2s5c
+s3sel
+s5seng
+s4ses.
+s5set
+s1si
+s4sie
+ssi4er
+ss5ily
+s4sl
+ss4li
+s4sn
+sspend4
+ss2t
+ssur5a
+ss5w
+2st.
+s2tag
+s2tal
+stam4i
+5stand
+s4ta4p
+5stat.
+s4ted
+stern5i
+s5tero
+ste2w
+stew5a
+s3the
+st2i
+s4ti.
+s5tia
+s1tic
+5stick
+s4tie
+s3tif
+st3ing
+5stir
+s1tle
+5stock
+stom3a
+5stone
+s4top
+3store
+st4r
+s4trad
+5stratu
+s4tray
+s4trid
+4stry
+4st3w
+s2ty
+1su
+su1al
+su4b3
+su2g3
+su5is
+suit3
+s4ul
+su2m
+sum3i
+su2n
+su2r
+4sv
+sw2
+4swo
+s4y
+4syc
+3syl
+syn5o
+sy5rin
+1ta
+3ta.
+2tab
+ta5bles
+5taboliz
+4taci
+ta5do
+4taf4
+tai5lo
+ta2l
+ta5la
+tal5en
+tal3i
+4talk
+tal4lis
+ta5log
+ta5mo
+tan4de
+tanta3
+ta5per
+ta5pl
+tar4a
+4tarc
+4tare
+ta3riz
+tas4e
+ta5sy
+4tatic
+ta4tur
+taun4
+tav4
+2taw
+tax4is
+2t1b
+4tc
+t4ch
+tch5et
+4t1d
+4te.
+tead4i
+4teat
+tece4
+5tect
+2t1ed
+te5di
+1tee
+teg4
+te5ger
+te5gi
+3tel.
+teli4
+5tels
+te2ma2
+tem3at
+3tenan
+3tenc
+3tend
+4tenes
+1tent
+ten4tag
+1teo
+te4p
+te5pe
+ter3c
+5ter3d
+1teri
+ter5ies
+ter3is
+teri5za
+5ternit
+ter5v
+4tes.
+4tess
+t3ess.
+teth5e
+3teu
+3tex
+4tey
+2t1f
+4t1g
+2th.
+than4
+th2e
+4thea
+th3eas
+the5at
+the3is
+3thet
+th5ic.
+th5ica
+4thil
+5think
+4thl
+th5ode
+5thodic
+4thoo
+thor5it
+tho5riz
+2ths
+1tia
+ti4ab
+ti4ato
+2ti2b
+4tick
+t4ico
+t4ic1u
+5tidi
+3tien
+tif2
+ti5fy
+2tig
+5tigu
+till5in
+1tim
+4timp
+tim5ul
+2t1in
+t2ina
+3tine.
+3tini
+1tio
+ti5oc
+tion5ee
+5tiq
+ti3sa
+3tise
+tis4m
+ti5so
+tis4p
+5tistica
+ti3tl
+ti4u
+1tiv
+tiv4a
+1tiz
+ti3za
+ti3zen
+2tl
+t5la
+tlan4
+3tle.
+3tled
+3tles.
+t5let.
+t5lo
+4t1m
+tme4
+2t1n2
+1to
+to3b
+to5crat
+4todo
+2tof
+to2gr
+to5ic
+to2ma
+tom4b
+to3my
+ton4ali
+to3nat
+4tono
+4tony
+to2ra
+to3rie
+tor5iz
+tos2
+5tour
+4tout
+to3war
+4t1p
+1tra
+tra3b
+tra5ch
+traci4
+trac4it
+trac4te
+tras4
+tra5ven
+trav5es5
+tre5f
+tre4m
+trem5i
+5tria
+tri5ces
+5tricia
+4trics
+2trim
+tri4v
+tro5mi
+tron5i
+4trony
+tro5phe
+tro3sp
+tro3v
+tru5i
+trus4
+4t1s2
+t4sc
+tsh4
+t4sw
+4t3t2
+t4tes
+t5to
+ttu4
+1tu
+tu1a
+tu3ar
+tu4bi
+tud2
+4tue
+4tuf4
+5tu3i
+3tum
+tu4nis
+2t3up.
+3ture
+5turi
+tur3is
+tur5o
+tu5ry
+3tus
+4tv
+tw4
+4t1wa
+twis4
+4two
+1ty
+4tya
+2tyl
+type3
+ty5ph
+4tz
+tz4e
+4uab
+uac4
+ua5na
+uan4i
+uar5ant
+uar2d
+uar3i
+uar3t
+u1at
+uav4
+ub4e
+u4bel
+u3ber
+u4bero
+u1b4i
+u4b5ing
+u3ble.
+u3ca
+uci4b
+uc4it
+ucle3
+u3cr
+u3cu
+u4cy
+ud5d
+ud3er
+ud5est
+udev4
+u1dic
+ud3ied
+ud3ies
+ud5is
+u5dit
+u4don
+ud4si
+u4du
+u4ene
+uens4
+uen4te
+uer4il
+3ufa
+u3fl
+ugh3en
+ug5in
+2ui2
+uil5iz
+ui4n
+u1ing
+uir4m
+uita4
+uiv3
+uiv4er.
+u5j
+4uk
+u1la
+ula5b
+u5lati
+ulch4
+5ulche
+ul3der
+ul4e
+u1len
+ul4gi
+ul2i
+u5lia
+ul3ing
+ul5ish
+ul4lar
+ul4li4b
+ul4lis
+4ul3m
+u1l4o
+4uls
+uls5es
+ul1ti
+ultra3
+4ultu
+u3lu
+ul5ul
+ul5v
+um5ab
+um4bi
+um4bly
+u1mi
+u4m3ing
+umor5o
+um2p
+unat4
+u2ne
+un4er
+u1ni
+un4im
+u2nin
+un5ish
+uni3v
+un3s4
+un4sw
+unt3ab
+un4ter.
+un4tes
+unu4
+un5y
+un5z
+u4ors
+u5os
+u1ou
+u1pe
+uper5s
+u5pia
+up3ing
+u3pl
+up3p
+upport5
+upt5ib
+uptu4
+u1ra
+4ura.
+u4rag
+u4ras
+ur4be
+urc4
+ur1d
+ure5at
+ur4fer
+ur4fr
+u3rif
+uri4fic
+ur1in
+u3rio
+u1rit
+ur3iz
+ur2l
+url5ing.
+ur4no
+uros4
+ur4pe
+ur4pi
+urs5er
+ur5tes
+ur3the
+urti4
+ur4tie
+u3ru
+2us
+u5sad
+u5san
+us4ap
+usc2
+us3ci
+use5a
+u5sia
+u3sic
+us4lin
+us1p
+us5sl
+us5tere
+us1tr
+u2su
+usur4
+uta4b
+u3tat
+4ute.
+4utel
+4uten
+uten4i
+4u1t2i
+uti5liz
+u3tine
+ut3ing
+ution5a
+u4tis
+5u5tiz
+u4t1l
+ut5of
+uto5g
+uto5matic
+u5ton
+u4tou
+uts4
+u3u
+uu4m
+u1v2
+uxu3
+uz4e
+1va
+5va.
+2v1a4b
+vac5il
+vac3u
+vag4
+va4ge
+va5lie
+val5o
+val1u
+va5mo
+va5niz
+va5pi
+var5ied
+3vat
+4ve.
+4ved
+veg3
+v3el.
+vel3li
+ve4lo
+v4ely
+ven3om
+v5enue
+v4erd
+5vere.
+v4erel
+v3eren
+ver5enc
+v4eres
+ver3ie
+vermi4n
+3verse
+ver3th
+v4e2s
+4ves.
+ves4te
+ve4te
+vet3er
+ve4ty
+vi5ali
+5vian
+5vide.
+5vided
+4v3iden
+5vides
+5vidi
+v3if
+vi5gn
+vik4
+2vil
+5vilit
+v3i3liz
+v1in
+4vi4na
+v2inc
+vin5d
+4ving
+vio3l
+v3io4r
+vi1ou
+vi4p
+vi5ro
+vis3it
+vi3so
+vi3su
+4viti
+vit3r
+4vity
+3viv
+5vo.
+voi4
+3vok
+vo4la
+v5ole
+5volt
+3volv
+vom5i
+vor5ab
+vori4
+vo4ry
+vo4ta
+4votee
+4vv4
+v4y
+w5abl
+2wac
+wa5ger
+wag5o
+wait5
+w5al.
+wam4
+war4t
+was4t
+wa1te
+wa5ver
+w1b
+wea5rie
+weath3
+wed4n
+weet3
+wee5v
+wel4l
+w1er
+west3
+w3ev
+whi4
+wi2
+wil2
+will5in
+win4de
+win4g
+wir4
+3wise
+with3
+wiz5
+w4k
+wl4es
+wl3in
+w4no
+1wo2
+wom1
+wo5ven
+w5p
+wra4
+wri4
+writa4
+w3sh
+ws4l
+ws4pe
+w5s4t
+4wt
+wy4
+x1a
+xac5e
+x4ago
+xam3
+x4ap
+xas5
+x3c2
+x1e
+xe4cuto
+x2ed
+xer4i
+xe5ro
+x1h
+xhi2
+xhil5
+xhu4
+x3i
+xi5a
+xi5c
+xi5di
+x4ime
+xi5miz
+x3o
+x4ob
+x3p
+xpan4d
+xpecto5
+xpe3d
+x1t2
+x3ti
+x1u
+xu3a
+xx4
+y5ac
+3yar4
+y5at
+y1b
+y1c
+y2ce
+yc5er
+y3ch
+ych4e
+ycom4
+ycot4
+y1d
+y5ee
+y1er
+y4erf
+yes4
+ye4t
+y5gi
+4y3h
+y1i
+y3la
+ylla5bl
+y3lo
+y5lu
+ymbol5
+yme4
+ympa3
+yn3chr
+yn5d
+yn5g
+yn5ic
+5ynx
+y1o4
+yo5d
+y4o5g
+yom4
+yo5net
+y4ons
+y4os
+y4ped
+yper5
+yp3i
+y3po
+y4poc
+yp2ta
+y5pu
+yra5m
+yr5ia
+y3ro
+yr4r
+ys4c
+y3s2e
+ys3ica
+ys3io
+3ysis
+y4so
+yss4
+ys1t
+ys3ta
+ysur4
+y3thin
+yt3ic
+y1w
+za1
+z5a2b
+zar2
+4zb
+2ze
+ze4n
+ze4p
+z1er
+ze3ro
+zet4
+2z1i
+z4il
+z4is
+5zl
+4zm
+1zo
+zo4m
+zo5ol
+zte4
+4z1z2
+z4zy
+% hyphen.tex patterns end here, and additional patterns begin:
+.con5gr
+.de5riva
+.dri5v4
+.eth1y6l1
+.eu4ler
+.ev2
+.ever5si5b
+.ga4s1om1
+.ge4ome
+.ge5ot1
+.he3mo1
+.he3p6a
+.he3roe
+.in5u2t
+.kil2n3i
+.ko6r1te1
+.le6ices
+.me4ga1l
+.met4ala
+.mim5i2c1
+.mi1s4ers
+.ne6o3f
+.noe1th
+.non1e2m
+.poly1s
+.post1am
+.pre1am
+.rav5en1o
+.semi5
+.sem4ic
+.semid6
+.semip4
+.semir4
+.sem6is4
+.semiv4
+.sph6in1
+.spin1o
+.ta5pes1tr
+.te3legr
+.to6pog
+.to2q
+.un3at5t
+.un5err5
+.vi2c3ar
+.we2b1l
+.re1e4c
+a5bolic
+a2cabl
+af6fish
+am1en3ta5b
+anal6ys
+ano5a2c
+ans5gr
+ans3v
+anti1d
+an3ti1n2
+anti1re
+a4pe5able
+ar3che5t
+ar2range
+as5ymptot
+ath3er1o1s
+at6tes.
+augh4tl
+au5li5f
+av3iou
+back2er.
+ba6r1onie
+ba1thy
+bbi4t
+be2vie
+bi5d2if
+bil2lab
+bio5m
+bi1orb
+bio1rh
+b1i3tive
+blan2d1
+blin2d1
+blon2d2
+bor1no5
+bo2t1u1l
+brus4q
+bus6i2er
+bus6i2es
+buss4ing
+but2ed.
+but4ted
+cad5e1m
+cat1a1s2
+4chs.
+chs3hu
+chie5vo
+cig3a3r
+cin2q
+cle4ar
+co6ph1o3n
+cous2ti
+cri3tie
+croc1o1d
+cro5e2co
+c2tro3me6c
+1cu2r1ance
+2d3alone
+data1b
+dd5a5b
+d2d5ib
+de4als.
+de5clar1
+de2c5lina
+de3fin3iti
+de2mos
+des3ic
+de2tic
+dic1aid
+dif5fra
+3di1methy
+di2ren
+di2rer
+2d1lead
+2d1li2e
+3do5word
+dren1a5l
+drif2t1a
+d1ri3pleg5
+drom3e5d
+d3tab
+du2al.
+du1op1o1l
+ea4n3ies
+e3chas
+edg1l
+ed1uling
+eli2t1is
+e1loa
+en1dix
+eo3grap
+1e6p3i3neph1
+e2r3i4an.
+e3spac6i
+eth1y6l1ene
+5eu2clid1
+feb1rua
+fermi1o
+3fich
+fit5ted.
+fla1g6el
+flow2er.
+3fluor
+gen2cy.
+ge3o1d
+ght1we
+g1lead
+get2ic.
+4g1lish
+5glo5bin
+1g2nac
+gnet1ism
+gno5mo
+g2n1or.
+g2noresp
+2g1o4n3i1za
+graph5er.
+griev1
+g1utan
+hair1s
+ha2p3ar5r
+hatch1
+hex2a3
+hite3sid
+h3i5pel1a4
+hnau3z
+ho6r1ic.
+h2t1eou
+hypo1tha
+id4ios
+ifac1et
+ign4it
+ignit1er
+i4jk
+im3ped3a
+infra1s2
+i5nitely.
+irre6v3oc
+i1tesima
+ith5i2l
+itin5er5ar
+janu3a
+japan1e2s
+je1re1m
+1ke6ling
+1ki5netic
+1kovian
+k3sha
+la4c3i5e
+lai6n3ess
+lar5ce1n
+l3chai
+l3chil6d1
+lead6er.
+lea4s1a
+1lec3ta6b
+le3g6en2dre
+1le1noid
+lith1o5g
+ll1fl
+l2l3ish
+l5mo3nell
+lo1bot1o1
+lo2ges.
+load4ed.
+load6er.
+l3tea
+lth5i2ly
+lue1p
+1lunk3er
+1lum5bia.
+3lyg1a1mi
+ly5styr
+ma1la1p
+m2an.
+man3u1sc
+mar1gin1
+medi2c
+med3i3cin
+medio6c1
+me3gran3
+m2en.
+3mi3da5b
+3milita
+mil2l1ag
+mil5li5li
+mi6n3is.
+mi1n2ut1er
+mi1n2ut1est
+m3ma1b
+5maph1ro1
+5moc1ra1t
+mo5e2las
+mol1e5c
+mon4ey1l
+mono3ch
+mo4no1en
+moro6n5is
+mono1s6
+moth4et2
+m1ou3sin
+m5shack2
+mu2dro
+mul2ti5u
+n3ar4chs.
+n3ch2es1t
+ne3back
+2ne1ski
+n1dieck
+nd3thr
+nfi6n3ites
+4n5i4an.
+nge5nes
+ng1ho
+ng1spr
+nk3rup
+n5less
+5noc3er1os
+nom1a6l
+nom5e1no
+n1o1mist
+non1eq
+non1i4so
+5nop1oly.
+no1vemb
+ns5ceiv
+ns4moo
+ntre1p
+obli2g1
+o3chas
+odel3li
+odit1ic
+oerst2
+oke1st
+o3les3ter
+oli3gop1o1
+o1lo3n4om
+o3mecha6
+onom1ic
+o3norma
+o3no2t1o3n
+o3nou
+op1ism.
+or4tho3ni4t
+orth1ri
+or5tively
+o4s3pher
+o5test1er
+o5tes3tor
+oth3e1o1s
+ou3ba3do
+o6v3i4an.
+oxi6d1ic
+pal6mat
+parag6ra4
+par4a1le
+param4
+para3me
+pee2v1
+phi2l3ant
+phi5lat1e3l
+pi2c1a3d
+pli2c1ab
+pli5nar
+poin3ca
+1pole.
+poly1e
+po3lyph1ono
+1prema3c
+pre1neu
+pres2pli
+pro2cess
+proc3i3ty.
+pro2g1e
+3pseu2d
+pseu3d6o3d2
+pseu3d6o3f2
+pto3mat4
+p5trol3
+pu5bes5c
+quain2t1e
+qu6a3si3
+quasir6
+quasis6
+quin5tes5s
+qui3v4ar
+r1abolic
+3rab1o1loi
+ra3chu
+r3a3dig
+radi1o6g
+r2amen
+3ra4m5e1triz
+ra3mou
+ra5n2has
+ra1or
+r3bin1ge
+re2c3i1pr
+rec5t6ang
+re4t1ribu
+r3ial.
+riv1o1l
+6rk.
+rk1ho
+r1krau
+6rks.
+r5le5qu
+ro1bot1
+ro5e2las
+ro5epide1
+ro3mesh
+ro1tron
+r3pau5li
+rse1rad1i
+r1thou
+r1treu
+r1veil
+rz1sc
+sales3c
+sales5w
+5sa3par5il
+sca6p1er
+sca2t1ol
+s4chitz
+schro1ding1
+1sci2utt
+scrap4er.
+scy4th1
+sem1a1ph
+se3mes1t
+se1mi6t5ic
+sep3temb
+shoe1st
+sid2ed.
+side5st
+side5sw
+si5resid
+sky1sc
+3slova1kia
+3s2og1a1my
+so2lute
+3s2pace
+1s2pacin
+spe3cio
+spher1o
+spi2c1il
+spokes5w
+sports3c
+sports3w
+s3qui3to
+s2s1a3chu1
+ss3hat
+s2s3i4an.
+s5sign5a3b
+1s2tamp
+s2t1ant5shi
+star3tli
+sta1ti
+st5b
+1stor1ab
+strat1a1g
+strib5ut
+st5scr
+stu1pi4d1
+styl1is
+su2per1e6
+1sync
+1syth3i2
+swimm6
+5tab1o1lism
+ta3gon.
+talk1a5
+t1a1min
+t6ap6ath
+5tar2rh
+tch1c
+tch3i1er
+t1cr
+teach4er.
+tele2g
+tele1r6o
+3ter1gei
+ter2ic.
+t3ess2es
+tha4l1am
+tho3don
+th1o5gen1i
+tho1k2er
+thy4l1an
+thy3sc
+2t3i4an.
+ti2n3o1m
+t1li2er
+tolo2gy
+tot3ic
+trai3tor1
+tra1vers
+travers3a3b
+treach1e
+tr4ial.
+3tro1le1um
+trof4ic.
+tro3fit
+tro1p2is
+3trop1o5les
+3trop1o5lis
+t1ro1pol3it
+tsch3ie
+ttrib1ut1
+turn3ar
+t1wh
+ty2p5al
+ua3drati
+uad1ratu
+u5do3ny
+uea1m
+u2r1al.
+uri4al.
+us2er.
+v1ativ
+v1oir5du1
+va6guer
+vaude3v
+1verely.
+v1er1eig
+ves1tite
+vi1vip3a3r
+voice1p
+waste3w6a2
+wave1g4
+w3c
+week1n
+wide5sp
+wo4k1en
+wrap3aro
+writ6er.
+x1q
+xquis3
+y5che3d
+ym5e5try
+y1stro
+yes5ter1y
+z3ian.
+z3o1phr
+z2z3w
+% end of additional patterns.
+}
+% DEK's hyphenation exception list, from hyphen.tex; not changed.
+\hyphenation{
+as-so-ciate
+as-so-ciates
+dec-li-na-tion
+oblig-a-tory
+phil-an-thropic
+present
+presents
+project
+projects
+reci-procity
+re-cog-ni-zance
+ref-or-ma-tion
+ret-ri-bu-tion
+ta-ble
+}
diff --git a/scripts/LinuxManBook/hyphenex.en b/scripts/LinuxManBook/hyphenex.en
new file mode 100644
index 000000000..768c0af9d
--- /dev/null
+++ b/scripts/LinuxManBook/hyphenex.en
@@ -0,0 +1,115 @@
+% Hyphenation exceptions for US English,
+% based on hyphenation exception log articles in TUGboat.
+%
+% Copyright 2008 TeX Users Group.
+% You may freely use, modify and/or distribute this file.
+%
+% Stripped down by the GNU roff project to only include the patterns
+% that hyphenate differently when using the hyph-utf8 project's
+% hyph-en-us.tex file (version 2005-05-30).
+%
+% Please contact the TUGboat editorial staff <tugboat@tug.org>
+% for corrections and omissions.
+%
+\hyphenation{
+ anti-deriv-a-tive
+ anti-deriv-a-tives
+ bathy-scaphe
+ co-designer
+ co-designers
+ electro-mechan-i-cal
+ electro-mechano-acoustic
+ fluoro-car-bon
+ free-loaders
+ grand-uncle
+ grand-uncles
+ griev-ances
+ ignore-spaces
+ im-ped-ances
+ input-enc
+ line-spacing
+ meta-stable
+ meta-table
+ meta-tables
+ micro-eco-nomic
+ micro-eco-nomics
+ micro-econ-omy
+ micro-en-ter-prise
+ micro-en-ter-prises
+ micro-organ-ism
+ micro-organ-isms
+ mid-after-noon
+ mine-sweepers
+ mono-spacing
+ nitro-meth-ane
+ non-euclid-ean
+ ortho-nitro-toluene
+ para-di-methyl-benzene
+ para-fluoro-toluene
+ phe-nol-phthalein
+ phtha-lam-ic
+ phthal-ate
+ phthi-sis
+ pre-proces-sor
+ pre-proces-sors
+ re-imple-ment
+ re-imple-ments
+ re-imple-mented
+ re-imple-men-ta-tion
+ ring-leaders
+ round-table
+ round-tables
+ single-space
+ single-spaced
+ single-spacing
+ sky-scrapers
+ sports-writers
+ sub-tables
+ super-deri-va-tion
+ super-deri-va-tions
+ super-ego
+ super-egos
+ waste-water
+ Bembo
+ Chiang
+ Cohen
+ Duane
+ Engle
+ Engel
+ Hibbs
+ Hoek-water
+ Huber
+ Image-Magick
+ Krishna
+ Krish-na-ism
+ Krish-nan
+ Le-gendre
+ Lucas
+ MacBeth
+ Nietz-sche
+ Noord-wijker-hout
+ Open-Office
+ Pres-by-terian
+ Pres-by-terians
+ Pyong-yang
+ Ra-dha-krish-nan
+ Ravi-kumar
+ Reich-lin
+ Schwert
+ Skoup
+ Thiruv-ananda-puram
+ Vieth
+ viiith
+ viith
+ xviiith
+ xviith
+ xxiiird
+ xxiind
+ Ying-yong Shu-xue Ji-suan
+}
+% Here's an erratum from the aforementioned hyph-en-us.tex.
+\hyphenation{
+ dem-o-crat
+}
+
+% EOF
diff --git a/scripts/LinuxManBook/troffrc b/scripts/LinuxManBook/troffrc
new file mode 100644
index 000000000..a2784d78d
--- /dev/null
+++ b/scripts/LinuxManBook/troffrc
@@ -0,0 +1,71 @@
+.\" startup file for GNU troff
+.\"
+.\" Use .do for any groff extensions so that this file works with -C.
+.
+.\" This is tested by pic.
+.nr 0p 0
+.
+.\" Load composite mappings.
+.do mso composite.tmac
+.
+.\" Load generic fallback mappings.
+.do mso fallbacks.tmac
+.
+.\" The groff command defines the .X register if -X was given.
+.do ie r .X \
+. do ds troffrc!ps Xps.tmac
+.el \
+. do ds troffrc!ps ps.tmac
+.do ds troffrc!pdf pdf.tmac
+.do ds troffrc!dvi dvi.tmac
+.do ds troffrc!X75 X.tmac
+.do ds troffrc!X75-12 X.tmac
+.do ds troffrc!X100 X.tmac
+.do ds troffrc!X100-12 X.tmac
+.do ds troffrc!ascii tty.tmac
+.do ds troffrc!latin1 tty.tmac
+.do ds troffrc!utf8 tty.tmac
+.do ds troffrc!cp1047 tty.tmac
+.do ds troffrc!lj4 lj4.tmac
+.do ds troffrc!lbp lbp.tmac
+.do ds troffrc!html html.tmac
+.do if d troffrc!\*[.T] \
+. do mso \*[troffrc!\*[.T]]
+.do rm \
+troffrc!ps \
+troffrc!pdf \
+troffrc!dvi \
+troffrc!X75 \
+troffrc!X75-12 \
+troffrc!X100 \
+troffrc!X100-12 \
+troffrc!ascii \
+troffrc!latin1 \
+troffrc!utf8 \
+troffrc!cp1047 \
+troffrc!lj4 \
+troffrc!lbp \
+troffrc!html
+.
+.\" Test whether we work under EBCDIC and map the no-break space
+.\" character accordingly.
+.do ie '\[char97]'a' \
+. do tr \[char160]\~
+.el \
+. do tr \[char65]\~
+.
+.\" Set the input localization to English.
+.do mso en.tmac
+.
+.\" Handle paper formats on typesetting devices.
+.if t .do mso papersize.tmac
+.
+.\" Handle Encapsulated PostScript images.
+.do mso pspic.tmac
+.do mso pdfpic.tmac
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/scripts/LinuxManBook/utp.mac b/scripts/LinuxManBook/utp.mac
new file mode 100644
index 000000000..ed9027ab7
--- /dev/null
+++ b/scripts/LinuxManBook/utp.mac
@@ -0,0 +1,742 @@
+.ig
+vim:syntax=off
+
+Macros for typesetting _Unix Text Processing_.
+Based on the macros from Chapter 17 and Appendix F
+of that book.
+
+Adapted by Jon Snader as part of a project to make this classic
+book available again.
+
+Version of 16 November 2002
+..
+.RT
+.nr nH 0 \" don't number [ABCD]-heads
+.nr gE 0 \" don't add chapter number to [ABCD]-heads
+.nr chapter_page 0 \" avoid diag. if there's no .Se call
+.ds chapter_name
+\#
+\# Redefine LP so that it can take an argument to suppress spacing
+\#
+.de par*start*nospace
+.ds@auto-end
+.nr \\n[.ev]:pli \\$1
+.nr \\n[.ev]:pri \\$2
+.par@reset
+.ne 1v+\\n(.Vu
+..
+.de LP \"Non indented paragraph. Don't skip space if \\$1 == 0
+.ie '\\$1'0' .par*start*nospace 0 0
+.el .par*start 0 0
+.nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
+..
+\#
+\# Nh - set behavior of numbered headings
+\# $1:
+\# 0 - no numbering
+\# 1 - number all headings
+\# 2 - number A-head only
+\#
+\# $2 (if present):
+\# 0 - don't add section numbers to headers
+\# 1 - prefix headers with section number
+\#
+.de Nh
+. nr nH \\$1
+. if !'\\$2'' .nr gE \\$2
+..
+\#
+\# Square centered vertically
+\#
+.ds square \v'-.25v'\s6\(sq\s0\v'.25v'
+\#
+\# Special A-head for UTP
+\#
+.de utp_Ah
+.sp 26p
+.RT
+.pdfbookmark 2 \\$1
+.ne 6
+.ps 14
+.vs 16
+.lg 0
+.ce
+\fB\*[square] \\$1 \*[square]\fP
+.LP 0
+.lg
+.sp 18p
+.ns
+.if \\n[Ref] .tm Ah: \\*[PDFBOOKMARK.NAME] \\n(PN \\$1
+..
+\#
+\# The [ABCD]-head macros
+\#
+.de standard_Ah \" A-head. $1: title
+.sp 26p
+.RT
+.ne 6
+.ps 14
+.vs 16
+.lg 0
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\fB\c
+.if \\n[nH] \{. \"if producing numbered headings
+. ie \\n[gE] .sec# 2 \" if Se (chapter) macro is
+. \" numbered, then this is on the second level
+. el .sec# 1 \" otherwise it's on the first level
+.\}
+\&\\$1\fP
+.LP 0 \" reset paragraph, but not font size, etc.
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+.lg
+.sp 18p
+.ns
+..
+.als Ah standard_Ah
+\#
+.de Bh \" B-head. $1: title
+.sp 23p
+.pdfbookmark 3 \\$1
+.RT
+.ne 6
+.ps 14
+.vs 16
+.lg 0
+\fB\c
+.if '\\n[nH]'1' \{. \"if producing numbered headings
+. ie \\n[gE] .sec# 3 \" if Se (chapter) macro is
+. \" numbered, then this is on the third level
+. el .sec# 2 \" otherwise it's on the second level
+.\}
+\&\\$1\fP
+.LP 0 \" reset paragraph, but not font size, etc.
+.lg
+.sp 15.5p
+.ns
+..
+\#
+.de Ch \" C-head. $1: title
+.sp 18p
+.RT
+.ne 6
+.ps 12
+.vs 14
+.lg 0
+\fB\c
+.if '\\n[nH]'1' \{. \"if producing numbered headings
+. ie \\n[gE] .sec# 4 \" if Se (chapter) macro is
+. \" numbered, then this is on the fourth level
+. el .sec# 3 \" otherwise it's on the third level
+.\}
+\&\\$1\fP
+.LP 0 \" reset paragraph, but not font size, etc.
+.lg
+.sp 12p
+.ns
+..
+\#
+.de Dh \" D-head. $1: title
+.sp 18p
+.RT
+.ne 6
+.ps 10
+.vs 12
+.lg 0
+\fB\c
+.if '\\n[nH]'1' \{. \"if producing numbered headings
+. ie \\n[gE] .sec# 5 \" if Se (chapter) macro is
+. \" numbered, then this is on the fifth level
+. el .sec# 4 \" otherwise it's on the fourth level
+.\}
+\&\\$1.\fP
+.lg
+..
+\#
+\# The Section macro
+\#
+\# This is for Chapters and Appendices
+\#
+.de Se \" Section. $1: number, $2: name
+. \" $3: type (Chapter, Appendix, ...)
+. \" $4: non-null => don't map to uppercase
+.if e \{\
+\&
+.bp
+.\}
+.ds chapter_name \\$2
+.ie !'\\$1'' \{. \" If we have a section number
+. utpbookmark -T "\\$3\\$1" 1 "\\$1. \\$2"
+. ds chapter_head \\$1
+. nr is_alpha 0
+. if '\\$1'A' .set_section 1
+. if '\\$1'B' .set_section 2
+. if '\\$1'C' .set_section 3
+. if '\\$1'D' .set_section 4
+. if '\\$1'E' .set_section 5
+. if '\\$1'F' .set_section 6
+. if '\\$1'G' .set_section 7
+. if '\\$1'H' .set_section 8
+. if '\\$1'I' .set_section 9
+. if '\\$1'J' .set_section 10
+. if '\\$1'K' .set_section 11
+. if '\\$1'L' .set_section 12
+. if '\\$1'M' .set_section 13
+. if '\\$1'N' .set_section 14
+. if '\\$1'O' .set_section 15
+. if '\\$1'P' .set_section 16
+. if '\\$1'Q' .set_section 17
+. if '\\$1'R' .set_section 18
+. if '\\$1'S' .set_section 19
+. if '\\$1'T' .set_section 20
+. if '\\$1'U' .set_section 21
+. if '\\$1'V' .set_section 22
+. if '\\$1'W' .set_section 23
+. if '\\$1'X' .set_section 24
+. if '\\$1'Y' .set_section 25
+. if '\\$1'Z' .set_section 26
+. if !\\n[is_alpha] \{\
+. nr section \\$1
+. nr intH1 \\$1
+. \}
+.\}
+.el \{. \" Illegal Chapter Appendix number
+. nr section 0
+. utpbookmark -T \\$2 1 \\$2
+. \" Might be Preface, etc. so no error diag.
+.\}
+.nr chapter_page2 1 \" Next page starts a chapter, so no header
+.if \\n[%]>1 .bp
+.nr PN \\n[%]
+.ie '\\$3'NONE' .af PN i
+.el .af PN 1
+.nr chapter_page 1 \" This page starts a chapter, number at bottom
+.if !\\n[gE] .nr intH1 0
+.nr intH2 0 \" rescind lower level numbering
+.nr intH3 0
+.nr intH4 0
+.nr intH5 0
+.nr fig_num 0 \" Reset figure number
+.nr table_num 0 \" Reset table number
+.format_section "\\$1" "\\$2" \\$3 \\$4
+.ie '\\$1'' \{\
+.ie '\\$2'' .if \\n[Ref] .tm Se: \\*[PDFBOOKMARK.NAME] \\n(PN \\$3
+.el .if \\n[Ref] .tm Se: \\*[PDFBOOKMARK.NAME] \\n(PN \\$1 \\$2
+.\}
+.el .if \\n[Ref] .tm Se: \\*[PDFBOOKMARK.NAME] \\n(PN \\$1 \\$2
+..
+\#
+\# Set section number for alphabet chapters (appendices)
+\#
+.de set_section
+.nr intH1 \\$1
+.af intH1 A
+.nr section \\$1
+.nr is_alpha 1
+..
+\#
+\# Draw a horizontal line
+\#
+.de horizontal_line
+.br
+\l'\\n[.l]u-\\n[.i]u\&\\$1'
+.br
+..
+.als Hl horizontal_line
+\#
+\# Standard Section Formatting Routine
+\#
+.de format_standard_section
+.RT
+.in 0
+.lg 0
+.if '\\$4'' .tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+.sp
+.na
+.\" Set section type--default is Chapter
+.ie !'\\$3'' \{\
+. ie '\\$3'NONE' .ds chapter_type
+. el .ds chapter_type \\$3
+.\}
+.el .ds chapter_type Chapter
+.\" If there is a section number, output Type and section number
+.if !'\\$1'' \s14\fB\\*[chapter_type] \\$1\fP\s0
+.\" If there is no section number, but there is a type, then output it
+.if '\\$1'' .if !'\\$3'' \s14\fB\\*[chapter_type]\fP\s0
+.sp 5p
+.\" Print the section title if there is one
+\#.if !'\\$2'' \s14\fB\\$2\fP\s0
+.if !'\\$2'' \{\
+.ps 14
+.B
+\&\\$2
+.R
+.ps \\n[PS] \" Reset to PS in case of inline \s
+.\}
+.sp 6p
+.ad b \" Adjust both margins
+.horizontal_line \" Draw horizontal line
+.if '\\$4'' .tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+.sp 3
+.ns
+..
+.als format_section format_standard_section
+\#
+\# numbered header Macros
+\# Special version of NH to generate just the string
+\# Used internally.
+\#
+.de sec#
+.nr NS \\$1 \" Current level
+.if !\\n[.$] .nr NS 1 \" Default is level 1
+.if !\\n[NS] .nr NS 1 \" In case it's NULL or negative
+.nr intH\\n[NS] +1 \" Increment count on current level
+.\" Rescind lower levels
+.if !\\n[NS]-4 .nr intH5 0
+.if !\\n[NS]-3 .nr intH4 0
+.if !\\n[NS]-2 .nr intH3 0
+.if !\\n[NS]-1 .nr intH2 0
+.\" Build up the string
+.if !\\$1 .if \\n[.$] .nr intH1 1
+.ds SN \\n[intH1]
+.ie \\n[NS]-1 .as SN .\\n[intH2]
+.el .as SN . \" either x.y or x.
+.if \\n[NS]-2 .as SN .\\n[intH3]
+.if \\n[NS]-3 .as SN .\\n[intH4]
+.if \\n[NS]-4 .as SN .\\n[intH5]
+'ti \\n[.i]u
+\\*[SN] \" print answer
+..
+\#
+\# Figure start and end macros
+\#
+.de Fs \" start figure $1: reserved space $2: float figure
+.RT
+.ie 'F'\\$2' \{. \" if figure can float
+. nr floating_keep 1
+. KF
+.\}
+.el .nr floating_keep 0
+.if !'\\$1'' \{. \" if space specified
+. ne \\$1
+. fl
+. rs
+. sp \\$1
+.\}
+..
+.de Fe \" end figure $1: title
+.sp
+.nr fig_num +1 \" increment figure counter
+.ie \\n[section] .ds figure \\*[chapter_head].\\n[fig_num]
+.el .ds figure \\n[fig_num]
+.ce
+\f[BI]Figure \\*[figure] \\$1\fP
+.sp
+.if \\n[floating_keep] .KE
+..
+\#
+\# Table start and end macros
+\#
+.de Ts \" table start $1: title
+.nr table_num +1 \" increment table number
+.ie \\n[section] .ds table \\*[chapter_head].\\n[table_num]
+.el .ds table \\n[table_num]
+.sp
+.ce
+\f[BI]Table \\*[table] \\$1\fP
+.LP
+..
+.de Te
+.RT
+.sp
+..
+\#
+\# Numbered lists
+\#
+.nr l0 0 1
+.de Ls
+.\" list start $1: A - ALPHA
+.\" a - alpha
+.\" B - bullet
+.\" N - numeric
+.\" R - ROMAN NUMERALS
+.\" r - roman numerals
+.\" $2: indent
+.\" $3: alternate bullet character
+.br
+.if !'\\$1'A' .if !'\\$1'a' .if !'\\$1'B' .if !'\\$1'N' \
+. if !'\\$1'R' .if !'\\$1'r' .if !'\\$1'' \
+. tm Ls: Need A, a, B, N, R, or r as type
+.nr l\\n+[l0] 0 1
+.ie '\\$1'' \{. \" set defaults
+. if '\\n[l0]'1' .af l\\n[l0] 1 \"numeric at 1st level
+. if '\\n[l0]'2' .af l\\n[l0] a \"alpha at 2nd level
+. if '\\n[l0]'3' .af l\\n[l0] i \"roman at 3rd level
+. if '\\n[l0]'4' .ds l\\n[l0] \(bu \"bullet at 4th level
+. if '\\n[l0]'5' .ds l\\n[l0] \- \"dash at 5th level
+. if \\n[l0]-5 .ds l\\n[l0] \(bu \"bullet above 5th level
+. if \\n[l0]-3 .nr l\\n[l0] 0-1 \"mark bullet and dash as non-incrementing
+.\}
+.el \{\
+. if '\\$1'A' .af l\\n[l0] A
+. if '\\$1'a' .af l\\n[l0] a
+. if '\\$1'B' \{\
+. ie '\\$3'' .ds l\\n[l0] \(bu
+. el .ds l\\n[l0] \\$3
+. nr l\\n[l0] 0-1 \"mark as non-incrementing
+. \}
+. if '\\$1'R' .af l\\n[l0] I
+. if '\\$1'r' .af l\\n[l0] i
+.\}
+.ie !'\\$2'' .nr i\\n[l0] \\$2 \"set list indent
+.el .nr i\\n[l0] 5 \"default indent
+.RS
+..
+.de Li \" List start $1 == 0: no blank line preceding
+.br
+.if '\\$1'0' .ns
+.ie '\\n[l\\n[l0]]'-1' .intIP "\\*[l\\n[l0]]" "\\n[i\\n[l0]]"
+.el \{\
+. nr l\\n[l0] +1
+. intIP "\\n[l\\n[l0]]." "\\n[i\\n[l0]]"
+.\}
+..
+.de Le \" List end $1 == 0: no blank line after
+.br
+.rr l\\n[l0] \" remove number registers
+.rr i\\n[l0]
+.rm l\\n[l0] \" and string register, if any
+.nr l0 -1 \" back one level of nesting
+.RE
+.ie !\\n[l0] \{\
+. ie '\\$1'0' .LP 0
+. el .LP
+.\}
+.el .if !'\\$1'0' .sp \\n[PD]u
+..
+\#
+\# intIP - internal version of IP that centers tag
+\#
+.de intIP
+.sp \\n[PD]u
+.in \\n[\\n[.ev]:il]u*\\n[PI]u-\\n[PI]u+\\$2n
+.nr indent1 \\$2n/2u+\w'\\$1' \" amount to move left
+\#.nr indent2 \\$2n+\w'\\$1' \" amount to move back
+\#.ta \\n[indent2]u
+.ta \\n[indent1]u
+.ti -\\n[indent1]u
+\\$1\t\c
+..
+\#
+\# Printout and listing macros
+\#
+.ev printout \" set up the listing environment
+.ns
+.ps 9
+.vs 10
+.ft C
+.nf
+.ev
+.de Ps \" printout start $1: indent
+.br
+.ev printout
+.sp \\n[PD]u
+.ie !'\\$1'' .in +\\$1n
+.el .in +5n
+..
+.de Pe \" printout end $1: non-null => no following space
+.br
+.if '\\$1'' .sp \\n[PD]u
+.in
+.ev
+..
+\#
+\# X[1-4]: Side by side virtual display screens
+\# Contributed by Heinz-Jürgen Oertel
+\#
+.\" Macro definition
+.\" window width
+.\" Should be calculated, so that the width is 25 equal spaced chars
+.nr my_wid \w'\f(CW12345678901234567890123456\fP'
+.de X1
+.sp
+.mk x_box
+.nf
+.\" left and right page offset
+.po +(u;\\n[.ll]/40)
+.ll \n[my_wid]u
+.in +1n
+.CW
+..
+.de X2
+.mk here
+.in -1n
+.draw_screen \n[my_wid]u \\n[here]u-\\n[x_box]u+\\n[.v]u
+.po +(u;\n[my_wid])
+.\" line length of the centered text
+.ll (u;(\\n[LL]u)-(2*\n[my_wid]u)-(\\n[LL]/20u))
+.sp |\\n[x_box]u
+.ce 10
+.R
+..
+.de X3
+.ce 0
+.sp |\\n[x_box]u
+.po +(u;(\\n[LL]u)-(2*\n[my_wid]u)-(\\n[LL]/20u))
+.ll \n[my_wid]u
+.nf
+.in +1n
+.CW
+..
+.de X4
+.in -1n
+.draw_screen \n[my_wid]u \\n[here]u-\\n[x_box]u+\\n[.v]u
+.R
+.fi
+.po \\n(POu
+.ll \\n(LLu
+..
+\#
+\# Helvetica font change macros
+\#
+.de H \" Helvetica
+.ie !\\n[.$] .ft H
+.el \&\\$3\fH\\$1\fP\\$2
+..
+.de HB \" Helvetica Bold
+.ie !\\n[.$] .ft HB
+.el \&\\$3\f[HB]\\$1\fP\\$2
+..
+.de HI \" Helvetica Italic
+.ie !\\n[.$] .ft HI
+.el \&\\$3\f[HI]\\$1\fP\\$2
+..
+\#
+\# Screen Boxes
+\#
+.de draw_screen \" Draw box with rounded corners, $1: wid $2: ht
+.nr radius (((\\$1)<?(\\$2))/4u)<?.25i
+\v'-\\n[radius]u'\D'a \\n[radius]u 0 0 \\n[radius]u'\c
+\D'l (\\$1)-(2u*\\n[radius]u) 0'\c
+\D'a 0 -\\n[radius]u \\n[radius]u 0'\D'l 0 -(\\$2)+(2u*\\n[radius]u)'\c
+\D'a -\\n[radius]u 0 0 -\\n[radius]u'\D'l -(\\$1)+(2u*\\n[radius]u) 0'\c
+\D'a 0 \\n[radius]u -\\n[radius]u 0'\D'l 0 (\\$2)-(2u*\\n[radius]u)'
+..
+.de SS
+.nr li_save \\n[\\n[.ev]:li]
+.nr ri_save \\n[\\n[.ev]:ri]
+.nr \\n[.ev]:li +3n
+.nr \\n[.ev]:ri +3n
+.br
+.sp \\n[SS_prefix]u
+.ie \\n[.$] \{\
+. nr width \\$1
+. nr height \\$2
+. mk screen_start
+.\}
+.el .nr width 0
+.di screen_div
+.sp .5v
+.in +3n \" Leave extra room for the rounded corners
+.ll -3n
+.lt -3n
+\&
+..
+.de SE
+.br
+.di
+.ne \\n[dn]u
+.ev nf
+.screen_div
+.ev
+.in -3n
+.ll +3n
+.lt +3n
+.nr \\n[.ev]:li \\n[li_save]
+.nr \\n[.ev]:ri \\n[ri_save]
+.ie !\\n[width] \{\
+. mk screen_end
+\#. draw_screen \\n[dl]u+3n \\n[dn]u+\\n[.v]u
+. draw_screen \\n[.l]u \\n[dn]u+\\n[.v]u
+.\}
+.el \{\
+. sp |\\n[screen_start]u+\\n[height]u-\\n[.v]u
+. mk screen_end
+. draw_screen \\n[width]u \\n[height]u
+.\}
+.sp |\\n[screen_end]u+1
+..
+\#
+\# Notes macros
+\#
+.nr note_counter 0
+.nr rnotes 0
+.ev notes
+.par*env-init
+.ll \n[LL]u
+.lt \n[LL]u
+.ps \n[PS]
+.vs \n[VS]
+.ev
+.de Rn \" Reviewer note, $1: note
+.sp
+\fBNote to reviewers:\fP \\$1
+.sp
+.ev notes
+.da rev_notes
+.sp 0.2v
+.in 0
+.ie \\n[do-page] \(sq Page \\n[PN] (\\*[page-utp]): \\$1
+.el \(sq Page \\n(PN: \\$1
+.br
+.da
+.nr rnotes 1
+.ev
+..
+.de Pn \" Personal note, $1: note
+.ev notes
+.if \\n[note_counter]<1 .nr note_counter 0 1
+.da pers_notes
+.br
+.IP \\n+[note_counter]. 5n
+\\$1
+.ie \\n[do-page] \ (Page \\n[PN]/\\*[page-utp])
+.el \ (Page \\n(PN)
+.br
+.da
+.ev
+..
+\#
+\# End Macro
+\#
+\# Output diverted material
+\#
+.de EM
+.br
+.if \\n[rnotes]=1 \{\
+\&\c
+' bp
+. ce
+\fBNotes to Reviewers\fP
+. sp 2
+. ev notes
+. nf
+. rev_notes
+. ev
+.\}
+.if \\n[note_counter]>0 \{\
+. br
+\&\c
+' bp
+. ce
+\fBPersonal Notes\fP
+. sp 2
+. ev notes
+. nf
+. pers_notes
+. ev
+.\}
+..
+\#
+\# UTP top and bottom page processing
+\#
+.de utp_top
+.ev header_footer
+.nr PN \\n[%]
+.if !\\n[chapter_page2] \{. \" if this page doesn't start a chapter
+. ie o .tl ''\\*[chapter_name]'\\n[PN]'
+. el .tl '\\n[PN]'\*[square] Unix Text Processing \*[square]''
+.\}
+.ev
+..
+.de utp_bottom
+.ev header_footer
+.if \\n[chapter_page] \{\
+. tl ''\\n[PN]''
+. nr chapter_page 0
+. nr chapter_page2 0
+.\}
+.ev
+..
+\#.de page
+\#.mk page-vpos
+\#.nr page-hpos \\n[.k]
+\#.po \\n[PO]u-4n
+\#.br
+\#\\$1
+\#.br
+\#.po \\n[PO]u
+\#.sp |\\n[page-vpos]u
+\#\h'|\\n[page-hpos]u'
+\#..
+.de do-page \" Enable the .page macro
+.nr do-page 1
+..
+.de page \" Capture the original UTP page numbers
+.ds page-utp \\$1
+.if \\n[do-page] \{\
+. mk page-pos
+. ev page-env
+' di page-num
+' nf
+\\$1
+. ev
+. di
+. mk page-trap
+. nr page-trap +.1v
+. wh \\n[page-trap]u page-put
+.\}
+..
+.de page-put \" Place the UTP page number in the left margin
+.mk page-end
+.wh \\n[page-trap]u
+'sp |\\n[page-pos]u
+.ev page-env
+'po \\n[PO]u-5n
+'fi
+.page-num
+.br
+.ev
+'po \\n[PO]u
+'sp |\\n[page-end]u
+..
+.de ix
+.ie '\\n(.z'' \{\
+. if !'\\$1'%end' \{\
+. ds ixbk ix:bm\\n+[ixno]
+. pdfhref M -N \\*[ixbk]
+. \}
+. if \\n[Ref] .tm ix: \\$* \\n% \\*[ixbk]
+.\}
+.el \\!.ix \\$*
+..
+\#
+\# Set defaults for UTP
+\#
+.de utp
+.ps 10
+.vs 12
+.nr PS 10
+.nr VS 12
+.nr SS_prefix 1v
+.nr do-page 0
+.Nh 0 0
+.als Ah utp_Ah
+.als chapter Se
+.als PT utp_top
+.als BT utp_bottom
+.ev header_footer
+.ll \\n[LL]u
+.lt \\n[LL]u
+.ps \\n[PS]
+.vs \\n[VS]
+.ev
+..
+.de utpbookmark
+.ie '\\*[.T]'ps' \{\
+. pdfhref M -N \\$2 -- \\$4
+. if !dpdf:href.map .tm gropdf-info:href \\$2 \\$4
+. pdfbookmark \\$3 \\$4
+.\}
+.el .pdfbookmark \\$*
+..
+.em EM