From 1610d2225c86336711832d4bca1c98abbabba123 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 1 May 2023 11:36:30 -0400 Subject: [PATCH] Update: Add support for 13.2, update config file --- bastille-init | 28 +- conf/bastille.conf.ext | 8 +- conf/bastille.conf.sample | 64 + .../system/freebsd-update/13.2/freebsd-update | 3490 +++++++++++++++++ .../freebsd-update/13.2/freebsd-update.conf | 79 + conf/system/include/13.2/ar | Bin 0 -> 51160 bytes conf/system/include/13.2/diff3 | Bin 0 -> 29928 bytes conf/system/include/13.2/jib | 418 ++ conf/system/include/13.2/makewhatis | Bin 0 -> 508504 bytes conf/system/include/13.2/setfib | Bin 0 -> 7736 bytes conf/system/include/13.2/sum | Bin 0 -> 11888 bytes unionfs.sh | 2 +- 12 files changed, 4083 insertions(+), 6 deletions(-) create mode 100644 conf/bastille.conf.sample create mode 100755 conf/system/freebsd-update/13.2/freebsd-update create mode 100644 conf/system/freebsd-update/13.2/freebsd-update.conf create mode 100755 conf/system/include/13.2/ar create mode 100644 conf/system/include/13.2/diff3 create mode 100644 conf/system/include/13.2/jib create mode 100644 conf/system/include/13.2/makewhatis create mode 100644 conf/system/include/13.2/setfib create mode 100644 conf/system/include/13.2/sum diff --git a/bastille-init b/bastille-init index 0898f62..c971c86 100755 --- a/bastille-init +++ b/bastille-init @@ -9,7 +9,7 @@ # Debug script #set -x -# Copyright (c) 2019-2021, José Rivera (joserprg@gmail.com). +# Copyright (c) 2019-2023, José Rivera (joserprg@gmail.com). # All rights reserved. # Redistribution and use in source and binary forms, with or without @@ -82,7 +82,8 @@ BASTILE_VERSION="https://raw.githubusercontent.com/BastilleBSD/${APPNAME}/${BRAN GITURL="https://github.com/JRGTH/xigmanas-${APPNAME}-extension/archive/${BRANCH}.zip" VERFILE="https://raw.githubusercontent.com/JRGTH/xigmanas-${APPNAME}-extension/${BRANCH}/version" URL_FREEBSD="http://ftp.freebsd.org/pub/FreeBSD/releases/" -URL_HARDENEDBSD="http://installer.hardenedbsd.org/pub/hardenedbsd/" +URL_HARDENEDBSD="https://www.midnightbsd.org/ftp/MidnightBSD/releases/" +URL_MIDNIGHTBSD="https://www.midnightbsd.org/ftp/MidnightBSD/releases/" OPT="${1}" # Bastille required @@ -164,6 +165,9 @@ runtime_config() fi fi fi + + # Check and append new config parameters. + update_config } bastille_initial_download() @@ -221,7 +225,7 @@ bastille_upgrade() rm -R ${CWDIR}/update # Logging the update event. - UPDATEVERSION=$(cat ${BASTILLEPATH}/${APPNAME} | grep BASTILLE_VERSION= | cut -d"=" -f2) + UPDATEVERSION=$(cat ${BASTILLEPATH}/${APPNAME} | grep BASTILLE_VERSION= | cut -d"=" -f2 | tr -d '."') echo "${DATE}: ${APPNAME} upgraded to ${UPDATEVERSION}" >> ${EXTLOGFILE} echo "${APPNAME} upgraded to version ${UPDATEVERSION}" echo "${APPNAME} package upgrade completed!" @@ -1210,6 +1214,19 @@ update_config() if ! grep -q 'bastille_url_hardenedbsd=' ${BASTILLECONF}; then sysrc -f ${BASTILLECONF} bastille_url_hardenedbsd="${URL_HARDENEDBSD}" fi + if ! grep -q 'bastille_url_midnightbsd=' ${BASTILLECONF}; then + sysrc -f ${BASTILLECONF} bastille_url_midnightbsd="${URL_MIDNIGHTBSD}" + fi + + if ! grep -qw 'bastille_network_pf_ext_if=' ${BASTILLECONF}; then + sysrc -f ${BASTILLECONF} bastille_network_pf_ext_if="ext_if" + fi + if ! grep -qw 'bastille_network_pf_table=' ${BASTILLECONF}; then + sysrc -f ${BASTILLECONF} bastille_network_pf_table="jails" + fi + if ! grep -qw 'bastille_network_gateway6=' ${BASTILLECONF}; then + sysrc -f ${BASTILLECONF} bastille_network_gateway6="" + fi # Template parameters. if ! grep -qw 'bastille_template_base=' ${BASTILLECONF}; then @@ -1235,6 +1252,11 @@ update_config() if grep -qw 'bastille_jail_addr' ${BASTILLECONF}; then sysrc -f ${BASTILLECONF} -x bastille_jail_addr fi + + # Update the bootstrap urls accordingly. + if ! sysrc -n bastille_url_hardenedbsd | grep -q "${URL_HARDENEDBSD}"; then + sysrc -f ${BASTILLECONF} bastille_url_hardenedbsd="${URL_HARDENEDBSD}" + fi } bastille_start() diff --git a/conf/bastille.conf.ext b/conf/bastille.conf.ext index 9474b95..37c28e7 100644 --- a/conf/bastille.conf.ext +++ b/conf/bastille.conf.ext @@ -2,15 +2,16 @@ bastille_prefix="/usr/local/bastille" bastille_backupsdir="${bastille_prefix}/backups" bastille_cachedir="${bastille_prefix}/cache" bastille_jailsdir="${bastille_prefix}/jails" -bastille_logsdir="${bastille_prefix}/logs" bastille_releasesdir="${bastille_prefix}/releases" bastille_templatesdir="${bastille_prefix}/templates" +bastille_logsdir="${bastille_prefix}/logs" bastille_sharedir="/usr/local/share/bastille" bastille_bootstrap_archives="base" bastille_tzdata="etc/UTC" bastille_resolv_conf="/etc/resolv.conf" bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" -bastille_url_hardenedbsd="http://installer.hardenedbsd.org/pub/hardenedbsd/" +bastille_url_hardenedbsd="https://installers.hardenedbsd.org/pub/" +bastille_url_midnightbsd="https://www.midnightbsd.org/ftp/MidnightBSD/releases/" bastille_zfs_enable="" bastille_zfs_zpool="" bastille_zfs_prefix="bastille" @@ -20,8 +21,11 @@ bastille_decompress_xz_options="-c -d -v" bastille_compress_gz_options="-1 -v" bastille_decompress_gz_options="-k -d -c -v" bastille_network_loopback="" +bastille_network_pf_ext_if="ext_if" +bastille_network_pf_table="jails" bastille_network_shared="" bastille_network_gateway="" +bastille_network_gateway6="" bastille_template_base="default/base" bastille_template_empty="" bastille_template_thick="default/thick" diff --git a/conf/bastille.conf.sample b/conf/bastille.conf.sample new file mode 100644 index 0000000..22fc18d --- /dev/null +++ b/conf/bastille.conf.sample @@ -0,0 +1,64 @@ +##################### +## [ BastilleBSD ] ## +##################### + +## default paths +bastille_prefix="/usr/local/bastille" ## default: "/usr/local/bastille" +bastille_backupsdir="${bastille_prefix}/backups" ## default: "${bastille_prefix}/backups" +bastille_cachedir="${bastille_prefix}/cache" ## default: "${bastille_prefix}/cache" +bastille_jailsdir="${bastille_prefix}/jails" ## default: "${bastille_prefix}/jails" +bastille_releasesdir="${bastille_prefix}/releases" ## default: "${bastille_prefix}/releases" +bastille_templatesdir="${bastille_prefix}/templates" ## default: "${bastille_prefix}/templates" +bastille_logsdir="/var/log/bastille" ## default: "/var/log/bastille" + +## bastille scripts directory (assumed by bastille pkg) +bastille_sharedir="/usr/local/share/bastille" ## default: "/usr/local/share/bastille" + +## bootstrap archives, which components of the OS to install. +## base - The base OS, kernel + userland +## lib32 - Libraries for compatibility with 32 bit binaries +## ports - The FreeBSD ports (3rd party applications) tree +## src - The source code to the kernel + userland +## test - The FreeBSD test suite +## this is a whitespace separated list: +## bastille_bootstrap_archives="base lib32 ports src test" +bastille_bootstrap_archives="base" ## default: "base" + +## default timezone +bastille_tzdata="" ## default: empty to use host's time zone + +## default jail resolv.conf +bastille_resolv_conf="/etc/resolv.conf" ## default: "/etc/resolv.conf" + +## bootstrap urls +bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "http://ftp.freebsd.org/pub/FreeBSD/releases/" +bastille_url_hardenedbsd="https://installers.hardenedbsd.org/pub/" ## default: "https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" +bastille_url_midnightbsd="https://www.midnightbsd.org/ftp/MidnightBSD/releases/" ## default: "https://www.midnightbsd.org/pub/MidnightBSD/releases/" + +## ZFS options +bastille_zfs_enable="" ## default: "" +bastille_zfs_zpool="" ## default: "" +bastille_zfs_prefix="bastille" ## default: "${bastille_zfs_zpool}/bastille" +bastille_zfs_options="-o compress=lz4 -o atime=off" ## default: "-o compress=lz4 -o atime=off" + +## Export/Import options +bastille_compress_xz_options="-0 -v" ## default "-0 -v" +bastille_decompress_xz_options="-c -d -v" ## default "-c -d -v" +bastille_compress_gz_options="-1 -v" ## default "-1 -v" +bastille_decompress_gz_options="-k -d -c -v" ## default "-k -d -c -v" + +## Networking +bastille_network_loopback="bastille0" ## default: "bastille0" +bastille_network_pf_ext_if="ext_if" ## default: "ext_if" +bastille_network_pf_table="jails" ## default: "jails" +bastille_network_shared="" ## default: "" +bastille_network_gateway="" ## default: "" +bastille_network_gateway6="" ## default: "" + +## Default Templates +bastille_template_base="default/base" ## default: "default/base" +bastille_template_empty="" ## default: "default/empty" +bastille_template_thick="default/thick" ## default: "default/thick" +bastille_template_clone="default/clone" ## default: "default/clone" +bastille_template_thin="default/thin" ## default: "default/thin" +bastille_template_vnet="default/vnet" ## default: "default/vnet" diff --git a/conf/system/freebsd-update/13.2/freebsd-update b/conf/system/freebsd-update/13.2/freebsd-update new file mode 100755 index 0000000..9743cd6 --- /dev/null +++ b/conf/system/freebsd-update/13.2/freebsd-update @@ -0,0 +1,3490 @@ +#!/bin/sh + +#- +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# Copyright 2004-2007 Colin Percival +# All rights reserved +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted providing that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# $FreeBSD$ + +#### Usage function -- called from command-line handling code. + +# Usage instructions. Options not listed: +# --debug -- don't filter output from utilities +# --no-stats -- don't show progress statistics while fetching files +usage () { + cat < ${LINE}" + exit 1 + fi + done < ${CONFFILE} + + # Merge the settings read from the configuration file with those + # provided at the command line. + mergeconfig +} + +# Provide some default parameters +default_params () { + # Save any parameters already configured, and clear the slate + saveconfig + nullconfig + + # Default configurations + config_WorkDir /var/db/freebsd-update + config_MailTo root + config_AllowAdd yes + config_AllowDelete yes + config_KeepModifiedMetadata yes + config_BaseDir / + config_VerboseLevel stats + config_StrictComponents no + config_BackupKernel yes + config_BackupKernelDir /boot/kernel.old + config_BackupKernelSymbolFiles no + config_CreateBootEnv yes + + # Merge these defaults into the earlier-configured settings + mergeconfig +} + +# Set utility output filtering options, based on ${VERBOSELEVEL} +fetch_setup_verboselevel () { + case ${VERBOSELEVEL} in + debug) + QUIETREDIR="/dev/stderr" + QUIETFLAG=" " + STATSREDIR="/dev/stderr" + DDSTATS=".." + XARGST="-t" + NDEBUG=" " + ;; + nostats) + QUIETREDIR="" + QUIETFLAG="" + STATSREDIR="/dev/null" + DDSTATS=".." + XARGST="" + NDEBUG="" + ;; + stats) + QUIETREDIR="/dev/null" + QUIETFLAG="-q" + STATSREDIR="/dev/stdout" + DDSTATS="" + XARGST="" + NDEBUG="-n" + ;; + esac +} + +# Perform sanity checks and set some final parameters +# in preparation for fetching files. Figure out which +# set of updates should be downloaded: If the user is +# running *-p[0-9]+, strip off the last part; if the +# user is running -SECURITY, call it -RELEASE. Chdir +# into the working directory. +fetchupgrade_check_params () { + export HTTP_USER_AGENT="freebsd-update (${COMMAND}, `uname -r`)" + + _SERVERNAME_z=\ +"SERVERNAME must be given via command line or configuration file." + _KEYPRINT_z="Key must be given via -k option or configuration file." + _KEYPRINT_bad="Invalid key fingerprint: " + _WORKDIR_bad="Directory does not exist or is not writable: " + _WORKDIR_bad2="Directory is not on a persistent filesystem: " + + if [ -z "${SERVERNAME}" ]; then + echo -n "`basename $0`: " + echo "${_SERVERNAME_z}" + exit 1 + fi + if [ -z "${KEYPRINT}" ]; then + echo -n "`basename $0`: " + echo "${_KEYPRINT_z}" + exit 1 + fi + if ! echo "${KEYPRINT}" | grep -qE "^[0-9a-f]{64}$"; then + echo -n "`basename $0`: " + echo -n "${_KEYPRINT_bad}" + echo ${KEYPRINT} + exit 1 + fi + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + case `df -T ${WORKDIR}` in */dev/md[0-9]* | *tmpfs*) + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad2}" + echo ${WORKDIR} + exit 1 + ;; + esac + chmod 700 ${WORKDIR} + cd ${WORKDIR} || exit 1 + + # Generate release number. The s/SECURITY/RELEASE/ bit exists + # to provide an upgrade path for FreeBSD Update 1.x users, since + # the kernels provided by FreeBSD Update 1.x are always labelled + # as X.Y-SECURITY. + RELNUM=`uname -r | + sed -E 's,-p[0-9]+,,' | + sed -E 's,-SECURITY,-RELEASE,'` + ARCH=`uname -m` + FETCHDIR=${RELNUM}/${ARCH} + PATCHDIR=${RELNUM}/${ARCH}/bp + + # Disallow upgrade from a version that is not a release + case ${RELNUM} in + *-RELEASE | *-ALPHA* | *-BETA* | *-RC*) + ;; + *) + echo -n "`basename $0`: " + cat <<- EOF + Cannot upgrade from a version that is not a release + (including alpha, beta and release candidates) + using `basename $0`. Instead, FreeBSD can be directly + upgraded by source or upgraded to a RELEASE/RELENG version + prior to running `basename $0`. + Currently running: ${RELNUM} + EOF + exit 1 + ;; + esac + + # Figure out what directory contains the running kernel + BOOTFILE=`sysctl -n kern.bootfile` + KERNELDIR=${BOOTFILE%/kernel} + if ! [ -d ${KERNELDIR} ]; then + echo "Cannot identify running kernel" + exit 1 + fi + + # Figure out what kernel configuration is running. We start with + # the output of `uname -i`, and then make the following adjustments: + # 1. Replace "SMP-GENERIC" with "SMP". Why the SMP kernel config + # file says "ident SMP-GENERIC", I don't know... + # 2. If the kernel claims to be GENERIC _and_ ${ARCH} is "amd64" + # _and_ `sysctl kern.version` contains a line which ends "/SMP", then + # we're running an SMP kernel. This mis-identification is a bug + # which was fixed in 6.2-STABLE. + KERNCONF=`uname -i` + if [ ${KERNCONF} = "SMP-GENERIC" ]; then + KERNCONF=SMP + fi + if [ ${KERNCONF} = "GENERIC" ] && [ ${ARCH} = "amd64" ]; then + if sysctl kern.version | grep -qE '/SMP$'; then + KERNCONF=SMP + fi + fi + + # Define some paths + BSPATCH=/usr/bin/bspatch + SHA256=/sbin/sha256 + PHTTPGET=/usr/libexec/phttpget + + # Set up variables relating to VERBOSELEVEL + fetch_setup_verboselevel + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` +} + +# Perform sanity checks etc. before fetching updates. +fetch_check_params () { + fetchupgrade_check_params + + if ! [ -z "${TARGETRELEASE}" ]; then + echo -n "`basename $0`: " + echo -n "-r option is meaningless with 'fetch' command. " + echo "(Did you mean 'upgrade' instead?)" + exit 1 + fi + + # Check that we have updates ready to install + if [ -f ${BDHASH}-install/kerneldone -a $FORCEFETCH -eq 0 ]; then + echo "You have a partially completed upgrade pending" + echo "Run '$0 install' first." + echo "Run '$0 fetch -F' to proceed anyway." + exit 1 + fi +} + +# Perform sanity checks etc. before fetching upgrades. +upgrade_check_params () { + fetchupgrade_check_params + + # Unless set otherwise, we're upgrading to the same kernel config. + NKERNCONF=${KERNCONF} + + # We need TARGETRELEASE set + _TARGETRELEASE_z="Release target must be specified via -r option." + if [ -z "${TARGETRELEASE}" ]; then + echo -n "`basename $0`: " + echo "${_TARGETRELEASE_z}" + exit 1 + fi + + # The target release should be != the current release. + if [ "${TARGETRELEASE}" = "${RELNUM}" ]; then + echo -n "`basename $0`: " + echo "Cannot upgrade from ${RELNUM} to itself" + exit 1 + fi + + # Turning off AllowAdd or AllowDelete is a bad idea for upgrades. + if [ "${ALLOWADD}" = "no" ]; then + echo -n "`basename $0`: " + echo -n "WARNING: \"AllowAdd no\" is a bad idea " + echo "when upgrading between releases." + echo + fi + if [ "${ALLOWDELETE}" = "no" ]; then + echo -n "`basename $0`: " + echo -n "WARNING: \"AllowDelete no\" is a bad idea " + echo "when upgrading between releases." + echo + fi + + # Set EDITOR to /usr/bin/vi if it isn't already set + : ${EDITOR:='/usr/bin/vi'} +} + +# Perform sanity checks and set some final parameters in +# preparation for installing updates. +install_check_params () { + # Check that we are root. All sorts of things won't work otherwise. + if [ `id -u` != 0 ]; then + echo "You must be root to run this." + exit 1 + fi + + # Check that securelevel <= 0. Otherwise we can't update schg files. + if [ `sysctl -n kern.securelevel` -gt 0 ]; then + echo "Updates cannot be installed when the system securelevel" + echo "is greater than zero." + exit 1 + fi + + # Check that we have a working directory + _WORKDIR_bad="Directory does not exist or is not writable: " + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + cd ${WORKDIR} || exit 1 + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` + + # Check that we have updates ready to install + if ! [ -L ${BDHASH}-install ]; then + echo "No updates are available to install." + if [ $ISFETCHED -eq 0 ]; then + echo "Run '$0 fetch' first." + exit 2 + fi + exit 0 + fi + if ! [ -f ${BDHASH}-install/INDEX-OLD ] || + ! [ -f ${BDHASH}-install/INDEX-NEW ]; then + echo "Update manifest is corrupt -- this should never happen." + echo "Re-run '$0 fetch'." + exit 1 + fi + + # Figure out what directory contains the running kernel + BOOTFILE=`sysctl -n kern.bootfile` + KERNELDIR=${BOOTFILE%/kernel} + if ! [ -d ${KERNELDIR} ]; then + echo "Cannot identify running kernel" + exit 1 + fi +} + +# Creates a new boot environment +install_create_be () { + # Figure out if we're running in a jail and return if we are + if [ `sysctl -n security.jail.jailed` = 1 ]; then + return 1 + fi + # Operating on roots that aren't located at / will, more often than not, + # not touch the boot environment. + if [ "$BASEDIR" != "/" ]; then + return 1 + fi + # Create a boot environment if enabled + if [ ${BOOTENV} = yes ]; then + bectl check 2>/dev/null + case $? in + 0) + # Boot environment are supported + CREATEBE=yes + ;; + 255) + # Boot environments are not supported + CREATEBE=no + ;; + *) + # If bectl returns an unexpected exit code, don't create a BE + CREATEBE=no + ;; + esac + if [ ${CREATEBE} = yes ]; then + echo -n "Creating snapshot of existing boot environment... " + VERSION=`freebsd-version -ku | sort -V | tail -n 1` + TIMESTAMP=`date +"%Y-%m-%d_%H%M%S"` + bectl create ${VERSION}_${TIMESTAMP} + if [ $? -eq 0 ]; then + echo "done."; + else + echo "failed." + exit 1 + fi + fi + fi +} + +# Perform sanity checks and set some final parameters in +# preparation for UNinstalling updates. +rollback_check_params () { + # Check that we are root. All sorts of things won't work otherwise. + if [ `id -u` != 0 ]; then + echo "You must be root to run this." + exit 1 + fi + + # Check that we have a working directory + _WORKDIR_bad="Directory does not exist or is not writable: " + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + cd ${WORKDIR} || exit 1 + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` + + # Check that we have updates ready to rollback + if ! [ -L ${BDHASH}-rollback ]; then + echo "No rollback directory found." + exit 1 + fi + if ! [ -f ${BDHASH}-rollback/INDEX-OLD ] || + ! [ -f ${BDHASH}-rollback/INDEX-NEW ]; then + echo "Update manifest is corrupt -- this should never happen." + exit 1 + fi +} + +# Perform sanity checks and set some final parameters +# in preparation for comparing the system against the +# published index. Figure out which index we should +# compare against: If the user is running *-p[0-9]+, +# strip off the last part; if the user is running +# -SECURITY, call it -RELEASE. Chdir into the working +# directory. +IDS_check_params () { + export HTTP_USER_AGENT="freebsd-update (${COMMAND}, `uname -r`)" + + _SERVERNAME_z=\ +"SERVERNAME must be given via command line or configuration file." + _KEYPRINT_z="Key must be given via -k option or configuration file." + _KEYPRINT_bad="Invalid key fingerprint: " + _WORKDIR_bad="Directory does not exist or is not writable: " + + if [ -z "${SERVERNAME}" ]; then + echo -n "`basename $0`: " + echo "${_SERVERNAME_z}" + exit 1 + fi + if [ -z "${KEYPRINT}" ]; then + echo -n "`basename $0`: " + echo "${_KEYPRINT_z}" + exit 1 + fi + if ! echo "${KEYPRINT}" | grep -qE "^[0-9a-f]{64}$"; then + echo -n "`basename $0`: " + echo -n "${_KEYPRINT_bad}" + echo ${KEYPRINT} + exit 1 + fi + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + cd ${WORKDIR} || exit 1 + + # Generate release number. The s/SECURITY/RELEASE/ bit exists + # to provide an upgrade path for FreeBSD Update 1.x users, since + # the kernels provided by FreeBSD Update 1.x are always labelled + # as X.Y-SECURITY. + RELNUM=`uname -r | + sed -E 's,-p[0-9]+,,' | + sed -E 's,-SECURITY,-RELEASE,'` + ARCH=`uname -m` + FETCHDIR=${RELNUM}/${ARCH} + PATCHDIR=${RELNUM}/${ARCH}/bp + + # Figure out what directory contains the running kernel + BOOTFILE=`sysctl -n kern.bootfile` + KERNELDIR=${BOOTFILE%/kernel} + if ! [ -d ${KERNELDIR} ]; then + echo "Cannot identify running kernel" + exit 1 + fi + + # Figure out what kernel configuration is running. We start with + # the output of `uname -i`, and then make the following adjustments: + # 1. Replace "SMP-GENERIC" with "SMP". Why the SMP kernel config + # file says "ident SMP-GENERIC", I don't know... + # 2. If the kernel claims to be GENERIC _and_ ${ARCH} is "amd64" + # _and_ `sysctl kern.version` contains a line which ends "/SMP", then + # we're running an SMP kernel. This mis-identification is a bug + # which was fixed in 6.2-STABLE. + KERNCONF=`uname -i` + if [ ${KERNCONF} = "SMP-GENERIC" ]; then + KERNCONF=SMP + fi + if [ ${KERNCONF} = "GENERIC" ] && [ ${ARCH} = "amd64" ]; then + if sysctl kern.version | grep -qE '/SMP$'; then + KERNCONF=SMP + fi + fi + + # Define some paths + SHA256=/sbin/sha256 + PHTTPGET=/usr/libexec/phttpget + + # Set up variables relating to VERBOSELEVEL + fetch_setup_verboselevel +} + +#### Core functionality -- the actual work gets done here + +# Use an SRV query to pick a server. If the SRV query doesn't provide +# a useful answer, use the server name specified by the user. +# Put another way... look up _http._tcp.${SERVERNAME} and pick a server +# from that; or if no servers are returned, use ${SERVERNAME}. +# This allows a user to specify "portsnap.freebsd.org" (in which case +# portsnap will select one of the mirrors) or "portsnap5.tld.freebsd.org" +# (in which case portsnap will use that particular server, since there +# won't be an SRV entry for that name). +# +# We ignore the Port field, since we are always going to use port 80. + +# Fetch the mirror list, but do not pick a mirror yet. Returns 1 if +# no mirrors are available for any reason. +fetch_pick_server_init () { + : > serverlist_tried + +# Check that host(1) exists (i.e., that the system wasn't built with the +# WITHOUT_BIND set) and don't try to find a mirror if it doesn't exist. + if ! which -s host; then + : > serverlist_full + return 1 + fi + + echo -n "Looking up ${SERVERNAME} mirrors... " + +# Issue the SRV query and pull out the Priority, Weight, and Target fields. +# BIND 9 prints "$name has SRV record ..." while BIND 8 prints +# "$name server selection ..."; we allow either format. + MLIST="_http._tcp.${SERVERNAME}" + host -t srv "${MLIST}" | + sed -nE "s/${MLIST} (has SRV record|server selection) //Ip" | + cut -f 1,2,4 -d ' ' | + sed -e 's/\.$//' | + sort > serverlist_full + +# If no records, give up -- we'll just use the server name we were given. + if [ `wc -l < serverlist_full` -eq 0 ]; then + echo "none found." + return 1 + fi + +# Report how many mirrors we found. + echo `wc -l < serverlist_full` "mirrors found." + +# Generate a random seed for use in picking mirrors. If HTTP_PROXY +# is set, this will be used to generate the seed; otherwise, the seed +# will be random. + if [ -n "${HTTP_PROXY}${http_proxy}" ]; then + RANDVALUE=`sha256 -qs "${HTTP_PROXY}${http_proxy}" | + tr -d 'a-f' | + cut -c 1-9` + else + RANDVALUE=`jot -r 1 0 999999999` + fi +} + +# Pick a mirror. Returns 1 if we have run out of mirrors to try. +fetch_pick_server () { +# Generate a list of not-yet-tried mirrors + sort serverlist_tried | + comm -23 serverlist_full - > serverlist + +# Have we run out of mirrors? + if [ `wc -l < serverlist` -eq 0 ]; then + cat <<- EOF + No mirrors remaining, giving up. + + This may be because upgrading from this platform (${ARCH}) + or release (${RELNUM}) is unsupported by `basename $0`. Only + platforms with Tier 1 support can be upgraded by `basename $0`. + See https://www.freebsd.org/platforms/ for more info. + + If unsupported, FreeBSD must be upgraded by source. + EOF + return 1 + fi + +# Find the highest priority level (lowest numeric value). + SRV_PRIORITY=`cut -f 1 -d ' ' serverlist | sort -n | head -1` + +# Add up the weights of the response lines at that priority level. + SRV_WSUM=0; + while read X; do + case "$X" in + ${SRV_PRIORITY}\ *) + SRV_W=`echo $X | cut -f 2 -d ' '` + SRV_WSUM=$(($SRV_WSUM + $SRV_W)) + ;; + esac + done < serverlist + +# If all the weights are 0, pretend that they are all 1 instead. + if [ ${SRV_WSUM} -eq 0 ]; then + SRV_WSUM=`grep -E "^${SRV_PRIORITY} " serverlist | wc -l` + SRV_W_ADD=1 + else + SRV_W_ADD=0 + fi + +# Pick a value between 0 and the sum of the weights - 1 + SRV_RND=`expr ${RANDVALUE} % ${SRV_WSUM}` + +# Read through the list of mirrors and set SERVERNAME. Write the line +# corresponding to the mirror we selected into serverlist_tried so that +# we won't try it again. + while read X; do + case "$X" in + ${SRV_PRIORITY}\ *) + SRV_W=`echo $X | cut -f 2 -d ' '` + SRV_W=$(($SRV_W + $SRV_W_ADD)) + if [ $SRV_RND -lt $SRV_W ]; then + SERVERNAME=`echo $X | cut -f 3 -d ' '` + echo "$X" >> serverlist_tried + break + else + SRV_RND=$(($SRV_RND - $SRV_W)) + fi + ;; + esac + done < serverlist +} + +# Take a list of ${oldhash}|${newhash} and output a list of needed patches, +# i.e., those for which we have ${oldhash} and don't have ${newhash}. +fetch_make_patchlist () { + grep -vE "^([0-9a-f]{64})\|\1$" | + tr '|' ' ' | + while read X Y; do + if [ -f "files/${Y}.gz" ] || + [ ! -f "files/${X}.gz" ]; then + continue + fi + echo "${X}|${Y}" + done | sort -u +} + +# Print user-friendly progress statistics +fetch_progress () { + LNC=0 + while read x; do + LNC=$(($LNC + 1)) + if [ $(($LNC % 10)) = 0 ]; then + echo -n $LNC + elif [ $(($LNC % 2)) = 0 ]; then + echo -n . + fi + done + echo -n " " +} + +# Function for asking the user if everything is ok +continuep () { + while read -p "Does this look reasonable (y/n)? " CONTINUE; do + case "${CONTINUE}" in + y*) + return 0 + ;; + n*) + return 1 + ;; + esac + done +} + +# Initialize the working directory +workdir_init () { + mkdir -p files + touch tINDEX.present +} + +# Check that we have a public key with an appropriate hash, or +# fetch the key if it doesn't exist. Returns 1 if the key has +# not yet been fetched. +fetch_key () { + if [ -r pub.ssl ] && [ `${SHA256} -q pub.ssl` = ${KEYPRINT} ]; then + return 0 + fi + + echo -n "Fetching public key from ${SERVERNAME}... " + rm -f pub.ssl + fetch ${QUIETFLAG} http://${SERVERNAME}/${FETCHDIR}/pub.ssl \ + 2>${QUIETREDIR} || true + if ! [ -r pub.ssl ]; then + echo "failed." + return 1 + fi + if ! [ `${SHA256} -q pub.ssl` = ${KEYPRINT} ]; then + echo "key has incorrect hash." + rm -f pub.ssl + return 1 + fi + echo "done." +} + +# Fetch metadata signature, aka "tag". +fetch_tag () { + echo -n "Fetching metadata signature " + echo ${NDEBUG} "for ${RELNUM} from ${SERVERNAME}... " + rm -f latest.ssl + fetch ${QUIETFLAG} http://${SERVERNAME}/${FETCHDIR}/latest.ssl \ + 2>${QUIETREDIR} || true + if ! [ -r latest.ssl ]; then + echo "failed." + return 1 + fi + + openssl rsautl -pubin -inkey pub.ssl -verify \ + < latest.ssl > tag.new 2>${QUIETREDIR} || true + rm latest.ssl + + if ! [ `wc -l < tag.new` = 1 ] || + ! grep -qE \ + "^freebsd-update\|${ARCH}\|${RELNUM}\|[0-9]+\|[0-9a-f]{64}\|[0-9]{10}" \ + tag.new; then + echo "invalid signature." + return 1 + fi + + echo "done." + + RELPATCHNUM=`cut -f 4 -d '|' < tag.new` + TINDEXHASH=`cut -f 5 -d '|' < tag.new` + EOLTIME=`cut -f 6 -d '|' < tag.new` +} + +# Sanity-check the patch number in a tag, to make sure that we're not +# going to "update" backwards and to prevent replay attacks. +fetch_tagsanity () { + # Check that we're not going to move from -pX to -pY with Y < X. + RELPX=`uname -r | sed -E 's,.*-,,'` + if echo ${RELPX} | grep -qE '^p[0-9]+$'; then + RELPX=`echo ${RELPX} | cut -c 2-` + else + RELPX=0 + fi + if [ "${RELPATCHNUM}" -lt "${RELPX}" ]; then + echo + echo -n "Files on mirror (${RELNUM}-p${RELPATCHNUM})" + echo " appear older than what" + echo "we are currently running (`uname -r`)!" + echo "Cowardly refusing to proceed any further." + return 1 + fi + + # If "tag" exists and corresponds to ${RELNUM}, make sure that + # it contains a patch number <= RELPATCHNUM, in order to protect + # against rollback (replay) attacks. + if [ -f tag ] && + grep -qE \ + "^freebsd-update\|${ARCH}\|${RELNUM}\|[0-9]+\|[0-9a-f]{64}\|[0-9]{10}" \ + tag; then + LASTRELPATCHNUM=`cut -f 4 -d '|' < tag` + + if [ "${RELPATCHNUM}" -lt "${LASTRELPATCHNUM}" ]; then + echo + echo -n "Files on mirror (${RELNUM}-p${RELPATCHNUM})" + echo " are older than the" + echo -n "most recently seen updates" + echo " (${RELNUM}-p${LASTRELPATCHNUM})." + echo "Cowardly refusing to proceed any further." + return 1 + fi + fi +} + +# Fetch metadata index file +fetch_metadata_index () { + echo ${NDEBUG} "Fetching metadata index... " + rm -f ${TINDEXHASH} + fetch ${QUIETFLAG} http://${SERVERNAME}/${FETCHDIR}/t/${TINDEXHASH} + 2>${QUIETREDIR} + if ! [ -f ${TINDEXHASH} ]; then + echo "failed." + return 1 + fi + if [ `${SHA256} -q ${TINDEXHASH}` != ${TINDEXHASH} ]; then + echo "update metadata index corrupt." + return 1 + fi + echo "done." +} + +# Print an error message about signed metadata being bogus. +fetch_metadata_bogus () { + echo + echo "The update metadata$1 is correctly signed, but" + echo "failed an integrity check." + echo "Cowardly refusing to proceed any further." + return 1 +} + +# Construct tINDEX.new by merging the lines named in $1 from ${TINDEXHASH} +# with the lines not named in $@ from tINDEX.present (if that file exists). +fetch_metadata_index_merge () { + for METAFILE in $@; do + if [ `grep -E "^${METAFILE}\|" ${TINDEXHASH} | wc -l` \ + -ne 1 ]; then + fetch_metadata_bogus " index" + return 1 + fi + + grep -E "${METAFILE}\|" ${TINDEXHASH} + done | + sort > tINDEX.wanted + + if [ -f tINDEX.present ]; then + join -t '|' -v 2 tINDEX.wanted tINDEX.present | + sort -m - tINDEX.wanted > tINDEX.new + rm tINDEX.wanted + else + mv tINDEX.wanted tINDEX.new + fi +} + +# Sanity check all the lines of tINDEX.new. Even if more metadata lines +# are added by future versions of the server, this won't cause problems, +# since the only lines which appear in tINDEX.new are the ones which we +# specifically grepped out of ${TINDEXHASH}. +fetch_metadata_index_sanity () { + if grep -qvE '^[0-9A-Z.-]+\|[0-9a-f]{64}$' tINDEX.new; then + fetch_metadata_bogus " index" + return 1 + fi +} + +# Sanity check the metadata file $1. +fetch_metadata_sanity () { + # Some aliases to save space later: ${P} is a character which can + # appear in a path; ${M} is the four numeric metadata fields; and + # ${H} is a sha256 hash. + P="[-+./:=,%@_[~[:alnum:]]" + M="[0-9]+\|[0-9]+\|[0-9]+\|[0-9]+" + H="[0-9a-f]{64}" + + # Check that the first four fields make sense. + if gunzip -c < files/$1.gz | + grep -qvE "^[a-z]+\|[0-9a-z-]+\|${P}+\|[fdL-]\|"; then + fetch_metadata_bogus "" + return 1 + fi + + # Remove the first three fields. + gunzip -c < files/$1.gz | + cut -f 4- -d '|' > sanitycheck.tmp + + # Sanity check entries with type 'f' + if grep -E '^f' sanitycheck.tmp | + grep -qvE "^f\|${M}\|${H}\|${P}*\$"; then + fetch_metadata_bogus "" + return 1 + fi + + # Sanity check entries with type 'd' + if grep -E '^d' sanitycheck.tmp | + grep -qvE "^d\|${M}\|\|\$"; then + fetch_metadata_bogus "" + return 1 + fi + + # Sanity check entries with type 'L' + if grep -E '^L' sanitycheck.tmp | + grep -qvE "^L\|${M}\|${P}*\|\$"; then + fetch_metadata_bogus "" + return 1 + fi + + # Sanity check entries with type '-' + if grep -E '^-' sanitycheck.tmp | + grep -qvE "^-\|\|\|\|\|\|"; then + fetch_metadata_bogus "" + return 1 + fi + + # Clean up + rm sanitycheck.tmp +} + +# Fetch the metadata index and metadata files listed in $@, +# taking advantage of metadata patches where possible. +fetch_metadata () { + fetch_metadata_index || return 1 + fetch_metadata_index_merge $@ || return 1 + fetch_metadata_index_sanity || return 1 + + # Generate a list of wanted metadata patches + join -t '|' -o 1.2,2.2 tINDEX.present tINDEX.new | + fetch_make_patchlist > patchlist + + if [ -s patchlist ]; then + # Attempt to fetch metadata patches + echo -n "Fetching `wc -l < patchlist | tr -d ' '` " + echo ${NDEBUG} "metadata patches.${DDSTATS}" + tr '|' '-' < patchlist | + lam -s "${FETCHDIR}/tp/" - -s ".gz" | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${STATSREDIR} | fetch_progress + echo "done." + + # Attempt to apply metadata patches + echo -n "Applying metadata patches... " + tr '|' ' ' < patchlist | + while read X Y; do + if [ ! -f "${X}-${Y}.gz" ]; then continue; fi + gunzip -c < ${X}-${Y}.gz > diff + gunzip -c < files/${X}.gz > diff-OLD + + # Figure out which lines are being added and removed + grep -E '^-' diff | + cut -c 2- | + while read PREFIX; do + look "${PREFIX}" diff-OLD + done | + sort > diff-rm + grep -E '^\+' diff | + cut -c 2- > diff-add + + # Generate the new file + comm -23 diff-OLD diff-rm | + sort - diff-add > diff-NEW + + if [ `${SHA256} -q diff-NEW` = ${Y} ]; then + mv diff-NEW files/${Y} + gzip -n files/${Y} + else + mv diff-NEW ${Y}.bad + fi + rm -f ${X}-${Y}.gz diff + rm -f diff-OLD diff-NEW diff-add diff-rm + done 2>${QUIETREDIR} + echo "done." + fi + + # Update metadata without patches + cut -f 2 -d '|' < tINDEX.new | + while read Y; do + if [ ! -f "files/${Y}.gz" ]; then + echo ${Y}; + fi + done | + sort -u > filelist + + if [ -s filelist ]; then + echo -n "Fetching `wc -l < filelist | tr -d ' '` " + echo ${NDEBUG} "metadata files... " + lam -s "${FETCHDIR}/m/" - -s ".gz" < filelist | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${QUIETREDIR} + + while read Y; do + if ! [ -f ${Y}.gz ]; then + echo "failed." + return 1 + fi + if [ `gunzip -c < ${Y}.gz | + ${SHA256} -q` = ${Y} ]; then + mv ${Y}.gz files/${Y}.gz + else + echo "metadata is corrupt." + return 1 + fi + done < filelist + echo "done." + fi + +# Sanity-check the metadata files. + cut -f 2 -d '|' tINDEX.new > filelist + while read X; do + fetch_metadata_sanity ${X} || return 1 + done < filelist + +# Remove files which are no longer needed + cut -f 2 -d '|' tINDEX.present | + sort > oldfiles + cut -f 2 -d '|' tINDEX.new | + sort | + comm -13 - oldfiles | + lam -s "files/" - -s ".gz" | + xargs rm -f + rm patchlist filelist oldfiles + rm ${TINDEXHASH} + +# We're done! + mv tINDEX.new tINDEX.present + mv tag.new tag + + return 0 +} + +# Extract a subset of a downloaded metadata file containing only the parts +# which are listed in COMPONENTS. +fetch_filter_metadata_components () { + METAHASH=`look "$1|" tINDEX.present | cut -f 2 -d '|'` + gunzip -c < files/${METAHASH}.gz > $1.all + + # Fish out the lines belonging to components we care about. + for C in ${COMPONENTS}; do + look "`echo ${C} | tr '/' '|'`|" $1.all + done > $1 + + # Remove temporary file. + rm $1.all +} + +# Generate a filtered version of the metadata file $1 from the downloaded +# file, by fishing out the lines corresponding to components we're trying +# to keep updated, and then removing lines corresponding to paths we want +# to ignore. +fetch_filter_metadata () { + # Fish out the lines belonging to components we care about. + fetch_filter_metadata_components $1 + + # Canonicalize directory names by removing any trailing / in + # order to avoid listing directories multiple times if they + # belong to multiple components. Turning "/" into "" doesn't + # matter, since we add a leading "/" when we use paths later. + cut -f 3- -d '|' $1 | + sed -e 's,/|d|,|d|,' | + sed -e 's,/|-|,|-|,' | + sort -u > $1.tmp + + # Figure out which lines to ignore and remove them. + for X in ${IGNOREPATHS}; do + grep -E "^${X}" $1.tmp + done | + sort -u | + comm -13 - $1.tmp > $1 + + # Remove temporary files. + rm $1.tmp +} + +# Filter the metadata file $1 by adding lines with "/boot/$2" +# replaced by ${KERNELDIR} (which is `sysctl -n kern.bootfile` minus the +# trailing "/kernel"); and if "/boot/$2" does not exist, remove +# the original lines which start with that. +# Put another way: Deal with the fact that the FOO kernel is sometimes +# installed in /boot/FOO/ and is sometimes installed elsewhere. +fetch_filter_kernel_names () { + grep ^/boot/$2 $1 | + sed -e "s,/boot/$2,${KERNELDIR},g" | + sort - $1 > $1.tmp + mv $1.tmp $1 + + if ! [ -d /boot/$2 ]; then + grep -v ^/boot/$2 $1 > $1.tmp + mv $1.tmp $1 + fi +} + +# For all paths appearing in $1 or $3, inspect the system +# and generate $2 describing what is currently installed. +fetch_inspect_system () { + # No errors yet... + rm -f .err + + # Tell the user why his disk is suddenly making lots of noise + echo -n "Inspecting system... " + + # Generate list of files to inspect + cat $1 $3 | + cut -f 1 -d '|' | + sort -u > filelist + + # Examine each file and output lines of the form + # /path/to/file|type|device-inum|user|group|perm|flags|value + # sorted by device and inode number. + while read F; do + # If the symlink/file/directory does not exist, record this. + if ! [ -e ${BASEDIR}/${F} ]; then + echo "${F}|-||||||" + continue + fi + if ! [ -r ${BASEDIR}/${F} ]; then + echo "Cannot read file: ${BASEDIR}/${F}" \ + >/dev/stderr + touch .err + return 1 + fi + + # Otherwise, output an index line. + if [ -L ${BASEDIR}/${F} ]; then + echo -n "${F}|L|" + stat -n -f '%d-%i|%u|%g|%Mp%Lp|%Of|' ${BASEDIR}/${F}; + readlink ${BASEDIR}/${F}; + elif [ -f ${BASEDIR}/${F} ]; then + echo -n "${F}|f|" + stat -n -f '%d-%i|%u|%g|%Mp%Lp|%Of|' ${BASEDIR}/${F}; + sha256 -q ${BASEDIR}/${F}; + elif [ -d ${BASEDIR}/${F} ]; then + echo -n "${F}|d|" + stat -f '%d-%i|%u|%g|%Mp%Lp|%Of|' ${BASEDIR}/${F}; + else + echo "Unknown file type: ${BASEDIR}/${F}" \ + >/dev/stderr + touch .err + return 1 + fi + done < filelist | + sort -k 3,3 -t '|' > $2.tmp + rm filelist + + # Check if an error occurred during system inspection + if [ -f .err ]; then + return 1 + fi + + # Convert to the form + # /path/to/file|type|user|group|perm|flags|value|hlink + # by resolving identical device and inode numbers into hard links. + cut -f 1,3 -d '|' $2.tmp | + sort -k 1,1 -t '|' | + sort -s -u -k 2,2 -t '|' | + join -1 2 -2 3 -t '|' - $2.tmp | + awk -F \| -v OFS=\| \ + '{ + if (($2 == $3) || ($4 == "-")) + print $3,$4,$5,$6,$7,$8,$9,"" + else + print $3,$4,$5,$6,$7,$8,$9,$2 + }' | + sort > $2 + rm $2.tmp + + # We're finished looking around + echo "done." +} + +# For any paths matching ${MERGECHANGES}, compare $1 and $2 and find any +# files which differ; generate $3 containing these paths and the old hashes. +fetch_filter_mergechanges () { + # Pull out the paths and hashes of the files matching ${MERGECHANGES}. + for F in $1 $2; do + for X in ${MERGECHANGES}; do + grep -E "^${X}" ${F} + done | + cut -f 1,2,7 -d '|' | + sort > ${F}-values + done + + # Any line in $2-values which doesn't appear in $1-values and is a + # file means that we should list the path in $3. + comm -13 $1-values $2-values | + fgrep '|f|' | + cut -f 1 -d '|' > $2-paths + + # For each path, pull out one (and only one!) entry from $1-values. + # Note that we cannot distinguish which "old" version the user made + # changes to; but hopefully any changes which occur due to security + # updates will exist in both the "new" version and the version which + # the user has installed, so the merging will still work. + while read X; do + look "${X}|" $1-values | + head -1 + done < $2-paths > $3 + + # Clean up + rm $1-values $2-values $2-paths +} + +# For any paths matching ${UPDATEIFUNMODIFIED}, remove lines from $[123] +# which correspond to lines in $2 with hashes not matching $1 or $3, unless +# the paths are listed in $4. For entries in $2 marked "not present" +# (aka. type -), remove lines from $[123] unless there is a corresponding +# entry in $1. +fetch_filter_unmodified_notpresent () { + # Figure out which lines of $1 and $3 correspond to bits which + # should only be updated if they haven't changed, and fish out + # the (path, type, value) tuples. + # NOTE: We don't consider a file to be "modified" if it matches + # the hash from $3. + for X in ${UPDATEIFUNMODIFIED}; do + grep -E "^${X}" $1 + grep -E "^${X}" $3 + done | + cut -f 1,2,7 -d '|' | + sort > $1-values + + # Do the same for $2. + for X in ${UPDATEIFUNMODIFIED}; do + grep -E "^${X}" $2 + done | + cut -f 1,2,7 -d '|' | + sort > $2-values + + # Any entry in $2-values which is not in $1-values corresponds to + # a path which we need to remove from $1, $2, and $3, unless it + # that path appears in $4. + comm -13 $1-values $2-values | + sort -t '|' -k 1,1 > mlines.tmp + cut -f 1 -d '|' $4 | + sort | + join -v 2 -t '|' - mlines.tmp | + sort > mlines + rm $1-values $2-values mlines.tmp + + # Any lines in $2 which are not in $1 AND are "not present" lines + # also belong in mlines. + comm -13 $1 $2 | + cut -f 1,2,7 -d '|' | + fgrep '|-|' >> mlines + + # Remove lines from $1, $2, and $3 + for X in $1 $2 $3; do + sort -t '|' -k 1,1 ${X} > ${X}.tmp + cut -f 1 -d '|' < mlines | + sort | + join -v 2 -t '|' - ${X}.tmp | + sort > ${X} + rm ${X}.tmp + done + + # Store a list of the modified files, for future reference + fgrep -v '|-|' mlines | + cut -f 1 -d '|' > modifiedfiles + rm mlines +} + +# For each entry in $1 of type -, remove any corresponding +# entry from $2 if ${ALLOWADD} != "yes". Remove all entries +# of type - from $1. +fetch_filter_allowadd () { + cut -f 1,2 -d '|' < $1 | + fgrep '|-' | + cut -f 1 -d '|' > filesnotpresent + + if [ ${ALLOWADD} != "yes" ]; then + sort < $2 | + join -v 1 -t '|' - filesnotpresent | + sort > $2.tmp + mv $2.tmp $2 + fi + + sort < $1 | + join -v 1 -t '|' - filesnotpresent | + sort > $1.tmp + mv $1.tmp $1 + rm filesnotpresent +} + +# If ${ALLOWDELETE} != "yes", then remove any entries from $1 +# which don't correspond to entries in $2. +fetch_filter_allowdelete () { + # Produce a lists ${PATH}|${TYPE} + for X in $1 $2; do + cut -f 1-2 -d '|' < ${X} | + sort -u > ${X}.nodes + done + + # Figure out which lines need to be removed from $1. + if [ ${ALLOWDELETE} != "yes" ]; then + comm -23 $1.nodes $2.nodes > $1.badnodes + else + : > $1.badnodes + fi + + # Remove the relevant lines from $1 + while read X; do + look "${X}|" $1 + done < $1.badnodes | + comm -13 - $1 > $1.tmp + mv $1.tmp $1 + + rm $1.badnodes $1.nodes $2.nodes +} + +# If ${KEEPMODIFIEDMETADATA} == "yes", then for each entry in $2 +# with metadata not matching any entry in $1, replace the corresponding +# line of $3 with one having the same metadata as the entry in $2. +fetch_filter_modified_metadata () { + # Fish out the metadata from $1 and $2 + for X in $1 $2; do + cut -f 1-6 -d '|' < ${X} > ${X}.metadata + done + + # Find the metadata we need to keep + if [ ${KEEPMODIFIEDMETADATA} = "yes" ]; then + comm -13 $1.metadata $2.metadata > keepmeta + else + : > keepmeta + fi + + # Extract the lines which we need to remove from $3, and + # construct the lines which we need to add to $3. + : > $3.remove + : > $3.add + while read LINE; do + NODE=`echo "${LINE}" | cut -f 1-2 -d '|'` + look "${NODE}|" $3 >> $3.remove + look "${NODE}|" $3 | + cut -f 7- -d '|' | + lam -s "${LINE}|" - >> $3.add + done < keepmeta + + # Remove the specified lines and add the new lines. + sort $3.remove | + comm -13 - $3 | + sort -u - $3.add > $3.tmp + mv $3.tmp $3 + + rm keepmeta $1.metadata $2.metadata $3.add $3.remove +} + +# Remove lines from $1 and $2 which are identical; +# no need to update a file if it isn't changing. +fetch_filter_uptodate () { + comm -23 $1 $2 > $1.tmp + comm -13 $1 $2 > $2.tmp + + mv $1.tmp $1 + mv $2.tmp $2 +} + +# Fetch any "clean" old versions of files we need for merging changes. +fetch_files_premerge () { + # We only need to do anything if $1 is non-empty. + if [ -s $1 ]; then + # Tell the user what we're doing + echo -n "Fetching files from ${OLDRELNUM} for merging... " + + # List of files wanted + fgrep '|f|' < $1 | + cut -f 3 -d '|' | + sort -u > files.wanted + + # Only fetch the files we don't already have + while read Y; do + if [ ! -f "files/${Y}.gz" ]; then + echo ${Y}; + fi + done < files.wanted > filelist + + # Actually fetch them + lam -s "${OLDFETCHDIR}/f/" - -s ".gz" < filelist | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${QUIETREDIR} + + # Make sure we got them all, and move them into /files/ + while read Y; do + if ! [ -f ${Y}.gz ]; then + echo "failed." + return 1 + fi + if [ `gunzip -c < ${Y}.gz | + ${SHA256} -q` = ${Y} ]; then + mv ${Y}.gz files/${Y}.gz + else + echo "${Y} has incorrect hash." + return 1 + fi + done < filelist + echo "done." + + # Clean up + rm filelist files.wanted + fi +} + +# Prepare to fetch files: Generate a list of the files we need, +# copy the unmodified files we have into /files/, and generate +# a list of patches to download. +fetch_files_prepare () { + # Tell the user why his disk is suddenly making lots of noise + echo -n "Preparing to download files... " + + # Reduce indices to ${PATH}|${HASH} pairs + for X in $1 $2 $3; do + cut -f 1,2,7 -d '|' < ${X} | + fgrep '|f|' | + cut -f 1,3 -d '|' | + sort > ${X}.hashes + done + + # List of files wanted + cut -f 2 -d '|' < $3.hashes | + sort -u | + while read HASH; do + if ! [ -f files/${HASH}.gz ]; then + echo ${HASH} + fi + done > files.wanted + + # Generate a list of unmodified files + comm -12 $1.hashes $2.hashes | + sort -k 1,1 -t '|' > unmodified.files + + # Copy all files into /files/. We only need the unmodified files + # for use in patching; but we'll want all of them if the user asks + # to rollback the updates later. + while read LINE; do + F=`echo "${LINE}" | cut -f 1 -d '|'` + HASH=`echo "${LINE}" | cut -f 2 -d '|'` + + # Skip files we already have. + if [ -f files/${HASH}.gz ]; then + continue + fi + + # Make sure the file hasn't changed. + cp "${BASEDIR}/${F}" tmpfile + if [ `sha256 -q tmpfile` != ${HASH} ]; then + echo + echo "File changed while FreeBSD Update running: ${F}" + return 1 + fi + + # Place the file into storage. + gzip -c < tmpfile > files/${HASH}.gz + rm tmpfile + done < $2.hashes + + # Produce a list of patches to download + sort -k 1,1 -t '|' $3.hashes | + join -t '|' -o 2.2,1.2 - unmodified.files | + fetch_make_patchlist > patchlist + + # Garbage collect + rm unmodified.files $1.hashes $2.hashes $3.hashes + + # We don't need the list of possible old files any more. + rm $1 + + # We're finished making noise + echo "done." +} + +# Fetch files. +fetch_files () { + # Attempt to fetch patches + if [ -s patchlist ]; then + echo -n "Fetching `wc -l < patchlist | tr -d ' '` " + echo ${NDEBUG} "patches.${DDSTATS}" + tr '|' '-' < patchlist | + lam -s "${PATCHDIR}/" - | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${STATSREDIR} | fetch_progress + echo "done." + + # Attempt to apply patches + echo -n "Applying patches... " + tr '|' ' ' < patchlist | + while read X Y; do + if [ ! -f "${X}-${Y}" ]; then continue; fi + gunzip -c < files/${X}.gz > OLD + + bspatch OLD NEW ${X}-${Y} + + if [ `${SHA256} -q NEW` = ${Y} ]; then + mv NEW files/${Y} + gzip -n files/${Y} + fi + rm -f diff OLD NEW ${X}-${Y} + done 2>${QUIETREDIR} + echo "done." + fi + + # Download files which couldn't be generate via patching + while read Y; do + if [ ! -f "files/${Y}.gz" ]; then + echo ${Y}; + fi + done < files.wanted > filelist + + if [ -s filelist ]; then + echo -n "Fetching `wc -l < filelist | tr -d ' '` " + echo ${NDEBUG} "files... " + lam -s "${FETCHDIR}/f/" - -s ".gz" < filelist | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${STATSREDIR} | fetch_progress + + while read Y; do + if ! [ -f ${Y}.gz ]; then + echo "failed." + return 1 + fi + if [ `gunzip -c < ${Y}.gz | + ${SHA256} -q` = ${Y} ]; then + mv ${Y}.gz files/${Y}.gz + else + echo "${Y} has incorrect hash." + return 1 + fi + done < filelist + echo "done." + fi + + # Clean up + rm files.wanted filelist patchlist +} + +# Create and populate install manifest directory; and report what updates +# are available. +fetch_create_manifest () { + # If we have an existing install manifest, nuke it. + if [ -L "${BDHASH}-install" ]; then + rm -r ${BDHASH}-install/ + rm ${BDHASH}-install + fi + + # Report to the user if any updates were avoided due to local changes + if [ -s modifiedfiles ]; then + cat - modifiedfiles <<- EOF | ${PAGER} + The following files are affected by updates. No changes have + been downloaded, however, because the files have been modified + locally: + EOF + fi + rm modifiedfiles + + # If no files will be updated, tell the user and exit + if ! [ -s INDEX-PRESENT ] && + ! [ -s INDEX-NEW ]; then + rm INDEX-PRESENT INDEX-NEW + echo + echo -n "No updates needed to update system to " + echo "${RELNUM}-p${RELPATCHNUM}." + return + fi + + # Divide files into (a) removed files, (b) added files, and + # (c) updated files. + cut -f 1 -d '|' < INDEX-PRESENT | + sort > INDEX-PRESENT.flist + cut -f 1 -d '|' < INDEX-NEW | + sort > INDEX-NEW.flist + comm -23 INDEX-PRESENT.flist INDEX-NEW.flist > files.removed + comm -13 INDEX-PRESENT.flist INDEX-NEW.flist > files.added + comm -12 INDEX-PRESENT.flist INDEX-NEW.flist > files.updated + rm INDEX-PRESENT.flist INDEX-NEW.flist + + # Report removed files, if any + if [ -s files.removed ]; then + cat - files.removed <<- EOF | ${PAGER} + The following files will be removed as part of updating to + ${RELNUM}-p${RELPATCHNUM}: + EOF + fi + rm files.removed + + # Report added files, if any + if [ -s files.added ]; then + cat - files.added <<- EOF | ${PAGER} + The following files will be added as part of updating to + ${RELNUM}-p${RELPATCHNUM}: + EOF + fi + rm files.added + + # Report updated files, if any + if [ -s files.updated ]; then + cat - files.updated <<- EOF | ${PAGER} + The following files will be updated as part of updating to + ${RELNUM}-p${RELPATCHNUM}: + EOF + fi + rm files.updated + + # Create a directory for the install manifest. + MDIR=`mktemp -d install.XXXXXX` || return 1 + + # Populate it + mv INDEX-PRESENT ${MDIR}/INDEX-OLD + mv INDEX-NEW ${MDIR}/INDEX-NEW + + # Link it into place + ln -s ${MDIR} ${BDHASH}-install +} + +# Warn about any upcoming EoL +fetch_warn_eol () { + # What's the current time? + NOWTIME=`date "+%s"` + + # When did we last warn about the EoL date? + if [ -f lasteolwarn ]; then + LASTWARN=`cat lasteolwarn` + else + LASTWARN=`expr ${NOWTIME} - 63072000` + fi + + # If the EoL time is past, warn. + if [ ${EOLTIME} -lt ${NOWTIME} ]; then + echo + cat <<-EOF + WARNING: `uname -sr` HAS PASSED ITS END-OF-LIFE DATE. + Any security issues discovered after `date -r ${EOLTIME}` + will not have been corrected. + EOF + return 1 + fi + + # Figure out how long it has been since we last warned about the + # upcoming EoL, and how much longer we have left. + SINCEWARN=`expr ${NOWTIME} - ${LASTWARN}` + TIMELEFT=`expr ${EOLTIME} - ${NOWTIME}` + + # Don't warn if the EoL is more than 3 months away + if [ ${TIMELEFT} -gt 7884000 ]; then + return 0 + fi + + # Don't warn if the time remaining is more than 3 times the time + # since the last warning. + if [ ${TIMELEFT} -gt `expr ${SINCEWARN} \* 3` ]; then + return 0 + fi + + # Figure out what time units to use. + if [ ${TIMELEFT} -lt 604800 ]; then + UNIT="day" + SIZE=86400 + elif [ ${TIMELEFT} -lt 2678400 ]; then + UNIT="week" + SIZE=604800 + else + UNIT="month" + SIZE=2678400 + fi + + # Compute the right number of units + NUM=`expr ${TIMELEFT} / ${SIZE}` + if [ ${NUM} != 1 ]; then + UNIT="${UNIT}s" + fi + + # Print the warning + echo + cat <<-EOF + WARNING: `uname -sr` is approaching its End-of-Life date. + It is strongly recommended that you upgrade to a newer + release within the next ${NUM} ${UNIT}. + EOF + + # Update the stored time of last warning + echo ${NOWTIME} > lasteolwarn +} + +# Do the actual work involved in "fetch" / "cron". +fetch_run () { + workdir_init || return 1 + + # Prepare the mirror list. + fetch_pick_server_init && fetch_pick_server + + # Try to fetch the public key until we run out of servers. + while ! fetch_key; do + fetch_pick_server || return 1 + done + + # Try to fetch the metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + fetch_tagsanity || return 1 + + # Fetch the latest INDEX-NEW and INDEX-OLD files. + fetch_metadata INDEX-NEW INDEX-OLD || return 1 + + # Generate filtered INDEX-NEW and INDEX-OLD files containing only + # the lines which (a) belong to components we care about, and (b) + # don't correspond to paths we're explicitly ignoring. + fetch_filter_metadata INDEX-NEW || return 1 + fetch_filter_metadata INDEX-OLD || return 1 + + # Translate /boot/${KERNCONF} into ${KERNELDIR} + fetch_filter_kernel_names INDEX-NEW ${KERNCONF} + fetch_filter_kernel_names INDEX-OLD ${KERNCONF} + + # For all paths appearing in INDEX-OLD or INDEX-NEW, inspect the + # system and generate an INDEX-PRESENT file. + fetch_inspect_system INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Based on ${UPDATEIFUNMODIFIED}, remove lines from INDEX-* which + # correspond to lines in INDEX-PRESENT with hashes not appearing + # in INDEX-OLD or INDEX-NEW. Also remove lines where the entry in + # INDEX-PRESENT has type - and there isn't a corresponding entry in + # INDEX-OLD with type -. + fetch_filter_unmodified_notpresent \ + INDEX-OLD INDEX-PRESENT INDEX-NEW /dev/null + + # For each entry in INDEX-PRESENT of type -, remove any corresponding + # entry from INDEX-NEW if ${ALLOWADD} != "yes". Remove all entries + # of type - from INDEX-PRESENT. + fetch_filter_allowadd INDEX-PRESENT INDEX-NEW + + # If ${ALLOWDELETE} != "yes", then remove any entries from + # INDEX-PRESENT which don't correspond to entries in INDEX-NEW. + fetch_filter_allowdelete INDEX-PRESENT INDEX-NEW + + # If ${KEEPMODIFIEDMETADATA} == "yes", then for each entry in + # INDEX-PRESENT with metadata not matching any entry in INDEX-OLD, + # replace the corresponding line of INDEX-NEW with one having the + # same metadata as the entry in INDEX-PRESENT. + fetch_filter_modified_metadata INDEX-OLD INDEX-PRESENT INDEX-NEW + + # Remove lines from INDEX-PRESENT and INDEX-NEW which are identical; + # no need to update a file if it isn't changing. + fetch_filter_uptodate INDEX-PRESENT INDEX-NEW + + # Prepare to fetch files: Generate a list of the files we need, + # copy the unmodified files we have into /files/, and generate + # a list of patches to download. + fetch_files_prepare INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Fetch files. + fetch_files || return 1 + + # Create and populate install manifest directory; and report what + # updates are available. + fetch_create_manifest || return 1 + + # Warn about any upcoming EoL + fetch_warn_eol || return 1 +} + +# If StrictComponents is not "yes", generate a new components list +# with only the components which appear to be installed. +upgrade_guess_components () { + if [ "${STRICTCOMPONENTS}" = "no" ]; then + # Generate filtered INDEX-ALL with only the components listed + # in COMPONENTS. + fetch_filter_metadata_components $1 || return 1 + + # Tell the user why his disk is suddenly making lots of noise + echo -n "Inspecting system... " + + # Look at the files on disk, and assume that a component is + # supposed to be present if it is more than half-present. + cut -f 1-3 -d '|' < INDEX-ALL | + tr '|' ' ' | + while read C S F; do + if [ -e ${BASEDIR}/${F} ]; then + echo "+ ${C}|${S}" + fi + echo "= ${C}|${S}" + done | + sort | + uniq -c | + sed -E 's,^ +,,' > compfreq + grep ' = ' compfreq | + cut -f 1,3 -d ' ' | + sort -k 2,2 -t ' ' > compfreq.total + grep ' + ' compfreq | + cut -f 1,3 -d ' ' | + sort -k 2,2 -t ' ' > compfreq.present + join -t ' ' -1 2 -2 2 compfreq.present compfreq.total | + while read S P T; do + if [ ${T} -ne 0 -a ${P} -gt `expr ${T} / 2` ]; then + echo ${S} + fi + done > comp.present + cut -f 2 -d ' ' < compfreq.total > comp.total + rm INDEX-ALL compfreq compfreq.total compfreq.present + + # We're done making noise. + echo "done." + + # Sometimes the kernel isn't installed where INDEX-ALL + # thinks that it should be: In particular, it is often in + # /boot/kernel instead of /boot/GENERIC or /boot/SMP. To + # deal with this, if "kernel|X" is listed in comp.total + # (i.e., is a component which would be upgraded if it is + # found to be present) we will add it to comp.present. + # If "kernel|" is in comp.total but "kernel|X" is + # not, we print a warning -- the user is running a kernel + # which isn't part of the release. + KCOMP=`echo ${KERNCONF} | tr 'A-Z' 'a-z'` + grep -E "^kernel\|${KCOMP}\$" comp.total >> comp.present + + if grep -qE "^kernel\|" comp.total && + ! grep -qE "^kernel\|${KCOMP}\$" comp.total; then + cat <<-EOF + +WARNING: This system is running a "${KCOMP}" kernel, which is not a +kernel configuration distributed as part of FreeBSD ${RELNUM}. +This kernel will not be updated: you MUST update the kernel manually +before running "$0 install". + EOF + fi + + # Re-sort the list of installed components and generate + # the list of non-installed components. + sort -u < comp.present > comp.present.tmp + mv comp.present.tmp comp.present + comm -13 comp.present comp.total > comp.absent + + # Ask the user to confirm that what we have is correct. To + # reduce user confusion, translate "X|Y" back to "X/Y" (as + # subcomponents must be listed in the configuration file). + echo + echo -n "The following components of FreeBSD " + echo "seem to be installed:" + tr '|' '/' < comp.present | + fmt -72 + echo + echo -n "The following components of FreeBSD " + echo "do not seem to be installed:" + tr '|' '/' < comp.absent | + fmt -72 + echo + continuep || return 1 + echo + + # Suck the generated list of components into ${COMPONENTS}. + # Note that comp.present.tmp is used due to issues with + # pipelines and setting variables. + COMPONENTS="" + tr '|' '/' < comp.present > comp.present.tmp + while read C; do + COMPONENTS="${COMPONENTS} ${C}" + done < comp.present.tmp + + # Delete temporary files + rm comp.present comp.present.tmp comp.absent comp.total + fi +} + +# If StrictComponents is not "yes", COMPONENTS contains an entry +# corresponding to the currently running kernel, and said kernel +# does not exist in the new release, add "kernel/generic" to the +# list of components. +upgrade_guess_new_kernel () { + if [ "${STRICTCOMPONENTS}" = "no" ]; then + # Grab the unfiltered metadata file. + METAHASH=`look "$1|" tINDEX.present | cut -f 2 -d '|'` + gunzip -c < files/${METAHASH}.gz > $1.all + + # If "kernel/${KCOMP}" is in ${COMPONENTS} and that component + # isn't in $1.all, we need to add kernel/generic. + for C in ${COMPONENTS}; do + if [ ${C} = "kernel/${KCOMP}" ] && + ! grep -qE "^kernel\|${KCOMP}\|" $1.all; then + COMPONENTS="${COMPONENTS} kernel/generic" + NKERNCONF="GENERIC" + cat <<-EOF + +WARNING: This system is running a "${KCOMP}" kernel, which is not a +kernel configuration distributed as part of FreeBSD ${RELNUM}. +As part of upgrading to FreeBSD ${RELNUM}, this kernel will be +replaced with a "generic" kernel. + EOF + continuep || return 1 + fi + done + + # Don't need this any more... + rm $1.all + fi +} + +# Convert INDEX-OLD (last release) and INDEX-ALL (new release) into +# INDEX-OLD and INDEX-NEW files (in the sense of normal upgrades). +upgrade_oldall_to_oldnew () { + # For each ${F}|... which appears in INDEX-ALL but does not appear + # in INDEX-OLD, add ${F}|-|||||| to INDEX-OLD. + cut -f 1 -d '|' < $1 | + sort -u > $1.paths + cut -f 1 -d '|' < $2 | + sort -u | + comm -13 $1.paths - | + lam - -s "|-||||||" | + sort - $1 > $1.tmp + mv $1.tmp $1 + + # Remove lines from INDEX-OLD which also appear in INDEX-ALL + comm -23 $1 $2 > $1.tmp + mv $1.tmp $1 + + # Remove lines from INDEX-ALL which have a file name not appearing + # anywhere in INDEX-OLD (since these must be files which haven't + # changed -- if they were new, there would be an entry of type "-"). + cut -f 1 -d '|' < $1 | + sort -u > $1.paths + sort -k 1,1 -t '|' < $2 | + join -t '|' - $1.paths | + sort > $2.tmp + rm $1.paths + mv $2.tmp $2 + + # Rename INDEX-ALL to INDEX-NEW. + mv $2 $3 +} + +# Helper for upgrade_merge: Return zero true iff the two files differ only +# in the contents of their RCS tags. +samef () { + X=`sed -E 's/\\$FreeBSD.*\\$/\$FreeBSD\$/' < $1 | ${SHA256}` + Y=`sed -E 's/\\$FreeBSD.*\\$/\$FreeBSD\$/' < $2 | ${SHA256}` + + if [ $X = $Y ]; then + return 0; + else + return 1; + fi +} + +# From the list of "old" files in $1, merge changes in $2 with those in $3, +# and update $3 to reflect the hashes of merged files. +upgrade_merge () { + # We only need to do anything if $1 is non-empty. + if [ -s $1 ]; then + cut -f 1 -d '|' $1 | + sort > $1-paths + + # Create staging area for merging files + rm -rf merge/ + while read F; do + D=`dirname ${F}` + mkdir -p merge/old/${D} + mkdir -p merge/${OLDRELNUM}/${D} + mkdir -p merge/${RELNUM}/${D} + mkdir -p merge/new/${D} + done < $1-paths + + # Copy in files + while read F; do + # Currently installed file + V=`look "${F}|" $2 | cut -f 7 -d '|'` + gunzip < files/${V}.gz > merge/old/${F} + + # Old release + if look "${F}|" $1 | fgrep -q "|f|"; then + V=`look "${F}|" $1 | cut -f 3 -d '|'` + gunzip < files/${V}.gz \ + > merge/${OLDRELNUM}/${F} + fi + + # New release + if look "${F}|" $3 | cut -f 1,2,7 -d '|' | + fgrep -q "|f|"; then + V=`look "${F}|" $3 | cut -f 7 -d '|'` + gunzip < files/${V}.gz \ + > merge/${RELNUM}/${F} + fi + done < $1-paths + + # Attempt to automatically merge changes + echo -n "Attempting to automatically merge " + echo -n "changes in files..." + : > failed.merges + while read F; do + # If the file doesn't exist in the new release, + # the result of "merging changes" is having the file + # not exist. + if ! [ -f merge/${RELNUM}/${F} ]; then + continue + fi + + # If the file didn't exist in the old release, we're + # going to throw away the existing file and hope that + # the version from the new release is what we want. + if ! [ -f merge/${OLDRELNUM}/${F} ]; then + cp merge/${RELNUM}/${F} merge/new/${F} + continue + fi + + # Some files need special treatment. + case ${F} in + /etc/spwd.db | /etc/pwd.db | /etc/login.conf.db) + # Don't merge these -- we're rebuild them + # after updates are installed. + cp merge/old/${F} merge/new/${F} + ;; + *) + if ! diff3 -E -m -L "current version" \ + -L "${OLDRELNUM}" -L "${RELNUM}" \ + merge/old/${F} \ + merge/${OLDRELNUM}/${F} \ + merge/${RELNUM}/${F} \ + > merge/new/${F} 2>/dev/null; then + echo ${F} >> failed.merges + fi + ;; + esac + done < $1-paths + echo " done." + + # Ask the user to handle any files which didn't merge. + while read F; do + # If the installed file differs from the version in + # the old release only due to RCS tag expansion + # then just use the version in the new release. + if samef merge/old/${F} merge/${OLDRELNUM}/${F}; then + cp merge/${RELNUM}/${F} merge/new/${F} + continue + fi + + cat <<-EOF + +The following file could not be merged automatically: ${F} +Press Enter to edit this file in ${EDITOR} and resolve the conflicts +manually... + EOF + read dummy files/${V}.gz + echo "${F}|${V}" + fi + done < $1-paths > newhashes + + # Pull lines out from $3 which need to be updated to + # reflect merged files. + while read F; do + look "${F}|" $3 + done < $1-paths > $3-oldlines + + # Update lines to reflect merged files + join -t '|' -o 1.1,1.2,1.3,1.4,1.5,1.6,2.2,1.8 \ + $3-oldlines newhashes > $3-newlines + + # Remove old lines from $3 and add new lines. + sort $3-oldlines | + comm -13 - $3 | + sort - $3-newlines > $3.tmp + mv $3.tmp $3 + + # Clean up + rm $1-paths newhashes $3-oldlines $3-newlines + rm -rf merge/ + fi + + # We're done with merging files. + rm $1 +} + +# Do the work involved in fetching upgrades to a new release +upgrade_run () { + workdir_init || return 1 + + # Prepare the mirror list. + fetch_pick_server_init && fetch_pick_server + + # Try to fetch the public key until we run out of servers. + while ! fetch_key; do + fetch_pick_server || return 1 + done + + # Try to fetch the metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + fetch_tagsanity || return 1 + + # Fetch the INDEX-OLD and INDEX-ALL. + fetch_metadata INDEX-OLD INDEX-ALL || return 1 + + # If StrictComponents is not "yes", generate a new components list + # with only the components which appear to be installed. + upgrade_guess_components INDEX-ALL || return 1 + + # Generate filtered INDEX-OLD and INDEX-ALL files containing only + # the components we want and without anything marked as "Ignore". + fetch_filter_metadata INDEX-OLD || return 1 + fetch_filter_metadata INDEX-ALL || return 1 + + # Merge the INDEX-OLD and INDEX-ALL files into INDEX-OLD. + sort INDEX-OLD INDEX-ALL > INDEX-OLD.tmp + mv INDEX-OLD.tmp INDEX-OLD + rm INDEX-ALL + + # Adjust variables for fetching files from the new release. + OLDRELNUM=${RELNUM} + RELNUM=${TARGETRELEASE} + OLDFETCHDIR=${FETCHDIR} + FETCHDIR=${RELNUM}/${ARCH} + + # Try to fetch the NEW metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + + # Fetch the new INDEX-ALL. + fetch_metadata INDEX-ALL || return 1 + + # If StrictComponents is not "yes", COMPONENTS contains an entry + # corresponding to the currently running kernel, and said kernel + # does not exist in the new release, add "kernel/generic" to the + # list of components. + upgrade_guess_new_kernel INDEX-ALL || return 1 + + # Filter INDEX-ALL to contain only the components we want and without + # anything marked as "Ignore". + fetch_filter_metadata INDEX-ALL || return 1 + + # Convert INDEX-OLD (last release) and INDEX-ALL (new release) into + # INDEX-OLD and INDEX-NEW files (in the sense of normal upgrades). + upgrade_oldall_to_oldnew INDEX-OLD INDEX-ALL INDEX-NEW + + # Translate /boot/${KERNCONF} or /boot/${NKERNCONF} into ${KERNELDIR} + fetch_filter_kernel_names INDEX-NEW ${NKERNCONF} + fetch_filter_kernel_names INDEX-OLD ${KERNCONF} + + # For all paths appearing in INDEX-OLD or INDEX-NEW, inspect the + # system and generate an INDEX-PRESENT file. + fetch_inspect_system INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Based on ${MERGECHANGES}, generate a file tomerge-old with the + # paths and hashes of old versions of files to merge. + fetch_filter_mergechanges INDEX-OLD INDEX-PRESENT tomerge-old + + # Based on ${UPDATEIFUNMODIFIED}, remove lines from INDEX-* which + # correspond to lines in INDEX-PRESENT with hashes not appearing + # in INDEX-OLD or INDEX-NEW. Also remove lines where the entry in + # INDEX-PRESENT has type - and there isn't a corresponding entry in + # INDEX-OLD with type -. + fetch_filter_unmodified_notpresent \ + INDEX-OLD INDEX-PRESENT INDEX-NEW tomerge-old + + # For each entry in INDEX-PRESENT of type -, remove any corresponding + # entry from INDEX-NEW if ${ALLOWADD} != "yes". Remove all entries + # of type - from INDEX-PRESENT. + fetch_filter_allowadd INDEX-PRESENT INDEX-NEW + + # If ${ALLOWDELETE} != "yes", then remove any entries from + # INDEX-PRESENT which don't correspond to entries in INDEX-NEW. + fetch_filter_allowdelete INDEX-PRESENT INDEX-NEW + + # If ${KEEPMODIFIEDMETADATA} == "yes", then for each entry in + # INDEX-PRESENT with metadata not matching any entry in INDEX-OLD, + # replace the corresponding line of INDEX-NEW with one having the + # same metadata as the entry in INDEX-PRESENT. + fetch_filter_modified_metadata INDEX-OLD INDEX-PRESENT INDEX-NEW + + # Remove lines from INDEX-PRESENT and INDEX-NEW which are identical; + # no need to update a file if it isn't changing. + fetch_filter_uptodate INDEX-PRESENT INDEX-NEW + + # Fetch "clean" files from the old release for merging changes. + fetch_files_premerge tomerge-old + + # Prepare to fetch files: Generate a list of the files we need, + # copy the unmodified files we have into /files/, and generate + # a list of patches to download. + fetch_files_prepare INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Fetch patches from to-${RELNUM}/${ARCH}/bp/ + PATCHDIR=to-${RELNUM}/${ARCH}/bp + fetch_files || return 1 + + # Merge configuration file changes. + upgrade_merge tomerge-old INDEX-PRESENT INDEX-NEW || return 1 + + # Create and populate install manifest directory; and report what + # updates are available. + fetch_create_manifest || return 1 + + # Leave a note behind to tell the "install" command that the kernel + # needs to be installed before the world. + touch ${BDHASH}-install/kernelfirst + + # Remind the user that they need to run "freebsd-update install" + # to install the downloaded bits, in case they didn't RTFM. + echo "To install the downloaded upgrades, run \"$0 install\"." +} + +# Make sure that all the file hashes mentioned in $@ have corresponding +# gzipped files stored in /files/. +install_verify () { + # Generate a list of hashes + cat $@ | + cut -f 2,7 -d '|' | + grep -E '^f' | + cut -f 2 -d '|' | + sort -u > filelist + + # Make sure all the hashes exist + while read HASH; do + if ! [ -f files/${HASH}.gz ]; then + echo -n "Update files missing -- " + echo "this should never happen." + echo "Re-run '$0 fetch'." + return 1 + fi + done < filelist + + # Clean up + rm filelist +} + +# Remove the system immutable flag from files +install_unschg () { + # Generate file list + cat $@ | + cut -f 1 -d '|' > filelist + + # Remove flags + while read F; do + if ! [ -e ${BASEDIR}/${F} ]; then + continue + else + echo ${BASEDIR}/${F} + fi + done < filelist | xargs chflags noschg || return 1 + + # Clean up + rm filelist +} + +# Decide which directory name to use for kernel backups. +backup_kernel_finddir () { + CNT=0 + while true ; do + # Pathname does not exist, so it is OK use that name + # for backup directory. + if [ ! -e $BASEDIR/$BACKUPKERNELDIR ]; then + return 0 + fi + + # If directory do exist, we only use if it has our + # marker file. + if [ -d $BASEDIR/$BACKUPKERNELDIR -a \ + -e $BASEDIR/$BACKUPKERNELDIR/.freebsd-update ]; then + return 0 + fi + + # We could not use current directory name, so add counter to + # the end and try again. + CNT=$((CNT + 1)) + if [ $CNT -gt 9 ]; then + echo "Could not find valid backup dir ($BASEDIR/$BACKUPKERNELDIR)" + exit 1 + fi + BACKUPKERNELDIR="`echo $BACKUPKERNELDIR | sed -Ee 's/[0-9]\$//'`" + BACKUPKERNELDIR="${BACKUPKERNELDIR}${CNT}" + done +} + +# Backup the current kernel using hardlinks, if not disabled by user. +# Since we delete all files in the directory used for previous backups +# we create a marker file called ".freebsd-update" in the directory so +# we can determine on the next run that the directory was created by +# freebsd-update and we then do not accidentally remove user files in +# the unlikely case that the user has created a directory with a +# conflicting name. +backup_kernel () { + # Only make kernel backup is so configured. + if [ $BACKUPKERNEL != yes ]; then + return 0 + fi + + # Decide which directory name to use for kernel backups. + backup_kernel_finddir + + # Remove old kernel backup files. If $BACKUPKERNELDIR was + # "not ours", backup_kernel_finddir would have exited, so + # deleting the directory content is as safe as we can make it. + if [ -d $BASEDIR/$BACKUPKERNELDIR ]; then + rm -fr $BASEDIR/$BACKUPKERNELDIR + fi + + # Create directories for backup. + mkdir -p $BASEDIR/$BACKUPKERNELDIR + mtree -cdn -p "${BASEDIR}/${KERNELDIR}" | \ + mtree -Ue -p "${BASEDIR}/${BACKUPKERNELDIR}" > /dev/null + + # Mark the directory as having been created by freebsd-update. + touch $BASEDIR/$BACKUPKERNELDIR/.freebsd-update + if [ $? -ne 0 ]; then + echo "Could not create kernel backup directory" + exit 1 + fi + + # Disable pathname expansion to be sure *.symbols is not + # expanded. + set -f + + # Use find to ignore symbol files, unless disabled by user. + if [ $BACKUPKERNELSYMBOLFILES = yes ]; then + FINDFILTER="" + else + FINDFILTER="-a ! -name *.debug -a ! -name *.symbols" + fi + + # Backup all the kernel files using hardlinks. + (cd ${BASEDIR}/${KERNELDIR} && find . -type f $FINDFILTER -exec \ + cp -pl '{}' ${BASEDIR}/${BACKUPKERNELDIR}/'{}' \;) + + # Re-enable patchname expansion. + set +f +} + +# Install new files +install_from_index () { + # First pass: Do everything apart from setting file flags. We + # can't set flags yet, because schg inhibits hard linking. + sort -k 1,1 -t '|' $1 | + tr '|' ' ' | + while read FPATH TYPE OWNER GROUP PERM FLAGS HASH LINK; do + case ${TYPE} in + d) + # Create a directory + install -d -o ${OWNER} -g ${GROUP} \ + -m ${PERM} ${BASEDIR}/${FPATH} + ;; + f) + if [ -z "${LINK}" ]; then + # Create a file, without setting flags. + gunzip < files/${HASH}.gz > ${HASH} + install -S -o ${OWNER} -g ${GROUP} \ + -m ${PERM} ${HASH} ${BASEDIR}/${FPATH} + rm ${HASH} + else + # Create a hard link. + ln -f ${BASEDIR}/${LINK} ${BASEDIR}/${FPATH} + fi + ;; + L) + # Create a symlink + ln -sfh ${HASH} ${BASEDIR}/${FPATH} + ;; + esac + done + + # Perform a second pass, adding file flags. + tr '|' ' ' < $1 | + while read FPATH TYPE OWNER GROUP PERM FLAGS HASH LINK; do + if [ ${TYPE} = "f" ] && + ! [ ${FLAGS} = "0" ]; then + chflags ${FLAGS} ${BASEDIR}/${FPATH} + fi + done +} + +# Remove files which we want to delete +install_delete () { + # Generate list of new files + cut -f 1 -d '|' < $2 | + sort > newfiles + + # Generate subindex of old files we want to nuke + sort -k 1,1 -t '|' $1 | + join -t '|' -v 1 - newfiles | + sort -r -k 1,1 -t '|' | + cut -f 1,2 -d '|' | + tr '|' ' ' > killfiles + + # Remove the offending bits + while read FPATH TYPE; do + case ${TYPE} in + d) + rmdir ${BASEDIR}/${FPATH} + ;; + f) + rm ${BASEDIR}/${FPATH} + ;; + L) + rm ${BASEDIR}/${FPATH} + ;; + esac + done < killfiles + + # Clean up + rm newfiles killfiles +} + +# Install new files, delete old files, and update generated files +install_files () { + # If we haven't already dealt with the kernel, deal with it. + if ! [ -f $1/kerneldone ]; then + grep -E '^/boot/' $1/INDEX-OLD > INDEX-OLD + grep -E '^/boot/' $1/INDEX-NEW > INDEX-NEW + + # Backup current kernel before installing a new one + backup_kernel || return 1 + + # Install new files + install_from_index INDEX-NEW || return 1 + + # Remove files which need to be deleted + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Update linker.hints if necessary + if [ -s INDEX-OLD -o -s INDEX-NEW ]; then + kldxref -R ${BASEDIR}/boot/ 2>/dev/null + fi + + # We've finished updating the kernel. + touch $1/kerneldone + + # Do we need to ask for a reboot now? + if [ -f $1/kernelfirst ] && + [ -s INDEX-OLD -o -s INDEX-NEW ]; then + cat <<-EOF + +Kernel updates have been installed. Please reboot and run +"$0 install" again to finish installing updates. + EOF + exit 0 + fi + fi + + # If we haven't already dealt with the world, deal with it. + if ! [ -f $1/worlddone ]; then + # Create any necessary directories first + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '^[^|]+\|d\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + + # Install new runtime linker + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -E '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + + # Install new shared libraries next + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -vE '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + + # Deal with everything else + grep -vE '^/boot/' $1/INDEX-OLD | + grep -vE '^[^|]+\|d\|' | + grep -vE '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' | + grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -vE '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' | + grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Rehash certs if we actually have certctl installed. + if which certctl>/dev/null; then + env DESTDIR=${BASEDIR} certctl rehash + fi + + # Rebuild generated pwd files and /etc/login.conf.db. + pwd_mkdb -d ${BASEDIR}/etc -p ${BASEDIR}/etc/master.passwd + cap_mkdb ${BASEDIR}/etc/login.conf + + # Rebuild man page databases, if necessary. + for D in /usr/share/man /usr/share/openssl/man; do + if [ ! -d ${BASEDIR}/$D ]; then + continue + fi + if [ -f ${BASEDIR}/$D/mandoc.db ] && \ + [ -z "$(find ${BASEDIR}/$D -type f -newer ${BASEDIR}/$D/mandoc.db)" ]; then + continue; + fi + makewhatis ${BASEDIR}/$D + done + + # We've finished installing the world and deleting old files + # which are not shared libraries. + touch $1/worlddone + + # Do we need to ask the user to portupgrade now? + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' | + cut -f 1 -d '|' | + sort > newfiles + if grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' | + cut -f 1 -d '|' | + sort | + join -v 1 - newfiles | + grep -q .; then + cat <<-EOF + +Completing this upgrade requires removing old shared object files. +Please rebuild all installed 3rd party software (e.g., programs +installed from the ports tree) and then run "$0 install" +again to finish installing updates. + EOF + rm newfiles + exit 0 + fi + rm newfiles + fi + + # Remove old shared libraries + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW + grep -vE '^/boot/' $1/INDEX-OLD | + grep -vE '^[^|]+\|d\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Remove old directories + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '^[^|]+\|d\|' > INDEX-NEW + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '^[^|]+\|d\|' > INDEX-OLD + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Remove temporary files + rm INDEX-OLD INDEX-NEW +} + +# Rearrange bits to allow the installed updates to be rolled back +install_setup_rollback () { + # Remove the "reboot after installing kernel", "kernel updated", and + # "finished installing the world" flags if present -- they are + # irrelevant when rolling back updates. + if [ -f ${BDHASH}-install/kernelfirst ]; then + rm ${BDHASH}-install/kernelfirst + rm ${BDHASH}-install/kerneldone + fi + if [ -f ${BDHASH}-install/worlddone ]; then + rm ${BDHASH}-install/worlddone + fi + + if [ -L ${BDHASH}-rollback ]; then + mv ${BDHASH}-rollback ${BDHASH}-install/rollback + fi + + mv ${BDHASH}-install ${BDHASH}-rollback +} + +# Actually install updates +install_run () { + echo -n "Installing updates..." + + # Make sure we have all the files we should have + install_verify ${BDHASH}-install/INDEX-OLD \ + ${BDHASH}-install/INDEX-NEW || return 1 + + # Remove system immutable flag from files + install_unschg ${BDHASH}-install/INDEX-OLD \ + ${BDHASH}-install/INDEX-NEW || return 1 + + # Install new files, delete old files, and update linker.hints + install_files ${BDHASH}-install || return 1 + + # Rearrange bits to allow the installed updates to be rolled back + install_setup_rollback + + echo " done." +} + +# Rearrange bits to allow the previous set of updates to be rolled back next. +rollback_setup_rollback () { + if [ -L ${BDHASH}-rollback/rollback ]; then + mv ${BDHASH}-rollback/rollback rollback-tmp + rm -r ${BDHASH}-rollback/ + rm ${BDHASH}-rollback + mv rollback-tmp ${BDHASH}-rollback + else + rm -r ${BDHASH}-rollback/ + rm ${BDHASH}-rollback + fi +} + +# Install old files, delete new files, and update linker.hints +rollback_files () { + # Install old shared library files which don't have the same path as + # a new shared library file. + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '/lib/.*\.so\.[0-9]+\|' | + cut -f 1 -d '|' | + sort > INDEX-NEW.libs.flist + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '/lib/.*\.so\.[0-9]+\|' | + sort -k 1,1 -t '|' - | + join -t '|' -v 1 - INDEX-NEW.libs.flist > INDEX-OLD + install_from_index INDEX-OLD || return 1 + + # Deal with files which are neither kernel nor shared library + grep -vE '^/boot/' $1/INDEX-OLD | + grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-OLD || return 1 + install_delete INDEX-NEW INDEX-OLD || return 1 + + # Install any old shared library files which we didn't install above. + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '/lib/.*\.so\.[0-9]+\|' | + sort -k 1,1 -t '|' - | + join -t '|' - INDEX-NEW.libs.flist > INDEX-OLD + install_from_index INDEX-OLD || return 1 + + # Delete unneeded shared library files + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW + install_delete INDEX-NEW INDEX-OLD || return 1 + + # Deal with kernel files + grep -E '^/boot/' $1/INDEX-OLD > INDEX-OLD + grep -E '^/boot/' $1/INDEX-NEW > INDEX-NEW + install_from_index INDEX-OLD || return 1 + install_delete INDEX-NEW INDEX-OLD || return 1 + if [ -s INDEX-OLD -o -s INDEX-NEW ]; then + kldxref -R /boot/ 2>/dev/null + fi + + # Remove temporary files + rm INDEX-OLD INDEX-NEW INDEX-NEW.libs.flist +} + +# Actually rollback updates +rollback_run () { + echo -n "Uninstalling updates..." + + # If there are updates waiting to be installed, remove them; we + # want the user to re-run 'fetch' after rolling back updates. + if [ -L ${BDHASH}-install ]; then + rm -r ${BDHASH}-install/ + rm ${BDHASH}-install + fi + + # Make sure we have all the files we should have + install_verify ${BDHASH}-rollback/INDEX-NEW \ + ${BDHASH}-rollback/INDEX-OLD || return 1 + + # Remove system immutable flag from files + install_unschg ${BDHASH}-rollback/INDEX-NEW \ + ${BDHASH}-rollback/INDEX-OLD || return 1 + + # Install old files, delete new files, and update linker.hints + rollback_files ${BDHASH}-rollback || return 1 + + # Remove the rollback directory and the symlink pointing to it; and + # rearrange bits to allow the previous set of updates to be rolled + # back next. + rollback_setup_rollback + + echo " done." +} + +# Compare INDEX-ALL and INDEX-PRESENT and print warnings about differences. +IDS_compare () { + # Get all the lines which mismatch in something other than file + # flags. We ignore file flags because sysinstall doesn't seem to + # set them when it installs FreeBSD; warning about these adds a + # very large amount of noise. + cut -f 1-5,7-8 -d '|' $1 > $1.noflags + sort -k 1,1 -t '|' $1.noflags > $1.sorted + cut -f 1-5,7-8 -d '|' $2 | + comm -13 $1.noflags - | + fgrep -v '|-|||||' | + sort -k 1,1 -t '|' | + join -t '|' $1.sorted - > INDEX-NOTMATCHING + + # Ignore files which match IDSIGNOREPATHS. + for X in ${IDSIGNOREPATHS}; do + grep -E "^${X}" INDEX-NOTMATCHING + done | + sort -u | + comm -13 - INDEX-NOTMATCHING > INDEX-NOTMATCHING.tmp + mv INDEX-NOTMATCHING.tmp INDEX-NOTMATCHING + + # Go through the lines and print warnings. + local IFS='|' + while read FPATH TYPE OWNER GROUP PERM HASH LINK P_TYPE P_OWNER P_GROUP P_PERM P_HASH P_LINK; do + # Warn about different object types. + if ! [ "${TYPE}" = "${P_TYPE}" ]; then + echo -n "${FPATH} is a " + case "${P_TYPE}" in + f) echo -n "regular file, " + ;; + d) echo -n "directory, " + ;; + L) echo -n "symlink, " + ;; + esac + echo -n "but should be a " + case "${TYPE}" in + f) echo -n "regular file." + ;; + d) echo -n "directory." + ;; + L) echo -n "symlink." + ;; + esac + echo + + # Skip other tests, since they don't make sense if + # we're comparing different object types. + continue + fi + + # Warn about different owners. + if ! [ "${OWNER}" = "${P_OWNER}" ]; then + echo -n "${FPATH} is owned by user id ${P_OWNER}, " + echo "but should be owned by user id ${OWNER}." + fi + + # Warn about different groups. + if ! [ "${GROUP}" = "${P_GROUP}" ]; then + echo -n "${FPATH} is owned by group id ${P_GROUP}, " + echo "but should be owned by group id ${GROUP}." + fi + + # Warn about different permissions. We do not warn about + # different permissions on symlinks, since some archivers + # don't extract symlink permissions correctly and they are + # ignored anyway. + if ! [ "${PERM}" = "${P_PERM}" ] && + ! [ "${TYPE}" = "L" ]; then + echo -n "${FPATH} has ${P_PERM} permissions, " + echo "but should have ${PERM} permissions." + fi + + # Warn about different file hashes / symlink destinations. + if ! [ "${HASH}" = "${P_HASH}" ]; then + if [ "${TYPE}" = "L" ]; then + echo -n "${FPATH} is a symlink to ${P_HASH}, " + echo "but should be a symlink to ${HASH}." + fi + if [ "${TYPE}" = "f" ]; then + echo -n "${FPATH} has SHA256 hash ${P_HASH}, " + echo "but should have SHA256 hash ${HASH}." + fi + fi + + # We don't warn about different hard links, since some + # some archivers break hard links, and as long as the + # underlying data is correct they really don't matter. + done < INDEX-NOTMATCHING + + # Clean up + rm $1 $1.noflags $1.sorted $2 INDEX-NOTMATCHING +} + +# Do the work involved in comparing the system to a "known good" index +IDS_run () { + workdir_init || return 1 + + # Prepare the mirror list. + fetch_pick_server_init && fetch_pick_server + + # Try to fetch the public key until we run out of servers. + while ! fetch_key; do + fetch_pick_server || return 1 + done + + # Try to fetch the metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + fetch_tagsanity || return 1 + + # Fetch INDEX-OLD and INDEX-ALL. + fetch_metadata INDEX-OLD INDEX-ALL || return 1 + + # Generate filtered INDEX-OLD and INDEX-ALL files containing only + # the components we want and without anything marked as "Ignore". + fetch_filter_metadata INDEX-OLD || return 1 + fetch_filter_metadata INDEX-ALL || return 1 + + # Merge the INDEX-OLD and INDEX-ALL files into INDEX-ALL. + sort INDEX-OLD INDEX-ALL > INDEX-ALL.tmp + mv INDEX-ALL.tmp INDEX-ALL + rm INDEX-OLD + + # Translate /boot/${KERNCONF} to ${KERNELDIR} + fetch_filter_kernel_names INDEX-ALL ${KERNCONF} + + # Inspect the system and generate an INDEX-PRESENT file. + fetch_inspect_system INDEX-ALL INDEX-PRESENT /dev/null || return 1 + + # Compare INDEX-ALL and INDEX-PRESENT and print warnings about any + # differences. + IDS_compare INDEX-ALL INDEX-PRESENT +} + +#### Main functions -- call parameter-handling and core functions + +# Using the command line, configuration file, and defaults, +# set all the parameters which are needed later. +get_params () { + init_params + parse_cmdline $@ + parse_conffile + default_params +} + +# Fetch command. Make sure that we're being called +# interactively, then run fetch_check_params and fetch_run +cmd_fetch () { + finalize_components_config ${COMPONENTS} + if [ ! -t 0 -a $NOTTYOK -eq 0 ]; then + echo -n "`basename $0` fetch should not " + echo "be run non-interactively." + echo "Run `basename $0` cron instead." + exit 1 + fi + fetch_check_params + fetch_run || exit 1 + ISFETCHED=1 +} + +# Cron command. Make sure the parameters are sensible; wait +# rand(3600) seconds; then fetch updates. While fetching updates, +# send output to a temporary file; only print that file if the +# fetching failed. +cmd_cron () { + fetch_check_params + sleep `jot -r 1 0 3600` + + TMPFILE=`mktemp /tmp/freebsd-update.XXXXXX` || exit 1 + finalize_components_config ${COMPONENTS} >> ${TMPFILE} + if ! fetch_run >> ${TMPFILE} || + ! grep -q "No updates needed" ${TMPFILE} || + [ ${VERBOSELEVEL} = "debug" ]; then + mail -s "`hostname` security updates" ${MAILTO} < ${TMPFILE} + fi + + rm ${TMPFILE} +} + +# Fetch files for upgrading to a new release. +cmd_upgrade () { + finalize_components_config ${COMPONENTS} + upgrade_check_params + upgrade_run || exit 1 +} + +# Check if there are fetched updates ready to install. +# Chdir into the working directory. +cmd_updatesready () { + finalize_components_config ${COMPONENTS} + # Check if working directory exists (if not, no updates pending) + if ! [ -e "${WORKDIR}" ]; then + echo "No updates are available to install." + exit 2 + fi + + # Change into working directory (fail if no permission/directory etc.) + cd ${WORKDIR} || exit 1 + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` + + # Check that we have updates ready to install + if ! [ -L ${BDHASH}-install ]; then + echo "No updates are available to install." + exit 2 + fi + + echo "There are updates available to install." + echo "Run '$0 install' to proceed." +} + +# Install downloaded updates. +cmd_install () { + finalize_components_config ${COMPONENTS} + install_check_params + install_create_be + install_run || exit 1 +} + +# Rollback most recently installed updates. +cmd_rollback () { + finalize_components_config ${COMPONENTS} + rollback_check_params + rollback_run || exit 1 +} + +# Compare system against a "known good" index. +cmd_IDS () { + finalize_components_config ${COMPONENTS} + IDS_check_params + IDS_run || exit 1 +} + +# Output configuration. +cmd_showconfig () { + finalize_components_config ${COMPONENTS} + for X in ${CONFIGOPTIONS}; do + echo $X=$(eval echo \$${X}) + done +} + +#### Entry point + +# Make sure we find utilities from the base system +export PATH=/sbin:/bin:/usr/sbin:/usr/bin:${PATH} + +# Set a pager if the user doesn't +if [ -z "$PAGER" ]; then + PAGER=/usr/bin/less +fi + +# Set LC_ALL in order to avoid problems with character ranges like [A-Z]. +export LC_ALL=C + +get_params $@ +for COMMAND in ${COMMANDS}; do + cmd_${COMMAND} +done diff --git a/conf/system/freebsd-update/13.2/freebsd-update.conf b/conf/system/freebsd-update/13.2/freebsd-update.conf new file mode 100644 index 0000000..62e6acf --- /dev/null +++ b/conf/system/freebsd-update/13.2/freebsd-update.conf @@ -0,0 +1,79 @@ +# $FreeBSD$ + +# Trusted keyprint. Changing this is a Bad Idea unless you've received +# a PGP-signed email from telling you to +# change it and explaining why. +KeyPrint 800651ef4b4c71c27e60786d7b487188970f4b4169cc055784e21eb71d410cc5 + +# Server or server pool from which to fetch updates. You can change +# this to point at a specific server if you want, but in most cases +# using a "nearby" server won't provide a measurable improvement in +# performance. +ServerName update.FreeBSD.org + +# Components of the base system which should be kept updated. +Components src world kernel + +# Example for updating the userland and the kernel source code only: +# Components src/base src/sys world + +# Paths which start with anything matching an entry in an IgnorePaths +# statement will be ignored. +IgnorePaths + +# Paths which start with anything matching an entry in an IDSIgnorePaths +# statement will be ignored by "freebsd-update IDS". +IDSIgnorePaths /usr/share/man/cat +IDSIgnorePaths /usr/share/man/whatis +IDSIgnorePaths /var/db/locate.database +IDSIgnorePaths /var/log + +# Paths which start with anything matching an entry in an UpdateIfUnmodified +# statement will only be updated if the contents of the file have not been +# modified by the user (unless changes are merged; see below). +UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile + +# When upgrading to a new FreeBSD release, files which match MergeChanges +# will have any local changes merged into the version from the new release. +MergeChanges /etc/ /boot/device.hints + +### Default configuration options: + +# Directory in which to store downloaded updates and temporary +# files used by FreeBSD Update. +# WorkDir /var/db/freebsd-update + +# Destination to send output of "freebsd-update cron" if an error +# occurs or updates have been downloaded. +# MailTo root + +# Is FreeBSD Update allowed to create new files? +# AllowAdd yes + +# Is FreeBSD Update allowed to delete files? +# AllowDelete yes + +# If the user has modified file ownership, permissions, or flags, should +# FreeBSD Update retain this modified metadata when installing a new version +# of that file? +# KeepModifiedMetadata yes + +# When upgrading between releases, should the list of Components be +# read strictly (StrictComponents yes) or merely as a list of components +# which *might* be installed of which FreeBSD Update should figure out +# which actually are installed and upgrade those (StrictComponents no)? +# StrictComponents no + +# When installing a new kernel perform a backup of the old one first +# so it is possible to boot the old kernel in case of problems. +# BackupKernel yes + +# If BackupKernel is enabled, the backup kernel is saved to this +# directory. +# BackupKernelDir /boot/kernel.old + +# When backing up a kernel also back up debug symbol files? +# BackupKernelSymbolFiles no + +# Create a new boot environment when installing patches +# CreateBootEnv yes diff --git a/conf/system/include/13.2/ar b/conf/system/include/13.2/ar new file mode 100755 index 0000000000000000000000000000000000000000..39e52384cb5d99c708ca4b6a3969d064dbcc1d2d GIT binary patch literal 51160 zcmeFa3wRVo);HdhWFTNdhf5SSkwHL#HIOJE0iqd5pa&-q0cdo!=Dh!-FMB%rP$yRWi%!^^Hc4k}(Y1XS|6(4LQNEZ%0M7a!^gCz|!Q;OY6cJZtc8`M4+Sq5|+7uo`35 zlj2xji&253Q%A&q6cb76qB{oDR!OMhjZiy&Cyg&;Rbj z{0wcT-cE;RH6#mK<&9llwYa>YymajHvW)WO6=Uja#$>T?qf0Ntug2v24|Af7K6Sw2L06-^w&W@Q~i&` z;MZgDe;$K=Du$eR80?wabyf^|{}}Z1V$g@ippT3}&xk=EAA>$627Ou#x)Osv8}u{j zza$2KWeoc281#E%(4UM!e>n#Ia18oqG3aq{FlXxDK{4p($Dj|5LBBW#o%7I{%DplM zeMStrHwOKh81!pn&= z&PH${@JTm-G|7Z>OgIj(AHwwrT+d&Gz~^#=%iY7rS?B2xfYAb3r@60i#4 zDuf#mY7iD9lp~Bs;J%2@bcB2aKf)jcJ{;%s5fmbLu0gm`#3V^J;k72L17zQgMYsWB zIKm8s5(GXO2<$8CDK#TA0jm)vnz-A97P!QWEVKwe0LGnx$7V{xhR(neA;B2MlVrkV zz`kZY78rOA%XUrX=Atm@u;7$CHyy{BW%1En{n=i`Eaj%re_w2)_IVX zo`pyn!cdcNDc~Z6*$Bf-S|MPO87DXwq0Ged07oKNdyuOUpNB98!TwwZWT{0cuU=VI zS5qw&71h?&EU7M8Q7)DE${VVDQc+cPm9NORyk0WUqSA(vqKc~OlI2x5mrF%6R~B7U zzND(&S6(-5c}abJdA+ox+!qm2@2gv0UM&HXuBc^7O|7qJc}?{asidy7vT9{{(aQ3= z`l_1hBCu3}T#LWH3JGjg)n%woy|1jiuC7+9SXEc$E0dLKrkXKb*izHOJ66CV-GFFQs>+2AaDoB({ zmzS5+p$w@aQc#({RsvEgRhV_Gs6x|fq^kN7pKmqup?WA7)nT zs$^@Tc~Do>&Qh~zhNWbSDDsvruc=3G+r^2t)EVXYSCrH*lS(UB)EM1iwX33}YPsaE zUS3tbOj@xF{g3`-4W$aS-6ySBQBo@zeP)RkSdUg4l=^a8lZ)zC){TqQ#$YfSUUnL_ zXT1$hqZ9nqEZj)1FzVEkxxCs}x4Njd#8)X)SyAiv)kmZYrIeNUN?`fEnxcv_SQ#2* zwZg~?ZA5iuko;BA8XA-(-=WlV%$z34SB1d_Llz=o+$GB`N`;76?9qDFFRQ|UK&49~ zvP5EegRicn6hpR%1F_C0t+Y%P;v;rk&5?)$M{DG<>}pyqX)xfLIwQJ_1CTU~iuy`2 zl{E;w8s*fNR*N{KuBcyv5oGa|)d@P-Ykfu(*=*b}Nt2f8*jB`#_vjs?baPDAudXkxsjfJ!YN7>JZ4L3l0DF>H;&*L> z)HB!zYxiB#B6C^!%1H6irc~L7xUg#S(n+m`*MDRTNu>mbP7T$Uq z{ULJ!a^N)j4s()SV3y1E1-49)r`Sg4+Rl0^ZFFmW!L(W%o$C$jX|U1lb9JMQZmm0* zXOoT2b)xmO*y#4PLT1?D;F`x_F#}Gt(e3N0TpK;!#;@4uc0Cl@=yp9Uu+i;nvtk?F zT8FWiN*mqkGtz5qbZf0ldV`JLmjv@^w9(J9h=7}HbnXGHr^QCM*1Sx+*GA{M*Lt?t z=++vDX^-0ITvuC9tBuYzr1fmG(XI73)7orw?rE%NpN-D-nDrd6(a*DpfQM{!`+D_= zjm~wT_2@RbwSQvTF&mxhSnKJs(XG9SNIPn9uy0*PRQye}(XF*76H;vS3vK*^ZFFm0 z%4C;~KHSDX(ni0?M$fd-%^@vPC)(&-&stBejm|xp^(Z#_Xp0C~XruqgMqgl~Ut*&d z+vujN5~-Cox_vEOYol}TWjzfxx_z(FXrptjZ#|oAbgucWr^QC+n%#Qtwb8k6ww^6E z`gn^7_^6G}eXaGh+UVS8ThBHd-P#*6t<6Ta_BW*Ov(YD!U_J+Ibne%!=a7xgJ+t*3 zvC*wPJJWO<-M()>W}{nsWAb;|=(!|V&nHHN_V2c6fQdHxR2x0TMxSP*54O>{=dvD` zjh=520Y}>C({1!j8-0e2KG8;3Z1h|k-D9IGHu_8(z0gL#%0^#cqkC=iVjI1{Mz6Hd zxo@?eS{t2vRO@N5(Yar>o<8-0t7&V8@-JZhu! zOvQRyZFK7_g=yPt^aU0(V4ID8osGWFM!()hKVYNV&rlB8=sd5no+CCo_x;wR+vq$; zvYul$y8TR`%SJD@mm*6#_zJx%Wd?LHhP7P zo@t{mvC${m=#@5lu8q!fHS1Aq^raRNu+TUY^URW5GR%gZLY zM$}6q>L?}tE$>%uI;6o>gB6lHPz*=nhICOQdbF5Gj4YA2&SgG-o=xX zRX8Q_*Ox3QpX5R=S4Np@VaD90^(${)WC?L`&*2&~W=vnH4>{_=u{4_8SE{OBi6f&j z*NWvhd66o_h8(prD;U|@h@A@dbryZBG@{g%0mi=4iks>T+4K8KB^FJb>sZXz0g#15 zd{w<@b4j(UrVb}RC3UMsO;H`}pQ(h3<>d{o`qGl>>hij1KAafwXuu+j9cz@_fL2YL zTjO6DZTCW};fwlmCyi4gE0b|JVqxYPiG`xTi+#{>IcfmSi4MxBF-obUc1!b?*3a{w zS;IzG^r`oX(g`M&t9Oo9Y@Q^EeP^d1bD}{t6tw zv6EJ>E@BrIEne*_uOB%|oXFUOHkj66D3wP~QKj;$9Q?rz!+sOE|}J`D(z#^Bz};tJ=SO zxvOUJQYmW;ck(=7lu8y)D=o{bs9L(bU`0*sO?7kX=lbUP=dWzI*=)OLB~)mQ0%L5L zt*t?iRKNpB)is8>@<0_ewVX#riD73x+F6WoVVJq_L=ulTTsb+ei)$}--FmAlg8F)* z4Hp|?Z;FhCGY-}}*rhbj{TWGnYuD-N(%mVX~M6det z=FOMBM^cfn3`-QdYO!lXxod4eM5YwOBO@lK&kYLGJK zNYjM>Gb*{-wYbJt>B@ko7Y=4bsbsn~6kz&(ai(jEMXwZzdBU^Kz-XN0I-{b5 zPlBd?z+i_mafr$xDkjSB?PHb79C95e8NM~C;yV)f2#ShM!?nH!sj_@| znrW$J=K3C7je@0MY{*>VZOx^GZu2kzwWTIjqWhqAPl$H}yp8 zdZP6gOQwT0JHwi{;JDEx#_JrT8nz+Fz7bkS&s~5l|MMzhQ%{U{n3? zVCbMf4iaAc0s2Ubp|_*R|1H8x2)kqOoJrU3fd4Sc4FWDhAkSI0{7n1MtQX-GX4*r5 zlfnNOLK?y^5sE>30^xeZDQAPp%Y1yE$ELg#8|oDZs}R;BXb5*B+>h`W!jlNkBD5py zLwFV8b%eJOK12v349$&(5x_?lNKzKyR2*7NKs@p|%qK41iuHi_7Q&H$;Ox~qu}?ye zr>|f^b}3 zHbZ|YIcC22m?@OP+dK*Q_QNjGh$rGJmL!uNJ=2fg3Hm=9lcD1jlr|U|KNtVbL#)3v z1^*QMJ5Rb(x&xs_(hxRFs?;nsNdaktv|ehI)=6unHCPI)!hIn>?xoaAb<#}|ULoTy z$_m`|S%y0^mAH#jfqODoYvaaDiBya`4>#g&%XPTVb1m-0%)`B+Ik*#ZwN!}P5wmcU z#*14vGjStm25!^jOL@3^G*!yQjhQQO`)4w48)f5`%jMDp+`AbkT_#;BW#JacSlo=r zkS@Xfq0!PP+?===w~j{O_RJ9RHBg##K5Xf1VIc!yVf~=tcq#aQ?VmNOACrD3{z>NF zhXEz&=eQX%1h=Q|fky9^?v;KDZPMENL!Yam(e=`;LI8P#(EDa-BWRnT={3+j^?fsR zObsuER+mAe#n5rFv=BE;E*8DPUf_MD3UDk#KUAYn7eVLL_bh04HgtV8v|fZeTGtBw zFA}$!j5{iGp!Hnnnwp*_^q&pxS&+z{af{x$5`8dUXn&;Wf#|z{Z1l<$^b>W@Ua(Hn z)6pw@^Y%NWO^Mup0>ONO7!g*F+#zCjioY$ezaR3C+&`4}hsgW?3J-07|4w@x4r``} z|1TermApyb1Pv8$5{tqyFSp z=@wY_>WE*laJzq5`W+9m)bufnVC@TG&rwfvqp*3>qQ1uNXWS7_qxA4K?ufUc9b5j! z?qi1I-eU0oq6fj61Bd4au8W2TaA^KIf}O_r>3pZB{}8+{4&EO_7>tAV#}HmeIEt_u z2kaXW9zggEht)d(ue%oSpb*LzNYV*}2hBP@4QPKHHspL;yvI9C(5-jqVxevF@%`Rt zgbai@lh((CNr1@+{SagXzBBHRFaTj7!XSiHgtHOOK^Tm1E`s&W)_QmD0?qzd?_O$;_ysw%6 z92-0zaXW6wv+6V$>5TvDl+lh}X5RBmXz?dn5kTroMu(>$uwUTFB?m$rLOenOf)k+^ zLT`jbggyv;5%^tM5<)V9C1U{M{SXMn_hsJ$$zu=XXFd3?){=1<;+8C?(@rcL&HDHA zZw>rg1OJaS!12g13S%+>As&JLpWE;(1kM4ZF^#^PKA3)){)cmd<*&~)FJNmgWN?n5 zKj1vUyEV)^)P!8O5@-2@#781<{<#E!t5?=z90L8wc!UWE*$BM9b0NYQ1m+!v@bBl} z8u+&c{@-bUW0t{s;9CB-A8QTzzbhyWK9(~2nD8vXbcAFRmrZ!4axO5_Ea*Co*Qz6- z)n-EaPCL$Yi-+|8X`nB*%d+BxmY=3nJV9Olj<=~tLe!w=seN0CmcLCNatKphL8(^^*m6p(hH(;;+--|btm=0 zVFUT^LTJHaa0y_9e|kWa8CMu#WvVED58wgtbB!6{XB-dZeTZ-b>9nCpx+yPyk)ww| zR8txRzD(E_e*@(^{G-Wl$mMULD6qLp&cv76Q!aJ6ocyp&uBjt(-9ntG=j}+Ji1cEn zPdD`qJ;qH3PyX(`)KDP)HdwIH?&rZ@8ABf1@fOk-ApKruu=E}`%WQ949!sWv5+Lya z_-2AX!e{CGQc$MnOXTz-~55H7VwplVA%`fc-X&9NI!z~k9oLdrQ7{OTE9pa zQ{JD!zr_RFM?AuB`kQee{SE2IkiH1*jHKKAR{U?Qu^IO{1n1N7upUY9xq}OE_G%vo zGi`oqoR!b8?+~zy?+s5hB)eD5BO6s7pz4*!p}IK;Rqihy%y=WkYMRII(|45jrL;>*$2Md zK{h^nJ(muQ6wP)`0so;Yd~a{pv%TMT#`WM|4*tXy_}<>mZA-#yPgca9P`I@qJ0QnVpT>27auN{1)Vk)i~h_XpvC0}~~G zyjPv*3G7X5esk?;kJd|RZu4EJ1d}(aI3yj?NU4hIPy%fZd23;J2RtBnXD5>7GYc>*sCF3A2z zeavCTOI)18WjT`1coRYb5osyL(=WN9`Sc zR{uv4s;05HH3!spy=tddJ*m5pBZ3Tsb5lF?m%&&uMjq0HG{jnZ=%)}ZnS|O&a`Qj% z*Q37fQIEUTZp0owDKDO@2HRxboW-8_bcj)imV(^+E2#&CKH!E z?Mi!Byb|b&dyZ{WW=2AA9>YNUiFLa1L1e|*KZVs zeCizIa=*X9(XgNbSLe=9aHkkeopS`=}A?W0IC8)p#PsG(Fb{~My z#Bf-&VbN}uM|qHTmymW2V!wj~$(M{S{0(A@LSZca7VWl*f4N8hE9;ML1Gh*0ms>q0 zU)v^+%5O#3g3yA{D35Bc#a;-Y*Z_qF$TdKw0k}oh??N$DOE7)g9_UfdKcuMlkxxqBoaXWt9#iu9D*Bq>il z?o~g9bt~%M^RwFY8^9ds^7%drbj@AYH_(;mAAmgJLxHY&{{C*Rgrx9Gfv#>}Msr&@ zC(t$DKT)5^;)6M_@1@l7DXgEm3$ijn&+676y8+3X^LiR!spQeTFQ6s+{nHdJeHLlj zS;+i!dw2Jap^*M8i_o1EDH6(1*ByK_V4v4xDnVbLzi^@9=1g5*sIH_|W0+>b+1GkJ_OG8{+iq*<55w(~A+)GL>NJ zhdWuH?Gy>M?7xD{d-h5h3bF(`9PpYBMSX`ZCI?vx)bhlvH@(3TwQwrvt^9q=rl|P` zI`UseRi$umM5u#~{CxuN8+a*By^oD=G5Ql_-n9$kOnr}ix(PLhj}3I)B5%wElczLc zqu0^ZeI)QwqLD4UPto!ZG`0B>r_{;KM<9D|^F(mgwbrrR@MDqWTDkeXNOEm!tw`Ry z{v{~^?od=Av>F*B{AF_UYZ3mk)-v*kt_4Tnr391TBd}Z(n{3a0libW75;Q7vQ|nD4 z_qpIe%Rz?%ghE1myBB!LVT$O2BVGSeBhpR6N5aA8NU%((BXm8k!M!9QznQ#`$yWOd zUG42D$nA2uDL}gW$*o zN8lxwS*uHdp_-g#480BoL4Wx=SXVGdMN>j|e#3e@9oWi?fpsefR=2-zn-m2CEpsd_xh>lee}3kB5V>EVJ_&2$G!A=4j?rkD0e$C`%eo1*E{dZg1eBfT=3KCDMN zr(&clNLLRZKX`ms3Ot0r5A?9{x$f?8Qs=HV|2Z5x+ik5zhI5d?8yx-uvP%VyqwZ0A z;lG9l*1RnFZw##2C;7{0K7qD7r^MA2K>Lz^PUr4i|J1OT{XzM98|42%U%LRkpf=O7 z(?tx_b3hO-;#E{2bm(iisKDNC59Uxx_dNguz-HYrfX>|xUl#fe3!z}n8t^}hF$V{J zO23?9DGw$6hv?DdFLyxRW9aD4-Eq-eGwit>wp_OuxrU*dp?Z-kA)4#=P~x*(OR}t& zu8o$JZ{*sE^iYn-l^D(SAY}2^BSo&eZMkG4*Co#*7hj``mPQ(Og}tyFZP^Zqu1sFc zYzH8gijS7o+n()WTejaA*?z-pKS#FC-7eo4ON-q*ZFT&7zR@zQU{jYFxw@W3w^cN~ zxjK@=2}(roJ8e0#jU10dVtCx~-5j^RE3I-`?Rru_AQ+w0W6NcgBsZS}eE!vM)eVD5WVU4|MjYGrv z@>V}>Cy_lv+tE)!77WMtqreBbzKhI)jQMa_wj^y1auQI~f&)$a{k^f;eP=G#vOD|- zg42H$=o%z%`~pY0&o~x?_+Wc|KdYiTsvaKxjFi%!bUE-cxZtO%Fnkpa+BKRp6|W=J z4y~CLZf;vU6H7$>Y0O#XJo#og35zj@Qo2vcere4miWX#Z6fNoRSUmVX^s3!iSd@PO zO;t@Wmjs5a@IL)=R&z)rS}4|USPyFHA1r6-TxztVlpQ0HW~?ZF0cIoN`e%BqLDokS zcA?XEWJGdQMiR!tQS5L<5@tsdUO|WN7#>NO5J`A!8xlrD64E0HPKts`%vvQx5+<{{ zsgZ>69ILtmS%xc;a4?eaE^`cvBs>#I@G^n>9;4-3kYKE(dLd>kVSBD$14kz|<{Vvz z9C9L$&-AL}lPM#RLx3hN78d0^fMi8u5uIx# zDdYupCzp=;o!5whyFkS#k(;Ko;0~k^I8z}6RcG`tIQZ<$#UFhEvyuN)G9v2kj@-c# z5_ZPnk3Lz*oW^yf-1IgWI;OdV6tT0^)8Ou*ux1viId3CS(>k=P($wUK1?{R7G;pP$ zCvOy#gbt(fS->_sHaSZGF_`Kw%CU%?j2Rz$%qBP*Z!mp3*63JL&c~wK8%$nDOmmK8 zM(1e!b#Id7t*JcVC{TBW2V;Nak#`Qd#e>zOTYfrWZqDz}K3|<%-kPYC?oxua-zw`* zVKXnSN>)=pS%Y#_=f?n3Hz#GuTR%tUDS3+HxLe+N!x}03uzz^?@#x}P9+C%7Mi#Jw ztHM1wZ;j*&f|M{r$+-h!Z#^kDzbf&I_BFq$sB5;ZZP`ZW`223A8)h*)RH!DcYKCD5DK+>VQRMz}l#eI6p?kv0G3t zJnoL^X@rV4uPrnXhh$L=wJ4f@pLf*j&z{S4?5<$A&%hJPO{J)P=pvjPZWP?iog2W9!6Z)tx9zWdvalHDOxM z>dL`^y>UuuCwFRTc-P}mryIi$pNC7HQSW+6UuEl6=MYpFEk=Xpu|cm{1!8O0+=};;F?oz;ra4P0V1Eg+^Jp;HyDw>ZpDWqB)h@!h`516_T6mnvHFct}>X)CmG4y{2fMM6cuXO$ldl zj`d_8mYeHgEa5(S8p;lDP~SmroPRwkH#MUfkRmr(GBOmXZ|K(*z{#Pzm~YXe-qJ52u94$cVj|517g^Qv^ne2CcG`Uq2FRw=$GMq~+k;#6Dl$&Rx4;o8S?hnmF z1cP-*{Z$_I?^y>!xx$v5ms|Wf`Q#UU<54^HpFt?kC=FYAOlTziAOI_|6nR6HDBFWE z>&2E6)QvG!t0JG>M^BVcXIT*)i!tF2+kN!71t+Zb%$?K0!O}4jvvbEw%X^G zQxYcOk9QI$+ibbNH#-Gr-XxbGaxTusTf6W|FCa6YrCA=oh3I~0dELmVj&Pd6Xo8#fF)bXcQ!UhLnaT-jYy;Jy$ z!33xoM))6*h;jHQ063U8;G5F2+L}B4g*evi4?ijXo11O0Cn>8lJQ*2o0H?kYg3Zo- z89oD&{{^6p|EZ9cv%nB~ohekDe5*Jh`O-c4#=&cgUOVM@hckjlTbl@L@z4>%&Iin7 zRp@2t!IR!lRCl6)8XyhF3r~&R=&3yQronK_7h>g#l5Y_eNX{cbo5E*#wCRaRjz_YZ z?qF3)U)r0H2-yj5&^zqSgC`{7)e5mINj-=&KjH2%GX=UFa?@&T55oPS`T>gLHB39| z8=+?GXIOAK6z`G;yB4A&pavn@BR_tUqvNUwAfg%-to=DC|-@>2=cg9SWAgT z&zo5EB*@{vZFcg829_LH;M|3nmb@8%L!F)7-B{IN5{D%E3Oa+ z^sw-s>;=F-MVYA20%QFgwWW6rTRJ3~lZT3mx~R@^EJ~Z#8p;GM;H<31UM6(xOOCRf zOi}*$ECMb0eVp1E`^DOP4aW_-nQ{eiBLOZ{9Yo&b?G*K zH4*wFWBhg^^dMvWf z_U@zD1OsI~<4O_Q0Nrw%1smj_KSHVvmtC|MxhCeZh!N{uAQQ z81bpUL!9jd&n1wq|Hg>)U)g5$knuWByoy7ae`A?_Sf(}p zS)PKoKbmvbLS)b;;tfvDdYZ-$zF5k-j3$*wxpqitOm`5%qT7FEV4~oyW?4-;Vx|;0#}G?8;A|Hdw4LwlcrX zlFT(#hjSgskj7nk9-@4_T23mWhAN+9ZjSa}Am#MU`LBg&L!WEx`aGov$gVk$VxVA9 zd_th6VP(&k!#Y;*OnlWyJRrcJeOg_bI{q_(T!USEYMaQE`kJ6{_F^+`0k%1Alk@ka zig%}0XI)HVx#1LsWH9Ho#}F?>JZc}9$`$o%{cAV&xac-4AZB(^dMKB>{)skaMqOs){k&v)D;!sun8h!KTGUSH>b6^T@ zFs>O!Bm?gt-jT46%?aG%l6-v>?UqDc$pu+`SCqOaGzr*lVP^g}!!J_wqR>U48S8!F zpWt7Vjv1zH&oFEoK-l&S*!GN+jv0n+&#-Je&#cw}R3kT1trNaJi$qx`{M>9_ED}u9 zoh}ezy5}&erj8U8YoH!nY7EpkPfya?@Wyf+Ktm zIBe`g08el>PB~wy%byt>_iZkdVO)VL2%WcE+1{h1;A|dpPQ_lQD^vV+iN7iMi+)s- z?;&?!$|1=&c5`wS5iRw4fK7eT4LAv0(rMW(g)Qn1stZT#5GM z;IJ=KqwW9Be27hRTwSW7e(6!W8*jb*l;lsG+IZ{aZpqg_pRX#8*)khbQRWmwYtuaH zUUbbVbpiY=P9xNYl#W~%+h(d$U67`1BTj|l^lCVkBjbp(t)nqg!&{)q_a25OFTrLi z>h6sDNMfk!izl;n@3JV|&{-6ULw?(RrMYw5>Q|_`JD4{dhh<&*PsmRL-Y5#)i<=f} z`{k+cqfFc`(tnD|drJ3IxH}TCJ9P)X`F7O`qgmG(8GTE|Vx<^uszsY>Pis@2T5M|+ z=BMHC`l3-hrki&X@A$2Q@k3mQS+io-BWUGxZU=)o;T*lx z7_;Vm9?j`oVi1h`J(}}d%-|f<0@s`q%;X4vx}9Imnb1?7n)8%BzoO>+(T;1*M@-a^ zr{>(#1CQAIogi}}pAK8s5Vvf7f@RBwt>dZ}Y(0)@*3uV(59~J(z#5KDidsGu`4(_Y zDp^S8gXoxObWSwtGNXH)-c;$F`0uUR_V-E9 z$G?yjlf}xb#YB!+8Ddy%`g_Sc*9{2w)(4@U@Pg?C&R4;0jxYU3C>w)yU?683i}!zO zys=7<;ZM5tZ~MWBBiHY2>u2kJB3CkrqAVCcZqPXKzl(^c!-@as!i+6J4BiNPpY-L3 z@~u>pGg;Ia|I3Ty*?!esZ*&*E_5k+N>2t_{_Xz+U@ywsK-&^`#f%<8l`kv>npDNFN z-F+OqkH;y04J+HWE*mLr8MDaYl^;A(Hw{~oKVWS=GnlZ&Tbc>1A70_jDjnXcZ2JUj zyY8{*L;1mD@&@jYvf4u2x7b?;{c6q~WmHJR*@nM#ckXrgMuffAe56nQkVhxnlSs1C zt~&1oJDL2W@M7bF*6!}9TGDSE?dwkrgz!~^-0G{Kcaol+@QmD~f{Kd<{)<6v#QV@5 z+ym78cxSyI%-IQ><)$^@)tsY6ef-1GoMFYr?kcDC0kMM^dpS2&31DzwJqf_=@*O`% z)dD%47($ZVG(QP?bp8_vI{;@$;^0Re0T{}}A9UXdBtCFjbn3ga2qx<9qJE*#;D{=@!#N)r z<53#6lSPQaCW-+(>bsuyk1kNuE~Wj*1)fnIicm4@8_f*+)8akygD=#{fv#~rT%Q~0 zy9jOe4OOzgmTy~n7Q_X1e*-H@rsRM#9iYqOcop}rCZ{`q)K8(kA`)8MN0j~HVt~o% z{{WB!Kj&*9&8Y(krSwHS=)C<&dcuTFq2GUtqY7=rLrCMDxTXid>t6qjd@(X^{5zQQ z9UlTu0ltlY^5khpLIFeI&sc~ycqiUHO8PIx1EJqPm(^7VD;>GuV$`{g1)p@1*;$IX zS8F&H$+y_b_a1Aeim42Fu410O%oE6&g*f`W&X6!vNT|d#yFmAXXgkdw1QwLVHnG5L{hZ8FEMwXq5Ys5?MEp++K+^2`$ZLUC||5%&jGGqLxHq| z>9E8ste*Dj-H3%w#*6xvl3B}ydP1arNNONwIjB%!i@|dxFtbf}!BInppA?}@W#G|w zpDo(-76?Y0PSfA8Gqxw$YL5>k*xU2fWw!QQYZTuG*%;*fPVf618F%8+M$aauPPk0E~32eu!BCYpbf|nVBBltq#`54H}w>VHs703CfbbfOeS_T}t z_;L{%CpVo#Ompr9W_Hv0=u7AbC(Y81Ix1l1AkjIcAQ*;sk=>(2#_xk!lzX~A34$v6 z=PMRBBp2h)@FzYbM8?w_NK~}(#VA7IotX6k&shLm{~C;F;HKVa5C+dTK-JyH|0+M- zr5{5aRUHMk^&f0SOVoGtqbB=j!e{2BQbeM`=V1IBbTn3JCvHFyECq9^71f;U5H+_D z;pvcE13aq}df#!6F+cam`9wxmTOj8T%p~8{raB))EPO6zmiY_J$^3&~2R_l$Z~IgSe&IoY6VNr~W?ftaWL!+7tgBbWh5$Kk6Vm#5?WHQ3W8 zV2_yuqPt@T4~H?0DcHm(_Xi1^^79B(B~f$!Z6Q?^U45-i)fc_lb9M6{U=eEr+Kdk` zMne3Lf1?vb3mRMX1eRQ-gPy?2=32~_+PHg~JEKBpAw6q%W$F=%=s9{AK6Jy z`$u3+F$QP1N-*g^ypwZEQBwV=(8s86R6O(%Ox_RqVEQqbt^kv~VK3XH7PRGQ8L1$^ zY<(BH*MDnF#k1g6@*ST5w@<}-xR-nTKIFr-CEicYSC8UwK&Y6j`ie1-h$c3r&?%|A z3q~D>V%xyzY5y#)p!E2x;FMN$!B$Yv&pQE-{U4Ag>7%W@f8#J$oezk_gkyPX#wrm_ zdJwlcuqa7x1R7P0q7}4heLTTy(Os#FkmOd;bHPG%RcZxL95vJssD+84lX!`M)?N&p zgS3eQAkt!fo_K~9hqjUFc{Vy<{RgW1N5mxkmJG;bQ%4{hH^!>-&~QR7IW%AQ4r3`f^%(4Thhe`XvcR6N9-kSUvR$;ugDo61;=5MN zCCiT()L;>t1bMt{&Q#?!|oc$;|z5k zP&YozKy(QEBA9y19elrc9Jim1xhgT464QqwgMKSY5-*e_FojFt(U+qBXiYrD1yi30 z!g+RLg8OTd$aHi*GR?3uUB^tg+nWBLBxhRWWRg=s<}cOh=UU{qKt{D7>^2CCo|nxj zeln?9L^om$% ziI#sb6S;O6_N+r=hRe zXThhAVIPh4iqlLOg9NYo)Dcj<+Ec|ab$kn?c8d3zV&1@I>-?Cc+Hz2nH(1XiL31VvkbK`<3U&yk^8!Qj z5@uV!huvbcb98$>IQ3UBX0^;HcQ(0$sUI7L6?zi6@Y4Oc+hKma5gG7PScR58ky(E# zvZ4{jrR%Q}u}r8$pP$dfl}2JP^$uk15Q>8+RQDrv(tfalal@6YDzbO#AE7BU2m0>D z?Nl=uL?`)D`Ki?#NQa{JR{=xEkqkvVi6I`Xcq4M6;y;7g(h$DW;?P`C==e3rg+ldw zn6NphXCjKMk8JKas4wdSvX<^e2K~1enS=TnFolai9#3+MMczTOq8C$=mVPeNd{)|B zOv8}QiDS{h)SF=6!d4HWM&J%#1McY-_Y-$o7cU4X_o)7*4qh4 zu-4ng!FuGAQ|RM1l&Zfs+|)<toYBhin>*KDlBa%-Daqju&hN&05XZM;6zwt<_o>F= zXk#Jn?zVRacHvXi6OMH_ze@hNkj8z}NZhx|Xwe+W% zJito62g%`gZQr}v{jtJsSMP4cpiz0zGHD7WfRukAIIShnl_+oIPozAbLp_Mw@V%IDrJLyY9P}BM;u|5RyEa-`D`MZ{GlcKJ0$5b~HcF@rx&XHtZLcC3YD1 z!=*sme*p(_z%lb9JN-|{=vMde9m55It|6-wET5<2u0-VAj?#Y)CUrMs_ag>@>N^-m zowuR1PA)$mFCjJ|B7Yx(h|6n^s^F zzy=cJKa;%BB+rkKPhkY>c_#TvklkATNPeM`^=5bw<1|y=>dk&h4h}(jfmRNmI^`{z z&jv#S0ZQ(7Go^(M3^Ffk5CJ-|E~e(c=r z_|Kr!(BmLlU2-$Bq0cS!7NCmSyoGHrJFUSWiO=9ol3$Q8G>mRtX>hb56TU;h_w!F3 zKvb^**{eNFeZU7nA8P}U8oc{8Aw0-3yjnBm@)~WMem^R$1h-R+J`H(yoXfrl-bZ0V zp{ef*SJAGIr(_}WLNOQ*d({&Va3cgzkryEu(}_Dc17bts_sBHZ28Z~-9yC7=%~=M_|OxEm-c9)-25lR9}{1f zooi`l0eFaYWtEsWN=P>s+m zQP#Y)!22%Tq+kCc&%)6jjxM&`i?TTM|A^z}(1qm181(mzS`C?wqY#*TA>&_*I6TpY z%klOGw**jCE>wbOsU~~}CU1Hz+j2#}Xo%^$w{2jtpF#CM1qIllH^fv^7k z`1*ehHh{sAAbX8(LA|Q@&<@k(q6r*Lz2UA8DZ%Cxu+VcW!F;@*&flkO8;k-o5rDN} zP1R4ZCtwM1tqXPDAZ)b*O@HbF%9(9SZAhL`bF3eA#3l3Ifa{eKI3VMhwjl71{E6_jD{fDUtv`I1AR471j0RR+pQRMdx zf`%&QK^2RjigKu8MJrU&29=%{2GZz zeZ_;H`}h)i=^V$}NA%K5jB4uTzH~z`aLQQ6>c4jNP|N*5p_Yd*Fkvi)T9%0%rdliw zgvNtY%)mX?Yf!|!uq3=lS2X8OPzQ77Re~E^P;aF}0L1743x(6!crP&Hry-z)|LM;| zK*O{Z0B+|2jzKtQ*`0x|OXZCX15u*b?j)x4#t(<^qs%hU@VXyWV+~NBTGmIq((?9C z!W^)~ap}J}UwC@|0?NA+Z?o#EJ(`T6c6}q(AzqJmIo985bER+)-8fkv1P#6 zs~~ohuN;5f{v{r56<)q{8@Ea0z!q|H^&zA^4QWUdOXZ)zuZZe~zQPHmyK_bw=EZy9 zhz!=0_1)e1S)W+kRp1WYf>h8#w-RcraI4;|6W)Es`zB$+rM__{%+=&Dk5-go*slja z{DKXgKKDG)+(8A}3I#0wkKBQOev_}RN`p|bT9xk@$_fPY6$mbdtgJU9Wr#?lP{6~R z1o-0ufbe5@9J3g_?b+eWu>N`$?~c%*4*dhzE&6XrfqInf`K?(I zuO_M%T1Gn=k}Czav%+;I**`W?^teMFZSHWqkLuR94Wh_)w3}@dmH7)wVP#m61Z)&W z!{F5{u;C`6Re4-M3XXsIR<`4A7J}h-0UCoJZyB!OS3rgrLXz(+oURoLEQ~u#cMBs_ z@w-3xrt~Rh!l7}UF9m;B_=ezbncTbsMWa?;^`CmpIkc}+_(6upK=i;q*>}Ey1=&Y^ z{oLB@w9fW8|MbpwhyMmo2NJ=A8XARYeLX7b;8lkzYFxP7I4v^FINF^?=ZUY>vBtr6 z3^@u^^bj#*^{DxU;Zc|#X%LErFQBhRtMFSrd7=>V!(8IL>O~&ahr*(5;&DRrZ(F( z|7G=VN5Ua$Gc*kA01T1HP%y_z2Hjv_&z)X1Yz`S3G#JAp?3%u+BjHnu!LJI57q_15 z7v$jQAQWh;GOyCceTvs7zW3og9IM{qa6hPDG5{)r-8{qYm6vLuCh{GNTl=5JE2Zs4&pnNZxah7sF#I&*8O+S80Pj#kkmy zuRbs!l3~H2PRQH|g-QAq!VBR`gk5u66&o{);rfOgg-ryfwMNyyXLn$OU;!n7!=*`ys4`a}88Bmm)4mCW4sHia});C}qMy>C_ z_a|_0(BXKYoi7a)ECI97;}lLwFvU{5q-|b+`h=%P&o0FGI)*-`+oZn}k)8?ZhOy|W zV4xuG7C*xD#N|)W+-Sa|pTqKS;rofe_CKSLI3(Q*=*LLgegF~4w~aR(g-;3h_yUIR zO>pq^6`VeJgyVW|qyD}P97b9$HY!0Ki5$9pUR2sYcKHTp9aN5g-rTnCobYygi|~t2 zB(Hsxr#0$R9F1ssEkJmRt-bRxtjzxZ*zAA4x)EnNg4>;qf<<<@={i^perPU_W9G1a z3$n7UTQ@iV3S!&zgoN%Xj#axW0^5HLT=G4m-Oa|+RJEt5b3Kt+(2qlC(wdkg&4tFL zp1`_VNp4;b%M9OO^u@DhM|*nv8mp%t!kd;5&wO|C7i0BQxH%6FyiI8;mo0MBESyn# zI%ZUo1+WlO;W|-*f7njCH2oc{5iqK2ML)X0Esu0A{TW&=_n*;#VUC%0RVCh4zQCMH z_UCoO6i25=T~&!amhKQ`!qdf3r3zh>4-3yy#OyFhP-F;jN+9ED5=;Jm{Ew2 zwlmK58S4r7r$#VCJNoA-C?lAJuSwhEP;LXtTX}&|9_q5LR&R;c*547zVu|rZwH$=% zKk2@5;kGE~Q3!&6s`Y3;qwF3YY$GXfVxS6}G>29w1s!APd!~?rg(XJTk0Q1|4ljOfCE}z(c^H^xL;6|OQ{c0s-ety zC{uwl<=bQwU?^0fo^pFg^Y010!wG_GYBYWAEn>o%VpjMeuIY?sho)fwz>Eqd-v#Jj zR_sxSZy+^}B>`pxq4m9ZRnLinhMvmV0<$fCUe7jVfLQ3>4l~4H*e^Gw!k9hU(-eoF zFt`Jgasmp$R~$0L#YfoJlyg>|}nJIqOP|Jf00VFk?fkanpOT-~j{7_|X7#f&E+KG=-o7iu~ZlOl8l=ceQgd*wiN9yDRa<#*+?zYT!t&KSgL%ZsrZ1&_4Xpj~eSExoIl0@`Y>A zIR;jYIVtxhEWnyR#7_qv<5culFk)wwp5h;bmzMv@Y*-Abd$GnkL`R^lD#V(|;gKKz zmnYunMdbPml2AcToCgtQ9e<1-r<)NcQK1@hxHh48&_D{Pr> zHg=8+jK;hV?}gXZKSJu-K@eb-*H>}uQnJ6O``6~_cpqRW%d38@?*hN5e=+2X`o94A z+T)F=2$%hHA-dKOz0oH6T#Am|aBh*e#*)9-k}po|s2|9uTeuDhhMhD$jI#9omhJJl zmy=9z{O@Ww4|V7}gbA*K$N5ZuA92(kzYeK?gebfE5wUSylFMD|JXCk0QQbpGh9-uA zy!N~v)vbtG-}m(=kW1*J5K^uFWWkRy!Pu|k{$S7VHYW0H{U5u#wbUp5=exz3jiS;hVKc*0^9y{NUFcw}m zu!&45G`OIhkMy~S1MZN}efqTmp&{wdgP*G6H8pcMc(r9NF@5L4&szH@Z9$@;yk8=N zWk%^elqc3RvHQD@HRE{T*RPg6h2Dad(u0)Ypp5nS5Y#bkTKr9P_6}_V$!Yqaf zexhE4!*E0v==eY78L8C^80j#+(gLhyE}VXu>m0d1N(ok?3D_@PGn8eTr^Oq=r|!c! zB+u9EC&k~OX5#+ElzKLtd#b9ip@OSXmT^*iEn=7gpIk0j&<61y$qhc8ZbszKMPhh| z{s#-cg7}}1D+h;`ViJYue#}w@X~vr1GbkAxKdCc0!jAxJL`A}{Ao6K7A{bpcN0E*} z_5~a;PLw|b_G}57p{F2w&-25;(UIyr+>^vNMEDs}=WLgu0vrMB)3BNoww)kGE#GYE zSAr&PWtxg7&Q5QE`FqthtzNaf?YrYgEC;$#3p6MrB&x3P{$_vVR(A)di8pgN2TU%; z-4)xLxo*81%5h`+0*gohGwh#>W}F1#G|ABE+dAHAeckE17k51O=~uG1;b6p`sBI~9 z_X$=cFtyt;&Y_XZkWW7>NOF@Oqa(29dC6Di#tG3#EbifYYGOj{K z?$c<``1`)zjIQ!#AMs6L+q)p2hSjZ~Ld>g`w;{85NqIHeXei=uA5pQ#^&7wu`UNZ+ z8y?>M4yu9QN^Vmy+!VH)_4R1C55E_2k2)KNL)jj+Nuc;a zrPk0VIMHF-E=A2T)@Lxzo4|@;@-UBvJ@W7{ErBJ>?6!9Lxlr4uD`>gjn}ul zSHnxhtZ)mIAV1xl2;)%O*S{wn!-eA$QX_3+{F^xL$6-4=*4UM6o-}N9sT0l?=cq5P ze_ysykU|1=VL?E=_|}KUTQo8z2okqxKj2LqYrWa13$zyg_V2+=YkiD+a}h>n6G$W24m$^U~MM&)+XY+UpQX8JHQ#=S!g!= z>4o}YLmGc_GxZuV^B#w==if(_oH`e1iZ)r#AynTLzx$wR6mkjtQsOu-#wTF{ zA5FX;aY^78631Fm3LV3U>K<_(ag0^8U*H3XV~c?H3%oCJ?1j*NfyWWYeiZE&_{ovL zae9FE3;YY>IQ~HU1^zK{oN=N30)L-4Iuq>|_+jEW07Ux*evmj$QPF;ZzepVC;Ap?V zcM-?XNBaf-EOEGRv|r#)5XYp1_6z)X#PRYH?HBk1#PPlw?Z?c9{wMAtenj9uAwHD& z0fBEOej)KTfo~u_jCiZSZzevR_!fcJ5g$RkMc_+`Uqrl7;ERc0OuSa$*AquT`vrat zap)NB7x+x#qlxDVd@AuD5ziF(B;uD4cM1Gb;u*wK1U{NL-Zh~80>6;>SmMX_Mf`xk`x3vDc$>iEh+js$Rp2MlmdbI&w+Q?T;^T?82>fH>xR-$T3;ccJ zmlLlQ_+jD`i5Cm}An|PCg#v$(_$1=F0^db^GVx4-KTCWHahJfKAf7`!Mc}_9eg$z! z;13YLlK3%v?1cU&o=g0Qz<)yAP5gksHxr*qyiMR6h)*NlD)5_$=Mmo`@H*o8#9IWu zl=yVwjRIdxd)5dBZQkoXaS4lM&gpdA0S>t{MZT6|HO-l9})OZh?fvQAn?t^7ZYz2_y*#o z#9IY^Gx0LwTLfN5yqtK8z?TxQAl@kO#l)8ouNC<9#4Cvx3;Y`5Rm2MgK9l%T;<*B! zN_-jdOo2}#zMQy=xcLAV&*`{Dw;(4vKIil@poM?T84Qnwe{JG0p&BE__@C_P={!aiGfcmJw6^zynH71H6SNmK7+#sz7yPQ-j} zXg44yVm`}F{FvF^!JLutU`i6@@%Ib(puYrewcDWn|L-pc{116(77Q(>K2OhckEypu zOt{sAdrkPd3IA!rP80UpWk@>Pgcq4`f(fUaaJ~sEOt{j7x0&!B6Fy?XttQ-S!q-js zPZM^Uu-9(0d=p+|!U-mvZo>H{tT5q96W(URdrbI<3AdVXuL)l_;Xh5-X~JH6%<@fm zkqIZ5aJmWSo3O%!D@}Nt3GXrCBPQHx!o4PZ-Gu+Ew6h6qB8cMn`c-?=qsM?H=pk!L zC1Ovdlu$|!f>1=nbdzj8YO)ENZD?;fNbw-zK}zw|i^YS7s!)o8AD~qPp?D}F9`urf zh>0Xum=vjMtm>{X22{s1D3!xxCAbPYv2aB z1@3@dum=uoAwHM{Ghh~+0ZU*TTmqNDHE;vm0(ZbJ*aHXNAU>D`Ghh~+0ZU*TTmqND zHE;vm0(ZbJ*aHXNB0iV|Ghh~+VLSBw@rx6QLd^@xiMAiMs*NBqJmRL^bmCOG8jZ5KIlmCOGMLbgMp#Z6Q7WA(7tiH0ne+J(ZzMf(+8N547(>o< zHMr)7qlxM1iQNzw{Ks8V!)Mb{^c}|w-J+kLFY7vwUH$w{ey_e&X+>e=|L6 zC07c)x}U2Q#gi?^jr;}iss>f5O9IF3%L-8=Y{_g4<_e-wpPUzl-eP~2UcFk7sWe1q zB8X|U`IabU|LcArgR+oZe*M{p4HUz{3eg%ARiPTjjhzeb3G}xo}JY5d?mm4z0Ehds7XIkUug6!W}D|R zsR^slpRSZ%F1h z;?ghn^V0-d@1^U|!u*ZA00HCM`(G4IT+jTCjOTBfL)rR3`ZR>TXlnU2w3q8AO`Em; z!y;bV(oj9uzdC6~$)dGjool>YmquJaIAumj{bGxF;r!WmOAOW1ZF|;?Y~zD-6K&Hg zzZ*&eyd#Y3nLl26XdI9(?yBth-?jA2H*5RUuUh)fOB1RC{TD9GbpJK~d(iXqF^ha| zcGC##_1gRQz|uFNZ|+n7*wS~P??7+Iv)k&Xd(8PWzrV3h{VUPx7E#Z9_BQnE`f#N% zF3Ej)FJtOL{n#hYwFqYL5#S5^_v-4g?@pKAmg(8qZn~L->*(QH69&K z3<5j;SLxS2x~=>$jw{a$_5Sf<>$@_j@zZf9v8jJ#^{cNI@@LHM51^WQZVY?9)X`V} SZgB4GQ(lJtcf3<RXyI(6#QsjAMfzD${!;Bt)+>?cvUN^l_`o^BzEZG2Xvok3D86bPr` zd%SRgFbr@K!&&9UR)SLNsY@7~rr7vIq*QNUlidD&eV+ zX2Dc18K1CS&ilvHmO_h;r_OrR$2_l9o);RN*4e`FG``+F^%ng-zaE@++a1cg)57z5 zqz-Ct>k13M^^U>mM!OzQxjyH=uhx(#|Eioe8==Ck_uj=;JMrm1EwsQ>uKR0IkL3LC zK2)DRVSC);Q`u(7Q{LX>hWh2+R&Vv>hMF92Lv60VIX9n3ssBVn{h8_WdaqefDx|zQ zCWfanjz>0zr{d6hQOab1pcfc@Z*QTPXPW@{mmbO{_-L4GlsxlGX!290$(u% ze$f#4B}3qs4}o7f1pbyG@V5Rh4nUS#m_b!i0hrweBbeEs8iK}fLwbH#ET!_&k;B}s!Ii^fSY zP(G03oD#4;(0_@-=MdBm352a#w+tsazP52sFgQ_2#^OLU+ZdcAjHboHeyE=X_)vO| zg-Z&9oNy2Q*T1dYQL*Z`S0YcJRD9^U0-sSVCkV6-&{CU&&jt99e&{(1pL~`R1X@Gr z$;KxSpUd#!dJ~a98y{LXrr~p{hh%X+v{qe&Pr4I{Jddrike`ar1bimqLu(#AldVLU zWTzwTbPUpDd``m$3j7~GiH@3lOdP0_vOE^x1$^Gw;~+@90BMFJe?IawUi>-J&WuM& zzL18OVwqfgM&m=zCHS0&&lG$v$LB(P1aH%-dS7#suxwe2uX#mNRijs^QoXJ9s<5oS zsa{>CHuwb#Tvpv$wXC+jsj8v=7O${u_Nry`y({Yds@GT2Q04b~{ovtOtEyKntFBwQ zY(=2TS0nhnYD05%RfAVp;Z>Vk)MX9LO)CUss(dSi7GHgnTFYwHGzZic%B@}=s1<6f z8=C!IBCBtz5gNUX)h%lTzv`=QWHhlhYOCrSfUi;oe?3HR5SDX_n);>|q1NYZZt*q= zwX1#gs#mDB+q1xBfhI_{(pv+3K&_^>eUMS8THfqK-gQW#rD2{&(p0lEPQ1g{#u&!c-rFdtu#sTY>vbK zJ2?hC;W+$gGG08rarl3b(b99fm2i2ElheQ>#o=$ZCr@!4{%c#F$~gQe8{Za(udyf9 z<~aOF8y}9t-$auVPj4K4wJncyhgHtyzsc5HRvfCfg~u#NlVz^0da`Z?wm^Ee_vh>tRD2 zeuvF}V;r8#e@`5Km2D@R@D;Y4TjTI|+j?7U zw>u2%oa;cP1D|X)#lGttc&fvn76*O=MH5_^8TGZ>nJHiaXbl{!q`QKPE*_bNpax$9HX){2cE|- zgim+ic^p7^$${rF4&k#Lc#2v0ljp!Y*Zcwp-nl<1cHsGXPrPIYp5hVyR5S7EzFHmla~$|K2i~62taO6|&s{bZY;@pl7s=@F zao}y&#_*dRc!^=GuPqKdi(TxptqwfJg#6j=z*Bt6pRfb(jH$XE_)JcWw8w$J#DPEH zz)x`CdmZ>J2i|nxvmN*&4m`!u{ONb#DTa+b_gXo!eICaWCdGlLSe!p;4m`z!{7HA< zd0b3ok^@h%I)AbpcpleNS)Kz=u_b>B9C(WN`BUt`Q;g0Z*@1WN11cQ&%Q-R9#SZ)x z4m^c962*oH?hp&rx8$fkK=n;4a;kkoPR_}=`leNgYHOsL`r29vv0Y=8S}4^wRX6*5 z-fC5907KN4z``q4*H!uag1@eLbx!jtudku1Mex*0Rnkn4QYO{=rOKQMlO!erVzj0j zM8V*M&@WfWX_Ta#oJKF=Oi7xDfH$B@41%-}7GwyfA$oJIJw+#*R(Son!u1H9Rd18Dd=08k;-6GUo^UZ39hREaI4n<^}7TG`aR zx=He{LBAR;k%jpnStBiItXJyiz?>Nn>F8EE=i00UWo%}0?oBl`Mk_<&75ILz3_EFwc8CE#Ifp!{zE<)Fs;j+ze{G;)l9W$~ z>gJ}}hWct16Ko2>s;@b)yuk}&xQuk_t@5uKJXHftw%=%KZaU?(WxG^ZyJR^kY$}DE z#j!y-MU_d?av!$tUhKG6K)2pTG+srG<19dxq=j&3ssuKc!AVsxVie>GGpq+zk}AaH zq|vMSUPH5eNNUXB;0v04^|v%P<&X*Zi}LgGAOwtt93}IR{yHdqrO;UK_miA_5UOh7 z71_87PS1wXBC!@?>@nu(3pthv113Z^Nv`WqV1TJN!y)(~d0chovHlfDz{iKum?}~Q8g~eA%86_tt;Iv~d*Pv~RGgyB zZI+t6tJ&%aDuB%o$` z7S1hOut1tQZ@%P~D%|rIdP){4?)g&1qWKl`7L-B3+*eqqKu(V=rr2b( z7fp1gxl!T{626-INSFa2%YkBgxrq;pBWPanfPnHgqd{{r<|Dq(j1cl*B1<$8Y8#qY z3uN>H7HImPK0@k}la1okD|>9zW08!#(3aS%k6K6LMkDFBf+K_pG|cE-S*&;Vl#KN- zUSC6XGiM>OaG1Izl~=8VVN@-*TSMT323veyT8+s#s;Dqmu#V)|n&|XT-?j3^x*8v0 z4YG6=b|BV*d5{NRW(5Q}GzW#NtcU3qO;aEO9|#j%DZrpgV7|Wk6?F*cO0uOXd3jSM zx~i2H*fuZCr1gdQqDhjcsXA9so0}y>6l*Nc$CfrYJZAZrer)|$>#<72kU5H^xUVTw zNNbF|$Ob8Nu(FN_llfCR?#;z{J!FjqO@dH~&DhKTAAJ^JGx|U2&wX+AZjXbVJRkdx zGNN-~ z_!Qvd#%DG@3-DQjj~AaNeCWZ^cr(^;Z);su06U2q!nw{(EIfjg&J(`IVa7->eF2+5 zy2Bk=AP6-`6{PJ**CPD`(ua}mLHfc~g78nIBd@`o3WPeZL=YAteH-nyBV7yG9!L5N z(pQllM*20ygm=&qK|0BAT( z9QN#k-3ac{X}2eoj2c!E9R8DGM)FUS?n+Gjj|5P=M-IaQRR&1FTG)WiG}||G`Ws>- zD7AR1NH>G7kPw`X@_4AtyYUI5{6a#UqWp27dr;2KFL?PiL1@R4`&Fd9C_iHuGQ7Op zA$MbPOepGS68hUS19w=&fzvztSwGNEqMr)--m76}NMrOfgG?t0U&L6W(2}PHbm3xr zob+>o!+v6E@gbL^3h}=ibQRYK!mo${mq!jJCWIV>RECH2MfMj4{UE)wQfpk^LwPUC zX^dk0;>Lx_MkZjqLC4N%dAoB4w@GwUK}Y;1IQcC-nQqCy$dBd+@vC+6OIR|9A+`H3 z=(0*M7o2pyL1e6tG{1^L7jGXog0zfTtECH?e=_LU`62J`g2DV~JZOFrKXyLF=}Ll0 zKTWK3a3rCu@m>h}3eYpB#Odeq@lG(EEfD{9&`YI)aF7^qdWZcb>=>vq6(o;?z6bOH zr#(676DK+?ikMpcCI68Qzp|YWyq#IpkAy$+7Ra8+zib5^O`jN@8x#Pkd@9N}qnw>H zb3R0iCj*~_cKOqU;N|xGAQU~+@3o*SfFIjL2u?S9V4f!2Zna6pME@}8w}5^FAvk?P zjV=031H@Dw_bigN_ubdKuX8VQFI*r852t&yZ)JVFT)kT{W^{RiU1_qByt)bo5iAe_ ziHcU>33jH0-n#Wtk3LKeh1H8>W7J*C1VJ3%MyzGcB?rSUaa%>S?W@V^k@o$8Pvv0I z*m)>ZQ)TU#`4OgLH8<%h)wm=6C&Ee89C`$pvN+diC?yMyaeG6Va{^>u>wraQVQ&7%#EJY|N^ zsH{_S>w2_M=Gly(s+&~96es6nna8JsO?j`P}?wj1pmhNWyxNd=BOndel>SglNNR;d&vauMw z49i*vdilKEaXc|F;zsvPOZ#5O=`t0Fo&$2niNwg5fyTx0#VC49echv%zSB>=w)%^1 znlIQ7wYPxu{*eM5sUu~*D0?YX{VK6F&fkk=-pLSyoG2SIZ18x3FD2RorYVsK>%-FB z)E@Bzw?8m$XCZedI0)(}4B>6aE$!36cF8~?3+l!XYlq76!{!L^DI)Uq7h$Fa``3tfgkZd$>ZCgq zSAVp(Gx<$u$mI_1bw$EOP(&$ z<1mrIQwi=H&+?O5ehl(pb)L-%`nypO`o2L+MJ^`y?^#>ZzJQuBSkFTr(8VbDeL!En zMYcHYm0pJI#{~$WT?Ywy{*Ot~`n2Z}07Bo3{wo@dNCPILXvC(IYUr1dwaB5PYF^t_ zLg0Omez`t#q#;MOxg$g2TSXdHGA(U%r;r-y*+tiz=6$Fc*#i-Vp=~s}^mR(c-OL0U z<$r?-v;ssP{i?`ivVMLE z+yS^$>pS*J>4nErM*RmMaa;0(NJeyTNWLGbJNS)jefpiF?j}O%cwkg;2eVK$I}{FN zqO&F``l$Koxsbpp+G#@>Cx5BeiZ&E?9n`U4sb@%heSBW(oOC=$X|iH z`6!qT$k7#2Vek-5&<+HTBx<2nfZF|Q@!b`wvx~agSr#pU$_A*zkZ=EMRwop2rC#nK zG*`mn6i{phg{&PkFJ%;}!rL}lQ2Im*X$z&3SZQmM_+)4UP?-WYdPPDpf~a#n`e>Nv z6tLMvjqV(WFWBXs%r0$pFHS>CGwqhbxWI%g?VSU%C`Jn?Vy*3D6l-o#v?pk|A{nH< zbf|0$scbVY#BE|4pPyO8n0Iz#1?DH9I7w15ln8yrsL;D{>;5xN=>N=uGkF_Lo>ZIn zb9Q`{2T%nwN((JUwOwPW^GD55kV&o%wXg>7r#>ip#%^F57-j~drX6*J)jpsIqY3hQ zv`&=Mkb>6{S~PW#S>!jTay)QTkJhuvCuwyx}Lll5!UXKTvdjr6ry)^9GJt*JnFxr<3` ztt)uUCF|-pZE&7}xe>ptuYGZ&9PBEVwJT&zMIH!nSq}tdx@NL^vOYIG|EN6uxnl9Y zPFYl5$vHUX>=_ zBkQGmH!6B7DPc3zodO-9w~F>)1#;?mD2q_a#L6@!Q3BD%as*ZrThf)pmXydjvi63o zm!!%1oIFqV3m(@VlzOsX^0+z`%?mDpt*EjEeA78!=EKyB75x!v0PLwmnOFz*S)jc~ znb->6ttpXn!59tB$+Jm4*)Murdp+4Ndt6AsvDAT+p1H-HB?jp^?IEw2i zRkX?!MQce@w7PUfYXzqeYfvjeGc0_NwUWH@><>Iq_*Z5dfivW;5}d*iladNbBbV-k zL4nsX)0;_+loZ4e3oS&2qOVL>^dCv(*`Io%U4gT0Lj#LqVu5rqrIBpAX4E`~YFg$9 zj>R#2g2i#MqWkldiT*4|7PwS4N@VCyCS`S%$c&{?QVA5zGN396l^>1_NcI%z!lh_CuDhkrUiUMu&`(C(aMK{t&2(24iuR4g!Jb`T?9leR} zr)bzc+0VKk!!%_xpe!Hcn*`K~obTR63yjUzeRQ|W{WM@G@G0<~t2cZ@PT-rZ=qmLg ze_v#>T*zX)^?N<~wX&>_eQu7f9*0WCz63-iM^q3(4tBU^8)LH}tcu-No-+OOwfp`? z4brZ~9#WU39b@Fj)G(7)&VEkTHc4o(RJ%Wq_3n{kBpz*#tQV(Xf+*Qv&;Uj|#P)rt zRi6Ecr{jafIeO{w3dMB&_d`f#&U*fnpiQ>{hfV< zC?Ek+_=xFj2ugLUhq~26UCn_1V#cl*NfmF-z+>50Gb0;lk?Q1ZNK2;DiMZ@ZTWg>Hao{slvelW%A>53}?z?v-NqDYHaW@y5Y z=!)Kg3Ddh;?C7Rjyt~sK>`bOP)4r>p#(qaS+Ju$=l_1N1!SSUj6MvM#eD%bV zbkFpzzi4-svKOJixI zKsJ&;c$F$&LVb{pQHd|139+mjDyC^U(ApcrvBhS!Kq#1bBJEsu5I6I2whD!4%LyT^ zh$yt!f@lRGGqE565aK$Wtr#BdMOb;AM=PsSG!rX9;9~@96q?J`Mk}kp=#=Um6q?H& zy-8qCmZNAp$fmI>BtZdy$Vo-cE!CMO6rI84dShLA=wq?{Efl(OpcCv*5<@xANL$e~ zI!Frq7X%}A9(_r2ibq$H)7py8W=BlzCFDl5`z4g-zoqC;R3d}58zXlMtN_YM0|LiN zh{?C1_ZWKIT?p#+UCf!0hAis(eIU~}krqIzgH+KUr14Xr-;Tx7@K}S zX}#@Tm)!}wX^o-T(rXQ=QPhorg6}XVfF~SpQQDls(jsu_LXCSJrmOWqH|@ zZp#x75I_ZNz$}BnTx319G}uQL77U-zt*ub7A2TWp@o+FEw$mR$2K!;{cay+Hy>zG} zw%-9Drd9L`nj#%~^o7Z31G=%B!5#<-&3=wFxrr1C71d?noEPRv-V2PF`Pi~C>RVr7 z3KcBsD?tqvkwUQm!93oWr`JqNnWHb6mNqAGNm1Io#G0a%ofu4k>uoU@n4e#aF=Ign zWX?lR&=hqXmdOUzxHdt_eiv&LjtEbnk6(g;taU-!r%)YYc7Q?OF<{$@%sJHakij+r zarR^l%tQEli zC6%Bl>M&VX~v--)Ad#3LZjn5z;)hL*) zFX>HbE6fe-+LcSyEbBH$qmIp*4?yI8+4TlR5mw(rU99hWFCy7K!C7<~tdtF}aXp(R z4^rcb_91$);$^1IVj!TdpQB3K4%Pv+7>C!M!kPV|@pH63U=%UaA7ti-Fx_zWW)_2k z-I_HSJo*Kmi8u8R8r!vKl!(WG*uBja8{v;mz&^0z;lNXDFM+NU7fvm>!vEY!wZ4M! z^c^Ep=-O@Rn`R;;q-M#$BGaI~Zz^Pc;Q>qE=qM($)#XFxt_w-!!#opb(rGHTO}j-S z8;qz@fuh$ONO8B#$jA*mHAv~dMlG8^DV>^(+#^qaLkzhRoJR2r@*~=tP~|Mt=#$W) zxyIBi8iSMMWrp$oAVJBnNl^3bQ%Jc1%pm3aka8_ad3A1J=O7{fDUp!OZN-GVZ$N*4 zWS;1&KKirV0qkOE)pC%VP(6aEitBp>%*g7?k5FQJS$h?mVSW+Y>ytJWi%lS-7*TgB{oyd5|A_y1T=6gmE!jb>BrBon>LW*+c>Nee{LK zh@M4@+&Uh|?30Z}Vf1GS?)Y(hz$Tw4ju+foXRtp}WX*c2Uy`fa4Hhj}+YMSy%k_pN ztmI3QC|s7n+PD^$z*!&Yz%kz@@o;8a@3LXW`IzSqz%ejgVjK9kwlM_>>7&;Y&IPO&0RI?AVi zBi?l{<+DG*u@JirRm8bR$bzu3#g#-UGY`w#K)@%+*uboSx?#mrFnO{boWs0=pjmmP zVy-@^ceZ}sA+|aw+NYRwigw%_hbmTh|3Tp4YueUMjHcSdt)4f~zn$GQ4&$;dpZ^N( zSc5FALL@;N6hlqamXR!4^N*CRCvE7X!J?@E%fRTSSdbkH3KnF?f@uWV@t!@^tJz5` z>al)QhgjHW86-B%12!AUw3mWd&pmZAcHs6&1f3~#!@eK~iKAPQ-=)B`6%|5{LZFML z7@6Lk$=N{I;f9g?)Gj7=x+SR9m*N!9vDYCJ^$-U}<=9u;Re>pFuV-TW)$n_5Og9K7 zbg;KVzvsx1W1-(hI+C_r1Q{v{EbdA|np~(Pq^w)|FE@PVPKxe9E4s+$!e?d^2x%CKS--6C3(ec24g|)h zlA`kaq{u&o6g&XIAsz+tQ)wB}dE9w~PJ=Cb!5JoYqOB>4iv>3r@HMG@I-;jwf2w+w zUXnuBQgc$QYboo-Q#(!ECPWbJ9yDJEBSdw9{o<1)X!D0KQ^%u}K9qwvx&F!U$yljM4#Y zThUWgX<#V_*#jWM^dg%SLlZ&XcN@Og1<18f!kHUf&feoj!m091>U<3(rk?!viQx2A~Ox`W441HaU827J`4 zI19c0CHBsLdr0UHE=Z>qsRTfcEY>}g>-*6ZZoflr4wy`H5xU)L=R&0&i7g1lNW7< z&YqdXbSAUA`bFL5Ka*UKrW#(O$q9v|uC^O+u~} zIRuEs9_<}v`Ux?(KZ&aE-9^XQ=F=n55XRGxCAxAsy;#C0&tqJdfSod?C+%c#OD=B9 z4}L4DM~d6N9ie_CYwN<=v0ztEFgk*+8N@rD0Z%NtxS#lkto=C!!3@#lmR!24#xPsACAL7aKu%cZU5eLM_EzEATH7DA3e1!T%+i^+#r0w{mfJfYR znsIGU@T(Ex9rIaBZ`t-CZrg{3?p2KQuJr_WqoFxyXtztl%|6IeeFv>ZevlFw%k*u5 zRqUOWa_wCl)Vm;0V&r_AAN5ZReL^cC?MPz1zYGQAZ#{(X%Jrw=TT&19(Rzt&m3j`o ztJMsA*NCAH`r~x;`dNF&3a*M@n zugx*0Zc~h@KEyhwR_^OoM{iDxoIapk#Dk~QucAFd))MeJ)EvQbjl*W>7suiB4hA-W zA1THpsCn zXkDAR2?zjrh%;MpJY2p(*7M;;W$jr2+uhq|&{W!pX-NnDdilok>4ySiX)Y?dHymji z=yG}Xak^)dU18ZsYV%}wc!C{yZnoHS@&RIu7cQJLB*k?Ur$HHcitBSUig?s&P|=<@ z&ttCO4R);CnF40fzzc2bwqlJrjxFj_m@5$JAeQb#aO{@%}B!r zAS1n8J6xXq&vIjJhC??vPZsZZ11#t+32&a5KV^rmvK!-7YkSNRUZ-Jw~tomfDI>s11-HUjkZ!EP3 zHwf1wccBHa*UL6Dw}*>QeN<@C-86$kg!IbJt0mEk1O(ye&o=4R01truAz zclC52jcGfvM!{i^IGuPb-5N=!`9m)mV1qcpc&2=5riYYC(7VAUu$72?X8jA*SD+r*Z1-1ACI+s2N2z|>p> z!O5_CAfCAx0AdTV{Utzjfw3Q{7TO3xeaC%7J`)tB`Xf{oFHjsoQmTDw7TZjYgWOub zLSc6GCeG`2YcJsJ$Q(r*Z*4cIWeu0y|1h7y@}*4g4X8NL-T*#0T7c~h=uk!%*mE@< z=mjT&HFlKcuJ`EtKm<3u?l9Y!TA*m}D%mF(-#5(_V9M^fk5kw?{eb#6Mf;*$`x;u$ z$Ry9enu|5E>_WddwW_c*E&5~w@1Sj?B^ab@S>87$To(1sheBlvCB>JKn;TwUnqP-|sLgu|383h?u^*KfBKy9B@d)2cj z^P!WGB4p;nEFx2p8S__UCL)u8X%xX*InypA%-P6{$IOV(g<>mACNdluk+c5X9EnkL zNh!&_+tz5|*58?{BMjhD$- z^BSau*V3Zp2|Ol0F|W`fcT_9hDC z#O$SQVzw7APc?29vk{(WuS19wDn^llR~V4s#m*Zf5*;B=*%2%R5+SuRXuOQZ`hdJ0 z#q8JkXyg^6tjFxYhMOuBmK_PC!dH+8H!j_6YKV;ny?-q0$>XMgIqrlL@Jh3he03gN z1ny18ZTd4<7^7y<455A4CvZ1rAL_^ATWh~{L_YRm%NSYw%Q1Qb{~l5kF+*ebLC%30 zZoThru67XoXb=H=A0F?N$y$$m>;uN~C0TpPT;!cA2g8dQ1+zc*bqi$e3;M$g z49*D(0Wmmd&?ZtNzU(#ng@~)nPhl}J%Q)Hp+;+GJn!#TsxV2;230U(aSTh+Zths_E zn=GTg-!f`1jJgp<9e`1<+bZL=ToA#o^H^dOP@-r4n2u^`!jcv1$w7A5TVVczg{sNz zlPz(R@Y4Q8C|+w7!$@aS3476?7gh@6Je@*ABa{ZV-~~HoGoxGHo(`#D(O5Oh!m?2w z)()1kKX)*3mtZwbGdK-Xg!(ryi7T<}(s(-KxfCq0+81ur*E73uU~Eg?gTFI5#K3iE z<~1zhrVru-lMm)1c*EZyOjC>bKPa~Uj1AB`=35YrV$jV~#QV!u$*#F2*4g!VN#TS=$7&t1JxZAb0XZ#8@laDtDD_ zr$57zjdfe`w(wmTL7b~CK@%XlnP|nb-LjUv>Ty;r0hR=)#e%k4&<`23?p3o2wY$oC ztfRQ(5~{7?r5Gd7y$cH)JfJy`8P;g*#>~J7xSwKj6}wG2kq*P!L1WF2rMn0Fzx;3z z8%=Ruzlr#8i2c!m3d|uW?}f(%A=(3@MF)D2$7<6-2_j)dpAKa8L_oOY!x?A~RL25h zS$hXNc?Lt*lOM*k!r_8dX3`#-_PP&nYRomFCK%Mi9|1L%F`N1)z|xe#W-3|Ere)9k zcXZEe2VUzc#i{9?$eCY)KO40{{-6RoJCF7y=7`62%(D~2OV4^)3-m-rV~HxoP`dWw z-pfBr!Qf^`l<8l1#98mKQ|M1%oMsW2!-CfzP&3WnqYZlP(h6yA_eAfr3 zpQ&z(3|A&L_Rw|S;6IugP`|Z)Vx^l;ud)Sb<499w9g zl}9`$cYGuT-pk*A?6b(bpq58;%N?eqo{PL)p(Ao8IBpjt$S9U|F5OKf$3BC&wD=qn zH+Cq~!>g0p_o;|b`Un2NiS&i_%s9V#3>giE(mL86`1`5;*xyfK5~P@T7Xl|sds5JQ z2H!}p&R8(XAD#B-1bk;cj&E8oqnQNPQBhwnX+QH%1k(Wb^)UDWg2_Dk!VLZm!5Ctp zZ!3d;PB4Z+=-bTTI|+v23w;|I{9}UQZ-l-!2H!&PaDvI}MKgT_W3dwYDjEDkg0T<_ zeH9E|PA~!#p|6<1HxNt{tS^tj^9e>2i#Hw^Je%NA1gA0h8iHve^$85Vl3;8?g+AJc zM>D4ooJMdjgD)i*Mtv={|x@>62LesNB>8>wjK&k4>Tcr%0VBsi1cjST)V!T6y648Db6=mh;|u#aF`M*1ol{6m7_Nzi`= zFDLj?f{Ph^1Ho`==s$z!6Ab^3{xf(s!C2VPe+FMeFroO%SV9a31I~Y6(qQANOu4iFfVLZ7KR~`>G#v|h3 z);KsGbjKs&;IcS49;Dl~?|Q1fs}N+$ohZShB3bx%=K<@`M>|o<>9}-952x&J_~cXozAq=>+H1F zPFLCK?RNT0JAKGbx7lf@oxWzLAK2+pJ00e?+B?%uFR|0h?R2J{UT3GZcDl+=Z@1H5 z+UY}fy3I~I?esM}{lHF-+UYRWZr@HXvD3@#bf%qNXQ#Dxy2?&(x6@zR=|gt9%}zV* z^ff#Ez)p|a>9By^zMWoTr}n=wBvm)yM?xk33y=Ai<>uw)Nm(oE)na_=0?Tu&n;Wle zXjs)anZD>JEq{n#Q_V%8LYG-2eOF3~ zQYvxAyxH%ro0C5^56={=ru6Gvm*v)Y@l%_E{8qrkzlPwi!;inxujb{l-}!10a`D@a z-dwe6g^*jbrpdpiQOKp=;^e>O=mhZF`wXnB^4AHu);HBrf%kbEs)&J|YiUrCYsT++ zRSCJ?x@EQaDNpaRx*AY&NXTVBqz5_hPc7u)pH-+Aa#^)%{9>LT(pbq4@r$*LW*Pmw z-5TJ*lbQp2CUR9{eKq821{13}WGzO^{a}M3X!JIr5WQN)RDs`TTWO8!|L!;WA)2$? zfAW9tjHmH_o6m3F?pS2Vr}Fw?JHu0%6WS^FlN?O}9=TXvpZjB;w%CrC+#a=UyT6#9 zMi4~daWk*a{UuNBX~2H73Z$`iIQ?b7k#FTN_pdxHrb>8t`|6q^kGfRG>+|)Br+mEv347wl?*?Fr7xjZ4 zz8>?GugARoc>UL)j zN*gxkb2k8IeI5@SuCl0T1L%C>#1VdjLT7y*KYaZ!*54dgKh0h@)0SJUN_^lg@Fe{| zXxHatv44lqYgLHvZ@m5(kq`&L>_Uub_}@hquq;rmZWiTJ+m+^l-U(%K5yBG9uyii#4JagyMQD zU2G+>Z(g4x4kF{M&;Pv){_jKD(}9!6=(#T6L}nAr@a1_I6N1Jr(dI-=bfY}4HgvNUOX)gFPGg}Ki#f> KT3m%VQ21ZNeP#jx literal 0 HcmV?d00001 diff --git a/conf/system/include/13.2/jib b/conf/system/include/13.2/jib new file mode 100644 index 0000000..818065a --- /dev/null +++ b/conf/system/include/13.2/jib @@ -0,0 +1,418 @@ +#!/bin/sh +#- +# Copyright (c) 2016 Devin Teske +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD: releng/12.1/share/examples/jails/jib 339977 2018-10-31 23:07:47Z dteske $ +# +############################################################ IDENT(1) +# +# $Title: if_bridge(4) management script for vnet jails $ +# +############################################################ INFORMATION +# +# Use this tool with jail.conf(5) (or rc.conf(5) ``legacy'' configuration) to +# manage `vnet' interfaces for jails. Designed to automate the creation of vnet +# interface(s) during jail `prestart' and destroy said interface(s) during jail +# `poststop'. +# +# In jail.conf(5) format: +# +# ### BEGIN EXCERPT ### +# +# xxx { +# host.hostname = "xxx.yyy"; +# path = "/vm/xxx"; +# +# # +# # NB: Below 2-lines required +# # NB: The number of eNb_xxx interfaces should match the number of +# # arguments given to `jib addm xxx' in exec.prestart value. +# # +# vnet; +# vnet.interface = e0b_xxx, e1b_xxx, ...; +# +# exec.clean; +# exec.system_user = "root"; +# exec.jail_user = "root"; +# +# # +# # NB: Below 2-lines required +# # NB: The number of arguments after `jib addm xxx' should match +# # the number of eNb_xxx arguments in vnet.interface value. +# # +# exec.prestart += "jib addm xxx em0 em1 ..."; +# exec.poststop += "jib destroy xxx"; +# +# # Standard recipe +# exec.start += "/bin/sh /etc/rc"; +# exec.stop = "/bin/sh /etc/rc.shutdown"; +# exec.consolelog = "/var/log/jail_xxx_console.log"; +# mount.devfs; +# +# # Optional (default off) +# #allow.mount; +# #allow.set_hostname = 1; +# #allow.sysvipc = 1; +# #devfs_ruleset = "11"; # rule to unhide bpf for DHCP +# } +# +# ### END EXCERPT ### +# +# In rc.conf(5) ``legacy'' format (used when /etc/jail.conf does not exist): +# +# ### BEGIN EXCERPT ### +# +# jail_enable="YES" +# jail_list="xxx" +# +# # +# # Global presets for all jails +# # +# jail_devfs_enable="YES" # mount devfs +# +# # +# # Global options (default off) +# # +# #jail_mount_enable="YES" # mount /etc/fstab.{name} +# #jail_set_hostname_allow="YES" # Allow hostname to change +# #jail_sysvipc_allow="YES" # Allow SysV Interprocess Comm. +# +# # xxx +# jail_xxx_hostname="xxx.shxd.cx" # hostname +# jail_xxx_rootdir="/vm/xxx" # root directory +# jail_xxx_vnet_interfaces="e0b_xxx e1bxxx ..." # vnet interface(s) +# jail_xxx_exec_prestart0="jib addm xxx em0 em1 ..." # bridge interface(s) +# jail_xxx_exec_poststop0="jib destroy xxx" # destroy interface(s) +# #jail_xxx_mount_enable="YES" # mount /etc/fstab.xxx +# #jail_xxx_devfs_ruleset="11" # rule to unhide bpf for DHCP +# +# ### END EXCERPT ### +# +# Note that the legacy rc.conf(5) format is converted to +# /var/run/jail.{name}.conf by /etc/rc.d/jail if jail.conf(5) is missing. +# +# ASIDE: dhclient(8) inside a vnet jail... +# +# To allow dhclient(8) to work inside a vnet jail, make sure the following +# appears in /etc/devfs.rules (which should be created if it doesn't exist): +# +# [devfsrules_jail=11] +# add include $devfsrules_hide_all +# add include $devfsrules_unhide_basic +# add include $devfsrules_unhide_login +# add path 'bpf*' unhide +# +# And set ether devfs.ruleset="11" (jail.conf(5)) or +# jail_{name}_devfs_ruleset="11" (rc.conf(5)). +# +# NB: While this tool can't create every type of desirable topology, it should +# handle most setups, minus some which considered exotic or purpose-built. +# +############################################################ GLOBALS + +pgm="${0##*/}" # Program basename + +# +# Global exit status +# +SUCCESS=0 +FAILURE=1 + +############################################################ FUNCTIONS + +usage() +{ + local action usage descr + exec >&2 + echo "Usage: $pgm action [arguments]" + echo "Actions:" + for action in \ + addm \ + show \ + show1 \ + destroy \ + ; do + eval usage=\"\$jib_${action}_usage\" + [ "$usage" ] || continue + eval descr=\"\$jib_${action}_descr\" + printf "\t%s\n\t\t%s\n" "$usage" "$descr" + done + exit $FAILURE +} + +action_usage() +{ + local usage descr action="$1" + eval usage=\"\$jib_${action}_usage\" + echo "Usage: $pgm $usage" >&2 + eval descr=\"\$jib_${action}_descr\" + printf "\t%s\n" "$descr" + exit $FAILURE +} + +derive_mac() +{ + local OPTIND=1 OPTARG __flag + local __mac_num= __make_pair= + while getopts 2n: __flag; do + case "$__flag" in + 2) __make_pair=1 ;; + n) __mac_num=${OPTARG%%[^0-9]*} ;; + esac + done + shift $(( $OPTIND - 1 )) + + if [ ! "$__mac_num" ]; then + eval __mac_num=\${_${iface}_num:--1} + __mac_num=$(( $__mac_num + 1 )) + eval _${iface}_num=\$__mac_num + fi + + local __iface="$1" __name="$2" __var_to_set="$3" __var_to_set_b="$4" + local __iface_devid __new_devid __num __new_devid_b + # + # Calculate MAC address derived from given iface. + # + # The formula I'm using is ``NP:SS:SS:II:II:II'' where: + # + N denotes 4 bits used as a counter to support branching + # each parent interface up to 15 times under the same jail + # name (see S below). + # + P denotes the special nibble whose value, if one of + # 2, 6, A, or E (but usually 2) denotes a privately + # administered MAC address (while remaining routable). + # + S denotes 16 bits, the sum(1) value of the jail name. + # + I denotes bits that are inherited from parent interface. + # + # The S bits are a CRC-16 checksum of NAME, allowing the jail + # to change link numbers in ng_bridge(4) without affecting the + # MAC address. Meanwhile, if... + # + the jail NAME changes (e.g., it was duplicated and given + # a new name with no other changes) + # + the underlying network interface changes + # + the jail is moved to another host + # the MAC address will be recalculated to a new, similarly + # unique value preventing conflict. + # + __iface_devid=$( ifconfig $__iface ether | awk '/ether/,$0=$2' ) + # ??:??:??:II:II:II + __new_devid=${__iface_devid#??:??:??} # => :II:II:II + # => :SS:SS:II:II:II + __num=$( set -- `echo -n "$__name" | sum` && echo $1 ) + __new_devid=$( printf :%02x:%02x \ + $(( $__num >> 8 & 255 )) $(( $__num & 255 )) )$__new_devid + # => P:SS:SS:II:II:II + case "$__iface_devid" in + ?2:*) __new_devid=a$__new_devid __new_devid_b=e$__new_devid ;; + ?[Ee]:*) __new_devid=2$__new_devid __new_devid_b=6$__new_devid ;; + *) __new_devid=2$__new_devid __new_devid_b=e$__new_devid + esac + # => NP:SS:SS:II:II:II + __new_devid=$( printf %x $(( $__mac_num & 15 )) )$__new_devid + __new_devid_b=$( printf %x $(( $__mac_num & 15 )) )$__new_devid_b + + # + # Return derivative MAC address(es) + # + if [ "$__make_pair" ]; then + if [ "$__var_to_set" -a "$__var_to_set_b" ]; then + eval $__var_to_set=\$__new_devid + eval $__var_to_set_b=\$__new_devid_b + else + echo $__new_devid $__new_devid_b + fi + else + if [ "$__var_to_set" ]; then + eval $__var_to_set=\$__new_devid + else + echo $__new_devid + fi + fi +} + +mustberoot_to_continue() +{ + if [ "$( id -u )" -ne 0 ]; then + echo "Must run as root!" >&2 + exit $FAILURE + fi +} + +jib_addm_usage="addm [-b BRIDGE_NAME] NAME [!]iface0 [[!]iface1 ...]" +jib_addm_descr="Creates e0b_NAME [e1b_NAME ...]" +jib_addm() +{ + local OPTIND=1 OPTARG flag bridge=bridge + while getopts b: flag; do + case "$flag" in + b) bridge="${OPTARG:-bridge}" ;; + *) action_usage addm # NOTREACHED + esac + done + shift $(( $OPTIND - 1 )) + + local name="$1" + [ "${name:-x}" = "${name#*[!0-9a-zA-Z_]}" -a $# -gt 1 ] || + action_usage addm # NOTREACHED + shift 1 # name + + mustberoot_to_continue + + local iface eiface_devid_a eiface_devid_b + local new no_derive num quad i=0 + for iface in $*; do + + no_derive= + case "$iface" in + !*) iface=${iface#!} no_derive=1 ;; + esac + + # Make sure the interface doesn't exist already + if ifconfig "e${i}a_$name" > /dev/null 2>&1; then + i=$(( $i + 1 )) + continue + fi + + # Bring the interface up + ifconfig $iface up || return + + # Make sure the interface has been bridged + if ! ifconfig "$iface$bridge" > /dev/null 2>&1; then + new=$( ifconfig bridge create ) || return + ifconfig $new addm $iface || return + ifconfig $new name "$iface$bridge" || return + ifconfig "$iface$bridge" up || return + fi + + # Create a new interface to the bridge + new=$( ifconfig epair create ) || return + ifconfig "$iface$bridge" addm $new || return + + # Rename the new interface + ifconfig $new name "e${i}a_$name" || return + ifconfig ${new%a}b name "e${i}b_$name" || return + ifconfig "e${i}a_$name" up || return + ifconfig "e${i}b_$name" up || return + + # + # Set the MAC address of the new interface using a sensible + # algorithm to prevent conflicts on the network. + # + eiface_devid_a= eiface_devid_b= + [ "$no_derive" ] || derive_mac -2 $iface "$name" \ + eiface_devid_a eiface_devid_b + if [ "$eiface_devid_a" -a "$eiface_devid_b" ]; then + ifconfig "e${i}a_$name" ether $eiface_devid_a + ifconfig "e${i}b_$name" ether $eiface_devid_b + fi > /dev/null 2>&1 + + i=$(( $i + 1 )) + done # for iface +} + +jib_show_usage="show" +jib_show_descr="List possible NAME values for \`show NAME'" +jib_show1_usage="show NAME" +jib_show1_descr="Lists e0b_NAME [e1b_NAME ...]" +jib_show2_usage="show [NAME]" +jib_show() +{ + local OPTIND=1 OPTARG flag + while getopts "" flag; do + case "$flag" in + *) action_usage show2 # NOTREACHED + esac + done + shift $(( $OPTIND - 1 )) + if [ $# -eq 0 ]; then + ifconfig | awk ' + /^[^:[:space:]]+:/ { + iface = $1 + sub(/:.*/, "", iface) + next + } + $1 == "groups:" { + for (n = split($0, group); n > 1; n--) { + if (group[n] != "bridge") continue + print iface + next + } + }' | + xargs -rn1 ifconfig | + awk '$1 == "member:" && + sub(/^e[[:digit:]]+a_/, "", $2), $0 = $2' | + sort -u + return + fi + ifconfig | awk -v name="$1" ' + match($0, /^e[[:digit:]]+a_/) && sub(/:.*/, "") && + substr($1, RSTART + RLENGTH) == name + ' | sort +} + +jib_destroy_usage="destroy NAME" +jib_destroy_descr="Destroy e0b_NAME [e1b_NAME ...]" +jib_destroy() +{ + local OPTIND=1 OPTARG flag + while getopts "" flag; do + case "$flag" in + *) action_usage destroy # NOTREACHED + esac + done + shift $(( $OPTIND -1 )) + local name="$1" + [ "${name:-x}" = "${name#*[!0-9a-zA-Z_]}" -a $# -eq 1 ] || + action_usage destroy # NOTREACHED + mustberoot_to_continue + jib_show "$name" | xargs -rn1 -I eiface ifconfig eiface destroy +} + +############################################################ MAIN + +# +# Command-line arguments +# +action="$1" +[ "$action" ] || usage # NOTREACHED + +# +# Validate action argument +# +if [ "$BASH_VERSION" ]; then + type="$( type -t "jib_$action" )" || usage # NOTREACHED +else + type="$( type "jib_$action" 2> /dev/null )" || usage # NOTREACHED +fi +case "$type" in +*function) + shift 1 # action + eval "jib_$action" \"\$@\" + ;; +*) usage # NOTREACHED +esac + +################################################################################ +# END +################################################################################ diff --git a/conf/system/include/13.2/makewhatis b/conf/system/include/13.2/makewhatis new file mode 100644 index 0000000000000000000000000000000000000000..291302d4f5ffc0967946004d2b5626fa44ae4421 GIT binary patch literal 508504 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�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 CXo|1^ literal 0 HcmV?d00001 diff --git a/conf/system/include/13.2/setfib b/conf/system/include/13.2/setfib new file mode 100644 index 0000000000000000000000000000000000000000..a9e55afee584d9b0d576ff82b8420f3c06ff833a GIT binary patch literal 7736 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 literal 0 HcmV?d00001 diff --git a/unionfs.sh b/unionfs.sh index c2cad66..6dab695 100755 --- a/unionfs.sh +++ b/unionfs.sh @@ -10,7 +10,7 @@ # Debug script #set -x -# Copyright (c) 2019-2021, José Rivera (joserprg@gmail.com). +# Copyright (c) 2019-2023, José Rivera (joserprg@gmail.com). # All rights reserved. # Redistribution and use in source and binary forms, with or without